Changeset 50c5cf3 for src


Ignore:
Timestamp:
Sep 14, 2016, 2:14:43 PM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
101e0bd, 1eba452
Parents:
cb2b15c (diff), 4c1403c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Location:
src
Files:
1 added
19 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.cc

    rcb2b15c r50c5cf3  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 3.0.2.  */
    22
    33/* Bison implementation for Yacc-like parsers in C
    4    
    5       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    6    
     4
     5   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
     6
    77   This program is free software: you can redistribute it and/or modify
    88   it under the terms of the GNU General Public License as published by
    99   the Free Software Foundation, either version 3 of the License, or
    1010   (at your option) any later version.
    11    
     11
    1212   This program is distributed in the hope that it will be useful,
    1313   but WITHOUT ANY WARRANTY; without even the implied warranty of
    1414   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1515   GNU General Public License for more details.
    16    
     16
    1717   You should have received a copy of the GNU General Public License
    1818   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     
    2727   Bison output files to be licensed under the GNU General Public
    2828   License without this special exception.
    29    
     29
    3030   This special exception was added by the Free Software Foundation in
    3131   version 2.2 of Bison.  */
     
    4545
    4646/* Bison version.  */
    47 #define YYBISON_VERSION "2.5"
     47#define YYBISON_VERSION "3.0.2"
    4848
    4949/* Skeleton name.  */
     
    5959#define YYPULL 1
    6060
    61 /* Using locations.  */
    62 #define YYLSP_NEEDED 0
    6361
    6462
    6563
    6664/* Copy the first part of user declarations.  */
    67 
    68 /* Line 268 of yacc.c  */
    69 #line 42 "parser.yy"
     65#line 42 "parser.yy" /* yacc.c:339  */
    7066
    7167#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    9490} // appendStr
    9591
    96 
    97 /* Line 268 of yacc.c  */
    98 #line 99 "Parser/parser.cc"
    99 
    100 /* Enabling traces.  */
    101 #ifndef YYDEBUG
    102 # define YYDEBUG 1
    103 #endif
     92#line 93 "Parser/parser.cc" /* yacc.c:339  */
     93
     94# ifndef YY_NULLPTR
     95#  if defined __cplusplus && 201103L <= __cplusplus
     96#   define YY_NULLPTR nullptr
     97#  else
     98#   define YY_NULLPTR 0
     99#  endif
     100# endif
    104101
    105102/* Enabling verbose error messages.  */
     
    111108#endif
    112109
    113 /* Enabling the token table.  */
    114 #ifndef YYTOKEN_TABLE
    115 # define YYTOKEN_TABLE 0
     110/* In a future release of Bison, this section will be replaced
     111   by #include "y.tab.h".  */
     112#ifndef YY_YY_Y_TAB_H_INCLUDED
     113# define YY_YY_Y_TAB_H_INCLUDED
     114/* Debug traces.  */
     115#ifndef YYDEBUG
     116# define YYDEBUG 1
    116117#endif
    117 
    118 
    119 /* Tokens.  */
     118#if YYDEBUG
     119extern int yydebug;
     120#endif
     121
     122/* Token type.  */
    120123#ifndef YYTOKENTYPE
    121124# define YYTOKENTYPE
    122    /* Put the tokens into the symbol table, so that GDB and other debuggers
    123       know about them.  */
    124    enum yytokentype {
    125      TYPEDEF = 258,
    126      AUTO = 259,
    127      EXTERN = 260,
    128      REGISTER = 261,
    129      STATIC = 262,
    130      INLINE = 263,
    131      FORTRAN = 264,
    132      CONST = 265,
    133      VOLATILE = 266,
    134      RESTRICT = 267,
    135      FORALL = 268,
    136      LVALUE = 269,
    137      VOID = 270,
    138      CHAR = 271,
    139      SHORT = 272,
    140      INT = 273,
    141      LONG = 274,
    142      FLOAT = 275,
    143      DOUBLE = 276,
    144      SIGNED = 277,
    145      UNSIGNED = 278,
    146      VALIST = 279,
    147      BOOL = 280,
    148      COMPLEX = 281,
    149      IMAGINARY = 282,
    150      TYPEOF = 283,
    151      LABEL = 284,
    152      ENUM = 285,
    153      STRUCT = 286,
    154      UNION = 287,
    155      OTYPE = 288,
    156      FTYPE = 289,
    157      DTYPE = 290,
    158      TRAIT = 291,
    159      SIZEOF = 292,
    160      OFFSETOF = 293,
    161      ATTRIBUTE = 294,
    162      EXTENSION = 295,
    163      IF = 296,
    164      ELSE = 297,
    165      SWITCH = 298,
    166      CASE = 299,
    167      DEFAULT = 300,
    168      DO = 301,
    169      WHILE = 302,
    170      FOR = 303,
    171      BREAK = 304,
    172      CONTINUE = 305,
    173      GOTO = 306,
    174      RETURN = 307,
    175      CHOOSE = 308,
    176      DISABLE = 309,
    177      ENABLE = 310,
    178      FALLTHRU = 311,
    179      TRY = 312,
    180      CATCH = 313,
    181      CATCHRESUME = 314,
    182      FINALLY = 315,
    183      THROW = 316,
    184      THROWRESUME = 317,
    185      AT = 318,
    186      ASM = 319,
    187      ALIGNAS = 320,
    188      ALIGNOF = 321,
    189      ATOMIC = 322,
    190      GENERIC = 323,
    191      NORETURN = 324,
    192      STATICASSERT = 325,
    193      THREADLOCAL = 326,
    194      IDENTIFIER = 327,
    195      QUOTED_IDENTIFIER = 328,
    196      TYPEDEFname = 329,
    197      TYPEGENname = 330,
    198      ATTR_IDENTIFIER = 331,
    199      ATTR_TYPEDEFname = 332,
    200      ATTR_TYPEGENname = 333,
    201      INTEGERconstant = 334,
    202      FLOATINGconstant = 335,
    203      CHARACTERconstant = 336,
    204      STRINGliteral = 337,
    205      ZERO = 338,
    206      ONE = 339,
    207      ARROW = 340,
    208      ICR = 341,
    209      DECR = 342,
    210      LS = 343,
    211      RS = 344,
    212      LE = 345,
    213      GE = 346,
    214      EQ = 347,
    215      NE = 348,
    216      ANDAND = 349,
    217      OROR = 350,
    218      ELLIPSIS = 351,
    219      MULTassign = 352,
    220      DIVassign = 353,
    221      MODassign = 354,
    222      PLUSassign = 355,
    223      MINUSassign = 356,
    224      LSassign = 357,
    225      RSassign = 358,
    226      ANDassign = 359,
    227      ERassign = 360,
    228      ORassign = 361,
    229      ATassign = 362,
    230      THEN = 363
    231    };
     125  enum yytokentype
     126  {
     127    TYPEDEF = 258,
     128    AUTO = 259,
     129    EXTERN = 260,
     130    REGISTER = 261,
     131    STATIC = 262,
     132    INLINE = 263,
     133    FORTRAN = 264,
     134    CONST = 265,
     135    VOLATILE = 266,
     136    RESTRICT = 267,
     137    FORALL = 268,
     138    LVALUE = 269,
     139    VOID = 270,
     140    CHAR = 271,
     141    SHORT = 272,
     142    INT = 273,
     143    LONG = 274,
     144    FLOAT = 275,
     145    DOUBLE = 276,
     146    SIGNED = 277,
     147    UNSIGNED = 278,
     148    VALIST = 279,
     149    BOOL = 280,
     150    COMPLEX = 281,
     151    IMAGINARY = 282,
     152    TYPEOF = 283,
     153    LABEL = 284,
     154    ENUM = 285,
     155    STRUCT = 286,
     156    UNION = 287,
     157    OTYPE = 288,
     158    FTYPE = 289,
     159    DTYPE = 290,
     160    TRAIT = 291,
     161    SIZEOF = 292,
     162    OFFSETOF = 293,
     163    ATTRIBUTE = 294,
     164    EXTENSION = 295,
     165    IF = 296,
     166    ELSE = 297,
     167    SWITCH = 298,
     168    CASE = 299,
     169    DEFAULT = 300,
     170    DO = 301,
     171    WHILE = 302,
     172    FOR = 303,
     173    BREAK = 304,
     174    CONTINUE = 305,
     175    GOTO = 306,
     176    RETURN = 307,
     177    CHOOSE = 308,
     178    DISABLE = 309,
     179    ENABLE = 310,
     180    FALLTHRU = 311,
     181    TRY = 312,
     182    CATCH = 313,
     183    CATCHRESUME = 314,
     184    FINALLY = 315,
     185    THROW = 316,
     186    THROWRESUME = 317,
     187    AT = 318,
     188    ASM = 319,
     189    ALIGNAS = 320,
     190    ALIGNOF = 321,
     191    ATOMIC = 322,
     192    GENERIC = 323,
     193    NORETURN = 324,
     194    STATICASSERT = 325,
     195    THREADLOCAL = 326,
     196    IDENTIFIER = 327,
     197    QUOTED_IDENTIFIER = 328,
     198    TYPEDEFname = 329,
     199    TYPEGENname = 330,
     200    ATTR_IDENTIFIER = 331,
     201    ATTR_TYPEDEFname = 332,
     202    ATTR_TYPEGENname = 333,
     203    INTEGERconstant = 334,
     204    FLOATINGconstant = 335,
     205    CHARACTERconstant = 336,
     206    STRINGliteral = 337,
     207    ZERO = 338,
     208    ONE = 339,
     209    ARROW = 340,
     210    ICR = 341,
     211    DECR = 342,
     212    LS = 343,
     213    RS = 344,
     214    LE = 345,
     215    GE = 346,
     216    EQ = 347,
     217    NE = 348,
     218    ANDAND = 349,
     219    OROR = 350,
     220    ELLIPSIS = 351,
     221    MULTassign = 352,
     222    DIVassign = 353,
     223    MODassign = 354,
     224    PLUSassign = 355,
     225    MINUSassign = 356,
     226    LSassign = 357,
     227    RSassign = 358,
     228    ANDassign = 359,
     229    ERassign = 360,
     230    ORassign = 361,
     231    ATassign = 362,
     232    THEN = 363
     233  };
    232234#endif
    233235/* Tokens.  */
     
    339341#define THEN 363
    340342
    341 
    342 
    343 
     343/* Value type.  */
    344344#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    345 typedef union YYSTYPE
     345typedef union YYSTYPE YYSTYPE;
     346union YYSTYPE
    346347{
    347 
    348 /* Line 293 of yacc.c  */
    349 #line 115 "parser.yy"
     348#line 115 "parser.yy" /* yacc.c:355  */
    350349
    351350        Token tok;
     
    364363        bool flag;
    365364
    366 
    367 
    368 /* Line 293 of yacc.c  */
    369 #line 370 "Parser/parser.cc"
    370 } YYSTYPE;
     365#line 366 "Parser/parser.cc" /* yacc.c:355  */
     366};
    371367# define YYSTYPE_IS_TRIVIAL 1
    372 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
    373368# define YYSTYPE_IS_DECLARED 1
    374369#endif
    375370
    376371
     372extern YYSTYPE yylval;
     373
     374int yyparse (void);
     375
     376#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
     377
    377378/* Copy the second part of user declarations.  */
    378379
    379 
    380 /* Line 343 of yacc.c  */
    381 #line 382 "Parser/parser.cc"
     380#line 381 "Parser/parser.cc" /* yacc.c:358  */
    382381
    383382#ifdef short
     
    393392#ifdef YYTYPE_INT8
    394393typedef YYTYPE_INT8 yytype_int8;
    395 #elif (defined __STDC__ || defined __C99__FUNC__ \
    396      || defined __cplusplus || defined _MSC_VER)
     394#else
    397395typedef signed char yytype_int8;
    398 #else
    399 typedef short int yytype_int8;
    400396#endif
    401397
     
    417413# elif defined size_t
    418414#  define YYSIZE_T size_t
    419 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
    420      || defined __cplusplus || defined _MSC_VER)
     415# elif ! defined YYSIZE_T
    421416#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    422417#  define YYSIZE_T size_t
     
    432427#  if ENABLE_NLS
    433428#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    434 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
     429#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    435430#  endif
    436431# endif
    437432# ifndef YY_
    438 #  define YY_(msgid) msgid
     433#  define YY_(Msgid) Msgid
    439434# endif
    440435#endif
    441436
     437#ifndef YY_ATTRIBUTE
     438# if (defined __GNUC__                                               \
     439      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
     440     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
     441#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
     442# else
     443#  define YY_ATTRIBUTE(Spec) /* empty */
     444# endif
     445#endif
     446
     447#ifndef YY_ATTRIBUTE_PURE
     448# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
     449#endif
     450
     451#ifndef YY_ATTRIBUTE_UNUSED
     452# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
     453#endif
     454
     455#if !defined _Noreturn \
     456     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
     457# if defined _MSC_VER && 1200 <= _MSC_VER
     458#  define _Noreturn __declspec (noreturn)
     459# else
     460#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
     461# endif
     462#endif
     463
    442464/* Suppress unused-variable warnings by "using" E.  */
    443465#if ! defined lint || defined __GNUC__
    444 # define YYUSE(e) ((void) (e))
     466# define YYUSE(E) ((void) (E))
    445467#else
    446 # define YYUSE(e) /* empty */
     468# define YYUSE(E) /* empty */
    447469#endif
    448470
    449 /* Identity function, used to suppress warnings about constant conditions.  */
    450 #ifndef lint
    451 # define YYID(n) (n)
     471#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
     472/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
     473# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     474    _Pragma ("GCC diagnostic push") \
     475    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
     476    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
     477# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
     478    _Pragma ("GCC diagnostic pop")
    452479#else
    453 #if (defined __STDC__ || defined __C99__FUNC__ \
    454      || defined __cplusplus || defined _MSC_VER)
    455 static int
    456 YYID (int yyi)
    457 #else
    458 static int
    459 YYID (yyi)
    460     int yyi;
     480# define YY_INITIAL_VALUE(Value) Value
    461481#endif
    462 {
    463   return yyi;
    464 }
     482#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     483# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     484# define YY_IGNORE_MAYBE_UNINITIALIZED_END
    465485#endif
     486#ifndef YY_INITIAL_VALUE
     487# define YY_INITIAL_VALUE(Value) /* Nothing. */
     488#endif
     489
    466490
    467491#if ! defined yyoverflow || YYERROR_VERBOSE
     
    482506#   else
    483507#    define YYSTACK_ALLOC alloca
    484 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    485      || defined __cplusplus || defined _MSC_VER)
     508#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
    486509#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     510      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    487511#     ifndef EXIT_SUCCESS
    488512#      define EXIT_SUCCESS 0
     
    494518
    495519# ifdef YYSTACK_ALLOC
    496    /* Pacify GCC's `empty if-body' warning.  */
    497 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
     520   /* Pacify GCC's 'empty if-body' warning.  */
     521#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
    498522#  ifndef YYSTACK_ALLOC_MAXIMUM
    499523    /* The OS might guarantee only one guard page at the bottom of the stack,
     
    511535#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    512536       && ! ((defined YYMALLOC || defined malloc) \
    513              && (defined YYFREE || defined free)))
     537             && (defined YYFREE || defined free)))
    514538#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    515539#   ifndef EXIT_SUCCESS
     
    519543#  ifndef YYMALLOC
    520544#   define YYMALLOC malloc
    521 #   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    522      || defined __cplusplus || defined _MSC_VER)
     545#   if ! defined malloc && ! defined EXIT_SUCCESS
    523546void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    524547#   endif
     
    526549#  ifndef YYFREE
    527550#   define YYFREE free
    528 #   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    529      || defined __cplusplus || defined _MSC_VER)
     551#   if ! defined free && ! defined EXIT_SUCCESS
    530552void free (void *); /* INFRINGES ON USER NAME SPACE */
    531553#   endif
     
    537559#if (! defined yyoverflow \
    538560     && (! defined __cplusplus \
    539         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     561        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    540562
    541563/* A type that is properly aligned for any stack member.  */
     
    562584   stack.  Advance YYPTR to a properly aligned location for the next
    563585   stack.  */
    564 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    565     do                                                                  \
    566       {                                                                 \
    567         YYSIZE_T yynewbytes;                                            \
    568         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
    569         Stack = &yyptr->Stack_alloc;                                    \
    570         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    571         yyptr += yynewbytes / sizeof (*yyptr);                          \
    572       }                                                                 \
    573     while (YYID (0))
     586# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     587    do                                                                  \
     588      {                                                                 \
     589        YYSIZE_T yynewbytes;                                            \
     590        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
     591        Stack = &yyptr->Stack_alloc;                                    \
     592        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
     593        yyptr += yynewbytes / sizeof (*yyptr);                          \
     594      }                                                                 \
     595    while (0)
    574596
    575597#endif
    576598
    577599#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    578 /* Copy COUNT objects from FROM to TO.  The source and destination do
     600/* Copy COUNT objects from SRC to DST.  The source and destination do
    579601   not overlap.  */
    580602# ifndef YYCOPY
    581603#  if defined __GNUC__ && 1 < __GNUC__
    582 #   define YYCOPY(To, From, Count) \
    583       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
     604#   define YYCOPY(Dst, Src, Count) \
     605      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
    584606#  else
    585 #   define YYCOPY(To, From, Count)              \
    586       do                                        \
    587         {                                       \
    588           YYSIZE_T yyi;                         \
    589           for (yyi = 0; yyi < (Count); yyi++)   \
    590             (To)[yyi] = (From)[yyi];            \
    591         }                                       \
    592       while (YYID (0))
     607#   define YYCOPY(Dst, Src, Count)              \
     608      do                                        \
     609        {                                       \
     610          YYSIZE_T yyi;                         \
     611          for (yyi = 0; yyi < (Count); yyi++)   \
     612            (Dst)[yyi] = (Src)[yyi];            \
     613        }                                       \
     614      while (0)
    593615#  endif
    594616# endif
     
    606628/* YYNRULES -- Number of rules.  */
    607629#define YYNRULES  751
    608 /* YYNRULES -- Number of states.  */
     630/* YYNSTATES -- Number of states.  */
    609631#define YYNSTATES  1555
    610632
    611 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     633/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
     634   by yylex, with out-of-bounds checking.  */
    612635#define YYUNDEFTOK  2
    613636#define YYMAXUTOK   363
    614637
    615 #define YYTRANSLATE(YYX)                                                \
     638#define YYTRANSLATE(YYX)                                                \
    616639  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    617640
    618 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
     641/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
     642   as returned by yylex, without out-of-bounds checking.  */
    619643static const yytype_uint8 yytranslate[] =
    620644{
     
    659683
    660684#if YYDEBUG
    661 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    662    YYRHS.  */
    663 static const yytype_uint16 yyprhs[] =
    664 {
    665        0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    666       17,    19,    21,    23,    25,    27,    29,    31,    33,    36,
    667       38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
    668       86,    89,    92,   100,   105,   107,   111,   112,   114,   116,
    669      120,   122,   126,   134,   138,   146,   148,   150,   152,   155,
    670      158,   161,   164,   167,   170,   175,   178,   183,   190,   192,
    671      197,   202,   204,   206,   208,   210,   212,   214,   216,   221,
    672      226,   228,   232,   236,   240,   242,   246,   250,   252,   256,
    673      260,   262,   266,   270,   274,   278,   280,   284,   288,   290,
    674      294,   296,   300,   302,   306,   308,   312,   314,   318,   320,
    675      326,   331,   337,   339,   341,   345,   348,   349,   351,   353,
    676      355,   357,   359,   361,   363,   365,   367,   369,   371,   373,
    677      375,   378,   384,   391,   399,   401,   405,   407,   411,   412,
    678      414,   416,   418,   420,   422,   424,   426,   428,   430,   437,
    679      442,   445,   453,   455,   459,   461,   464,   466,   469,   471,
    680      474,   477,   483,   491,   497,   507,   513,   523,   525,   529,
    681      531,   533,   537,   541,   544,   546,   549,   552,   553,   555,
    682      558,   562,   563,   565,   568,   572,   576,   581,   582,   584,
    683      586,   589,   595,   603,   610,   617,   622,   626,   631,   634,
    684      638,   641,   645,   649,   653,   657,   663,   667,   671,   676,
    685      678,   684,   691,   697,   704,   714,   725,   735,   746,   749,
    686      751,   754,   757,   760,   762,   769,   778,   789,   802,   817,
    687      818,   820,   821,   823,   825,   829,   834,   842,   843,   845,
    688      849,   851,   855,   857,   859,   861,   865,   867,   869,   871,
    689      875,   876,   878,   882,   887,   889,   893,   895,   897,   901,
    690      905,   909,   913,   917,   920,   924,   931,   935,   939,   944,
    691      946,   949,   952,   956,   962,   971,   979,   987,   993,  1003,
    692     1006,  1009,  1015,  1019,  1025,  1030,  1034,  1039,  1044,  1052,
    693     1056,  1060,  1064,  1068,  1073,  1080,  1082,  1084,  1086,  1088,
    694     1090,  1092,  1094,  1096,  1097,  1099,  1101,  1104,  1106,  1108,
    695     1110,  1112,  1114,  1116,  1118,  1119,  1125,  1127,  1130,  1134,
    696     1136,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
    697     1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
    698     1177,  1179,  1181,  1183,  1186,  1189,  1193,  1197,  1199,  1203,
    699     1205,  1208,  1211,  1214,  1219,  1224,  1229,  1234,  1236,  1239,
    700     1242,  1246,  1248,  1251,  1254,  1256,  1259,  1262,  1266,  1268,
    701     1271,  1274,  1276,  1278,  1283,  1286,  1287,  1294,  1302,  1305,
    702     1308,  1311,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
    703     1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
    704     1363,  1366,  1369,  1375,  1378,  1379,  1387,  1390,  1395,  1396,
    705     1399,  1400,  1402,  1404,  1406,  1412,  1418,  1424,  1426,  1432,
    706     1438,  1448,  1450,  1456,  1457,  1459,  1461,  1467,  1469,  1471,
    707     1477,  1483,  1485,  1489,  1493,  1498,  1500,  1502,  1504,  1506,
    708     1509,  1511,  1515,  1519,  1521,  1524,  1526,  1530,  1532,  1534,
    709     1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1555,
    710     1557,  1559,  1561,  1564,  1565,  1568,  1571,  1573,  1578,  1579,
    711     1581,  1584,  1588,  1593,  1596,  1599,  1601,  1604,  1607,  1613,
    712     1619,  1627,  1634,  1636,  1639,  1642,  1646,  1648,  1651,  1654,
    713     1659,  1662,  1667,  1668,  1673,  1676,  1678,  1680,  1682,  1683,
    714     1686,  1692,  1698,  1712,  1714,  1716,  1720,  1724,  1727,  1731,
    715     1735,  1738,  1743,  1745,  1752,  1762,  1763,  1775,  1777,  1781,
    716     1785,  1789,  1791,  1793,  1799,  1802,  1808,  1809,  1811,  1813,
    717     1817,  1818,  1820,  1822,  1824,  1826,  1827,  1834,  1837,  1839,
    718     1842,  1847,  1850,  1854,  1858,  1862,  1867,  1873,  1879,  1885,
    719     1892,  1894,  1896,  1898,  1902,  1903,  1909,  1910,  1912,  1914,
    720     1917,  1924,  1926,  1930,  1931,  1933,  1938,  1940,  1942,  1944,
    721     1946,  1949,  1951,  1954,  1957,  1959,  1963,  1966,  1970,  1974,
    722     1977,  1982,  1987,  1991,  2000,  2004,  2007,  2009,  2012,  2019,
    723     2028,  2032,  2035,  2039,  2043,  2048,  2053,  2057,  2059,  2061,
    724     2063,  2068,  2075,  2079,  2082,  2086,  2090,  2095,  2100,  2104,
    725     2107,  2109,  2112,  2115,  2117,  2121,  2124,  2128,  2132,  2135,
    726     2140,  2145,  2149,  2156,  2165,  2169,  2172,  2174,  2177,  2180,
    727     2183,  2187,  2191,  2194,  2199,  2204,  2208,  2215,  2224,  2228,
    728     2231,  2233,  2236,  2239,  2241,  2243,  2246,  2250,  2254,  2257,
    729     2262,  2269,  2278,  2280,  2283,  2286,  2288,  2291,  2294,  2298,
    730     2302,  2304,  2309,  2314,  2318,  2324,  2333,  2337,  2340,  2344,
    731     2346,  2352,  2358,  2365,  2372,  2374,  2377,  2380,  2382,  2385,
    732     2388,  2392,  2396,  2398,  2403,  2408,  2412,  2418,  2427,  2431,
    733     2433,  2436,  2438,  2441,  2448,  2454,  2461,  2469,  2477,  2479,
    734     2482,  2485,  2487,  2490,  2493,  2497,  2501,  2503,  2508,  2513,
    735     2517,  2526,  2530,  2532,  2534,  2537,  2539,  2541,  2544,  2548,
    736     2551,  2555,  2558,  2562,  2566,  2569,  2574,  2578,  2581,  2585,
    737     2588,  2593,  2597,  2600,  2607,  2614,  2621,  2629,  2631,  2634,
    738     2636,  2638,  2640,  2643,  2647,  2650,  2654,  2657,  2661,  2665,
    739     2670,  2673,  2677,  2682,  2685,  2691,  2697,  2704,  2711,  2712,
    740     2714,  2715
    741 };
    742 
    743 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
    744 static const yytype_int16 yyrhs[] =
    745 {
    746      302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    747       -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    748       -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,   142,
    749       -1,    82,    -1,   142,    82,    -1,    72,    -1,   140,    -1,
    750      109,   170,   110,    -1,   109,   174,   110,    -1,   143,    -1,
    751      144,   111,   134,   165,   135,   112,    -1,   144,   109,   145,
    752      110,    -1,   144,   113,   139,    -1,   144,   113,   111,   134,
    753      147,   135,   112,    -1,   144,    85,   139,    -1,   144,    85,
    754      111,   134,   147,   135,   112,    -1,   144,    86,    -1,   144,
    755       87,    -1,   109,   275,   110,   114,   279,   372,   115,    -1,
    756      144,   114,   145,   115,    -1,   146,    -1,   145,   116,   146,
    757       -1,    -1,   165,    -1,   148,    -1,   147,   116,   148,    -1,
    758      139,    -1,   139,   113,   148,    -1,   139,   113,   111,   134,
    759      147,   135,   112,    -1,   139,    85,   148,    -1,   139,    85,
    760      111,   134,   147,   135,   112,    -1,   144,    -1,   136,    -1,
    761      141,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
    762       -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
    763       37,   109,   275,   110,    -1,    66,   149,    -1,    66,   109,
    764      275,   110,    -1,    38,   109,   275,   116,   139,   110,    -1,
    765       76,    -1,    76,   109,   146,   110,    -1,    76,   109,   276,
    766      110,    -1,   117,    -1,   118,    -1,   119,    -1,   120,    -1,
    767      121,    -1,   122,    -1,   149,    -1,   109,   275,   110,   152,
    768       -1,   109,   275,   110,   168,    -1,   152,    -1,   153,   117,
    769      152,    -1,   153,   123,   152,    -1,   153,   124,   152,    -1,
    770      153,    -1,   154,   119,   153,    -1,   154,   120,   153,    -1,
    771      154,    -1,   155,    88,   154,    -1,   155,    89,   154,    -1,
    772      155,    -1,   156,   125,   155,    -1,   156,   126,   155,    -1,
    773      156,    90,   155,    -1,   156,    91,   155,    -1,   156,    -1,
    774      157,    92,   156,    -1,   157,    93,   156,    -1,   157,    -1,
    775      158,   118,   157,    -1,   158,    -1,   159,   127,   158,    -1,
    776      159,    -1,   160,   128,   159,    -1,   160,    -1,   161,    94,
    777      160,    -1,   161,    -1,   162,    95,   161,    -1,   162,    -1,
    778      162,   129,   170,   130,   163,    -1,   162,   129,   130,   163,
    779       -1,   162,   129,   170,   130,   168,    -1,   163,    -1,   163,
    780       -1,   149,   167,   165,    -1,   168,   373,    -1,    -1,   165,
    781       -1,   131,    -1,   107,    -1,    97,    -1,    98,    -1,    99,
    782       -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
    783       -1,   105,    -1,   106,    -1,   111,   112,    -1,   111,   134,
    784      165,   135,   112,    -1,   111,   134,   116,   169,   135,   112,
    785       -1,   111,   134,   165,   116,   169,   135,   112,    -1,   166,
    786       -1,   169,   116,   166,    -1,   165,    -1,   170,   116,   165,
    787       -1,    -1,   170,    -1,   173,    -1,   174,    -1,   178,    -1,
    788      179,    -1,   191,    -1,   193,    -1,   194,    -1,   199,    -1,
    789      127,   144,   114,   145,   115,   132,    -1,    72,   130,   312,
    790      172,    -1,   114,   115,    -1,   114,   134,   134,   210,   175,
    791      135,   115,    -1,   176,    -1,   175,   134,   176,    -1,   213,
    792       -1,    40,   213,    -1,   308,    -1,   172,   135,    -1,   172,
    793       -1,   177,   172,    -1,   171,   132,    -1,    41,   109,   170,
    794      110,   172,    -1,    41,   109,   170,   110,   172,    42,   172,
    795       -1,    43,   109,   170,   110,   184,    -1,    43,   109,   170,
    796      110,   114,   134,   206,   185,   115,    -1,    53,   109,   170,
    797      110,   184,    -1,    53,   109,   170,   110,   114,   134,   206,
    798      187,   115,    -1,   164,    -1,   164,    96,   164,    -1,   310,
    799       -1,   180,    -1,   181,   116,   180,    -1,    44,   181,   130,
    800       -1,    45,   130,    -1,   182,    -1,   183,   182,    -1,   183,
    801      172,    -1,    -1,   186,    -1,   183,   177,    -1,   186,   183,
    802      177,    -1,    -1,   188,    -1,   183,   190,    -1,   183,   177,
    803      189,    -1,   188,   183,   190,    -1,   188,   183,   177,   189,
    804       -1,    -1,   190,    -1,    56,    -1,    56,   132,    -1,    47,
    805      109,   170,   110,   172,    -1,    46,   172,    47,   109,   170,
    806      110,   132,    -1,    48,   109,   134,   192,   110,   172,    -1,
    807      171,   135,   132,   171,   132,   171,    -1,   213,   171,   132,
    808      171,    -1,    51,    72,   132,    -1,    51,   117,   170,   132,
    809       -1,    50,   132,    -1,    50,    72,   132,    -1,    49,   132,
    810       -1,    49,    72,   132,    -1,    52,   171,   132,    -1,    61,
    811      166,   132,    -1,    62,   166,   132,    -1,    62,   166,    63,
    812      165,   132,    -1,    57,   174,   195,    -1,    57,   174,   197,
    813       -1,    57,   174,   195,   197,    -1,   196,    -1,    58,   109,
    814       96,   110,   174,    -1,   196,    58,   109,    96,   110,   174,
    815       -1,    59,   109,    96,   110,   174,    -1,   196,    59,   109,
    816       96,   110,   174,    -1,    58,   109,   134,   134,   198,   135,
    817      110,   174,   135,    -1,   196,    58,   109,   134,   134,   198,
    818      135,   110,   174,   135,    -1,    59,   109,   134,   134,   198,
    819      135,   110,   174,   135,    -1,   196,    59,   109,   134,   134,
    820      198,   135,   110,   174,   135,    -1,    60,   174,    -1,   226,
    821       -1,   226,   309,    -1,   226,   357,    -1,   366,   139,    -1,
    822      366,    -1,    64,   200,   109,   141,   110,   132,    -1,    64,
    823      200,   109,   141,   130,   201,   110,   132,    -1,    64,   200,
    824      109,   141,   130,   201,   130,   201,   110,   132,    -1,    64,
    825      200,   109,   141,   130,   201,   130,   201,   130,   204,   110,
    826      132,    -1,    64,   200,    51,   109,   141,   130,   130,   201,
    827      130,   204,   130,   205,   110,   132,    -1,    -1,    11,    -1,
    828       -1,   202,    -1,   203,    -1,   202,   116,   203,    -1,   141,
    829      109,   164,   110,    -1,   111,   164,   112,   141,   109,   164,
    830      110,    -1,    -1,   141,    -1,   204,   116,   141,    -1,   139,
    831       -1,   205,   116,   139,    -1,   135,    -1,   207,    -1,   213,
    832       -1,   207,   134,   213,    -1,   135,    -1,   209,    -1,   223,
    833       -1,   209,   134,   223,    -1,    -1,   211,    -1,    29,   212,
    834      132,    -1,   211,    29,   212,   132,    -1,   274,    -1,   212,
    835      116,   274,    -1,   214,    -1,   223,    -1,   215,   135,   132,
    836       -1,   220,   135,   132,    -1,   217,   135,   132,    -1,   293,
    837      135,   132,    -1,   296,   135,   132,    -1,   216,   277,    -1,
    838      232,   216,   277,    -1,   215,   135,   116,   134,   272,   277,
    839       -1,   367,   272,   311,    -1,   370,   272,   311,    -1,   228,
    840      370,   272,   311,    -1,   218,    -1,   228,   218,    -1,   232,
    841      218,    -1,   232,   228,   218,    -1,   217,   135,   116,   134,
    842      272,    -1,   111,   112,   272,   109,   134,   260,   135,   110,
    843       -1,   370,   272,   109,   134,   260,   135,   110,    -1,   219,
    844      272,   109,   134,   260,   135,   110,    -1,   111,   134,   262,
    845      135,   112,    -1,   111,   134,   262,   135,   116,   134,   263,
    846      135,   112,    -1,     3,   216,    -1,     3,   218,    -1,   220,
    847      135,   116,   134,   139,    -1,     3,   226,   309,    -1,   221,
    848      135,   116,   134,   309,    -1,   228,     3,   226,   309,    -1,
    849      226,     3,   309,    -1,   226,     3,   228,   309,    -1,     3,
    850      139,   131,   165,    -1,   222,   135,   116,   134,   139,   131,
    851      165,    -1,   224,   135,   132,    -1,   221,   135,   132,    -1,
    852      222,   135,   132,    -1,   240,   135,   132,    -1,   225,   309,
    853      311,   277,    -1,   224,   116,   312,   309,   311,   277,    -1,
    854      236,    -1,   240,    -1,   242,    -1,   283,    -1,   237,    -1,
    855      241,    -1,   243,    -1,   284,    -1,    -1,   228,    -1,   229,
    856       -1,   228,   229,    -1,   230,    -1,   314,    -1,    10,    -1,
    857       12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
    858      109,   231,   286,   110,    -1,   233,    -1,   228,   233,    -1,
    859      232,   228,   233,    -1,   234,    -1,   233,   234,    -1,     5,
    860       -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    861       -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
    862       -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    863       -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
    864       -1,   237,    -1,   232,   237,    -1,   236,   234,    -1,   236,
    865      234,   228,    -1,   236,   234,   237,    -1,   238,    -1,   227,
    866      239,   227,    -1,   235,    -1,   228,   235,    -1,   238,   229,
    867       -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
    868      109,   170,   110,    -1,    78,   109,   276,   110,    -1,    78,
    869      109,   170,   110,    -1,   241,    -1,   232,   241,    -1,   240,
    870      234,    -1,   240,   234,   228,    -1,   244,    -1,   228,   244,
    871       -1,   241,   229,    -1,   243,    -1,   232,   243,    -1,   242,
    872      234,    -1,   242,   234,   228,    -1,    74,    -1,   228,    74,
    873       -1,   243,   229,    -1,   245,    -1,   256,    -1,   247,   114,
    874      248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
    875      114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
    876      115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
    877       -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
    878      132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
    879       -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
    880       -1,   226,   252,    -1,   251,   116,   312,   252,    -1,    -1,
    881      254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
    882       -1,   254,    -1,   130,   164,    -1,    30,   312,    -1,   255,
    883      114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
    884      274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
    885      258,   116,   274,   259,    -1,    -1,   131,   164,    -1,    -1,
    886      261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
    887      263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
    888      116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
    889      267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
    890      116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
    891      263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
    892       -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
    893       -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
    894      134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
    895      272,   373,    -1,   228,   370,   272,   373,    -1,   218,    -1,
    896      270,    -1,   362,    -1,   370,    -1,   228,   370,    -1,   371,
    897       -1,   225,   336,   373,    -1,   225,   340,   373,    -1,   225,
    898       -1,   225,   351,    -1,   139,    -1,   271,   116,   139,    -1,
    899      137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
    900       75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
    901      226,    -1,   226,   357,    -1,   366,    -1,   371,    -1,   226,
    902       -1,   226,   345,    -1,    -1,   131,   278,    -1,   107,   278,
    903       -1,   165,    -1,   114,   279,   372,   115,    -1,    -1,   278,
    904       -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
    905      280,   278,    -1,   281,   130,    -1,   274,   130,    -1,   282,
    906       -1,   281,   282,    -1,   113,   274,    -1,   111,   134,   165,
    907      135,   112,    -1,   111,   134,   310,   135,   112,    -1,   111,
    908      134,   164,    96,   164,   135,   112,    -1,   113,   111,   134,
    909      147,   135,   112,    -1,   284,    -1,   232,   284,    -1,   283,
    910      234,    -1,   283,   234,   228,    -1,   285,    -1,   228,   285,
    911       -1,   284,   229,    -1,    75,   109,   292,   110,    -1,   287,
    912      373,    -1,   286,   116,   287,   373,    -1,    -1,   289,   274,
    913      288,   290,    -1,   226,   336,    -1,    33,    -1,    35,    -1,
    914       34,    -1,    -1,   290,   291,    -1,   128,   274,   109,   292,
    915      110,    -1,   128,   114,   134,   298,   115,    -1,   128,   109,
    916      134,   286,   135,   110,   114,   134,   298,   115,   109,   292,
    917      110,    -1,   276,    -1,   165,    -1,   292,   116,   276,    -1,
    918      292,   116,   165,    -1,    33,   294,    -1,   233,    33,   294,
    919       -1,   293,   116,   294,    -1,   295,   290,    -1,   295,   290,
    920      131,   276,    -1,   274,    -1,   273,   109,   134,   286,   135,
    921      110,    -1,    36,   274,   109,   134,   286,   135,   110,   114,
    922      115,    -1,    -1,    36,   274,   109,   134,   286,   135,   110,
    923      114,   297,   298,   115,    -1,   299,    -1,   298,   134,   299,
    924       -1,   300,   135,   132,    -1,   301,   135,   132,    -1,   216,
    925       -1,   218,    -1,   300,   135,   116,   134,   272,    -1,   226,
    926      309,    -1,   301,   135,   116,   134,   309,    -1,    -1,   303,
    927       -1,   305,    -1,   303,   134,   305,    -1,    -1,   303,    -1,
    928      213,    -1,   307,    -1,   199,    -1,    -1,     5,    82,   306,
    929      114,   304,   115,    -1,    40,   305,    -1,   308,    -1,   323,
    930      174,    -1,   327,   134,   208,   174,    -1,   217,   174,    -1,
    931      225,   323,   174,    -1,   228,   323,   174,    -1,   232,   323,
    932      174,    -1,   232,   228,   323,   174,    -1,   225,   327,   134,
    933      208,   174,    -1,   228,   327,   134,   208,   174,    -1,   232,
    934      327,   134,   208,   174,    -1,   232,   228,   327,   134,   208,
    935      174,    -1,   318,    -1,   331,    -1,   323,    -1,   164,   122,
    936      164,    -1,    -1,    64,   109,   142,   110,   312,    -1,    -1,
    937      313,    -1,   314,    -1,   313,   314,    -1,    39,   109,   109,
    938      315,   110,   110,    -1,   316,    -1,   315,   116,   316,    -1,
    939       -1,   317,    -1,   317,   109,   171,   110,    -1,   272,    -1,
    940      234,    -1,   235,    -1,   229,    -1,   319,   312,    -1,   320,
    941       -1,   321,   312,    -1,   322,   312,    -1,   137,    -1,   109,
    942      319,   110,    -1,   150,   318,    -1,   150,   228,   318,    -1,
    943      109,   320,   110,    -1,   319,   349,    -1,   109,   320,   110,
    944      349,    -1,   109,   321,   110,   350,    -1,   109,   321,   110,
    945       -1,   109,   320,   110,   109,   134,   264,   135,   110,    -1,
    946      109,   322,   110,    -1,   324,   312,    -1,   325,    -1,   326,
    947      312,    -1,   319,   109,   134,   264,   135,   110,    -1,   109,
    948      325,   110,   109,   134,   264,   135,   110,    -1,   109,   324,
    949      110,    -1,   150,   323,    -1,   150,   228,   323,    -1,   109,
    950      325,   110,    -1,   109,   325,   110,   349,    -1,   109,   326,
    951      110,   350,    -1,   109,   326,   110,    -1,   328,    -1,   329,
    952       -1,   330,    -1,   319,   109,   271,   110,    -1,   109,   329,
    953      110,   109,   271,   110,    -1,   109,   328,   110,    -1,   150,
    954      327,    -1,   150,   228,   327,    -1,   109,   329,   110,    -1,
    955      109,   329,   110,   349,    -1,   109,   330,   110,   350,    -1,
    956      109,   330,   110,    -1,   332,   312,    -1,   333,    -1,   334,
    957      312,    -1,   335,   312,    -1,   341,    -1,   109,   332,   110,
    958       -1,   150,   331,    -1,   150,   228,   331,    -1,   109,   333,
    959      110,    -1,   332,   349,    -1,   109,   333,   110,   349,    -1,
    960      109,   334,   110,   350,    -1,   109,   334,   110,    -1,   332,
    961      109,   134,   264,   135,   110,    -1,   109,   333,   110,   109,
    962      134,   264,   135,   110,    -1,   109,   335,   110,    -1,   319,
    963      312,    -1,   337,    -1,   338,   312,    -1,   339,   312,    -1,
    964      150,   336,    -1,   150,   228,   336,    -1,   109,   337,   110,
    965       -1,   319,   355,    -1,   109,   337,   110,   349,    -1,   109,
    966      338,   110,   350,    -1,   109,   338,   110,    -1,   319,   109,
    967      134,   264,   135,   110,    -1,   109,   337,   110,   109,   134,
    968      264,   135,   110,    -1,   109,   339,   110,    -1,   341,   312,
    969       -1,   342,    -1,   343,   312,    -1,   344,   312,    -1,    74,
    970       -1,    75,    -1,   150,   340,    -1,   150,   228,   340,    -1,
    971      109,   342,   110,    -1,   341,   355,    -1,   109,   342,   110,
    972      355,    -1,   341,   109,   134,   264,   135,   110,    -1,   109,
    973      342,   110,   109,   134,   264,   135,   110,    -1,   346,    -1,
    974      347,   312,    -1,   348,   312,    -1,   150,    -1,   150,   228,
    975       -1,   150,   345,    -1,   150,   228,   345,    -1,   109,   346,
    976      110,    -1,   349,    -1,   109,   346,   110,   349,    -1,   109,
    977      347,   110,   350,    -1,   109,   347,   110,    -1,   109,   134,
    978      264,   135,   110,    -1,   109,   346,   110,   109,   134,   264,
    979      135,   110,    -1,   109,   348,   110,    -1,   111,   112,    -1,
    980      111,   112,   350,    -1,   350,    -1,   111,   134,   165,   135,
    981      112,    -1,   111,   134,   117,   135,   112,    -1,   350,   111,
    982      134,   165,   135,   112,    -1,   350,   111,   134,   117,   135,
    983      112,    -1,   352,    -1,   353,   312,    -1,   354,   312,    -1,
    984      150,    -1,   150,   228,    -1,   150,   351,    -1,   150,   228,
    985      351,    -1,   109,   352,   110,    -1,   355,    -1,   109,   352,
    986      110,   355,    -1,   109,   353,   110,   350,    -1,   109,   353,
    987      110,    -1,   109,   134,   264,   135,   110,    -1,   109,   352,
    988      110,   109,   134,   264,   135,   110,    -1,   109,   354,   110,
    989       -1,   356,    -1,   356,   350,    -1,   350,    -1,   111,   112,
    990       -1,   111,   134,   228,   117,   135,   112,    -1,   111,   134,
    991      228,   135,   112,    -1,   111,   134,   228,   165,   135,   112,
    992       -1,   111,   134,     7,   227,   165,   135,   112,    -1,   111,
    993      134,   228,     7,   165,   135,   112,    -1,   358,    -1,   359,
    994      312,    -1,   360,   312,    -1,   150,    -1,   150,   228,    -1,
    995      150,   357,    -1,   150,   228,   357,    -1,   109,   358,   110,
    996       -1,   349,    -1,   109,   358,   110,   349,    -1,   109,   359,
    997      110,   350,    -1,   109,   359,   110,    -1,   109,   358,   110,
    998      109,   134,   264,   135,   110,    -1,   109,   360,   110,    -1,
    999      362,    -1,   370,    -1,   228,   370,    -1,   363,    -1,   364,
    1000       -1,   150,   226,    -1,   228,   150,   226,    -1,   150,   371,
    1001       -1,   228,   150,   371,    -1,   150,   361,    -1,   228,   150,
    1002      361,    -1,   111,   112,   226,    -1,   365,   226,    -1,   111,
    1003      112,   350,   226,    -1,   365,   350,   226,    -1,   350,   226,
    1004       -1,   111,   112,   363,    -1,   365,   363,    -1,   111,   112,
    1005      350,   363,    -1,   365,   350,   363,    -1,   350,   363,    -1,
    1006      111,   134,   228,   117,   135,   112,    -1,   111,   134,   228,
    1007      165,   135,   112,    -1,   111,   134,   232,   165,   135,   112,
    1008       -1,   111,   134,   232,   228,   165,   135,   112,    -1,   370,
    1009       -1,   228,   370,    -1,   367,    -1,   368,    -1,   369,    -1,
    1010      150,   226,    -1,   228,   150,   226,    -1,   150,   371,    -1,
    1011      228,   150,   371,    -1,   150,   366,    -1,   228,   150,   366,
    1012       -1,   111,   112,   226,    -1,   111,   112,   350,   226,    -1,
    1013      350,   226,    -1,   111,   112,   368,    -1,   111,   112,   350,
    1014      368,    -1,   350,   368,    -1,   111,   134,   263,   135,   112,
    1015       -1,   111,   112,   109,   260,   110,    -1,   370,   109,   134,
    1016      260,   135,   110,    -1,   219,   109,   134,   260,   135,   110,
    1017       -1,    -1,   116,    -1,    -1,   131,   165,    -1
    1018 };
    1019 
    1020 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
     685  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
    1021686static const yytype_uint16 yyrline[] =
    1022687{
     
    1100765#endif
    1101766
    1102 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     767#if YYDEBUG || YYERROR_VERBOSE || 0
    1103768/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    1104769   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     
    1209874  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
    1210875  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
    1211   "comma_opt", "assignment_opt", 0
     876  "comma_opt", "assignment_opt", YY_NULLPTR
    1212877};
    1213878#endif
    1214879
    1215880# ifdef YYPRINT
    1216 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    1217    token YYLEX-NUM.  */
     881/* YYTOKNUM[NUM] -- (External) token number corresponding to the
     882   (internal) symbol number NUM (which must be that of a token).  */
    1218883static const yytype_uint16 yytoknum[] =
    1219884{
     
    1235900# endif
    1236901
    1237 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
    1238 static const yytype_uint16 yyr1[] =
     902#define YYPACT_NINF -1323
     903
     904#define yypact_value_is_default(Yystate) \
     905  (!!((Yystate) == (-1323)))
     906
     907#define YYTABLE_NINF -522
     908
     909#define yytable_value_is_error(Yytable_value) \
     910  0
     911
     912  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     913     STATE-NUM.  */
     914static const yytype_int16 yypact[] =
    1239915{
    1240        0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
    1241      138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
    1242      143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
    1243      144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
    1244      148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
    1245      149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
    1246      149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
    1247      153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
    1248      156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
    1249      159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
    1250      163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
    1251      167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
    1252      168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
    1253      172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
    1254      174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
    1255      178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
    1256      181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
    1257      186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
    1258      190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
    1259      193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
    1260      195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
    1261      198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
    1262      200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
    1263      205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
    1264      210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
    1265      214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
    1266      217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
    1267      220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
    1268      223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
    1269      226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
    1270      230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
    1271      233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
    1272      235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
    1273      235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
    1274      238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
    1275      240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
    1276      243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
    1277      247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
    1278      250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
    1279      254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
    1280      260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
    1281      262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
    1282      266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
    1283      268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
    1284      273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
    1285      276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
    1286      279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
    1287      282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
    1288      286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
    1289      291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
    1290      294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
    1291      299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
    1292      304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
    1293      307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
    1294      309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
    1295      314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
    1296      318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
    1297      321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
    1298      324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
    1299      328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
    1300      331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
    1301      334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
    1302      337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
    1303      340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
    1304      344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
    1305      347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
    1306      350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
    1307      352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
    1308      355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
    1309      357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
    1310      360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
    1311      363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
    1312      364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
    1313      367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
    1314      369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
    1315      373,   373
     916    7329,  8828, -1323,    37, -1323, -1323, -1323, -1323, -1323, -1323,
     917   -1323,   109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     918   -1323, -1323, -1323, -1323, -1323, -1323,    85,    85,    85,   873,
     919     733,   178,  7561,   370, -1323, -1323, -1323, -1323, -1323,   191,
     920   -1323, -1323, -1323,   614,   225, -1323, -1323, -1323, -1323,  4615,
     921   -1323, -1323, -1323, -1323,   229,   285, -1323,   934, -1323, -1323,
     922   -1323, -1323,   435,  1196,   579,   110,  7677, -1323, -1323,  4858,
     923    1038, -1323, -1323,   580,   596,  6761,  1021,   875,   580,  1103,
     924   -1323, -1323,  1317,   308, -1323,   580,  1224, -1323,   495, -1323,
     925     616,   623, -1323, -1323, -1323, -1323,   547,   285,    85, -1323,
     926      85, -1323, -1323, -1323, -1323,  9174,   934, -1323, -1323,   934,
     927   -1323,   551, -1323,  9403, -1323, -1323,  1899,  9436, -1323,   844,
     928     844,   844, -1323, -1323, -1323,    85, -1323, -1323, -1323,   584,
     929     608,   632, -1323, -1323, -1323,   646, -1323, -1323, -1323, -1323,
     930   -1323,   664,   687, -1323, -1323,   -28,  8797,  2908,   117,   701,
     931     717,   726,   771,   786,   799,  8715,  6849,   731,   757, -1323,
     932    5600, -1323, -1323, -1323, -1323,   804, -1323,   223,  5225,  5225,
     933   -1323,   802,   365, -1323, -1323, -1323, -1323,   816,   443,   480,
     934     534,    85,   827, -1323, -1323,  1196,  4341,   868, -1323,    50,
     935   -1323,    85,    85,   285, -1323, -1323,    61, -1323,    85,    85,
     936   -1323,  4647,   857,   864,   844,  6523, -1323, -1323,   869,  4615,
     937   -1323, -1323,   580, -1323, -1323, -1323,   285, -1323,   934,   229,
     938   -1323,  7868, -1323,   844,   844,   844,   285, -1323,   873, -1323,
     939    5676, -1323, -1323,   852,   844, -1323,   844, -1323,   191,  8797,
     940   -1323,   884, -1323,   733,   890,   844, -1323,   873,   888,   892,
     941   -1323,  7561,   631, -1323, -1323, -1323,  9256, -1323, -1323,  9621,
     942   -1323,   868,   151, 10214,  9436,  1899,  4647, -1323,    88, -1323,
     943   -1323,  9403,   934,   891,  7708, -1323, -1323,   347, -1323, 10561,
     944     922,   956, 10347,   945, 10366, 10423, -1323,   954, -1323, -1323,
     945   -1323, -1323, 10442, 10442,  8571,   952, -1323, -1323, -1323, -1323,
     946   -1323, -1323, -1323,   988, -1323,   966,  1946,  8910, 10366, -1323,
     947     756,   338,   485,   411,   635,   955,   947,   957,   984,   237,
     948   -1323, -1323,   962,   647, -1323,   302, -1323, -1323,  2908, -1323,
     949   -1323,   235,   985, -1323,   312,   985,   989,   191, -1323, -1323,
     950     990,  9174, -1323,   999,  1006,  9023, -1323, -1323,  1335,  2030,
     951    8286,  6523,   580, -1323,   580,   844,   844, -1323, -1323, -1323,
     952   -1323, -1323, -1323,   844,  9174,   934, -1323, -1323,  9474,  1575,
     953   -1323,  8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,
     954    5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     955   -1323, -1323, -1323, -1323, -1323, -1323,  1899, -1323,   973,   991,
     956     992,  1012,   978,  1017,  1018,  1020,  4341, -1323, -1323,  1029,
     957     229,  1031, -1323, -1323,  1033, -1323, -1323, -1323,  9256, -1323,
     958   -1323, -1323, -1323, -1323,  4647, -1323,  8797,  8797, -1323,   844,
     959    1899,  6642,   934,  8359, -1323, -1323, -1323, -1323,  9256,   151,
     960   -1323, -1323,   580,   285, -1323, -1323,  9256, -1323,  5770, -1323,
     961   -1323,   844,   844,   337,  8204,  1032,  1036,  1023,  1042,   844,
     962   -1323, -1323, -1323, -1323,  9660, -1323,   367,  6404, -1323,   285,
     963    1044, -1323,  1899, 10643, 10271, -1323, -1323, -1323, -1323,  1015,
     964    4647, -1323,  8432,   868,  7445, -1323, -1323, -1323,   843,   436,
     965     962,   733,  7708,  1341,  9403, -1323,  7708, -1323, -1323, -1323,
     966   -1323,   508, -1323,  1051,   956,   248,  8571, -1323,  9512, -1323,
     967   -1323,  8571, -1323,  8684,  8571, -1323, -1323,  1049, -1323,   606,
     968    1057,   682,  1059, -1323, -1323,  3527,  6492, -1323,   362, -1323,
     969   -1323, 10214, -1323,   368, 10214, -1323, -1323, -1323, -1323, -1323,
     970   -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323,
     971   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,
     972   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,  3593, 10214,
     973   -1323,   647,  1677, -1323, -1323,    85,    85, -1323, -1323,  8797,
     974   -1323, -1323,  1033,   631, -1323,  1033, 10290, -1323, -1323, -1323,
     975    5046,  6492,  1060,  1063, -1323,  9436, -1323, -1323,   804, -1323,
     976    1067,   750,  1068,  2627,   125,   962, -1323,    85,    85,   962,
     977     132, -1323,    85,    85,  1033, -1323, -1323,    85,    85, -1323,
     978     985,  9545,   934, 10788,   532,   656,  9545, -1323,  9621, -1323,
     979     962, -1323,  9174, -1323,   238,  7983,  7983,  7983,   934, -1323,
     980    5791,  1047,  1008,   493,  1058,  1061, -1323,  1076,  5225,   528,
     981   -1323,  1165,   934,  7983,   631,  1899,   631,   868,   430,   985,
     982   -1323, -1323,   536,   985, -1323, -1323, -1323,   956, -1323,   985,
     983     285,  9660, -1323,   619,  1086,   633,  1088, -1323,  1087,   285,
     984   -1323, -1323,  9256,   285,  1089,  9512,  1092, -1323,  1065, -1323,
     985     538,   552,   733, -1323,   733,  1085, 10366, -1323,   733, 10788,
     986   -1323, -1323,  1096, -1323, -1323, -1323,   631, -1323, 10716,  1006,
     987   -1323,  7983,   703,  8286, -1323, -1323,   804,  1095,  1098,   843,
     988    5016, -1323, -1323,  7708, -1323, -1323,  1091, -1323, -1323,  1102,
     989   -1323,  1091,  1104, 10561, 10214,  1090,  1093,    94,  1109,  1107,
     990    1111,  1114, -1323,  1118,  1129,  9365,  6611, -1323, 10214, -1323,
     991     682,  1717, -1323, -1323, -1323,    85,    85, 10157, 10214,  1125,
     992   -1323, -1323,   653, -1323, 10214, -1323, -1323,   736, -1323, -1323,
     993   -1323, -1323,   756,   756,   338,   338,   485,   485,   485,   485,
     994     411,   411,   635,   955,   947,   957,   984, 10366,   260, -1323,
     995    9660,  1132,  1136,  1137,  1677, -1323, -1323, -1323, -1323, -1323,
     996    9660,   708,  7983, -1323,  9174, -1323,  6968,  9136, -1323,  8017,
     997    6849, -1323, -1323,   750,  9660,  1022,  1140,  1141,  1142,  1143,
     998    1146,  1149,  1154, -1323,  3715,  2627, -1323, -1323, -1323, -1323,
     999   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1000   -1323, -1323, -1323,  1033, -1323, -1323, -1323,   962, -1323, -1323,
     1001   -1323, -1323, -1323, -1323, -1323, -1323,  1155, -1323,  1157,  1159,
     1002   -1323, -1323,   229,  1125,  5791, -1323, -1323, -1323,  5958,  1158,
     1003   -1323, -1323, -1323, -1323,   733,  6174,  1248, -1323, -1323, -1323,
     1004   -1323,  1151,   229, -1323, -1323,  1033, -1323, -1323,  1033,    84,
     1005    1033, -1323, -1323, -1323, -1323, -1323, -1323,  9327, -1323,   285,
     1006   -1323, -1323,   559,   562,  9474,  7087,  2137, 10366,  3114, -1323,
     1007   -1323,  1156,    51,  1156, -1323,   733, -1323,    85, -1323, -1323,
     1008    8941,  1023, -1323, -1323, -1323,  1036,  1175,  1171, -1323, -1323,
     1009    1178,  1181, -1323,   703,  1901, -1323,   672, -1323,  5016,   962,
     1010   -1323,  1184,  7708,  9583,  8797,  1185, -1323, -1323,  1180,  1187,
     1011    1170, -1323, 10366,  1197,   326,  1194, -1323,  1202,   631,  1202,
     1012   -1323, -1323,  1202,  1199, -1323,  1208,  1210,  1211,  1717, -1323,
     1013   -1323, -1323,  5958, -1323, -1323, -1323, -1323,  1209, 10214,  1212,
     1014     631, -1323, 10214, -1323,   631, -1323, -1323, 10214, -1323,   558,
     1015     985, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,  1006,
     1016    9023, -1323, -1323,  7206,  1218, -1323,   674,   985, -1323,   813,
     1017     861,   985, -1323,   844,  4029, -1323, -1323, -1323,  9660,  9660,
     1018   -1323,  8359,  8359, -1323,  1215,  1216,  1225,  1230, -1323,  1232,
     1019     685,    82,  1125, -1323,   631, -1323,  5225, -1323, 10214,   564,
     1020   -1323,  6373,  1236,  1240, 10100,  1242,  1243,    70,    79,    96,
     1021   10214,  1244,   285, 10214, 10214,  1227,  1249,   522,  1222, -1323,
     1022   -1323, -1323,  1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1023   -1323, -1323,   733,  1254, 10214, -1323,  9660,  9660,    85,  1257,
     1024   -1323,  9054, -1323, -1323,   752, -1323,  3114, -1323, -1323, -1323,
     1025   -1323,  1065, -1323, -1323,  1255, -1323, -1323, -1323, -1323,  1258,
     1026    1901, -1323, -1323,  1245, -1323,  1091, -1323, -1323,  1899,  1260,
     1027   -1323, -1323, -1323,   713,  1264, -1323,    94,  1269, 10366,  1252,
     1028      94,    94,  1262,  3527,   879,   985, -1323, -1323,  1076, 10214,
     1029    1273,  1209,   358,   204,  1270, -1323, -1323,  1275,  1270, -1323,
     1030   -1323,  1278, -1323, -1323,  1033,  1280,  1284,  6730,  1285,  1290,
     1031    1291, -1323, -1323,  1286, -1323, -1323,  1033, -1323, -1323, -1323,
     1032   -1323,  1033, 10214, 10214,  1006,  1294, -1323, -1323, -1323, -1323,
     1033   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366,
     1034    1300,  1302,  1270, -1323, -1323,   733, -1323, -1323, -1323,  5213,
     1035    9583, 10214, 10214,  1374, 10214, -1323,  1295, -1323,  1296, -1323,
     1036    1297, 10214,  1301, 10214,  1105,  1304,    12,    85,  9289,  1625,
     1037   -1323, -1323,  6174,  1322,   573, -1323, -1323, -1323, -1323, -1323,
     1038   -1323, -1323, -1323, -1323,  9920, -1323,  8432,  1330, -1323, -1323,
     1039    9583,   576,   602, -1323,  1331,  1315,   956,  1337, -1323,   329,
     1040   -1323, -1323, -1323, -1323,  1033,  1339, -1323, -1323,  1320,   486,
     1041     509,   631,  1340, -1323,  1344, -1323,  9660, -1323, -1323, -1323,
     1042   -1323, -1323,  1347, -1323,  9660,  9660,  9660, -1323, -1323,  1348,
     1043   -1323,  1351,  1354,  1355,   716,  8056,  8171, -1323, -1323,   529,
     1044   -1323,  1357,  1362, -1323,  8505,   721,   730,  1358,   761,  3837,
     1045   -1323, -1323, -1323,   605, -1323,   766,  1366,  1367,   285,  1419,
     1046     834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323,
     1047    1370,  1375, -1323, -1323, -1323,  1372, -1323, -1323, -1323, -1323,
     1048   -1323, -1323,  9583,   956,  1379, -1323,  1352,   956,  9660, -1323,
     1049   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
     1050   -1323, -1323, -1323,  1378,  1382, -1323, -1323, -1323, -1323, -1323,
     1051   -1323, -1323,  1387, -1323,  1386, -1323, -1323, 10100,   289, 10214,
     1052   10100, -1323,  1389, 10214, -1323,   318,  1405,  1406, -1323, -1323,
     1053    1399,  1400,  1380, -1323,   821, -1323, -1323, -1323,   934,  1899,
     1054    1396, -1323,   402, 10366, -1323,   785, -1323,   631,   631,  1407,
     1055    1408,  1413,  1415, -1323, -1323,  8359,  1414, -1323,  1490, 10366,
     1056    1385, -1323, -1323, 10012, -1323,   800, -1323,  1402, 10100,  1403,
     1057   -1323, -1323,  1426, -1323,  1427, -1323,  1445,  1446, -1323,  1411,
     1058    9583, -1323, -1323, -1323,   956,   631,  1434,  1417,  1435,  1270,
     1059    1270, -1323, -1323, -1323, -1323, -1323, 10100,   107, -1323,   433,
     1060   -1323, -1323,  7793, -1323, -1323,  1418, 10214, -1323, 10214,  7793,
     1061     285,  9512,   285,  9512,  1436, -1323,  1442, -1323, -1323,  1440,
     1062   -1323, -1323,   825, -1323, -1323, -1323,  1444,  1449, -1323, 10366,
     1063   10366, -1323, -1323,   909,   211, -1323, -1323,  1425, -1323,   909,
     1064   -1323, -1323,  2166,   631, -1323, -1323,   285,  9512,   285,  9512,
     1065    1453,  1431,   631, -1323, -1323, -1323, -1323, 10012,  1443,   909,
     1066    6091, 10214,  9924,  1452,   909,  1454,  2166,  3344, -1323, -1323,
     1067   -1323,  1458, -1323, -1323, -1323, -1323,  8797, -1323, -1323, -1323,
     1068    9791, -1323, 10012, -1323, -1323,  1438,  9703, -1323, -1323,  9924,
     1069     285,  3344,   285,  1464,  1466,   853, -1323,  9791, -1323, -1323,
     1070   -1323,  9703, -1323, -1323, -1323,   285,   285, -1323, -1323, -1323,
     1071   -1323, -1323, -1323, -1323, -1323
    13161072};
    13171073
    1318 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
    1319 static const yytype_uint8 yyr2[] =
    1320 {
    1321        0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    1322        1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1323        1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
    1324        2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
    1325        1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
    1326        2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
    1327        4,     1,     1,     1,     1,     1,     1,     1,     4,     4,
    1328        1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
    1329        1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
    1330        1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
    1331        4,     5,     1,     1,     3,     2,     0,     1,     1,     1,
    1332        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1333        2,     5,     6,     7,     1,     3,     1,     3,     0,     1,
    1334        1,     1,     1,     1,     1,     1,     1,     1,     6,     4,
    1335        2,     7,     1,     3,     1,     2,     1,     2,     1,     2,
    1336        2,     5,     7,     5,     9,     5,     9,     1,     3,     1,
    1337        1,     3,     3,     2,     1,     2,     2,     0,     1,     2,
    1338        3,     0,     1,     2,     3,     3,     4,     0,     1,     1,
    1339        2,     5,     7,     6,     6,     4,     3,     4,     2,     3,
    1340        2,     3,     3,     3,     3,     5,     3,     3,     4,     1,
    1341        5,     6,     5,     6,     9,    10,     9,    10,     2,     1,
    1342        2,     2,     2,     1,     6,     8,    10,    12,    14,     0,
    1343        1,     0,     1,     1,     3,     4,     7,     0,     1,     3,
    1344        1,     3,     1,     1,     1,     3,     1,     1,     1,     3,
    1345        0,     1,     3,     4,     1,     3,     1,     1,     3,     3,
    1346        3,     3,     3,     2,     3,     6,     3,     3,     4,     1,
    1347        2,     2,     3,     5,     8,     7,     7,     5,     9,     2,
    1348        2,     5,     3,     5,     4,     3,     4,     4,     7,     3,
    1349        3,     3,     3,     4,     6,     1,     1,     1,     1,     1,
    1350        1,     1,     1,     0,     1,     1,     2,     1,     1,     1,
    1351        1,     1,     1,     1,     0,     5,     1,     2,     3,     1,
    1352        2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1353        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1354        1,     1,     1,     2,     2,     3,     3,     1,     3,     1,
    1355        2,     2,     2,     4,     4,     4,     4,     1,     2,     2,
    1356        3,     1,     2,     2,     1,     2,     2,     3,     1,     2,
    1357        2,     1,     1,     4,     2,     0,     6,     7,     2,     2,
    1358        2,     0,     2,     2,     3,     2,     3,     1,     2,     3,
    1359        2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
    1360        2,     2,     5,     2,     0,     7,     2,     4,     0,     2,
    1361        0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
    1362        9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
    1363        5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
    1364        1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
    1365        1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1366        1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
    1367        2,     3,     4,     2,     2,     1,     2,     2,     5,     5,
    1368        7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
    1369        2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
    1370        5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
    1371        2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
    1372        3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
    1373        0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
    1374        4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
    1375        1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
    1376        6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
    1377        2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
    1378        4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
    1379        3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
    1380        4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
    1381        1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
    1382        4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
    1383        3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
    1384        1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
    1385        6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
    1386        1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
    1387        5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
    1388        3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
    1389        2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
    1390        2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
    1391        8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
    1392        3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
    1393        4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
    1394        1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
    1395        2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
    1396        0,     2
    1397 };
    1398 
    1399 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
    1400    Performed when YYTABLE doesn't specify something else to do.  Zero
    1401    means the default is an error.  */
     1074  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
     1075     Performed when YYTABLE does not specify something else to do.  Zero
     1076     means the default is an error.  */
    14021077static const yytype_uint16 yydefact[] =
    14031078{
     
    15601235};
    15611236
    1562 /* YYDEFGOTO[NTERM-NUM].  */
     1237  /* YYPGOTO[NTERM-NUM].  */
     1238static const yytype_int16 yypgoto[] =
     1239{
     1240   -1323,  4572,  3263, -1323,   197, -1323,   601,   950,  -251,   910,
     1241   -1323,   521,  -520,  -467,  -853,   -64,  3183,     0, -1323,  -150,
     1242     423,   446,   477,   450,  1016,  1025,  1019,  1026,  1028, -1323,
     1243    -622,  -408,  5012,  -745, -1323,  -735,   604,   472,  -656,   413,
     1244   -1323,  1279, -1323,   374, -1058, -1323, -1323,   126, -1323,  -823,
     1245   -1106,   222, -1323, -1323, -1323, -1323,    58, -1209, -1323, -1323,
     1246   -1323, -1323, -1323, -1323,   301, -1149,    35, -1323,  -933, -1323,
     1247     482,   274, -1323,   159, -1323,  -303, -1323, -1323, -1323,   535,
     1248    -827, -1323, -1323,    15, -1007,    71,    28, -1323, -1323, -1323,
     1249     -21, -1323,   357,  1253,  -198,  1636,  4113, -1323, -1323,    80,
     1250      54,   422,  1473, -1323,  1886, -1323, -1323,   192,  2183, -1323,
     1251    2495,   898, -1323, -1323, -1323,  -638, -1323,   924,   925,   524,
     1252     699,    83, -1323, -1323, -1323,   915,   695,  -339, -1323,  -106,
     1253      34,  1281, -1323, -1323,  -847,  -986,  1046,  1127,  1039,     5,
     1254   -1323,  1536,   481,  -165,  -210,  -124,   651,   758, -1323,   979,
     1255   -1323,  2789,  1548,  -413,   904, -1323, -1323,   689, -1323,  -235,
     1256   -1323,   158, -1323, -1323, -1323, -1257,   401, -1323, -1323, -1323,
     1257    1148, -1323,    21, -1323, -1323,  -858,  -105, -1322,  -129,  2267,
     1258   -1323,  2391, -1323,   906, -1323,  -184,    59,  -180,  -173,  -170,
     1259       7,   -40,   -35,   -33,    60,    -6,    25,    93,  -168,  -164,
     1260    -158,  -147,  -144,  -292,  -471,  -462,  -452,  -551,  -302,  -537,
     1261   -1323, -1323,  -511,  1069,  1072,  1074,  2608,  4844,  -578,  -514,
     1262    -502,  -495,  -500, -1323,  -508,  -724,  -717,  -708,  -590,  -305,
     1263    -195, -1323, -1323,   246,    19,    36, -1323,  3865,   104,  -623,
     1264    -397
     1265};
     1266
     1267  /* YYDEFGOTO[NTERM-NUM].  */
    15631268static const yytype_int16 yydefgoto[] =
    15641269{
     
    15901295};
    15911296
    1592 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    1593    STATE-NUM.  */
    1594 #define YYPACT_NINF -1323
    1595 static const yytype_int16 yypact[] =
    1596 {
    1597     7329,  8828, -1323,    37, -1323, -1323, -1323, -1323, -1323, -1323,
    1598    -1323,   109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1599    -1323, -1323, -1323, -1323, -1323, -1323,    85,    85,    85,   873,
    1600      733,   178,  7561,   370, -1323, -1323, -1323, -1323, -1323,   191,
    1601    -1323, -1323, -1323,   614,   225, -1323, -1323, -1323, -1323,  4615,
    1602    -1323, -1323, -1323, -1323,   229,   285, -1323,   934, -1323, -1323,
    1603    -1323, -1323,   435,  1196,   579,   110,  7677, -1323, -1323,  4858,
    1604     1038, -1323, -1323,   580,   596,  6761,  1021,   875,   580,  1103,
    1605    -1323, -1323,  1317,   308, -1323,   580,  1224, -1323,   495, -1323,
    1606      616,   623, -1323, -1323, -1323, -1323,   547,   285,    85, -1323,
    1607       85, -1323, -1323, -1323, -1323,  9174,   934, -1323, -1323,   934,
    1608    -1323,   551, -1323,  9403, -1323, -1323,  1899,  9436, -1323,   844,
    1609      844,   844, -1323, -1323, -1323,    85, -1323, -1323, -1323,   584,
    1610      608,   632, -1323, -1323, -1323,   646, -1323, -1323, -1323, -1323,
    1611    -1323,   664,   687, -1323, -1323,   -28,  8797,  2908,   117,   701,
    1612      717,   726,   771,   786,   799,  8715,  6849,   731,   757, -1323,
    1613     5600, -1323, -1323, -1323, -1323,   804, -1323,   223,  5225,  5225,
    1614    -1323,   802,   365, -1323, -1323, -1323, -1323,   816,   443,   480,
    1615      534,    85,   827, -1323, -1323,  1196,  4341,   868, -1323,    50,
    1616    -1323,    85,    85,   285, -1323, -1323,    61, -1323,    85,    85,
    1617    -1323,  4647,   857,   864,   844,  6523, -1323, -1323,   869,  4615,
    1618    -1323, -1323,   580, -1323, -1323, -1323,   285, -1323,   934,   229,
    1619    -1323,  7868, -1323,   844,   844,   844,   285, -1323,   873, -1323,
    1620     5676, -1323, -1323,   852,   844, -1323,   844, -1323,   191,  8797,
    1621    -1323,   884, -1323,   733,   890,   844, -1323,   873,   888,   892,
    1622    -1323,  7561,   631, -1323, -1323, -1323,  9256, -1323, -1323,  9621,
    1623    -1323,   868,   151, 10214,  9436,  1899,  4647, -1323,    88, -1323,
    1624    -1323,  9403,   934,   891,  7708, -1323, -1323,   347, -1323, 10561,
    1625      922,   956, 10347,   945, 10366, 10423, -1323,   954, -1323, -1323,
    1626    -1323, -1323, 10442, 10442,  8571,   952, -1323, -1323, -1323, -1323,
    1627    -1323, -1323, -1323,   988, -1323,   966,  1946,  8910, 10366, -1323,
    1628      756,   338,   485,   411,   635,   955,   947,   957,   984,   237,
    1629    -1323, -1323,   962,   647, -1323,   302, -1323, -1323,  2908, -1323,
    1630    -1323,   235,   985, -1323,   312,   985,   989,   191, -1323, -1323,
    1631      990,  9174, -1323,   999,  1006,  9023, -1323, -1323,  1335,  2030,
    1632     8286,  6523,   580, -1323,   580,   844,   844, -1323, -1323, -1323,
    1633    -1323, -1323, -1323,   844,  9174,   934, -1323, -1323,  9474,  1575,
    1634    -1323,  8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,
    1635     5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1636    -1323, -1323, -1323, -1323, -1323, -1323,  1899, -1323,   973,   991,
    1637      992,  1012,   978,  1017,  1018,  1020,  4341, -1323, -1323,  1029,
    1638      229,  1031, -1323, -1323,  1033, -1323, -1323, -1323,  9256, -1323,
    1639    -1323, -1323, -1323, -1323,  4647, -1323,  8797,  8797, -1323,   844,
    1640     1899,  6642,   934,  8359, -1323, -1323, -1323, -1323,  9256,   151,
    1641    -1323, -1323,   580,   285, -1323, -1323,  9256, -1323,  5770, -1323,
    1642    -1323,   844,   844,   337,  8204,  1032,  1036,  1023,  1042,   844,
    1643    -1323, -1323, -1323, -1323,  9660, -1323,   367,  6404, -1323,   285,
    1644     1044, -1323,  1899, 10643, 10271, -1323, -1323, -1323, -1323,  1015,
    1645     4647, -1323,  8432,   868,  7445, -1323, -1323, -1323,   843,   436,
    1646      962,   733,  7708,  1341,  9403, -1323,  7708, -1323, -1323, -1323,
    1647    -1323,   508, -1323,  1051,   956,   248,  8571, -1323,  9512, -1323,
    1648    -1323,  8571, -1323,  8684,  8571, -1323, -1323,  1049, -1323,   606,
    1649     1057,   682,  1059, -1323, -1323,  3527,  6492, -1323,   362, -1323,
    1650    -1323, 10214, -1323,   368, 10214, -1323, -1323, -1323, -1323, -1323,
    1651    -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323,
    1652    10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,
    1653    10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,  3593, 10214,
    1654    -1323,   647,  1677, -1323, -1323,    85,    85, -1323, -1323,  8797,
    1655    -1323, -1323,  1033,   631, -1323,  1033, 10290, -1323, -1323, -1323,
    1656     5046,  6492,  1060,  1063, -1323,  9436, -1323, -1323,   804, -1323,
    1657     1067,   750,  1068,  2627,   125,   962, -1323,    85,    85,   962,
    1658      132, -1323,    85,    85,  1033, -1323, -1323,    85,    85, -1323,
    1659      985,  9545,   934, 10788,   532,   656,  9545, -1323,  9621, -1323,
    1660      962, -1323,  9174, -1323,   238,  7983,  7983,  7983,   934, -1323,
    1661     5791,  1047,  1008,   493,  1058,  1061, -1323,  1076,  5225,   528,
    1662    -1323,  1165,   934,  7983,   631,  1899,   631,   868,   430,   985,
    1663    -1323, -1323,   536,   985, -1323, -1323, -1323,   956, -1323,   985,
    1664      285,  9660, -1323,   619,  1086,   633,  1088, -1323,  1087,   285,
    1665    -1323, -1323,  9256,   285,  1089,  9512,  1092, -1323,  1065, -1323,
    1666      538,   552,   733, -1323,   733,  1085, 10366, -1323,   733, 10788,
    1667    -1323, -1323,  1096, -1323, -1323, -1323,   631, -1323, 10716,  1006,
    1668    -1323,  7983,   703,  8286, -1323, -1323,   804,  1095,  1098,   843,
    1669     5016, -1323, -1323,  7708, -1323, -1323,  1091, -1323, -1323,  1102,
    1670    -1323,  1091,  1104, 10561, 10214,  1090,  1093,    94,  1109,  1107,
    1671     1111,  1114, -1323,  1118,  1129,  9365,  6611, -1323, 10214, -1323,
    1672      682,  1717, -1323, -1323, -1323,    85,    85, 10157, 10214,  1125,
    1673    -1323, -1323,   653, -1323, 10214, -1323, -1323,   736, -1323, -1323,
    1674    -1323, -1323,   756,   756,   338,   338,   485,   485,   485,   485,
    1675      411,   411,   635,   955,   947,   957,   984, 10366,   260, -1323,
    1676     9660,  1132,  1136,  1137,  1677, -1323, -1323, -1323, -1323, -1323,
    1677     9660,   708,  7983, -1323,  9174, -1323,  6968,  9136, -1323,  8017,
    1678     6849, -1323, -1323,   750,  9660,  1022,  1140,  1141,  1142,  1143,
    1679     1146,  1149,  1154, -1323,  3715,  2627, -1323, -1323, -1323, -1323,
    1680    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1681    -1323, -1323, -1323,  1033, -1323, -1323, -1323,   962, -1323, -1323,
    1682    -1323, -1323, -1323, -1323, -1323, -1323,  1155, -1323,  1157,  1159,
    1683    -1323, -1323,   229,  1125,  5791, -1323, -1323, -1323,  5958,  1158,
    1684    -1323, -1323, -1323, -1323,   733,  6174,  1248, -1323, -1323, -1323,
    1685    -1323,  1151,   229, -1323, -1323,  1033, -1323, -1323,  1033,    84,
    1686     1033, -1323, -1323, -1323, -1323, -1323, -1323,  9327, -1323,   285,
    1687    -1323, -1323,   559,   562,  9474,  7087,  2137, 10366,  3114, -1323,
    1688    -1323,  1156,    51,  1156, -1323,   733, -1323,    85, -1323, -1323,
    1689     8941,  1023, -1323, -1323, -1323,  1036,  1175,  1171, -1323, -1323,
    1690     1178,  1181, -1323,   703,  1901, -1323,   672, -1323,  5016,   962,
    1691    -1323,  1184,  7708,  9583,  8797,  1185, -1323, -1323,  1180,  1187,
    1692     1170, -1323, 10366,  1197,   326,  1194, -1323,  1202,   631,  1202,
    1693    -1323, -1323,  1202,  1199, -1323,  1208,  1210,  1211,  1717, -1323,
    1694    -1323, -1323,  5958, -1323, -1323, -1323, -1323,  1209, 10214,  1212,
    1695      631, -1323, 10214, -1323,   631, -1323, -1323, 10214, -1323,   558,
    1696      985, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,  1006,
    1697     9023, -1323, -1323,  7206,  1218, -1323,   674,   985, -1323,   813,
    1698      861,   985, -1323,   844,  4029, -1323, -1323, -1323,  9660,  9660,
    1699    -1323,  8359,  8359, -1323,  1215,  1216,  1225,  1230, -1323,  1232,
    1700      685,    82,  1125, -1323,   631, -1323,  5225, -1323, 10214,   564,
    1701    -1323,  6373,  1236,  1240, 10100,  1242,  1243,    70,    79,    96,
    1702    10214,  1244,   285, 10214, 10214,  1227,  1249,   522,  1222, -1323,
    1703    -1323, -1323,  1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1704    -1323, -1323,   733,  1254, 10214, -1323,  9660,  9660,    85,  1257,
    1705    -1323,  9054, -1323, -1323,   752, -1323,  3114, -1323, -1323, -1323,
    1706    -1323,  1065, -1323, -1323,  1255, -1323, -1323, -1323, -1323,  1258,
    1707     1901, -1323, -1323,  1245, -1323,  1091, -1323, -1323,  1899,  1260,
    1708    -1323, -1323, -1323,   713,  1264, -1323,    94,  1269, 10366,  1252,
    1709       94,    94,  1262,  3527,   879,   985, -1323, -1323,  1076, 10214,
    1710     1273,  1209,   358,   204,  1270, -1323, -1323,  1275,  1270, -1323,
    1711    -1323,  1278, -1323, -1323,  1033,  1280,  1284,  6730,  1285,  1290,
    1712     1291, -1323, -1323,  1286, -1323, -1323,  1033, -1323, -1323, -1323,
    1713    -1323,  1033, 10214, 10214,  1006,  1294, -1323, -1323, -1323, -1323,
    1714    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366,
    1715     1300,  1302,  1270, -1323, -1323,   733, -1323, -1323, -1323,  5213,
    1716     9583, 10214, 10214,  1374, 10214, -1323,  1295, -1323,  1296, -1323,
    1717     1297, 10214,  1301, 10214,  1105,  1304,    12,    85,  9289,  1625,
    1718    -1323, -1323,  6174,  1322,   573, -1323, -1323, -1323, -1323, -1323,
    1719    -1323, -1323, -1323, -1323,  9920, -1323,  8432,  1330, -1323, -1323,
    1720     9583,   576,   602, -1323,  1331,  1315,   956,  1337, -1323,   329,
    1721    -1323, -1323, -1323, -1323,  1033,  1339, -1323, -1323,  1320,   486,
    1722      509,   631,  1340, -1323,  1344, -1323,  9660, -1323, -1323, -1323,
    1723    -1323, -1323,  1347, -1323,  9660,  9660,  9660, -1323, -1323,  1348,
    1724    -1323,  1351,  1354,  1355,   716,  8056,  8171, -1323, -1323,   529,
    1725    -1323,  1357,  1362, -1323,  8505,   721,   730,  1358,   761,  3837,
    1726    -1323, -1323, -1323,   605, -1323,   766,  1366,  1367,   285,  1419,
    1727      834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323,
    1728     1370,  1375, -1323, -1323, -1323,  1372, -1323, -1323, -1323, -1323,
    1729    -1323, -1323,  9583,   956,  1379, -1323,  1352,   956,  9660, -1323,
    1730    -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
    1731    -1323, -1323, -1323,  1378,  1382, -1323, -1323, -1323, -1323, -1323,
    1732    -1323, -1323,  1387, -1323,  1386, -1323, -1323, 10100,   289, 10214,
    1733    10100, -1323,  1389, 10214, -1323,   318,  1405,  1406, -1323, -1323,
    1734     1399,  1400,  1380, -1323,   821, -1323, -1323, -1323,   934,  1899,
    1735     1396, -1323,   402, 10366, -1323,   785, -1323,   631,   631,  1407,
    1736     1408,  1413,  1415, -1323, -1323,  8359,  1414, -1323,  1490, 10366,
    1737     1385, -1323, -1323, 10012, -1323,   800, -1323,  1402, 10100,  1403,
    1738    -1323, -1323,  1426, -1323,  1427, -1323,  1445,  1446, -1323,  1411,
    1739     9583, -1323, -1323, -1323,   956,   631,  1434,  1417,  1435,  1270,
    1740     1270, -1323, -1323, -1323, -1323, -1323, 10100,   107, -1323,   433,
    1741    -1323, -1323,  7793, -1323, -1323,  1418, 10214, -1323, 10214,  7793,
    1742      285,  9512,   285,  9512,  1436, -1323,  1442, -1323, -1323,  1440,
    1743    -1323, -1323,   825, -1323, -1323, -1323,  1444,  1449, -1323, 10366,
    1744    10366, -1323, -1323,   909,   211, -1323, -1323,  1425, -1323,   909,
    1745    -1323, -1323,  2166,   631, -1323, -1323,   285,  9512,   285,  9512,
    1746     1453,  1431,   631, -1323, -1323, -1323, -1323, 10012,  1443,   909,
    1747     6091, 10214,  9924,  1452,   909,  1454,  2166,  3344, -1323, -1323,
    1748    -1323,  1458, -1323, -1323, -1323, -1323,  8797, -1323, -1323, -1323,
    1749     9791, -1323, 10012, -1323, -1323,  1438,  9703, -1323, -1323,  9924,
    1750      285,  3344,   285,  1464,  1466,   853, -1323,  9791, -1323, -1323,
    1751    -1323,  9703, -1323, -1323, -1323,   285,   285, -1323, -1323, -1323,
    1752    -1323, -1323, -1323, -1323, -1323
    1753 };
    1754 
    1755 /* YYPGOTO[NTERM-NUM].  */
    1756 static const yytype_int16 yypgoto[] =
    1757 {
    1758    -1323,  4572,  3263, -1323,   197, -1323,   601,   950,  -251,   910,
    1759    -1323,   521,  -520,  -467,  -853,   -64,  3183,     0, -1323,  -150,
    1760      423,   446,   477,   450,  1016,  1025,  1019,  1026,  1028, -1323,
    1761     -622,  -408,  5012,  -745, -1323,  -735,   604,   472,  -656,   413,
    1762    -1323,  1279, -1323,   374, -1058, -1323, -1323,   126, -1323,  -823,
    1763    -1106,   222, -1323, -1323, -1323, -1323,    58, -1209, -1323, -1323,
    1764    -1323, -1323, -1323, -1323,   301, -1149,    35, -1323,  -933, -1323,
    1765      482,   274, -1323,   159, -1323,  -303, -1323, -1323, -1323,   535,
    1766     -827, -1323, -1323,    15, -1007,    71,    28, -1323, -1323, -1323,
    1767      -21, -1323,   357,  1253,  -198,  1636,  4113, -1323, -1323,    80,
    1768       54,   422,  1473, -1323,  1886, -1323, -1323,   192,  2183, -1323,
    1769     2495,   898, -1323, -1323, -1323,  -638, -1323,   924,   925,   524,
    1770      699,    83, -1323, -1323, -1323,   915,   695,  -339, -1323,  -106,
    1771       34,  1281, -1323, -1323,  -847,  -986,  1046,  1127,  1039,     5,
    1772    -1323,  1536,   481,  -165,  -210,  -124,   651,   758, -1323,   979,
    1773    -1323,  2789,  1548,  -413,   904, -1323, -1323,   689, -1323,  -235,
    1774    -1323,   158, -1323, -1323, -1323, -1257,   401, -1323, -1323, -1323,
    1775     1148, -1323,    21, -1323, -1323,  -858,  -105, -1322,  -129,  2267,
    1776    -1323,  2391, -1323,   906, -1323,  -184,    59,  -180,  -173,  -170,
    1777        7,   -40,   -35,   -33,    60,    -6,    25,    93,  -168,  -164,
    1778     -158,  -147,  -144,  -292,  -471,  -462,  -452,  -551,  -302,  -537,
    1779    -1323, -1323,  -511,  1069,  1072,  1074,  2608,  4844,  -578,  -514,
    1780     -502,  -495,  -500, -1323,  -508,  -724,  -717,  -708,  -590,  -305,
    1781     -195, -1323, -1323,   246,    19,    36, -1323,  3865,   104,  -623,
    1782     -397
    1783 };
    1784 
    1785 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    1786    positive, shift that token.  If negative, reduce the rule which
    1787    number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1788 #define YYTABLE_NINF -522
     1297  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     1298     positive, shift that token.  If negative, reduce the rule whose
     1299     number is the opposite.  If YYTABLE_NINF, syntax error.  */
    17891300static const yytype_int16 yytable[] =
    17901301{
     
    28782389};
    28792390
    2880 #define yypact_value_is_default(yystate) \
    2881   ((yystate) == (-1323))
    2882 
    2883 #define yytable_value_is_error(yytable_value) \
    2884   YYID (0)
    2885 
    28862391static const yytype_int16 yycheck[] =
    28872392{
     
    39753480};
    39763481
    3977 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    3978    symbol of state STATE-NUM.  */
     3482  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     3483     symbol of state STATE-NUM.  */
    39793484static const yytype_uint16 yystos[] =
    39803485{
     
    41373642};
    41383643
    4139 #define yyerrok         (yyerrstatus = 0)
    4140 #define yyclearin       (yychar = YYEMPTY)
    4141 #define YYEMPTY         (-2)
    4142 #define YYEOF           0
    4143 
    4144 #define YYACCEPT        goto yyacceptlab
    4145 #define YYABORT         goto yyabortlab
    4146 #define YYERROR         goto yyerrorlab
    4147 
    4148 
    4149 /* Like YYERROR except do call yyerror.  This remains here temporarily
    4150    to ease the transition to the new meaning of YYERROR, for GCC.
    4151    Once GCC version 2 has supplanted version 1, this can go.  However,
    4152    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
    4153    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
    4154    discussed.  */
    4155 
    4156 #define YYFAIL          goto yyerrlab
    4157 #if defined YYFAIL
    4158   /* This is here to suppress warnings from the GCC cpp's
    4159      -Wunused-macros.  Normally we don't worry about that warning, but
    4160      some users do, and we want to make it easy for users to remove
    4161      YYFAIL uses, which will produce warnings from Bison 2.5.  */
    4162 #endif
     3644  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
     3645static const yytype_uint16 yyr1[] =
     3646{
     3647       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
     3648     138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
     3649     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
     3650     144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
     3651     148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
     3652     149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
     3653     149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
     3654     153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
     3655     156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
     3656     159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
     3657     163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
     3658     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
     3659     168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
     3660     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
     3661     174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
     3662     178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
     3663     181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
     3664     186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
     3665     190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
     3666     193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
     3667     195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
     3668     198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
     3669     200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
     3670     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
     3671     210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
     3672     214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
     3673     217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
     3674     220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
     3675     223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
     3676     226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
     3677     230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
     3678     233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
     3679     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
     3680     235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
     3681     238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
     3682     240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
     3683     243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
     3684     247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
     3685     250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
     3686     254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
     3687     260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
     3688     262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
     3689     266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
     3690     268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
     3691     273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
     3692     276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
     3693     279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
     3694     282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
     3695     286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
     3696     291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
     3697     294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
     3698     299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
     3699     304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
     3700     307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
     3701     309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
     3702     314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
     3703     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
     3704     321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
     3705     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
     3706     328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
     3707     331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
     3708     334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
     3709     337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
     3710     340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
     3711     344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
     3712     347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
     3713     350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
     3714     352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
     3715     355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
     3716     357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
     3717     360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
     3718     363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
     3719     364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
     3720     367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
     3721     369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
     3722     373,   373
     3723};
     3724
     3725  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
     3726static const yytype_uint8 yyr2[] =
     3727{
     3728       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
     3729       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     3730       1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
     3731       2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
     3732       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
     3733       2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
     3734       4,     1,     1,     1,     1,     1,     1,     1,     4,     4,
     3735       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
     3736       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
     3737       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
     3738       4,     5,     1,     1,     3,     2,     0,     1,     1,     1,
     3739       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     3740       2,     5,     6,     7,     1,     3,     1,     3,     0,     1,
     3741       1,     1,     1,     1,     1,     1,     1,     1,     6,     4,
     3742       2,     7,     1,     3,     1,     2,     1,     2,     1,     2,
     3743       2,     5,     7,     5,     9,     5,     9,     1,     3,     1,
     3744       1,     3,     3,     2,     1,     2,     2,     0,     1,     2,
     3745       3,     0,     1,     2,     3,     3,     4,     0,     1,     1,
     3746       2,     5,     7,     6,     6,     4,     3,     4,     2,     3,
     3747       2,     3,     3,     3,     3,     5,     3,     3,     4,     1,
     3748       5,     6,     5,     6,     9,    10,     9,    10,     2,     1,
     3749       2,     2,     2,     1,     6,     8,    10,    12,    14,     0,
     3750       1,     0,     1,     1,     3,     4,     7,     0,     1,     3,
     3751       1,     3,     1,     1,     1,     3,     1,     1,     1,     3,
     3752       0,     1,     3,     4,     1,     3,     1,     1,     3,     3,
     3753       3,     3,     3,     2,     3,     6,     3,     3,     4,     1,
     3754       2,     2,     3,     5,     8,     7,     7,     5,     9,     2,
     3755       2,     5,     3,     5,     4,     3,     4,     4,     7,     3,
     3756       3,     3,     3,     4,     6,     1,     1,     1,     1,     1,
     3757       1,     1,     1,     0,     1,     1,     2,     1,     1,     1,
     3758       1,     1,     1,     1,     0,     5,     1,     2,     3,     1,
     3759       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     3760       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     3761       1,     1,     1,     2,     2,     3,     3,     1,     3,     1,
     3762       2,     2,     2,     4,     4,     4,     4,     1,     2,     2,
     3763       3,     1,     2,     2,     1,     2,     2,     3,     1,     2,
     3764       2,     1,     1,     4,     2,     0,     6,     7,     2,     2,
     3765       2,     0,     2,     2,     3,     2,     3,     1,     2,     3,
     3766       2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
     3767       2,     2,     5,     2,     0,     7,     2,     4,     0,     2,
     3768       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
     3769       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
     3770       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
     3771       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
     3772       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     3773       1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
     3774       2,     3,     4,     2,     2,     1,     2,     2,     5,     5,
     3775       7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
     3776       2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
     3777       5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
     3778       2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
     3779       3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
     3780       0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
     3781       4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
     3782       1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
     3783       6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
     3784       2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
     3785       4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
     3786       3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
     3787       4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
     3788       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
     3789       4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
     3790       3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
     3791       1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
     3792       6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
     3793       1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
     3794       5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
     3795       3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
     3796       2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
     3797       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
     3798       8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
     3799       3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
     3800       4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
     3801       1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
     3802       2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
     3803       0,     2
     3804};
     3805
     3806
     3807#define yyerrok         (yyerrstatus = 0)
     3808#define yyclearin       (yychar = YYEMPTY)
     3809#define YYEMPTY         (-2)
     3810#define YYEOF           0
     3811
     3812#define YYACCEPT        goto yyacceptlab
     3813#define YYABORT         goto yyabortlab
     3814#define YYERROR         goto yyerrorlab
     3815
    41633816
    41643817#define YYRECOVERING()  (!!yyerrstatus)
    41653818
    4166 #define YYBACKUP(Token, Value)                                  \
    4167 do                                                              \
    4168   if (yychar == YYEMPTY && yylen == 1)                          \
    4169     {                                                           \
    4170       yychar = (Token);                                         \
    4171       yylval = (Value);                                         \
    4172       YYPOPSTACK (1);                                           \
    4173       goto yybackup;                                            \
    4174     }                                                           \
    4175   else                                                          \
    4176     {                                                           \
     3819#define YYBACKUP(Token, Value)                                  \
     3820do                                                              \
     3821  if (yychar == YYEMPTY)                                        \
     3822    {                                                           \
     3823      yychar = (Token);                                         \
     3824      yylval = (Value);                                         \
     3825      YYPOPSTACK (yylen);                                       \
     3826      yystate = *yyssp;                                         \
     3827      goto yybackup;                                            \
     3828    }                                                           \
     3829  else                                                          \
     3830    {                                                           \
    41773831      yyerror (YY_("syntax error: cannot back up")); \
    4178       YYERROR;                                                  \
    4179     }                                                           \
    4180 while (YYID (0))
    4181 
    4182 
    4183 #define YYTERROR        1
    4184 #define YYERRCODE       256
    4185 
    4186 
    4187 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    4188    If N is 0, then set CURRENT to the empty location which ends
    4189    the previous symbol: RHS[0] (always defined).  */
    4190 
    4191 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
    4192 #ifndef YYLLOC_DEFAULT
    4193 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
    4194     do                                                                  \
    4195       if (YYID (N))                                                    \
    4196         {                                                               \
    4197           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
    4198           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
    4199           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
    4200           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
    4201         }                                                               \
    4202       else                                                              \
    4203         {                                                               \
    4204           (Current).first_line   = (Current).last_line   =              \
    4205             YYRHSLOC (Rhs, 0).last_line;                                \
    4206           (Current).first_column = (Current).last_column =              \
    4207             YYRHSLOC (Rhs, 0).last_column;                              \
    4208         }                                                               \
    4209     while (YYID (0))
    4210 #endif
    4211 
    4212 
    4213 /* This macro is provided for backward compatibility. */
    4214 
    4215 #ifndef YY_LOCATION_PRINT
    4216 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
    4217 #endif
    4218 
    4219 
    4220 /* YYLEX -- calling `yylex' with the right arguments.  */
    4221 
    4222 #ifdef YYLEX_PARAM
    4223 # define YYLEX yylex (YYLEX_PARAM)
    4224 #else
    4225 # define YYLEX yylex ()
    4226 #endif
     3832      YYERROR;                                                  \
     3833    }                                                           \
     3834while (0)
     3835
     3836/* Error token number */
     3837#define YYTERROR        1
     3838#define YYERRCODE       256
     3839
     3840
    42273841
    42283842/* Enable debugging if requested.  */
     
    42343848# endif
    42353849
    4236 # define YYDPRINTF(Args)                        \
    4237 do {                                            \
    4238   if (yydebug)                                  \
    4239     YYFPRINTF Args;                             \
    4240 } while (YYID (0))
    4241 
    4242 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
    4243 do {                                                                      \
    4244   if (yydebug)                                                            \
    4245     {                                                                     \
    4246       YYFPRINTF (stderr, "%s ", Title);                                   \
    4247       yy_symbol_print (stderr,                                            \
    4248                   Type, Value); \
    4249       YYFPRINTF (stderr, "\n");                                           \
    4250     }                                                                     \
    4251 } while (YYID (0))
    4252 
    4253 
    4254 /*--------------------------------.
    4255 | Print this symbol on YYOUTPUT.  |
    4256 `--------------------------------*/
    4257 
    4258 /*ARGSUSED*/
    4259 #if (defined __STDC__ || defined __C99__FUNC__ \
    4260      || defined __cplusplus || defined _MSC_VER)
     3850# define YYDPRINTF(Args)                        \
     3851do {                                            \
     3852  if (yydebug)                                  \
     3853    YYFPRINTF Args;                             \
     3854} while (0)
     3855
     3856/* This macro is provided for backward compatibility. */
     3857#ifndef YY_LOCATION_PRINT
     3858# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
     3859#endif
     3860
     3861
     3862# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
     3863do {                                                                      \
     3864  if (yydebug)                                                            \
     3865    {                                                                     \
     3866      YYFPRINTF (stderr, "%s ", Title);                                   \
     3867      yy_symbol_print (stderr,                                            \
     3868                  Type, Value); \
     3869      YYFPRINTF (stderr, "\n");                                           \
     3870    }                                                                     \
     3871} while (0)
     3872
     3873
     3874/*----------------------------------------.
     3875| Print this symbol's value on YYOUTPUT.  |
     3876`----------------------------------------*/
     3877
    42613878static void
    42623879yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
    4263 #else
    4264 static void
    4265 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
    4266     FILE *yyoutput;
    4267     int yytype;
    4268     YYSTYPE const * const yyvaluep;
    4269 #endif
    42703880{
     3881  FILE *yyo = yyoutput;
     3882  YYUSE (yyo);
    42713883  if (!yyvaluep)
    42723884    return;
     
    42743886  if (yytype < YYNTOKENS)
    42753887    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
    4276 # else
    4277   YYUSE (yyoutput);
    42783888# endif
    4279   switch (yytype)
    4280     {
    4281       default:
    4282         break;
    4283     }
     3889  YYUSE (yytype);
    42843890}
    42853891
     
    42893895`--------------------------------*/
    42903896
    4291 #if (defined __STDC__ || defined __C99__FUNC__ \
    4292      || defined __cplusplus || defined _MSC_VER)
    42933897static void
    42943898yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
    4295 #else
    4296 static void
    4297 yy_symbol_print (yyoutput, yytype, yyvaluep)
    4298     FILE *yyoutput;
    4299     int yytype;
    4300     YYSTYPE const * const yyvaluep;
    4301 #endif
    43023899{
    4303   if (yytype < YYNTOKENS)
    4304     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
    4305   else
    4306     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
     3900  YYFPRINTF (yyoutput, "%s %s (",
     3901             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
    43073902
    43083903  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
     
    43153910`------------------------------------------------------------------*/
    43163911
    4317 #if (defined __STDC__ || defined __C99__FUNC__ \
    4318      || defined __cplusplus || defined _MSC_VER)
    43193912static void
    43203913yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
    4321 #else
    4322 static void
    4323 yy_stack_print (yybottom, yytop)
    4324     yytype_int16 *yybottom;
    4325     yytype_int16 *yytop;
    4326 #endif
    43273914{
    43283915  YYFPRINTF (stderr, "Stack now");
     
    43353922}
    43363923
    4337 # define YY_STACK_PRINT(Bottom, Top)                            \
    4338 do {                                                            \
    4339   if (yydebug)                                                  \
    4340     yy_stack_print ((Bottom), (Top));                           \
    4341 } while (YYID (0))
     3924# define YY_STACK_PRINT(Bottom, Top)                            \
     3925do {                                                            \
     3926  if (yydebug)                                                  \
     3927    yy_stack_print ((Bottom), (Top));                           \
     3928} while (0)
    43423929
    43433930
     
    43463933`------------------------------------------------*/
    43473934
    4348 #if (defined __STDC__ || defined __C99__FUNC__ \
    4349      || defined __cplusplus || defined _MSC_VER)
    43503935static void
    4351 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
    4352 #else
    4353 static void
    4354 yy_reduce_print (yyvsp, yyrule)
    4355     YYSTYPE *yyvsp;
    4356     int yyrule;
    4357 #endif
     3936yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
    43583937{
     3938  unsigned long int yylno = yyrline[yyrule];
    43593939  int yynrhs = yyr2[yyrule];
    43603940  int yyi;
    4361   unsigned long int yylno = yyrline[yyrule];
    43623941  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
    4363              yyrule - 1, yylno);
     3942             yyrule - 1, yylno);
    43643943  /* The symbols being reduced.  */
    43653944  for (yyi = 0; yyi < yynrhs; yyi++)
    43663945    {
    43673946      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
    4368       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
    4369                        &(yyvsp[(yyi + 1) - (yynrhs)])
    4370                                        );
     3947      yy_symbol_print (stderr,
     3948                       yystos[yyssp[yyi + 1 - yynrhs]],
     3949                       &(yyvsp[(yyi + 1) - (yynrhs)])
     3950                                              );
    43713951      YYFPRINTF (stderr, "\n");
    43723952    }
    43733953}
    43743954
    4375 # define YY_REDUCE_PRINT(Rule)          \
    4376 do {                                    \
    4377   if (yydebug)                          \
    4378     yy_reduce_print (yyvsp, Rule); \
    4379 } while (YYID (0))
     3955# define YY_REDUCE_PRINT(Rule)          \
     3956do {                                    \
     3957  if (yydebug)                          \
     3958    yy_reduce_print (yyssp, yyvsp, Rule); \
     3959} while (0)
    43803960
    43813961/* Nonzero means print parse trace.  It is left uninitialized so that
     
    43913971
    43923972/* YYINITDEPTH -- initial size of the parser's stacks.  */
    4393 #ifndef YYINITDEPTH
     3973#ifndef YYINITDEPTH
    43943974# define YYINITDEPTH 200
    43953975#endif
     
    44143994#  else
    44153995/* Return the length of YYSTR.  */
    4416 #if (defined __STDC__ || defined __C99__FUNC__ \
    4417      || defined __cplusplus || defined _MSC_VER)
    44183996static YYSIZE_T
    44193997yystrlen (const char *yystr)
    4420 #else
    4421 static YYSIZE_T
    4422 yystrlen (yystr)
    4423     const char *yystr;
    4424 #endif
    44253998{
    44263999  YYSIZE_T yylen;
     
    44384011/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    44394012   YYDEST.  */
    4440 #if (defined __STDC__ || defined __C99__FUNC__ \
    4441      || defined __cplusplus || defined _MSC_VER)
    44424013static char *
    44434014yystpcpy (char *yydest, const char *yysrc)
    4444 #else
    4445 static char *
    4446 yystpcpy (yydest, yysrc)
    4447     char *yydest;
    4448     const char *yysrc;
    4449 #endif
    44504015{
    44514016  char *yyd = yydest;
     
    44774042
    44784043      for (;;)
    4479         switch (*++yyp)
    4480           {
    4481           case '\'':
    4482           case ',':
    4483             goto do_not_strip_quotes;
    4484 
    4485           case '\\':
    4486             if (*++yyp != '\\')
    4487               goto do_not_strip_quotes;
    4488             /* Fall through.  */
    4489           default:
    4490             if (yyres)
    4491               yyres[yyn] = *yyp;
    4492             yyn++;
    4493             break;
    4494 
    4495           case '"':
    4496             if (yyres)
    4497               yyres[yyn] = '\0';
    4498             return yyn;
    4499           }
     4044        switch (*++yyp)
     4045          {
     4046          case '\'':
     4047          case ',':
     4048            goto do_not_strip_quotes;
     4049
     4050          case '\\':
     4051            if (*++yyp != '\\')
     4052              goto do_not_strip_quotes;
     4053            /* Fall through.  */
     4054          default:
     4055            if (yyres)
     4056              yyres[yyn] = *yyp;
     4057            yyn++;
     4058            break;
     4059
     4060          case '"':
     4061            if (yyres)
     4062              yyres[yyn] = '\0';
     4063            return yyn;
     4064          }
    45004065    do_not_strip_quotes: ;
    45014066    }
     
    45204085                yytype_int16 *yyssp, int yytoken)
    45214086{
    4522   YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
     4087  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
    45234088  YYSIZE_T yysize = yysize0;
    4524   YYSIZE_T yysize1;
    45254089  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
    45264090  /* Internationalized format string. */
    4527   const char *yyformat = 0;
     4091  const char *yyformat = YY_NULLPTR;
    45284092  /* Arguments of yyformat. */
    45294093  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
     
    45334097
    45344098  /* There are many possibilities here to consider:
    4535      - Assume YYFAIL is not used.  It's too flawed to consider.  See
    4536        <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
    4537        for details.  YYERROR is fine as it does not invoke this
    4538        function.
    45394099     - If this state is a consistent state with a default action, then
    45404100       the only way this function was invoked is if the default action
     
    45854145                  }
    45864146                yyarg[yycount++] = yytname[yyx];
    4587                 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
    4588                 if (! (yysize <= yysize1
    4589                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4590                   return 2;
    4591                 yysize = yysize1;
     4147                {
     4148                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
     4149                  if (! (yysize <= yysize1
     4150                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4151                    return 2;
     4152                  yysize = yysize1;
     4153                }
    45924154              }
    45934155        }
     
    46094171    }
    46104172
    4611   yysize1 = yysize + yystrlen (yyformat);
    4612   if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4613     return 2;
    4614   yysize = yysize1;
     4173  {
     4174    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
     4175    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4176      return 2;
     4177    yysize = yysize1;
     4178  }
    46154179
    46164180  if (*yymsg_alloc < yysize)
     
    46494213`-----------------------------------------------*/
    46504214
    4651 /*ARGSUSED*/
    4652 #if (defined __STDC__ || defined __C99__FUNC__ \
    4653      || defined __cplusplus || defined _MSC_VER)
    46544215static void
    46554216yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
    4656 #else
    4657 static void
    4658 yydestruct (yymsg, yytype, yyvaluep)
    4659     const char *yymsg;
    4660     int yytype;
    4661     YYSTYPE *yyvaluep;
    4662 #endif
    46634217{
    46644218  YYUSE (yyvaluep);
    4665 
    46664219  if (!yymsg)
    46674220    yymsg = "Deleting";
    46684221  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    46694222
    4670   switch (yytype)
    4671     {
    4672 
    4673       default:
    4674         break;
    4675     }
     4223  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     4224  YYUSE (yytype);
     4225  YY_IGNORE_MAYBE_UNINITIALIZED_END
    46764226}
    46774227
    46784228
    4679 /* Prevent warnings from -Wmissing-prototypes.  */
    4680 #ifdef YYPARSE_PARAM
    4681 #if defined __STDC__ || defined __cplusplus
    4682 int yyparse (void *YYPARSE_PARAM);
    4683 #else
    4684 int yyparse ();
    4685 #endif
    4686 #else /* ! YYPARSE_PARAM */
    4687 #if defined __STDC__ || defined __cplusplus
    4688 int yyparse (void);
    4689 #else
    4690 int yyparse ();
    4691 #endif
    4692 #endif /* ! YYPARSE_PARAM */
    46934229
    46944230
     
    46984234/* The semantic value of the lookahead symbol.  */
    46994235YYSTYPE yylval;
    4700 
    47014236/* Number of syntax errors so far.  */
    47024237int yynerrs;
     
    47074242`----------*/
    47084243
    4709 #ifdef YYPARSE_PARAM
    4710 #if (defined __STDC__ || defined __C99__FUNC__ \
    4711      || defined __cplusplus || defined _MSC_VER)
    4712 int
    4713 yyparse (void *YYPARSE_PARAM)
    4714 #else
    4715 int
    4716 yyparse (YYPARSE_PARAM)
    4717     void *YYPARSE_PARAM;
    4718 #endif
    4719 #else /* ! YYPARSE_PARAM */
    4720 #if (defined __STDC__ || defined __C99__FUNC__ \
    4721      || defined __cplusplus || defined _MSC_VER)
    47224244int
    47234245yyparse (void)
    4724 #else
    4725 int
    4726 yyparse ()
    4727 
    4728 #endif
    4729 #endif
    47304246{
    47314247    int yystate;
     
    47344250
    47354251    /* The stacks and their tools:
    4736        `yyss': related to states.
    4737        `yyvs': related to semantic values.
    4738 
    4739        Refer to the stacks thru separate pointers, to allow yyoverflow
     4252       'yyss': related to states.
     4253       'yyvs': related to semantic values.
     4254
     4255       Refer to the stacks through separate pointers, to allow yyoverflow
    47404256       to reallocate them elsewhere.  */
    47414257
     
    47554271  int yyresult;
    47564272  /* Lookahead token as an internal (translated) token number.  */
    4757   int yytoken;
     4273  int yytoken = 0;
    47584274  /* The variables used to return semantic value and location from the
    47594275     action routines.  */
     
    47734289  int yylen = 0;
    47744290
    4775   yytoken = 0;
    4776   yyss = yyssa;
    4777   yyvs = yyvsa;
     4291  yyssp = yyss = yyssa;
     4292  yyvsp = yyvs = yyvsa;
    47784293  yystacksize = YYINITDEPTH;
    47794294
     
    47844299  yynerrs = 0;
    47854300  yychar = YYEMPTY; /* Cause a token to be read.  */
    4786 
    4787   /* Initialize stack pointers.
    4788      Waste one element of value and location stack
    4789      so that they stay on the same level as the state stack.
    4790      The wasted elements are never initialized.  */
    4791   yyssp = yyss;
    4792   yyvsp = yyvs;
    4793 
    47944301  goto yysetstate;
    47954302
     
    48124319#ifdef yyoverflow
    48134320      {
    4814         /* Give user a chance to reallocate the stack.  Use copies of
    4815            these so that the &'s don't force the real ones into
    4816            memory.  */
    4817         YYSTYPE *yyvs1 = yyvs;
    4818         yytype_int16 *yyss1 = yyss;
    4819 
    4820         /* Each stack pointer address is followed by the size of the
    4821            data in use in that stack, in bytes.  This used to be a
    4822            conditional around just the two extra args, but that might
    4823            be undefined if yyoverflow is a macro.  */
    4824         yyoverflow (YY_("memory exhausted"),
    4825                     &yyss1, yysize * sizeof (*yyssp),
    4826                     &yyvs1, yysize * sizeof (*yyvsp),
    4827                     &yystacksize);
    4828 
    4829         yyss = yyss1;
    4830         yyvs = yyvs1;
     4321        /* Give user a chance to reallocate the stack.  Use copies of
     4322           these so that the &'s don't force the real ones into
     4323           memory.  */
     4324        YYSTYPE *yyvs1 = yyvs;
     4325        yytype_int16 *yyss1 = yyss;
     4326
     4327        /* Each stack pointer address is followed by the size of the
     4328           data in use in that stack, in bytes.  This used to be a
     4329           conditional around just the two extra args, but that might
     4330           be undefined if yyoverflow is a macro.  */
     4331        yyoverflow (YY_("memory exhausted"),
     4332                    &yyss1, yysize * sizeof (*yyssp),
     4333                    &yyvs1, yysize * sizeof (*yyvsp),
     4334                    &yystacksize);
     4335
     4336        yyss = yyss1;
     4337        yyvs = yyvs1;
    48314338      }
    48324339#else /* no yyoverflow */
     
    48364343      /* Extend the stack our own way.  */
    48374344      if (YYMAXDEPTH <= yystacksize)
    4838         goto yyexhaustedlab;
     4345        goto yyexhaustedlab;
    48394346      yystacksize *= 2;
    48404347      if (YYMAXDEPTH < yystacksize)
    4841         yystacksize = YYMAXDEPTH;
     4348        yystacksize = YYMAXDEPTH;
    48424349
    48434350      {
    4844         yytype_int16 *yyss1 = yyss;
    4845         union yyalloc *yyptr =
    4846           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
    4847         if (! yyptr)
    4848           goto yyexhaustedlab;
    4849         YYSTACK_RELOCATE (yyss_alloc, yyss);
    4850         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
     4351        yytype_int16 *yyss1 = yyss;
     4352        union yyalloc *yyptr =
     4353          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
     4354        if (! yyptr)
     4355          goto yyexhaustedlab;
     4356        YYSTACK_RELOCATE (yyss_alloc, yyss);
     4357        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
    48514358#  undef YYSTACK_RELOCATE
    4852         if (yyss1 != yyssa)
    4853           YYSTACK_FREE (yyss1);
     4359        if (yyss1 != yyssa)
     4360          YYSTACK_FREE (yyss1);
    48544361      }
    48554362# endif
     
    48604367
    48614368      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
    4862                   (unsigned long int) yystacksize));
     4369                  (unsigned long int) yystacksize));
    48634370
    48644371      if (yyss + yystacksize - 1 <= yyssp)
    4865         YYABORT;
     4372        YYABORT;
    48664373    }
    48674374
     
    48924399    {
    48934400      YYDPRINTF ((stderr, "Reading a token: "));
    4894       yychar = YYLEX;
     4401      yychar = yylex ();
    48954402    }
    48964403
     
    49324439
    49334440  yystate = yyn;
     4441  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    49344442  *++yyvsp = yylval;
     4443  YY_IGNORE_MAYBE_UNINITIALIZED_END
    49354444
    49364445  goto yynewstate;
     
    49554464
    49564465  /* If YYLEN is nonzero, implement the default value of the action:
    4957      `$$ = $1'.
     4466     '$$ = $1'.
    49584467
    49594468     Otherwise, the following line sets YYVAL to garbage.
     
    49694478    {
    49704479        case 2:
    4971 
    4972 /* Line 1806 of yacc.c  */
    4973 #line 300 "parser.yy"
     4480#line 300 "parser.yy" /* yacc.c:1646  */
    49744481    { typedefTable.enterScope(); }
     4482#line 4483 "Parser/parser.cc" /* yacc.c:1646  */
    49754483    break;
    49764484
    49774485  case 3:
    4978 
    4979 /* Line 1806 of yacc.c  */
    4980 #line 304 "parser.yy"
     4486#line 304 "parser.yy" /* yacc.c:1646  */
    49814487    { typedefTable.leaveScope(); }
     4488#line 4489 "Parser/parser.cc" /* yacc.c:1646  */
    49824489    break;
    49834490
    49844491  case 4:
    4985 
    4986 /* Line 1806 of yacc.c  */
    4987 #line 311 "parser.yy"
    4988     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     4492#line 311 "parser.yy" /* yacc.c:1646  */
     4493    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[0].tok) ) ); }
     4494#line 4495 "Parser/parser.cc" /* yacc.c:1646  */
    49894495    break;
    49904496
    49914497  case 5:
    4992 
    4993 /* Line 1806 of yacc.c  */
    4994 #line 312 "parser.yy"
    4995     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4498#line 312 "parser.yy" /* yacc.c:1646  */
     4499    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
     4500#line 4501 "Parser/parser.cc" /* yacc.c:1646  */
    49964501    break;
    49974502
    49984503  case 6:
    4999 
    5000 /* Line 1806 of yacc.c  */
    5001 #line 313 "parser.yy"
    5002     { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
     4504#line 313 "parser.yy" /* yacc.c:1646  */
     4505    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[0].tok) ) ); }
     4506#line 4507 "Parser/parser.cc" /* yacc.c:1646  */
    50034507    break;
    50044508
    50054509  case 16:
    5006 
    5007 /* Line 1806 of yacc.c  */
    5008 #line 338 "parser.yy"
    5009     { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
     4510#line 338 "parser.yy" /* yacc.c:1646  */
     4511    { (yyval.constant) = build_constantStr( *(yyvsp[0].str) ); }
     4512#line 4513 "Parser/parser.cc" /* yacc.c:1646  */
    50104513    break;
    50114514
    50124515  case 17:
    5013 
    5014 /* Line 1806 of yacc.c  */
    5015 #line 342 "parser.yy"
    5016     { (yyval.str) = (yyvsp[(1) - (1)].tok); }
     4516#line 342 "parser.yy" /* yacc.c:1646  */
     4517    { (yyval.str) = (yyvsp[0].tok); }
     4518#line 4519 "Parser/parser.cc" /* yacc.c:1646  */
    50174519    break;
    50184520
    50194521  case 18:
    5020 
    5021 /* Line 1806 of yacc.c  */
    5022 #line 344 "parser.yy"
    5023     {
    5024                         appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
    5025                         delete (yyvsp[(2) - (2)].tok);                                                                  // allocated by lexer
    5026                         (yyval.str) = (yyvsp[(1) - (2)].str);                                                                   // conversion from tok to str
     4522#line 344 "parser.yy" /* yacc.c:1646  */
     4523    {
     4524                        appendStr( (yyvsp[-1].str), (yyvsp[0].tok) );                                           // append 2nd juxtaposed string to 1st
     4525                        delete (yyvsp[0].tok);                                                                  // allocated by lexer
     4526                        (yyval.str) = (yyvsp[-1].str);                                                                  // conversion from tok to str
    50274527                }
     4528#line 4529 "Parser/parser.cc" /* yacc.c:1646  */
    50284529    break;
    50294530
    50304531  case 19:
    5031 
    5032 /* Line 1806 of yacc.c  */
    5033 #line 355 "parser.yy"
    5034     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     4532#line 355 "parser.yy" /* yacc.c:1646  */
     4533    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4534#line 4535 "Parser/parser.cc" /* yacc.c:1646  */
    50354535    break;
    50364536
    50374537  case 20:
    5038 
    5039 /* Line 1806 of yacc.c  */
    5040 #line 357 "parser.yy"
    5041     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     4538#line 357 "parser.yy" /* yacc.c:1646  */
     4539    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4540#line 4541 "Parser/parser.cc" /* yacc.c:1646  */
    50424541    break;
    50434542
    50444543  case 21:
    5045 
    5046 /* Line 1806 of yacc.c  */
    5047 #line 359 "parser.yy"
    5048     { (yyval.en) = (yyvsp[(2) - (3)].en); }
     4544#line 359 "parser.yy" /* yacc.c:1646  */
     4545    { (yyval.en) = (yyvsp[-1].en); }
     4546#line 4547 "Parser/parser.cc" /* yacc.c:1646  */
    50494547    break;
    50504548
    50514549  case 22:
    5052 
    5053 /* Line 1806 of yacc.c  */
    5054 #line 361 "parser.yy"
    5055     { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
     4550#line 361 "parser.yy" /* yacc.c:1646  */
     4551    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); }
     4552#line 4553 "Parser/parser.cc" /* yacc.c:1646  */
    50564553    break;
    50574554
    50584555  case 24:
    5059 
    5060 /* Line 1806 of yacc.c  */
    5061 #line 371 "parser.yy"
    5062     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     4556#line 371 "parser.yy" /* yacc.c:1646  */
     4557    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); }
     4558#line 4559 "Parser/parser.cc" /* yacc.c:1646  */
    50634559    break;
    50644560
    50654561  case 25:
    5066 
    5067 /* Line 1806 of yacc.c  */
    5068 #line 373 "parser.yy"
    5069     { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
     4562#line 373 "parser.yy" /* yacc.c:1646  */
     4563    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); }
     4564#line 4565 "Parser/parser.cc" /* yacc.c:1646  */
    50704565    break;
    50714566
    50724567  case 26:
    5073 
    5074 /* Line 1806 of yacc.c  */
    5075 #line 377 "parser.yy"
    5076     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     4568#line 377 "parser.yy" /* yacc.c:1646  */
     4569    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
     4570#line 4571 "Parser/parser.cc" /* yacc.c:1646  */
    50774571    break;
    50784572
    50794573  case 28:
    5080 
    5081 /* Line 1806 of yacc.c  */
    5082 #line 380 "parser.yy"
    5083     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     4574#line 380 "parser.yy" /* yacc.c:1646  */
     4575    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
     4576#line 4577 "Parser/parser.cc" /* yacc.c:1646  */
    50844577    break;
    50854578
    50864579  case 30:
    5087 
    5088 /* Line 1806 of yacc.c  */
    5089 #line 383 "parser.yy"
    5090     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     4580#line 383 "parser.yy" /* yacc.c:1646  */
     4581    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); }
     4582#line 4583 "Parser/parser.cc" /* yacc.c:1646  */
    50914583    break;
    50924584
    50934585  case 31:
    5094 
    5095 /* Line 1806 of yacc.c  */
    5096 #line 385 "parser.yy"
    5097     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     4586#line 385 "parser.yy" /* yacc.c:1646  */
     4587    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); }
     4588#line 4589 "Parser/parser.cc" /* yacc.c:1646  */
    50984589    break;
    50994590
    51004591  case 32:
    5101 
    5102 /* Line 1806 of yacc.c  */
    5103 #line 387 "parser.yy"
    5104     { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
     4592#line 387 "parser.yy" /* yacc.c:1646  */
     4593    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); }
     4594#line 4595 "Parser/parser.cc" /* yacc.c:1646  */
    51054595    break;
    51064596
    51074597  case 33:
    5108 
    5109 /* Line 1806 of yacc.c  */
    5110 #line 389 "parser.yy"
     4598#line 389 "parser.yy" /* yacc.c:1646  */
    51114599    {
    51124600                        Token fn;
    51134601                        fn.str = new std::string( "?{}" ); // location undefined
    5114                         (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) );
     4602                        (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) );
    51154603                }
     4604#line 4605 "Parser/parser.cc" /* yacc.c:1646  */
    51164605    break;
    51174606
    51184607  case 35:
    5119 
    5120 /* Line 1806 of yacc.c  */
    5121 #line 399 "parser.yy"
    5122     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     4608#line 399 "parser.yy" /* yacc.c:1646  */
     4609    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
     4610#line 4611 "Parser/parser.cc" /* yacc.c:1646  */
    51234611    break;
    51244612
    51254613  case 36:
    5126 
    5127 /* Line 1806 of yacc.c  */
    5128 #line 404 "parser.yy"
     4614#line 404 "parser.yy" /* yacc.c:1646  */
    51294615    { (yyval.en) = 0; }
     4616#line 4617 "Parser/parser.cc" /* yacc.c:1646  */
    51304617    break;
    51314618
    51324619  case 39:
    5133 
    5134 /* Line 1806 of yacc.c  */
    5135 #line 410 "parser.yy"
    5136     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     4620#line 410 "parser.yy" /* yacc.c:1646  */
     4621    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     4622#line 4623 "Parser/parser.cc" /* yacc.c:1646  */
    51374623    break;
    51384624
    51394625  case 40:
    5140 
    5141 /* Line 1806 of yacc.c  */
    5142 #line 415 "parser.yy"
    5143     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     4626#line 415 "parser.yy" /* yacc.c:1646  */
     4627    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4628#line 4629 "Parser/parser.cc" /* yacc.c:1646  */
    51444629    break;
    51454630
    51464631  case 41:
    5147 
    5148 /* Line 1806 of yacc.c  */
    5149 #line 419 "parser.yy"
    5150     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     4632#line 419 "parser.yy" /* yacc.c:1646  */
     4633    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
     4634#line 4635 "Parser/parser.cc" /* yacc.c:1646  */
    51514635    break;
    51524636
    51534637  case 42:
    5154 
    5155 /* Line 1806 of yacc.c  */
    5156 #line 421 "parser.yy"
    5157     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     4638#line 421 "parser.yy" /* yacc.c:1646  */
     4639    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
     4640#line 4641 "Parser/parser.cc" /* yacc.c:1646  */
    51584641    break;
    51594642
    51604643  case 43:
    5161 
    5162 /* Line 1806 of yacc.c  */
    5163 #line 423 "parser.yy"
    5164     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     4644#line 423 "parser.yy" /* yacc.c:1646  */
     4645    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
     4646#line 4647 "Parser/parser.cc" /* yacc.c:1646  */
    51654647    break;
    51664648
    51674649  case 44:
    5168 
    5169 /* Line 1806 of yacc.c  */
    5170 #line 425 "parser.yy"
    5171     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     4650#line 425 "parser.yy" /* yacc.c:1646  */
     4651    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
     4652#line 4653 "Parser/parser.cc" /* yacc.c:1646  */
    51724653    break;
    51734654
    51744655  case 46:
    5175 
    5176 /* Line 1806 of yacc.c  */
    5177 #line 433 "parser.yy"
    5178     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     4656#line 433 "parser.yy" /* yacc.c:1646  */
     4657    { (yyval.en) = (yyvsp[0].en); }
     4658#line 4659 "Parser/parser.cc" /* yacc.c:1646  */
    51794659    break;
    51804660
    51814661  case 47:
    5182 
    5183 /* Line 1806 of yacc.c  */
    5184 #line 435 "parser.yy"
    5185     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     4662#line 435 "parser.yy" /* yacc.c:1646  */
     4663    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
     4664#line 4665 "Parser/parser.cc" /* yacc.c:1646  */
    51864665    break;
    51874666
    51884667  case 48:
    5189 
    5190 /* Line 1806 of yacc.c  */
    5191 #line 437 "parser.yy"
    5192     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     4668#line 437 "parser.yy" /* yacc.c:1646  */
     4669    { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
     4670#line 4671 "Parser/parser.cc" /* yacc.c:1646  */
    51934671    break;
    51944672
    51954673  case 49:
    5196 
    5197 /* Line 1806 of yacc.c  */
    5198 #line 442 "parser.yy"
    5199     {
    5200                         switch ( (yyvsp[(1) - (2)].op) ) {
     4674#line 442 "parser.yy" /* yacc.c:1646  */
     4675    {
     4676                        switch ( (yyvsp[-1].op) ) {
    52014677                          case OperKinds::AddressOf:
    5202                                 (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
     4678                                (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) );
    52034679                                break;
    52044680                          case OperKinds::PointTo:
    5205                                 (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
     4681                                (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) );
    52064682                                break;
    52074683                          default:
     
    52094685                        }
    52104686                }
     4687#line 4688 "Parser/parser.cc" /* yacc.c:1646  */
    52114688    break;
    52124689
    52134690  case 50:
    5214 
    5215 /* Line 1806 of yacc.c  */
    5216 #line 455 "parser.yy"
    5217     { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     4691#line 455 "parser.yy" /* yacc.c:1646  */
     4692    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
     4693#line 4694 "Parser/parser.cc" /* yacc.c:1646  */
    52184694    break;
    52194695
    52204696  case 51:
    5221 
    5222 /* Line 1806 of yacc.c  */
    5223 #line 457 "parser.yy"
    5224     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     4697#line 457 "parser.yy" /* yacc.c:1646  */
     4698    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
     4699#line 4700 "Parser/parser.cc" /* yacc.c:1646  */
    52254700    break;
    52264701
    52274702  case 52:
    5228 
    5229 /* Line 1806 of yacc.c  */
    5230 #line 459 "parser.yy"
    5231     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     4703#line 459 "parser.yy" /* yacc.c:1646  */
     4704    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
     4705#line 4706 "Parser/parser.cc" /* yacc.c:1646  */
    52324706    break;
    52334707
    52344708  case 53:
    5235 
    5236 /* Line 1806 of yacc.c  */
    5237 #line 461 "parser.yy"
    5238     { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     4709#line 461 "parser.yy" /* yacc.c:1646  */
     4710    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
     4711#line 4712 "Parser/parser.cc" /* yacc.c:1646  */
    52394712    break;
    52404713
    52414714  case 54:
    5242 
    5243 /* Line 1806 of yacc.c  */
    5244 #line 463 "parser.yy"
    5245     { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     4715#line 463 "parser.yy" /* yacc.c:1646  */
     4716    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
     4717#line 4718 "Parser/parser.cc" /* yacc.c:1646  */
    52464718    break;
    52474719
    52484720  case 55:
    5249 
    5250 /* Line 1806 of yacc.c  */
    5251 #line 465 "parser.yy"
    5252     { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     4721#line 465 "parser.yy" /* yacc.c:1646  */
     4722    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
     4723#line 4724 "Parser/parser.cc" /* yacc.c:1646  */
    52534724    break;
    52544725
    52554726  case 56:
    5256 
    5257 /* Line 1806 of yacc.c  */
    5258 #line 467 "parser.yy"
    5259     { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     4727#line 467 "parser.yy" /* yacc.c:1646  */
     4728    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
     4729#line 4730 "Parser/parser.cc" /* yacc.c:1646  */
    52604730    break;
    52614731
    52624732  case 57:
    5263 
    5264 /* Line 1806 of yacc.c  */
    5265 #line 469 "parser.yy"
    5266     { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     4733#line 469 "parser.yy" /* yacc.c:1646  */
     4734    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
     4735#line 4736 "Parser/parser.cc" /* yacc.c:1646  */
    52674736    break;
    52684737
    52694738  case 58:
    5270 
    5271 /* Line 1806 of yacc.c  */
    5272 #line 471 "parser.yy"
    5273     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     4739#line 471 "parser.yy" /* yacc.c:1646  */
     4740    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
     4741#line 4742 "Parser/parser.cc" /* yacc.c:1646  */
    52744742    break;
    52754743
    52764744  case 59:
    5277 
    5278 /* Line 1806 of yacc.c  */
    5279 #line 473 "parser.yy"
    5280     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     4745#line 473 "parser.yy" /* yacc.c:1646  */
     4746    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
     4747#line 4748 "Parser/parser.cc" /* yacc.c:1646  */
    52814748    break;
    52824749
    52834750  case 60:
    5284 
    5285 /* Line 1806 of yacc.c  */
    5286 #line 475 "parser.yy"
    5287     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     4751#line 475 "parser.yy" /* yacc.c:1646  */
     4752    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
     4753#line 4754 "Parser/parser.cc" /* yacc.c:1646  */
    52884754    break;
    52894755
    52904756  case 61:
    5291 
    5292 /* Line 1806 of yacc.c  */
    5293 #line 481 "parser.yy"
     4757#line 481 "parser.yy" /* yacc.c:1646  */
    52944758    { (yyval.op) = OperKinds::PointTo; }
     4759#line 4760 "Parser/parser.cc" /* yacc.c:1646  */
    52954760    break;
    52964761
    52974762  case 62:
    5298 
    5299 /* Line 1806 of yacc.c  */
    5300 #line 482 "parser.yy"
     4763#line 482 "parser.yy" /* yacc.c:1646  */
    53014764    { (yyval.op) = OperKinds::AddressOf; }
     4765#line 4766 "Parser/parser.cc" /* yacc.c:1646  */
    53024766    break;
    53034767
    53044768  case 63:
    5305 
    5306 /* Line 1806 of yacc.c  */
    5307 #line 488 "parser.yy"
     4769#line 488 "parser.yy" /* yacc.c:1646  */
    53084770    { (yyval.op) = OperKinds::UnPlus; }
     4771#line 4772 "Parser/parser.cc" /* yacc.c:1646  */
    53094772    break;
    53104773
    53114774  case 64:
    5312 
    5313 /* Line 1806 of yacc.c  */
    5314 #line 489 "parser.yy"
     4775#line 489 "parser.yy" /* yacc.c:1646  */
    53154776    { (yyval.op) = OperKinds::UnMinus; }
     4777#line 4778 "Parser/parser.cc" /* yacc.c:1646  */
    53164778    break;
    53174779
    53184780  case 65:
    5319 
    5320 /* Line 1806 of yacc.c  */
    5321 #line 490 "parser.yy"
     4781#line 490 "parser.yy" /* yacc.c:1646  */
    53224782    { (yyval.op) = OperKinds::Neg; }
     4783#line 4784 "Parser/parser.cc" /* yacc.c:1646  */
    53234784    break;
    53244785
    53254786  case 66:
    5326 
    5327 /* Line 1806 of yacc.c  */
    5328 #line 491 "parser.yy"
     4787#line 491 "parser.yy" /* yacc.c:1646  */
    53294788    { (yyval.op) = OperKinds::BitNeg; }
     4789#line 4790 "Parser/parser.cc" /* yacc.c:1646  */
    53304790    break;
    53314791
    53324792  case 68:
    5333 
    5334 /* Line 1806 of yacc.c  */
    5335 #line 497 "parser.yy"
    5336     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     4793#line 497 "parser.yy" /* yacc.c:1646  */
     4794    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
     4795#line 4796 "Parser/parser.cc" /* yacc.c:1646  */
    53374796    break;
    53384797
    53394798  case 69:
    5340 
    5341 /* Line 1806 of yacc.c  */
    5342 #line 499 "parser.yy"
    5343     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     4799#line 499 "parser.yy" /* yacc.c:1646  */
     4800    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
     4801#line 4802 "Parser/parser.cc" /* yacc.c:1646  */
    53444802    break;
    53454803
    53464804  case 71:
    5347 
    5348 /* Line 1806 of yacc.c  */
    5349 #line 505 "parser.yy"
    5350     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4805#line 505 "parser.yy" /* yacc.c:1646  */
     4806    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4807#line 4808 "Parser/parser.cc" /* yacc.c:1646  */
    53514808    break;
    53524809
    53534810  case 72:
    5354 
    5355 /* Line 1806 of yacc.c  */
    5356 #line 507 "parser.yy"
    5357     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4811#line 507 "parser.yy" /* yacc.c:1646  */
     4812    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4813#line 4814 "Parser/parser.cc" /* yacc.c:1646  */
    53584814    break;
    53594815
    53604816  case 73:
    5361 
    5362 /* Line 1806 of yacc.c  */
    5363 #line 509 "parser.yy"
    5364     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4817#line 509 "parser.yy" /* yacc.c:1646  */
     4818    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4819#line 4820 "Parser/parser.cc" /* yacc.c:1646  */
    53654820    break;
    53664821
    53674822  case 75:
    5368 
    5369 /* Line 1806 of yacc.c  */
    5370 #line 515 "parser.yy"
    5371     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4823#line 515 "parser.yy" /* yacc.c:1646  */
     4824    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4825#line 4826 "Parser/parser.cc" /* yacc.c:1646  */
    53724826    break;
    53734827
    53744828  case 76:
    5375 
    5376 /* Line 1806 of yacc.c  */
    5377 #line 517 "parser.yy"
    5378     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4829#line 517 "parser.yy" /* yacc.c:1646  */
     4830    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4831#line 4832 "Parser/parser.cc" /* yacc.c:1646  */
    53794832    break;
    53804833
    53814834  case 78:
    5382 
    5383 /* Line 1806 of yacc.c  */
    5384 #line 523 "parser.yy"
    5385     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4835#line 523 "parser.yy" /* yacc.c:1646  */
     4836    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4837#line 4838 "Parser/parser.cc" /* yacc.c:1646  */
    53864838    break;
    53874839
    53884840  case 79:
    5389 
    5390 /* Line 1806 of yacc.c  */
    5391 #line 525 "parser.yy"
    5392     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4841#line 525 "parser.yy" /* yacc.c:1646  */
     4842    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4843#line 4844 "Parser/parser.cc" /* yacc.c:1646  */
    53934844    break;
    53944845
    53954846  case 81:
    5396 
    5397 /* Line 1806 of yacc.c  */
    5398 #line 531 "parser.yy"
    5399     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4847#line 531 "parser.yy" /* yacc.c:1646  */
     4848    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4849#line 4850 "Parser/parser.cc" /* yacc.c:1646  */
    54004850    break;
    54014851
    54024852  case 82:
    5403 
    5404 /* Line 1806 of yacc.c  */
    5405 #line 533 "parser.yy"
    5406     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4853#line 533 "parser.yy" /* yacc.c:1646  */
     4854    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4855#line 4856 "Parser/parser.cc" /* yacc.c:1646  */
    54074856    break;
    54084857
    54094858  case 83:
    5410 
    5411 /* Line 1806 of yacc.c  */
    5412 #line 535 "parser.yy"
    5413     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4859#line 535 "parser.yy" /* yacc.c:1646  */
     4860    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4861#line 4862 "Parser/parser.cc" /* yacc.c:1646  */
    54144862    break;
    54154863
    54164864  case 84:
    5417 
    5418 /* Line 1806 of yacc.c  */
    5419 #line 537 "parser.yy"
    5420     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4865#line 537 "parser.yy" /* yacc.c:1646  */
     4866    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4867#line 4868 "Parser/parser.cc" /* yacc.c:1646  */
    54214868    break;
    54224869
    54234870  case 86:
    5424 
    5425 /* Line 1806 of yacc.c  */
    5426 #line 543 "parser.yy"
    5427     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4871#line 543 "parser.yy" /* yacc.c:1646  */
     4872    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4873#line 4874 "Parser/parser.cc" /* yacc.c:1646  */
    54284874    break;
    54294875
    54304876  case 87:
    5431 
    5432 /* Line 1806 of yacc.c  */
    5433 #line 545 "parser.yy"
    5434     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4877#line 545 "parser.yy" /* yacc.c:1646  */
     4878    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4879#line 4880 "Parser/parser.cc" /* yacc.c:1646  */
    54354880    break;
    54364881
    54374882  case 89:
    5438 
    5439 /* Line 1806 of yacc.c  */
    5440 #line 551 "parser.yy"
    5441     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4883#line 551 "parser.yy" /* yacc.c:1646  */
     4884    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4885#line 4886 "Parser/parser.cc" /* yacc.c:1646  */
    54424886    break;
    54434887
    54444888  case 91:
    5445 
    5446 /* Line 1806 of yacc.c  */
    5447 #line 557 "parser.yy"
    5448     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4889#line 557 "parser.yy" /* yacc.c:1646  */
     4890    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4891#line 4892 "Parser/parser.cc" /* yacc.c:1646  */
    54494892    break;
    54504893
    54514894  case 93:
    5452 
    5453 /* Line 1806 of yacc.c  */
    5454 #line 563 "parser.yy"
    5455     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4895#line 563 "parser.yy" /* yacc.c:1646  */
     4896    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4897#line 4898 "Parser/parser.cc" /* yacc.c:1646  */
    54564898    break;
    54574899
    54584900  case 95:
    5459 
    5460 /* Line 1806 of yacc.c  */
    5461 #line 569 "parser.yy"
    5462     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     4901#line 569 "parser.yy" /* yacc.c:1646  */
     4902    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
     4903#line 4904 "Parser/parser.cc" /* yacc.c:1646  */
    54634904    break;
    54644905
    54654906  case 97:
    5466 
    5467 /* Line 1806 of yacc.c  */
    5468 #line 575 "parser.yy"
    5469     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     4907#line 575 "parser.yy" /* yacc.c:1646  */
     4908    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
     4909#line 4910 "Parser/parser.cc" /* yacc.c:1646  */
    54704910    break;
    54714911
    54724912  case 99:
    5473 
    5474 /* Line 1806 of yacc.c  */
    5475 #line 581 "parser.yy"
    5476     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     4913#line 581 "parser.yy" /* yacc.c:1646  */
     4914    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4915#line 4916 "Parser/parser.cc" /* yacc.c:1646  */
    54774916    break;
    54784917
    54794918  case 100:
    5480 
    5481 /* Line 1806 of yacc.c  */
    5482 #line 584 "parser.yy"
    5483     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     4919#line 584 "parser.yy" /* yacc.c:1646  */
     4920    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
     4921#line 4922 "Parser/parser.cc" /* yacc.c:1646  */
    54844922    break;
    54854923
    54864924  case 101:
    5487 
    5488 /* Line 1806 of yacc.c  */
    5489 #line 586 "parser.yy"
    5490     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     4925#line 586 "parser.yy" /* yacc.c:1646  */
     4926    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4927#line 4928 "Parser/parser.cc" /* yacc.c:1646  */
    54914928    break;
    54924929
    54934930  case 104:
    5494 
    5495 /* Line 1806 of yacc.c  */
    5496 #line 597 "parser.yy"
    5497     { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4931#line 597 "parser.yy" /* yacc.c:1646  */
     4932    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4933#line 4934 "Parser/parser.cc" /* yacc.c:1646  */
    54984934    break;
    54994935
    55004936  case 105:
    5501 
    5502 /* Line 1806 of yacc.c  */
    5503 #line 599 "parser.yy"
    5504     { (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) ) ); }
     4937#line 599 "parser.yy" /* yacc.c:1646  */
     4938    { (yyval.en) = ( (yyvsp[0].en) == 0 ) ? (yyvsp[-1].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[-1].en), (yyvsp[0].en) ) ); }
     4939#line 4940 "Parser/parser.cc" /* yacc.c:1646  */
    55054940    break;
    55064941
    55074942  case 106:
    5508 
    5509 /* Line 1806 of yacc.c  */
    5510 #line 604 "parser.yy"
     4943#line 604 "parser.yy" /* yacc.c:1646  */
    55114944    { (yyval.en) = nullptr; }
     4945#line 4946 "Parser/parser.cc" /* yacc.c:1646  */
    55124946    break;
    55134947
    55144948  case 108:
    5515 
    5516 /* Line 1806 of yacc.c  */
    5517 #line 609 "parser.yy"
     4949#line 609 "parser.yy" /* yacc.c:1646  */
    55184950    { (yyval.op) = OperKinds::Assign; }
     4951#line 4952 "Parser/parser.cc" /* yacc.c:1646  */
    55194952    break;
    55204953
    55214954  case 109:
    5522 
    5523 /* Line 1806 of yacc.c  */
    5524 #line 610 "parser.yy"
     4955#line 610 "parser.yy" /* yacc.c:1646  */
    55254956    { (yyval.op) = OperKinds::AtAssn; }
     4957#line 4958 "Parser/parser.cc" /* yacc.c:1646  */
    55264958    break;
    55274959
    55284960  case 110:
    5529 
    5530 /* Line 1806 of yacc.c  */
    5531 #line 611 "parser.yy"
     4961#line 611 "parser.yy" /* yacc.c:1646  */
    55324962    { (yyval.op) = OperKinds::MulAssn; }
     4963#line 4964 "Parser/parser.cc" /* yacc.c:1646  */
    55334964    break;
    55344965
    55354966  case 111:
    5536 
    5537 /* Line 1806 of yacc.c  */
    5538 #line 612 "parser.yy"
     4967#line 612 "parser.yy" /* yacc.c:1646  */
    55394968    { (yyval.op) = OperKinds::DivAssn; }
     4969#line 4970 "Parser/parser.cc" /* yacc.c:1646  */
    55404970    break;
    55414971
    55424972  case 112:
    5543 
    5544 /* Line 1806 of yacc.c  */
    5545 #line 613 "parser.yy"
     4973#line 613 "parser.yy" /* yacc.c:1646  */
    55464974    { (yyval.op) = OperKinds::ModAssn; }
     4975#line 4976 "Parser/parser.cc" /* yacc.c:1646  */
    55474976    break;
    55484977
    55494978  case 113:
    5550 
    5551 /* Line 1806 of yacc.c  */
    5552 #line 614 "parser.yy"
     4979#line 614 "parser.yy" /* yacc.c:1646  */
    55534980    { (yyval.op) = OperKinds::PlusAssn; }
     4981#line 4982 "Parser/parser.cc" /* yacc.c:1646  */
    55544982    break;
    55554983
    55564984  case 114:
    5557 
    5558 /* Line 1806 of yacc.c  */
    5559 #line 615 "parser.yy"
     4985#line 615 "parser.yy" /* yacc.c:1646  */
    55604986    { (yyval.op) = OperKinds::MinusAssn; }
     4987#line 4988 "Parser/parser.cc" /* yacc.c:1646  */
    55614988    break;
    55624989
    55634990  case 115:
    5564 
    5565 /* Line 1806 of yacc.c  */
    5566 #line 616 "parser.yy"
     4991#line 616 "parser.yy" /* yacc.c:1646  */
    55674992    { (yyval.op) = OperKinds::LSAssn; }
     4993#line 4994 "Parser/parser.cc" /* yacc.c:1646  */
    55684994    break;
    55694995
    55704996  case 116:
    5571 
    5572 /* Line 1806 of yacc.c  */
    5573 #line 617 "parser.yy"
     4997#line 617 "parser.yy" /* yacc.c:1646  */
    55744998    { (yyval.op) = OperKinds::RSAssn; }
     4999#line 5000 "Parser/parser.cc" /* yacc.c:1646  */
    55755000    break;
    55765001
    55775002  case 117:
    5578 
    5579 /* Line 1806 of yacc.c  */
    5580 #line 618 "parser.yy"
     5003#line 618 "parser.yy" /* yacc.c:1646  */
    55815004    { (yyval.op) = OperKinds::AndAssn; }
     5005#line 5006 "Parser/parser.cc" /* yacc.c:1646  */
    55825006    break;
    55835007
    55845008  case 118:
    5585 
    5586 /* Line 1806 of yacc.c  */
    5587 #line 619 "parser.yy"
     5009#line 619 "parser.yy" /* yacc.c:1646  */
    55885010    { (yyval.op) = OperKinds::ERAssn; }
     5011#line 5012 "Parser/parser.cc" /* yacc.c:1646  */
    55895012    break;
    55905013
    55915014  case 119:
    5592 
    5593 /* Line 1806 of yacc.c  */
    5594 #line 620 "parser.yy"
     5015#line 620 "parser.yy" /* yacc.c:1646  */
    55955016    { (yyval.op) = OperKinds::OrAssn; }
     5017#line 5018 "Parser/parser.cc" /* yacc.c:1646  */
    55965018    break;
    55975019
    55985020  case 120:
    5599 
    5600 /* Line 1806 of yacc.c  */
    5601 #line 627 "parser.yy"
     5021#line 627 "parser.yy" /* yacc.c:1646  */
    56025022    { (yyval.en) = new ExpressionNode( build_tuple() ); }
     5023#line 5024 "Parser/parser.cc" /* yacc.c:1646  */
    56035024    break;
    56045025
    56055026  case 121:
    5606 
    5607 /* Line 1806 of yacc.c  */
    5608 #line 629 "parser.yy"
    5609     { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     5027#line 629 "parser.yy" /* yacc.c:1646  */
     5028    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[-2].en) ) ); }
     5029#line 5030 "Parser/parser.cc" /* yacc.c:1646  */
    56105030    break;
    56115031
    56125032  case 122:
    5613 
    5614 /* Line 1806 of yacc.c  */
    5615 #line 631 "parser.yy"
    5616     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
     5033#line 631 "parser.yy" /* yacc.c:1646  */
     5034    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
     5035#line 5036 "Parser/parser.cc" /* yacc.c:1646  */
    56175036    break;
    56185037
    56195038  case 123:
    5620 
    5621 /* Line 1806 of yacc.c  */
    5622 #line 633 "parser.yy"
    5623     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     5039#line 633 "parser.yy" /* yacc.c:1646  */
     5040    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
     5041#line 5042 "Parser/parser.cc" /* yacc.c:1646  */
    56245042    break;
    56255043
    56265044  case 125:
    5627 
    5628 /* Line 1806 of yacc.c  */
    5629 #line 639 "parser.yy"
    5630     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5045#line 639 "parser.yy" /* yacc.c:1646  */
     5046    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     5047#line 5048 "Parser/parser.cc" /* yacc.c:1646  */
    56315048    break;
    56325049
    56335050  case 127:
    5634 
    5635 /* Line 1806 of yacc.c  */
    5636 #line 645 "parser.yy"
    5637     { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5051#line 645 "parser.yy" /* yacc.c:1646  */
     5052    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     5053#line 5054 "Parser/parser.cc" /* yacc.c:1646  */
    56385054    break;
    56395055
    56405056  case 128:
    5641 
    5642 /* Line 1806 of yacc.c  */
    5643 #line 650 "parser.yy"
     5057#line 650 "parser.yy" /* yacc.c:1646  */
    56445058    { (yyval.en) = 0; }
     5059#line 5060 "Parser/parser.cc" /* yacc.c:1646  */
    56455060    break;
    56465061
    56475062  case 132:
    5648 
    5649 /* Line 1806 of yacc.c  */
    5650 #line 659 "parser.yy"
    5651     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     5063#line 659 "parser.yy" /* yacc.c:1646  */
     5064    { (yyval.sn) = (yyvsp[0].sn); }
     5065#line 5066 "Parser/parser.cc" /* yacc.c:1646  */
    56525066    break;
    56535067
    56545068  case 138:
    5655 
    5656 /* Line 1806 of yacc.c  */
    5657 #line 666 "parser.yy"
     5069#line 666 "parser.yy" /* yacc.c:1646  */
    56585070    {
    56595071                        Token fn;
    56605072                        fn.str = new std::string( "^?{}" ); // location undefined
    5661                         (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) ) ) ) ) );
     5073                        (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) );
    56625074                }
     5075#line 5076 "Parser/parser.cc" /* yacc.c:1646  */
    56635076    break;
    56645077
    56655078  case 139:
    5666 
    5667 /* Line 1806 of yacc.c  */
    5668 #line 676 "parser.yy"
    5669     {
    5670                         (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     5079#line 676 "parser.yy" /* yacc.c:1646  */
     5080    {
     5081                        (yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
    56715082                }
     5083#line 5084 "Parser/parser.cc" /* yacc.c:1646  */
    56725084    break;
    56735085
    56745086  case 140:
    5675 
    5676 /* Line 1806 of yacc.c  */
    5677 #line 683 "parser.yy"
     5087#line 683 "parser.yy" /* yacc.c:1646  */
    56785088    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     5089#line 5090 "Parser/parser.cc" /* yacc.c:1646  */
    56795090    break;
    56805091
    56815092  case 141:
    5682 
    5683 /* Line 1806 of yacc.c  */
    5684 #line 690 "parser.yy"
    5685     { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     5093#line 690 "parser.yy" /* yacc.c:1646  */
     5094    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
     5095#line 5096 "Parser/parser.cc" /* yacc.c:1646  */
    56865096    break;
    56875097
    56885098  case 143:
    5689 
    5690 /* Line 1806 of yacc.c  */
    5691 #line 696 "parser.yy"
    5692     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5099#line 696 "parser.yy" /* yacc.c:1646  */
     5100    { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
     5101#line 5102 "Parser/parser.cc" /* yacc.c:1646  */
    56935102    break;
    56945103
    56955104  case 144:
    5696 
    5697 /* Line 1806 of yacc.c  */
    5698 #line 701 "parser.yy"
    5699     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5105#line 701 "parser.yy" /* yacc.c:1646  */
     5106    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
     5107#line 5108 "Parser/parser.cc" /* yacc.c:1646  */
    57005108    break;
    57015109
    57025110  case 145:
    5703 
    5704 /* Line 1806 of yacc.c  */
    5705 #line 703 "parser.yy"
     5111#line 703 "parser.yy" /* yacc.c:1646  */
    57065112    {   // mark all fields in list
    5707                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     5113                        for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    57085114                                iter->set_extension( true );
    5709                         (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
     5115                        (yyval.sn) = new StatementNode( (yyvsp[0].decl) );
    57105116                }
     5117#line 5118 "Parser/parser.cc" /* yacc.c:1646  */
    57115118    break;
    57125119
    57135120  case 146:
    5714 
    5715 /* Line 1806 of yacc.c  */
    5716 #line 709 "parser.yy"
    5717     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5121#line 709 "parser.yy" /* yacc.c:1646  */
     5122    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
     5123#line 5124 "Parser/parser.cc" /* yacc.c:1646  */
    57185124    break;
    57195125
    57205126  case 149:
    5721 
    5722 /* Line 1806 of yacc.c  */
    5723 #line 716 "parser.yy"
    5724     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5127#line 716 "parser.yy" /* yacc.c:1646  */
     5128    { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
     5129#line 5130 "Parser/parser.cc" /* yacc.c:1646  */
    57255130    break;
    57265131
    57275132  case 150:
    5728 
    5729 /* Line 1806 of yacc.c  */
    5730 #line 721 "parser.yy"
    5731     { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     5133#line 721 "parser.yy" /* yacc.c:1646  */
     5134    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
     5135#line 5136 "Parser/parser.cc" /* yacc.c:1646  */
    57325136    break;
    57335137
    57345138  case 151:
    5735 
    5736 /* Line 1806 of yacc.c  */
    5737 #line 727 "parser.yy"
    5738     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     5139#line 727 "parser.yy" /* yacc.c:1646  */
     5140    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
     5141#line 5142 "Parser/parser.cc" /* yacc.c:1646  */
    57395142    break;
    57405143
    57415144  case 152:
    5742 
    5743 /* Line 1806 of yacc.c  */
    5744 #line 729 "parser.yy"
    5745     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     5145#line 729 "parser.yy" /* yacc.c:1646  */
     5146    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
     5147#line 5148 "Parser/parser.cc" /* yacc.c:1646  */
    57465148    break;
    57475149
    57485150  case 153:
    5749 
    5750 /* Line 1806 of yacc.c  */
    5751 #line 731 "parser.yy"
    5752     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5151#line 731 "parser.yy" /* yacc.c:1646  */
     5152    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5153#line 5154 "Parser/parser.cc" /* yacc.c:1646  */
    57535154    break;
    57545155
    57555156  case 154:
    5756 
    5757 /* Line 1806 of yacc.c  */
    5758 #line 733 "parser.yy"
    5759     {
    5760                         StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     5157#line 733 "parser.yy" /* yacc.c:1646  */
     5158    {
     5159                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
    57615160                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    57625161                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    57645163                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    57655164                        // statement.
    5766                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5165                        (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
    57675166                }
     5167#line 5168 "Parser/parser.cc" /* yacc.c:1646  */
    57685168    break;
    57695169
    57705170  case 155:
    5771 
    5772 /* Line 1806 of yacc.c  */
    5773 #line 743 "parser.yy"
    5774     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5171#line 743 "parser.yy" /* yacc.c:1646  */
     5172    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5173#line 5174 "Parser/parser.cc" /* yacc.c:1646  */
    57755174    break;
    57765175
    57775176  case 156:
    5778 
    5779 /* Line 1806 of yacc.c  */
    5780 #line 745 "parser.yy"
    5781     {
    5782                         StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    5783                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5177#line 745 "parser.yy" /* yacc.c:1646  */
     5178    {
     5179                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
     5180                        (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
    57845181                }
     5182#line 5183 "Parser/parser.cc" /* yacc.c:1646  */
    57855183    break;
    57865184
    57875185  case 157:
    5788 
    5789 /* Line 1806 of yacc.c  */
    5790 #line 755 "parser.yy"
    5791     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5186#line 755 "parser.yy" /* yacc.c:1646  */
     5187    { (yyval.en) = (yyvsp[0].en); }
     5188#line 5189 "Parser/parser.cc" /* yacc.c:1646  */
    57925189    break;
    57935190
    57945191  case 158:
    5795 
    5796 /* Line 1806 of yacc.c  */
    5797 #line 757 "parser.yy"
    5798     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5192#line 757 "parser.yy" /* yacc.c:1646  */
     5193    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     5194#line 5195 "Parser/parser.cc" /* yacc.c:1646  */
    57995195    break;
    58005196
    58015197  case 160:
    5802 
    5803 /* Line 1806 of yacc.c  */
    5804 #line 762 "parser.yy"
    5805     { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     5198#line 762 "parser.yy" /* yacc.c:1646  */
     5199    { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
     5200#line 5201 "Parser/parser.cc" /* yacc.c:1646  */
    58065201    break;
    58075202
    58085203  case 161:
    5809 
    5810 /* Line 1806 of yacc.c  */
    5811 #line 764 "parser.yy"
    5812     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     5204#line 764 "parser.yy" /* yacc.c:1646  */
     5205    { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
     5206#line 5207 "Parser/parser.cc" /* yacc.c:1646  */
    58135207    break;
    58145208
    58155209  case 162:
    5816 
    5817 /* Line 1806 of yacc.c  */
    5818 #line 768 "parser.yy"
    5819     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5210#line 768 "parser.yy" /* yacc.c:1646  */
     5211    { (yyval.sn) = (yyvsp[-1].sn); }
     5212#line 5213 "Parser/parser.cc" /* yacc.c:1646  */
    58205213    break;
    58215214
    58225215  case 163:
    5823 
    5824 /* Line 1806 of yacc.c  */
    5825 #line 769 "parser.yy"
     5216#line 769 "parser.yy" /* yacc.c:1646  */
    58265217    { (yyval.sn) = new StatementNode( build_default() ); }
     5218#line 5219 "Parser/parser.cc" /* yacc.c:1646  */
    58275219    break;
    58285220
    58295221  case 165:
    5830 
    5831 /* Line 1806 of yacc.c  */
    5832 #line 775 "parser.yy"
    5833     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     5222#line 775 "parser.yy" /* yacc.c:1646  */
     5223    { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
     5224#line 5225 "Parser/parser.cc" /* yacc.c:1646  */
    58345225    break;
    58355226
    58365227  case 166:
    5837 
    5838 /* Line 1806 of yacc.c  */
    5839 #line 779 "parser.yy"
    5840     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     5228#line 779 "parser.yy" /* yacc.c:1646  */
     5229    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
     5230#line 5231 "Parser/parser.cc" /* yacc.c:1646  */
    58415231    break;
    58425232
    58435233  case 167:
    5844 
    5845 /* Line 1806 of yacc.c  */
    5846 #line 784 "parser.yy"
     5234#line 784 "parser.yy" /* yacc.c:1646  */
    58475235    { (yyval.sn) = 0; }
     5236#line 5237 "Parser/parser.cc" /* yacc.c:1646  */
    58485237    break;
    58495238
    58505239  case 169:
    5851 
    5852 /* Line 1806 of yacc.c  */
    5853 #line 790 "parser.yy"
    5854     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     5240#line 790 "parser.yy" /* yacc.c:1646  */
     5241    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
     5242#line 5243 "Parser/parser.cc" /* yacc.c:1646  */
    58555243    break;
    58565244
    58575245  case 170:
    5858 
    5859 /* Line 1806 of yacc.c  */
    5860 #line 792 "parser.yy"
    5861     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     5246#line 792 "parser.yy" /* yacc.c:1646  */
     5247    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); }
     5248#line 5249 "Parser/parser.cc" /* yacc.c:1646  */
    58625249    break;
    58635250
    58645251  case 171:
    5865 
    5866 /* Line 1806 of yacc.c  */
    5867 #line 797 "parser.yy"
     5252#line 797 "parser.yy" /* yacc.c:1646  */
    58685253    { (yyval.sn) = 0; }
     5254#line 5255 "Parser/parser.cc" /* yacc.c:1646  */
    58695255    break;
    58705256
    58715257  case 173:
    5872 
    5873 /* Line 1806 of yacc.c  */
    5874 #line 803 "parser.yy"
    5875     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5258#line 803 "parser.yy" /* yacc.c:1646  */
     5259    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
     5260#line 5261 "Parser/parser.cc" /* yacc.c:1646  */
    58765261    break;
    58775262
    58785263  case 174:
    5879 
    5880 /* Line 1806 of yacc.c  */
    5881 #line 805 "parser.yy"
    5882     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     5264#line 805 "parser.yy" /* yacc.c:1646  */
     5265    { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); }
     5266#line 5267 "Parser/parser.cc" /* yacc.c:1646  */
    58835267    break;
    58845268
    58855269  case 175:
    5886 
    5887 /* Line 1806 of yacc.c  */
    5888 #line 807 "parser.yy"
    5889     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5270#line 807 "parser.yy" /* yacc.c:1646  */
     5271    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
     5272#line 5273 "Parser/parser.cc" /* yacc.c:1646  */
    58905273    break;
    58915274
    58925275  case 176:
    5893 
    5894 /* Line 1806 of yacc.c  */
    5895 #line 809 "parser.yy"
    5896     { (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) ) ) ) ) ) ); }
     5276#line 809 "parser.yy" /* yacc.c:1646  */
     5277    { (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) ) ) ) ) ) ); }
     5278#line 5279 "Parser/parser.cc" /* yacc.c:1646  */
    58975279    break;
    58985280
    58995281  case 177:
    5900 
    5901 /* Line 1806 of yacc.c  */
    5902 #line 814 "parser.yy"
     5282#line 814 "parser.yy" /* yacc.c:1646  */
    59035283    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     5284#line 5285 "Parser/parser.cc" /* yacc.c:1646  */
    59045285    break;
    59055286
    59065287  case 179:
    5907 
    5908 /* Line 1806 of yacc.c  */
    5909 #line 820 "parser.yy"
     5288#line 820 "parser.yy" /* yacc.c:1646  */
    59105289    { (yyval.sn) = 0; }
     5290#line 5291 "Parser/parser.cc" /* yacc.c:1646  */
    59115291    break;
    59125292
    59135293  case 180:
    5914 
    5915 /* Line 1806 of yacc.c  */
    5916 #line 822 "parser.yy"
     5294#line 822 "parser.yy" /* yacc.c:1646  */
    59175295    { (yyval.sn) = 0; }
     5296#line 5297 "Parser/parser.cc" /* yacc.c:1646  */
    59185297    break;
    59195298
    59205299  case 181:
    5921 
    5922 /* Line 1806 of yacc.c  */
    5923 #line 827 "parser.yy"
    5924     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     5300#line 827 "parser.yy" /* yacc.c:1646  */
     5301    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5302#line 5303 "Parser/parser.cc" /* yacc.c:1646  */
    59255303    break;
    59265304
    59275305  case 182:
    5928 
    5929 /* Line 1806 of yacc.c  */
    5930 #line 829 "parser.yy"
    5931     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
     5306#line 829 "parser.yy" /* yacc.c:1646  */
     5307    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn), true ) ); }
     5308#line 5309 "Parser/parser.cc" /* yacc.c:1646  */
    59325309    break;
    59335310
    59345311  case 183:
    5935 
    5936 /* Line 1806 of yacc.c  */
    5937 #line 831 "parser.yy"
    5938     { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     5312#line 831 "parser.yy" /* yacc.c:1646  */
     5313    { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
     5314#line 5315 "Parser/parser.cc" /* yacc.c:1646  */
    59395315    break;
    59405316
    59415317  case 184:
    5942 
    5943 /* Line 1806 of yacc.c  */
    5944 #line 836 "parser.yy"
    5945     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     5318#line 836 "parser.yy" /* yacc.c:1646  */
     5319    { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
     5320#line 5321 "Parser/parser.cc" /* yacc.c:1646  */
    59465321    break;
    59475322
    59485323  case 185:
    5949 
    5950 /* Line 1806 of yacc.c  */
    5951 #line 838 "parser.yy"
    5952     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5324#line 838 "parser.yy" /* yacc.c:1646  */
     5325    { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
     5326#line 5327 "Parser/parser.cc" /* yacc.c:1646  */
    59535327    break;
    59545328
    59555329  case 186:
    5956 
    5957 /* Line 1806 of yacc.c  */
    5958 #line 843 "parser.yy"
    5959     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     5330#line 843 "parser.yy" /* yacc.c:1646  */
     5331    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Goto ) ); }
     5332#line 5333 "Parser/parser.cc" /* yacc.c:1646  */
    59605333    break;
    59615334
    59625335  case 187:
    5963 
    5964 /* Line 1806 of yacc.c  */
    5965 #line 847 "parser.yy"
    5966     { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     5336#line 847 "parser.yy" /* yacc.c:1646  */
     5337    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
     5338#line 5339 "Parser/parser.cc" /* yacc.c:1646  */
    59675339    break;
    59685340
    59695341  case 188:
    5970 
    5971 /* Line 1806 of yacc.c  */
    5972 #line 850 "parser.yy"
     5342#line 850 "parser.yy" /* yacc.c:1646  */
    59735343    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
     5344#line 5345 "Parser/parser.cc" /* yacc.c:1646  */
    59745345    break;
    59755346
    59765347  case 189:
    5977 
    5978 /* Line 1806 of yacc.c  */
    5979 #line 854 "parser.yy"
    5980     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     5348#line 854 "parser.yy" /* yacc.c:1646  */
     5349    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Continue ) ); }
     5350#line 5351 "Parser/parser.cc" /* yacc.c:1646  */
    59815351    break;
    59825352
    59835353  case 190:
    5984 
    5985 /* Line 1806 of yacc.c  */
    5986 #line 857 "parser.yy"
     5354#line 857 "parser.yy" /* yacc.c:1646  */
    59875355    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     5356#line 5357 "Parser/parser.cc" /* yacc.c:1646  */
    59885357    break;
    59895358
    59905359  case 191:
    5991 
    5992 /* Line 1806 of yacc.c  */
    5993 #line 861 "parser.yy"
    5994     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
     5360#line 861 "parser.yy" /* yacc.c:1646  */
     5361    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Break ) ); }
     5362#line 5363 "Parser/parser.cc" /* yacc.c:1646  */
    59955363    break;
    59965364
    59975365  case 192:
    5998 
    5999 /* Line 1806 of yacc.c  */
    6000 #line 863 "parser.yy"
    6001     { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
     5366#line 863 "parser.yy" /* yacc.c:1646  */
     5367    { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
     5368#line 5369 "Parser/parser.cc" /* yacc.c:1646  */
    60025369    break;
    60035370
    60045371  case 193:
    6005 
    6006 /* Line 1806 of yacc.c  */
    6007 #line 865 "parser.yy"
    6008     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     5372#line 865 "parser.yy" /* yacc.c:1646  */
     5373    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
     5374#line 5375 "Parser/parser.cc" /* yacc.c:1646  */
    60095375    break;
    60105376
    60115377  case 194:
    6012 
    6013 /* Line 1806 of yacc.c  */
    6014 #line 867 "parser.yy"
    6015     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     5378#line 867 "parser.yy" /* yacc.c:1646  */
     5379    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
     5380#line 5381 "Parser/parser.cc" /* yacc.c:1646  */
    60165381    break;
    60175382
    60185383  case 195:
    6019 
    6020 /* Line 1806 of yacc.c  */
    6021 #line 869 "parser.yy"
    6022     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     5384#line 869 "parser.yy" /* yacc.c:1646  */
     5385    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
     5386#line 5387 "Parser/parser.cc" /* yacc.c:1646  */
    60235387    break;
    60245388
    60255389  case 196:
    6026 
    6027 /* Line 1806 of yacc.c  */
    6028 #line 874 "parser.yy"
    6029     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     5390#line 874 "parser.yy" /* yacc.c:1646  */
     5391    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
     5392#line 5393 "Parser/parser.cc" /* yacc.c:1646  */
    60305393    break;
    60315394
    60325395  case 197:
    6033 
    6034 /* Line 1806 of yacc.c  */
    6035 #line 876 "parser.yy"
    6036     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     5396#line 876 "parser.yy" /* yacc.c:1646  */
     5397    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
     5398#line 5399 "Parser/parser.cc" /* yacc.c:1646  */
    60375399    break;
    60385400
    60395401  case 198:
    6040 
    6041 /* Line 1806 of yacc.c  */
    6042 #line 878 "parser.yy"
    6043     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     5402#line 878 "parser.yy" /* yacc.c:1646  */
     5403    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
     5404#line 5405 "Parser/parser.cc" /* yacc.c:1646  */
    60445405    break;
    60455406
    60465407  case 200:
    6047 
    6048 /* Line 1806 of yacc.c  */
    6049 #line 885 "parser.yy"
    6050     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     5408#line 885 "parser.yy" /* yacc.c:1646  */
     5409    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
     5410#line 5411 "Parser/parser.cc" /* yacc.c:1646  */
    60515411    break;
    60525412
    60535413  case 201:
    6054 
    6055 /* Line 1806 of yacc.c  */
    6056 #line 887 "parser.yy"
    6057     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     5414#line 887 "parser.yy" /* yacc.c:1646  */
     5415    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
     5416#line 5417 "Parser/parser.cc" /* yacc.c:1646  */
    60585417    break;
    60595418
    60605419  case 202:
    6061 
    6062 /* Line 1806 of yacc.c  */
    6063 #line 889 "parser.yy"
    6064     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     5420#line 889 "parser.yy" /* yacc.c:1646  */
     5421    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
     5422#line 5423 "Parser/parser.cc" /* yacc.c:1646  */
    60655423    break;
    60665424
    60675425  case 203:
    6068 
    6069 /* Line 1806 of yacc.c  */
    6070 #line 891 "parser.yy"
    6071     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     5426#line 891 "parser.yy" /* yacc.c:1646  */
     5427    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
     5428#line 5429 "Parser/parser.cc" /* yacc.c:1646  */
    60725429    break;
    60735430
    60745431  case 204:
    6075 
    6076 /* Line 1806 of yacc.c  */
    6077 #line 896 "parser.yy"
    6078     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     5432#line 896 "parser.yy" /* yacc.c:1646  */
     5433    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
     5434#line 5435 "Parser/parser.cc" /* yacc.c:1646  */
    60795435    break;
    60805436
    60815437  case 205:
    6082 
    6083 /* Line 1806 of yacc.c  */
    6084 #line 898 "parser.yy"
    6085     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     5438#line 898 "parser.yy" /* yacc.c:1646  */
     5439    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
     5440#line 5441 "Parser/parser.cc" /* yacc.c:1646  */
    60865441    break;
    60875442
    60885443  case 206:
    6089 
    6090 /* Line 1806 of yacc.c  */
    6091 #line 900 "parser.yy"
    6092     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     5444#line 900 "parser.yy" /* yacc.c:1646  */
     5445    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
     5446#line 5447 "Parser/parser.cc" /* yacc.c:1646  */
    60935447    break;
    60945448
    60955449  case 207:
    6096 
    6097 /* Line 1806 of yacc.c  */
    6098 #line 902 "parser.yy"
    6099     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     5450#line 902 "parser.yy" /* yacc.c:1646  */
     5451    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
     5452#line 5453 "Parser/parser.cc" /* yacc.c:1646  */
    61005453    break;
    61015454
    61025455  case 208:
    6103 
    6104 /* Line 1806 of yacc.c  */
    6105 #line 907 "parser.yy"
    6106     {
    6107                         (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     5456#line 907 "parser.yy" /* yacc.c:1646  */
     5457    {
     5458                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
    61085459                }
     5460#line 5461 "Parser/parser.cc" /* yacc.c:1646  */
    61095461    break;
    61105462
    61115463  case 210:
    6112 
    6113 /* Line 1806 of yacc.c  */
    6114 #line 920 "parser.yy"
     5464#line 920 "parser.yy" /* yacc.c:1646  */
    61155465    {
    61165466                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6117                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
     5467                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
    61185468                }
     5469#line 5470 "Parser/parser.cc" /* yacc.c:1646  */
    61195470    break;
    61205471
    61215472  case 211:
    6122 
    6123 /* Line 1806 of yacc.c  */
    6124 #line 925 "parser.yy"
    6125     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     5473#line 925 "parser.yy" /* yacc.c:1646  */
     5474    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     5475#line 5476 "Parser/parser.cc" /* yacc.c:1646  */
    61265476    break;
    61275477
    61285478  case 212:
    6129 
    6130 /* Line 1806 of yacc.c  */
    6131 #line 927 "parser.yy"
     5479#line 927 "parser.yy" /* yacc.c:1646  */
    61325480    {
    61335481                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6134                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
     5482                        (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
    61355483                }
     5484#line 5485 "Parser/parser.cc" /* yacc.c:1646  */
    61365485    break;
    61375486
    61385487  case 214:
    6139 
    6140 /* Line 1806 of yacc.c  */
    6141 #line 936 "parser.yy"
    6142     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     5488#line 936 "parser.yy" /* yacc.c:1646  */
     5489    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
     5490#line 5491 "Parser/parser.cc" /* yacc.c:1646  */
    61435491    break;
    61445492
    61455493  case 215:
    6146 
    6147 /* Line 1806 of yacc.c  */
    6148 #line 938 "parser.yy"
    6149     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     5494#line 938 "parser.yy" /* yacc.c:1646  */
     5495    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
     5496#line 5497 "Parser/parser.cc" /* yacc.c:1646  */
    61505497    break;
    61515498
    61525499  case 216:
    6153 
    6154 /* Line 1806 of yacc.c  */
    6155 #line 940 "parser.yy"
    6156     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
     5500#line 940 "parser.yy" /* yacc.c:1646  */
     5501    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     5502#line 5503 "Parser/parser.cc" /* yacc.c:1646  */
    61575503    break;
    61585504
    61595505  case 217:
    6160 
    6161 /* Line 1806 of yacc.c  */
    6162 #line 942 "parser.yy"
    6163     { (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) ) ); }
     5506#line 942 "parser.yy" /* yacc.c:1646  */
     5507    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     5508#line 5509 "Parser/parser.cc" /* yacc.c:1646  */
    61645509    break;
    61655510
    61665511  case 218:
    6167 
    6168 /* Line 1806 of yacc.c  */
    6169 #line 944 "parser.yy"
    6170     { (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) ) ); }
     5512#line 944 "parser.yy" /* yacc.c:1646  */
     5513    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); }
     5514#line 5515 "Parser/parser.cc" /* yacc.c:1646  */
    61715515    break;
    61725516
    61735517  case 219:
    6174 
    6175 /* Line 1806 of yacc.c  */
    6176 #line 949 "parser.yy"
     5518#line 949 "parser.yy" /* yacc.c:1646  */
    61775519    { (yyval.flag) = false; }
     5520#line 5521 "Parser/parser.cc" /* yacc.c:1646  */
    61785521    break;
    61795522
    61805523  case 220:
    6181 
    6182 /* Line 1806 of yacc.c  */
    6183 #line 951 "parser.yy"
     5524#line 951 "parser.yy" /* yacc.c:1646  */
    61845525    { (yyval.flag) = true; }
     5526#line 5527 "Parser/parser.cc" /* yacc.c:1646  */
    61855527    break;
    61865528
    61875529  case 221:
    6188 
    6189 /* Line 1806 of yacc.c  */
    6190 #line 956 "parser.yy"
     5530#line 956 "parser.yy" /* yacc.c:1646  */
    61915531    { (yyval.en) = 0; }
     5532#line 5533 "Parser/parser.cc" /* yacc.c:1646  */
    61925533    break;
    61935534
    61945535  case 224:
    6195 
    6196 /* Line 1806 of yacc.c  */
    6197 #line 963 "parser.yy"
    6198     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     5536#line 963 "parser.yy" /* yacc.c:1646  */
     5537    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     5538#line 5539 "Parser/parser.cc" /* yacc.c:1646  */
    61995539    break;
    62005540
    62015541  case 225:
    6202 
    6203 /* Line 1806 of yacc.c  */
    6204 #line 968 "parser.yy"
    6205     { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     5542#line 968 "parser.yy" /* yacc.c:1646  */
     5543    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
     5544#line 5545 "Parser/parser.cc" /* yacc.c:1646  */
    62065545    break;
    62075546
    62085547  case 226:
    6209 
    6210 /* Line 1806 of yacc.c  */
    6211 #line 970 "parser.yy"
    6212     { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     5548#line 970 "parser.yy" /* yacc.c:1646  */
     5549    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
     5550#line 5551 "Parser/parser.cc" /* yacc.c:1646  */
    62135551    break;
    62145552
    62155553  case 227:
    6216 
    6217 /* Line 1806 of yacc.c  */
    6218 #line 975 "parser.yy"
     5554#line 975 "parser.yy" /* yacc.c:1646  */
    62195555    { (yyval.en) = 0; }
     5556#line 5557 "Parser/parser.cc" /* yacc.c:1646  */
    62205557    break;
    62215558
    62225559  case 228:
    6223 
    6224 /* Line 1806 of yacc.c  */
    6225 #line 977 "parser.yy"
    6226     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     5560#line 977 "parser.yy" /* yacc.c:1646  */
     5561    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
     5562#line 5563 "Parser/parser.cc" /* yacc.c:1646  */
    62275563    break;
    62285564
    62295565  case 229:
    6230 
    6231 /* Line 1806 of yacc.c  */
    6232 #line 979 "parser.yy"
    6233     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     5566#line 979 "parser.yy" /* yacc.c:1646  */
     5567    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
     5568#line 5569 "Parser/parser.cc" /* yacc.c:1646  */
    62345569    break;
    62355570
    62365571  case 230:
    6237 
    6238 /* Line 1806 of yacc.c  */
    6239 #line 984 "parser.yy"
    6240     {
    6241                         (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
    6242                         delete (yyvsp[(1) - (1)].tok);                                                                  // allocated by lexer
     5572#line 984 "parser.yy" /* yacc.c:1646  */
     5573    {
     5574                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[0].tok) );
     5575                        delete (yyvsp[0].tok);                                                                  // allocated by lexer
    62435576                }
     5577#line 5578 "Parser/parser.cc" /* yacc.c:1646  */
    62445578    break;
    62455579
    62465580  case 231:
    6247 
    6248 /* Line 1806 of yacc.c  */
    6249 #line 989 "parser.yy"
    6250     {
    6251                         (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
    6252                         delete (yyvsp[(3) - (3)].tok);                                                                  // allocated by lexer
     5581#line 989 "parser.yy" /* yacc.c:1646  */
     5582    {
     5583                        (yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( *(yyvsp[0].tok) );
     5584                        delete (yyvsp[0].tok);                                                                  // allocated by lexer
    62535585                }
     5586#line 5587 "Parser/parser.cc" /* yacc.c:1646  */
    62545587    break;
    62555588
    62565589  case 232:
    6257 
    6258 /* Line 1806 of yacc.c  */
    6259 #line 999 "parser.yy"
     5590#line 999 "parser.yy" /* yacc.c:1646  */
    62605591    { (yyval.decl) = 0; }
     5592#line 5593 "Parser/parser.cc" /* yacc.c:1646  */
    62615593    break;
    62625594
    62635595  case 235:
    6264 
    6265 /* Line 1806 of yacc.c  */
    6266 #line 1006 "parser.yy"
    6267     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     5596#line 1006 "parser.yy" /* yacc.c:1646  */
     5597    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     5598#line 5599 "Parser/parser.cc" /* yacc.c:1646  */
    62685599    break;
    62695600
    62705601  case 236:
    6271 
    6272 /* Line 1806 of yacc.c  */
    6273 #line 1011 "parser.yy"
     5602#line 1011 "parser.yy" /* yacc.c:1646  */
    62745603    { (yyval.decl) = 0; }
     5604#line 5605 "Parser/parser.cc" /* yacc.c:1646  */
    62755605    break;
    62765606
    62775607  case 239:
    6278 
    6279 /* Line 1806 of yacc.c  */
    6280 #line 1018 "parser.yy"
    6281     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     5608#line 1018 "parser.yy" /* yacc.c:1646  */
     5609    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     5610#line 5611 "Parser/parser.cc" /* yacc.c:1646  */
    62825611    break;
    62835612
    62845613  case 244:
    6285 
    6286 /* Line 1806 of yacc.c  */
    6287 #line 1032 "parser.yy"
     5614#line 1032 "parser.yy" /* yacc.c:1646  */
    62885615    {}
     5616#line 5617 "Parser/parser.cc" /* yacc.c:1646  */
    62895617    break;
    62905618
    62915619  case 245:
    6292 
    6293 /* Line 1806 of yacc.c  */
    6294 #line 1033 "parser.yy"
     5620#line 1033 "parser.yy" /* yacc.c:1646  */
    62955621    {}
     5622#line 5623 "Parser/parser.cc" /* yacc.c:1646  */
    62965623    break;
    62975624
    62985625  case 253:
    6299 
    6300 /* Line 1806 of yacc.c  */
    6301 #line 1062 "parser.yy"
     5626#line 1062 "parser.yy" /* yacc.c:1646  */
    63025627    {
    63035628                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6304                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
     5629                        (yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
    63055630                }
     5631#line 5632 "Parser/parser.cc" /* yacc.c:1646  */
    63065632    break;
    63075633
    63085634  case 254:
    6309 
    6310 /* Line 1806 of yacc.c  */
    6311 #line 1069 "parser.yy"
     5635#line 1069 "parser.yy" /* yacc.c:1646  */
    63125636    {
    63135637                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6314                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
     5638                        (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
    63155639                }
     5640#line 5641 "Parser/parser.cc" /* yacc.c:1646  */
    63165641    break;
    63175642
    63185643  case 255:
    6319 
    6320 /* Line 1806 of yacc.c  */
    6321 #line 1074 "parser.yy"
    6322     {
    6323                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
    6324                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
     5644#line 1074 "parser.yy" /* yacc.c:1646  */
     5645    {
     5646                        typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID );
     5647                        (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) );
    63255648                }
     5649#line 5650 "Parser/parser.cc" /* yacc.c:1646  */
    63265650    break;
    63275651
    63285652  case 256:
    6329 
    6330 /* Line 1806 of yacc.c  */
    6331 #line 1084 "parser.yy"
    6332     {
    6333                         typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6334                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     5653#line 1084 "parser.yy" /* yacc.c:1646  */
     5654    {
     5655                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5656                        (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
    63355657                }
     5658#line 5659 "Parser/parser.cc" /* yacc.c:1646  */
    63365659    break;
    63375660
    63385661  case 257:
    6339 
    6340 /* Line 1806 of yacc.c  */
    6341 #line 1089 "parser.yy"
    6342     {
    6343                         typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6344                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     5662#line 1089 "parser.yy" /* yacc.c:1646  */
     5663    {
     5664                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5665                        (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
    63455666                }
     5667#line 5668 "Parser/parser.cc" /* yacc.c:1646  */
    63465668    break;
    63475669
    63485670  case 258:
    6349 
    6350 /* Line 1806 of yacc.c  */
    6351 #line 1094 "parser.yy"
    6352     {
    6353                         typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
    6354                         (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
     5671#line 1094 "parser.yy" /* yacc.c:1646  */
     5672    {
     5673                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5674                        (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
    63555675                }
     5676#line 5677 "Parser/parser.cc" /* yacc.c:1646  */
    63565677    break;
    63575678
    63585679  case 259:
    6359 
    6360 /* Line 1806 of yacc.c  */
    6361 #line 1102 "parser.yy"
     5680#line 1102 "parser.yy" /* yacc.c:1646  */
    63625681    {
    63635682                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6364                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
     5683                        (yyval.decl) = (yyvsp[0].decl);
    63655684                }
     5685#line 5686 "Parser/parser.cc" /* yacc.c:1646  */
    63665686    break;
    63675687
    63685688  case 260:
    6369 
    6370 /* Line 1806 of yacc.c  */
    6371 #line 1107 "parser.yy"
     5689#line 1107 "parser.yy" /* yacc.c:1646  */
    63725690    {
    63735691                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6374                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
     5692                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
    63755693                }
     5694#line 5695 "Parser/parser.cc" /* yacc.c:1646  */
    63765695    break;
    63775696
    63785697  case 261:
    6379 
    6380 /* Line 1806 of yacc.c  */
    6381 #line 1112 "parser.yy"
     5698#line 1112 "parser.yy" /* yacc.c:1646  */
    63825699    {
    63835700                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6384                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
     5701                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
    63855702                }
     5703#line 5704 "Parser/parser.cc" /* yacc.c:1646  */
    63865704    break;
    63875705
    63885706  case 262:
    6389 
    6390 /* Line 1806 of yacc.c  */
    6391 #line 1117 "parser.yy"
     5707#line 1117 "parser.yy" /* yacc.c:1646  */
    63925708    {
    63935709                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6394                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
     5710                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
    63955711                }
     5712#line 5713 "Parser/parser.cc" /* yacc.c:1646  */
    63965713    break;
    63975714
    63985715  case 263:
    6399 
    6400 /* Line 1806 of yacc.c  */
    6401 #line 1122 "parser.yy"
    6402     {
    6403                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
    6404                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
     5716#line 1122 "parser.yy" /* yacc.c:1646  */
     5717    {
     5718                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
     5719                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    64055720                }
     5721#line 5722 "Parser/parser.cc" /* yacc.c:1646  */
    64065722    break;
    64075723
    64085724  case 264:
    6409 
    6410 /* Line 1806 of yacc.c  */
    6411 #line 1130 "parser.yy"
    6412     {
    6413                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     5725#line 1130 "parser.yy" /* yacc.c:1646  */
     5726    {
     5727                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), DeclarationNode::newTuple( 0 ), (yyvsp[-2].decl), 0, true );
    64145728                }
     5729#line 5730 "Parser/parser.cc" /* yacc.c:1646  */
    64155730    break;
    64165731
    64175732  case 265:
    6418 
    6419 /* Line 1806 of yacc.c  */
    6420 #line 1153 "parser.yy"
    6421     {
    6422                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     5733#line 1153 "parser.yy" /* yacc.c:1646  */
     5734    {
     5735                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
    64235736                }
     5737#line 5738 "Parser/parser.cc" /* yacc.c:1646  */
    64245738    break;
    64255739
    64265740  case 266:
    6427 
    6428 /* Line 1806 of yacc.c  */
    6429 #line 1157 "parser.yy"
    6430     {
    6431                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     5741#line 1157 "parser.yy" /* yacc.c:1646  */
     5742    {
     5743                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
    64325744                }
     5745#line 5746 "Parser/parser.cc" /* yacc.c:1646  */
    64335746    break;
    64345747
    64355748  case 267:
    6436 
    6437 /* Line 1806 of yacc.c  */
    6438 #line 1164 "parser.yy"
    6439     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     5749#line 1164 "parser.yy" /* yacc.c:1646  */
     5750    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
     5751#line 5752 "Parser/parser.cc" /* yacc.c:1646  */
    64405752    break;
    64415753
    64425754  case 268:
    6443 
    6444 /* Line 1806 of yacc.c  */
    6445 #line 1168 "parser.yy"
    6446     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     5755#line 1168 "parser.yy" /* yacc.c:1646  */
     5756    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
     5757#line 5758 "Parser/parser.cc" /* yacc.c:1646  */
    64475758    break;
    64485759
    64495760  case 269:
    6450 
    6451 /* Line 1806 of yacc.c  */
    6452 #line 1173 "parser.yy"
     5761#line 1173 "parser.yy" /* yacc.c:1646  */
    64535762    {
    64545763                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6455                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
     5764                        (yyval.decl) = (yyvsp[0].decl)->addTypedef();
    64565765                }
     5766#line 5767 "Parser/parser.cc" /* yacc.c:1646  */
    64575767    break;
    64585768
    64595769  case 270:
    6460 
    6461 /* Line 1806 of yacc.c  */
    6462 #line 1178 "parser.yy"
     5770#line 1178 "parser.yy" /* yacc.c:1646  */
    64635771    {
    64645772                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6465                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
     5773                        (yyval.decl) = (yyvsp[0].decl)->addTypedef();
    64665774                }
     5775#line 5776 "Parser/parser.cc" /* yacc.c:1646  */
    64675776    break;
    64685777
    64695778  case 271:
    6470 
    6471 /* Line 1806 of yacc.c  */
    6472 #line 1183 "parser.yy"
    6473     {
    6474                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
    6475                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
     5779#line 1183 "parser.yy" /* yacc.c:1646  */
     5780    {
     5781                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
     5782                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    64765783                }
     5784#line 5785 "Parser/parser.cc" /* yacc.c:1646  */
    64775785    break;
    64785786
    64795787  case 272:
    6480 
    6481 /* Line 1806 of yacc.c  */
    6482 #line 1194 "parser.yy"
     5788#line 1194 "parser.yy" /* yacc.c:1646  */
    64835789    {
    64845790                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6485                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
     5791                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
    64865792                }
     5793#line 5794 "Parser/parser.cc" /* yacc.c:1646  */
    64875794    break;
    64885795
    64895796  case 273:
    6490 
    6491 /* Line 1806 of yacc.c  */
    6492 #line 1199 "parser.yy"
     5797#line 1199 "parser.yy" /* yacc.c:1646  */
    64935798    {
    64945799                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6495                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
     5800                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
    64965801                }
     5802#line 5803 "Parser/parser.cc" /* yacc.c:1646  */
    64975803    break;
    64985804
    64995805  case 274:
    6500 
    6501 /* Line 1806 of yacc.c  */
    6502 #line 1204 "parser.yy"
     5806#line 1204 "parser.yy" /* yacc.c:1646  */
    65035807    {
    65045808                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6505                         (yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
     5809                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
    65065810                }
     5811#line 5812 "Parser/parser.cc" /* yacc.c:1646  */
    65075812    break;
    65085813
    65095814  case 275:
    6510 
    6511 /* Line 1806 of yacc.c  */
    6512 #line 1209 "parser.yy"
     5815#line 1209 "parser.yy" /* yacc.c:1646  */
    65135816    {
    65145817                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6515                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
     5818                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
    65165819                }
     5820#line 5821 "Parser/parser.cc" /* yacc.c:1646  */
    65175821    break;
    65185822
    65195823  case 276:
    6520 
    6521 /* Line 1806 of yacc.c  */
    6522 #line 1214 "parser.yy"
     5824#line 1214 "parser.yy" /* yacc.c:1646  */
    65235825    {
    65245826                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6525                         (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
     5827                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
    65265828                }
     5829#line 5830 "Parser/parser.cc" /* yacc.c:1646  */
    65275830    break;
    65285831
    65295832  case 277:
    6530 
    6531 /* Line 1806 of yacc.c  */
    6532 #line 1223 "parser.yy"
    6533     {
    6534                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     5833#line 1223 "parser.yy" /* yacc.c:1646  */
     5834    {
     5835                        typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
    65355836                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    65365837                }
     5838#line 5839 "Parser/parser.cc" /* yacc.c:1646  */
    65375839    break;
    65385840
    65395841  case 278:
    6540 
    6541 /* Line 1806 of yacc.c  */
    6542 #line 1228 "parser.yy"
    6543     {
    6544                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     5842#line 1228 "parser.yy" /* yacc.c:1646  */
     5843    {
     5844                        typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
    65455845                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    65465846                }
     5847#line 5848 "Parser/parser.cc" /* yacc.c:1646  */
    65475848    break;
    65485849
    65495850  case 283:
    6550 
    6551 /* Line 1806 of yacc.c  */
    6552 #line 1245 "parser.yy"
     5851#line 1245 "parser.yy" /* yacc.c:1646  */
    65535852    {
    65545853                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6555                         (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
     5854                        (yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
    65565855                }
     5856#line 5857 "Parser/parser.cc" /* yacc.c:1646  */
    65575857    break;
    65585858
    65595859  case 284:
    6560 
    6561 /* Line 1806 of yacc.c  */
    6562 #line 1250 "parser.yy"
     5860#line 1250 "parser.yy" /* yacc.c:1646  */
    65635861    {
    65645862                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6565                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
     5863                        (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
    65665864                }
     5865#line 5866 "Parser/parser.cc" /* yacc.c:1646  */
    65675866    break;
    65685867
    65695868  case 293:
    6570 
    6571 /* Line 1806 of yacc.c  */
    6572 #line 1272 "parser.yy"
     5869#line 1272 "parser.yy" /* yacc.c:1646  */
    65735870    { (yyval.decl) = 0; }
     5871#line 5872 "Parser/parser.cc" /* yacc.c:1646  */
    65745872    break;
    65755873
    65765874  case 296:
    6577 
    6578 /* Line 1806 of yacc.c  */
    6579 #line 1284 "parser.yy"
    6580     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     5875#line 1284 "parser.yy" /* yacc.c:1646  */
     5876    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5877#line 5878 "Parser/parser.cc" /* yacc.c:1646  */
    65815878    break;
    65825879
    65835880  case 299:
    6584 
    6585 /* Line 1806 of yacc.c  */
    6586 #line 1295 "parser.yy"
     5881#line 1295 "parser.yy" /* yacc.c:1646  */
    65875882    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     5883#line 5884 "Parser/parser.cc" /* yacc.c:1646  */
    65885884    break;
    65895885
    65905886  case 300:
    6591 
    6592 /* Line 1806 of yacc.c  */
    6593 #line 1297 "parser.yy"
     5887#line 1297 "parser.yy" /* yacc.c:1646  */
    65945888    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     5889#line 5890 "Parser/parser.cc" /* yacc.c:1646  */
    65955890    break;
    65965891
    65975892  case 301:
    6598 
    6599 /* Line 1806 of yacc.c  */
    6600 #line 1299 "parser.yy"
     5893#line 1299 "parser.yy" /* yacc.c:1646  */
    66015894    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     5895#line 5896 "Parser/parser.cc" /* yacc.c:1646  */
    66025896    break;
    66035897
    66045898  case 302:
    6605 
    6606 /* Line 1806 of yacc.c  */
    6607 #line 1301 "parser.yy"
     5899#line 1301 "parser.yy" /* yacc.c:1646  */
    66085900    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     5901#line 5902 "Parser/parser.cc" /* yacc.c:1646  */
    66095902    break;
    66105903
    66115904  case 303:
    6612 
    6613 /* Line 1806 of yacc.c  */
    6614 #line 1303 "parser.yy"
     5905#line 1303 "parser.yy" /* yacc.c:1646  */
    66155906    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     5907#line 5908 "Parser/parser.cc" /* yacc.c:1646  */
    66165908    break;
    66175909
    66185910  case 304:
    6619 
    6620 /* Line 1806 of yacc.c  */
    6621 #line 1305 "parser.yy"
     5911#line 1305 "parser.yy" /* yacc.c:1646  */
    66225912    {
    66235913                        typedefTable.enterScope();
    66245914                }
     5915#line 5916 "Parser/parser.cc" /* yacc.c:1646  */
    66255916    break;
    66265917
    66275918  case 305:
    6628 
    6629 /* Line 1806 of yacc.c  */
    6630 #line 1309 "parser.yy"
     5919#line 1309 "parser.yy" /* yacc.c:1646  */
    66315920    {
    66325921                        typedefTable.leaveScope();
    6633                         (yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
     5922                        (yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
    66345923                }
     5924#line 5925 "Parser/parser.cc" /* yacc.c:1646  */
    66355925    break;
    66365926
    66375927  case 307:
    6638 
    6639 /* Line 1806 of yacc.c  */
    6640 #line 1318 "parser.yy"
    6641     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     5928#line 1318 "parser.yy" /* yacc.c:1646  */
     5929    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5930#line 5931 "Parser/parser.cc" /* yacc.c:1646  */
    66425931    break;
    66435932
    66445933  case 308:
    6645 
    6646 /* Line 1806 of yacc.c  */
    6647 #line 1320 "parser.yy"
    6648     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     5934#line 1320 "parser.yy" /* yacc.c:1646  */
     5935    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     5936#line 5937 "Parser/parser.cc" /* yacc.c:1646  */
    66495937    break;
    66505938
    66515939  case 310:
    6652 
    6653 /* Line 1806 of yacc.c  */
    6654 #line 1331 "parser.yy"
    6655     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     5940#line 1331 "parser.yy" /* yacc.c:1646  */
     5941    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5942#line 5943 "Parser/parser.cc" /* yacc.c:1646  */
    66565943    break;
    66575944
    66585945  case 311:
    6659 
    6660 /* Line 1806 of yacc.c  */
    6661 #line 1336 "parser.yy"
     5946#line 1336 "parser.yy" /* yacc.c:1646  */
    66625947    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     5948#line 5949 "Parser/parser.cc" /* yacc.c:1646  */
    66635949    break;
    66645950
    66655951  case 312:
    6666 
    6667 /* Line 1806 of yacc.c  */
    6668 #line 1338 "parser.yy"
     5952#line 1338 "parser.yy" /* yacc.c:1646  */
    66695953    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     5954#line 5955 "Parser/parser.cc" /* yacc.c:1646  */
    66705955    break;
    66715956
    66725957  case 313:
    6673 
    6674 /* Line 1806 of yacc.c  */
    6675 #line 1340 "parser.yy"
     5958#line 1340 "parser.yy" /* yacc.c:1646  */
    66765959    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     5960#line 5961 "Parser/parser.cc" /* yacc.c:1646  */
    66775961    break;
    66785962
    66795963  case 314:
    6680 
    6681 /* Line 1806 of yacc.c  */
    6682 #line 1342 "parser.yy"
     5964#line 1342 "parser.yy" /* yacc.c:1646  */
    66835965    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     5966#line 5967 "Parser/parser.cc" /* yacc.c:1646  */
    66845967    break;
    66855968
    66865969  case 315:
    6687 
    6688 /* Line 1806 of yacc.c  */
    6689 #line 1345 "parser.yy"
     5970#line 1345 "parser.yy" /* yacc.c:1646  */
    66905971    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
     5972#line 5973 "Parser/parser.cc" /* yacc.c:1646  */
    66915973    break;
    66925974
    66935975  case 316:
    6694 
    6695 /* Line 1806 of yacc.c  */
    6696 #line 1347 "parser.yy"
     5976#line 1347 "parser.yy" /* yacc.c:1646  */
    66975977    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     5978#line 5979 "Parser/parser.cc" /* yacc.c:1646  */
    66985979    break;
    66995980
    67005981  case 317:
    6701 
    6702 /* Line 1806 of yacc.c  */
    6703 #line 1350 "parser.yy"
     5982#line 1350 "parser.yy" /* yacc.c:1646  */
    67045983    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
     5984#line 5985 "Parser/parser.cc" /* yacc.c:1646  */
    67055985    break;
    67065986
    67075987  case 318:
    6708 
    6709 /* Line 1806 of yacc.c  */
    6710 #line 1352 "parser.yy"
     5988#line 1352 "parser.yy" /* yacc.c:1646  */
    67115989    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     5990#line 5991 "Parser/parser.cc" /* yacc.c:1646  */
    67125991    break;
    67135992
    67145993  case 319:
    6715 
    6716 /* Line 1806 of yacc.c  */
    6717 #line 1357 "parser.yy"
     5994#line 1357 "parser.yy" /* yacc.c:1646  */
    67185995    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     5996#line 5997 "Parser/parser.cc" /* yacc.c:1646  */
    67195997    break;
    67205998
    67215999  case 320:
    6722 
    6723 /* Line 1806 of yacc.c  */
    6724 #line 1359 "parser.yy"
     6000#line 1359 "parser.yy" /* yacc.c:1646  */
    67256001    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6002#line 6003 "Parser/parser.cc" /* yacc.c:1646  */
    67266003    break;
    67276004
    67286005  case 321:
    6729 
    6730 /* Line 1806 of yacc.c  */
    6731 #line 1361 "parser.yy"
     6006#line 1361 "parser.yy" /* yacc.c:1646  */
    67326007    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6008#line 6009 "Parser/parser.cc" /* yacc.c:1646  */
    67336009    break;
    67346010
    67356011  case 322:
    6736 
    6737 /* Line 1806 of yacc.c  */
    6738 #line 1363 "parser.yy"
     6012#line 1363 "parser.yy" /* yacc.c:1646  */
    67396013    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6014#line 6015 "Parser/parser.cc" /* yacc.c:1646  */
    67406015    break;
    67416016
    67426017  case 323:
    6743 
    6744 /* Line 1806 of yacc.c  */
    6745 #line 1365 "parser.yy"
     6018#line 1365 "parser.yy" /* yacc.c:1646  */
    67466019    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6020#line 6021 "Parser/parser.cc" /* yacc.c:1646  */
    67476021    break;
    67486022
    67496023  case 324:
    6750 
    6751 /* Line 1806 of yacc.c  */
    6752 #line 1367 "parser.yy"
     6024#line 1367 "parser.yy" /* yacc.c:1646  */
    67536025    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6026#line 6027 "Parser/parser.cc" /* yacc.c:1646  */
    67546027    break;
    67556028
    67566029  case 325:
    6757 
    6758 /* Line 1806 of yacc.c  */
    6759 #line 1369 "parser.yy"
     6030#line 1369 "parser.yy" /* yacc.c:1646  */
    67606031    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6032#line 6033 "Parser/parser.cc" /* yacc.c:1646  */
    67616033    break;
    67626034
    67636035  case 326:
    6764 
    6765 /* Line 1806 of yacc.c  */
    6766 #line 1371 "parser.yy"
     6036#line 1371 "parser.yy" /* yacc.c:1646  */
    67676037    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6038#line 6039 "Parser/parser.cc" /* yacc.c:1646  */
    67686039    break;
    67696040
    67706041  case 327:
    6771 
    6772 /* Line 1806 of yacc.c  */
    6773 #line 1373 "parser.yy"
     6042#line 1373 "parser.yy" /* yacc.c:1646  */
    67746043    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6044#line 6045 "Parser/parser.cc" /* yacc.c:1646  */
    67756045    break;
    67766046
    67776047  case 328:
    6778 
    6779 /* Line 1806 of yacc.c  */
    6780 #line 1375 "parser.yy"
     6048#line 1375 "parser.yy" /* yacc.c:1646  */
    67816049    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6050#line 6051 "Parser/parser.cc" /* yacc.c:1646  */
    67826051    break;
    67836052
    67846053  case 329:
    6785 
    6786 /* Line 1806 of yacc.c  */
    6787 #line 1377 "parser.yy"
     6054#line 1377 "parser.yy" /* yacc.c:1646  */
    67886055    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6056#line 6057 "Parser/parser.cc" /* yacc.c:1646  */
    67896057    break;
    67906058
    67916059  case 330:
    6792 
    6793 /* Line 1806 of yacc.c  */
    6794 #line 1379 "parser.yy"
     6060#line 1379 "parser.yy" /* yacc.c:1646  */
    67956061    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6062#line 6063 "Parser/parser.cc" /* yacc.c:1646  */
    67966063    break;
    67976064
    67986065  case 331:
    6799 
    6800 /* Line 1806 of yacc.c  */
    6801 #line 1381 "parser.yy"
     6066#line 1381 "parser.yy" /* yacc.c:1646  */
    68026067    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     6068#line 6069 "Parser/parser.cc" /* yacc.c:1646  */
    68036069    break;
    68046070
    68056071  case 333:
    6806 
    6807 /* Line 1806 of yacc.c  */
    6808 #line 1388 "parser.yy"
    6809     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6072#line 1388 "parser.yy" /* yacc.c:1646  */
     6073    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6074#line 6075 "Parser/parser.cc" /* yacc.c:1646  */
    68106075    break;
    68116076
    68126077  case 334:
    6813 
    6814 /* Line 1806 of yacc.c  */
    6815 #line 1390 "parser.yy"
    6816     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6078#line 1390 "parser.yy" /* yacc.c:1646  */
     6079    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6080#line 6081 "Parser/parser.cc" /* yacc.c:1646  */
    68176081    break;
    68186082
    68196083  case 335:
    6820 
    6821 /* Line 1806 of yacc.c  */
    6822 #line 1392 "parser.yy"
    6823     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6084#line 1392 "parser.yy" /* yacc.c:1646  */
     6085    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6086#line 6087 "Parser/parser.cc" /* yacc.c:1646  */
    68246087    break;
    68256088
    68266089  case 336:
    6827 
    6828 /* Line 1806 of yacc.c  */
    6829 #line 1394 "parser.yy"
    6830     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6090#line 1394 "parser.yy" /* yacc.c:1646  */
     6091    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
     6092#line 6093 "Parser/parser.cc" /* yacc.c:1646  */
    68316093    break;
    68326094
    68336095  case 338:
    6834 
    6835 /* Line 1806 of yacc.c  */
    6836 #line 1400 "parser.yy"
    6837     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6096#line 1400 "parser.yy" /* yacc.c:1646  */
     6097    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6098#line 6099 "Parser/parser.cc" /* yacc.c:1646  */
    68386099    break;
    68396100
    68406101  case 340:
    6841 
    6842 /* Line 1806 of yacc.c  */
    6843 #line 1407 "parser.yy"
    6844     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6102#line 1407 "parser.yy" /* yacc.c:1646  */
     6103    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6104#line 6105 "Parser/parser.cc" /* yacc.c:1646  */
    68456105    break;
    68466106
    68476107  case 341:
    6848 
    6849 /* Line 1806 of yacc.c  */
    6850 #line 1409 "parser.yy"
    6851     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6108#line 1409 "parser.yy" /* yacc.c:1646  */
     6109    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6110#line 6111 "Parser/parser.cc" /* yacc.c:1646  */
    68526111    break;
    68536112
    68546113  case 342:
    6855 
    6856 /* Line 1806 of yacc.c  */
    6857 #line 1411 "parser.yy"
    6858     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6114#line 1411 "parser.yy" /* yacc.c:1646  */
     6115    { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
     6116#line 6117 "Parser/parser.cc" /* yacc.c:1646  */
    68596117    break;
    68606118
    68616119  case 343:
    6862 
    6863 /* Line 1806 of yacc.c  */
    6864 #line 1416 "parser.yy"
    6865     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6120#line 1416 "parser.yy" /* yacc.c:1646  */
     6121    { (yyval.decl) = (yyvsp[-1].decl); }
     6122#line 6123 "Parser/parser.cc" /* yacc.c:1646  */
    68666123    break;
    68676124
    68686125  case 344:
    6869 
    6870 /* Line 1806 of yacc.c  */
    6871 #line 1418 "parser.yy"
    6872     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6126#line 1418 "parser.yy" /* yacc.c:1646  */
     6127    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
     6128#line 6129 "Parser/parser.cc" /* yacc.c:1646  */
    68736129    break;
    68746130
    68756131  case 345:
    6876 
    6877 /* Line 1806 of yacc.c  */
    6878 #line 1420 "parser.yy"
    6879     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6132#line 1420 "parser.yy" /* yacc.c:1646  */
     6133    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
     6134#line 6135 "Parser/parser.cc" /* yacc.c:1646  */
    68806135    break;
    68816136
    68826137  case 346:
    6883 
    6884 /* Line 1806 of yacc.c  */
    6885 #line 1422 "parser.yy"
    6886     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6138#line 1422 "parser.yy" /* yacc.c:1646  */
     6139    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
     6140#line 6141 "Parser/parser.cc" /* yacc.c:1646  */
    68876141    break;
    68886142
    68896143  case 348:
    6890 
    6891 /* Line 1806 of yacc.c  */
    6892 #line 1428 "parser.yy"
    6893     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6144#line 1428 "parser.yy" /* yacc.c:1646  */
     6145    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6146#line 6147 "Parser/parser.cc" /* yacc.c:1646  */
    68946147    break;
    68956148
    68966149  case 349:
    6897 
    6898 /* Line 1806 of yacc.c  */
    6899 #line 1430 "parser.yy"
    6900     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6150#line 1430 "parser.yy" /* yacc.c:1646  */
     6151    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6152#line 6153 "Parser/parser.cc" /* yacc.c:1646  */
    69016153    break;
    69026154
    69036155  case 350:
    6904 
    6905 /* Line 1806 of yacc.c  */
    6906 #line 1432 "parser.yy"
    6907     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6156#line 1432 "parser.yy" /* yacc.c:1646  */
     6157    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6158#line 6159 "Parser/parser.cc" /* yacc.c:1646  */
    69086159    break;
    69096160
    69106161  case 352:
    6911 
    6912 /* Line 1806 of yacc.c  */
    6913 #line 1438 "parser.yy"
    6914     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6162#line 1438 "parser.yy" /* yacc.c:1646  */
     6163    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6164#line 6165 "Parser/parser.cc" /* yacc.c:1646  */
    69156165    break;
    69166166
    69176167  case 353:
    6918 
    6919 /* Line 1806 of yacc.c  */
    6920 #line 1440 "parser.yy"
    6921     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6168#line 1440 "parser.yy" /* yacc.c:1646  */
     6169    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6170#line 6171 "Parser/parser.cc" /* yacc.c:1646  */
    69226171    break;
    69236172
    69246173  case 355:
    6925 
    6926 /* Line 1806 of yacc.c  */
    6927 #line 1446 "parser.yy"
    6928     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6174#line 1446 "parser.yy" /* yacc.c:1646  */
     6175    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6176#line 6177 "Parser/parser.cc" /* yacc.c:1646  */
    69296177    break;
    69306178
    69316179  case 356:
    6932 
    6933 /* Line 1806 of yacc.c  */
    6934 #line 1448 "parser.yy"
    6935     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6180#line 1448 "parser.yy" /* yacc.c:1646  */
     6181    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6182#line 6183 "Parser/parser.cc" /* yacc.c:1646  */
    69366183    break;
    69376184
    69386185  case 357:
    6939 
    6940 /* Line 1806 of yacc.c  */
    6941 #line 1450 "parser.yy"
    6942     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6186#line 1450 "parser.yy" /* yacc.c:1646  */
     6187    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6188#line 6189 "Parser/parser.cc" /* yacc.c:1646  */
    69436189    break;
    69446190
    69456191  case 358:
    6946 
    6947 /* Line 1806 of yacc.c  */
    6948 #line 1455 "parser.yy"
    6949     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6192#line 1455 "parser.yy" /* yacc.c:1646  */
     6193    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
     6194#line 6195 "Parser/parser.cc" /* yacc.c:1646  */
    69506195    break;
    69516196
    69526197  case 359:
    6953 
    6954 /* Line 1806 of yacc.c  */
    6955 #line 1457 "parser.yy"
    6956     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6198#line 1457 "parser.yy" /* yacc.c:1646  */
     6199    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
     6200#line 6201 "Parser/parser.cc" /* yacc.c:1646  */
    69576201    break;
    69586202
    69596203  case 360:
    6960 
    6961 /* Line 1806 of yacc.c  */
    6962 #line 1459 "parser.yy"
    6963     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6204#line 1459 "parser.yy" /* yacc.c:1646  */
     6205    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6206#line 6207 "Parser/parser.cc" /* yacc.c:1646  */
    69646207    break;
    69656208
    69666209  case 363:
    6967 
    6968 /* Line 1806 of yacc.c  */
    6969 #line 1469 "parser.yy"
    6970     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
     6210#line 1469 "parser.yy" /* yacc.c:1646  */
     6211    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), 0, 0, (yyvsp[-1].decl), true ); }
     6212#line 6213 "Parser/parser.cc" /* yacc.c:1646  */
    69716213    break;
    69726214
    69736215  case 364:
    6974 
    6975 /* Line 1806 of yacc.c  */
    6976 #line 1471 "parser.yy"
    6977     {
    6978                         typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    6979                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
     6216#line 1471 "parser.yy" /* yacc.c:1646  */
     6217    {
     6218                        typedefTable.makeTypedef( *(yyvsp[0].tok) );
     6219                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), 0, 0, false );
    69806220                }
     6221#line 6222 "Parser/parser.cc" /* yacc.c:1646  */
    69816222    break;
    69826223
    69836224  case 365:
    6984 
    6985 /* Line 1806 of yacc.c  */
    6986 #line 1476 "parser.yy"
    6987     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     6225#line 1476 "parser.yy" /* yacc.c:1646  */
     6226    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
     6227#line 6228 "Parser/parser.cc" /* yacc.c:1646  */
    69886228    break;
    69896229
    69906230  case 366:
    6991 
    6992 /* Line 1806 of yacc.c  */
    6993 #line 1478 "parser.yy"
    6994     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     6231#line 1478 "parser.yy" /* yacc.c:1646  */
     6232    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), 0, (yyvsp[-1].decl), true ); }
     6233#line 6234 "Parser/parser.cc" /* yacc.c:1646  */
    69956234    break;
    69966235
    69976236  case 367:
    6998 
    6999 /* Line 1806 of yacc.c  */
    7000 #line 1480 "parser.yy"
    7001     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     6237#line 1480 "parser.yy" /* yacc.c:1646  */
     6238    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), 0, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
     6239#line 6240 "Parser/parser.cc" /* yacc.c:1646  */
    70026240    break;
    70036241
    70046242  case 368:
    7005 
    7006 /* Line 1806 of yacc.c  */
    7007 #line 1482 "parser.yy"
    7008     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     6243#line 1482 "parser.yy" /* yacc.c:1646  */
     6244    { (yyval.decl) = (yyvsp[0].decl); }
     6245#line 6246 "Parser/parser.cc" /* yacc.c:1646  */
    70096246    break;
    70106247
    70116248  case 369:
    7012 
    7013 /* Line 1806 of yacc.c  */
    7014 #line 1487 "parser.yy"
     6249#line 1487 "parser.yy" /* yacc.c:1646  */
    70156250    { (yyval.aggKey) = DeclarationNode::Struct; }
     6251#line 6252 "Parser/parser.cc" /* yacc.c:1646  */
    70166252    break;
    70176253
    70186254  case 370:
    7019 
    7020 /* Line 1806 of yacc.c  */
    7021 #line 1489 "parser.yy"
     6255#line 1489 "parser.yy" /* yacc.c:1646  */
    70226256    { (yyval.aggKey) = DeclarationNode::Union; }
     6257#line 6258 "Parser/parser.cc" /* yacc.c:1646  */
    70236258    break;
    70246259
    70256260  case 371:
    7026 
    7027 /* Line 1806 of yacc.c  */
    7028 #line 1494 "parser.yy"
     6261#line 1494 "parser.yy" /* yacc.c:1646  */
    70296262    { (yyval.decl) = 0; }
     6263#line 6264 "Parser/parser.cc" /* yacc.c:1646  */
    70306264    break;
    70316265
    70326266  case 372:
    7033 
    7034 /* Line 1806 of yacc.c  */
    7035 #line 1496 "parser.yy"
    7036     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     6267#line 1496 "parser.yy" /* yacc.c:1646  */
     6268    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6269#line 6270 "Parser/parser.cc" /* yacc.c:1646  */
    70376270    break;
    70386271
    70396272  case 374:
    7040 
    7041 /* Line 1806 of yacc.c  */
    7042 #line 1502 "parser.yy"
    7043     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     6273#line 1502 "parser.yy" /* yacc.c:1646  */
     6274    { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
     6275#line 6276 "Parser/parser.cc" /* yacc.c:1646  */
    70446276    break;
    70456277
    70466278  case 376:
    7047 
    7048 /* Line 1806 of yacc.c  */
    7049 #line 1505 "parser.yy"
     6279#line 1505 "parser.yy" /* yacc.c:1646  */
    70506280    {   // mark all fields in list
    7051                         for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     6281                        for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    70526282                                iter->set_extension( true );
    7053                         (yyval.decl) = (yyvsp[(2) - (3)].decl);
     6283                        (yyval.decl) = (yyvsp[-1].decl);
    70546284                }
     6285#line 6286 "Parser/parser.cc" /* yacc.c:1646  */
    70556286    break;
    70566287
    70576288  case 378:
    7058 
    7059 /* Line 1806 of yacc.c  */
    7060 #line 1515 "parser.yy"
    7061     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     6289#line 1515 "parser.yy" /* yacc.c:1646  */
     6290    { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
     6291#line 6292 "Parser/parser.cc" /* yacc.c:1646  */
    70626292    break;
    70636293
    70646294  case 379:
    7065 
    7066 /* Line 1806 of yacc.c  */
    7067 #line 1517 "parser.yy"
    7068     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     6295#line 1517 "parser.yy" /* yacc.c:1646  */
     6296    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
     6297#line 6298 "Parser/parser.cc" /* yacc.c:1646  */
    70696298    break;
    70706299
    70716300  case 380:
    7072 
    7073 /* Line 1806 of yacc.c  */
    7074 #line 1519 "parser.yy"
    7075     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     6301#line 1519 "parser.yy" /* yacc.c:1646  */
     6302    { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
     6303#line 6304 "Parser/parser.cc" /* yacc.c:1646  */
    70766304    break;
    70776305
    70786306  case 381:
    7079 
    7080 /* Line 1806 of yacc.c  */
    7081 #line 1524 "parser.yy"
    7082     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     6307#line 1524 "parser.yy" /* yacc.c:1646  */
     6308    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6309#line 6310 "Parser/parser.cc" /* yacc.c:1646  */
    70836310    break;
    70846311
    70856312  case 382:
    7086 
    7087 /* Line 1806 of yacc.c  */
    7088 #line 1526 "parser.yy"
    7089     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     6313#line 1526 "parser.yy" /* yacc.c:1646  */
     6314    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
     6315#line 6316 "Parser/parser.cc" /* yacc.c:1646  */
    70906316    break;
    70916317
    70926318  case 383:
    7093 
    7094 /* Line 1806 of yacc.c  */
    7095 #line 1531 "parser.yy"
     6319#line 1531 "parser.yy" /* yacc.c:1646  */
    70966320    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     6321#line 6322 "Parser/parser.cc" /* yacc.c:1646  */
    70976322    break;
    70986323
    70996324  case 384:
    7100 
    7101 /* Line 1806 of yacc.c  */
    7102 #line 1533 "parser.yy"
    7103     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     6325#line 1533 "parser.yy" /* yacc.c:1646  */
     6326    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
     6327#line 6328 "Parser/parser.cc" /* yacc.c:1646  */
    71046328    break;
    71056329
    71066330  case 385:
    7107 
    7108 /* Line 1806 of yacc.c  */
    7109 #line 1536 "parser.yy"
    7110     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     6331#line 1536 "parser.yy" /* yacc.c:1646  */
     6332    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
     6333#line 6334 "Parser/parser.cc" /* yacc.c:1646  */
    71116334    break;
    71126335
    71136336  case 386:
    7114 
    7115 /* Line 1806 of yacc.c  */
    7116 #line 1539 "parser.yy"
    7117     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     6337#line 1539 "parser.yy" /* yacc.c:1646  */
     6338    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
     6339#line 6340 "Parser/parser.cc" /* yacc.c:1646  */
    71186340    break;
    71196341
    71206342  case 388:
    7121 
    7122 /* Line 1806 of yacc.c  */
    7123 #line 1545 "parser.yy"
     6343#line 1545 "parser.yy" /* yacc.c:1646  */
    71246344    { (yyval.en) = 0; }
     6345#line 6346 "Parser/parser.cc" /* yacc.c:1646  */
    71256346    break;
    71266347
    71276348  case 389:
    7128 
    7129 /* Line 1806 of yacc.c  */
    7130 #line 1547 "parser.yy"
    7131     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     6349#line 1547 "parser.yy" /* yacc.c:1646  */
     6350    { (yyval.en) = (yyvsp[0].en); }
     6351#line 6352 "Parser/parser.cc" /* yacc.c:1646  */
    71326352    break;
    71336353
    71346354  case 390:
    7135 
    7136 /* Line 1806 of yacc.c  */
    7137 #line 1552 "parser.yy"
    7138     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     6355#line 1552 "parser.yy" /* yacc.c:1646  */
     6356    { (yyval.en) = (yyvsp[0].en); }
     6357#line 6358 "Parser/parser.cc" /* yacc.c:1646  */
    71396358    break;
    71406359
    71416360  case 392:
    7142 
    7143 /* Line 1806 of yacc.c  */
    7144 #line 1561 "parser.yy"
    7145     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     6361#line 1561 "parser.yy" /* yacc.c:1646  */
     6362    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[-2].decl) ); }
     6363#line 6364 "Parser/parser.cc" /* yacc.c:1646  */
    71466364    break;
    71476365
    71486366  case 393:
    7149 
    7150 /* Line 1806 of yacc.c  */
    7151 #line 1563 "parser.yy"
    7152     {
    7153                         typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    7154                         (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
     6367#line 1563 "parser.yy" /* yacc.c:1646  */
     6368    {
     6369                        typedefTable.makeTypedef( *(yyvsp[0].tok) );
     6370                        (yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
    71556371                }
     6372#line 6373 "Parser/parser.cc" /* yacc.c:1646  */
    71566373    break;
    71576374
    71586375  case 394:
    7159 
    7160 /* Line 1806 of yacc.c  */
    7161 #line 1568 "parser.yy"
    7162     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     6376#line 1568 "parser.yy" /* yacc.c:1646  */
     6377    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
     6378#line 6379 "Parser/parser.cc" /* yacc.c:1646  */
    71636379    break;
    71646380
    71656381  case 395:
    7166 
    7167 /* Line 1806 of yacc.c  */
    7168 #line 1570 "parser.yy"
    7169     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     6382#line 1570 "parser.yy" /* yacc.c:1646  */
     6383    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
     6384#line 6385 "Parser/parser.cc" /* yacc.c:1646  */
    71706385    break;
    71716386
    71726387  case 396:
    7173 
    7174 /* Line 1806 of yacc.c  */
    7175 #line 1575 "parser.yy"
    7176     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     6388#line 1575 "parser.yy" /* yacc.c:1646  */
     6389    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
     6390#line 6391 "Parser/parser.cc" /* yacc.c:1646  */
    71776391    break;
    71786392
    71796393  case 397:
    7180 
    7181 /* Line 1806 of yacc.c  */
    7182 #line 1577 "parser.yy"
    7183     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     6394#line 1577 "parser.yy" /* yacc.c:1646  */
     6395    { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
     6396#line 6397 "Parser/parser.cc" /* yacc.c:1646  */
    71846397    break;
    71856398
    71866399  case 398:
    7187 
    7188 /* Line 1806 of yacc.c  */
    7189 #line 1582 "parser.yy"
     6400#line 1582 "parser.yy" /* yacc.c:1646  */
    71906401    { (yyval.en) = 0; }
     6402#line 6403 "Parser/parser.cc" /* yacc.c:1646  */
    71916403    break;
    71926404
    71936405  case 399:
    7194 
    7195 /* Line 1806 of yacc.c  */
    7196 #line 1584 "parser.yy"
    7197     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     6406#line 1584 "parser.yy" /* yacc.c:1646  */
     6407    { (yyval.en) = (yyvsp[0].en); }
     6408#line 6409 "Parser/parser.cc" /* yacc.c:1646  */
    71986409    break;
    71996410
    72006411  case 400:
    7201 
    7202 /* Line 1806 of yacc.c  */
    7203 #line 1591 "parser.yy"
     6412#line 1591 "parser.yy" /* yacc.c:1646  */
    72046413    { (yyval.decl) = 0; }
     6414#line 6415 "Parser/parser.cc" /* yacc.c:1646  */
    72056415    break;
    72066416
    72076417  case 404:
    7208 
    7209 /* Line 1806 of yacc.c  */
    7210 #line 1599 "parser.yy"
    7211     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     6418#line 1599 "parser.yy" /* yacc.c:1646  */
     6419    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6420#line 6421 "Parser/parser.cc" /* yacc.c:1646  */
    72126421    break;
    72136422
    72146423  case 405:
    7215 
    7216 /* Line 1806 of yacc.c  */
    7217 #line 1601 "parser.yy"
    7218     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     6424#line 1601 "parser.yy" /* yacc.c:1646  */
     6425    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6426#line 6427 "Parser/parser.cc" /* yacc.c:1646  */
    72196427    break;
    72206428
    72216429  case 406:
    7222 
    7223 /* Line 1806 of yacc.c  */
    7224 #line 1603 "parser.yy"
    7225     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     6430#line 1603 "parser.yy" /* yacc.c:1646  */
     6431    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6432#line 6433 "Parser/parser.cc" /* yacc.c:1646  */
    72266433    break;
    72276434
    72286435  case 408:
    7229 
    7230 /* Line 1806 of yacc.c  */
    7231 #line 1611 "parser.yy"
    7232     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     6436#line 1611 "parser.yy" /* yacc.c:1646  */
     6437    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6438#line 6439 "Parser/parser.cc" /* yacc.c:1646  */
    72336439    break;
    72346440
    72356441  case 409:
    7236 
    7237 /* Line 1806 of yacc.c  */
    7238 #line 1613 "parser.yy"
    7239     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     6442#line 1613 "parser.yy" /* yacc.c:1646  */
     6443    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6444#line 6445 "Parser/parser.cc" /* yacc.c:1646  */
    72406445    break;
    72416446
    72426447  case 410:
    7243 
    7244 /* Line 1806 of yacc.c  */
    7245 #line 1615 "parser.yy"
    7246     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     6448#line 1615 "parser.yy" /* yacc.c:1646  */
     6449    { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
     6450#line 6451 "Parser/parser.cc" /* yacc.c:1646  */
    72476451    break;
    72486452
    72496453  case 412:
    7250 
    7251 /* Line 1806 of yacc.c  */
    7252 #line 1621 "parser.yy"
    7253     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     6454#line 1621 "parser.yy" /* yacc.c:1646  */
     6455    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6456#line 6457 "Parser/parser.cc" /* yacc.c:1646  */
    72546457    break;
    72556458
    72566459  case 413:
    7257 
    7258 /* Line 1806 of yacc.c  */
    7259 #line 1626 "parser.yy"
     6460#line 1626 "parser.yy" /* yacc.c:1646  */
    72606461    { (yyval.decl) = 0; }
     6462#line 6463 "Parser/parser.cc" /* yacc.c:1646  */
    72616463    break;
    72626464
    72636465  case 416:
    7264 
    7265 /* Line 1806 of yacc.c  */
    7266 #line 1633 "parser.yy"
    7267     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     6466#line 1633 "parser.yy" /* yacc.c:1646  */
     6467    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6468#line 6469 "Parser/parser.cc" /* yacc.c:1646  */
    72686469    break;
    72696470
    72706471  case 419:
    7271 
    7272 /* Line 1806 of yacc.c  */
    7273 #line 1640 "parser.yy"
    7274     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     6472#line 1640 "parser.yy" /* yacc.c:1646  */
     6473    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6474#line 6475 "Parser/parser.cc" /* yacc.c:1646  */
    72756475    break;
    72766476
    72776477  case 420:
    7278 
    7279 /* Line 1806 of yacc.c  */
    7280 #line 1642 "parser.yy"
    7281     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     6478#line 1642 "parser.yy" /* yacc.c:1646  */
     6479    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6480#line 6481 "Parser/parser.cc" /* yacc.c:1646  */
    72826481    break;
    72836482
    72846483  case 422:
    7285 
    7286 /* Line 1806 of yacc.c  */
    7287 #line 1651 "parser.yy"
    7288     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     6484#line 1651 "parser.yy" /* yacc.c:1646  */
     6485    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
     6486#line 6487 "Parser/parser.cc" /* yacc.c:1646  */
    72896487    break;
    72906488
    72916489  case 423:
    7292 
    7293 /* Line 1806 of yacc.c  */
    7294 #line 1654 "parser.yy"
    7295     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     6490#line 1654 "parser.yy" /* yacc.c:1646  */
     6491    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
     6492#line 6493 "Parser/parser.cc" /* yacc.c:1646  */
    72966493    break;
    72976494
    72986495  case 424:
    7299 
    7300 /* Line 1806 of yacc.c  */
    7301 #line 1656 "parser.yy"
    7302     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     6496#line 1656 "parser.yy" /* yacc.c:1646  */
     6497    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
     6498#line 6499 "Parser/parser.cc" /* yacc.c:1646  */
    73036499    break;
    73046500
    73056501  case 429:
    7306 
    7307 /* Line 1806 of yacc.c  */
    7308 #line 1666 "parser.yy"
    7309     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6502#line 1666 "parser.yy" /* yacc.c:1646  */
     6503    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6504#line 6505 "Parser/parser.cc" /* yacc.c:1646  */
    73106505    break;
    73116506
    73126507  case 431:
    7313 
    7314 /* Line 1806 of yacc.c  */
    7315 #line 1672 "parser.yy"
     6508#line 1672 "parser.yy" /* yacc.c:1646  */
    73166509    {
    73176510                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7318                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     6511                        (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
    73196512                }
     6513#line 6514 "Parser/parser.cc" /* yacc.c:1646  */
    73206514    break;
    73216515
    73226516  case 432:
    7323 
    7324 /* Line 1806 of yacc.c  */
    7325 #line 1677 "parser.yy"
     6517#line 1677 "parser.yy" /* yacc.c:1646  */
    73266518    {
    73276519                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7328                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     6520                        (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
    73296521                }
     6522#line 6523 "Parser/parser.cc" /* yacc.c:1646  */
    73306523    break;
    73316524
    73326525  case 434:
    7333 
    7334 /* Line 1806 of yacc.c  */
    7335 #line 1686 "parser.yy"
    7336     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     6526#line 1686 "parser.yy" /* yacc.c:1646  */
     6527    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6528#line 6529 "Parser/parser.cc" /* yacc.c:1646  */
    73376529    break;
    73386530
    73396531  case 435:
    7340 
    7341 /* Line 1806 of yacc.c  */
    7342 #line 1695 "parser.yy"
    7343     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     6532#line 1695 "parser.yy" /* yacc.c:1646  */
     6533    { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
     6534#line 6535 "Parser/parser.cc" /* yacc.c:1646  */
    73446535    break;
    73456536
    73466537  case 436:
    7347 
    7348 /* Line 1806 of yacc.c  */
    7349 #line 1697 "parser.yy"
    7350     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     6538#line 1697 "parser.yy" /* yacc.c:1646  */
     6539    { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
     6540#line 6541 "Parser/parser.cc" /* yacc.c:1646  */
    73516541    break;
    73526542
    73536543  case 448:
    7354 
    7355 /* Line 1806 of yacc.c  */
    7356 #line 1722 "parser.yy"
    7357     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     6544#line 1722 "parser.yy" /* yacc.c:1646  */
     6545    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6546#line 6547 "Parser/parser.cc" /* yacc.c:1646  */
    73586547    break;
    73596548
    73606549  case 452:
    7361 
    7362 /* Line 1806 of yacc.c  */
    7363 #line 1730 "parser.yy"
    7364     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     6550#line 1730 "parser.yy" /* yacc.c:1646  */
     6551    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6552#line 6553 "Parser/parser.cc" /* yacc.c:1646  */
    73656553    break;
    73666554
    73676555  case 453:
    7368 
    7369 /* Line 1806 of yacc.c  */
    7370 #line 1735 "parser.yy"
     6556#line 1735 "parser.yy" /* yacc.c:1646  */
    73716557    { (yyval.in) = 0; }
     6558#line 6559 "Parser/parser.cc" /* yacc.c:1646  */
    73726559    break;
    73736560
    73746561  case 454:
    7375 
    7376 /* Line 1806 of yacc.c  */
    7377 #line 1737 "parser.yy"
    7378     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     6562#line 1737 "parser.yy" /* yacc.c:1646  */
     6563    { (yyval.in) = (yyvsp[0].in); }
     6564#line 6565 "Parser/parser.cc" /* yacc.c:1646  */
    73796565    break;
    73806566
    73816567  case 455:
    7382 
    7383 /* Line 1806 of yacc.c  */
    7384 #line 1739 "parser.yy"
    7385     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     6568#line 1739 "parser.yy" /* yacc.c:1646  */
     6569    { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
     6570#line 6571 "Parser/parser.cc" /* yacc.c:1646  */
    73866571    break;
    73876572
    73886573  case 456:
    7389 
    7390 /* Line 1806 of yacc.c  */
    7391 #line 1743 "parser.yy"
    7392     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     6574#line 1743 "parser.yy" /* yacc.c:1646  */
     6575    { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
     6576#line 6577 "Parser/parser.cc" /* yacc.c:1646  */
    73936577    break;
    73946578
    73956579  case 457:
    7396 
    7397 /* Line 1806 of yacc.c  */
    7398 #line 1744 "parser.yy"
    7399     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     6580#line 1744 "parser.yy" /* yacc.c:1646  */
     6581    { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
     6582#line 6583 "Parser/parser.cc" /* yacc.c:1646  */
    74006583    break;
    74016584
    74026585  case 458:
    7403 
    7404 /* Line 1806 of yacc.c  */
    7405 #line 1749 "parser.yy"
     6586#line 1749 "parser.yy" /* yacc.c:1646  */
    74066587    { (yyval.in) = 0; }
     6588#line 6589 "Parser/parser.cc" /* yacc.c:1646  */
    74076589    break;
    74086590
    74096591  case 460:
    7410 
    7411 /* Line 1806 of yacc.c  */
    7412 #line 1751 "parser.yy"
    7413     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     6592#line 1751 "parser.yy" /* yacc.c:1646  */
     6593    { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
     6594#line 6595 "Parser/parser.cc" /* yacc.c:1646  */
    74146595    break;
    74156596
    74166597  case 461:
    7417 
    7418 /* Line 1806 of yacc.c  */
    7419 #line 1752 "parser.yy"
    7420     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     6598#line 1752 "parser.yy" /* yacc.c:1646  */
     6599    { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
     6600#line 6601 "Parser/parser.cc" /* yacc.c:1646  */
    74216601    break;
    74226602
    74236603  case 462:
    7424 
    7425 /* Line 1806 of yacc.c  */
    7426 #line 1754 "parser.yy"
    7427     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     6604#line 1754 "parser.yy" /* yacc.c:1646  */
     6605    { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
     6606#line 6607 "Parser/parser.cc" /* yacc.c:1646  */
    74286607    break;
    74296608
    74306609  case 464:
    7431 
    7432 /* Line 1806 of yacc.c  */
    7433 #line 1770 "parser.yy"
    7434     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     6610#line 1770 "parser.yy" /* yacc.c:1646  */
     6611    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
     6612#line 6613 "Parser/parser.cc" /* yacc.c:1646  */
    74356613    break;
    74366614
    74376615  case 466:
    7438 
    7439 /* Line 1806 of yacc.c  */
    7440 #line 1776 "parser.yy"
    7441     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     6616#line 1776 "parser.yy" /* yacc.c:1646  */
     6617    { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
     6618#line 6619 "Parser/parser.cc" /* yacc.c:1646  */
    74426619    break;
    74436620
    74446621  case 467:
    7445 
    7446 /* Line 1806 of yacc.c  */
    7447 #line 1782 "parser.yy"
    7448     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     6622#line 1782 "parser.yy" /* yacc.c:1646  */
     6623    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     6624#line 6625 "Parser/parser.cc" /* yacc.c:1646  */
    74496625    break;
    74506626
    74516627  case 468:
    7452 
    7453 /* Line 1806 of yacc.c  */
    7454 #line 1785 "parser.yy"
    7455     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     6628#line 1785 "parser.yy" /* yacc.c:1646  */
     6629    { (yyval.en) = (yyvsp[-2].en); }
     6630#line 6631 "Parser/parser.cc" /* yacc.c:1646  */
    74566631    break;
    74576632
    74586633  case 469:
    7459 
    7460 /* Line 1806 of yacc.c  */
    7461 #line 1787 "parser.yy"
    7462     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     6634#line 1787 "parser.yy" /* yacc.c:1646  */
     6635    { (yyval.en) = (yyvsp[-2].en); }
     6636#line 6637 "Parser/parser.cc" /* yacc.c:1646  */
    74636637    break;
    74646638
    74656639  case 470:
    7466 
    7467 /* Line 1806 of yacc.c  */
    7468 #line 1789 "parser.yy"
    7469     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     6640#line 1789 "parser.yy" /* yacc.c:1646  */
     6641    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     6642#line 6643 "Parser/parser.cc" /* yacc.c:1646  */
    74706643    break;
    74716644
    74726645  case 471:
    7473 
    7474 /* Line 1806 of yacc.c  */
    7475 #line 1791 "parser.yy"
    7476     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     6646#line 1791 "parser.yy" /* yacc.c:1646  */
     6647    { (yyval.en) = (yyvsp[-2].en); }
     6648#line 6649 "Parser/parser.cc" /* yacc.c:1646  */
    74776649    break;
    74786650
    74796651  case 473:
    7480 
    7481 /* Line 1806 of yacc.c  */
    7482 #line 1815 "parser.yy"
    7483     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6652#line 1815 "parser.yy" /* yacc.c:1646  */
     6653    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6654#line 6655 "Parser/parser.cc" /* yacc.c:1646  */
    74846655    break;
    74856656
    74866657  case 474:
    7487 
    7488 /* Line 1806 of yacc.c  */
    7489 #line 1817 "parser.yy"
    7490     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6658#line 1817 "parser.yy" /* yacc.c:1646  */
     6659    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6660#line 6661 "Parser/parser.cc" /* yacc.c:1646  */
    74916661    break;
    74926662
    74936663  case 475:
    7494 
    7495 /* Line 1806 of yacc.c  */
    7496 #line 1819 "parser.yy"
    7497     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6664#line 1819 "parser.yy" /* yacc.c:1646  */
     6665    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6666#line 6667 "Parser/parser.cc" /* yacc.c:1646  */
    74986667    break;
    74996668
    75006669  case 477:
    7501 
    7502 /* Line 1806 of yacc.c  */
    7503 #line 1825 "parser.yy"
    7504     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6670#line 1825 "parser.yy" /* yacc.c:1646  */
     6671    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6672#line 6673 "Parser/parser.cc" /* yacc.c:1646  */
    75056673    break;
    75066674
    75076675  case 478:
    7508 
    7509 /* Line 1806 of yacc.c  */
    7510 #line 1827 "parser.yy"
    7511     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6676#line 1827 "parser.yy" /* yacc.c:1646  */
     6677    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6678#line 6679 "Parser/parser.cc" /* yacc.c:1646  */
    75126679    break;
    75136680
    75146681  case 479:
    7515 
    7516 /* Line 1806 of yacc.c  */
    7517 #line 1832 "parser.yy"
    7518     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6682#line 1832 "parser.yy" /* yacc.c:1646  */
     6683    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
     6684#line 6685 "Parser/parser.cc" /* yacc.c:1646  */
    75196685    break;
    75206686
    75216687  case 481:
    7522 
    7523 /* Line 1806 of yacc.c  */
    7524 #line 1838 "parser.yy"
    7525     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     6688#line 1838 "parser.yy" /* yacc.c:1646  */
     6689    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
     6690#line 6691 "Parser/parser.cc" /* yacc.c:1646  */
    75266691    break;
    75276692
    75286693  case 482:
    7529 
    7530 /* Line 1806 of yacc.c  */
    7531 #line 1843 "parser.yy"
    7532     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     6694#line 1843 "parser.yy" /* yacc.c:1646  */
     6695    { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
     6696#line 6697 "Parser/parser.cc" /* yacc.c:1646  */
    75336697    break;
    75346698
    75356699  case 483:
    7536 
    7537 /* Line 1806 of yacc.c  */
    7538 #line 1845 "parser.yy"
    7539     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     6700#line 1845 "parser.yy" /* yacc.c:1646  */
     6701    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
     6702#line 6703 "Parser/parser.cc" /* yacc.c:1646  */
    75406703    break;
    75416704
    75426705  case 485:
    7543 
    7544 /* Line 1806 of yacc.c  */
    7545 #line 1851 "parser.yy"
     6706#line 1851 "parser.yy" /* yacc.c:1646  */
    75466707    { (yyval.tclass) = DeclarationNode::Type; }
     6708#line 6709 "Parser/parser.cc" /* yacc.c:1646  */
    75476709    break;
    75486710
    75496711  case 486:
    7550 
    7551 /* Line 1806 of yacc.c  */
    7552 #line 1853 "parser.yy"
     6712#line 1853 "parser.yy" /* yacc.c:1646  */
    75536713    { (yyval.tclass) = DeclarationNode::Ftype; }
     6714#line 6715 "Parser/parser.cc" /* yacc.c:1646  */
    75546715    break;
    75556716
    75566717  case 487:
    7557 
    7558 /* Line 1806 of yacc.c  */
    7559 #line 1855 "parser.yy"
     6718#line 1855 "parser.yy" /* yacc.c:1646  */
    75606719    { (yyval.tclass) = DeclarationNode::Dtype; }
     6720#line 6721 "Parser/parser.cc" /* yacc.c:1646  */
    75616721    break;
    75626722
    75636723  case 488:
    7564 
    7565 /* Line 1806 of yacc.c  */
    7566 #line 1860 "parser.yy"
     6724#line 1860 "parser.yy" /* yacc.c:1646  */
    75676725    { (yyval.decl) = 0; }
     6726#line 6727 "Parser/parser.cc" /* yacc.c:1646  */
    75686727    break;
    75696728
    75706729  case 489:
    7571 
    7572 /* Line 1806 of yacc.c  */
    7573 #line 1862 "parser.yy"
    7574     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     6730#line 1862 "parser.yy" /* yacc.c:1646  */
     6731    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6732#line 6733 "Parser/parser.cc" /* yacc.c:1646  */
    75756733    break;
    75766734
    75776735  case 490:
    7578 
    7579 /* Line 1806 of yacc.c  */
    7580 #line 1867 "parser.yy"
    7581     {
    7582                         typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
    7583                         (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
     6736#line 1867 "parser.yy" /* yacc.c:1646  */
     6737    {
     6738                        typedefTable.openTrait( *(yyvsp[-3].tok) );
     6739                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
    75846740                }
     6741#line 6742 "Parser/parser.cc" /* yacc.c:1646  */
    75856742    break;
    75866743
    75876744  case 491:
    7588 
    7589 /* Line 1806 of yacc.c  */
    7590 #line 1872 "parser.yy"
    7591     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     6745#line 1872 "parser.yy" /* yacc.c:1646  */
     6746    { (yyval.decl) = (yyvsp[-1].decl); }
     6747#line 6748 "Parser/parser.cc" /* yacc.c:1646  */
    75926748    break;
    75936749
    75946750  case 492:
    7595 
    7596 /* Line 1806 of yacc.c  */
    7597 #line 1874 "parser.yy"
     6751#line 1874 "parser.yy" /* yacc.c:1646  */
    75986752    { (yyval.decl) = 0; }
     6753#line 6754 "Parser/parser.cc" /* yacc.c:1646  */
    75996754    break;
    76006755
    76016756  case 493:
    7602 
    7603 /* Line 1806 of yacc.c  */
    7604 #line 1879 "parser.yy"
    7605     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     6757#line 1879 "parser.yy" /* yacc.c:1646  */
     6758    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
     6759#line 6760 "Parser/parser.cc" /* yacc.c:1646  */
    76066760    break;
    76076761
    76086762  case 495:
    7609 
    7610 /* Line 1806 of yacc.c  */
    7611 #line 1882 "parser.yy"
    7612     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     6763#line 1882 "parser.yy" /* yacc.c:1646  */
     6764    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
     6765#line 6766 "Parser/parser.cc" /* yacc.c:1646  */
    76136766    break;
    76146767
    76156768  case 496:
    7616 
    7617 /* Line 1806 of yacc.c  */
    7618 #line 1884 "parser.yy"
    7619     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     6769#line 1884 "parser.yy" /* yacc.c:1646  */
     6770    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
     6771#line 6772 "Parser/parser.cc" /* yacc.c:1646  */
    76206772    break;
    76216773
    76226774  case 497:
    7623 
    7624 /* Line 1806 of yacc.c  */
    7625 #line 1889 "parser.yy"
    7626     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     6775#line 1889 "parser.yy" /* yacc.c:1646  */
     6776    { (yyval.decl) = (yyvsp[0].decl); }
     6777#line 6778 "Parser/parser.cc" /* yacc.c:1646  */
    76276778    break;
    76286779
    76296780  case 498:
    7630 
    7631 /* Line 1806 of yacc.c  */
    7632 #line 1891 "parser.yy"
    7633     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     6781#line 1891 "parser.yy" /* yacc.c:1646  */
     6782    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
     6783#line 6784 "Parser/parser.cc" /* yacc.c:1646  */
    76346784    break;
    76356785
    76366786  case 499:
    7637 
    7638 /* Line 1806 of yacc.c  */
    7639 #line 1893 "parser.yy"
    7640     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     6787#line 1893 "parser.yy" /* yacc.c:1646  */
     6788    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
     6789#line 6790 "Parser/parser.cc" /* yacc.c:1646  */
    76416790    break;
    76426791
    76436792  case 500:
    7644 
    7645 /* Line 1806 of yacc.c  */
    7646 #line 1898 "parser.yy"
    7647     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     6793#line 1898 "parser.yy" /* yacc.c:1646  */
     6794    { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
     6795#line 6796 "Parser/parser.cc" /* yacc.c:1646  */
    76486796    break;
    76496797
    76506798  case 501:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1900 "parser.yy"
    7654     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     6799#line 1900 "parser.yy" /* yacc.c:1646  */
     6800    { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
     6801#line 6802 "Parser/parser.cc" /* yacc.c:1646  */
    76556802    break;
    76566803
    76576804  case 502:
    7658 
    7659 /* Line 1806 of yacc.c  */
    7660 #line 1905 "parser.yy"
    7661     {
    7662                         typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
    7663                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
     6805#line 1905 "parser.yy" /* yacc.c:1646  */
     6806    {
     6807                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
     6808                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
    76646809                }
     6810#line 6811 "Parser/parser.cc" /* yacc.c:1646  */
    76656811    break;
    76666812
    76676813  case 503:
    7668 
    7669 /* Line 1806 of yacc.c  */
    7670 #line 1910 "parser.yy"
    7671     {
    7672                         typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
    7673                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
     6814#line 1910 "parser.yy" /* yacc.c:1646  */
     6815    {
     6816                        typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
     6817                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
    76746818                }
     6819#line 6820 "Parser/parser.cc" /* yacc.c:1646  */
    76756820    break;
    76766821
    76776822  case 504:
    7678 
    7679 /* Line 1806 of yacc.c  */
    7680 #line 1918 "parser.yy"
    7681     {
    7682                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
    7683                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
     6823#line 1918 "parser.yy" /* yacc.c:1646  */
     6824    {
     6825                        typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
     6826                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
    76846827                }
     6828#line 6829 "Parser/parser.cc" /* yacc.c:1646  */
    76856829    break;
    76866830
    76876831  case 505:
    7688 
    7689 /* Line 1806 of yacc.c  */
    7690 #line 1923 "parser.yy"
    7691     {
    7692                         typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     6832#line 1923 "parser.yy" /* yacc.c:1646  */
     6833    {
     6834                        typedefTable.enterTrait( *(yyvsp[-6].tok) );
    76936835                        typedefTable.enterScope();
    76946836                }
     6837#line 6838 "Parser/parser.cc" /* yacc.c:1646  */
    76956838    break;
    76966839
    76976840  case 506:
    7698 
    7699 /* Line 1806 of yacc.c  */
    7700 #line 1928 "parser.yy"
     6841#line 1928 "parser.yy" /* yacc.c:1646  */
    77016842    {
    77026843                        typedefTable.leaveTrait();
    7703                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
    7704                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
     6844                        typedefTable.addToEnclosingScope( *(yyvsp[-9].tok), TypedefTable::ID );
     6845                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
    77056846                }
     6847#line 6848 "Parser/parser.cc" /* yacc.c:1646  */
    77066848    break;
    77076849
    77086850  case 508:
    7709 
    7710 /* Line 1806 of yacc.c  */
    7711 #line 1938 "parser.yy"
    7712     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6851#line 1938 "parser.yy" /* yacc.c:1646  */
     6852    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     6853#line 6854 "Parser/parser.cc" /* yacc.c:1646  */
    77136854    break;
    77146855
    77156856  case 511:
    7716 
    7717 /* Line 1806 of yacc.c  */
    7718 #line 1948 "parser.yy"
     6857#line 1948 "parser.yy" /* yacc.c:1646  */
    77196858    {
    77206859                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7721                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
     6860                        (yyval.decl) = (yyvsp[0].decl);
    77226861                }
     6862#line 6863 "Parser/parser.cc" /* yacc.c:1646  */
    77236863    break;
    77246864
    77256865  case 512:
    7726 
    7727 /* Line 1806 of yacc.c  */
    7728 #line 1953 "parser.yy"
     6866#line 1953 "parser.yy" /* yacc.c:1646  */
    77296867    {
    77306868                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7731                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
     6869                        (yyval.decl) = (yyvsp[0].decl);
    77326870                }
     6871#line 6872 "Parser/parser.cc" /* yacc.c:1646  */
    77336872    break;
    77346873
    77356874  case 513:
    7736 
    7737 /* Line 1806 of yacc.c  */
    7738 #line 1958 "parser.yy"
    7739     {
    7740                         typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
    7741                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
     6875#line 1958 "parser.yy" /* yacc.c:1646  */
     6876    {
     6877                        typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
     6878                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    77426879                }
     6880#line 6881 "Parser/parser.cc" /* yacc.c:1646  */
    77436881    break;
    77446882
    77456883  case 514:
    7746 
    7747 /* Line 1806 of yacc.c  */
    7748 #line 1966 "parser.yy"
     6884#line 1966 "parser.yy" /* yacc.c:1646  */
    77496885    {
    77506886                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7751                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
     6887                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
    77526888                }
     6889#line 6890 "Parser/parser.cc" /* yacc.c:1646  */
    77536890    break;
    77546891
    77556892  case 515:
    7756 
    7757 /* Line 1806 of yacc.c  */
    7758 #line 1971 "parser.yy"
     6893#line 1971 "parser.yy" /* yacc.c:1646  */
    77596894    {
    77606895                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7761                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
     6896                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
    77626897                }
     6898#line 6899 "Parser/parser.cc" /* yacc.c:1646  */
    77636899    break;
    77646900
    77656901  case 516:
    7766 
    7767 /* Line 1806 of yacc.c  */
    7768 #line 1981 "parser.yy"
     6902#line 1981 "parser.yy" /* yacc.c:1646  */
    77696903    {}
     6904#line 6905 "Parser/parser.cc" /* yacc.c:1646  */
    77706905    break;
    77716906
    77726907  case 517:
    7773 
    7774 /* Line 1806 of yacc.c  */
    7775 #line 1983 "parser.yy"
    7776     { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
     6908#line 1983 "parser.yy" /* yacc.c:1646  */
     6909    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);    }
     6910#line 6911 "Parser/parser.cc" /* yacc.c:1646  */
    77776911    break;
    77786912
    77796913  case 519:
    7780 
    7781 /* Line 1806 of yacc.c  */
    7782 #line 1989 "parser.yy"
    7783     { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     6914#line 1989 "parser.yy" /* yacc.c:1646  */
     6915    { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6916#line 6917 "Parser/parser.cc" /* yacc.c:1646  */
    77846917    break;
    77856918
    77866919  case 520:
    7787 
    7788 /* Line 1806 of yacc.c  */
    7789 #line 1994 "parser.yy"
     6920#line 1994 "parser.yy" /* yacc.c:1646  */
    77906921    { (yyval.decl) = 0; }
     6922#line 6923 "Parser/parser.cc" /* yacc.c:1646  */
    77916923    break;
    77926924
    77936925  case 524:
    7794 
    7795 /* Line 1806 of yacc.c  */
    7796 #line 2002 "parser.yy"
     6926#line 2002 "parser.yy" /* yacc.c:1646  */
    77976927    {}
     6928#line 6929 "Parser/parser.cc" /* yacc.c:1646  */
    77986929    break;
    77996930
    78006931  case 525:
    7801 
    7802 /* Line 1806 of yacc.c  */
    7803 #line 2004 "parser.yy"
     6932#line 2004 "parser.yy" /* yacc.c:1646  */
    78046933    {
    78056934                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    7806                         linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
     6935                        linkage = LinkageSpec::fromString( *(yyvsp[0].tok) );
    78076936                }
     6937#line 6938 "Parser/parser.cc" /* yacc.c:1646  */
    78086938    break;
    78096939
    78106940  case 526:
    7811 
    7812 /* Line 1806 of yacc.c  */
    7813 #line 2009 "parser.yy"
     6941#line 2009 "parser.yy" /* yacc.c:1646  */
    78146942    {
    78156943                        linkage = linkageStack.top();
    78166944                        linkageStack.pop();
    7817                         (yyval.decl) = (yyvsp[(5) - (6)].decl);
     6945                        (yyval.decl) = (yyvsp[-1].decl);
    78186946                }
     6947#line 6948 "Parser/parser.cc" /* yacc.c:1646  */
    78196948    break;
    78206949
    78216950  case 527:
    7822 
    7823 /* Line 1806 of yacc.c  */
    7824 #line 2015 "parser.yy"
     6951#line 2015 "parser.yy" /* yacc.c:1646  */
    78256952    {   // mark all fields in list
    7826                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     6953                        for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    78276954                                iter->set_extension( true );
    7828                         (yyval.decl) = (yyvsp[(2) - (2)].decl);
     6955                        (yyval.decl) = (yyvsp[0].decl);
    78296956                }
     6957#line 6958 "Parser/parser.cc" /* yacc.c:1646  */
    78306958    break;
    78316959
    78326960  case 529:
    7833 
    7834 /* Line 1806 of yacc.c  */
    7835 #line 2030 "parser.yy"
     6961#line 2030 "parser.yy" /* yacc.c:1646  */
    78366962    {
    78376963                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78386964                        typedefTable.leaveScope();
    7839                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
     6965                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
    78406966                }
     6967#line 6968 "Parser/parser.cc" /* yacc.c:1646  */
    78416968    break;
    78426969
    78436970  case 530:
    7844 
    7845 /* Line 1806 of yacc.c  */
    7846 #line 2036 "parser.yy"
     6971#line 2036 "parser.yy" /* yacc.c:1646  */
    78476972    {
    78486973                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78496974                        typedefTable.leaveScope();
    7850                         (yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
     6975                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
    78516976                }
     6977#line 6978 "Parser/parser.cc" /* yacc.c:1646  */
    78526978    break;
    78536979
    78546980  case 531:
    7855 
    7856 /* Line 1806 of yacc.c  */
    7857 #line 2045 "parser.yy"
     6981#line 2045 "parser.yy" /* yacc.c:1646  */
    78586982    {
    78596983                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78606984                        typedefTable.leaveScope();
    7861                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
     6985                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
    78626986                }
     6987#line 6988 "Parser/parser.cc" /* yacc.c:1646  */
    78636988    break;
    78646989
    78656990  case 532:
    7866 
    7867 /* Line 1806 of yacc.c  */
    7868 #line 2051 "parser.yy"
     6991#line 2051 "parser.yy" /* yacc.c:1646  */
    78696992    {
    78706993                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78716994                        typedefTable.leaveScope();
    7872                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
     6995                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
    78736996                }
     6997#line 6998 "Parser/parser.cc" /* yacc.c:1646  */
    78746998    break;
    78756999
    78767000  case 533:
    7877 
    7878 /* Line 1806 of yacc.c  */
    7879 #line 2057 "parser.yy"
     7001#line 2057 "parser.yy" /* yacc.c:1646  */
    78807002    {
    78817003                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78827004                        typedefTable.leaveScope();
    7883                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
     7005                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
    78847006                }
     7007#line 7008 "Parser/parser.cc" /* yacc.c:1646  */
    78857008    break;
    78867009
    78877010  case 534:
    7888 
    7889 /* Line 1806 of yacc.c  */
    7890 #line 2063 "parser.yy"
     7011#line 2063 "parser.yy" /* yacc.c:1646  */
    78917012    {
    78927013                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78937014                        typedefTable.leaveScope();
    7894                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
     7015                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
    78957016                }
     7017#line 7018 "Parser/parser.cc" /* yacc.c:1646  */
    78967018    break;
    78977019
    78987020  case 535:
    7899 
    7900 /* Line 1806 of yacc.c  */
    7901 #line 2069 "parser.yy"
     7021#line 2069 "parser.yy" /* yacc.c:1646  */
    79027022    {
    79037023                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79047024                        typedefTable.leaveScope();
    7905                         (yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
     7025                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
    79067026                }
     7027#line 7028 "Parser/parser.cc" /* yacc.c:1646  */
    79077028    break;
    79087029
    79097030  case 536:
    7910 
    7911 /* Line 1806 of yacc.c  */
    7912 #line 2077 "parser.yy"
     7031#line 2077 "parser.yy" /* yacc.c:1646  */
    79137032    {
    79147033                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79157034                        typedefTable.leaveScope();
    7916                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
     7035                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
    79177036                }
     7037#line 7038 "Parser/parser.cc" /* yacc.c:1646  */
    79187038    break;
    79197039
    79207040  case 537:
    7921 
    7922 /* Line 1806 of yacc.c  */
    7923 #line 2083 "parser.yy"
     7041#line 2083 "parser.yy" /* yacc.c:1646  */
    79247042    {
    79257043                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79267044                        typedefTable.leaveScope();
    7927                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
     7045                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
    79287046                }
     7047#line 7048 "Parser/parser.cc" /* yacc.c:1646  */
    79297048    break;
    79307049
    79317050  case 538:
    7932 
    7933 /* Line 1806 of yacc.c  */
    7934 #line 2091 "parser.yy"
     7051#line 2091 "parser.yy" /* yacc.c:1646  */
    79357052    {
    79367053                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79377054                        typedefTable.leaveScope();
    7938                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
     7055                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
    79397056                }
     7057#line 7058 "Parser/parser.cc" /* yacc.c:1646  */
    79407058    break;
    79417059
    79427060  case 539:
    7943 
    7944 /* Line 1806 of yacc.c  */
    7945 #line 2097 "parser.yy"
     7061#line 2097 "parser.yy" /* yacc.c:1646  */
    79467062    {
    79477063                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79487064                        typedefTable.leaveScope();
    7949                         (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) );
     7065                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
    79507066                }
     7067#line 7068 "Parser/parser.cc" /* yacc.c:1646  */
    79517068    break;
    79527069
    79537070  case 543:
    7954 
    7955 /* Line 1806 of yacc.c  */
    7956 #line 2112 "parser.yy"
    7957     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7071#line 2112 "parser.yy" /* yacc.c:1646  */
     7072    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     7073#line 7074 "Parser/parser.cc" /* yacc.c:1646  */
    79587074    break;
    79597075
    79607076  case 545:
    7961 
    7962 /* Line 1806 of yacc.c  */
    7963 #line 2117 "parser.yy"
    7964     { delete (yyvsp[(3) - (5)].str); }
     7077#line 2117 "parser.yy" /* yacc.c:1646  */
     7078    { delete (yyvsp[-2].str); }
     7079#line 7080 "Parser/parser.cc" /* yacc.c:1646  */
    79657080    break;
    79667081
    79677082  case 546:
    7968 
    7969 /* Line 1806 of yacc.c  */
    7970 #line 2122 "parser.yy"
     7083#line 2122 "parser.yy" /* yacc.c:1646  */
    79717084    { (yyval.decl) = 0; }
     7085#line 7086 "Parser/parser.cc" /* yacc.c:1646  */
    79727086    break;
    79737087
    79747088  case 549:
    7975 
    7976 /* Line 1806 of yacc.c  */
    7977 #line 2129 "parser.yy"
    7978     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7089#line 2129 "parser.yy" /* yacc.c:1646  */
     7090    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     7091#line 7092 "Parser/parser.cc" /* yacc.c:1646  */
    79797092    break;
    79807093
    79817094  case 550:
    7982 
    7983 /* Line 1806 of yacc.c  */
    7984 #line 2135 "parser.yy"
     7095#line 2135 "parser.yy" /* yacc.c:1646  */
    79857096    { (yyval.decl) = 0; }
     7097#line 7098 "Parser/parser.cc" /* yacc.c:1646  */
    79867098    break;
    79877099
    79887100  case 555:
    7989 
    7990 /* Line 1806 of yacc.c  */
    7991 #line 2146 "parser.yy"
    7992     { delete (yyvsp[(3) - (4)].en); }
     7101#line 2146 "parser.yy" /* yacc.c:1646  */
     7102    { delete (yyvsp[-1].en); }
     7103#line 7104 "Parser/parser.cc" /* yacc.c:1646  */
    79937104    break;
    79947105
    79957106  case 556:
    7996 
    7997 /* Line 1806 of yacc.c  */
    7998 #line 2150 "parser.yy"
    7999     { delete (yyvsp[(1) - (1)].tok); }
     7107#line 2150 "parser.yy" /* yacc.c:1646  */
     7108    { delete (yyvsp[0].tok); }
     7109#line 7110 "Parser/parser.cc" /* yacc.c:1646  */
    80007110    break;
    80017111
    80027112  case 557:
    8003 
    8004 /* Line 1806 of yacc.c  */
    8005 #line 2151 "parser.yy"
    8006     { delete (yyvsp[(1) - (1)].decl); }
     7113#line 2151 "parser.yy" /* yacc.c:1646  */
     7114    { delete (yyvsp[0].decl); }
     7115#line 7116 "Parser/parser.cc" /* yacc.c:1646  */
    80077116    break;
    80087117
    80097118  case 558:
    8010 
    8011 /* Line 1806 of yacc.c  */
    8012 #line 2152 "parser.yy"
    8013     { delete (yyvsp[(1) - (1)].decl); }
     7119#line 2152 "parser.yy" /* yacc.c:1646  */
     7120    { delete (yyvsp[0].decl); }
     7121#line 7122 "Parser/parser.cc" /* yacc.c:1646  */
    80147122    break;
    80157123
    80167124  case 559:
    8017 
    8018 /* Line 1806 of yacc.c  */
    8019 #line 2153 "parser.yy"
    8020     { delete (yyvsp[(1) - (1)].decl); }
     7125#line 2153 "parser.yy" /* yacc.c:1646  */
     7126    { delete (yyvsp[0].decl); }
     7127#line 7128 "Parser/parser.cc" /* yacc.c:1646  */
    80217128    break;
    80227129
    80237130  case 560:
    8024 
    8025 /* Line 1806 of yacc.c  */
    8026 #line 2188 "parser.yy"
    8027     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7131#line 2188 "parser.yy" /* yacc.c:1646  */
     7132    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7133#line 7134 "Parser/parser.cc" /* yacc.c:1646  */
    80287134    break;
    80297135
    80307136  case 562:
    8031 
    8032 /* Line 1806 of yacc.c  */
    8033 #line 2191 "parser.yy"
    8034     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7137#line 2191 "parser.yy" /* yacc.c:1646  */
     7138    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7139#line 7140 "Parser/parser.cc" /* yacc.c:1646  */
    80357140    break;
    80367141
    80377142  case 563:
    8038 
    8039 /* Line 1806 of yacc.c  */
    8040 #line 2193 "parser.yy"
    8041     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7143#line 2193 "parser.yy" /* yacc.c:1646  */
     7144    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7145#line 7146 "Parser/parser.cc" /* yacc.c:1646  */
    80427146    break;
    80437147
    80447148  case 564:
    8045 
    8046 /* Line 1806 of yacc.c  */
    8047 #line 2198 "parser.yy"
    8048     {
    8049                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8050                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
     7149#line 2198 "parser.yy" /* yacc.c:1646  */
     7150    {
     7151                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7152                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    80517153                }
     7154#line 7155 "Parser/parser.cc" /* yacc.c:1646  */
    80527155    break;
    80537156
    80547157  case 565:
    8055 
    8056 /* Line 1806 of yacc.c  */
    8057 #line 2203 "parser.yy"
    8058     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7158#line 2203 "parser.yy" /* yacc.c:1646  */
     7159    { (yyval.decl) = (yyvsp[-1].decl); }
     7160#line 7161 "Parser/parser.cc" /* yacc.c:1646  */
    80597161    break;
    80607162
    80617163  case 566:
    8062 
    8063 /* Line 1806 of yacc.c  */
    8064 #line 2208 "parser.yy"
    8065     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7164#line 2208 "parser.yy" /* yacc.c:1646  */
     7165    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7166#line 7167 "Parser/parser.cc" /* yacc.c:1646  */
    80667167    break;
    80677168
    80687169  case 567:
    8069 
    8070 /* Line 1806 of yacc.c  */
    8071 #line 2210 "parser.yy"
    8072     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7170#line 2210 "parser.yy" /* yacc.c:1646  */
     7171    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7172#line 7173 "Parser/parser.cc" /* yacc.c:1646  */
    80737173    break;
    80747174
    80757175  case 568:
    8076 
    8077 /* Line 1806 of yacc.c  */
    8078 #line 2212 "parser.yy"
    8079     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7176#line 2212 "parser.yy" /* yacc.c:1646  */
     7177    { (yyval.decl) = (yyvsp[-1].decl); }
     7178#line 7179 "Parser/parser.cc" /* yacc.c:1646  */
    80807179    break;
    80817180
    80827181  case 569:
    8083 
    8084 /* Line 1806 of yacc.c  */
    8085 #line 2217 "parser.yy"
    8086     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7182#line 2217 "parser.yy" /* yacc.c:1646  */
     7183    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7184#line 7185 "Parser/parser.cc" /* yacc.c:1646  */
    80877185    break;
    80887186
    80897187  case 570:
    8090 
    8091 /* Line 1806 of yacc.c  */
    8092 #line 2219 "parser.yy"
    8093     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7188#line 2219 "parser.yy" /* yacc.c:1646  */
     7189    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7190#line 7191 "Parser/parser.cc" /* yacc.c:1646  */
    80947191    break;
    80957192
    80967193  case 571:
    8097 
    8098 /* Line 1806 of yacc.c  */
    8099 #line 2221 "parser.yy"
    8100     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7194#line 2221 "parser.yy" /* yacc.c:1646  */
     7195    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7196#line 7197 "Parser/parser.cc" /* yacc.c:1646  */
    81017197    break;
    81027198
    81037199  case 572:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2223 "parser.yy"
    8107     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7200#line 2223 "parser.yy" /* yacc.c:1646  */
     7201    { (yyval.decl) = (yyvsp[-1].decl); }
     7202#line 7203 "Parser/parser.cc" /* yacc.c:1646  */
    81087203    break;
    81097204
    81107205  case 573:
    8111 
    8112 /* Line 1806 of yacc.c  */
    8113 #line 2228 "parser.yy"
    8114     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7206#line 2228 "parser.yy" /* yacc.c:1646  */
     7207    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7208#line 7209 "Parser/parser.cc" /* yacc.c:1646  */
    81157209    break;
    81167210
    81177211  case 574:
    8118 
    8119 /* Line 1806 of yacc.c  */
    8120 #line 2230 "parser.yy"
    8121     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7212#line 2230 "parser.yy" /* yacc.c:1646  */
     7213    { (yyval.decl) = (yyvsp[-1].decl); }
     7214#line 7215 "Parser/parser.cc" /* yacc.c:1646  */
    81227215    break;
    81237216
    81247217  case 575:
    8125 
    8126 /* Line 1806 of yacc.c  */
    8127 #line 2239 "parser.yy"
    8128     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7218#line 2239 "parser.yy" /* yacc.c:1646  */
     7219    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7220#line 7221 "Parser/parser.cc" /* yacc.c:1646  */
    81297221    break;
    81307222
    81317223  case 577:
    8132 
    8133 /* Line 1806 of yacc.c  */
    8134 #line 2242 "parser.yy"
    8135     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7224#line 2242 "parser.yy" /* yacc.c:1646  */
     7225    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7226#line 7227 "Parser/parser.cc" /* yacc.c:1646  */
    81367227    break;
    81377228
    81387229  case 578:
    8139 
    8140 /* Line 1806 of yacc.c  */
    8141 #line 2247 "parser.yy"
    8142     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     7230#line 2247 "parser.yy" /* yacc.c:1646  */
     7231    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7232#line 7233 "Parser/parser.cc" /* yacc.c:1646  */
    81437233    break;
    81447234
    81457235  case 579:
    8146 
    8147 /* Line 1806 of yacc.c  */
    8148 #line 2249 "parser.yy"
    8149     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7236#line 2249 "parser.yy" /* yacc.c:1646  */
     7237    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7238#line 7239 "Parser/parser.cc" /* yacc.c:1646  */
    81507239    break;
    81517240
    81527241  case 580:
    8153 
    8154 /* Line 1806 of yacc.c  */
    8155 #line 2251 "parser.yy"
    8156     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7242#line 2251 "parser.yy" /* yacc.c:1646  */
     7243    { (yyval.decl) = (yyvsp[-1].decl); }
     7244#line 7245 "Parser/parser.cc" /* yacc.c:1646  */
    81577245    break;
    81587246
    81597247  case 581:
    8160 
    8161 /* Line 1806 of yacc.c  */
    8162 #line 2256 "parser.yy"
    8163     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7248#line 2256 "parser.yy" /* yacc.c:1646  */
     7249    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7250#line 7251 "Parser/parser.cc" /* yacc.c:1646  */
    81647251    break;
    81657252
    81667253  case 582:
    8167 
    8168 /* Line 1806 of yacc.c  */
    8169 #line 2258 "parser.yy"
    8170     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7254#line 2258 "parser.yy" /* yacc.c:1646  */
     7255    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7256#line 7257 "Parser/parser.cc" /* yacc.c:1646  */
    81717257    break;
    81727258
    81737259  case 583:
    8174 
    8175 /* Line 1806 of yacc.c  */
    8176 #line 2260 "parser.yy"
    8177     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7260#line 2260 "parser.yy" /* yacc.c:1646  */
     7261    { (yyval.decl) = (yyvsp[-1].decl); }
     7262#line 7263 "Parser/parser.cc" /* yacc.c:1646  */
    81787263    break;
    81797264
    81807265  case 584:
    8181 
    8182 /* Line 1806 of yacc.c  */
    8183 #line 2265 "parser.yy"
    8184     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7266#line 2265 "parser.yy" /* yacc.c:1646  */
     7267    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7268#line 7269 "Parser/parser.cc" /* yacc.c:1646  */
    81857269    break;
    81867270
    81877271  case 585:
    8188 
    8189 /* Line 1806 of yacc.c  */
    8190 #line 2267 "parser.yy"
    8191     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7272#line 2267 "parser.yy" /* yacc.c:1646  */
     7273    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7274#line 7275 "Parser/parser.cc" /* yacc.c:1646  */
    81927275    break;
    81937276
    81947277  case 586:
    8195 
    8196 /* Line 1806 of yacc.c  */
    8197 #line 2269 "parser.yy"
    8198     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7278#line 2269 "parser.yy" /* yacc.c:1646  */
     7279    { (yyval.decl) = (yyvsp[-1].decl); }
     7280#line 7281 "Parser/parser.cc" /* yacc.c:1646  */
    81997281    break;
    82007282
    82017283  case 590:
    8202 
    8203 /* Line 1806 of yacc.c  */
    8204 #line 2284 "parser.yy"
    8205     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     7284#line 2284 "parser.yy" /* yacc.c:1646  */
     7285    { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
     7286#line 7287 "Parser/parser.cc" /* yacc.c:1646  */
    82067287    break;
    82077288
    82087289  case 591:
    8209 
    8210 /* Line 1806 of yacc.c  */
    8211 #line 2286 "parser.yy"
    8212     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     7290#line 2286 "parser.yy" /* yacc.c:1646  */
     7291    { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
     7292#line 7293 "Parser/parser.cc" /* yacc.c:1646  */
    82137293    break;
    82147294
    82157295  case 592:
    8216 
    8217 /* Line 1806 of yacc.c  */
    8218 #line 2288 "parser.yy"
    8219     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7296#line 2288 "parser.yy" /* yacc.c:1646  */
     7297    { (yyval.decl) = (yyvsp[-1].decl); }
     7298#line 7299 "Parser/parser.cc" /* yacc.c:1646  */
    82207299    break;
    82217300
    82227301  case 593:
    8223 
    8224 /* Line 1806 of yacc.c  */
    8225 #line 2293 "parser.yy"
    8226     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7302#line 2293 "parser.yy" /* yacc.c:1646  */
     7303    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7304#line 7305 "Parser/parser.cc" /* yacc.c:1646  */
    82277305    break;
    82287306
    82297307  case 594:
    8230 
    8231 /* Line 1806 of yacc.c  */
    8232 #line 2295 "parser.yy"
    8233     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7308#line 2295 "parser.yy" /* yacc.c:1646  */
     7309    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7310#line 7311 "Parser/parser.cc" /* yacc.c:1646  */
    82347311    break;
    82357312
    82367313  case 595:
    8237 
    8238 /* Line 1806 of yacc.c  */
    8239 #line 2297 "parser.yy"
    8240     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7314#line 2297 "parser.yy" /* yacc.c:1646  */
     7315    { (yyval.decl) = (yyvsp[-1].decl); }
     7316#line 7317 "Parser/parser.cc" /* yacc.c:1646  */
    82417317    break;
    82427318
    82437319  case 596:
    8244 
    8245 /* Line 1806 of yacc.c  */
    8246 #line 2302 "parser.yy"
    8247     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7320#line 2302 "parser.yy" /* yacc.c:1646  */
     7321    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7322#line 7323 "Parser/parser.cc" /* yacc.c:1646  */
    82487323    break;
    82497324
    82507325  case 597:
    8251 
    8252 /* Line 1806 of yacc.c  */
    8253 #line 2304 "parser.yy"
    8254     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7326#line 2304 "parser.yy" /* yacc.c:1646  */
     7327    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7328#line 7329 "Parser/parser.cc" /* yacc.c:1646  */
    82557329    break;
    82567330
    82577331  case 598:
    8258 
    8259 /* Line 1806 of yacc.c  */
    8260 #line 2306 "parser.yy"
    8261     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7332#line 2306 "parser.yy" /* yacc.c:1646  */
     7333    { (yyval.decl) = (yyvsp[-1].decl); }
     7334#line 7335 "Parser/parser.cc" /* yacc.c:1646  */
    82627335    break;
    82637336
    82647337  case 599:
    8265 
    8266 /* Line 1806 of yacc.c  */
    8267 #line 2321 "parser.yy"
    8268     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7338#line 2321 "parser.yy" /* yacc.c:1646  */
     7339    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7340#line 7341 "Parser/parser.cc" /* yacc.c:1646  */
    82697341    break;
    82707342
    82717343  case 601:
    8272 
    8273 /* Line 1806 of yacc.c  */
    8274 #line 2324 "parser.yy"
    8275     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7344#line 2324 "parser.yy" /* yacc.c:1646  */
     7345    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7346#line 7347 "Parser/parser.cc" /* yacc.c:1646  */
    82767347    break;
    82777348
    82787349  case 602:
    8279 
    8280 /* Line 1806 of yacc.c  */
    8281 #line 2326 "parser.yy"
    8282     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7350#line 2326 "parser.yy" /* yacc.c:1646  */
     7351    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7352#line 7353 "Parser/parser.cc" /* yacc.c:1646  */
    82837353    break;
    82847354
    82857355  case 604:
    8286 
    8287 /* Line 1806 of yacc.c  */
    8288 #line 2332 "parser.yy"
    8289     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7356#line 2332 "parser.yy" /* yacc.c:1646  */
     7357    { (yyval.decl) = (yyvsp[-1].decl); }
     7358#line 7359 "Parser/parser.cc" /* yacc.c:1646  */
    82907359    break;
    82917360
    82927361  case 605:
    8293 
    8294 /* Line 1806 of yacc.c  */
    8295 #line 2337 "parser.yy"
    8296     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7362#line 2337 "parser.yy" /* yacc.c:1646  */
     7363    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7364#line 7365 "Parser/parser.cc" /* yacc.c:1646  */
    82977365    break;
    82987366
    82997367  case 606:
    8300 
    8301 /* Line 1806 of yacc.c  */
    8302 #line 2339 "parser.yy"
    8303     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7368#line 2339 "parser.yy" /* yacc.c:1646  */
     7369    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7370#line 7371 "Parser/parser.cc" /* yacc.c:1646  */
    83047371    break;
    83057372
    83067373  case 607:
    8307 
    8308 /* Line 1806 of yacc.c  */
    8309 #line 2341 "parser.yy"
    8310     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7374#line 2341 "parser.yy" /* yacc.c:1646  */
     7375    { (yyval.decl) = (yyvsp[-1].decl); }
     7376#line 7377 "Parser/parser.cc" /* yacc.c:1646  */
    83117377    break;
    83127378
    83137379  case 608:
    8314 
    8315 /* Line 1806 of yacc.c  */
    8316 #line 2346 "parser.yy"
    8317     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7380#line 2346 "parser.yy" /* yacc.c:1646  */
     7381    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7382#line 7383 "Parser/parser.cc" /* yacc.c:1646  */
    83187383    break;
    83197384
    83207385  case 609:
    8321 
    8322 /* Line 1806 of yacc.c  */
    8323 #line 2348 "parser.yy"
    8324     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7386#line 2348 "parser.yy" /* yacc.c:1646  */
     7387    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7388#line 7389 "Parser/parser.cc" /* yacc.c:1646  */
    83257389    break;
    83267390
    83277391  case 610:
    8328 
    8329 /* Line 1806 of yacc.c  */
    8330 #line 2350 "parser.yy"
    8331     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7392#line 2350 "parser.yy" /* yacc.c:1646  */
     7393    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7394#line 7395 "Parser/parser.cc" /* yacc.c:1646  */
    83327395    break;
    83337396
    83347397  case 611:
    8335 
    8336 /* Line 1806 of yacc.c  */
    8337 #line 2352 "parser.yy"
    8338     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7398#line 2352 "parser.yy" /* yacc.c:1646  */
     7399    { (yyval.decl) = (yyvsp[-1].decl); }
     7400#line 7401 "Parser/parser.cc" /* yacc.c:1646  */
    83397401    break;
    83407402
    83417403  case 612:
    8342 
    8343 /* Line 1806 of yacc.c  */
    8344 #line 2357 "parser.yy"
    8345     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     7404#line 2357 "parser.yy" /* yacc.c:1646  */
     7405    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7406#line 7407 "Parser/parser.cc" /* yacc.c:1646  */
    83467407    break;
    83477408
    83487409  case 613:
    8349 
    8350 /* Line 1806 of yacc.c  */
    8351 #line 2359 "parser.yy"
    8352     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7410#line 2359 "parser.yy" /* yacc.c:1646  */
     7411    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7412#line 7413 "Parser/parser.cc" /* yacc.c:1646  */
    83537413    break;
    83547414
    83557415  case 614:
    8356 
    8357 /* Line 1806 of yacc.c  */
    8358 #line 2361 "parser.yy"
    8359     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7416#line 2361 "parser.yy" /* yacc.c:1646  */
     7417    { (yyval.decl) = (yyvsp[-1].decl); }
     7418#line 7419 "Parser/parser.cc" /* yacc.c:1646  */
    83607419    break;
    83617420
    83627421  case 615:
    8363 
    8364 /* Line 1806 of yacc.c  */
    8365 #line 2371 "parser.yy"
    8366     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7422#line 2371 "parser.yy" /* yacc.c:1646  */
     7423    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7424#line 7425 "Parser/parser.cc" /* yacc.c:1646  */
    83677425    break;
    83687426
    83697427  case 617:
    8370 
    8371 /* Line 1806 of yacc.c  */
    8372 #line 2374 "parser.yy"
    8373     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7428#line 2374 "parser.yy" /* yacc.c:1646  */
     7429    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7430#line 7431 "Parser/parser.cc" /* yacc.c:1646  */
    83747431    break;
    83757432
    83767433  case 618:
    8377 
    8378 /* Line 1806 of yacc.c  */
    8379 #line 2376 "parser.yy"
    8380     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7434#line 2376 "parser.yy" /* yacc.c:1646  */
     7435    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7436#line 7437 "Parser/parser.cc" /* yacc.c:1646  */
    83817437    break;
    83827438
    83837439  case 619:
    8384 
    8385 /* Line 1806 of yacc.c  */
    8386 #line 2381 "parser.yy"
    8387     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7440#line 2381 "parser.yy" /* yacc.c:1646  */
     7441    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7442#line 7443 "Parser/parser.cc" /* yacc.c:1646  */
    83887443    break;
    83897444
    83907445  case 620:
    8391 
    8392 /* Line 1806 of yacc.c  */
    8393 #line 2383 "parser.yy"
    8394     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7446#line 2383 "parser.yy" /* yacc.c:1646  */
     7447    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7448#line 7449 "Parser/parser.cc" /* yacc.c:1646  */
    83957449    break;
    83967450
    83977451  case 621:
    8398 
    8399 /* Line 1806 of yacc.c  */
    8400 #line 2385 "parser.yy"
    8401     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7452#line 2385 "parser.yy" /* yacc.c:1646  */
     7453    { (yyval.decl) = (yyvsp[-1].decl); }
     7454#line 7455 "Parser/parser.cc" /* yacc.c:1646  */
    84027455    break;
    84037456
    84047457  case 622:
    8405 
    8406 /* Line 1806 of yacc.c  */
    8407 #line 2390 "parser.yy"
    8408     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7458#line 2390 "parser.yy" /* yacc.c:1646  */
     7459    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7460#line 7461 "Parser/parser.cc" /* yacc.c:1646  */
    84097461    break;
    84107462
    84117463  case 623:
    8412 
    8413 /* Line 1806 of yacc.c  */
    8414 #line 2392 "parser.yy"
    8415     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7464#line 2392 "parser.yy" /* yacc.c:1646  */
     7465    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7466#line 7467 "Parser/parser.cc" /* yacc.c:1646  */
    84167467    break;
    84177468
    84187469  case 624:
    8419 
    8420 /* Line 1806 of yacc.c  */
    8421 #line 2394 "parser.yy"
    8422     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7470#line 2394 "parser.yy" /* yacc.c:1646  */
     7471    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7472#line 7473 "Parser/parser.cc" /* yacc.c:1646  */
    84237473    break;
    84247474
    84257475  case 625:
    8426 
    8427 /* Line 1806 of yacc.c  */
    8428 #line 2396 "parser.yy"
    8429     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7476#line 2396 "parser.yy" /* yacc.c:1646  */
     7477    { (yyval.decl) = (yyvsp[-1].decl); }
     7478#line 7479 "Parser/parser.cc" /* yacc.c:1646  */
    84307479    break;
    84317480
    84327481  case 626:
    8433 
    8434 /* Line 1806 of yacc.c  */
    8435 #line 2401 "parser.yy"
    8436     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     7482#line 2401 "parser.yy" /* yacc.c:1646  */
     7483    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7484#line 7485 "Parser/parser.cc" /* yacc.c:1646  */
    84377485    break;
    84387486
    84397487  case 627:
    8440 
    8441 /* Line 1806 of yacc.c  */
    8442 #line 2403 "parser.yy"
    8443     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7488#line 2403 "parser.yy" /* yacc.c:1646  */
     7489    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7490#line 7491 "Parser/parser.cc" /* yacc.c:1646  */
    84447491    break;
    84457492
    84467493  case 628:
    8447 
    8448 /* Line 1806 of yacc.c  */
    8449 #line 2405 "parser.yy"
    8450     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7494#line 2405 "parser.yy" /* yacc.c:1646  */
     7495    { (yyval.decl) = (yyvsp[-1].decl); }
     7496#line 7497 "Parser/parser.cc" /* yacc.c:1646  */
    84517497    break;
    84527498
    84537499  case 629:
    8454 
    8455 /* Line 1806 of yacc.c  */
    8456 #line 2436 "parser.yy"
    8457     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7500#line 2436 "parser.yy" /* yacc.c:1646  */
     7501    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7502#line 7503 "Parser/parser.cc" /* yacc.c:1646  */
    84587503    break;
    84597504
    84607505  case 631:
    8461 
    8462 /* Line 1806 of yacc.c  */
    8463 #line 2439 "parser.yy"
    8464     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7506#line 2439 "parser.yy" /* yacc.c:1646  */
     7507    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7508#line 7509 "Parser/parser.cc" /* yacc.c:1646  */
    84657509    break;
    84667510
    84677511  case 632:
    8468 
    8469 /* Line 1806 of yacc.c  */
    8470 #line 2441 "parser.yy"
    8471     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7512#line 2441 "parser.yy" /* yacc.c:1646  */
     7513    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7514#line 7515 "Parser/parser.cc" /* yacc.c:1646  */
    84727515    break;
    84737516
    84747517  case 633:
    8475 
    8476 /* Line 1806 of yacc.c  */
    8477 #line 2446 "parser.yy"
    8478     {
    8479                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8480                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
     7518#line 2446 "parser.yy" /* yacc.c:1646  */
     7519    {
     7520                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7521                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    84817522                }
     7523#line 7524 "Parser/parser.cc" /* yacc.c:1646  */
    84827524    break;
    84837525
    84847526  case 634:
    8485 
    8486 /* Line 1806 of yacc.c  */
    8487 #line 2451 "parser.yy"
    8488     {
    8489                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8490                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
     7527#line 2451 "parser.yy" /* yacc.c:1646  */
     7528    {
     7529                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7530                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    84917531                }
     7532#line 7533 "Parser/parser.cc" /* yacc.c:1646  */
    84927533    break;
    84937534
    84947535  case 635:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2459 "parser.yy"
    8498     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7536#line 2459 "parser.yy" /* yacc.c:1646  */
     7537    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7538#line 7539 "Parser/parser.cc" /* yacc.c:1646  */
    84997539    break;
    85007540
    85017541  case 636:
    8502 
    8503 /* Line 1806 of yacc.c  */
    8504 #line 2461 "parser.yy"
    8505     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7542#line 2461 "parser.yy" /* yacc.c:1646  */
     7543    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7544#line 7545 "Parser/parser.cc" /* yacc.c:1646  */
    85067545    break;
    85077546
    85087547  case 637:
    8509 
    8510 /* Line 1806 of yacc.c  */
    8511 #line 2463 "parser.yy"
    8512     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7548#line 2463 "parser.yy" /* yacc.c:1646  */
     7549    { (yyval.decl) = (yyvsp[-1].decl); }
     7550#line 7551 "Parser/parser.cc" /* yacc.c:1646  */
    85137551    break;
    85147552
    85157553  case 638:
    8516 
    8517 /* Line 1806 of yacc.c  */
    8518 #line 2468 "parser.yy"
    8519     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7554#line 2468 "parser.yy" /* yacc.c:1646  */
     7555    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7556#line 7557 "Parser/parser.cc" /* yacc.c:1646  */
    85207557    break;
    85217558
    85227559  case 639:
    8523 
    8524 /* Line 1806 of yacc.c  */
    8525 #line 2470 "parser.yy"
    8526     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7560#line 2470 "parser.yy" /* yacc.c:1646  */
     7561    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7562#line 7563 "Parser/parser.cc" /* yacc.c:1646  */
    85277563    break;
    85287564
    85297565  case 640:
    8530 
    8531 /* Line 1806 of yacc.c  */
    8532 #line 2475 "parser.yy"
    8533     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     7566#line 2475 "parser.yy" /* yacc.c:1646  */
     7567    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7568#line 7569 "Parser/parser.cc" /* yacc.c:1646  */
    85347569    break;
    85357570
    85367571  case 641:
    8537 
    8538 /* Line 1806 of yacc.c  */
    8539 #line 2477 "parser.yy"
    8540     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7572#line 2477 "parser.yy" /* yacc.c:1646  */
     7573    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7574#line 7575 "Parser/parser.cc" /* yacc.c:1646  */
    85417575    break;
    85427576
    85437577  case 643:
    8544 
    8545 /* Line 1806 of yacc.c  */
    8546 #line 2492 "parser.yy"
    8547     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7578#line 2492 "parser.yy" /* yacc.c:1646  */
     7579    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7580#line 7581 "Parser/parser.cc" /* yacc.c:1646  */
    85487581    break;
    85497582
    85507583  case 644:
    8551 
    8552 /* Line 1806 of yacc.c  */
    8553 #line 2494 "parser.yy"
    8554     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7584#line 2494 "parser.yy" /* yacc.c:1646  */
     7585    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7586#line 7587 "Parser/parser.cc" /* yacc.c:1646  */
    85557587    break;
    85567588
    85577589  case 645:
    8558 
    8559 /* Line 1806 of yacc.c  */
    8560 #line 2499 "parser.yy"
     7590#line 2499 "parser.yy" /* yacc.c:1646  */
    85617591    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     7592#line 7593 "Parser/parser.cc" /* yacc.c:1646  */
    85627593    break;
    85637594
    85647595  case 646:
    8565 
    8566 /* Line 1806 of yacc.c  */
    8567 #line 2501 "parser.yy"
    8568     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     7596#line 2501 "parser.yy" /* yacc.c:1646  */
     7597    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7598#line 7599 "Parser/parser.cc" /* yacc.c:1646  */
    85697599    break;
    85707600
    85717601  case 647:
    8572 
    8573 /* Line 1806 of yacc.c  */
    8574 #line 2503 "parser.yy"
    8575     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7602#line 2503 "parser.yy" /* yacc.c:1646  */
     7603    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7604#line 7605 "Parser/parser.cc" /* yacc.c:1646  */
    85767605    break;
    85777606
    85787607  case 648:
    8579 
    8580 /* Line 1806 of yacc.c  */
    8581 #line 2505 "parser.yy"
    8582     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7608#line 2505 "parser.yy" /* yacc.c:1646  */
     7609    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7610#line 7611 "Parser/parser.cc" /* yacc.c:1646  */
    85837611    break;
    85847612
    85857613  case 649:
    8586 
    8587 /* Line 1806 of yacc.c  */
    8588 #line 2507 "parser.yy"
    8589     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7614#line 2507 "parser.yy" /* yacc.c:1646  */
     7615    { (yyval.decl) = (yyvsp[-1].decl); }
     7616#line 7617 "Parser/parser.cc" /* yacc.c:1646  */
    85907617    break;
    85917618
    85927619  case 651:
    8593 
    8594 /* Line 1806 of yacc.c  */
    8595 #line 2513 "parser.yy"
    8596     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7620#line 2513 "parser.yy" /* yacc.c:1646  */
     7621    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7622#line 7623 "Parser/parser.cc" /* yacc.c:1646  */
    85977623    break;
    85987624
    85997625  case 652:
    8600 
    8601 /* Line 1806 of yacc.c  */
    8602 #line 2515 "parser.yy"
    8603     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7626#line 2515 "parser.yy" /* yacc.c:1646  */
     7627    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7628#line 7629 "Parser/parser.cc" /* yacc.c:1646  */
    86047629    break;
    86057630
    86067631  case 653:
    8607 
    8608 /* Line 1806 of yacc.c  */
    8609 #line 2517 "parser.yy"
    8610     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7632#line 2517 "parser.yy" /* yacc.c:1646  */
     7633    { (yyval.decl) = (yyvsp[-1].decl); }
     7634#line 7635 "Parser/parser.cc" /* yacc.c:1646  */
    86117635    break;
    86127636
    86137637  case 654:
    8614 
    8615 /* Line 1806 of yacc.c  */
    8616 #line 2522 "parser.yy"
    8617     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     7638#line 2522 "parser.yy" /* yacc.c:1646  */
     7639    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
     7640#line 7641 "Parser/parser.cc" /* yacc.c:1646  */
    86187641    break;
    86197642
    86207643  case 655:
    8621 
    8622 /* Line 1806 of yacc.c  */
    8623 #line 2524 "parser.yy"
    8624     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7644#line 2524 "parser.yy" /* yacc.c:1646  */
     7645    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7646#line 7647 "Parser/parser.cc" /* yacc.c:1646  */
    86257647    break;
    86267648
    86277649  case 656:
    8628 
    8629 /* Line 1806 of yacc.c  */
    8630 #line 2526 "parser.yy"
    8631     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7650#line 2526 "parser.yy" /* yacc.c:1646  */
     7651    { (yyval.decl) = (yyvsp[-1].decl); }
     7652#line 7653 "Parser/parser.cc" /* yacc.c:1646  */
    86327653    break;
    86337654
    86347655  case 657:
    8635 
    8636 /* Line 1806 of yacc.c  */
    8637 #line 2532 "parser.yy"
     7656#line 2532 "parser.yy" /* yacc.c:1646  */
    86387657    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     7658#line 7659 "Parser/parser.cc" /* yacc.c:1646  */
    86397659    break;
    86407660
    86417661  case 658:
    8642 
    8643 /* Line 1806 of yacc.c  */
    8644 #line 2534 "parser.yy"
    8645     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     7662#line 2534 "parser.yy" /* yacc.c:1646  */
     7663    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
     7664#line 7665 "Parser/parser.cc" /* yacc.c:1646  */
    86467665    break;
    86477666
    86487667  case 660:
    8649 
    8650 /* Line 1806 of yacc.c  */
    8651 #line 2540 "parser.yy"
    8652     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     7668#line 2540 "parser.yy" /* yacc.c:1646  */
     7669    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
     7670#line 7671 "Parser/parser.cc" /* yacc.c:1646  */
    86537671    break;
    86547672
    86557673  case 661:
    8656 
    8657 /* Line 1806 of yacc.c  */
    8658 #line 2542 "parser.yy"
     7674#line 2542 "parser.yy" /* yacc.c:1646  */
    86597675    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     7676#line 7677 "Parser/parser.cc" /* yacc.c:1646  */
    86607677    break;
    86617678
    86627679  case 662:
    8663 
    8664 /* Line 1806 of yacc.c  */
    8665 #line 2544 "parser.yy"
    8666     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     7680#line 2544 "parser.yy" /* yacc.c:1646  */
     7681    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
     7682#line 7683 "Parser/parser.cc" /* yacc.c:1646  */
    86677683    break;
    86687684
    86697685  case 663:
    8670 
    8671 /* Line 1806 of yacc.c  */
    8672 #line 2546 "parser.yy"
    8673     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     7686#line 2546 "parser.yy" /* yacc.c:1646  */
     7687    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     7688#line 7689 "Parser/parser.cc" /* yacc.c:1646  */
    86747689    break;
    86757690
    86767691  case 665:
    8677 
    8678 /* Line 1806 of yacc.c  */
    8679 #line 2561 "parser.yy"
    8680     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7692#line 2561 "parser.yy" /* yacc.c:1646  */
     7693    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7694#line 7695 "Parser/parser.cc" /* yacc.c:1646  */
    86817695    break;
    86827696
    86837697  case 666:
    8684 
    8685 /* Line 1806 of yacc.c  */
    8686 #line 2563 "parser.yy"
    8687     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7698#line 2563 "parser.yy" /* yacc.c:1646  */
     7699    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7700#line 7701 "Parser/parser.cc" /* yacc.c:1646  */
    86887701    break;
    86897702
    86907703  case 667:
    8691 
    8692 /* Line 1806 of yacc.c  */
    8693 #line 2568 "parser.yy"
     7704#line 2568 "parser.yy" /* yacc.c:1646  */
    86947705    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     7706#line 7707 "Parser/parser.cc" /* yacc.c:1646  */
    86957707    break;
    86967708
    86977709  case 668:
    8698 
    8699 /* Line 1806 of yacc.c  */
    8700 #line 2570 "parser.yy"
    8701     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     7710#line 2570 "parser.yy" /* yacc.c:1646  */
     7711    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7712#line 7713 "Parser/parser.cc" /* yacc.c:1646  */
    87027713    break;
    87037714
    87047715  case 669:
    8705 
    8706 /* Line 1806 of yacc.c  */
    8707 #line 2572 "parser.yy"
    8708     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7716#line 2572 "parser.yy" /* yacc.c:1646  */
     7717    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7718#line 7719 "Parser/parser.cc" /* yacc.c:1646  */
    87097719    break;
    87107720
    87117721  case 670:
    8712 
    8713 /* Line 1806 of yacc.c  */
    8714 #line 2574 "parser.yy"
    8715     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7722#line 2574 "parser.yy" /* yacc.c:1646  */
     7723    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7724#line 7725 "Parser/parser.cc" /* yacc.c:1646  */
    87167725    break;
    87177726
    87187727  case 671:
    8719 
    8720 /* Line 1806 of yacc.c  */
    8721 #line 2576 "parser.yy"
    8722     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7728#line 2576 "parser.yy" /* yacc.c:1646  */
     7729    { (yyval.decl) = (yyvsp[-1].decl); }
     7730#line 7731 "Parser/parser.cc" /* yacc.c:1646  */
    87237731    break;
    87247732
    87257733  case 673:
    8726 
    8727 /* Line 1806 of yacc.c  */
    8728 #line 2582 "parser.yy"
    8729     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7734#line 2582 "parser.yy" /* yacc.c:1646  */
     7735    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7736#line 7737 "Parser/parser.cc" /* yacc.c:1646  */
    87307737    break;
    87317738
    87327739  case 674:
    8733 
    8734 /* Line 1806 of yacc.c  */
    8735 #line 2584 "parser.yy"
    8736     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7740#line 2584 "parser.yy" /* yacc.c:1646  */
     7741    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7742#line 7743 "Parser/parser.cc" /* yacc.c:1646  */
    87377743    break;
    87387744
    87397745  case 675:
    8740 
    8741 /* Line 1806 of yacc.c  */
    8742 #line 2586 "parser.yy"
    8743     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7746#line 2586 "parser.yy" /* yacc.c:1646  */
     7747    { (yyval.decl) = (yyvsp[-1].decl); }
     7748#line 7749 "Parser/parser.cc" /* yacc.c:1646  */
    87447749    break;
    87457750
    87467751  case 676:
    8747 
    8748 /* Line 1806 of yacc.c  */
    8749 #line 2591 "parser.yy"
    8750     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     7752#line 2591 "parser.yy" /* yacc.c:1646  */
     7753    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
     7754#line 7755 "Parser/parser.cc" /* yacc.c:1646  */
    87517755    break;
    87527756
    87537757  case 677:
    8754 
    8755 /* Line 1806 of yacc.c  */
    8756 #line 2593 "parser.yy"
    8757     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7758#line 2593 "parser.yy" /* yacc.c:1646  */
     7759    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7760#line 7761 "Parser/parser.cc" /* yacc.c:1646  */
    87587761    break;
    87597762
    87607763  case 678:
    8761 
    8762 /* Line 1806 of yacc.c  */
    8763 #line 2595 "parser.yy"
    8764     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7764#line 2595 "parser.yy" /* yacc.c:1646  */
     7765    { (yyval.decl) = (yyvsp[-1].decl); }
     7766#line 7767 "Parser/parser.cc" /* yacc.c:1646  */
    87657767    break;
    87667768
    87677769  case 680:
    8768 
    8769 /* Line 1806 of yacc.c  */
    8770 #line 2602 "parser.yy"
    8771     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7770#line 2602 "parser.yy" /* yacc.c:1646  */
     7771    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7772#line 7773 "Parser/parser.cc" /* yacc.c:1646  */
    87727773    break;
    87737774
    87747775  case 682:
    8775 
    8776 /* Line 1806 of yacc.c  */
    8777 #line 2613 "parser.yy"
     7776#line 2613 "parser.yy" /* yacc.c:1646  */
    87787777    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     7778#line 7779 "Parser/parser.cc" /* yacc.c:1646  */
    87797779    break;
    87807780
    87817781  case 683:
    8782 
    8783 /* Line 1806 of yacc.c  */
    8784 #line 2616 "parser.yy"
    8785     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     7782#line 2616 "parser.yy" /* yacc.c:1646  */
     7783    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
     7784#line 7785 "Parser/parser.cc" /* yacc.c:1646  */
    87867785    break;
    87877786
    87887787  case 684:
    8789 
    8790 /* Line 1806 of yacc.c  */
    8791 #line 2618 "parser.yy"
    8792     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     7788#line 2618 "parser.yy" /* yacc.c:1646  */
     7789    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
     7790#line 7791 "Parser/parser.cc" /* yacc.c:1646  */
    87937791    break;
    87947792
    87957793  case 685:
    8796 
    8797 /* Line 1806 of yacc.c  */
    8798 #line 2621 "parser.yy"
    8799     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     7794#line 2621 "parser.yy" /* yacc.c:1646  */
     7795    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
     7796#line 7797 "Parser/parser.cc" /* yacc.c:1646  */
    88007797    break;
    88017798
    88027799  case 686:
    8803 
    8804 /* Line 1806 of yacc.c  */
    8805 #line 2623 "parser.yy"
    8806     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     7800#line 2623 "parser.yy" /* yacc.c:1646  */
     7801    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
     7802#line 7803 "Parser/parser.cc" /* yacc.c:1646  */
    88077803    break;
    88087804
    88097805  case 687:
    8810 
    8811 /* Line 1806 of yacc.c  */
    8812 #line 2625 "parser.yy"
    8813     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     7806#line 2625 "parser.yy" /* yacc.c:1646  */
     7807    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
     7808#line 7809 "Parser/parser.cc" /* yacc.c:1646  */
    88147809    break;
    88157810
    88167811  case 689:
    8817 
    8818 /* Line 1806 of yacc.c  */
    8819 #line 2639 "parser.yy"
    8820     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7812#line 2639 "parser.yy" /* yacc.c:1646  */
     7813    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7814#line 7815 "Parser/parser.cc" /* yacc.c:1646  */
    88217815    break;
    88227816
    88237817  case 690:
    8824 
    8825 /* Line 1806 of yacc.c  */
    8826 #line 2641 "parser.yy"
    8827     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7818#line 2641 "parser.yy" /* yacc.c:1646  */
     7819    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7820#line 7821 "Parser/parser.cc" /* yacc.c:1646  */
    88287821    break;
    88297822
    88307823  case 691:
    8831 
    8832 /* Line 1806 of yacc.c  */
    8833 #line 2646 "parser.yy"
     7824#line 2646 "parser.yy" /* yacc.c:1646  */
    88347825    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     7826#line 7827 "Parser/parser.cc" /* yacc.c:1646  */
    88357827    break;
    88367828
    88377829  case 692:
    8838 
    8839 /* Line 1806 of yacc.c  */
    8840 #line 2648 "parser.yy"
    8841     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     7830#line 2648 "parser.yy" /* yacc.c:1646  */
     7831    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7832#line 7833 "Parser/parser.cc" /* yacc.c:1646  */
    88427833    break;
    88437834
    88447835  case 693:
    8845 
    8846 /* Line 1806 of yacc.c  */
    8847 #line 2650 "parser.yy"
    8848     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7836#line 2650 "parser.yy" /* yacc.c:1646  */
     7837    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7838#line 7839 "Parser/parser.cc" /* yacc.c:1646  */
    88497839    break;
    88507840
    88517841  case 694:
    8852 
    8853 /* Line 1806 of yacc.c  */
    8854 #line 2652 "parser.yy"
    8855     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7842#line 2652 "parser.yy" /* yacc.c:1646  */
     7843    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7844#line 7845 "Parser/parser.cc" /* yacc.c:1646  */
    88567845    break;
    88577846
    88587847  case 695:
    8859 
    8860 /* Line 1806 of yacc.c  */
    8861 #line 2654 "parser.yy"
    8862     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7848#line 2654 "parser.yy" /* yacc.c:1646  */
     7849    { (yyval.decl) = (yyvsp[-1].decl); }
     7850#line 7851 "Parser/parser.cc" /* yacc.c:1646  */
    88637851    break;
    88647852
    88657853  case 697:
    8866 
    8867 /* Line 1806 of yacc.c  */
    8868 #line 2660 "parser.yy"
    8869     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7854#line 2660 "parser.yy" /* yacc.c:1646  */
     7855    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7856#line 7857 "Parser/parser.cc" /* yacc.c:1646  */
    88707857    break;
    88717858
    88727859  case 698:
    8873 
    8874 /* Line 1806 of yacc.c  */
    8875 #line 2662 "parser.yy"
    8876     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7860#line 2662 "parser.yy" /* yacc.c:1646  */
     7861    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7862#line 7863 "Parser/parser.cc" /* yacc.c:1646  */
    88777863    break;
    88787864
    88797865  case 699:
    8880 
    8881 /* Line 1806 of yacc.c  */
    8882 #line 2664 "parser.yy"
    8883     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7866#line 2664 "parser.yy" /* yacc.c:1646  */
     7867    { (yyval.decl) = (yyvsp[-1].decl); }
     7868#line 7869 "Parser/parser.cc" /* yacc.c:1646  */
    88847869    break;
    88857870
    88867871  case 700:
    8887 
    8888 /* Line 1806 of yacc.c  */
    8889 #line 2669 "parser.yy"
    8890     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7872#line 2669 "parser.yy" /* yacc.c:1646  */
     7873    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7874#line 7875 "Parser/parser.cc" /* yacc.c:1646  */
    88917875    break;
    88927876
    88937877  case 701:
    8894 
    8895 /* Line 1806 of yacc.c  */
    8896 #line 2671 "parser.yy"
    8897     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7878#line 2671 "parser.yy" /* yacc.c:1646  */
     7879    { (yyval.decl) = (yyvsp[-1].decl); }
     7880#line 7881 "Parser/parser.cc" /* yacc.c:1646  */
    88987881    break;
    88997882
    89007883  case 704:
    8901 
    8902 /* Line 1806 of yacc.c  */
    8903 #line 2681 "parser.yy"
    8904     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7884#line 2681 "parser.yy" /* yacc.c:1646  */
     7885    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     7886#line 7887 "Parser/parser.cc" /* yacc.c:1646  */
    89057887    break;
    89067888
    89077889  case 707:
    8908 
    8909 /* Line 1806 of yacc.c  */
    8910 #line 2691 "parser.yy"
    8911     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7890#line 2691 "parser.yy" /* yacc.c:1646  */
     7891    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7892#line 7893 "Parser/parser.cc" /* yacc.c:1646  */
    89127893    break;
    89137894
    89147895  case 708:
    8915 
    8916 /* Line 1806 of yacc.c  */
    8917 #line 2693 "parser.yy"
    8918     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7896#line 2693 "parser.yy" /* yacc.c:1646  */
     7897    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7898#line 7899 "Parser/parser.cc" /* yacc.c:1646  */
    89197899    break;
    89207900
    89217901  case 709:
    8922 
    8923 /* Line 1806 of yacc.c  */
    8924 #line 2695 "parser.yy"
    8925     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7902#line 2695 "parser.yy" /* yacc.c:1646  */
     7903    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7904#line 7905 "Parser/parser.cc" /* yacc.c:1646  */
    89267905    break;
    89277906
    89287907  case 710:
    8929 
    8930 /* Line 1806 of yacc.c  */
    8931 #line 2697 "parser.yy"
    8932     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7908#line 2697 "parser.yy" /* yacc.c:1646  */
     7909    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7910#line 7911 "Parser/parser.cc" /* yacc.c:1646  */
    89337911    break;
    89347912
    89357913  case 711:
    8936 
    8937 /* Line 1806 of yacc.c  */
    8938 #line 2699 "parser.yy"
    8939     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7914#line 2699 "parser.yy" /* yacc.c:1646  */
     7915    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7916#line 7917 "Parser/parser.cc" /* yacc.c:1646  */
    89407917    break;
    89417918
    89427919  case 712:
    8943 
    8944 /* Line 1806 of yacc.c  */
    8945 #line 2701 "parser.yy"
    8946     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7920#line 2701 "parser.yy" /* yacc.c:1646  */
     7921    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7922#line 7923 "Parser/parser.cc" /* yacc.c:1646  */
    89477923    break;
    89487924
    89497925  case 713:
    8950 
    8951 /* Line 1806 of yacc.c  */
    8952 #line 2708 "parser.yy"
    8953     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7926#line 2708 "parser.yy" /* yacc.c:1646  */
     7927    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7928#line 7929 "Parser/parser.cc" /* yacc.c:1646  */
    89547929    break;
    89557930
    89567931  case 714:
    8957 
    8958 /* Line 1806 of yacc.c  */
    8959 #line 2710 "parser.yy"
    8960     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7932#line 2710 "parser.yy" /* yacc.c:1646  */
     7933    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7934#line 7935 "Parser/parser.cc" /* yacc.c:1646  */
    89617935    break;
    89627936
    89637937  case 715:
    8964 
    8965 /* Line 1806 of yacc.c  */
    8966 #line 2712 "parser.yy"
    8967     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7938#line 2712 "parser.yy" /* yacc.c:1646  */
     7939    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7940#line 7941 "Parser/parser.cc" /* yacc.c:1646  */
    89687941    break;
    89697942
    89707943  case 716:
    8971 
    8972 /* Line 1806 of yacc.c  */
    8973 #line 2714 "parser.yy"
    8974     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     7944#line 2714 "parser.yy" /* yacc.c:1646  */
     7945    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
     7946#line 7947 "Parser/parser.cc" /* yacc.c:1646  */
    89757947    break;
    89767948
    89777949  case 717:
    8978 
    8979 /* Line 1806 of yacc.c  */
    8980 #line 2716 "parser.yy"
    8981     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7950#line 2716 "parser.yy" /* yacc.c:1646  */
     7951    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7952#line 7953 "Parser/parser.cc" /* yacc.c:1646  */
    89827953    break;
    89837954
    89847955  case 718:
    8985 
    8986 /* Line 1806 of yacc.c  */
    8987 #line 2718 "parser.yy"
    8988     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7956#line 2718 "parser.yy" /* yacc.c:1646  */
     7957    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7958#line 7959 "Parser/parser.cc" /* yacc.c:1646  */
    89897959    break;
    89907960
    89917961  case 719:
    8992 
    8993 /* Line 1806 of yacc.c  */
    8994 #line 2720 "parser.yy"
    8995     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7962#line 2720 "parser.yy" /* yacc.c:1646  */
     7963    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7964#line 7965 "Parser/parser.cc" /* yacc.c:1646  */
    89967965    break;
    89977966
    89987967  case 720:
    8999 
    9000 /* Line 1806 of yacc.c  */
    9001 #line 2722 "parser.yy"
    9002     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7968#line 2722 "parser.yy" /* yacc.c:1646  */
     7969    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7970#line 7971 "Parser/parser.cc" /* yacc.c:1646  */
    90037971    break;
    90047972
    90057973  case 721:
    9006 
    9007 /* Line 1806 of yacc.c  */
    9008 #line 2724 "parser.yy"
    9009     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     7974#line 2724 "parser.yy" /* yacc.c:1646  */
     7975    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
     7976#line 7977 "Parser/parser.cc" /* yacc.c:1646  */
    90107977    break;
    90117978
    90127979  case 722:
    9013 
    9014 /* Line 1806 of yacc.c  */
    9015 #line 2726 "parser.yy"
    9016     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7980#line 2726 "parser.yy" /* yacc.c:1646  */
     7981    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7982#line 7983 "Parser/parser.cc" /* yacc.c:1646  */
    90177983    break;
    90187984
    90197985  case 723:
    9020 
    9021 /* Line 1806 of yacc.c  */
    9022 #line 2731 "parser.yy"
    9023     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     7986#line 2731 "parser.yy" /* yacc.c:1646  */
     7987    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
     7988#line 7989 "Parser/parser.cc" /* yacc.c:1646  */
    90247989    break;
    90257990
    90267991  case 724:
    9027 
    9028 /* Line 1806 of yacc.c  */
    9029 #line 2733 "parser.yy"
    9030     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     7992#line 2733 "parser.yy" /* yacc.c:1646  */
     7993    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
     7994#line 7995 "Parser/parser.cc" /* yacc.c:1646  */
    90317995    break;
    90327996
    90337997  case 725:
    9034 
    9035 /* Line 1806 of yacc.c  */
    9036 #line 2738 "parser.yy"
    9037     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     7998#line 2738 "parser.yy" /* yacc.c:1646  */
     7999    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
     8000#line 8001 "Parser/parser.cc" /* yacc.c:1646  */
    90388001    break;
    90398002
    90408003  case 726:
    9041 
    9042 /* Line 1806 of yacc.c  */
    9043 #line 2740 "parser.yy"
    9044     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     8004#line 2740 "parser.yy" /* yacc.c:1646  */
     8005    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
     8006#line 8007 "Parser/parser.cc" /* yacc.c:1646  */
    90458007    break;
    90468008
    90478009  case 728:
    9048 
    9049 /* Line 1806 of yacc.c  */
    9050 #line 2767 "parser.yy"
    9051     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8010#line 2767 "parser.yy" /* yacc.c:1646  */
     8011    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     8012#line 8013 "Parser/parser.cc" /* yacc.c:1646  */
    90528013    break;
    90538014
    90548015  case 732:
    9055 
    9056 /* Line 1806 of yacc.c  */
    9057 #line 2778 "parser.yy"
    9058     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8016#line 2778 "parser.yy" /* yacc.c:1646  */
     8017    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8018#line 8019 "Parser/parser.cc" /* yacc.c:1646  */
    90598019    break;
    90608020
    90618021  case 733:
    9062 
    9063 /* Line 1806 of yacc.c  */
    9064 #line 2780 "parser.yy"
    9065     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8022#line 2780 "parser.yy" /* yacc.c:1646  */
     8023    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8024#line 8025 "Parser/parser.cc" /* yacc.c:1646  */
    90668025    break;
    90678026
    90688027  case 734:
    9069 
    9070 /* Line 1806 of yacc.c  */
    9071 #line 2782 "parser.yy"
    9072     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8028#line 2782 "parser.yy" /* yacc.c:1646  */
     8029    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8030#line 8031 "Parser/parser.cc" /* yacc.c:1646  */
    90738031    break;
    90748032
    90758033  case 735:
    9076 
    9077 /* Line 1806 of yacc.c  */
    9078 #line 2784 "parser.yy"
    9079     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8034#line 2784 "parser.yy" /* yacc.c:1646  */
     8035    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8036#line 8037 "Parser/parser.cc" /* yacc.c:1646  */
    90808037    break;
    90818038
    90828039  case 736:
    9083 
    9084 /* Line 1806 of yacc.c  */
    9085 #line 2786 "parser.yy"
    9086     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8040#line 2786 "parser.yy" /* yacc.c:1646  */
     8041    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8042#line 8043 "Parser/parser.cc" /* yacc.c:1646  */
    90878043    break;
    90888044
    90898045  case 737:
    9090 
    9091 /* Line 1806 of yacc.c  */
    9092 #line 2788 "parser.yy"
    9093     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8046#line 2788 "parser.yy" /* yacc.c:1646  */
     8047    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8048#line 8049 "Parser/parser.cc" /* yacc.c:1646  */
    90948049    break;
    90958050
    90968051  case 738:
    9097 
    9098 /* Line 1806 of yacc.c  */
    9099 #line 2795 "parser.yy"
    9100     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8052#line 2795 "parser.yy" /* yacc.c:1646  */
     8053    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8054#line 8055 "Parser/parser.cc" /* yacc.c:1646  */
    91018055    break;
    91028056
    91038057  case 739:
    9104 
    9105 /* Line 1806 of yacc.c  */
    9106 #line 2797 "parser.yy"
    9107     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8058#line 2797 "parser.yy" /* yacc.c:1646  */
     8059    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8060#line 8061 "Parser/parser.cc" /* yacc.c:1646  */
    91088061    break;
    91098062
    91108063  case 740:
    9111 
    9112 /* Line 1806 of yacc.c  */
    9113 #line 2799 "parser.yy"
    9114     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8064#line 2799 "parser.yy" /* yacc.c:1646  */
     8065    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     8066#line 8067 "Parser/parser.cc" /* yacc.c:1646  */
    91158067    break;
    91168068
    91178069  case 741:
    9118 
    9119 /* Line 1806 of yacc.c  */
    9120 #line 2801 "parser.yy"
    9121     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8070#line 2801 "parser.yy" /* yacc.c:1646  */
     8071    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8072#line 8073 "Parser/parser.cc" /* yacc.c:1646  */
    91228073    break;
    91238074
    91248075  case 742:
    9125 
    9126 /* Line 1806 of yacc.c  */
    9127 #line 2803 "parser.yy"
    9128     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8076#line 2803 "parser.yy" /* yacc.c:1646  */
     8077    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8078#line 8079 "Parser/parser.cc" /* yacc.c:1646  */
    91298079    break;
    91308080
    91318081  case 743:
    9132 
    9133 /* Line 1806 of yacc.c  */
    9134 #line 2805 "parser.yy"
    9135     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8082#line 2805 "parser.yy" /* yacc.c:1646  */
     8083    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     8084#line 8085 "Parser/parser.cc" /* yacc.c:1646  */
    91368085    break;
    91378086
    91388087  case 744:
    9139 
    9140 /* Line 1806 of yacc.c  */
    9141 #line 2810 "parser.yy"
    9142     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     8088#line 2810 "parser.yy" /* yacc.c:1646  */
     8089    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
     8090#line 8091 "Parser/parser.cc" /* yacc.c:1646  */
    91438091    break;
    91448092
    91458093  case 745:
    9146 
    9147 /* Line 1806 of yacc.c  */
    9148 #line 2815 "parser.yy"
    9149     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     8094#line 2815 "parser.yy" /* yacc.c:1646  */
     8095    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[-1].decl), 0 ); }
     8096#line 8097 "Parser/parser.cc" /* yacc.c:1646  */
    91508097    break;
    91518098
    91528099  case 746:
    9153 
    9154 /* Line 1806 of yacc.c  */
    9155 #line 2817 "parser.yy"
    9156     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     8100#line 2817 "parser.yy" /* yacc.c:1646  */
     8101    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
     8102#line 8103 "Parser/parser.cc" /* yacc.c:1646  */
    91578103    break;
    91588104
    91598105  case 747:
    9160 
    9161 /* Line 1806 of yacc.c  */
    9162 #line 2819 "parser.yy"
    9163     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     8106#line 2819 "parser.yy" /* yacc.c:1646  */
     8107    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
     8108#line 8109 "Parser/parser.cc" /* yacc.c:1646  */
    91648109    break;
    91658110
    91668111  case 750:
    9167 
    9168 /* Line 1806 of yacc.c  */
    9169 #line 2843 "parser.yy"
     8112#line 2843 "parser.yy" /* yacc.c:1646  */
    91708113    { (yyval.en) = 0; }
     8114#line 8115 "Parser/parser.cc" /* yacc.c:1646  */
    91718115    break;
    91728116
    91738117  case 751:
    9174 
    9175 /* Line 1806 of yacc.c  */
    9176 #line 2845 "parser.yy"
    9177     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    9178     break;
    9179 
    9180 
    9181 
    9182 /* Line 1806 of yacc.c  */
    9183 #line 9184 "Parser/parser.cc"
     8118#line 2845 "parser.yy" /* yacc.c:1646  */
     8119    { (yyval.en) = (yyvsp[0].en); }
     8120#line 8121 "Parser/parser.cc" /* yacc.c:1646  */
     8121    break;
     8122
     8123
     8124#line 8125 "Parser/parser.cc" /* yacc.c:1646  */
    91848125      default: break;
    91858126    }
     
    92038144  *++yyvsp = yyval;
    92048145
    9205   /* Now `shift' the result of the reduction.  Determine what state
     8146  /* Now 'shift' the result of the reduction.  Determine what state
    92068147     that goes to, based on the state we popped back to and the rule
    92078148     number reduced by.  */
     
    92188159
    92198160
    9220 /*------------------------------------.
    9221 | yyerrlab -- here on detecting error |
    9222 `------------------------------------*/
     8161/*--------------------------------------.
     8162| yyerrlab -- here on detecting error. |
     8163`--------------------------------------*/
    92238164yyerrlab:
    92248165  /* Make sure we have latest lookahead translation.  See comments at
     
    92718212    {
    92728213      /* If just tried and failed to reuse lookahead token after an
    9273         error, discard it.  */
     8214        error, discard it.  */
    92748215
    92758216      if (yychar <= YYEOF)
    9276         {
    9277           /* Return failure if at end of input.  */
    9278           if (yychar == YYEOF)
    9279             YYABORT;
    9280         }
     8217        {
     8218          /* Return failure if at end of input.  */
     8219          if (yychar == YYEOF)
     8220            YYABORT;
     8221        }
    92818222      else
    9282         {
    9283           yydestruct ("Error: discarding",
    9284                       yytoken, &yylval);
    9285           yychar = YYEMPTY;
    9286         }
     8223        {
     8224          yydestruct ("Error: discarding",
     8225                      yytoken, &yylval);
     8226          yychar = YYEMPTY;
     8227        }
    92878228    }
    92888229
     
    93038244     goto yyerrorlab;
    93048245
    9305   /* Do not reclaim the symbols of the rule which action triggered
     8246  /* Do not reclaim the symbols of the rule whose action triggered
    93068247     this YYERROR.  */
    93078248  YYPOPSTACK (yylen);
     
    93168257`-------------------------------------------------------------*/
    93178258yyerrlab1:
    9318   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
     8259  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
    93198260
    93208261  for (;;)
     
    93228263      yyn = yypact[yystate];
    93238264      if (!yypact_value_is_default (yyn))
    9324         {
    9325           yyn += YYTERROR;
    9326           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
    9327             {
    9328               yyn = yytable[yyn];
    9329               if (0 < yyn)
    9330                 break;
    9331             }
    9332         }
     8265        {
     8266          yyn += YYTERROR;
     8267          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
     8268            {
     8269              yyn = yytable[yyn];
     8270              if (0 < yyn)
     8271                break;
     8272            }
     8273        }
    93338274
    93348275      /* Pop the current state because it cannot handle the error token.  */
    93358276      if (yyssp == yyss)
    9336         YYABORT;
     8277        YYABORT;
    93378278
    93388279
    93398280      yydestruct ("Error: popping",
    9340                   yystos[yystate], yyvsp);
     8281                  yystos[yystate], yyvsp);
    93418282      YYPOPSTACK (1);
    93428283      yystate = *yyssp;
     
    93448285    }
    93458286
     8287  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    93468288  *++yyvsp = yylval;
     8289  YY_IGNORE_MAYBE_UNINITIALIZED_END
    93478290
    93488291
     
    93688311  goto yyreturn;
    93698312
    9370 #if !defined(yyoverflow) || YYERROR_VERBOSE
     8313#if !defined yyoverflow || YYERROR_VERBOSE
    93718314/*-------------------------------------------------.
    93728315| yyexhaustedlab -- memory exhaustion comes here.  |
     
    93878330                  yytoken, &yylval);
    93888331    }
    9389   /* Do not reclaim the symbols of the rule which action triggered
     8332  /* Do not reclaim the symbols of the rule whose action triggered
    93908333     this YYABORT or YYACCEPT.  */
    93918334  YYPOPSTACK (yylen);
     
    93948337    {
    93958338      yydestruct ("Cleanup: popping",
    9396                   yystos[*yyssp], yyvsp);
     8339                  yystos[*yyssp], yyvsp);
    93978340      YYPOPSTACK (1);
    93988341    }
     
    94058348    YYSTACK_FREE (yymsg);
    94068349#endif
    9407   /* Make sure YYID is used.  */
    9408   return YYID (yyresult);
     8350  return yyresult;
    94098351}
    9410 
    9411 
    9412 
    9413 /* Line 2067 of yacc.c  */
    9414 #line 2848 "parser.yy"
     8352#line 2848 "parser.yy" /* yacc.c:1906  */
    94158353
    94168354// ----end of grammar----
     
    94318369// compile-command: "make install" //
    94328370// End: //
    9433 
  • src/Parser/parser.h

    rcb2b15c r50c5cf3  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 3.0.2.  */
    22
    33/* Bison interface for Yacc-like parsers in C
    4    
    5       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    6    
     4
     5   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
     6
    77   This program is free software: you can redistribute it and/or modify
    88   it under the terms of the GNU General Public License as published by
    99   the Free Software Foundation, either version 3 of the License, or
    1010   (at your option) any later version.
    11    
     11
    1212   This program is distributed in the hope that it will be useful,
    1313   but WITHOUT ANY WARRANTY; without even the implied warranty of
    1414   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1515   GNU General Public License for more details.
    16    
     16
    1717   You should have received a copy of the GNU General Public License
    1818   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     
    2727   Bison output files to be licensed under the GNU General Public
    2828   License without this special exception.
    29    
     29
    3030   This special exception was added by the Free Software Foundation in
    3131   version 2.2 of Bison.  */
    3232
    33 
    34 /* Tokens.  */
     33#ifndef YY_YY_PARSER_PARSER_H_INCLUDED
     34# define YY_YY_PARSER_PARSER_H_INCLUDED
     35/* Debug traces.  */
     36#ifndef YYDEBUG
     37# define YYDEBUG 1
     38#endif
     39#if YYDEBUG
     40extern int yydebug;
     41#endif
     42
     43/* Token type.  */
    3544#ifndef YYTOKENTYPE
    3645# define YYTOKENTYPE
    37    /* Put the tokens into the symbol table, so that GDB and other debuggers
    38       know about them.  */
    39    enum yytokentype {
    40      TYPEDEF = 258,
    41      AUTO = 259,
    42      EXTERN = 260,
    43      REGISTER = 261,
    44      STATIC = 262,
    45      INLINE = 263,
    46      FORTRAN = 264,
    47      CONST = 265,
    48      VOLATILE = 266,
    49      RESTRICT = 267,
    50      FORALL = 268,
    51      LVALUE = 269,
    52      VOID = 270,
    53      CHAR = 271,
    54      SHORT = 272,
    55      INT = 273,
    56      LONG = 274,
    57      FLOAT = 275,
    58      DOUBLE = 276,
    59      SIGNED = 277,
    60      UNSIGNED = 278,
    61      VALIST = 279,
    62      BOOL = 280,
    63      COMPLEX = 281,
    64      IMAGINARY = 282,
    65      TYPEOF = 283,
    66      LABEL = 284,
    67      ENUM = 285,
    68      STRUCT = 286,
    69      UNION = 287,
    70      OTYPE = 288,
    71      FTYPE = 289,
    72      DTYPE = 290,
    73      TRAIT = 291,
    74      SIZEOF = 292,
    75      OFFSETOF = 293,
    76      ATTRIBUTE = 294,
    77      EXTENSION = 295,
    78      IF = 296,
    79      ELSE = 297,
    80      SWITCH = 298,
    81      CASE = 299,
    82      DEFAULT = 300,
    83      DO = 301,
    84      WHILE = 302,
    85      FOR = 303,
    86      BREAK = 304,
    87      CONTINUE = 305,
    88      GOTO = 306,
    89      RETURN = 307,
    90      CHOOSE = 308,
    91      DISABLE = 309,
    92      ENABLE = 310,
    93      FALLTHRU = 311,
    94      TRY = 312,
    95      CATCH = 313,
    96      CATCHRESUME = 314,
    97      FINALLY = 315,
    98      THROW = 316,
    99      THROWRESUME = 317,
    100      AT = 318,
    101      ASM = 319,
    102      ALIGNAS = 320,
    103      ALIGNOF = 321,
    104      ATOMIC = 322,
    105      GENERIC = 323,
    106      NORETURN = 324,
    107      STATICASSERT = 325,
    108      THREADLOCAL = 326,
    109      IDENTIFIER = 327,
    110      QUOTED_IDENTIFIER = 328,
    111      TYPEDEFname = 329,
    112      TYPEGENname = 330,
    113      ATTR_IDENTIFIER = 331,
    114      ATTR_TYPEDEFname = 332,
    115      ATTR_TYPEGENname = 333,
    116      INTEGERconstant = 334,
    117      FLOATINGconstant = 335,
    118      CHARACTERconstant = 336,
    119      STRINGliteral = 337,
    120      ZERO = 338,
    121      ONE = 339,
    122      ARROW = 340,
    123      ICR = 341,
    124      DECR = 342,
    125      LS = 343,
    126      RS = 344,
    127      LE = 345,
    128      GE = 346,
    129      EQ = 347,
    130      NE = 348,
    131      ANDAND = 349,
    132      OROR = 350,
    133      ELLIPSIS = 351,
    134      MULTassign = 352,
    135      DIVassign = 353,
    136      MODassign = 354,
    137      PLUSassign = 355,
    138      MINUSassign = 356,
    139      LSassign = 357,
    140      RSassign = 358,
    141      ANDassign = 359,
    142      ERassign = 360,
    143      ORassign = 361,
    144      ATassign = 362,
    145      THEN = 363
    146    };
     46  enum yytokentype
     47  {
     48    TYPEDEF = 258,
     49    AUTO = 259,
     50    EXTERN = 260,
     51    REGISTER = 261,
     52    STATIC = 262,
     53    INLINE = 263,
     54    FORTRAN = 264,
     55    CONST = 265,
     56    VOLATILE = 266,
     57    RESTRICT = 267,
     58    FORALL = 268,
     59    LVALUE = 269,
     60    VOID = 270,
     61    CHAR = 271,
     62    SHORT = 272,
     63    INT = 273,
     64    LONG = 274,
     65    FLOAT = 275,
     66    DOUBLE = 276,
     67    SIGNED = 277,
     68    UNSIGNED = 278,
     69    VALIST = 279,
     70    BOOL = 280,
     71    COMPLEX = 281,
     72    IMAGINARY = 282,
     73    TYPEOF = 283,
     74    LABEL = 284,
     75    ENUM = 285,
     76    STRUCT = 286,
     77    UNION = 287,
     78    OTYPE = 288,
     79    FTYPE = 289,
     80    DTYPE = 290,
     81    TRAIT = 291,
     82    SIZEOF = 292,
     83    OFFSETOF = 293,
     84    ATTRIBUTE = 294,
     85    EXTENSION = 295,
     86    IF = 296,
     87    ELSE = 297,
     88    SWITCH = 298,
     89    CASE = 299,
     90    DEFAULT = 300,
     91    DO = 301,
     92    WHILE = 302,
     93    FOR = 303,
     94    BREAK = 304,
     95    CONTINUE = 305,
     96    GOTO = 306,
     97    RETURN = 307,
     98    CHOOSE = 308,
     99    DISABLE = 309,
     100    ENABLE = 310,
     101    FALLTHRU = 311,
     102    TRY = 312,
     103    CATCH = 313,
     104    CATCHRESUME = 314,
     105    FINALLY = 315,
     106    THROW = 316,
     107    THROWRESUME = 317,
     108    AT = 318,
     109    ASM = 319,
     110    ALIGNAS = 320,
     111    ALIGNOF = 321,
     112    ATOMIC = 322,
     113    GENERIC = 323,
     114    NORETURN = 324,
     115    STATICASSERT = 325,
     116    THREADLOCAL = 326,
     117    IDENTIFIER = 327,
     118    QUOTED_IDENTIFIER = 328,
     119    TYPEDEFname = 329,
     120    TYPEGENname = 330,
     121    ATTR_IDENTIFIER = 331,
     122    ATTR_TYPEDEFname = 332,
     123    ATTR_TYPEGENname = 333,
     124    INTEGERconstant = 334,
     125    FLOATINGconstant = 335,
     126    CHARACTERconstant = 336,
     127    STRINGliteral = 337,
     128    ZERO = 338,
     129    ONE = 339,
     130    ARROW = 340,
     131    ICR = 341,
     132    DECR = 342,
     133    LS = 343,
     134    RS = 344,
     135    LE = 345,
     136    GE = 346,
     137    EQ = 347,
     138    NE = 348,
     139    ANDAND = 349,
     140    OROR = 350,
     141    ELLIPSIS = 351,
     142    MULTassign = 352,
     143    DIVassign = 353,
     144    MODassign = 354,
     145    PLUSassign = 355,
     146    MINUSassign = 356,
     147    LSassign = 357,
     148    RSassign = 358,
     149    ANDassign = 359,
     150    ERassign = 360,
     151    ORassign = 361,
     152    ATassign = 362,
     153    THEN = 363
     154  };
    147155#endif
    148156/* Tokens.  */
     
    254262#define THEN 363
    255263
    256 
    257 
    258 
     264/* Value type.  */
    259265#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    260 typedef union YYSTYPE
     266typedef union YYSTYPE YYSTYPE;
     267union YYSTYPE
    261268{
    262 
    263 /* Line 2068 of yacc.c  */
    264 #line 115 "parser.yy"
     269#line 115 "parser.yy" /* yacc.c:1909  */
    265270
    266271        Token tok;
     
    279284        bool flag;
    280285
    281 
    282 
    283 /* Line 2068 of yacc.c  */
    284 #line 285 "Parser/parser.h"
    285 } YYSTYPE;
     286#line 287 "Parser/parser.h" /* yacc.c:1909  */
     287};
    286288# define YYSTYPE_IS_TRIVIAL 1
    287 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
    288289# define YYSTYPE_IS_DECLARED 1
    289290#endif
    290291
     292
    291293extern YYSTYPE yylval;
    292294
    293 
     295int yyparse (void);
     296
     297#endif /* !YY_YY_PARSER_PARSER_H_INCLUDED  */
  • src/Parser/parser.yy

    rcb2b15c r50c5cf3  
    827827                { $$ = new StatementNode( build_while( $3, $5 ) ); }
    828828        | DO statement WHILE '(' comma_expression ')' ';'
    829                 { $$ = new StatementNode( build_while( $5, $2 ) ); }
     829                { $$ = new StatementNode( build_while( $5, $2, true ) ); }
    830830        | FOR '(' push for_control_expression ')' statement
    831831                { $$ = new StatementNode( build_for( $4, $6 ) ); }
  • src/examples/gc_no_raii/bug-repro/field.c

    rcb2b15c r50c5cf3  
    6262{
    6363        struct gc_object_header* object;
    64         #if _DEBUG
     64        #ifndef NDEBUG
    6565                intptr_t lower_limit;
    6666                intptr_t upper_limit;
     
    7171                gc_pool_object_iterator* const this,
    7272                void* start_object
    73                 #if _DEBUG
     73                #ifndef NDEBUG
    7474                        , intptr_t pool_start
    7575                        , intptr_t pool_end
  • src/examples/gc_no_raii/src/gcpointers.c

    rcb2b15c r50c5cf3  
    1414                gc_object_header* obj = gc_get_object_for_ref(gc_get_state(), (void*)this);
    1515                check(obj);
    16                 check(gc_obj_is_valide(obj));
    17                 check(gc_is_managed(this) == gc_is_managed(obj->type_chain) || obj->type_chain == NULL);
     16                check(is_valid(obj));
     17                check(gc_is_managed(this) == gc_is_managed(obj->type_chain) || !obj->type_chain);
    1818                this->next = obj->type_chain;
    1919                obj->type_chain = this;
    20                 check(obj->is_valide());
     20                check(is_valid(obj));
    2121        }
    2222        else
     
    2424                gc_object_header* obj = gc_get_object_ptr((void*)this->ptr);
    2525                check(obj);
    26                 check(gc_obj_is_valide(obj));
    27                 check(gc_is_managed(this) == gc_is_managed(obj->root_chain) || obj->root_chain == NULL);
     26                check(is_valid(obj));
     27                check(!obj->root_chain || this->ptr == obj->root_chain->ptr);
     28                check(!obj->root_chain || gc_is_managed(this) == gc_is_managed(obj->root_chain));
    2829                this->next = obj->root_chain;
    2930                obj->root_chain = this;
    30                 check(gc_obj_is_valide(obj));
     31                check(is_valid(obj));
    3132        }
    3233}
     
    6970}
    7071
    71 gcpointer_t* gcpointer_assign(gcpointer_t* this, gcpointer_t* rhs)
     72gcpointer_t ?=?(gcpointer_t* this, gcpointer_t rhs)
    7273{
    73         if(this != rhs)
    74         {
    75                 unregister_ptr(this);
     74        unregister_ptr(this);
     75        this->ptr = rhs.ptr;
     76        register_ptr(this);
    7677
    77                 this->ptr = rhs->ptr;
    78 
    79                 register_ptr(this);
    80         }
    81 
    82         return this;
     78        return *this;
    8379}
    8480
    8581//Logical operators
    86 bool gcpointer_equal(gcpointer_t* this, gcpointer_t* rhs)
     82bool gcpointer_equal(const gcpointer_t* this, const gcpointer_t* rhs)
    8783{
    8884        return this->ptr == rhs->ptr;
    8985}
    9086
    91 bool gcpointer_not_equal(gcpointer_t* this, gcpointer_t* rhs)
     87bool gcpointer_not_equal(const gcpointer_t* this, const gcpointer_t* rhs)
    9288{
    9389        return this->ptr != rhs->ptr;
    9490}
    9591
    96 bool gcpointer_null(gcpointer_t* this)
     92bool gcpointer_null(const gcpointer_t* this)
    9793{
    9894        return this->ptr == (intptr_t)NULL;
    9995}
     96
     97#ifndef NDEBUG
     98        bool is_valid(const gcpointer_t* this) {
     99                if(gcpointer_null(this)) return true;
     100
     101                gc_object_header* obj = gc_get_object_ptr((void*)this->ptr);
     102                check(obj);
     103                check(is_valid(obj));
     104                check(!obj->root_chain || this->ptr == obj->root_chain->ptr);
     105
     106                if( !gc_is_managed(this))
     107                {
     108                        check( !(this->next) || this->ptr == this->next->ptr );
     109                }
     110
     111                return true;
     112        }
     113#endif
    100114
    101115forall(otype T) void ?{}(gcpointer(T)* this) {
     
    107121}
    108122
    109 forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T)* other) {
    110         (&this->internal) { other->internal };
     123forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T) other) {
     124        (&this->internal) { other.internal };
    111125}
    112126
     
    115129}
    116130
    117 // forall(otype T) gcpointer(T) ?=?(gcpointer(T) this, gcpointer(T) rhs);
     131forall(otype T) gcpointer(T) ?=?(gcpointer(T)* this, gcpointer(T) rhs) {
     132        this->internal = rhs.internal;
     133        return *this;
     134}
    118135//
    119136// forall(otype T) T *?(gcpointer(T) this);
     
    124141//
    125142// //Logical operators
     143forall(otype T) int ?!=?(gcpointer(T) this, int zero) {
     144        return this.internal.ptr != 0;
     145}
    126146// forall(otype T) int ?!=?(gcpointer(T) this, gcpointer(T) rhs);
    127147// forall(otype T) int ?==?(gcpointer(T) this, gcpointer(T) rhs);
  • src/examples/gc_no_raii/src/gcpointers.h

    rcb2b15c r50c5cf3  
    33#include <stdbool.h>
    44#include <stdint.h>
     5
     6forall(dtype T)
     7struct gcpointer;
    58
    69struct gcpointer_t
     
    1417void ?{}(gcpointer_t* this, gcpointer_t other);
    1518void ^?{}(gcpointer_t* this);
    16 gcpointer_t* ?=?(gcpointer_t this, gcpointer_t rhs);
     19gcpointer_t ?=?(gcpointer_t* this, gcpointer_t rhs);
    1720
    1821//Logical operators
    1922bool gcpointer_equal(gcpointer_t* this, gcpointer_t* rhs);
    2023bool gcpointer_not_equal(gcpointer_t* this, gcpointer_t* rhs);
    21 bool gcpointer_null(gcpointer_t* this);
     24bool gcpointer_null(const gcpointer_t* this);
    2225
    23 forall(otype T)
     26
     27#ifndef NDEBUG
     28        bool is_valid(const gcpointer_t* this);
     29#endif
     30
     31forall(dtype T)
    2432struct gcpointer
    2533{
     
    3038forall(otype T) void ?{}(gcpointer(T)* this);
    3139forall(otype T) void ?{}(gcpointer(T)* this, void* address);
    32 forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T)* other);
     40forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T) other);
    3341forall(otype T) void ^?{}(gcpointer(T)* this);
    34 forall(otype T) gcpointer(T) ?=?(gcpointer(T) this, gcpointer(T) rhs);
     42forall(otype T) gcpointer(T) ?=?(gcpointer(T)* this, gcpointer(T) rhs);
    3543
    3644
    37 forall(otype T) T *?(gcpointer(T) this);
     45// forall(otype T) T *?(gcpointer(T) this);
    3846forall(otype T) T* get(gcpointer(T)* this);
    3947
    4048//Logical operators
     49forall(otype T) int ?!=?(gcpointer(T) this, int zero);
    4150forall(otype T) int ?!=?(gcpointer(T) this, gcpointer(T) rhs);
    4251forall(otype T) int ?==?(gcpointer(T) this, gcpointer(T) rhs);
  • src/examples/gc_no_raii/src/internal/card_table.h

    rcb2b15c r50c5cf3  
    11#pragma once
    2 
    3 #include <stdlib>
    42
    53#include "globals.h"
     
    97{
    108        size_t card = ( ((intptr_t)address) & CARDS_OFFSET_MASK ) >> CARDS_SIZE_EXP;
     9        checkf(card < CARDS_COUNT, (const char*)"%lu %lu = (%lx & %lx) >> %lu\n", (size_t)CARDS_COUNT, (size_t)card, (size_t)address, (size_t)CARDS_OFFSET_MASK, (size_t)CARDS_SIZE_EXP);
    1110        check(card < CARDS_COUNT);
    1211        return card;
     
    1918};
    2019
    21 static inline void ctor(card_table_t* const this)
     20static inline void ctor_card(card_table_t* const this)
    2221{
    2322        this->count = 0;
    2423}
    2524
    26 static inline void dtor(card_table_t* const this)
     25static inline void dtor_card(card_table_t* const this)
    2726{
    2827
     
    4847        else
    4948        {
    50                 check(card == count);
     49                check(card == this->count);
    5150                this->count++;
    5251                this->cards_start[card] = object;
  • src/examples/gc_no_raii/src/internal/collector.c

    rcb2b15c r50c5cf3  
    2525        gc_object_header* obj = gc_get_object_ptr((void*)target->ptr);
    2626
    27         check(gc_is_valide(obj));
     27        check(is_valid(obj));
    2828
    2929        gcpointer_t** prev_next_ptr = managed ? &obj->type_chain : &obj->root_chain;
     
    3838void* gc_allocate(size_t target_size)
    3939{
    40         sout | "Allocating " | target_size | " bytes" | endl;
     40        // sout | "Allocating " | target_size | " bytes" | endl;
    4141
    4242        size_t size = gc_compute_size(target_size + sizeof(gc_object_header));
    4343
    44         sout | "Object header size: " | sizeof(gc_object_header) | " bytes" | endl;
    45         sout | "Actual allocation size: " | size | " bytes" | endl;
     44        // sout | "Object header size: " | sizeof(gc_object_header) | " bytes" | endl;
     45        // sout | "Actual allocation size: " | size | " bytes" | endl;
    4646
    4747        check(size < POOL_SIZE_BYTES);
     
    6060        if((intptr_t)(block = gc_try_allocate(gc, size))) return gc_finish_alloc_block(block, size, target_size);
    6161
    62         checkf(false, "ERROR: allocation in new pool failed");
     62        checkf( (int) 0, "ERROR: allocation in new pool failed");
    6363
    6464        return NULL;
     
    6767void* gc_finish_alloc_block(void* block, size_t actual_size, size_t target_size)
    6868{
    69         void* data = (void*)(((intptr_t)block) + sizeof(gc_object_header));
     69        intptr_t data = ((intptr_t)block) + sizeof(gc_object_header);
    7070        void* header = block;
    7171
    72         check(((intptr_t)data) > ((intptr_t)block));
    73         check(((intptr_t)data) >= ((intptr_t)header));
    74         check(is_aligned(data));
    75         check(((intptr_t)data) + target_size <= ((intptr_t)block) + actual_size);
     72        check( data > ((intptr_t)block));
     73        check( data >= ((intptr_t)header));
     74        check( gc_is_aligned( (void*)data ) );
     75        check( data + target_size <= ((intptr_t)block) + actual_size );
    7676
    7777        gc_object_header* obj = placement_ctor(header, actual_size);
    7878
    7979        (void)obj; //remove unsused warning since this is for debug
    80         check(obj == get_object_ptr(data));
     80        check(obj == gc_get_object_ptr( (void*)data ));
    8181
    8282        gc_register_allocation(gc_get_state(), actual_size);
    8383
    84         return data;
     84        return (void*)data;
    8585}
    8686
     
    119119        check(!ptr->forward);
    120120        check(!ptr->is_forwarded);
    121         check(gc_is_from_space(gc_pool_of(ptr)));
     121        check(gc_pool_is_from_space(gc_pool_of(ptr)));
    122122
    123123        gc_memory_pool* pool = gc_pool_of(ptr)->mirror;
     
    143143                check(((intptr_t)field) < ((intptr_t)((intptr_t)object) + object->size));
    144144
    145                 check(gc_is_in_to_space(gc_get_state(), &type->ptr));
     145                check(gc_is_in_to_space(gc_get_state(), &field->ptr));
    146146
    147147                intptr_t* ref = &field->ptr;
  • src/examples/gc_no_raii/src/internal/collector.h

    rcb2b15c r50c5cf3  
    11#pragma once
    22
    3 #include <stdlib>
     3#include <stdlib.h>
    44
    55#include "tools.h"
  • src/examples/gc_no_raii/src/internal/memory_pool.c

    rcb2b15c r50c5cf3  
    11#include "memory_pool.h"
    22
    3 #include <stdlib>
     3extern "C" {
     4        #include <stdlib.h>
     5        #include <string.h>
     6}
    47
     8#include "collector.h"
    59#include "object_header.h"
    610
     
    1519        card_table_t* new = (card_table_t*)malloc(sizeof(card_table_t));
    1620        this->cards = new;
    17         ctor(this->cards);
     21        ctor_card(this->cards);
    1822
    1923        this->end_p = ((uint8_t*)this) + size;
    2024        this->free_p = this->start_p;
    2125
    22         check(gc_pool_of(this) == this);
     26        check( gc_pool_of( (void*)this ) == this);
    2327        check(this->cards);
    2428        gc_reset_pool(this);
     
    2731void dtor(gc_memory_pool *const this)
    2832{
    29         dtor(this->cards);
     33        dtor_card(this->cards);
    3034        free(this->cards);
    3135}
     
    3438{
    3539        this->free_p = this->start_p;
    36         #if _DEBUG
    37                 memset(this->start_p, 0xCD, gc_pool_total_size(this));
     40        #ifndef NDEBUG
     41                memset(this->start_p, 0xCD, gc_pool_size_total(this));
    3842        #endif
    3943
     
    4145        reset(this->cards);
    4246
    43         check(gc_pool_size_left(this) == gc_pool_total_size(this));
     47        check(gc_pool_size_left(this) == gc_pool_size_total(this));
    4448}
    4549
     
    5862}
    5963
    60 void ctor(
    61                 gc_pool_object_iterator* const this,
     64void ?{}(       gc_pool_object_iterator* this,
    6265                struct gc_object_header* start_object
    63                 #if _DEBUG
     66                #ifndef NDEBUG
    6467                        , intptr_t pool_start
    6568                        , intptr_t pool_end
     
    6871{
    6972        this->object = start_object;
    70         #if _DEBUG
     73        #ifndef NDEBUG
    7174                this->lower_limit = pool_start;
    7275                this->upper_limit = pool_end;
    7376        #endif
    7477
    75         check( ((intptr_t)start_object) >= lower_limit );
    76         check( ((intptr_t)start_object) <= upper_limit );
     78        check( ((intptr_t)start_object) >= this->lower_limit );
     79        check( ((intptr_t)start_object) <= this->upper_limit );
    7780}
     81
     82void ^?{}( gc_pool_object_iterator* this ) {}
    7883
    7984gc_pool_object_iterator gc_pool_iterator_for(gc_memory_pool* const this, void* member)
     
    8186        size_t card = card_of(member);
    8287        intptr_t member_add = (intptr_t)member;
    83         void* start_obj;
    84         intptr_t start_obj_add;
     88        intptr_t start_obj;
    8589
    8690        do
    8791        {
    8892                check(card < CARDS_COUNT);
    89                 start_obj = object_at(this->cards, card);
     93                start_obj = (intptr_t)object_at(this->cards, card);
    9094                check(card != 0 || start_obj);
    9195                card--;
    92                 start_obj_add = (intptr_t)start_obj;
    9396        }
    94         while(start_obj_add > member_add || start_obj_add != 0);
     97        while(start_obj > member_add || !(start_obj));
    9598
    96         check(start_obj);
    97        
     99        check( start_obj );
     100
    98101        struct gc_object_header* start_obj_typed = (struct gc_object_header*)start_obj;
    99102
    100         gc_pool_object_iterator it;
    101         ctor( &it,
    102                 start_obj_typed,
    103                 #if _DEBUG
     103        return (gc_pool_object_iterator) {
     104                start_obj_typed
     105                #ifndef NDEBUG
    104106                        , (intptr_t)this->start_p
    105107                        , (intptr_t)this->free_p
    106108                #endif
    107         );
    108         return it;
     109        };
    109110}
    110111
     
    117118{
    118119        struct gc_object_header* start_obj = (struct gc_object_header*)this->start_p;
    119         gc_pool_object_iterator it;
    120         ctor( &it,
    121                 start_obj,
    122                 #if _DEBUG
     120        return (gc_pool_object_iterator) {
     121                start_obj
     122                #ifndef NDEBUG
    123123                        , (intptr_t)this->start_p
    124124                        , (intptr_t)this->free_p
    125125                #endif
    126         );
    127         return it;
     126        };
    128127}
    129128
    130129gc_pool_object_iterator end(gc_memory_pool* const this)
    131130{
    132         gc_pool_object_iterator it;
    133         ctor( &it,
    134                 (struct gc_object_header*)this->free_p,
    135                 #if _DEBUG
     131        return (gc_pool_object_iterator) {
     132                (struct gc_object_header*)this->free_p
     133                #ifndef NDEBUG
    136134                        , (intptr_t)this->start_p
    137135                        , (intptr_t)this->free_p
    138136                #endif
    139         );
    140         return it;
     137        };
    141138}
    142139
     
    145142        struct gc_object_header* object = it->object;
    146143        intptr_t next_ptr = ((intptr_t)object) + object->size;
    147         check(next_ptr > lower_limit);
    148         check(next_ptr <= upper_limit);
     144        check(next_ptr > it->lower_limit);
     145        check(next_ptr <= it->upper_limit);
    149146
    150147        struct gc_object_header* next_obj = ((struct gc_object_header*)next_ptr);
    151         check(next_ptr == upper_limit || is_valide(next_obj));
     148        check(next_ptr == it->upper_limit || is_valid(next_obj));
    152149
    153150        it->object = next_obj;
  • src/examples/gc_no_raii/src/internal/memory_pool.h

    rcb2b15c r50c5cf3  
    3939{
    4040        struct gc_object_header* object;
    41         #if _DEBUG
     41        #ifndef NDEBUG
    4242                intptr_t lower_limit;
    4343                intptr_t upper_limit;
     
    4646
    4747
    48 void ctor(
    49                 gc_pool_object_iterator* const this,
     48void ?{}(       gc_pool_object_iterator* this,
    5049                struct gc_object_header* start_object
    51                 #if _DEBUG
     50                #ifndef NDEBUG
    5251                        , intptr_t pool_start
    5352                        , intptr_t pool_end
    5453                #endif
    5554        );
     55
     56void ^?{}( gc_pool_object_iterator* this );
    5657
    5758bool ?!=?(const gc_pool_object_iterator lhs, const gc_pool_object_iterator rhs);
  • src/examples/gc_no_raii/src/internal/object_header.c

    rcb2b15c r50c5cf3  
    33#include <stdint.h>
    44
     5#include "collector.h"
    56#include "globals.h"
    67#include "gcpointers.h"
     
    89void ctor(gc_object_header* const this, size_t inSize)
    910{
    10         #if _DEBUG
     11        #ifndef NDEBUG
    1112                this->canary_start = CANARY_VALUE;
    1213        #endif
     
    1819        this->is_forwarded = false;
    1920
    20         #if _DEBUG
     21        #ifndef NDEBUG
    2122                this->canary_end = CANARY_VALUE;
    2223        #endif
     
    2526void copy_ctor(gc_object_header* const this, const gc_object_header* const other)
    2627{
    27         #if _DEBUG
     28        #ifndef NDEBUG
    2829                this->canary_start = CANARY_VALUE;
    2930        #endif
     
    3536        this->is_forwarded = false;
    3637
    37         #if _DEBUG
     38        #ifndef NDEBUG
    3839                this->canary_end = CANARY_VALUE;
    3940        #endif
     
    4243        while(root)
    4344        {
    44                 check(get_object_ptr(root->ptr) == other);
     45                check(gc_get_object_ptr( (void*)root->ptr ) == other);
    4546                root->ptr = ((intptr_t)this) + sizeof(gc_object_header);
    4647
    47                 check(get_object_ptr(root->ptr) == this);
     48                check(gc_get_object_ptr( (void*)root->ptr ) == this);
    4849                root = root->next;
    4950        }
     
    5657
    5758                size_t offset = (intptr_t)type - (intptr_t)other;
    58                 check(offset < size);
     59                check(offset < this->size);
    5960
    6061                gcpointer_t* member_ptr = (gcpointer_t*)( (intptr_t)this + offset );
     
    6364
    6465                size_t next_offset = type->next ? (intptr_t)type->next - (intptr_t)other : 0;
    65                 check(next_offset < size);
     66                check(next_offset < this->size);
    6667
    6768                gcpointer_t* next_ptr = type->next ? (gcpointer_t*)((intptr_t)this + next_offset) : NULL;
     
    7374        }
    7475
    75         check(is_valide(this));
     76        check(is_valid(this));
    7677}
    7778
    78 #if _DEBUG
    79         bool is_valide(const gc_object_header* const this)
     79#ifndef NDEBUG
     80        bool is_valid(const gc_object_header* const this)
    8081        {
    81                 check(this->canary_start == CANARY_VALUE);
    82                 check(this->canary_end == CANARY_VALUE);
     82                check((intptr_t)this->canary_start == (intptr_t)CANARY_VALUE);
     83                check((intptr_t)this->canary_end == (intptr_t)CANARY_VALUE);
    8384
    84                 check(this->is_forwarded == (this->forward != nullptr));
     85                check(this->is_forwarded == ( (intptr_t)this->forward != (intptr_t)NULL));
    8586
    8687                check(this->size < POOL_SIZE_BYTES);
     
    8990                while(root)
    9091                {
    91                         check(get_object_ptr(root->ptr) == this);
     92                        checkf(gc_get_object_ptr( (void*)root->ptr ) == this, (const char*)"Expected %lX got %lX\n", gc_get_object_ptr( (void*)root->ptr ), this);
    9293
    9394                        root = root->next;
    9495                }
    9596
    96                 gcpointer_t* type = type_chain;
     97                gcpointer_t* type = this->type_chain;
    9798                while(type)
    9899                {
    99100                        check((intptr_t)type > (intptr_t)this);
    100                         check((intptr_t)type < (intptr_t)((intptr_t)this + size));
     101                        check((intptr_t)type < (intptr_t)(((intptr_t)this) + this->size));
    101102
    102103                        type = type->next;
     
    105106                return true;
    106107        }
     108        #else
     109        #error blarg
    107110#endif
  • src/examples/gc_no_raii/src/internal/object_header.h

    rcb2b15c r50c5cf3  
    77#include "tools.h"
    88
    9 #if DEBUG
    10         static const long unsigned int CANARY_VALUE = 0xCAFEBABACAFEBABA;
     9#ifndef NDEBUG
     10        static void* const CANARY_VALUE = (void*)0xCAFEBABACAFEBABA;
    1111#endif
    1212
     
    1616struct gc_object_header
    1717{
    18         #if DEBUG
     18        #ifndef NDEBUG
    1919                void* canary_start;
    2020        #endif
     
    2626        bool                    is_forwarded;
    2727
    28         #if DEBUG
     28        #ifndef NDEBUG
    2929                void* canary_end;
    3030        #endif
     
    4747        return this;
    4848}
     49
     50#ifndef NDEBUG
     51        bool is_valid(const gc_object_header* const this);
     52#endif
  • src/examples/gc_no_raii/src/internal/state.c

    rcb2b15c r50c5cf3  
    2121void gc_state_calc_usage(gc_state *const this);
    2222
    23 #if DEBUG
     23#ifndef NDEBUG
    2424        bool gc_state_roots_match(gc_state *const this);
    2525        bool gc_state_no_from_space_ref(gc_state *const this);
     
    7676gc_object_header* gc_get_object_for_ref(gc_state* state, void* member)
    7777{
     78        volatile int stage = 0;
    7879        intptr_t target = ((intptr_t)member);
    7980        if(!gc_is_in_heap(state, member)) return NULL;
     81        stage++;
    8082
    8183        gc_memory_pool* pool = gc_pool_of(member);
     84        stage++;
    8285        gc_pool_object_iterator it = gc_pool_iterator_for(pool, member);
     86        stage++;
    8387        gc_pool_object_iterator end = end(pool);
     88        stage++;
    8489
    8590        while(it != end)
    8691        {
    8792                gc_object_header* object = *it;
     93                check(object);
     94                check( is_valid(object) );
    8895                {
    8996                        intptr_t start = ((intptr_t)object);
     
    94101                        }
    95102                }
     103                stage++;
    96104                ++it;
    97105        }
    98106
    99         checkf(false, "is_in_heap() and iterator_for() return inconsistent data");
     107        checkf( (int) 0, "is_in_heap() and iterator_for() return inconsistent data");
    100108        abort();
    101109        return NULL;
     
    176184        this->from_code = (~this->from_code) & 0x01;
    177185
    178         #if _DEBUG
     186        #ifndef NDEBUG
    179187                {
    180188                        gc_memory_pool* pool = this->from_space;
     
    251259}
    252260
    253 #if _DEBUG
     261#ifndef NDEBUG
    254262        bool gc_state_roots_match(gc_state* const this)
    255263        {
     
    265273                                size += object->size;
    266274
    267                                 gcpointer_base* ptr = object->root_chain;
     275                                gcpointer_t* ptr = object->root_chain;
    268276                                while(ptr)
    269277                                {
    270                                         check(get_object_ptr(ptr->m_ptr) == object);
    271                                         ptr = ptr->m_next;
     278                                        check(gc_get_object_ptr( (void*)ptr->ptr ) == object);
     279                                        ptr = ptr->next;
    272280                                }
    273281                        }
    274282
    275                         check(size + gc_pool_size_used(pool) == gc_pool_size_total(pool));
     283                        checkf(size + gc_pool_size_left(pool) == gc_pool_size_total(pool),
     284                                (const char*)"expected %lu + %lu == %lu\n",
     285                                (size_t)size,
     286                                (size_t)gc_pool_size_left(pool),
     287                                (size_t)gc_pool_size_total(pool));
    276288
    277289                        pool = pool->next;
     
    286298                while(pool)
    287299                {
    288                         void** potential_ref = (void**)pool->m_start;
    289                         while(potential_ref < (void**)pool->m_free)
     300                        void** potential_ref = (void**)pool->start_p;
     301                        while(potential_ref < (void**)pool->free_p)
    290302                        {
    291303                                check(!gc_is_in_heap(this, *potential_ref));
  • src/examples/gc_no_raii/src/internal/state.h

    rcb2b15c r50c5cf3  
    3838static inline bool gc_needs_collect(gc_state* state)
    3939{
    40         sout | "Used Space: " | state->used_space | " bytes" | endl;
     40        // sout | "Used Space: " | state->used_space | " bytes" | endl;
    4141        return state->used_space * 2 > state->total_space;
    4242}
  • src/examples/gc_no_raii/src/tools/checks.h

    rcb2b15c r50c5cf3  
    11#pragma once
    22
    3 #if _DEBUG
     3#ifdef NDEBUG
     4
     5#define check(x)
     6
     7#define checkf(x, format, ...)
     8
     9#warning no debug checks
     10
     11#else
    412
    513#include <stdlib.h>
     
    1018                printf("CHECK failed : %s at %s:%i\n", #x, __FILE__, __LINE__);\
    1119                abort();\
    12         }}while(0)\
     20        }}while( (int)0 )\
    1321
    1422#define checkf(x, ...) do {\
     
    1725                printf(__VA_ARGS__);\
    1826                abort();\
    19         }}while(0)\
    20 
    21 #else
    22 
    23 #define check(x)
    24 
    25 #define checkf(x, format, ...)
     27        }}while( (int)0 )\
    2628
    2729#endif //NO_CHECKS
  • src/examples/gc_no_raii/src/tools/print.c

    rcb2b15c r50c5cf3  
    11#include "tools.h"
    22
    3 #if _DEBUG
    4         ofstream *sout = ofstream_stdout();
     3#ifndef NDEBUG
     4        // ofstream *sout = ofstream_stdout();
    55#endif
  • src/examples/gc_no_raii/src/tools/print.h

    rcb2b15c r50c5cf3  
    11#pragma once
    22
    3 #if _DEBUG
    4 
    5 #include <fstream>
    6 
    7 #define DEBUG_OUT(x) sout | x | endl;
    8 
    9 #else
     3// #ifndef NDEBUG
     4//
     5// #include <fstream>
     6//
     7// #define DEBUG_OUT(x) sout | x | endl;
     8//
     9// #else
    1010
    1111#define DEBUG_OUT(x)
    1212
    13 #endif //NO_CHECKS
     13// #endif //NO_CHECKS
  • src/examples/gc_no_raii/test/badlll.c

    rcb2b15c r50c5cf3  
    11#include "gc.h"
     2
     3#include <stdio.h>
    24
    35struct List_t
     
    79};
    810
    9 void ?{}(List_t* this);
    10 List_t* ?=?(List_t* this, List_t* rhs);
    11 
    1211typedef gcpointer(List_t) LLL;
    1312
    14 #define MAX (1024 * 1024)
     13#define MAX (1024 * 1)
    1514
    16 // LLL buildLLL(int sz)
    17 void bla()
     15LLL buildLLL(int sz)
    1816{
    19         int i;
    20         // LLL ll0;//, lll, llc;
    21 //
    22 //      ll0 = gcmalloc();
    23 //      ll0->val = 0;
    24 //      lll = ll0;
    25 //
    26 //      for (i = 1; i < sz; i++)
    27 //      {
    28 //              llc = gcmalloc();
    29 //              llc->val = i;
    30 //              lll->next = llc;
    31 //              lll = llc;
    32 //      }
    33 //
    34         // return ll0;
     17        int i = 0;
     18        LLL ll0;
     19
     20        gcmalloc( &ll0 );
     21        List_t* ll0_ptr = get( &ll0 );
     22        ll0_ptr->val = i;
     23        LLL lll = ll0;
     24
     25        for (i = 1; i < sz; i++)
     26        {
     27                LLL llc;
     28                gcmalloc( &llc );
     29                List_t* llc_ptr = get( &llc );
     30                llc_ptr->val = i;
     31                List_t* lll_ptr = get( &lll );
     32                lll_ptr->next = llc;
     33
     34                lll = llc;
     35        }
     36
     37        check(is_valid( &ll0.internal ));
     38
     39        return ll0;
    3540}
    36 //
    37 // void testLLL(LLL lll)
    38 // {
    39 //      unsigned char *counted;
    40 //
    41 //      counted = (unsigned char *) calloc(MAX, sizeof(unsigned char));
    42 //      while (lll)
    43 //      {
    44 //              counted[lll->val]++;
    45 //              if (counted[lll->val] > 1)
    46 //              {
    47 //                      fprintf(stderr, "ERROR! Encountered %d twice!\n", lll->val);
    48 //                      exit(1);
    49 //              }
    50 //              lll = lll->next;
    51 //      }
    52 //
    53 //      return;
    54 // }
     41
     42void testLLL(LLL lll)
     43{
     44        unsigned char *counted;
     45
     46        counted = (unsigned char *) calloc(MAX, sizeof(unsigned char));
     47        while (lll)
     48        {
     49                List_t* lll_ptr = get( &lll );
     50                counted[lll_ptr->val]++;
     51                if (counted[lll_ptr->val] > 1)
     52                {
     53                        fprintf(stderr, "ERROR! Encountered %d twice!\n", lll_ptr->val);
     54                        exit(1);
     55                }
     56                lll = lll_ptr->next;
     57        }
     58
     59        return;
     60}
    5561
    5662int main(void)
     
    5864        LLL mylll;
    5965
    60         // mylll = buildLLL(MAX);
    61         //
    62         // testLLL(mylll);
     66        mylll = buildLLL(MAX);
     67
     68        testLLL(mylll);
    6369
    6470        return 0;
Note: See TracChangeset for help on using the changeset viewer.