Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ src/Parser/parser.cc	(revision 1eba45207b5f4260dca6a87522e61f09a0d8f014)
@@ -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
@@ -90,13 +94,12 @@
 } // appendStr
 
-#line 93 "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 99 "Parser/parser.cc"
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
 
 /* Enabling verbose error messages.  */
@@ -108,128 +111,123 @@
 #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,
-    VALIST = 279,
-    BOOL = 280,
-    COMPLEX = 281,
-    IMAGINARY = 282,
-    TYPEOF = 283,
-    LABEL = 284,
-    ENUM = 285,
-    STRUCT = 286,
-    UNION = 287,
-    OTYPE = 288,
-    FTYPE = 289,
-    DTYPE = 290,
-    TRAIT = 291,
-    SIZEOF = 292,
-    OFFSETOF = 293,
-    ATTRIBUTE = 294,
-    EXTENSION = 295,
-    IF = 296,
-    ELSE = 297,
-    SWITCH = 298,
-    CASE = 299,
-    DEFAULT = 300,
-    DO = 301,
-    WHILE = 302,
-    FOR = 303,
-    BREAK = 304,
-    CONTINUE = 305,
-    GOTO = 306,
-    RETURN = 307,
-    CHOOSE = 308,
-    DISABLE = 309,
-    ENABLE = 310,
-    FALLTHRU = 311,
-    TRY = 312,
-    CATCH = 313,
-    CATCHRESUME = 314,
-    FINALLY = 315,
-    THROW = 316,
-    THROWRESUME = 317,
-    AT = 318,
-    ASM = 319,
-    ALIGNAS = 320,
-    ALIGNOF = 321,
-    ATOMIC = 322,
-    GENERIC = 323,
-    NORETURN = 324,
-    STATICASSERT = 325,
-    THREADLOCAL = 326,
-    IDENTIFIER = 327,
-    QUOTED_IDENTIFIER = 328,
-    TYPEDEFname = 329,
-    TYPEGENname = 330,
-    ATTR_IDENTIFIER = 331,
-    ATTR_TYPEDEFname = 332,
-    ATTR_TYPEGENname = 333,
-    INTEGERconstant = 334,
-    FLOATINGconstant = 335,
-    CHARACTERconstant = 336,
-    STRINGliteral = 337,
-    ZERO = 338,
-    ONE = 339,
-    ARROW = 340,
-    ICR = 341,
-    DECR = 342,
-    LS = 343,
-    RS = 344,
-    LE = 345,
-    GE = 346,
-    EQ = 347,
-    NE = 348,
-    ANDAND = 349,
-    OROR = 350,
-    ELLIPSIS = 351,
-    MULTassign = 352,
-    DIVassign = 353,
-    MODassign = 354,
-    PLUSassign = 355,
-    MINUSassign = 356,
-    LSassign = 357,
-    RSassign = 358,
-    ANDassign = 359,
-    ERassign = 360,
-    ORassign = 361,
-    ATassign = 362,
-    THEN = 363
-  };
+   /* 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,
+     VALIST = 279,
+     BOOL = 280,
+     COMPLEX = 281,
+     IMAGINARY = 282,
+     TYPEOF = 283,
+     LABEL = 284,
+     ENUM = 285,
+     STRUCT = 286,
+     UNION = 287,
+     OTYPE = 288,
+     FTYPE = 289,
+     DTYPE = 290,
+     TRAIT = 291,
+     SIZEOF = 292,
+     OFFSETOF = 293,
+     ATTRIBUTE = 294,
+     EXTENSION = 295,
+     IF = 296,
+     ELSE = 297,
+     SWITCH = 298,
+     CASE = 299,
+     DEFAULT = 300,
+     DO = 301,
+     WHILE = 302,
+     FOR = 303,
+     BREAK = 304,
+     CONTINUE = 305,
+     GOTO = 306,
+     RETURN = 307,
+     CHOOSE = 308,
+     DISABLE = 309,
+     ENABLE = 310,
+     FALLTHRU = 311,
+     TRY = 312,
+     CATCH = 313,
+     CATCHRESUME = 314,
+     FINALLY = 315,
+     THROW = 316,
+     THROWRESUME = 317,
+     AT = 318,
+     ASM = 319,
+     ALIGNAS = 320,
+     ALIGNOF = 321,
+     ATOMIC = 322,
+     GENERIC = 323,
+     NORETURN = 324,
+     STATICASSERT = 325,
+     THREADLOCAL = 326,
+     IDENTIFIER = 327,
+     QUOTED_IDENTIFIER = 328,
+     TYPEDEFname = 329,
+     TYPEGENname = 330,
+     ATTR_IDENTIFIER = 331,
+     ATTR_TYPEDEFname = 332,
+     ATTR_TYPEGENname = 333,
+     INTEGERconstant = 334,
+     FLOATINGconstant = 335,
+     CHARACTERconstant = 336,
+     STRINGliteral = 337,
+     ZERO = 338,
+     ONE = 339,
+     ARROW = 340,
+     ICR = 341,
+     DECR = 342,
+     LS = 343,
+     RS = 344,
+     LE = 345,
+     GE = 346,
+     EQ = 347,
+     NE = 348,
+     ANDAND = 349,
+     OROR = 350,
+     ELLIPSIS = 351,
+     MULTassign = 352,
+     DIVassign = 353,
+     MODassign = 354,
+     PLUSassign = 355,
+     MINUSassign = 356,
+     LSassign = 357,
+     RSassign = 358,
+     ANDassign = 359,
+     ERassign = 360,
+     ORassign = 361,
+     ATassign = 362,
+     THEN = 363
+   };
 #endif
 /* Tokens.  */
@@ -341,10 +339,13 @@
 #define THEN 363
 
-/* Value type.  */
+
+
+
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
-union YYSTYPE
+typedef union YYSTYPE
 {
-#line 115 "parser.yy" /* yacc.c:355  */
+
+/* Line 293 of yacc.c  */
+#line 115 "parser.yy"
 
 	Token tok;
@@ -363,20 +364,20 @@
 	bool flag;
 
-#line 366 "Parser/parser.cc" /* yacc.c:355  */
-};
+
+
+/* Line 293 of yacc.c  */
+#line 370 "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 381 "Parser/parser.cc" /* yacc.c:358  */
+
+/* Line 343 of yacc.c  */
+#line 382 "Parser/parser.cc"
 
 #ifdef short
@@ -392,6 +393,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
 
@@ -413,5 +417,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
@@ -427,65 +432,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
@@ -506,7 +482,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
@@ -518,6 +494,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,
@@ -535,5 +511,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
@@ -543,5 +519,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
@@ -549,5 +526,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
@@ -559,5 +537,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.  */
@@ -584,33 +562,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
@@ -628,17 +606,15 @@
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  751
-/* YYNSTATES -- Number of states.  */
+/* YYNRULES -- Number of states.  */
 #define YYNSTATES  1555
 
-/* 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   363
 
-#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[] =
 {
@@ -683,5 +659,364 @@
 
 #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,    36,
+      38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
+      86,    89,    92,   100,   105,   107,   111,   112,   114,   116,
+     120,   122,   126,   134,   138,   146,   148,   150,   152,   155,
+     158,   161,   164,   167,   170,   175,   178,   183,   190,   192,
+     197,   202,   204,   206,   208,   210,   212,   214,   216,   221,
+     226,   228,   232,   236,   240,   242,   246,   250,   252,   256,
+     260,   262,   266,   270,   274,   278,   280,   284,   288,   290,
+     294,   296,   300,   302,   306,   308,   312,   314,   318,   320,
+     326,   331,   337,   339,   341,   345,   348,   349,   351,   353,
+     355,   357,   359,   361,   363,   365,   367,   369,   371,   373,
+     375,   378,   384,   391,   399,   401,   405,   407,   411,   412,
+     414,   416,   418,   420,   422,   424,   426,   428,   430,   437,
+     442,   445,   453,   455,   459,   461,   464,   466,   469,   471,
+     474,   477,   483,   491,   497,   507,   513,   523,   525,   529,
+     531,   533,   537,   541,   544,   546,   549,   552,   553,   555,
+     558,   562,   563,   565,   568,   572,   576,   581,   582,   584,
+     586,   589,   595,   603,   610,   617,   622,   626,   631,   634,
+     638,   641,   645,   649,   653,   657,   663,   667,   671,   676,
+     678,   684,   691,   697,   704,   714,   725,   735,   746,   749,
+     751,   754,   757,   760,   762,   769,   778,   789,   802,   817,
+     818,   820,   821,   823,   825,   829,   834,   842,   843,   845,
+     849,   851,   855,   857,   859,   861,   865,   867,   869,   871,
+     875,   876,   878,   882,   887,   889,   893,   895,   897,   901,
+     905,   909,   913,   917,   920,   924,   931,   935,   939,   944,
+     946,   949,   952,   956,   962,   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,  1186,  1189,  1193,  1197,  1199,  1203,
+    1205,  1208,  1211,  1214,  1219,  1224,  1229,  1234,  1236,  1239,
+    1242,  1246,  1248,  1251,  1254,  1256,  1259,  1262,  1266,  1268,
+    1271,  1274,  1276,  1278,  1283,  1286,  1287,  1294,  1302,  1305,
+    1308,  1311,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
+    1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
+    1363,  1366,  1369,  1375,  1378,  1379,  1387,  1390,  1395,  1396,
+    1399,  1400,  1402,  1404,  1406,  1412,  1418,  1424,  1426,  1432,
+    1438,  1448,  1450,  1456,  1457,  1459,  1461,  1467,  1469,  1471,
+    1477,  1483,  1485,  1489,  1493,  1498,  1500,  1502,  1504,  1506,
+    1509,  1511,  1515,  1519,  1521,  1524,  1526,  1530,  1532,  1534,
+    1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1555,
+    1557,  1559,  1561,  1564,  1565,  1568,  1571,  1573,  1578,  1579,
+    1581,  1584,  1588,  1593,  1596,  1599,  1601,  1604,  1607,  1613,
+    1619,  1627,  1634,  1636,  1639,  1642,  1646,  1648,  1651,  1654,
+    1659,  1662,  1667,  1668,  1673,  1676,  1678,  1680,  1682,  1683,
+    1686,  1692,  1698,  1712,  1714,  1716,  1720,  1724,  1727,  1731,
+    1735,  1738,  1743,  1745,  1752,  1762,  1763,  1775,  1777,  1781,
+    1785,  1789,  1791,  1793,  1799,  1802,  1808,  1809,  1811,  1813,
+    1817,  1818,  1820,  1822,  1824,  1826,  1827,  1834,  1837,  1839,
+    1842,  1847,  1850,  1854,  1858,  1862,  1867,  1873,  1879,  1885,
+    1892,  1894,  1896,  1898,  1902,  1903,  1909,  1910,  1912,  1914,
+    1917,  1924,  1926,  1930,  1931,  1933,  1938,  1940,  1942,  1944,
+    1946,  1949,  1951,  1954,  1957,  1959,  1963,  1966,  1970,  1974,
+    1977,  1982,  1987,  1991,  2000,  2004,  2007,  2009,  2012,  2019,
+    2028,  2032,  2035,  2039,  2043,  2048,  2053,  2057,  2059,  2061,
+    2063,  2068,  2075,  2079,  2082,  2086,  2090,  2095,  2100,  2104,
+    2107,  2109,  2112,  2115,  2117,  2121,  2124,  2128,  2132,  2135,
+    2140,  2145,  2149,  2156,  2165,  2169,  2172,  2174,  2177,  2180,
+    2183,  2187,  2191,  2194,  2199,  2204,  2208,  2215,  2224,  2228,
+    2231,  2233,  2236,  2239,  2241,  2243,  2246,  2250,  2254,  2257,
+    2262,  2269,  2278,  2280,  2283,  2286,  2288,  2291,  2294,  2298,
+    2302,  2304,  2309,  2314,  2318,  2324,  2333,  2337,  2340,  2344,
+    2346,  2352,  2358,  2365,  2372,  2374,  2377,  2380,  2382,  2385,
+    2388,  2392,  2396,  2398,  2403,  2408,  2412,  2418,  2427,  2431,
+    2433,  2436,  2438,  2441,  2448,  2454,  2461,  2469,  2477,  2479,
+    2482,  2485,  2487,  2490,  2493,  2497,  2501,  2503,  2508,  2513,
+    2517,  2526,  2530,  2532,  2534,  2537,  2539,  2541,  2544,  2548,
+    2551,  2555,  2558,  2562,  2566,  2569,  2574,  2578,  2581,  2585,
+    2588,  2593,  2597,  2600,  2607,  2614,  2621,  2629,  2631,  2634,
+    2636,  2638,  2640,  2643,  2647,  2650,  2654,  2657,  2661,  2665,
+    2670,  2673,  2677,  2682,  2685,  2691,  2697,  2704,  2711,  2712,
+    2714,  2715
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
+      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
+      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,   142,
+      -1,    82,    -1,   142,    82,    -1,    72,    -1,   140,    -1,
+     109,   170,   110,    -1,   109,   174,   110,    -1,   143,    -1,
+     144,   111,   134,   165,   135,   112,    -1,   144,   109,   145,
+     110,    -1,   144,   113,   139,    -1,   144,   113,   111,   134,
+     147,   135,   112,    -1,   144,    85,   139,    -1,   144,    85,
+     111,   134,   147,   135,   112,    -1,   144,    86,    -1,   144,
+      87,    -1,   109,   275,   110,   114,   279,   372,   115,    -1,
+     144,   114,   145,   115,    -1,   146,    -1,   145,   116,   146,
+      -1,    -1,   165,    -1,   148,    -1,   147,   116,   148,    -1,
+     139,    -1,   139,   113,   148,    -1,   139,   113,   111,   134,
+     147,   135,   112,    -1,   139,    85,   148,    -1,   139,    85,
+     111,   134,   147,   135,   112,    -1,   144,    -1,   136,    -1,
+     141,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
+      -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
+      37,   109,   275,   110,    -1,    66,   149,    -1,    66,   109,
+     275,   110,    -1,    38,   109,   275,   116,   139,   110,    -1,
+      76,    -1,    76,   109,   146,   110,    -1,    76,   109,   276,
+     110,    -1,   117,    -1,   118,    -1,   119,    -1,   120,    -1,
+     121,    -1,   122,    -1,   149,    -1,   109,   275,   110,   152,
+      -1,   109,   275,   110,   168,    -1,   152,    -1,   153,   117,
+     152,    -1,   153,   123,   152,    -1,   153,   124,   152,    -1,
+     153,    -1,   154,   119,   153,    -1,   154,   120,   153,    -1,
+     154,    -1,   155,    88,   154,    -1,   155,    89,   154,    -1,
+     155,    -1,   156,   125,   155,    -1,   156,   126,   155,    -1,
+     156,    90,   155,    -1,   156,    91,   155,    -1,   156,    -1,
+     157,    92,   156,    -1,   157,    93,   156,    -1,   157,    -1,
+     158,   118,   157,    -1,   158,    -1,   159,   127,   158,    -1,
+     159,    -1,   160,   128,   159,    -1,   160,    -1,   161,    94,
+     160,    -1,   161,    -1,   162,    95,   161,    -1,   162,    -1,
+     162,   129,   170,   130,   163,    -1,   162,   129,   130,   163,
+      -1,   162,   129,   170,   130,   168,    -1,   163,    -1,   163,
+      -1,   149,   167,   165,    -1,   168,   373,    -1,    -1,   165,
+      -1,   131,    -1,   107,    -1,    97,    -1,    98,    -1,    99,
+      -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
+      -1,   105,    -1,   106,    -1,   111,   112,    -1,   111,   134,
+     165,   135,   112,    -1,   111,   134,   116,   169,   135,   112,
+      -1,   111,   134,   165,   116,   169,   135,   112,    -1,   166,
+      -1,   169,   116,   166,    -1,   165,    -1,   170,   116,   165,
+      -1,    -1,   170,    -1,   173,    -1,   174,    -1,   178,    -1,
+     179,    -1,   191,    -1,   193,    -1,   194,    -1,   199,    -1,
+     127,   144,   114,   145,   115,   132,    -1,    72,   130,   312,
+     172,    -1,   114,   115,    -1,   114,   134,   134,   210,   175,
+     135,   115,    -1,   176,    -1,   175,   134,   176,    -1,   213,
+      -1,    40,   213,    -1,   308,    -1,   172,   135,    -1,   172,
+      -1,   177,   172,    -1,   171,   132,    -1,    41,   109,   170,
+     110,   172,    -1,    41,   109,   170,   110,   172,    42,   172,
+      -1,    43,   109,   170,   110,   184,    -1,    43,   109,   170,
+     110,   114,   134,   206,   185,   115,    -1,    53,   109,   170,
+     110,   184,    -1,    53,   109,   170,   110,   114,   134,   206,
+     187,   115,    -1,   164,    -1,   164,    96,   164,    -1,   310,
+      -1,   180,    -1,   181,   116,   180,    -1,    44,   181,   130,
+      -1,    45,   130,    -1,   182,    -1,   183,   182,    -1,   183,
+     172,    -1,    -1,   186,    -1,   183,   177,    -1,   186,   183,
+     177,    -1,    -1,   188,    -1,   183,   190,    -1,   183,   177,
+     189,    -1,   188,   183,   190,    -1,   188,   183,   177,   189,
+      -1,    -1,   190,    -1,    56,    -1,    56,   132,    -1,    47,
+     109,   170,   110,   172,    -1,    46,   172,    47,   109,   170,
+     110,   132,    -1,    48,   109,   134,   192,   110,   172,    -1,
+     171,   135,   132,   171,   132,   171,    -1,   213,   171,   132,
+     171,    -1,    51,    72,   132,    -1,    51,   117,   170,   132,
+      -1,    50,   132,    -1,    50,    72,   132,    -1,    49,   132,
+      -1,    49,    72,   132,    -1,    52,   171,   132,    -1,    61,
+     166,   132,    -1,    62,   166,   132,    -1,    62,   166,    63,
+     165,   132,    -1,    57,   174,   195,    -1,    57,   174,   197,
+      -1,    57,   174,   195,   197,    -1,   196,    -1,    58,   109,
+      96,   110,   174,    -1,   196,    58,   109,    96,   110,   174,
+      -1,    59,   109,    96,   110,   174,    -1,   196,    59,   109,
+      96,   110,   174,    -1,    58,   109,   134,   134,   198,   135,
+     110,   174,   135,    -1,   196,    58,   109,   134,   134,   198,
+     135,   110,   174,   135,    -1,    59,   109,   134,   134,   198,
+     135,   110,   174,   135,    -1,   196,    59,   109,   134,   134,
+     198,   135,   110,   174,   135,    -1,    60,   174,    -1,   226,
+      -1,   226,   309,    -1,   226,   357,    -1,   366,   139,    -1,
+     366,    -1,    64,   200,   109,   141,   110,   132,    -1,    64,
+     200,   109,   141,   130,   201,   110,   132,    -1,    64,   200,
+     109,   141,   130,   201,   130,   201,   110,   132,    -1,    64,
+     200,   109,   141,   130,   201,   130,   201,   130,   204,   110,
+     132,    -1,    64,   200,    51,   109,   141,   130,   130,   201,
+     130,   204,   130,   205,   110,   132,    -1,    -1,    11,    -1,
+      -1,   202,    -1,   203,    -1,   202,   116,   203,    -1,   141,
+     109,   164,   110,    -1,   111,   164,   112,   141,   109,   164,
+     110,    -1,    -1,   141,    -1,   204,   116,   141,    -1,   139,
+      -1,   205,   116,   139,    -1,   135,    -1,   207,    -1,   213,
+      -1,   207,   134,   213,    -1,   135,    -1,   209,    -1,   223,
+      -1,   209,   134,   223,    -1,    -1,   211,    -1,    29,   212,
+     132,    -1,   211,    29,   212,   132,    -1,   274,    -1,   212,
+     116,   274,    -1,   214,    -1,   223,    -1,   215,   135,   132,
+      -1,   220,   135,   132,    -1,   217,   135,   132,    -1,   293,
+     135,   132,    -1,   296,   135,   132,    -1,   216,   277,    -1,
+     232,   216,   277,    -1,   215,   135,   116,   134,   272,   277,
+      -1,   367,   272,   311,    -1,   370,   272,   311,    -1,   228,
+     370,   272,   311,    -1,   218,    -1,   228,   218,    -1,   232,
+     218,    -1,   232,   228,   218,    -1,   217,   135,   116,   134,
+     272,    -1,   111,   112,   272,   109,   134,   260,   135,   110,
+      -1,   370,   272,   109,   134,   260,   135,   110,    -1,   219,
+     272,   109,   134,   260,   135,   110,    -1,   111,   134,   262,
+     135,   112,    -1,   111,   134,   262,   135,   116,   134,   263,
+     135,   112,    -1,     3,   216,    -1,     3,   218,    -1,   220,
+     135,   116,   134,   139,    -1,     3,   226,   309,    -1,   221,
+     135,   116,   134,   309,    -1,   228,     3,   226,   309,    -1,
+     226,     3,   309,    -1,   226,     3,   228,   309,    -1,     3,
+     139,   131,   165,    -1,   222,   135,   116,   134,   139,   131,
+     165,    -1,   224,   135,   132,    -1,   221,   135,   132,    -1,
+     222,   135,   132,    -1,   240,   135,   132,    -1,   225,   309,
+     311,   277,    -1,   224,   116,   312,   309,   311,   277,    -1,
+     236,    -1,   240,    -1,   242,    -1,   283,    -1,   237,    -1,
+     241,    -1,   243,    -1,   284,    -1,    -1,   228,    -1,   229,
+      -1,   228,   229,    -1,   230,    -1,   314,    -1,    10,    -1,
+      12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
+     109,   231,   286,   110,    -1,   233,    -1,   228,   233,    -1,
+     232,   228,   233,    -1,   234,    -1,   233,   234,    -1,     5,
+      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
+      -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
+      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
+      -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
+      -1,   237,    -1,   232,   237,    -1,   236,   234,    -1,   236,
+     234,   228,    -1,   236,   234,   237,    -1,   238,    -1,   227,
+     239,   227,    -1,   235,    -1,   228,   235,    -1,   238,   229,
+      -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
+     109,   170,   110,    -1,    78,   109,   276,   110,    -1,    78,
+     109,   170,   110,    -1,   241,    -1,   232,   241,    -1,   240,
+     234,    -1,   240,   234,   228,    -1,   244,    -1,   228,   244,
+      -1,   241,   229,    -1,   243,    -1,   232,   243,    -1,   242,
+     234,    -1,   242,   234,   228,    -1,    74,    -1,   228,    74,
+      -1,   243,   229,    -1,   245,    -1,   256,    -1,   247,   114,
+     248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
+     114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
+     115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
+      -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
+     132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
+      -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
+      -1,   226,   252,    -1,   251,   116,   312,   252,    -1,    -1,
+     254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
+      -1,   254,    -1,   130,   164,    -1,    30,   312,    -1,   255,
+     114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
+     274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
+     258,   116,   274,   259,    -1,    -1,   131,   164,    -1,    -1,
+     261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
+     263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
+     116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
+     267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
+     116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
+     263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
+      -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
+      -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
+     134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
+     272,   373,    -1,   228,   370,   272,   373,    -1,   218,    -1,
+     270,    -1,   362,    -1,   370,    -1,   228,   370,    -1,   371,
+      -1,   225,   336,   373,    -1,   225,   340,   373,    -1,   225,
+      -1,   225,   351,    -1,   139,    -1,   271,   116,   139,    -1,
+     137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
+      75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
+     226,    -1,   226,   357,    -1,   366,    -1,   371,    -1,   226,
+      -1,   226,   345,    -1,    -1,   131,   278,    -1,   107,   278,
+      -1,   165,    -1,   114,   279,   372,   115,    -1,    -1,   278,
+      -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
+     280,   278,    -1,   281,   130,    -1,   274,   130,    -1,   282,
+      -1,   281,   282,    -1,   113,   274,    -1,   111,   134,   165,
+     135,   112,    -1,   111,   134,   310,   135,   112,    -1,   111,
+     134,   164,    96,   164,   135,   112,    -1,   113,   111,   134,
+     147,   135,   112,    -1,   284,    -1,   232,   284,    -1,   283,
+     234,    -1,   283,   234,   228,    -1,   285,    -1,   228,   285,
+      -1,   284,   229,    -1,    75,   109,   292,   110,    -1,   287,
+     373,    -1,   286,   116,   287,   373,    -1,    -1,   289,   274,
+     288,   290,    -1,   226,   336,    -1,    33,    -1,    35,    -1,
+      34,    -1,    -1,   290,   291,    -1,   128,   274,   109,   292,
+     110,    -1,   128,   114,   134,   298,   115,    -1,   128,   109,
+     134,   286,   135,   110,   114,   134,   298,   115,   109,   292,
+     110,    -1,   276,    -1,   165,    -1,   292,   116,   276,    -1,
+     292,   116,   165,    -1,    33,   294,    -1,   233,    33,   294,
+      -1,   293,   116,   294,    -1,   295,   290,    -1,   295,   290,
+     131,   276,    -1,   274,    -1,   273,   109,   134,   286,   135,
+     110,    -1,    36,   274,   109,   134,   286,   135,   110,   114,
+     115,    -1,    -1,    36,   274,   109,   134,   286,   135,   110,
+     114,   297,   298,   115,    -1,   299,    -1,   298,   134,   299,
+      -1,   300,   135,   132,    -1,   301,   135,   132,    -1,   216,
+      -1,   218,    -1,   300,   135,   116,   134,   272,    -1,   226,
+     309,    -1,   301,   135,   116,   134,   309,    -1,    -1,   303,
+      -1,   305,    -1,   303,   134,   305,    -1,    -1,   303,    -1,
+     213,    -1,   307,    -1,   199,    -1,    -1,     5,    82,   306,
+     114,   304,   115,    -1,    40,   305,    -1,   308,    -1,   323,
+     174,    -1,   327,   134,   208,   174,    -1,   217,   174,    -1,
+     225,   323,   174,    -1,   228,   323,   174,    -1,   232,   323,
+     174,    -1,   232,   228,   323,   174,    -1,   225,   327,   134,
+     208,   174,    -1,   228,   327,   134,   208,   174,    -1,   232,
+     327,   134,   208,   174,    -1,   232,   228,   327,   134,   208,
+     174,    -1,   318,    -1,   331,    -1,   323,    -1,   164,   122,
+     164,    -1,    -1,    64,   109,   142,   110,   312,    -1,    -1,
+     313,    -1,   314,    -1,   313,   314,    -1,    39,   109,   109,
+     315,   110,   110,    -1,   316,    -1,   315,   116,   316,    -1,
+      -1,   317,    -1,   317,   109,   171,   110,    -1,   272,    -1,
+     234,    -1,   235,    -1,   229,    -1,   319,   312,    -1,   320,
+      -1,   321,   312,    -1,   322,   312,    -1,   137,    -1,   109,
+     319,   110,    -1,   150,   318,    -1,   150,   228,   318,    -1,
+     109,   320,   110,    -1,   319,   349,    -1,   109,   320,   110,
+     349,    -1,   109,   321,   110,   350,    -1,   109,   321,   110,
+      -1,   109,   320,   110,   109,   134,   264,   135,   110,    -1,
+     109,   322,   110,    -1,   324,   312,    -1,   325,    -1,   326,
+     312,    -1,   319,   109,   134,   264,   135,   110,    -1,   109,
+     325,   110,   109,   134,   264,   135,   110,    -1,   109,   324,
+     110,    -1,   150,   323,    -1,   150,   228,   323,    -1,   109,
+     325,   110,    -1,   109,   325,   110,   349,    -1,   109,   326,
+     110,   350,    -1,   109,   326,   110,    -1,   328,    -1,   329,
+      -1,   330,    -1,   319,   109,   271,   110,    -1,   109,   329,
+     110,   109,   271,   110,    -1,   109,   328,   110,    -1,   150,
+     327,    -1,   150,   228,   327,    -1,   109,   329,   110,    -1,
+     109,   329,   110,   349,    -1,   109,   330,   110,   350,    -1,
+     109,   330,   110,    -1,   332,   312,    -1,   333,    -1,   334,
+     312,    -1,   335,   312,    -1,   341,    -1,   109,   332,   110,
+      -1,   150,   331,    -1,   150,   228,   331,    -1,   109,   333,
+     110,    -1,   332,   349,    -1,   109,   333,   110,   349,    -1,
+     109,   334,   110,   350,    -1,   109,   334,   110,    -1,   332,
+     109,   134,   264,   135,   110,    -1,   109,   333,   110,   109,
+     134,   264,   135,   110,    -1,   109,   335,   110,    -1,   319,
+     312,    -1,   337,    -1,   338,   312,    -1,   339,   312,    -1,
+     150,   336,    -1,   150,   228,   336,    -1,   109,   337,   110,
+      -1,   319,   355,    -1,   109,   337,   110,   349,    -1,   109,
+     338,   110,   350,    -1,   109,   338,   110,    -1,   319,   109,
+     134,   264,   135,   110,    -1,   109,   337,   110,   109,   134,
+     264,   135,   110,    -1,   109,   339,   110,    -1,   341,   312,
+      -1,   342,    -1,   343,   312,    -1,   344,   312,    -1,    74,
+      -1,    75,    -1,   150,   340,    -1,   150,   228,   340,    -1,
+     109,   342,   110,    -1,   341,   355,    -1,   109,   342,   110,
+     355,    -1,   341,   109,   134,   264,   135,   110,    -1,   109,
+     342,   110,   109,   134,   264,   135,   110,    -1,   346,    -1,
+     347,   312,    -1,   348,   312,    -1,   150,    -1,   150,   228,
+      -1,   150,   345,    -1,   150,   228,   345,    -1,   109,   346,
+     110,    -1,   349,    -1,   109,   346,   110,   349,    -1,   109,
+     347,   110,   350,    -1,   109,   347,   110,    -1,   109,   134,
+     264,   135,   110,    -1,   109,   346,   110,   109,   134,   264,
+     135,   110,    -1,   109,   348,   110,    -1,   111,   112,    -1,
+     111,   112,   350,    -1,   350,    -1,   111,   134,   165,   135,
+     112,    -1,   111,   134,   117,   135,   112,    -1,   350,   111,
+     134,   165,   135,   112,    -1,   350,   111,   134,   117,   135,
+     112,    -1,   352,    -1,   353,   312,    -1,   354,   312,    -1,
+     150,    -1,   150,   228,    -1,   150,   351,    -1,   150,   228,
+     351,    -1,   109,   352,   110,    -1,   355,    -1,   109,   352,
+     110,   355,    -1,   109,   353,   110,   350,    -1,   109,   353,
+     110,    -1,   109,   134,   264,   135,   110,    -1,   109,   352,
+     110,   109,   134,   264,   135,   110,    -1,   109,   354,   110,
+      -1,   356,    -1,   356,   350,    -1,   350,    -1,   111,   112,
+      -1,   111,   134,   228,   117,   135,   112,    -1,   111,   134,
+     228,   135,   112,    -1,   111,   134,   228,   165,   135,   112,
+      -1,   111,   134,     7,   227,   165,   135,   112,    -1,   111,
+     134,   228,     7,   165,   135,   112,    -1,   358,    -1,   359,
+     312,    -1,   360,   312,    -1,   150,    -1,   150,   228,    -1,
+     150,   357,    -1,   150,   228,   357,    -1,   109,   358,   110,
+      -1,   349,    -1,   109,   358,   110,   349,    -1,   109,   359,
+     110,   350,    -1,   109,   359,   110,    -1,   109,   358,   110,
+     109,   134,   264,   135,   110,    -1,   109,   360,   110,    -1,
+     362,    -1,   370,    -1,   228,   370,    -1,   363,    -1,   364,
+      -1,   150,   226,    -1,   228,   150,   226,    -1,   150,   371,
+      -1,   228,   150,   371,    -1,   150,   361,    -1,   228,   150,
+     361,    -1,   111,   112,   226,    -1,   365,   226,    -1,   111,
+     112,   350,   226,    -1,   365,   350,   226,    -1,   350,   226,
+      -1,   111,   112,   363,    -1,   365,   363,    -1,   111,   112,
+     350,   363,    -1,   365,   350,   363,    -1,   350,   363,    -1,
+     111,   134,   228,   117,   135,   112,    -1,   111,   134,   228,
+     165,   135,   112,    -1,   111,   134,   232,   165,   135,   112,
+      -1,   111,   134,   232,   228,   165,   135,   112,    -1,   370,
+      -1,   228,   370,    -1,   367,    -1,   368,    -1,   369,    -1,
+     150,   226,    -1,   228,   150,   226,    -1,   150,   371,    -1,
+     228,   150,   371,    -1,   150,   366,    -1,   228,   150,   366,
+      -1,   111,   112,   226,    -1,   111,   112,   350,   226,    -1,
+     350,   226,    -1,   111,   112,   368,    -1,   111,   112,   350,
+     368,    -1,   350,   368,    -1,   111,   134,   263,   135,   112,
+      -1,   111,   112,   109,   260,   110,    -1,   370,   109,   134,
+     260,   135,   110,    -1,   219,   109,   134,   260,   135,   110,
+      -1,    -1,   116,    -1,    -1,   131,   165,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
@@ -765,5 +1100,5 @@
 #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.  */
@@ -874,11 +1209,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[] =
 {
@@ -900,16 +1235,362 @@
 # endif
 
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint16 yyr1[] =
+{
+       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
+     138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
+     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
+     148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
+     149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
+     149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
+     153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
+     156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
+     159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
+     163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
+     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
+     168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
+     174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
+     178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
+     181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
+     186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
+     190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
+     193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
+     195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
+     198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
+     200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
+     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
+     210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
+     214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
+     217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
+     220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
+     223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
+     226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
+     230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
+     233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
+     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
+     235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
+     238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
+     240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
+     243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
+     247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
+     250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
+     254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
+     260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
+     262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
+     266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
+     268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
+     273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
+     276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
+     279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
+     282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
+     286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
+     291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
+     294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
+     299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
+     304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
+     307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
+     309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
+     314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
+     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
+     321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
+     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
+     328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
+     331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
+     334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
+     337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
+     340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
+     344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
+     347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
+     350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
+     352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
+     355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
+     357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
+     360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
+     363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
+     364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
+     367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
+     369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
+     373,   373
+};
+
+/* 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,     2,     1,
+       1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
+       2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
+       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
+       2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
+       4,     1,     1,     1,     1,     1,     1,     1,     4,     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,     5,     1,     1,     3,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     5,     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,     8,     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,     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,     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[] =
+{
+     293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
+     300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
+     325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
+       0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
+       8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
+     524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
+       3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
+     306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
+     351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
+       0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
+     546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
+      12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
+     291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
+     444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
+     445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
+       0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
+     294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
+     253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
+       0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
+     561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
+     603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
+     260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
+     261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
+     334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
+     371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
+       1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
+     743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
+       2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
+       0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
+       6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
+      46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
+      74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
+     103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
+     580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
+       0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
+     294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
+     411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
+     430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
+     458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
+       2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
+     453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
+     599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
+       0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
+     254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
+     282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
+     499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
+       2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
+       0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
+     750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
+     556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
+      48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
+       0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
+      31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
+       2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
+     120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
+       0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
+     546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
+     679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
+     750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
+       0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
+     465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
+     574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
+       0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
+     258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
+       0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
+       3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
+       3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
+       0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
+     501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
+       0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
+       0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
+       2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
+      72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
+      86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
+     293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
+     293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
+     293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
+       0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
+     615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
+     632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
+     744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
+       3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
+     460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
+     273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
+     658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
+     538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
+     384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
+     293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
+       0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
+     488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
+       0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
+      59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
+     689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
+       0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
+     653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
+     293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
+     671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
+     424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
+     102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
+     244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
+     128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
+     130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
+     144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
+     539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
+     379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
+     668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
+     507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
+     221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
+       0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
+     101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
+       0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
+     673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
+     409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
+       0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
+     293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
+       0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
+     150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
+     612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
+     293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
+     224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
+       0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
+     724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
+     684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
+     469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
+     191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
+     199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
+       0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
+     510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
+     123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
+       3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
+       2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
+     128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
+       0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
+       2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
+       0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
+       0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
+       2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
+     293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
+       3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
+     159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
+       0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
+     229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
+       0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
+     200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
+       0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
+     293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
+     212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
+     169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
+       0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
+     178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
+     206,     3,     3,   205,   207
+};
+
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
+     304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
+    1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
+    1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
+    1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
+     956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
+      51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
+      61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
+     352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
+     120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
+    1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
+     859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
+     135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
+      85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
+      88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
+      91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
+     125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
+     269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
+     197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
+     612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
+     617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
+     366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
+     570
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
 #define YYPACT_NINF -1323
-
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-1323)))
-
-#define YYTABLE_NINF -522
-
-#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[] =
 {
@@ -1072,168 +1753,5 @@
 };
 
-  /* 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.  */
-static const yytype_uint16 yydefact[] =
-{
-     293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
-     300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
-     325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
-       0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
-       8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
-     524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
-       3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
-     306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
-     351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
-       0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
-     546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
-      12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
-     291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
-     444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
-     445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
-       0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
-     294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
-     253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
-       0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
-     561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
-     603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
-     260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
-     261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
-     334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
-     371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
-       1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
-     743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
-       2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
-       0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
-       6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
-      46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
-      74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
-     103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
-     580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
-       0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
-     294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
-     411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
-     430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
-     458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
-       2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
-     453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
-     599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
-       0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
-     254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
-     282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
-     499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
-       2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
-       0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
-     750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
-     556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
-      48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
-       0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
-      31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
-       2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
-     120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
-       0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
-     546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
-     679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
-     750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
-       0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
-     465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
-     574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
-       0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
-     258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
-       0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
-       3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
-       3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
-       0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
-     501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
-       0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
-       0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
-       2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
-      72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
-      86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
-     293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
-     293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
-     293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
-       0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
-     615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
-     632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
-     744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
-       3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
-     460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
-     273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
-     658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
-     538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
-     384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
-     293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
-       0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
-     488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
-       0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
-      59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
-     689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
-       0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
-     653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
-     293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
-     671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
-     424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
-     102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
-     244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
-     128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
-     130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
-     144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
-     539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
-     379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
-     668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
-     507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
-     221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
-       0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
-     101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
-       0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
-     673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
-     409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
-       0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
-     293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
-       0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
-     150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
-     612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
-     293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
-     224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
-       0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
-     724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
-     684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
-     469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
-     191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
-     199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
-       0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
-     510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
-     123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
-       3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
-       2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
-     128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
-       0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
-       2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
-       0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
-       0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
-       2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
-     293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
-       3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
-     159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
-       0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
-     229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
-       0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
-     200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
-       0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
-     293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
-     212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
-     169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
-       0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
-     178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
-     206,     3,     3,   205,   207
-};
-
-  /* YYPGOTO[NTERM-NUM].  */
+/* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
@@ -1265,37 +1783,8 @@
 };
 
-  /* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
-     304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
-     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
-     320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
-    1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
-    1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
-    1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
-     956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
-      51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
-      61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
-     352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
-     120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
-    1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
-     859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
-     135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
-      85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
-      88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
-      91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
-     125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
-     269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
-     197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
-     612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
-     617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
-     366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
-     570
-};
-
-  /* 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.  */
+/* 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 -522
 static const yytype_int16 yytable[] =
 {
@@ -2389,4 +2878,10 @@
 };
 
+#define yypact_value_is_default(yystate) \
+  ((yystate) == (-1323))
+
+#define yytable_value_is_error(yytable_value) \
+  YYID (0)
+
 static const yytype_int16 yycheck[] =
 {
@@ -3480,6 +3975,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[] =
 {
@@ -3642,201 +4137,92 @@
 };
 
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
-     138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
-     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
-     144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
-     148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
-     149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
-     149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
-     153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
-     156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
-     159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
-     163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
-     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
-     168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
-     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
-     174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
-     178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
-     181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
-     186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
-     190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
-     193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
-     195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
-     198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
-     200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
-     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
-     210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
-     214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
-     217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
-     220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
-     223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
-     226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
-     230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
-     233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
-     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
-     235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
-     238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
-     240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
-     243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
-     247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
-     250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
-     254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
-     260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
-     262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
-     266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
-     268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
-     273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
-     276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
-     279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
-     282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
-     286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
-     291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
-     294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
-     299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
-     304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
-     307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
-     309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
-     314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
-     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
-     321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
-     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
-     328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
-     331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
-     334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
-     337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
-     340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
-     344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
-     347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
-     350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
-     352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
-     355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
-     357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
-     360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
-     363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
-     364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
-     367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
-     369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
-     373,   373
-};
-
-  /* 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,     2,     1,
-       1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
-       2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
-       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
-       2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
-       4,     1,     1,     1,     1,     1,     1,     1,     4,     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,     5,     1,     1,     3,     2,     0,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     5,     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,     8,     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,     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,     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.  */
@@ -3848,37 +4234,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;
@@ -3886,6 +4274,12 @@
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
 # endif
-  YYUSE (yytype);
+  switch (yytype)
+    {
+      default:
+	break;
+    }
 }
 
@@ -3895,9 +4289,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);
@@ -3910,6 +4315,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");
@@ -3922,9 +4335,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))
 
 
@@ -3933,29 +4346,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
@@ -3971,5 +4391,5 @@
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
+#ifndef	YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
@@ -3994,6 +4414,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;
@@ -4011,6 +4438,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;
@@ -4042,25 +4477,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: ;
     }
@@ -4085,9 +4520,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];
@@ -4097,4 +4533,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
@@ -4145,11 +4585,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;
               }
         }
@@ -4171,10 +4609,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)
@@ -4213,18 +4649,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 */
 
 
@@ -4234,4 +4698,5 @@
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
+
 /* Number of syntax errors so far.  */
 int yynerrs;
@@ -4242,6 +4707,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;
@@ -4250,8 +4734,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.  */
 
@@ -4271,5 +4755,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.  */
@@ -4289,6 +4773,7 @@
   int yylen = 0;
 
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
   yystacksize = YYINITDEPTH;
 
@@ -4299,4 +4784,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;
 
@@ -4319,21 +4812,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 */
@@ -4343,20 +4836,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
@@ -4367,8 +4860,8 @@
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+		  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
+	YYABORT;
     }
 
@@ -4399,5 +4892,5 @@
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = yylex ();
+      yychar = YYLEX;
     }
 
@@ -4439,7 +4932,5 @@
 
   yystate = yyn;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
@@ -4464,5 +4955,5 @@
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
+     `$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
@@ -4478,206 +4969,239 @@
     {
         case 2:
-#line 300 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 300 "parser.yy"
     { typedefTable.enterScope(); }
-#line 4483 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 304 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 304 "parser.yy"
     { typedefTable.leaveScope(); }
-#line 4489 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 4:
-#line 311 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[0].tok) ) ); }
-#line 4495 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 311 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 5:
-#line 312 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
-#line 4501 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 312 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 6:
-#line 313 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[0].tok) ) ); }
-#line 4507 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 313 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 16:
-#line 338 "parser.yy" /* yacc.c:1646  */
-    { (yyval.constant) = build_constantStr( *(yyvsp[0].str) ); }
-#line 4513 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 338 "parser.yy"
+    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
     break;
 
   case 17:
-#line 342 "parser.yy" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].tok); }
-#line 4519 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 342 "parser.yy"
+    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
     break;
 
   case 18:
-#line 344 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 344 "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 4529 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 355 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 4535 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 355 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 20:
-#line 357 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 4541 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 357 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 21:
-#line 359 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-1].en); }
-#line 4547 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 359 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     break;
 
   case 22:
-#line 361 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); }
-#line 4553 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 361 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
     break;
 
   case 24:
-#line 371 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); }
-#line 4559 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 371 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     break;
 
   case 25:
-#line 373 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); }
-#line 4565 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 373 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
     break;
 
   case 26:
-#line 377 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
-#line 4571 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 377 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
 
   case 28:
-#line 380 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
-#line 4577 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 380 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
 
   case 30:
-#line 383 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); }
-#line 4583 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 383 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
 
   case 31:
-#line 385 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); }
-#line 4589 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 385 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
 
   case 32:
-#line 387 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); }
-#line 4595 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 387 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
     break;
 
   case 33:
-#line 389 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 389 "parser.yy"
     {
 			Token fn;
-			fn.str = new std::string( "?{}" ); // location undefined
-			(yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) );
+			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[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ) );
 		}
-#line 4605 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 35:
-#line 399 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
-#line 4611 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 399 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
 
   case 36:
-#line 404 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 404 "parser.yy"
     { (yyval.en) = 0; }
-#line 4617 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 410 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 4623 "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 415 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 4629 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 415 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 41:
-#line 419 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
-#line 4635 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 419 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     break;
 
   case 42:
-#line 421 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
-#line 4641 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 421 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     break;
 
   case 43:
-#line 423 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
-#line 4647 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 423 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     break;
 
   case 44:
-#line 425 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
-#line 4653 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 425 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     break;
 
   case 46:
-#line 433 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 4659 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 433 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
 
   case 47:
-#line 435 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
-#line 4665 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 435 "parser.yy"
+    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
 
   case 48:
-#line 437 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
-#line 4671 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 437 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     break;
 
   case 49:
-#line 442 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 442 "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:
@@ -4685,477 +5209,554 @@
 			}
 		}
-#line 4688 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 50:
-#line 455 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
-#line 4694 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 455 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 51:
-#line 457 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
-#line 4700 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 457 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 52:
-#line 459 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
-#line 4706 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 459 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 53:
-#line 461 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
-#line 4712 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 461 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 54:
-#line 463 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
-#line 4718 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 463 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
 
   case 55:
-#line 465 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
-#line 4724 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 465 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 56:
-#line 467 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
-#line 4730 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 467 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
 
   case 57:
-#line 469 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
-#line 4736 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 469 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     break;
 
   case 58:
-#line 471 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
-#line 4742 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 471 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     break;
 
   case 59:
-#line 473 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
-#line 4748 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 473 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     break;
 
   case 60:
-#line 475 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
-#line 4754 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 475 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     break;
 
   case 61:
-#line 481 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 481 "parser.yy"
     { (yyval.op) = OperKinds::PointTo; }
-#line 4760 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 482 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 482 "parser.yy"
     { (yyval.op) = OperKinds::AddressOf; }
-#line 4766 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 63:
-#line 488 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 488 "parser.yy"
     { (yyval.op) = OperKinds::UnPlus; }
-#line 4772 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 489 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 489 "parser.yy"
     { (yyval.op) = OperKinds::UnMinus; }
-#line 4778 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 65:
-#line 490 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 490 "parser.yy"
     { (yyval.op) = OperKinds::Neg; }
-#line 4784 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 66:
-#line 491 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 491 "parser.yy"
     { (yyval.op) = OperKinds::BitNeg; }
-#line 4790 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 68:
-#line 497 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
-#line 4796 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 497 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
 
   case 69:
-#line 499 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
-#line 4802 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 499 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
 
   case 71:
-#line 505 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4808 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 505 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 72:
-#line 507 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4814 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 507 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 73:
-#line 509 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4820 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 509 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 75:
-#line 515 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4826 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 515 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 76:
-#line 517 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4832 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 517 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 78:
-#line 523 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4838 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 523 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 79:
-#line 525 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4844 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 525 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 81:
-#line 531 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4850 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 531 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 82:
-#line 533 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4856 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 533 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 83:
-#line 535 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4862 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 535 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 84:
-#line 537 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4868 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 537 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 86:
-#line 543 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4874 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 543 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 87:
-#line 545 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4880 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 545 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 89:
-#line 551 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4886 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 551 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 91:
-#line 557 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4892 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 557 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 93:
-#line 563 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4898 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 563 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 95:
-#line 569 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
-#line 4904 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 569 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     break;
 
   case 97:
-#line 575 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
-#line 4910 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 575 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     break;
 
   case 99:
-#line 581 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4916 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 581 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
 
   case 100:
-#line 584 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
-#line 4922 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 584 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     break;
 
   case 101:
-#line 586 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4928 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 586 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
 
   case 104:
-#line 597 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4934 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 597 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 105:
-#line 599 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = ( (yyvsp[0].en) == 0 ) ? (yyvsp[-1].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[-1].en), (yyvsp[0].en) ) ); }
-#line 4940 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 599 "parser.yy"
+    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 106:
-#line 604 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 604 "parser.yy"
     { (yyval.en) = nullptr; }
-#line 4946 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 108:
-#line 609 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 609 "parser.yy"
     { (yyval.op) = OperKinds::Assign; }
-#line 4952 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 109:
-#line 610 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 610 "parser.yy"
     { (yyval.op) = OperKinds::AtAssn; }
-#line 4958 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 110:
-#line 611 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 611 "parser.yy"
     { (yyval.op) = OperKinds::MulAssn; }
-#line 4964 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 111:
-#line 612 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 612 "parser.yy"
     { (yyval.op) = OperKinds::DivAssn; }
-#line 4970 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 112:
-#line 613 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 613 "parser.yy"
     { (yyval.op) = OperKinds::ModAssn; }
-#line 4976 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 113:
-#line 614 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 614 "parser.yy"
     { (yyval.op) = OperKinds::PlusAssn; }
-#line 4982 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 114:
-#line 615 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 615 "parser.yy"
     { (yyval.op) = OperKinds::MinusAssn; }
-#line 4988 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 115:
-#line 616 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 616 "parser.yy"
     { (yyval.op) = OperKinds::LSAssn; }
-#line 4994 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 116:
-#line 617 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 617 "parser.yy"
     { (yyval.op) = OperKinds::RSAssn; }
-#line 5000 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 117:
-#line 618 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 618 "parser.yy"
     { (yyval.op) = OperKinds::AndAssn; }
-#line 5006 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 118:
-#line 619 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 619 "parser.yy"
     { (yyval.op) = OperKinds::ERAssn; }
-#line 5012 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 119:
-#line 620 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 620 "parser.yy"
     { (yyval.op) = OperKinds::OrAssn; }
-#line 5018 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 120:
-#line 627 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 627 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple() ); }
-#line 5024 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 121:
-#line 629 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[-2].en) ) ); }
-#line 5030 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 629 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     break;
 
   case 122:
-#line 631 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
-#line 5036 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 631 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
 
   case 123:
-#line 633 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
-#line 5042 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 633 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
 
   case 125:
-#line 639 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 5048 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 639 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
 
   case 127:
-#line 645 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 5054 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 645 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 128:
-#line 650 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 650 "parser.yy"
     { (yyval.en) = 0; }
-#line 5060 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 132:
-#line 659 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[0].sn); }
-#line 5066 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 659 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     break;
 
   case 138:
-#line 666 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 666 "parser.yy"
     {
 			Token fn;
 			fn.str = new std::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 5076 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 139:
-#line 676 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 676 "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 5084 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 140:
-#line 683 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 683 "parser.yy"
     { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
-#line 5090 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 141:
-#line 690 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
-#line 5096 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 690 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     break;
 
   case 143:
-#line 696 "parser.yy" /* yacc.c:1646  */
-    { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
-#line 5102 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 696 "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 144:
-#line 701 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
-#line 5108 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 701 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
 
   case 145:
-#line 703 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 703 "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 5118 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 146:
-#line 709 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
-#line 5124 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 709 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
 
   case 149:
-#line 716 "parser.yy" /* yacc.c:1646  */
-    { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
-#line 5130 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 716 "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 150:
-#line 721 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
-#line 5136 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 721 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     break;
 
   case 151:
-#line 727 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
-#line 5142 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 727 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     break;
 
   case 152:
-#line 729 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
-#line 5148 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 729 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     break;
 
   case 153:
-#line 731 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5154 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 731 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
 
   case 154:
-#line 733 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 733 "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
@@ -5163,2964 +5764,3422 @@
 			// 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 5168 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 155:
-#line 743 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5174 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 743 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
 
   case 156:
-#line 745 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 745 "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 5183 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 157:
-#line 755 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 5189 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 755 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
 
   case 158:
-#line 757 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 5195 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 757 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 160:
-#line 762 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
-#line 5201 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 762 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     break;
 
   case 161:
-#line 764 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
-#line 5207 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 764 "parser.yy"
+    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     break;
 
   case 162:
-#line 768 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn); }
-#line 5213 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 768 "parser.yy"
+    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     break;
 
   case 163:
-#line 769 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 769 "parser.yy"
     { (yyval.sn) = new StatementNode( build_default() ); }
-#line 5219 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 165:
-#line 775 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
-#line 5225 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 775 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     break;
 
   case 166:
-#line 779 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
-#line 5231 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 779 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
 
   case 167:
-#line 784 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 784 "parser.yy"
     { (yyval.sn) = 0; }
-#line 5237 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 169:
-#line 790 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
-#line 5243 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 790 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
 
   case 170:
-#line 792 "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 5249 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 792 "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 171:
-#line 797 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 797 "parser.yy"
     { (yyval.sn) = 0; }
-#line 5255 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 173:
-#line 803 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
-#line 5261 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 803 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
 
   case 174:
-#line 805 "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 5267 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 805 "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 175:
-#line 807 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
-#line 5273 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 807 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     break;
 
   case 176:
-#line 809 "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 5279 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 809 "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 177:
-#line 814 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 814 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
-#line 5285 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 179:
-#line 820 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 820 "parser.yy"
     { (yyval.sn) = 0; }
-#line 5291 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 180:
-#line 822 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 822 "parser.yy"
     { (yyval.sn) = 0; }
-#line 5297 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 181:
-#line 827 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5303 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 827 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
 
   case 182:
-#line 829 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn), true ) ); }
-#line 5309 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 829 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
     break;
 
   case 183:
-#line 831 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
-#line 5315 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 831 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     break;
 
   case 184:
-#line 836 "parser.yy" /* yacc.c:1646  */
-    { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
-#line 5321 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 836 "parser.yy"
+    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     break;
 
   case 185:
-#line 838 "parser.yy" /* yacc.c:1646  */
-    { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
-#line 5327 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 838 "parser.yy"
+    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
 
   case 186:
-#line 843 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Goto ) ); }
-#line 5333 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 843 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     break;
 
   case 187:
-#line 847 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
-#line 5339 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 847 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     break;
 
   case 188:
-#line 850 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 850 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
-#line 5345 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 189:
-#line 854 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Continue ) ); }
-#line 5351 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 854 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     break;
 
   case 190:
-#line 857 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 857 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
-#line 5357 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 191:
-#line 861 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Break ) ); }
-#line 5363 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 861 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
     break;
 
   case 192:
-#line 863 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
-#line 5369 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 863 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
     break;
 
   case 193:
-#line 865 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
-#line 5375 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 865 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
 
   case 194:
-#line 867 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
-#line 5381 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 867 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
 
   case 195:
-#line 869 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
-#line 5387 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 869 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     break;
 
   case 196:
-#line 874 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
-#line 5393 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 874 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     break;
 
   case 197:
-#line 876 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
-#line 5399 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 876 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     break;
 
   case 198:
-#line 878 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
-#line 5405 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 878 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     break;
 
   case 200:
-#line 885 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
-#line 5411 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 885 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
 
   case 201:
-#line 887 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
-#line 5417 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 887 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
 
   case 202:
-#line 889 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
-#line 5423 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 889 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
 
   case 203:
-#line 891 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
-#line 5429 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 891 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
 
   case 204:
-#line 896 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
-#line 5435 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 896 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
 
   case 205:
-#line 898 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
-#line 5441 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 898 "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 206:
-#line 900 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
-#line 5447 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 900 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
 
   case 207:
-#line 902 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
-#line 5453 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 902 "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 208:
-#line 907 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 907 "parser.yy"
     {
-			(yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
+			(yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
 		}
-#line 5461 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 210:
-#line 920 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 920 "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 5470 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 211:
-#line 925 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 5476 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 925 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 212:
-#line 927 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 927 "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 5485 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 214:
-#line 936 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
-#line 5491 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 936 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     break;
 
   case 215:
-#line 938 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
-#line 5497 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 938 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     break;
 
   case 216:
-#line 940 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
-#line 5503 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 940 "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 217:
-#line 942 "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 5509 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 942 "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 218:
-#line 944 "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 5515 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 944 "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 219:
-#line 949 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 949 "parser.yy"
     { (yyval.flag) = false; }
-#line 5521 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 220:
-#line 951 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 951 "parser.yy"
     { (yyval.flag) = true; }
-#line 5527 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 221:
-#line 956 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 956 "parser.yy"
     { (yyval.en) = 0; }
-#line 5533 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 224:
-#line 963 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 5539 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 963 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
 
   case 225:
-#line 968 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
-#line 5545 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 968 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     break;
 
   case 226:
-#line 970 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
-#line 5551 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 970 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     break;
 
   case 227:
-#line 975 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 975 "parser.yy"
     { (yyval.en) = 0; }
-#line 5557 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 228:
-#line 977 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
-#line 5563 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 977 "parser.yy"
+    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
 
   case 229:
-#line 979 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
-#line 5569 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 979 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     break;
 
   case 230:
-#line 984 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 984 "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 5578 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 231:
-#line 989 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 989 "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 5587 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 232:
-#line 999 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 999 "parser.yy"
     { (yyval.decl) = 0; }
-#line 5593 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 235:
-#line 1006 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 5599 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1006 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 236:
-#line 1011 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1011 "parser.yy"
     { (yyval.decl) = 0; }
-#line 5605 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 239:
-#line 1018 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 5611 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1018 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 244:
-#line 1032 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1032 "parser.yy"
     {}
-#line 5617 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 245:
-#line 1033 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1033 "parser.yy"
     {}
-#line 5623 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 253:
-#line 1062 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1062 "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 5632 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 254:
-#line 1069 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1069 "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 5641 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 255:
-#line 1074 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1074 "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 5650 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 256:
-#line 1084 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1084 "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) );
 		}
-#line 5659 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 257:
-#line 1089 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1089 "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) );
 		}
-#line 5668 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 258:
-#line 1094 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1094 "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) );
 		}
-#line 5677 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 259:
-#line 1102 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1102 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
 		}
-#line 5686 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 260:
-#line 1107 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1107 "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 5695 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 261:
-#line 1112 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1112 "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 5704 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 262:
-#line 1117 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1117 "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 5713 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 263:
-#line 1122 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1122 "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 5722 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 264:
-#line 1130 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1130 "parser.yy"
     {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), DeclarationNode::newTuple( 0 ), (yyvsp[-2].decl), 0, true );
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
 		}
-#line 5730 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 265:
-#line 1153 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1153 "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 5738 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 266:
-#line 1157 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1157 "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 5746 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 267:
-#line 1164 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
-#line 5752 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1164 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
 
   case 268:
-#line 1168 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
-#line 5758 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1168 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
 
   case 269:
-#line 1173 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1173 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addTypedef();
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
 		}
-#line 5767 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 270:
-#line 1178 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1178 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addTypedef();
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
 		}
-#line 5776 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 271:
-#line 1183 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1183 "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 5785 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 272:
-#line 1194 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1194 "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 5794 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 273:
-#line 1199 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1199 "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 5803 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 274:
-#line 1204 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1204 "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 5812 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 275:
-#line 1209 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1209 "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 5821 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 276:
-#line 1214 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1214 "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 5830 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 277:
-#line 1223 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1223 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
 			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
 		}
-#line 5839 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 278:
-#line 1228 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1228 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
 			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
 		}
-#line 5848 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 283:
-#line 1245 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1245 "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) ))->addInitializer( (yyvsp[(4) - (4)].in) );
 		}
-#line 5857 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 284:
-#line 1250 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1250 "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)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
 		}
-#line 5866 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 293:
-#line 1272 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1272 "parser.yy"
     { (yyval.decl) = 0; }
-#line 5872 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 296:
-#line 1284 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5878 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1284 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 299:
-#line 1295 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1295 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
-#line 5884 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 300:
-#line 1297 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1297 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
-#line 5890 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 301:
-#line 1299 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1299 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
-#line 5896 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 302:
-#line 1301 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1301 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
-#line 5902 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 303:
-#line 1303 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1303 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
-#line 5908 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 304:
-#line 1305 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1305 "parser.yy"
     {
 			typedefTable.enterScope();
 		}
-#line 5916 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 305:
-#line 1309 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1309 "parser.yy"
     {
 			typedefTable.leaveScope();
-			(yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
+			(yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
 		}
-#line 5925 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 307:
-#line 1318 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5931 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1318 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 308:
-#line 1320 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 5937 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1320 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 310:
-#line 1331 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5943 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1331 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 311:
-#line 1336 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1336 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
-#line 5949 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 312:
-#line 1338 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1338 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
-#line 5955 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 313:
-#line 1340 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1340 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
-#line 5961 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 314:
-#line 1342 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1342 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
-#line 5967 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 315:
-#line 1345 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1345 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
-#line 5973 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 316:
-#line 1347 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1347 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
-#line 5979 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 317:
-#line 1350 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1350 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
-#line 5985 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 318:
-#line 1352 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1352 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
-#line 5991 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 319:
-#line 1357 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1357 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
-#line 5997 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 320:
-#line 1359 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1359 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
-#line 6003 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 321:
-#line 1361 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1361 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
-#line 6009 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 322:
-#line 1363 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1363 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
-#line 6015 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 323:
-#line 1365 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1365 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
-#line 6021 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 324:
-#line 1367 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1367 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
-#line 6027 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 325:
-#line 1369 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1369 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
-#line 6033 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 326:
-#line 1371 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1371 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
-#line 6039 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 327:
-#line 1373 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1373 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
-#line 6045 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 328:
-#line 1375 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1375 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
-#line 6051 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 329:
-#line 1377 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1377 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
-#line 6057 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 330:
-#line 1379 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1379 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
-#line 6063 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 331:
-#line 1381 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1381 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
-#line 6069 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 333:
-#line 1388 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6075 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1388 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 334:
-#line 1390 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6081 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1390 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 335:
-#line 1392 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6087 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1392 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 336:
-#line 1394 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
-#line 6093 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1394 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 338:
-#line 1400 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6099 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1400 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 340:
-#line 1407 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6105 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1407 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 341:
-#line 1409 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6111 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1409 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 342:
-#line 1411 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
-#line 6117 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1411 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 343:
-#line 1416 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 6123 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1416 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
 
   case 344:
-#line 1418 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
-#line 6129 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1418 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
 
   case 345:
-#line 1420 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
-#line 6135 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1420 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
 
   case 346:
-#line 1422 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
-#line 6141 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1422 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
 
   case 348:
-#line 1428 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6147 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1428 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 349:
-#line 1430 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6153 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1430 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 350:
-#line 1432 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6159 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1432 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 352:
-#line 1438 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6165 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1438 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 353:
-#line 1440 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6171 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1440 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 355:
-#line 1446 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6177 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1446 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 356:
-#line 1448 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6183 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1448 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 357:
-#line 1450 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6189 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1450 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 358:
-#line 1455 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
-#line 6195 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1455 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
 
   case 359:
-#line 1457 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6201 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1457 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 360:
-#line 1459 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6207 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1459 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 363:
-#line 1469 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), 0, 0, (yyvsp[-1].decl), true ); }
-#line 6213 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1469 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
     break;
 
   case 364:
-#line 1471 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1471 "parser.yy"
     {
-			typedefTable.makeTypedef( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), 0, 0, false );
+			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
+			(yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
 		}
-#line 6222 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 365:
-#line 1476 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
-#line 6228 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1476 "parser.yy"
+    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
 
   case 366:
-#line 1478 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), 0, (yyvsp[-1].decl), true ); }
-#line 6234 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1478 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     break;
 
   case 367:
-#line 1480 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), 0, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
-#line 6240 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1480 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     break;
 
   case 368:
-#line 1482 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl); }
-#line 6246 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1482 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
 
   case 369:
-#line 1487 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1487 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
-#line 6252 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 370:
-#line 1489 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1489 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
-#line 6258 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 371:
-#line 1494 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1494 "parser.yy"
     { (yyval.decl) = 0; }
-#line 6264 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 372:
-#line 1496 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6270 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1496 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
 
   case 374:
-#line 1502 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
-#line 6276 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1502 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     break;
 
   case 376:
-#line 1505 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1505 "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 6286 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 378:
-#line 1515 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
-#line 6292 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1515 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
 
   case 379:
-#line 1517 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
-#line 6298 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1517 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
 
   case 380:
-#line 1519 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
-#line 6304 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1519 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
 
   case 381:
-#line 1524 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6310 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1524 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 382:
-#line 1526 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
-#line 6316 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1526 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
 
   case 383:
-#line 1531 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1531 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
-#line 6322 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 384:
-#line 1533 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
-#line 6328 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1533 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
 
   case 385:
-#line 1536 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
-#line 6334 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1536 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
 
   case 386:
-#line 1539 "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 1539 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
 
   case 388:
-#line 1545 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1545 "parser.yy"
     { (yyval.en) = 0; }
-#line 6346 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 389:
-#line 1547 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6352 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1547 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
 
   case 390:
-#line 1552 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6358 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1552 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
 
   case 392:
-#line 1561 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[-2].decl) ); }
-#line 6364 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1561 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     break;
 
   case 393:
-#line 1563 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1563 "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 6373 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 394:
-#line 1568 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
-#line 6379 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1568 "parser.yy"
+    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
 
   case 395:
-#line 1570 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
-#line 6385 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1570 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     break;
 
   case 396:
-#line 1575 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
-#line 6391 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1575 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
 
   case 397:
-#line 1577 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
-#line 6397 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1577 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
 
   case 398:
-#line 1582 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1582 "parser.yy"
     { (yyval.en) = 0; }
-#line 6403 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 399:
-#line 1584 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6409 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1584 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
 
   case 400:
-#line 1591 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1591 "parser.yy"
     { (yyval.decl) = 0; }
-#line 6415 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 404:
-#line 1599 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6421 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1599 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 405:
-#line 1601 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
-#line 6427 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1601 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
 
   case 406:
-#line 1603 "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 1603 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
 
   case 408:
-#line 1611 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6439 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1611 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 409:
-#line 1613 "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 1613 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 410:
-#line 1615 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
-#line 6451 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1615 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
 
   case 412:
-#line 1621 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6457 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1621 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 413:
-#line 1626 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1626 "parser.yy"
     { (yyval.decl) = 0; }
-#line 6463 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 416:
-#line 1633 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
-#line 6469 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1633 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
 
   case 419:
-#line 1640 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6475 "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 420:
-#line 1642 "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 1642 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 422:
-#line 1651 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
-#line 6487 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1651 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
 
   case 423:
-#line 1654 "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 1654 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
 
   case 424:
-#line 1656 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
-#line 6499 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1656 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
 
   case 429:
-#line 1666 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6505 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1666 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 431:
-#line 1672 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1672 "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 6514 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 432:
-#line 1677 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1677 "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 6523 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 434:
-#line 1686 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6529 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1686 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 435:
-#line 1695 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
-#line 6535 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1695 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
 
   case 436:
-#line 1697 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
-#line 6541 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1697 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
 
   case 448:
-#line 1722 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6547 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1722 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 452:
-#line 1730 "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 1730 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 453:
-#line 1735 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1735 "parser.yy"
     { (yyval.in) = 0; }
-#line 6559 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 454:
-#line 1737 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in); }
-#line 6565 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1737 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
 
   case 455:
-#line 1739 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
-#line 6571 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1739 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     break;
 
   case 456:
-#line 1743 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
-#line 6577 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1743 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     break;
 
   case 457:
-#line 1744 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
-#line 6583 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1744 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
 
   case 458:
-#line 1749 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1749 "parser.yy"
     { (yyval.in) = 0; }
-#line 6589 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 460:
-#line 1751 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
-#line 6595 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1751 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     break;
 
   case 461:
-#line 1752 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
-#line 6601 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1752 "parser.yy"
+    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     break;
 
   case 462:
-#line 1754 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
-#line 6607 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1754 "parser.yy"
+    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
 
   case 464:
-#line 1770 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
-#line 6613 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1770 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     break;
 
   case 466:
-#line 1776 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
-#line 6619 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1776 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 467:
-#line 1782 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 6625 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1782 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     break;
 
   case 468:
-#line 1785 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6631 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1785 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
 
   case 469:
-#line 1787 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6637 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1787 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
 
   case 470:
-#line 1789 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
-#line 6643 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1789 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     break;
 
   case 471:
-#line 1791 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6649 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1791 "parser.yy"
+    { (yyval.en) = (yyvsp[(4) - (6)].en); }
     break;
 
   case 473:
-#line 1815 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6655 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1815 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 474:
-#line 1817 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6661 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1817 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 475:
-#line 1819 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6667 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1819 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 477:
-#line 1825 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6673 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1825 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 478:
-#line 1827 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6679 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1827 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 479:
-#line 1832 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
-#line 6685 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1832 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
 
   case 481:
-#line 1838 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
-#line 6691 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1838 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
 
   case 482:
-#line 1843 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
-#line 6697 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1843 "parser.yy"
+    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
 
   case 483:
-#line 1845 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
-#line 6703 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1845 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 485:
-#line 1851 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1851 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Type; }
-#line 6709 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 486:
-#line 1853 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1853 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
-#line 6715 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 487:
-#line 1855 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1855 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
-#line 6721 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 488:
-#line 1860 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1860 "parser.yy"
     { (yyval.decl) = 0; }
-#line 6727 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 489:
-#line 1862 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6733 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1862 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
 
   case 490:
-#line 1867 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1867 "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 6742 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 491:
-#line 1872 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 6748 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1872 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
 
   case 492:
-#line 1874 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1874 "parser.yy"
     { (yyval.decl) = 0; }
-#line 6754 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 493:
-#line 1879 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
-#line 6760 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1879 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     break;
 
   case 495:
-#line 1882 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
-#line 6766 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1882 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     break;
 
   case 496:
-#line 1884 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
-#line 6772 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1884 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
 
   case 497:
-#line 1889 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl); }
-#line 6778 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1889 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
 
   case 498:
-#line 1891 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
-#line 6784 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1891 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 499:
-#line 1893 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
-#line 6790 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1893 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 500:
-#line 1898 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
-#line 6796 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1898 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 501:
-#line 1900 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
-#line 6802 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1900 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 502:
-#line 1905 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1905 "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 6811 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 503:
-#line 1910 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1910 "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 6820 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 504:
-#line 1918 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1918 "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 6829 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 505:
-#line 1923 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1923 "parser.yy"
     {
-			typedefTable.enterTrait( *(yyvsp[-6].tok) );
+			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
 			typedefTable.enterScope();
 		}
-#line 6838 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 506:
-#line 1928 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1928 "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 6848 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 508:
-#line 1938 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6854 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1938 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 511:
-#line 1948 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1948 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
 		}
-#line 6863 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 512:
-#line 1953 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1953 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
 		}
-#line 6872 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 513:
-#line 1958 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1958 "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 6881 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 514:
-#line 1966 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1966 "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 6890 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 515:
-#line 1971 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1971 "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 6899 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 516:
-#line 1981 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1981 "parser.yy"
     {}
-#line 6905 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 517:
-#line 1983 "parser.yy" /* yacc.c:1646  */
-    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);	}
-#line 6911 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1983 "parser.yy"
+    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
     break;
 
   case 519:
-#line 1989 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6917 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1989 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
 
   case 520:
-#line 1994 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1994 "parser.yy"
     { (yyval.decl) = 0; }
-#line 6923 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 524:
-#line 2002 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2002 "parser.yy"
     {}
-#line 6929 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 525:
-#line 2004 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2004 "parser.yy"
     {
 			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
-			linkage = LinkageSpec::fromString( *(yyvsp[0].tok) );
+			linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
 		}
-#line 6938 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 526:
-#line 2009 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2009 "parser.yy"
     {
 			linkage = linkageStack.top();
 			linkageStack.pop();
-			(yyval.decl) = (yyvsp[-1].decl);
+			(yyval.decl) = (yyvsp[(5) - (6)].decl);
 		}
-#line 6948 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 527:
-#line 2015 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2015 "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 6958 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 529:
-#line 2030 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2030 "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 6968 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 530:
-#line 2036 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2036 "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 6978 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 531:
-#line 2045 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2045 "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 6988 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 532:
-#line 2051 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2051 "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 6998 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 533:
-#line 2057 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2057 "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 7008 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 534:
-#line 2063 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2063 "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 7018 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 535:
-#line 2069 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2069 "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 7028 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 536:
-#line 2077 "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) )->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 7038 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 537:
-#line 2083 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2083 "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 7048 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 538:
-#line 2091 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2091 "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 7058 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 539:
-#line 2097 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2097 "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 7068 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 543:
-#line 2112 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 7074 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2112 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 545:
-#line 2117 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[-2].str); }
-#line 7080 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2117 "parser.yy"
+    { delete (yyvsp[(3) - (5)].str); }
     break;
 
   case 546:
-#line 2122 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2122 "parser.yy"
     { (yyval.decl) = 0; }
-#line 7086 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 549:
-#line 2129 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 7092 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2129 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 550:
-#line 2135 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2135 "parser.yy"
     { (yyval.decl) = 0; }
-#line 7098 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 555:
-#line 2146 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[-1].en); }
-#line 7104 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2146 "parser.yy"
+    { delete (yyvsp[(3) - (4)].en); }
     break;
 
   case 556:
-#line 2150 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].tok); }
-#line 7110 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2150 "parser.yy"
+    { delete (yyvsp[(1) - (1)].tok); }
     break;
 
   case 557:
-#line 2151 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7116 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2151 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
     break;
 
   case 558:
-#line 2152 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7122 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2152 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
     break;
 
   case 559:
-#line 2153 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7128 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2153 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
     break;
 
   case 560:
-#line 2188 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7134 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2188 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 562:
-#line 2191 "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 2191 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 563:
-#line 2193 "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 2193 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 564:
-#line 2198 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2198 "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 7155 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 565:
-#line 2203 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7161 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2203 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 566:
-#line 2208 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7167 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2208 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 567:
-#line 2210 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7173 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2210 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 568:
-#line 2212 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7179 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2212 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 569:
-#line 2217 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7185 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2217 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 570:
-#line 2219 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7191 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2219 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 571:
-#line 2221 "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 2221 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 572:
-#line 2223 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7203 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2223 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 573:
-#line 2228 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7209 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2228 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 574:
-#line 2230 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7215 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2230 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 575:
-#line 2239 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7221 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2239 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 577:
-#line 2242 "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 2242 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 578:
-#line 2247 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7233 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2247 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
   case 579:
-#line 2249 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7239 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2249 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 580:
-#line 2251 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7245 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2251 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 581:
-#line 2256 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7251 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2256 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 582:
-#line 2258 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7257 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2258 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 583:
-#line 2260 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7263 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2260 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 584:
-#line 2265 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7269 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2265 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 585:
-#line 2267 "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 2267 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 586:
-#line 2269 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7281 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2269 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 590:
-#line 2284 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
-#line 7287 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2284 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
 
   case 591:
-#line 2286 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
-#line 7293 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2286 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
 
   case 592:
-#line 2288 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7299 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2288 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 593:
-#line 2293 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7305 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2293 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 594:
-#line 2295 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7311 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2295 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 595:
-#line 2297 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7317 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2297 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 596:
-#line 2302 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7323 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2302 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 597:
-#line 2304 "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 2304 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 598:
-#line 2306 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7335 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2306 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 599:
-#line 2321 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7341 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2321 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 601:
-#line 2324 "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 2324 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 602:
-#line 2326 "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 2326 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 604:
-#line 2332 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7359 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2332 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 605:
-#line 2337 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7365 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2337 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 606:
-#line 2339 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7371 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2339 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 607:
-#line 2341 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7377 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2341 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 608:
-#line 2346 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7383 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2346 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 609:
-#line 2348 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7389 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2348 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 610:
-#line 2350 "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 2350 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 611:
-#line 2352 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7401 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2352 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 612:
-#line 2357 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7407 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2357 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
   case 613:
-#line 2359 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7413 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2359 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 614:
-#line 2361 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7419 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2361 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 615:
-#line 2371 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7425 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2371 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 617:
-#line 2374 "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 2374 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 618:
-#line 2376 "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 2376 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 619:
-#line 2381 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7443 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2381 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 620:
-#line 2383 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7449 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2383 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 621:
-#line 2385 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7455 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2385 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 622:
-#line 2390 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7461 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2390 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 623:
-#line 2392 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7467 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2392 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 624:
-#line 2394 "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 2394 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 625:
-#line 2396 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7479 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2396 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 626:
-#line 2401 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7485 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2401 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
   case 627:
-#line 2403 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7491 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2403 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 628:
-#line 2405 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7497 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2405 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 629:
-#line 2436 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7503 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2436 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 631:
-#line 2439 "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 2439 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 632:
-#line 2441 "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 2441 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 633:
-#line 2446 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2446 "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 7524 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 634:
-#line 2451 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2451 "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 7533 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 635:
-#line 2459 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7539 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2459 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 636:
-#line 2461 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7545 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2461 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 637:
-#line 2463 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7551 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2463 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 638:
-#line 2468 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7557 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2468 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 639:
-#line 2470 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7563 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2470 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 640:
-#line 2475 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7569 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2475 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
   case 641:
-#line 2477 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7575 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2477 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 643:
-#line 2492 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7581 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2492 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 644:
-#line 2494 "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 2494 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 645:
-#line 2499 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2499 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7593 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 646:
-#line 2501 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7599 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2501 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 647:
-#line 2503 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7605 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2503 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 648:
-#line 2505 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7611 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2505 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 649:
-#line 2507 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7617 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2507 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 651:
-#line 2513 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7623 "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 652:
-#line 2515 "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 2515 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 653:
-#line 2517 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7635 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2517 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 654:
-#line 2522 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
-#line 7641 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2522 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
 
   case 655:
-#line 2524 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7647 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2524 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 656:
-#line 2526 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7653 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2526 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 657:
-#line 2532 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2532 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-#line 7659 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 658:
-#line 2534 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
-#line 7665 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2534 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 660:
-#line 2540 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
-#line 7671 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2540 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
 
   case 661:
-#line 2542 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2542 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
-#line 7677 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 662:
-#line 2544 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
-#line 7683 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2544 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
 
   case 663:
-#line 2546 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
-#line 7689 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2546 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
 
   case 665:
-#line 2561 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7695 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2561 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 666:
-#line 2563 "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 2563 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 667:
-#line 2568 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2568 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7707 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 668:
-#line 2570 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7713 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2570 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 669:
-#line 2572 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7719 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2572 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 670:
-#line 2574 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7725 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2574 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 671:
-#line 2576 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7731 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2576 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 673:
-#line 2582 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7737 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2582 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 674:
-#line 2584 "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 2584 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 675:
-#line 2586 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7749 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2586 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 676:
-#line 2591 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
-#line 7755 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2591 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
 
   case 677:
-#line 2593 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7761 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2593 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 678:
-#line 2595 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7767 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2595 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 680:
-#line 2602 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7773 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2602 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 682:
-#line 2613 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2613 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-#line 7779 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 683:
-#line 2616 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
-#line 7785 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2616 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
 
   case 684:
-#line 2618 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
-#line 7791 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2618 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
 
   case 685:
-#line 2621 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
-#line 7797 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2621 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
 
   case 686:
-#line 2623 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
-#line 7803 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2623 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
 
   case 687:
-#line 2625 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
-#line 7809 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2625 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
 
   case 689:
-#line 2639 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7815 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2639 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 690:
-#line 2641 "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 2641 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 691:
-#line 2646 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2646 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7827 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 692:
-#line 2648 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7833 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2648 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 693:
-#line 2650 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7839 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2650 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 694:
-#line 2652 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7845 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2652 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 695:
-#line 2654 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7851 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2654 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 697:
-#line 2660 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7857 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2660 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 698:
-#line 2662 "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 2662 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 699:
-#line 2664 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7869 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2664 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 700:
-#line 2669 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7875 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2669 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 701:
-#line 2671 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7881 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2671 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 704:
-#line 2681 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 7887 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2681 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 707:
-#line 2691 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7893 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2691 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 708:
-#line 2693 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7899 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2693 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 709:
-#line 2695 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7905 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2695 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 710:
-#line 2697 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7911 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2697 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 711:
-#line 2699 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7917 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2699 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 712:
-#line 2701 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7923 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2701 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 713:
-#line 2708 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7929 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2708 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 714:
-#line 2710 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7935 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2710 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 715:
-#line 2712 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7941 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2712 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 716:
-#line 2714 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
-#line 7947 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2714 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 717:
-#line 2716 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7953 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2716 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 718:
-#line 2718 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7959 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2718 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 719:
-#line 2720 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7965 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2720 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 720:
-#line 2722 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7971 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2722 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 721:
-#line 2724 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
-#line 7977 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2724 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 722:
-#line 2726 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7983 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2726 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 723:
-#line 2731 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
-#line 7989 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2731 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
 
   case 724:
-#line 2733 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
-#line 7995 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2733 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
 
   case 725:
-#line 2738 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
-#line 8001 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2738 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
 
   case 726:
-#line 2740 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
-#line 8007 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2740 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
 
   case 728:
-#line 2767 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 8013 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2767 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 732:
-#line 2778 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8019 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2778 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 733:
-#line 2780 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8025 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2780 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 734:
-#line 2782 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8031 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2782 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 735:
-#line 2784 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8037 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2784 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 736:
-#line 2786 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8043 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2786 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 737:
-#line 2788 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8049 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2788 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 738:
-#line 2795 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 8055 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2795 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 739:
-#line 2797 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 8061 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2797 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 740:
-#line 2799 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 8067 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2799 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 741:
-#line 2801 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 8073 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2801 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 742:
-#line 2803 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 8079 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2803 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 743:
-#line 2805 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 8085 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2805 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 744:
-#line 2810 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
-#line 8091 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2810 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
 
   case 745:
-#line 2815 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[-1].decl), 0 ); }
-#line 8097 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2815 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     break;
 
   case 746:
-#line 2817 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
-#line 8103 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2817 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
 
   case 747:
-#line 2819 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
-#line 8109 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2819 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
 
   case 750:
-#line 2843 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2843 "parser.yy"
     { (yyval.en) = 0; }
-#line 8115 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 751:
-#line 2845 "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 2845 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+
+
+/* Line 1806 of yacc.c  */
+#line 9184 "Parser/parser.cc"
       default: break;
     }
@@ -8144,5 +9203,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 +9218,7 @@
 
 
-/*--------------------------------------.
-| yyerrlab -- here on detecting error.  |
-`--------------------------------------*/
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
@@ -8212,18 +9271,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 +9303,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 +9316,5 @@
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 
   for (;;)
@@ -8263,21 +9322,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 +9344,5 @@
     }
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
@@ -8311,5 +9368,5 @@
   goto yyreturn;
 
-#if !defined yyoverflow || YYERROR_VERBOSE
+#if !defined(yyoverflow) || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -8330,5 +9387,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 +9394,5 @@
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp);
+		  yystos[*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
@@ -8348,7 +9405,12 @@
     YYSTACK_FREE (yymsg);
 #endif
-  return yyresult;
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
-#line 2848 "parser.yy" /* yacc.c:1906  */
+
+
+
+/* Line 2067 of yacc.c  */
+#line 2848 "parser.yy"
 
 // ----end of grammar----
@@ -8369,2 +9431,3 @@
 // compile-command: "make install" //
 // End: //
+
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 4ed70597f55cf4d141df0e03cc994430a3b4182c)
+++ src/Parser/parser.yy	(revision 1eba45207b5f4260dca6a87522e61f09a0d8f014)
@@ -389,6 +389,6 @@
 		{
 			Token fn;
-			fn.str = new std::string( "?{}" ); // location undefined
-			$$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) );
+			fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
+			$$ = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) ) );
 		}
 	;
