Changes in / [50c5cf3:1eba452]


Ignore:
Location:
src
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • src/InitTweak/FixInit.cc

    r50c5cf3 r1eba452  
    3333#include "SymTab/Autogen.h"
    3434#include "GenPoly/PolyMutator.h"
     35#include "GenPoly/DeclMutator.h"
    3536#include "SynTree/AddStmtVisitor.h"
    3637#include "CodeGen/GenType.h"  // for warnings
     
    216217                        SymTab::Indexer & indexer;
    217218                };
     219
     220                class FixCtorExprs : public GenPoly::DeclMutator {
     221                  public:
     222                        /// expands ConstructorExpr nodes into comma expressions, using a temporary for the first argument
     223                        static void fix( std::list< Declaration * > & translationUnit );
     224
     225                        virtual Expression * mutate( ConstructorExpr * ctorExpr );
     226                };
    218227        } // namespace
    219228
     
    221230                // fixes ConstructorInit for global variables. should happen before fixInitializers.
    222231                InitTweak::fixGlobalInit( translationUnit, filename, inLibrary );
     232
    223233
    224234                InsertImplicitCalls::insert( translationUnit );
     
    231241
    232242                GenStructMemberCalls::generate( translationUnit );
     243                // xxx - ctor expansion currently has to be after FixCopyCtors, because there is currently a
     244                // hack in the way untyped assignments are generated, where the first argument cannot have
     245                // its address taken because of the way codegeneration handles UntypedExpr vs. ApplicationExpr.
     246                // Thus such assignment exprs must never pushed through expression resolution (and thus should
     247                // not go through the FixCopyCtors pass), otherwise they will fail -- guaranteed.
     248                // Also needs to happen after GenStructMemberCalls, since otherwise member constructors exprs
     249                // don't look right, and a member can be constructed more than once.
     250                FixCtorExprs::fix( translationUnit );
    233251        }
    234252
     
    283301                                throw warner.errors;
    284302                        }
     303                }
     304
     305                void FixCtorExprs::fix( std::list< Declaration * > & translationUnit ) {
     306                        FixCtorExprs fixer;
     307                        fixer.mutateDeclarationList( translationUnit );
    285308                }
    286309
     
    480503                                        retExpr = deref;
    481504                                } // if
    482                                 // xxx - might need to set env on retExpr...
    483                                 // retExpr->set_env( env->clone() );
     505                                retExpr->set_env( env->clone() );
    484506                                return retExpr;
    485507                        } else {
     
    914936                        return safe_dynamic_cast< ApplicationExpr * >( ResolvExpr::findVoidExpression( untypedExpr, indexer ) );
    915937                }
     938
     939                Expression * FixCtorExprs::mutate( ConstructorExpr * ctorExpr ) {
     940                        static UniqueName tempNamer( "_tmp_ctor_expr" );
     941                        assert( ctorExpr->get_results().size() == 1 );
     942                        ObjectDecl * tmp = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, ctorExpr->get_results().front()->clone(), nullptr );
     943                        addDeclaration( tmp );
     944
     945                        ApplicationExpr * callExpr = safe_dynamic_cast< ApplicationExpr * > ( ctorExpr->get_callExpr() );
     946                        TypeSubstitution * env = ctorExpr->get_env();
     947                        ctorExpr->set_callExpr( nullptr );
     948                        ctorExpr->set_env( nullptr );
     949
     950                        Expression *& firstArg = callExpr->get_args().front();
     951                        UntypedExpr * assign = new UntypedExpr( new NameExpr( "?=?" ) );
     952                        assign->get_args().push_back( new VariableExpr( tmp ) );
     953                        assign->get_args().push_back( firstArg );
     954                        cloneAll( ctorExpr->get_results(), assign->get_results() );
     955                        firstArg = assign;
     956
     957                        CommaExpr * commaExpr = new CommaExpr( callExpr, new VariableExpr( tmp ) );
     958                        commaExpr->set_env( env );
     959                        delete ctorExpr;
     960                        return commaExpr;
     961                }
    916962        } // namespace
    917963} // namespace InitTweak
  • src/InitTweak/InitTweak.cc

    r50c5cf3 r1eba452  
    358358                template<typename CallExpr>
    359359                Expression *& callArg( CallExpr * callExpr, unsigned int pos ) {
    360                         if ( pos >= callExpr->get_args().size() ) assert( false && "asking for argument that doesn't exist. Return NULL/throw exception?" );
     360                        if ( pos >= callExpr->get_args().size() ) assertf( false, "asking for argument that doesn't exist. Return NULL/throw exception?" );
    361361                        for ( Expression *& arg : callExpr->get_args() ) {
    362362                                if ( pos == 0 ) return arg;
     
    373373                        return callArg( untypedExpr, pos );
    374374                } else {
    375                         assert( false && "Unexpected expression type passed to getCallArg" );
     375                        assertf( false, "Unexpected expression type passed to getCallArg" );
    376376                }
    377377        }
     
    387387                        } else if ( MemberExpr * memberExpr = dynamic_cast< MemberExpr * >( func ) ) {
    388388                                return memberExpr->get_member()->get_name();
     389                        } else if ( UntypedMemberExpr * memberExpr = dynamic_cast< UntypedMemberExpr * > ( func ) ) {
     390                                return memberExpr->get_member();
    389391                        } else {
    390                                 assert( false && "Unexpected expression type being called as a function in call expression" );
     392                                assertf( false, "Unexpected expression type being called as a function in call expression" );
    391393                        }
    392394                }
     
    400402                } else {
    401403                        std::cerr << expr << std::endl;
    402                         assert( false && "Unexpected expression type passed to getFunctionName" );
     404                        assertf( false, "Unexpected expression type passed to getFunctionName" );
    403405                }
    404406        }
  • src/Parser/parser.cc

    r50c5cf3 r1eba452  
    1 /* A Bison parser, made by GNU Bison 3.0.2.  */
     1/* A Bison parser, made by GNU Bison 2.5.  */
    22
    33/* Bison implementation for Yacc-like parsers in C
    4 
    5    Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
    6 
     4   
     5      Copyright (C) 1984, 1989-1990, 2000-2011 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 "3.0.2"
     47#define YYBISON_VERSION "2.5"
    4848
    4949/* Skeleton name.  */
     
    5959#define YYPULL 1
    6060
     61/* Using locations.  */
     62#define YYLSP_NEEDED 0
    6163
    6264
    6365
    6466/* Copy the first part of user declarations.  */
    65 #line 42 "parser.yy" /* yacc.c:339  */
     67
     68/* Line 268 of yacc.c  */
     69#line 42 "parser.yy"
    6670
    6771#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    9094} // appendStr
    9195
    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
     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
    101104
    102105/* Enabling verbose error messages.  */
     
    108111#endif
    109112
    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
     113/* Enabling the token table.  */
     114#ifndef YYTOKEN_TABLE
     115# define YYTOKEN_TABLE 0
    117116#endif
    118 #if YYDEBUG
    119 extern int yydebug;
    120 #endif
    121 
    122 /* Token type.  */
     117
     118
     119/* Tokens.  */
    123120#ifndef YYTOKENTYPE
    124121# define YYTOKENTYPE
    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   };
     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   };
    234232#endif
    235233/* Tokens.  */
     
    341339#define THEN 363
    342340
    343 /* Value type.  */
     341
     342
     343
    344344#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    345 typedef union YYSTYPE YYSTYPE;
    346 union YYSTYPE
     345typedef union YYSTYPE
    347346{
    348 #line 115 "parser.yy" /* yacc.c:355  */
     347
     348/* Line 293 of yacc.c  */
     349#line 115 "parser.yy"
    349350
    350351        Token tok;
     
    363364        bool flag;
    364365
    365 #line 366 "Parser/parser.cc" /* yacc.c:355  */
    366 };
     366
     367
     368/* Line 293 of yacc.c  */
     369#line 370 "Parser/parser.cc"
     370} YYSTYPE;
    367371# define YYSTYPE_IS_TRIVIAL 1
     372# define yystype YYSTYPE /* obsolescent; will be withdrawn */
    368373# define YYSTYPE_IS_DECLARED 1
    369374#endif
    370375
    371376
    372 extern YYSTYPE yylval;
    373 
    374 int yyparse (void);
    375 
    376 #endif /* !YY_YY_Y_TAB_H_INCLUDED  */
    377 
    378377/* Copy the second part of user declarations.  */
    379378
    380 #line 381 "Parser/parser.cc" /* yacc.c:358  */
     379
     380/* Line 343 of yacc.c  */
     381#line 382 "Parser/parser.cc"
    381382
    382383#ifdef short
     
    392393#ifdef YYTYPE_INT8
    393394typedef YYTYPE_INT8 yytype_int8;
     395#elif (defined __STDC__ || defined __C99__FUNC__ \
     396     || defined __cplusplus || defined _MSC_VER)
     397typedef signed char yytype_int8;
    394398#else
    395 typedef signed char yytype_int8;
     399typedef short int yytype_int8;
    396400#endif
    397401
     
    413417# elif defined size_t
    414418#  define YYSIZE_T size_t
    415 # elif ! defined YYSIZE_T
     419# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
     420     || defined __cplusplus || defined _MSC_VER)
    416421#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    417422#  define YYSIZE_T size_t
     
    427432#  if ENABLE_NLS
    428433#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    429 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
     434#   define YY_(msgid) dgettext ("bison-runtime", msgid)
    430435#  endif
    431436# endif
    432437# ifndef YY_
    433 #  define YY_(Msgid) Msgid
     438#  define YY_(msgid) msgid
    434439# endif
    435440#endif
    436441
    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 
    464442/* Suppress unused-variable warnings by "using" E.  */
    465443#if ! defined lint || defined __GNUC__
    466 # define YYUSE(E) ((void) (E))
     444# define YYUSE(e) ((void) (e))
    467445#else
    468 # define YYUSE(E) /* empty */
     446# define YYUSE(e) /* empty */
    469447#endif
    470448
    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")
     449/* Identity function, used to suppress warnings about constant conditions.  */
     450#ifndef lint
     451# define YYID(n) (n)
    479452#else
    480 # define YY_INITIAL_VALUE(Value) Value
     453#if (defined __STDC__ || defined __C99__FUNC__ \
     454     || defined __cplusplus || defined _MSC_VER)
     455static int
     456YYID (int yyi)
     457#else
     458static int
     459YYID (yyi)
     460    int yyi;
    481461#endif
    482 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    483 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    484 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
     462{
     463  return yyi;
     464}
    485465#endif
    486 #ifndef YY_INITIAL_VALUE
    487 # define YY_INITIAL_VALUE(Value) /* Nothing. */
    488 #endif
    489 
    490466
    491467#if ! defined yyoverflow || YYERROR_VERBOSE
     
    506482#   else
    507483#    define YYSTACK_ALLOC alloca
    508 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
     484#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     485     || defined __cplusplus || defined _MSC_VER)
    509486#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    510       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    511487#     ifndef EXIT_SUCCESS
    512488#      define EXIT_SUCCESS 0
     
    518494
    519495# ifdef YYSTACK_ALLOC
    520    /* Pacify GCC's 'empty if-body' warning.  */
    521 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
     496   /* Pacify GCC's `empty if-body' warning.  */
     497#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
    522498#  ifndef YYSTACK_ALLOC_MAXIMUM
    523499    /* The OS might guarantee only one guard page at the bottom of the stack,
     
    535511#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    536512       && ! ((defined YYMALLOC || defined malloc) \
    537              && (defined YYFREE || defined free)))
     513             && (defined YYFREE || defined free)))
    538514#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    539515#   ifndef EXIT_SUCCESS
     
    543519#  ifndef YYMALLOC
    544520#   define YYMALLOC malloc
    545 #   if ! defined malloc && ! defined EXIT_SUCCESS
     521#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     522     || defined __cplusplus || defined _MSC_VER)
    546523void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    547524#   endif
     
    549526#  ifndef YYFREE
    550527#   define YYFREE free
    551 #   if ! defined free && ! defined EXIT_SUCCESS
     528#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     529     || defined __cplusplus || defined _MSC_VER)
    552530void free (void *); /* INFRINGES ON USER NAME SPACE */
    553531#   endif
     
    559537#if (! defined yyoverflow \
    560538     && (! defined __cplusplus \
    561         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     539        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    562540
    563541/* A type that is properly aligned for any stack member.  */
     
    584562   stack.  Advance YYPTR to a properly aligned location for the next
    585563   stack.  */
    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)
     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))
    596574
    597575#endif
    598576
    599577#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    600 /* Copy COUNT objects from SRC to DST.  The source and destination do
     578/* Copy COUNT objects from FROM to TO.  The source and destination do
    601579   not overlap.  */
    602580# ifndef YYCOPY
    603581#  if defined __GNUC__ && 1 < __GNUC__
    604 #   define YYCOPY(Dst, Src, Count) \
    605       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
     582#   define YYCOPY(To, From, Count) \
     583      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
    606584#  else
    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)
     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))
    615593#  endif
    616594# endif
     
    628606/* YYNRULES -- Number of rules.  */
    629607#define YYNRULES  751
    630 /* YYNSTATES -- Number of states.  */
     608/* YYNRULES -- Number of states.  */
    631609#define YYNSTATES  1555
    632610
    633 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    634    by yylex, with out-of-bounds checking.  */
     611/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    635612#define YYUNDEFTOK  2
    636613#define YYMAXUTOK   363
    637614
    638 #define YYTRANSLATE(YYX)                                                \
     615#define YYTRANSLATE(YYX)                                                \
    639616  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    640617
    641 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    642    as returned by yylex, without out-of-bounds checking.  */
     618/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
    643619static const yytype_uint8 yytranslate[] =
    644620{
     
    683659
    684660#if YYDEBUG
    685   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
     661/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
     662   YYRHS.  */
     663static 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.  */
     744static 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.  */
    6861021static const yytype_uint16 yyrline[] =
    6871022{
     
    7651100#endif
    7661101
    767 #if YYDEBUG || YYERROR_VERBOSE || 0
     1102#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
    7681103/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    7691104   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     
    8741209  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
    8751210  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
    876   "comma_opt", "assignment_opt", YY_NULLPTR
     1211  "comma_opt", "assignment_opt", 0
    8771212};
    8781213#endif
    8791214
    8801215# ifdef YYPRINT
    881 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    882    (internal) symbol number NUM (which must be that of a token).  */
     1216/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
     1217   token YYLEX-NUM.  */
    8831218static const yytype_uint16 yytoknum[] =
    8841219{
     
    9001235# endif
    9011236
     1237/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
     1238static const yytype_uint16 yyr1[] =
     1239{
     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
     1316};
     1317
     1318/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
     1319static 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.  */
     1402static const yytype_uint16 yydefact[] =
     1403{
     1404     293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
     1405     300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
     1406     325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
     1407       0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
     1408       8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
     1409     524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
     1410       3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
     1411     306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
     1412     351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
     1413       0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
     1414     546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
     1415      12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
     1416     291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
     1417     444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
     1418     445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
     1419       0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
     1420     294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
     1421     253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
     1422       0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
     1423     561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
     1424     603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
     1425     260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
     1426     261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
     1427     334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
     1428     371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
     1429       1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
     1430     743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
     1431       2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
     1432       0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
     1433       6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
     1434      46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
     1435      74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
     1436     103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
     1437     580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
     1438       0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
     1439     294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
     1440     411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
     1441     430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
     1442     458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
     1443       2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
     1444       0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
     1445     453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
     1446     599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
     1447       0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
     1448     254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
     1449     282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
     1450     499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
     1451       2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
     1452       0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
     1453     750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
     1454     556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
     1455      48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
     1456       0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
     1457      31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
     1458     115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
     1459       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1460       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1461     105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
     1462       2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
     1463     120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
     1464       0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
     1465     546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
     1466     679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
     1467     750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
     1468       0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
     1469     465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
     1470     574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
     1471       0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
     1472     258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
     1473       0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
     1474       3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
     1475       3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
     1476       0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
     1477     501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
     1478       0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
     1479       0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
     1480       2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
     1481      72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
     1482      86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
     1483     293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
     1484     293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
     1485     293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
     1486       0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
     1487     615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
     1488     632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
     1489     744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
     1490       3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
     1491     460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
     1492     273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
     1493     658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
     1494     538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
     1495     384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
     1496     293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
     1497       0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
     1498     488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
     1499       0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
     1500      59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
     1501     689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
     1502       0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
     1503     653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
     1504     293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
     1505     671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
     1506     424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
     1507     102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
     1508     244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
     1509     128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
     1510     130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
     1511     144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
     1512     539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
     1513     379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
     1514     668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
     1515     507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
     1516     221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
     1517       0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
     1518     101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
     1519       0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
     1520     673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
     1521     409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
     1522       0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
     1523     293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
     1524       0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
     1525     150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
     1526     612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
     1527     293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
     1528     224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
     1529       0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
     1530     724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
     1531     684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
     1532     469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
     1533     191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
     1534     199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
     1535       0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
     1536     510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
     1537     123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
     1538       3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
     1539       2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
     1540     128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
     1541       0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
     1542       2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
     1543       0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
     1544       0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
     1545       2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
     1546     293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
     1547       3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
     1548     159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
     1549       0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
     1550     229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
     1551       0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
     1552     200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
     1553       0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
     1554     293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
     1555     212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
     1556     169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
     1557       0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
     1558     178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
     1559     206,     3,     3,   205,   207
     1560};
     1561
     1562/* YYDEFGOTO[NTERM-NUM].  */
     1563static const yytype_int16 yydefgoto[] =
     1564{
     1565      -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
     1566     304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
     1567     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
     1568     320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
     1569    1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
     1570    1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
     1571    1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
     1572     956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
     1573      51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
     1574      61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
     1575     352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
     1576     120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
     1577    1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
     1578     859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
     1579     135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
     1580      85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
     1581      88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
     1582      91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
     1583     125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
     1584     269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
     1585     197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
     1586     612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
     1587     617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
     1588     366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
     1589     570
     1590};
     1591
     1592/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     1593   STATE-NUM.  */
    9021594#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.  */
    9141595static const yytype_int16 yypact[] =
    9151596{
     
    10721753};
    10731754
    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.  */
    1077 static const yytype_uint16 yydefact[] =
    1078 {
    1079      293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
    1080      300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
    1081      325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
    1082        0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
    1083        8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
    1084      524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
    1085        3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
    1086      306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
    1087      351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
    1088        0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
    1089      546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
    1090       12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
    1091      291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
    1092      444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
    1093      445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
    1094        0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
    1095      294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
    1096      253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
    1097        0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
    1098      561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
    1099      603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
    1100      260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
    1101      261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
    1102      334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
    1103      371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
    1104        1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
    1105      743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
    1106        2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
    1107        0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
    1108        6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
    1109       46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
    1110       74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
    1111      103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
    1112      580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
    1113        0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
    1114      294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
    1115      411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
    1116      430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
    1117      458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
    1118        2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
    1119        0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
    1120      453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
    1121      599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
    1122        0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
    1123      254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
    1124      282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
    1125      499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
    1126        2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
    1127        0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
    1128      750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
    1129      556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
    1130       48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
    1131        0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
    1132       31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
    1133      115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
    1134        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1135        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1136      105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
    1137        2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
    1138      120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
    1139        0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
    1140      546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
    1141      679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
    1142      750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
    1143        0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
    1144      465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
    1145      574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
    1146        0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
    1147      258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
    1148        0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
    1149        3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
    1150        3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
    1151        0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
    1152      501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
    1153        0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
    1154        0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
    1155        2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
    1156       72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
    1157       86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
    1158      293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
    1159      293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
    1160      293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
    1161        0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
    1162      615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
    1163      632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
    1164      744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
    1165        3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
    1166      460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
    1167      273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
    1168      658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
    1169      538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
    1170      384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
    1171      293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
    1172        0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
    1173      488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
    1174        0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
    1175       59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
    1176      689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
    1177        0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
    1178      653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
    1179      293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
    1180      671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
    1181      424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
    1182      102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
    1183      244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
    1184      128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
    1185      130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
    1186      144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
    1187      539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
    1188      379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
    1189      668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
    1190      507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
    1191      221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
    1192        0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
    1193      101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
    1194        0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
    1195      673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
    1196      409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
    1197        0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
    1198      293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
    1199        0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
    1200      150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
    1201      612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
    1202      293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
    1203      224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
    1204        0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
    1205      724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
    1206      684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
    1207      469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
    1208      191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
    1209      199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
    1210        0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
    1211      510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
    1212      123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
    1213        3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
    1214        2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
    1215      128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
    1216        0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
    1217        2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
    1218        0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
    1219        0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
    1220        2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
    1221      293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
    1222        3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
    1223      159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
    1224        0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
    1225      229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
    1226        0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
    1227      200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
    1228        0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
    1229      293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
    1230      212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
    1231      169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
    1232        0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
    1233      178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
    1234      206,     3,     3,   205,   207
    1235 };
    1236 
    1237   /* YYPGOTO[NTERM-NUM].  */
     1755/* YYPGOTO[NTERM-NUM].  */
    12381756static const yytype_int16 yypgoto[] =
    12391757{
     
    12651783};
    12661784
    1267   /* YYDEFGOTO[NTERM-NUM].  */
    1268 static const yytype_int16 yydefgoto[] =
    1269 {
    1270       -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
    1271      304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
    1272      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
    1273      320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
    1274     1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
    1275     1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
    1276     1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
    1277      956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
    1278       51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
    1279       61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
    1280      352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
    1281      120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
    1282     1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
    1283      859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
    1284      135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
    1285       85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
    1286       88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
    1287       91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
    1288      125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
    1289      269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
    1290      197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
    1291      612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
    1292      617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
    1293      366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
    1294      570
    1295 };
    1296 
    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.  */
     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
    13001789static const yytype_int16 yytable[] =
    13011790{
     
    23892878};
    23902879
     2880#define yypact_value_is_default(yystate) \
     2881  ((yystate) == (-1323))
     2882
     2883#define yytable_value_is_error(yytable_value) \
     2884  YYID (0)
     2885
    23912886static const yytype_int16 yycheck[] =
    23922887{
     
    34803975};
    34813976
    3482   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    3483      symbol of state STATE-NUM.  */
     3977/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     3978   symbol of state STATE-NUM.  */
    34843979static const yytype_uint16 yystos[] =
    34853980{
     
    36424137};
    36434138
    3644   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
    3645 static 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.  */
    3726 static 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 
     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
    38164163
    38174164#define YYRECOVERING()  (!!yyerrstatus)
    38184165
    3819 #define YYBACKUP(Token, Value)                                  \
    3820 do                                                              \
    3821   if (yychar == YYEMPTY)                                        \
    3822     {                                                           \
    3823       yychar = (Token);                                         \
    3824       yylval = (Value);                                         \
    3825       YYPOPSTACK (yylen);                                       \
    3826       yystate = *yyssp;                                         \
    3827       goto yybackup;                                            \
    3828     }                                                           \
    3829   else                                                          \
    3830     {                                                           \
     4166#define YYBACKUP(Token, Value)                                  \
     4167do                                                              \
     4168  if (yychar == YYEMPTY && yylen == 1)                          \
     4169    {                                                           \
     4170      yychar = (Token);                                         \
     4171      yylval = (Value);                                         \
     4172      YYPOPSTACK (1);                                           \
     4173      goto yybackup;                                            \
     4174    }                                                           \
     4175  else                                                          \
     4176    {                                                           \
    38314177      yyerror (YY_("syntax error: cannot back up")); \
    3832       YYERROR;                                                  \
    3833     }                                                           \
    3834 while (0)
    3835 
    3836 /* Error token number */
    3837 #define YYTERROR        1
    3838 #define YYERRCODE       256
    3839 
    3840 
     4178      YYERROR;                                                  \
     4179    }                                                           \
     4180while (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
    38414227
    38424228/* Enable debugging if requested.  */
     
    38484234# endif
    38494235
    3850 # define YYDPRINTF(Args)                        \
    3851 do {                                            \
    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)                    \
    3863 do {                                                                      \
    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 
     4236# define YYDPRINTF(Args)                        \
     4237do {                                            \
     4238  if (yydebug)                                  \
     4239    YYFPRINTF Args;                             \
     4240} while (YYID (0))
     4241
     4242# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
     4243do {                                                                      \
     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)
    38784261static void
    38794262yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
     4263#else
     4264static void
     4265yy_symbol_value_print (yyoutput, yytype, yyvaluep)
     4266    FILE *yyoutput;
     4267    int yytype;
     4268    YYSTYPE const * const yyvaluep;
     4269#endif
    38804270{
    3881   FILE *yyo = yyoutput;
    3882   YYUSE (yyo);
    38834271  if (!yyvaluep)
    38844272    return;
     
    38864274  if (yytype < YYNTOKENS)
    38874275    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
     4276# else
     4277  YYUSE (yyoutput);
    38884278# endif
    3889   YYUSE (yytype);
     4279  switch (yytype)
     4280    {
     4281      default:
     4282        break;
     4283    }
    38904284}
    38914285
     
    38954289`--------------------------------*/
    38964290
     4291#if (defined __STDC__ || defined __C99__FUNC__ \
     4292     || defined __cplusplus || defined _MSC_VER)
    38974293static void
    38984294yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
     4295#else
     4296static void
     4297yy_symbol_print (yyoutput, yytype, yyvaluep)
     4298    FILE *yyoutput;
     4299    int yytype;
     4300    YYSTYPE const * const yyvaluep;
     4301#endif
    38994302{
    3900   YYFPRINTF (yyoutput, "%s %s (",
    3901              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
     4303  if (yytype < YYNTOKENS)
     4304    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
     4305  else
     4306    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
    39024307
    39034308  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
     
    39104315`------------------------------------------------------------------*/
    39114316
     4317#if (defined __STDC__ || defined __C99__FUNC__ \
     4318     || defined __cplusplus || defined _MSC_VER)
    39124319static void
    39134320yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
     4321#else
     4322static void
     4323yy_stack_print (yybottom, yytop)
     4324    yytype_int16 *yybottom;
     4325    yytype_int16 *yytop;
     4326#endif
    39144327{
    39154328  YYFPRINTF (stderr, "Stack now");
     
    39224335}
    39234336
    3924 # define YY_STACK_PRINT(Bottom, Top)                            \
    3925 do {                                                            \
    3926   if (yydebug)                                                  \
    3927     yy_stack_print ((Bottom), (Top));                           \
    3928 } while (0)
     4337# define YY_STACK_PRINT(Bottom, Top)                            \
     4338do {                                                            \
     4339  if (yydebug)                                                  \
     4340    yy_stack_print ((Bottom), (Top));                           \
     4341} while (YYID (0))
    39294342
    39304343
     
    39334346`------------------------------------------------*/
    39344347
     4348#if (defined __STDC__ || defined __C99__FUNC__ \
     4349     || defined __cplusplus || defined _MSC_VER)
    39354350static void
    3936 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
     4351yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
     4352#else
     4353static void
     4354yy_reduce_print (yyvsp, yyrule)
     4355    YYSTYPE *yyvsp;
     4356    int yyrule;
     4357#endif
    39374358{
    3938   unsigned long int yylno = yyrline[yyrule];
    39394359  int yynrhs = yyr2[yyrule];
    39404360  int yyi;
     4361  unsigned long int yylno = yyrline[yyrule];
    39414362  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
    3942              yyrule - 1, yylno);
     4363             yyrule - 1, yylno);
    39434364  /* The symbols being reduced.  */
    39444365  for (yyi = 0; yyi < yynrhs; yyi++)
    39454366    {
    39464367      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
    3947       yy_symbol_print (stderr,
    3948                        yystos[yyssp[yyi + 1 - yynrhs]],
    3949                        &(yyvsp[(yyi + 1) - (yynrhs)])
    3950                                               );
     4368      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
     4369                       &(yyvsp[(yyi + 1) - (yynrhs)])
     4370                                       );
    39514371      YYFPRINTF (stderr, "\n");
    39524372    }
    39534373}
    39544374
    3955 # define YY_REDUCE_PRINT(Rule)          \
    3956 do {                                    \
    3957   if (yydebug)                          \
    3958     yy_reduce_print (yyssp, yyvsp, Rule); \
    3959 } while (0)
     4375# define YY_REDUCE_PRINT(Rule)          \
     4376do {                                    \
     4377  if (yydebug)                          \
     4378    yy_reduce_print (yyvsp, Rule); \
     4379} while (YYID (0))
    39604380
    39614381/* Nonzero means print parse trace.  It is left uninitialized so that
     
    39714391
    39724392/* YYINITDEPTH -- initial size of the parser's stacks.  */
    3973 #ifndef YYINITDEPTH
     4393#ifndef YYINITDEPTH
    39744394# define YYINITDEPTH 200
    39754395#endif
     
    39944414#  else
    39954415/* Return the length of YYSTR.  */
     4416#if (defined __STDC__ || defined __C99__FUNC__ \
     4417     || defined __cplusplus || defined _MSC_VER)
    39964418static YYSIZE_T
    39974419yystrlen (const char *yystr)
     4420#else
     4421static YYSIZE_T
     4422yystrlen (yystr)
     4423    const char *yystr;
     4424#endif
    39984425{
    39994426  YYSIZE_T yylen;
     
    40114438/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    40124439   YYDEST.  */
     4440#if (defined __STDC__ || defined __C99__FUNC__ \
     4441     || defined __cplusplus || defined _MSC_VER)
    40134442static char *
    40144443yystpcpy (char *yydest, const char *yysrc)
     4444#else
     4445static char *
     4446yystpcpy (yydest, yysrc)
     4447    char *yydest;
     4448    const char *yysrc;
     4449#endif
    40154450{
    40164451  char *yyd = yydest;
     
    40424477
    40434478      for (;;)
    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           }
     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          }
    40654500    do_not_strip_quotes: ;
    40664501    }
     
    40854520                yytype_int16 *yyssp, int yytoken)
    40864521{
    4087   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
     4522  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
    40884523  YYSIZE_T yysize = yysize0;
     4524  YYSIZE_T yysize1;
    40894525  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
    40904526  /* Internationalized format string. */
    4091   const char *yyformat = YY_NULLPTR;
     4527  const char *yyformat = 0;
    40924528  /* Arguments of yyformat. */
    40934529  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
     
    40974533
    40984534  /* 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.
    40994539     - If this state is a consistent state with a default action, then
    41004540       the only way this function was invoked is if the default action
     
    41454585                  }
    41464586                yyarg[yycount++] = yytname[yyx];
    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                 }
     4587                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
     4588                if (! (yysize <= yysize1
     4589                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4590                  return 2;
     4591                yysize = yysize1;
    41544592              }
    41554593        }
     
    41714609    }
    41724610
    4173   {
    4174     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
    4175     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4176       return 2;
    4177     yysize = yysize1;
    4178   }
     4611  yysize1 = yysize + yystrlen (yyformat);
     4612  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4613    return 2;
     4614  yysize = yysize1;
    41794615
    41804616  if (*yymsg_alloc < yysize)
     
    42134649`-----------------------------------------------*/
    42144650
     4651/*ARGSUSED*/
     4652#if (defined __STDC__ || defined __C99__FUNC__ \
     4653     || defined __cplusplus || defined _MSC_VER)
    42154654static void
    42164655yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
     4656#else
     4657static void
     4658yydestruct (yymsg, yytype, yyvaluep)
     4659    const char *yymsg;
     4660    int yytype;
     4661    YYSTYPE *yyvaluep;
     4662#endif
    42174663{
    42184664  YYUSE (yyvaluep);
     4665
    42194666  if (!yymsg)
    42204667    yymsg = "Deleting";
    42214668  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    42224669
    4223   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    4224   YYUSE (yytype);
    4225   YY_IGNORE_MAYBE_UNINITIALIZED_END
     4670  switch (yytype)
     4671    {
     4672
     4673      default:
     4674        break;
     4675    }
    42264676}
    42274677
    42284678
     4679/* Prevent warnings from -Wmissing-prototypes.  */
     4680#ifdef YYPARSE_PARAM
     4681#if defined __STDC__ || defined __cplusplus
     4682int yyparse (void *YYPARSE_PARAM);
     4683#else
     4684int yyparse ();
     4685#endif
     4686#else /* ! YYPARSE_PARAM */
     4687#if defined __STDC__ || defined __cplusplus
     4688int yyparse (void);
     4689#else
     4690int yyparse ();
     4691#endif
     4692#endif /* ! YYPARSE_PARAM */
    42294693
    42304694
     
    42344698/* The semantic value of the lookahead symbol.  */
    42354699YYSTYPE yylval;
     4700
    42364701/* Number of syntax errors so far.  */
    42374702int yynerrs;
     
    42424707`----------*/
    42434708
     4709#ifdef YYPARSE_PARAM
     4710#if (defined __STDC__ || defined __C99__FUNC__ \
     4711     || defined __cplusplus || defined _MSC_VER)
     4712int
     4713yyparse (void *YYPARSE_PARAM)
     4714#else
     4715int
     4716yyparse (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)
    42444722int
    42454723yyparse (void)
     4724#else
     4725int
     4726yyparse ()
     4727
     4728#endif
     4729#endif
    42464730{
    42474731    int yystate;
     
    42504734
    42514735    /* The stacks and their tools:
    4252        'yyss': related to states.
    4253        'yyvs': related to semantic values.
    4254 
    4255        Refer to the stacks through separate pointers, to allow yyoverflow
     4736       `yyss': related to states.
     4737       `yyvs': related to semantic values.
     4738
     4739       Refer to the stacks thru separate pointers, to allow yyoverflow
    42564740       to reallocate them elsewhere.  */
    42574741
     
    42714755  int yyresult;
    42724756  /* Lookahead token as an internal (translated) token number.  */
    4273   int yytoken = 0;
     4757  int yytoken;
    42744758  /* The variables used to return semantic value and location from the
    42754759     action routines.  */
     
    42894773  int yylen = 0;
    42904774
    4291   yyssp = yyss = yyssa;
    4292   yyvsp = yyvs = yyvsa;
     4775  yytoken = 0;
     4776  yyss = yyssa;
     4777  yyvs = yyvsa;
    42934778  yystacksize = YYINITDEPTH;
    42944779
     
    42994784  yynerrs = 0;
    43004785  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
    43014794  goto yysetstate;
    43024795
     
    43194812#ifdef yyoverflow
    43204813      {
    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;
     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;
    43384831      }
    43394832#else /* no yyoverflow */
     
    43434836      /* Extend the stack our own way.  */
    43444837      if (YYMAXDEPTH <= yystacksize)
    4345         goto yyexhaustedlab;
     4838        goto yyexhaustedlab;
    43464839      yystacksize *= 2;
    43474840      if (YYMAXDEPTH < yystacksize)
    4348         yystacksize = YYMAXDEPTH;
     4841        yystacksize = YYMAXDEPTH;
    43494842
    43504843      {
    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);
     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);
    43584851#  undef YYSTACK_RELOCATE
    4359         if (yyss1 != yyssa)
    4360           YYSTACK_FREE (yyss1);
     4852        if (yyss1 != yyssa)
     4853          YYSTACK_FREE (yyss1);
    43614854      }
    43624855# endif
     
    43674860
    43684861      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
    4369                   (unsigned long int) yystacksize));
     4862                  (unsigned long int) yystacksize));
    43704863
    43714864      if (yyss + yystacksize - 1 <= yyssp)
    4372         YYABORT;
     4865        YYABORT;
    43734866    }
    43744867
     
    43994892    {
    44004893      YYDPRINTF ((stderr, "Reading a token: "));
    4401       yychar = yylex ();
     4894      yychar = YYLEX;
    44024895    }
    44034896
     
    44394932
    44404933  yystate = yyn;
    4441   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    44424934  *++yyvsp = yylval;
    4443   YY_IGNORE_MAYBE_UNINITIALIZED_END
    44444935
    44454936  goto yynewstate;
     
    44644955
    44654956  /* If YYLEN is nonzero, implement the default value of the action:
    4466      '$$ = $1'.
     4957     `$$ = $1'.
    44674958
    44684959     Otherwise, the following line sets YYVAL to garbage.
     
    44784969    {
    44794970        case 2:
    4480 #line 300 "parser.yy" /* yacc.c:1646  */
     4971
     4972/* Line 1806 of yacc.c  */
     4973#line 300 "parser.yy"
    44814974    { typedefTable.enterScope(); }
    4482 #line 4483 "Parser/parser.cc" /* yacc.c:1646  */
    44834975    break;
    44844976
    44854977  case 3:
    4486 #line 304 "parser.yy" /* yacc.c:1646  */
     4978
     4979/* Line 1806 of yacc.c  */
     4980#line 304 "parser.yy"
    44874981    { typedefTable.leaveScope(); }
    4488 #line 4489 "Parser/parser.cc" /* yacc.c:1646  */
    44894982    break;
    44904983
    44914984  case 4:
    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  */
     4985
     4986/* Line 1806 of yacc.c  */
     4987#line 311 "parser.yy"
     4988    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    44954989    break;
    44964990
    44974991  case 5:
    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  */
     4992
     4993/* Line 1806 of yacc.c  */
     4994#line 312 "parser.yy"
     4995    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    45014996    break;
    45024997
    45034998  case 6:
    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  */
     4999
     5000/* Line 1806 of yacc.c  */
     5001#line 313 "parser.yy"
     5002    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    45075003    break;
    45085004
    45095005  case 16:
    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  */
     5006
     5007/* Line 1806 of yacc.c  */
     5008#line 338 "parser.yy"
     5009    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    45135010    break;
    45145011
    45155012  case 17:
    4516 #line 342 "parser.yy" /* yacc.c:1646  */
    4517     { (yyval.str) = (yyvsp[0].tok); }
    4518 #line 4519 "Parser/parser.cc" /* yacc.c:1646  */
     5013
     5014/* Line 1806 of yacc.c  */
     5015#line 342 "parser.yy"
     5016    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    45195017    break;
    45205018
    45215019  case 18:
    4522 #line 344 "parser.yy" /* yacc.c:1646  */
     5020
     5021/* Line 1806 of yacc.c  */
     5022#line 344 "parser.yy"
    45235023    {
    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
     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
    45275027                }
    4528 #line 4529 "Parser/parser.cc" /* yacc.c:1646  */
    45295028    break;
    45305029
    45315030  case 19:
    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  */
     5031
     5032/* Line 1806 of yacc.c  */
     5033#line 355 "parser.yy"
     5034    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    45355035    break;
    45365036
    45375037  case 20:
    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  */
     5038
     5039/* Line 1806 of yacc.c  */
     5040#line 357 "parser.yy"
     5041    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    45415042    break;
    45425043
    45435044  case 21:
    4544 #line 359 "parser.yy" /* yacc.c:1646  */
    4545     { (yyval.en) = (yyvsp[-1].en); }
    4546 #line 4547 "Parser/parser.cc" /* yacc.c:1646  */
     5045
     5046/* Line 1806 of yacc.c  */
     5047#line 359 "parser.yy"
     5048    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    45475049    break;
    45485050
    45495051  case 22:
    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  */
     5052
     5053/* Line 1806 of yacc.c  */
     5054#line 361 "parser.yy"
     5055    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    45535056    break;
    45545057
    45555058  case 24:
    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  */
     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) ) ); }
    45595063    break;
    45605064
    45615065  case 25:
    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  */
     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) ) ); }
    45655070    break;
    45665071
    45675072  case 26:
    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  */
     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) ) ) ); }
    45715077    break;
    45725078
    45735079  case 28:
    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  */
     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) ) ) ); }
    45775084    break;
    45785085
    45795086  case 30:
    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  */
     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) ) ); }
    45835091    break;
    45845092
    45855093  case 31:
    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  */
     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) ) ); }
    45895098    break;
    45905099
    45915100  case 32:
    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  */
     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 ) ) ); }
    45955105    break;
    45965106
    45975107  case 33:
    4598 #line 389 "parser.yy" /* yacc.c:1646  */
     5108
     5109/* Line 1806 of yacc.c  */
     5110#line 389 "parser.yy"
    45995111    {
    46005112                        Token fn;
    4601                         fn.str = new std::string( "?{}" ); // location undefined
    4602                         (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) );
     5113                        fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
     5114                        (yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ) );
    46035115                }
    4604 #line 4605 "Parser/parser.cc" /* yacc.c:1646  */
    46055116    break;
    46065117
    46075118  case 35:
    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  */
     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) )); }
    46115123    break;
    46125124
    46135125  case 36:
    4614 #line 404 "parser.yy" /* yacc.c:1646  */
     5126
     5127/* Line 1806 of yacc.c  */
     5128#line 404 "parser.yy"
    46155129    { (yyval.en) = 0; }
    4616 #line 4617 "Parser/parser.cc" /* yacc.c:1646  */
    46175130    break;
    46185131
    46195132  case 39:
    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  */
     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) ); }
    46235137    break;
    46245138
    46255139  case 40:
    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  */
     5140
     5141/* Line 1806 of yacc.c  */
     5142#line 415 "parser.yy"
     5143    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    46295144    break;
    46305145
    46315146  case 41:
    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  */
     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) ) ) ); }
    46355151    break;
    46365152
    46375153  case 42:
    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  */
     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) ) ) ); }
    46415158    break;
    46425159
    46435160  case 43:
    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  */
     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) ) ) ); }
    46475165    break;
    46485166
    46495167  case 44:
    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  */
     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) ) ) ); }
    46535172    break;
    46545173
    46555174  case 46:
    4656 #line 433 "parser.yy" /* yacc.c:1646  */
    4657     { (yyval.en) = (yyvsp[0].en); }
    4658 #line 4659 "Parser/parser.cc" /* yacc.c:1646  */
     5175
     5176/* Line 1806 of yacc.c  */
     5177#line 433 "parser.yy"
     5178    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    46595179    break;
    46605180
    46615181  case 47:
    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  */
     5182
     5183/* Line 1806 of yacc.c  */
     5184#line 435 "parser.yy"
     5185    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    46655186    break;
    46665187
    46675188  case 48:
    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  */
     5189
     5190/* Line 1806 of yacc.c  */
     5191#line 437 "parser.yy"
     5192    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    46715193    break;
    46725194
    46735195  case 49:
    4674 #line 442 "parser.yy" /* yacc.c:1646  */
     5196
     5197/* Line 1806 of yacc.c  */
     5198#line 442 "parser.yy"
    46755199    {
    4676                         switch ( (yyvsp[-1].op) ) {
     5200                        switch ( (yyvsp[(1) - (2)].op) ) {
    46775201                          case OperKinds::AddressOf:
    4678                                 (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) );
     5202                                (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
    46795203                                break;
    46805204                          case OperKinds::PointTo:
    4681                                 (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) );
     5205                                (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
    46825206                                break;
    46835207                          default:
     
    46855209                        }
    46865210                }
    4687 #line 4688 "Parser/parser.cc" /* yacc.c:1646  */
    46885211    break;
    46895212
    46905213  case 50:
    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  */
     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) ) ); }
    46945218    break;
    46955219
    46965220  case 51:
    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  */
     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) ) ); }
    47005225    break;
    47015226
    47025227  case 52:
    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  */
     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) ) ); }
    47065232    break;
    47075233
    47085234  case 53:
    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  */
     5235
     5236/* Line 1806 of yacc.c  */
     5237#line 461 "parser.yy"
     5238    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    47125239    break;
    47135240
    47145241  case 54:
    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  */
     5242
     5243/* Line 1806 of yacc.c  */
     5244#line 463 "parser.yy"
     5245    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    47185246    break;
    47195247
    47205248  case 55:
    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  */
     5249
     5250/* Line 1806 of yacc.c  */
     5251#line 465 "parser.yy"
     5252    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    47245253    break;
    47255254
    47265255  case 56:
    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  */
     5256
     5257/* Line 1806 of yacc.c  */
     5258#line 467 "parser.yy"
     5259    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    47305260    break;
    47315261
    47325262  case 57:
    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  */
     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) ) ) ); }
    47365267    break;
    47375268
    47385269  case 58:
    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  */
     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 ) ); }
    47425274    break;
    47435275
    47445276  case 59:
    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  */
     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) ) ); }
    47485281    break;
    47495282
    47505283  case 60:
    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  */
     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) ) ); }
    47545288    break;
    47555289
    47565290  case 61:
    4757 #line 481 "parser.yy" /* yacc.c:1646  */
     5291
     5292/* Line 1806 of yacc.c  */
     5293#line 481 "parser.yy"
    47585294    { (yyval.op) = OperKinds::PointTo; }
    4759 #line 4760 "Parser/parser.cc" /* yacc.c:1646  */
    47605295    break;
    47615296
    47625297  case 62:
    4763 #line 482 "parser.yy" /* yacc.c:1646  */
     5298
     5299/* Line 1806 of yacc.c  */
     5300#line 482 "parser.yy"
    47645301    { (yyval.op) = OperKinds::AddressOf; }
    4765 #line 4766 "Parser/parser.cc" /* yacc.c:1646  */
    47665302    break;
    47675303
    47685304  case 63:
    4769 #line 488 "parser.yy" /* yacc.c:1646  */
     5305
     5306/* Line 1806 of yacc.c  */
     5307#line 488 "parser.yy"
    47705308    { (yyval.op) = OperKinds::UnPlus; }
    4771 #line 4772 "Parser/parser.cc" /* yacc.c:1646  */
    47725309    break;
    47735310
    47745311  case 64:
    4775 #line 489 "parser.yy" /* yacc.c:1646  */
     5312
     5313/* Line 1806 of yacc.c  */
     5314#line 489 "parser.yy"
    47765315    { (yyval.op) = OperKinds::UnMinus; }
    4777 #line 4778 "Parser/parser.cc" /* yacc.c:1646  */
    47785316    break;
    47795317
    47805318  case 65:
    4781 #line 490 "parser.yy" /* yacc.c:1646  */
     5319
     5320/* Line 1806 of yacc.c  */
     5321#line 490 "parser.yy"
    47825322    { (yyval.op) = OperKinds::Neg; }
    4783 #line 4784 "Parser/parser.cc" /* yacc.c:1646  */
    47845323    break;
    47855324
    47865325  case 66:
    4787 #line 491 "parser.yy" /* yacc.c:1646  */
     5326
     5327/* Line 1806 of yacc.c  */
     5328#line 491 "parser.yy"
    47885329    { (yyval.op) = OperKinds::BitNeg; }
    4789 #line 4790 "Parser/parser.cc" /* yacc.c:1646  */
    47905330    break;
    47915331
    47925332  case 68:
    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  */
     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) ) ); }
    47965337    break;
    47975338
    47985339  case 69:
    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  */
     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) ) ); }
    48025344    break;
    48035345
    48045346  case 71:
    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  */
     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) ) ); }
    48085351    break;
    48095352
    48105353  case 72:
    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  */
     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) ) ); }
    48145358    break;
    48155359
    48165360  case 73:
    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  */
     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) ) ); }
    48205365    break;
    48215366
    48225367  case 75:
    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  */
     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) ) ); }
    48265372    break;
    48275373
    48285374  case 76:
    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  */
     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) ) ); }
    48325379    break;
    48335380
    48345381  case 78:
    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  */
     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) ) ); }
    48385386    break;
    48395387
    48405388  case 79:
    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  */
     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) ) ); }
    48445393    break;
    48455394
    48465395  case 81:
    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  */
     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) ) ); }
    48505400    break;
    48515401
    48525402  case 82:
    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  */
     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) ) ); }
    48565407    break;
    48575408
    48585409  case 83:
    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  */
     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) ) ); }
    48625414    break;
    48635415
    48645416  case 84:
    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  */
     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) ) ); }
    48685421    break;
    48695422
    48705423  case 86:
    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  */
     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) ) ); }
    48745428    break;
    48755429
    48765430  case 87:
    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  */
     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) ) ); }
    48805435    break;
    48815436
    48825437  case 89:
    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  */
     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) ) ); }
    48865442    break;
    48875443
    48885444  case 91:
    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  */
     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) ) ); }
    48925449    break;
    48935450
    48945451  case 93:
    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  */
     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) ) ); }
    48985456    break;
    48995457
    49005458  case 95:
    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  */
     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 ) ); }
    49045463    break;
    49055464
    49065465  case 97:
    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  */
     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 ) ); }
    49105470    break;
    49115471
    49125472  case 99:
    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  */
     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) ) ); }
    49165477    break;
    49175478
    49185479  case 100:
    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  */
     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) ) ); }
    49225484    break;
    49235485
    49245486  case 101:
    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  */
     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) ) ); }
    49285491    break;
    49295492
    49305493  case 104:
    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  */
     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) ) ); }
    49345498    break;
    49355499
    49365500  case 105:
    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  */
     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) ) ); }
    49405505    break;
    49415506
    49425507  case 106:
    4943 #line 604 "parser.yy" /* yacc.c:1646  */
     5508
     5509/* Line 1806 of yacc.c  */
     5510#line 604 "parser.yy"
    49445511    { (yyval.en) = nullptr; }
    4945 #line 4946 "Parser/parser.cc" /* yacc.c:1646  */
    49465512    break;
    49475513
    49485514  case 108:
    4949 #line 609 "parser.yy" /* yacc.c:1646  */
     5515
     5516/* Line 1806 of yacc.c  */
     5517#line 609 "parser.yy"
    49505518    { (yyval.op) = OperKinds::Assign; }
    4951 #line 4952 "Parser/parser.cc" /* yacc.c:1646  */
    49525519    break;
    49535520
    49545521  case 109:
    4955 #line 610 "parser.yy" /* yacc.c:1646  */
     5522
     5523/* Line 1806 of yacc.c  */
     5524#line 610 "parser.yy"
    49565525    { (yyval.op) = OperKinds::AtAssn; }
    4957 #line 4958 "Parser/parser.cc" /* yacc.c:1646  */
    49585526    break;
    49595527
    49605528  case 110:
    4961 #line 611 "parser.yy" /* yacc.c:1646  */
     5529
     5530/* Line 1806 of yacc.c  */
     5531#line 611 "parser.yy"
    49625532    { (yyval.op) = OperKinds::MulAssn; }
    4963 #line 4964 "Parser/parser.cc" /* yacc.c:1646  */
    49645533    break;
    49655534
    49665535  case 111:
    4967 #line 612 "parser.yy" /* yacc.c:1646  */
     5536
     5537/* Line 1806 of yacc.c  */
     5538#line 612 "parser.yy"
    49685539    { (yyval.op) = OperKinds::DivAssn; }
    4969 #line 4970 "Parser/parser.cc" /* yacc.c:1646  */
    49705540    break;
    49715541
    49725542  case 112:
    4973 #line 613 "parser.yy" /* yacc.c:1646  */
     5543
     5544/* Line 1806 of yacc.c  */
     5545#line 613 "parser.yy"
    49745546    { (yyval.op) = OperKinds::ModAssn; }
    4975 #line 4976 "Parser/parser.cc" /* yacc.c:1646  */
    49765547    break;
    49775548
    49785549  case 113:
    4979 #line 614 "parser.yy" /* yacc.c:1646  */
     5550
     5551/* Line 1806 of yacc.c  */
     5552#line 614 "parser.yy"
    49805553    { (yyval.op) = OperKinds::PlusAssn; }
    4981 #line 4982 "Parser/parser.cc" /* yacc.c:1646  */
    49825554    break;
    49835555
    49845556  case 114:
    4985 #line 615 "parser.yy" /* yacc.c:1646  */
     5557
     5558/* Line 1806 of yacc.c  */
     5559#line 615 "parser.yy"
    49865560    { (yyval.op) = OperKinds::MinusAssn; }
    4987 #line 4988 "Parser/parser.cc" /* yacc.c:1646  */
    49885561    break;
    49895562
    49905563  case 115:
    4991 #line 616 "parser.yy" /* yacc.c:1646  */
     5564
     5565/* Line 1806 of yacc.c  */
     5566#line 616 "parser.yy"
    49925567    { (yyval.op) = OperKinds::LSAssn; }
    4993 #line 4994 "Parser/parser.cc" /* yacc.c:1646  */
    49945568    break;
    49955569
    49965570  case 116:
    4997 #line 617 "parser.yy" /* yacc.c:1646  */
     5571
     5572/* Line 1806 of yacc.c  */
     5573#line 617 "parser.yy"
    49985574    { (yyval.op) = OperKinds::RSAssn; }
    4999 #line 5000 "Parser/parser.cc" /* yacc.c:1646  */
    50005575    break;
    50015576
    50025577  case 117:
    5003 #line 618 "parser.yy" /* yacc.c:1646  */
     5578
     5579/* Line 1806 of yacc.c  */
     5580#line 618 "parser.yy"
    50045581    { (yyval.op) = OperKinds::AndAssn; }
    5005 #line 5006 "Parser/parser.cc" /* yacc.c:1646  */
    50065582    break;
    50075583
    50085584  case 118:
    5009 #line 619 "parser.yy" /* yacc.c:1646  */
     5585
     5586/* Line 1806 of yacc.c  */
     5587#line 619 "parser.yy"
    50105588    { (yyval.op) = OperKinds::ERAssn; }
    5011 #line 5012 "Parser/parser.cc" /* yacc.c:1646  */
    50125589    break;
    50135590
    50145591  case 119:
    5015 #line 620 "parser.yy" /* yacc.c:1646  */
     5592
     5593/* Line 1806 of yacc.c  */
     5594#line 620 "parser.yy"
    50165595    { (yyval.op) = OperKinds::OrAssn; }
    5017 #line 5018 "Parser/parser.cc" /* yacc.c:1646  */
    50185596    break;
    50195597
    50205598  case 120:
    5021 #line 627 "parser.yy" /* yacc.c:1646  */
     5599
     5600/* Line 1806 of yacc.c  */
     5601#line 627 "parser.yy"
    50225602    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    5023 #line 5024 "Parser/parser.cc" /* yacc.c:1646  */
    50245603    break;
    50255604
    50265605  case 121:
    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  */
     5606
     5607/* Line 1806 of yacc.c  */
     5608#line 629 "parser.yy"
     5609    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    50305610    break;
    50315611
    50325612  case 122:
    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  */
     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) ) ) ); }
    50365617    break;
    50375618
    50385619  case 123:
    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  */
     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) ) ) ); }
    50425624    break;
    50435625
    50445626  case 125:
    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  */
     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) ); }
    50485631    break;
    50495632
    50505633  case 127:
    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  */
     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) ) ); }
    50545638    break;
    50555639
    50565640  case 128:
    5057 #line 650 "parser.yy" /* yacc.c:1646  */
     5641
     5642/* Line 1806 of yacc.c  */
     5643#line 650 "parser.yy"
    50585644    { (yyval.en) = 0; }
    5059 #line 5060 "Parser/parser.cc" /* yacc.c:1646  */
    50605645    break;
    50615646
    50625647  case 132:
    5063 #line 659 "parser.yy" /* yacc.c:1646  */
    5064     { (yyval.sn) = (yyvsp[0].sn); }
    5065 #line 5066 "Parser/parser.cc" /* yacc.c:1646  */
     5648
     5649/* Line 1806 of yacc.c  */
     5650#line 659 "parser.yy"
     5651    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    50665652    break;
    50675653
    50685654  case 138:
    5069 #line 666 "parser.yy" /* yacc.c:1646  */
     5655
     5656/* Line 1806 of yacc.c  */
     5657#line 666 "parser.yy"
    50705658    {
    50715659                        Token fn;
    50725660                        fn.str = new std::string( "^?{}" ); // location undefined
    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) ) ) ) ) );
     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) ) ) ) ) );
    50745662                }
    5075 #line 5076 "Parser/parser.cc" /* yacc.c:1646  */
    50765663    break;
    50775664
    50785665  case 139:
    5079 #line 676 "parser.yy" /* yacc.c:1646  */
     5666
     5667/* Line 1806 of yacc.c  */
     5668#line 676 "parser.yy"
    50805669    {
    5081                         (yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
     5670                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
    50825671                }
    5083 #line 5084 "Parser/parser.cc" /* yacc.c:1646  */
    50845672    break;
    50855673
    50865674  case 140:
    5087 #line 683 "parser.yy" /* yacc.c:1646  */
     5675
     5676/* Line 1806 of yacc.c  */
     5677#line 683 "parser.yy"
    50885678    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    5089 #line 5090 "Parser/parser.cc" /* yacc.c:1646  */
    50905679    break;
    50915680
    50925681  case 141:
    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  */
     5682
     5683/* Line 1806 of yacc.c  */
     5684#line 690 "parser.yy"
     5685    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    50965686    break;
    50975687
    50985688  case 143:
    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  */
     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); } }
    51025693    break;
    51035694
    51045695  case 144:
    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  */
     5696
     5697/* Line 1806 of yacc.c  */
     5698#line 701 "parser.yy"
     5699    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    51085700    break;
    51095701
    51105702  case 145:
    5111 #line 703 "parser.yy" /* yacc.c:1646  */
     5703
     5704/* Line 1806 of yacc.c  */
     5705#line 703 "parser.yy"
    51125706    {   // mark all fields in list
    5113                         for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     5707                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    51145708                                iter->set_extension( true );
    5115                         (yyval.sn) = new StatementNode( (yyvsp[0].decl) );
     5709                        (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
    51165710                }
    5117 #line 5118 "Parser/parser.cc" /* yacc.c:1646  */
    51185711    break;
    51195712
    51205713  case 146:
    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  */
     5714
     5715/* Line 1806 of yacc.c  */
     5716#line 709 "parser.yy"
     5717    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    51245718    break;
    51255719
    51265720  case 149:
    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  */
     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); } }
    51305725    break;
    51315726
    51325727  case 150:
    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  */
     5728
     5729/* Line 1806 of yacc.c  */
     5730#line 721 "parser.yy"
     5731    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    51365732    break;
    51375733
    51385734  case 151:
    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  */
     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 ) ); }
    51425739    break;
    51435740
    51445741  case 152:
    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  */
     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) ) ); }
    51485746    break;
    51495747
    51505748  case 153:
    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  */
     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) ) ); }
    51545753    break;
    51555754
    51565755  case 154:
    5157 #line 733 "parser.yy" /* yacc.c:1646  */
     5756
     5757/* Line 1806 of yacc.c  */
     5758#line 733 "parser.yy"
    51585759    {
    5159                         StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
     5760                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    51605761                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    51615762                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    51635764                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    51645765                        // statement.
    5165                         (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
     5766                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    51665767                }
    5167 #line 5168 "Parser/parser.cc" /* yacc.c:1646  */
    51685768    break;
    51695769
    51705770  case 155:
    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  */
     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) ) ); }
    51745775    break;
    51755776
    51765777  case 156:
    5177 #line 745 "parser.yy" /* yacc.c:1646  */
     5778
     5779/* Line 1806 of yacc.c  */
     5780#line 745 "parser.yy"
    51785781    {
    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;
     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;
    51815784                }
    5182 #line 5183 "Parser/parser.cc" /* yacc.c:1646  */
    51835785    break;
    51845786
    51855787  case 157:
    5186 #line 755 "parser.yy" /* yacc.c:1646  */
    5187     { (yyval.en) = (yyvsp[0].en); }
    5188 #line 5189 "Parser/parser.cc" /* yacc.c:1646  */
     5788
     5789/* Line 1806 of yacc.c  */
     5790#line 755 "parser.yy"
     5791    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51895792    break;
    51905793
    51915794  case 158:
    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  */
     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) ) ); }
    51955799    break;
    51965800
    51975801  case 160:
    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  */
     5802
     5803/* Line 1806 of yacc.c  */
     5804#line 762 "parser.yy"
     5805    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    52015806    break;
    52025807
    52035808  case 161:
    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  */
     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) ) ) ) ); }
    52075813    break;
    52085814
    52095815  case 162:
    5210 #line 768 "parser.yy" /* yacc.c:1646  */
    5211     { (yyval.sn) = (yyvsp[-1].sn); }
    5212 #line 5213 "Parser/parser.cc" /* yacc.c:1646  */
     5816
     5817/* Line 1806 of yacc.c  */
     5818#line 768 "parser.yy"
     5819    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    52135820    break;
    52145821
    52155822  case 163:
    5216 #line 769 "parser.yy" /* yacc.c:1646  */
     5823
     5824/* Line 1806 of yacc.c  */
     5825#line 769 "parser.yy"
    52175826    { (yyval.sn) = new StatementNode( build_default() ); }
    5218 #line 5219 "Parser/parser.cc" /* yacc.c:1646  */
    52195827    break;
    52205828
    52215829  case 165:
    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  */
     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) )); }
    52255834    break;
    52265835
    52275836  case 166:
    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  */
     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) ) ) ); }
    52315841    break;
    52325842
    52335843  case 167:
    5234 #line 784 "parser.yy" /* yacc.c:1646  */
     5844
     5845/* Line 1806 of yacc.c  */
     5846#line 784 "parser.yy"
    52355847    { (yyval.sn) = 0; }
    5236 #line 5237 "Parser/parser.cc" /* yacc.c:1646  */
    52375848    break;
    52385849
    52395850  case 169:
    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  */
     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) ) ) ); }
    52435855    break;
    52445856
    52455857  case 170:
    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  */
     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) ) ) ) ) ); }
    52495862    break;
    52505863
    52515864  case 171:
    5252 #line 797 "parser.yy" /* yacc.c:1646  */
     5865
     5866/* Line 1806 of yacc.c  */
     5867#line 797 "parser.yy"
    52535868    { (yyval.sn) = 0; }
    5254 #line 5255 "Parser/parser.cc" /* yacc.c:1646  */
    52555869    break;
    52565870
    52575871  case 173:
    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  */
     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) ); }
    52615876    break;
    52625877
    52635878  case 174:
    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  */
     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) ) ) ) ); }
    52675883    break;
    52685884
    52695885  case 175:
    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  */
     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) ))); }
    52735890    break;
    52745891
    52755892  case 176:
    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  */
     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) ) ) ) ) ) ); }
    52795897    break;
    52805898
    52815899  case 177:
    5282 #line 814 "parser.yy" /* yacc.c:1646  */
     5900
     5901/* Line 1806 of yacc.c  */
     5902#line 814 "parser.yy"
    52835903    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    5284 #line 5285 "Parser/parser.cc" /* yacc.c:1646  */
    52855904    break;
    52865905
    52875906  case 179:
    5288 #line 820 "parser.yy" /* yacc.c:1646  */
     5907
     5908/* Line 1806 of yacc.c  */
     5909#line 820 "parser.yy"
    52895910    { (yyval.sn) = 0; }
    5290 #line 5291 "Parser/parser.cc" /* yacc.c:1646  */
    52915911    break;
    52925912
    52935913  case 180:
    5294 #line 822 "parser.yy" /* yacc.c:1646  */
     5914
     5915/* Line 1806 of yacc.c  */
     5916#line 822 "parser.yy"
    52955917    { (yyval.sn) = 0; }
    5296 #line 5297 "Parser/parser.cc" /* yacc.c:1646  */
    52975918    break;
    52985919
    52995920  case 181:
    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  */
     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) ) ); }
    53035925    break;
    53045926
    53055927  case 182:
    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  */
     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) ) ); }
    53095932    break;
    53105933
    53115934  case 183:
    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  */
     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) ) ); }
    53155939    break;
    53165940
    53175941  case 184:
    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  */
     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) ); }
    53215946    break;
    53225947
    53235948  case 185:
    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  */
     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) ); }
    53275953    break;
    53285954
    53295955  case 186:
    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  */
     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 ) ); }
    53335960    break;
    53345961
    53355962  case 187:
    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  */
     5963
     5964/* Line 1806 of yacc.c  */
     5965#line 847 "parser.yy"
     5966    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    53395967    break;
    53405968
    53415969  case 188:
    5342 #line 850 "parser.yy" /* yacc.c:1646  */
     5970
     5971/* Line 1806 of yacc.c  */
     5972#line 850 "parser.yy"
    53435973    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    5344 #line 5345 "Parser/parser.cc" /* yacc.c:1646  */
    53455974    break;
    53465975
    53475976  case 189:
    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  */
     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 ) ); }
    53515981    break;
    53525982
    53535983  case 190:
    5354 #line 857 "parser.yy" /* yacc.c:1646  */
     5984
     5985/* Line 1806 of yacc.c  */
     5986#line 857 "parser.yy"
    53555987    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    5356 #line 5357 "Parser/parser.cc" /* yacc.c:1646  */
    53575988    break;
    53585989
    53595990  case 191:
    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  */
     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 ) ); }
    53635995    break;
    53645996
    53655997  case 192:
    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  */
     5998
     5999/* Line 1806 of yacc.c  */
     6000#line 863 "parser.yy"
     6001    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    53696002    break;
    53706003
    53716004  case 193:
    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  */
     6005
     6006/* Line 1806 of yacc.c  */
     6007#line 865 "parser.yy"
     6008    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    53756009    break;
    53766010
    53776011  case 194:
    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  */
     6012
     6013/* Line 1806 of yacc.c  */
     6014#line 867 "parser.yy"
     6015    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    53816016    break;
    53826017
    53836018  case 195:
    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  */
     6019
     6020/* Line 1806 of yacc.c  */
     6021#line 869 "parser.yy"
     6022    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    53876023    break;
    53886024
    53896025  case 196:
    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  */
     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 ) ); }
    53936030    break;
    53946031
    53956032  case 197:
    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  */
     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) ) ); }
    53996037    break;
    54006038
    54016039  case 198:
    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  */
     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) ) ); }
    54056044    break;
    54066045
    54076046  case 200:
    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  */
     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 ) ); }
    54116051    break;
    54126052
    54136053  case 201:
    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  */
     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 ) ) ); }
    54176058    break;
    54186059
    54196060  case 202:
    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  */
     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 ) ); }
    54236065    break;
    54246066
    54256067  case 203:
    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  */
     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 ) ) ); }
    54296072    break;
    54306073
    54316074  case 204:
    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  */
     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) ) ); }
    54356079    break;
    54366080
    54376081  case 205:
    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  */
     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) ) ) ); }
    54416086    break;
    54426087
    54436088  case 206:
    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  */
     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) ) ); }
    54476093    break;
    54486094
    54496095  case 207:
    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  */
     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) ) ) ); }
    54536100    break;
    54546101
    54556102  case 208:
    5456 #line 907 "parser.yy" /* yacc.c:1646  */
     6103
     6104/* Line 1806 of yacc.c  */
     6105#line 907 "parser.yy"
    54576106    {
    5458                         (yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
     6107                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
    54596108                }
    5460 #line 5461 "Parser/parser.cc" /* yacc.c:1646  */
    54616109    break;
    54626110
    54636111  case 210:
    5464 #line 920 "parser.yy" /* yacc.c:1646  */
     6112
     6113/* Line 1806 of yacc.c  */
     6114#line 920 "parser.yy"
    54656115    {
    54666116                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5467                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
     6117                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
    54686118                }
    5469 #line 5470 "Parser/parser.cc" /* yacc.c:1646  */
    54706119    break;
    54716120
    54726121  case 211:
    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  */
     6122
     6123/* Line 1806 of yacc.c  */
     6124#line 925 "parser.yy"
     6125    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    54766126    break;
    54776127
    54786128  case 212:
    5479 #line 927 "parser.yy" /* yacc.c:1646  */
     6129
     6130/* Line 1806 of yacc.c  */
     6131#line 927 "parser.yy"
    54806132    {
    54816133                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5482                         (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
     6134                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
    54836135                }
    5484 #line 5485 "Parser/parser.cc" /* yacc.c:1646  */
    54856136    break;
    54866137
    54876138  case 214:
    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  */
     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 ) ); }
    54916143    break;
    54926144
    54936145  case 215:
    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  */
     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) ) ); }
    54976150    break;
    54986151
    54996152  case 216:
    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  */
     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) ) ); }
    55036157    break;
    55046158
    55056159  case 217:
    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  */
     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) ) ); }
    55096164    break;
    55106165
    55116166  case 218:
    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  */
     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) ) ); }
    55156171    break;
    55166172
    55176173  case 219:
    5518 #line 949 "parser.yy" /* yacc.c:1646  */
     6174
     6175/* Line 1806 of yacc.c  */
     6176#line 949 "parser.yy"
    55196177    { (yyval.flag) = false; }
    5520 #line 5521 "Parser/parser.cc" /* yacc.c:1646  */
    55216178    break;
    55226179
    55236180  case 220:
    5524 #line 951 "parser.yy" /* yacc.c:1646  */
     6181
     6182/* Line 1806 of yacc.c  */
     6183#line 951 "parser.yy"
    55256184    { (yyval.flag) = true; }
    5526 #line 5527 "Parser/parser.cc" /* yacc.c:1646  */
    55276185    break;
    55286186
    55296187  case 221:
    5530 #line 956 "parser.yy" /* yacc.c:1646  */
     6188
     6189/* Line 1806 of yacc.c  */
     6190#line 956 "parser.yy"
    55316191    { (yyval.en) = 0; }
    5532 #line 5533 "Parser/parser.cc" /* yacc.c:1646  */
    55336192    break;
    55346193
    55356194  case 224:
    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  */
     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) ); }
    55396199    break;
    55406200
    55416201  case 225:
    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  */
     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) ) ); }
    55456206    break;
    55466207
    55476208  case 226:
    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  */
     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) ) ); }
    55516213    break;
    55526214
    55536215  case 227:
    5554 #line 975 "parser.yy" /* yacc.c:1646  */
     6216
     6217/* Line 1806 of yacc.c  */
     6218#line 975 "parser.yy"
    55556219    { (yyval.en) = 0; }
    5556 #line 5557 "Parser/parser.cc" /* yacc.c:1646  */
    55576220    break;
    55586221
    55596222  case 228:
    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  */
     6223
     6224/* Line 1806 of yacc.c  */
     6225#line 977 "parser.yy"
     6226    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    55636227    break;
    55646228
    55656229  case 229:
    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  */
     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) ) ); }
    55696234    break;
    55706235
    55716236  case 230:
    5572 #line 984 "parser.yy" /* yacc.c:1646  */
     6237
     6238/* Line 1806 of yacc.c  */
     6239#line 984 "parser.yy"
    55736240    {
    5574                         (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[0].tok) );
    5575                         delete (yyvsp[0].tok);                                                                  // allocated by lexer
     6241                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     6242                        delete (yyvsp[(1) - (1)].tok);                                                                  // allocated by lexer
    55766243                }
    5577 #line 5578 "Parser/parser.cc" /* yacc.c:1646  */
    55786244    break;
    55796245
    55806246  case 231:
    5581 #line 989 "parser.yy" /* yacc.c:1646  */
     6247
     6248/* Line 1806 of yacc.c  */
     6249#line 989 "parser.yy"
    55826250    {
    5583                         (yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( *(yyvsp[0].tok) );
    5584                         delete (yyvsp[0].tok);                                                                  // allocated by lexer
     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
    55856253                }
    5586 #line 5587 "Parser/parser.cc" /* yacc.c:1646  */
    55876254    break;
    55886255
    55896256  case 232:
    5590 #line 999 "parser.yy" /* yacc.c:1646  */
     6257
     6258/* Line 1806 of yacc.c  */
     6259#line 999 "parser.yy"
    55916260    { (yyval.decl) = 0; }
    5592 #line 5593 "Parser/parser.cc" /* yacc.c:1646  */
    55936261    break;
    55946262
    55956263  case 235:
    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  */
     6264
     6265/* Line 1806 of yacc.c  */
     6266#line 1006 "parser.yy"
     6267    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    55996268    break;
    56006269
    56016270  case 236:
    5602 #line 1011 "parser.yy" /* yacc.c:1646  */
     6271
     6272/* Line 1806 of yacc.c  */
     6273#line 1011 "parser.yy"
    56036274    { (yyval.decl) = 0; }
    5604 #line 5605 "Parser/parser.cc" /* yacc.c:1646  */
    56056275    break;
    56066276
    56076277  case 239:
    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  */
     6278
     6279/* Line 1806 of yacc.c  */
     6280#line 1018 "parser.yy"
     6281    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    56116282    break;
    56126283
    56136284  case 244:
    5614 #line 1032 "parser.yy" /* yacc.c:1646  */
     6285
     6286/* Line 1806 of yacc.c  */
     6287#line 1032 "parser.yy"
    56156288    {}
    5616 #line 5617 "Parser/parser.cc" /* yacc.c:1646  */
    56176289    break;
    56186290
    56196291  case 245:
    5620 #line 1033 "parser.yy" /* yacc.c:1646  */
     6292
     6293/* Line 1806 of yacc.c  */
     6294#line 1033 "parser.yy"
    56216295    {}
    5622 #line 5623 "Parser/parser.cc" /* yacc.c:1646  */
    56236296    break;
    56246297
    56256298  case 253:
    5626 #line 1062 "parser.yy" /* yacc.c:1646  */
     6299
     6300/* Line 1806 of yacc.c  */
     6301#line 1062 "parser.yy"
    56276302    {
    56286303                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5629                         (yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
     6304                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
    56306305                }
    5631 #line 5632 "Parser/parser.cc" /* yacc.c:1646  */
    56326306    break;
    56336307
    56346308  case 254:
    5635 #line 1069 "parser.yy" /* yacc.c:1646  */
     6309
     6310/* Line 1806 of yacc.c  */
     6311#line 1069 "parser.yy"
    56366312    {
    56376313                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5638                         (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
     6314                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
    56396315                }
    5640 #line 5641 "Parser/parser.cc" /* yacc.c:1646  */
    56416316    break;
    56426317
    56436318  case 255:
    5644 #line 1074 "parser.yy" /* yacc.c:1646  */
     6319
     6320/* Line 1806 of yacc.c  */
     6321#line 1074 "parser.yy"
    56456322    {
    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) ) );
     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) ) );
    56486325                }
    5649 #line 5650 "Parser/parser.cc" /* yacc.c:1646  */
    56506326    break;
    56516327
    56526328  case 256:
    5653 #line 1084 "parser.yy" /* yacc.c:1646  */
     6329
     6330/* Line 1806 of yacc.c  */
     6331#line 1084 "parser.yy"
    56546332    {
    5655                         typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    5656                         (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
     6333                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     6334                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
    56576335                }
    5658 #line 5659 "Parser/parser.cc" /* yacc.c:1646  */
    56596336    break;
    56606337
    56616338  case 257:
    5662 #line 1089 "parser.yy" /* yacc.c:1646  */
     6339
     6340/* Line 1806 of yacc.c  */
     6341#line 1089 "parser.yy"
    56636342    {
    5664                         typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    5665                         (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
     6343                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     6344                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
    56666345                }
    5667 #line 5668 "Parser/parser.cc" /* yacc.c:1646  */
    56686346    break;
    56696347
    56706348  case 258:
    5671 #line 1094 "parser.yy" /* yacc.c:1646  */
     6349
     6350/* Line 1806 of yacc.c  */
     6351#line 1094 "parser.yy"
    56726352    {
    5673                         typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    5674                         (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
     6353                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     6354                        (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
    56756355                }
    5676 #line 5677 "Parser/parser.cc" /* yacc.c:1646  */
    56776356    break;
    56786357
    56796358  case 259:
    5680 #line 1102 "parser.yy" /* yacc.c:1646  */
     6359
     6360/* Line 1806 of yacc.c  */
     6361#line 1102 "parser.yy"
    56816362    {
    56826363                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5683                         (yyval.decl) = (yyvsp[0].decl);
     6364                        (yyval.decl) = (yyvsp[(1) - (1)].decl);
    56846365                }
    5685 #line 5686 "Parser/parser.cc" /* yacc.c:1646  */
    56866366    break;
    56876367
    56886368  case 260:
    5689 #line 1107 "parser.yy" /* yacc.c:1646  */
     6369
     6370/* Line 1806 of yacc.c  */
     6371#line 1107 "parser.yy"
    56906372    {
    56916373                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5692                         (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
     6374                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
    56936375                }
    5694 #line 5695 "Parser/parser.cc" /* yacc.c:1646  */
    56956376    break;
    56966377
    56976378  case 261:
    5698 #line 1112 "parser.yy" /* yacc.c:1646  */
     6379
     6380/* Line 1806 of yacc.c  */
     6381#line 1112 "parser.yy"
    56996382    {
    57006383                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5701                         (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
     6384                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
    57026385                }
    5703 #line 5704 "Parser/parser.cc" /* yacc.c:1646  */
    57046386    break;
    57056387
    57066388  case 262:
    5707 #line 1117 "parser.yy" /* yacc.c:1646  */
     6389
     6390/* Line 1806 of yacc.c  */
     6391#line 1117 "parser.yy"
    57086392    {
    57096393                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5710                         (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
     6394                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
    57116395                }
    5712 #line 5713 "Parser/parser.cc" /* yacc.c:1646  */
    57136396    break;
    57146397
    57156398  case 263:
    5716 #line 1122 "parser.yy" /* yacc.c:1646  */
     6399
     6400/* Line 1806 of yacc.c  */
     6401#line 1122 "parser.yy"
    57176402    {
    5718                         typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
    5719                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
     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) ) );
    57206405                }
    5721 #line 5722 "Parser/parser.cc" /* yacc.c:1646  */
    57226406    break;
    57236407
    57246408  case 264:
    5725 #line 1130 "parser.yy" /* yacc.c:1646  */
     6409
     6410/* Line 1806 of yacc.c  */
     6411#line 1130 "parser.yy"
    57266412    {
    5727                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), DeclarationNode::newTuple( 0 ), (yyvsp[-2].decl), 0, true );
     6413                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
    57286414                }
    5729 #line 5730 "Parser/parser.cc" /* yacc.c:1646  */
    57306415    break;
    57316416
    57326417  case 265:
    5733 #line 1153 "parser.yy" /* yacc.c:1646  */
     6418
     6419/* Line 1806 of yacc.c  */
     6420#line 1153 "parser.yy"
    57346421    {
    5735                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
     6422                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
    57366423                }
    5737 #line 5738 "Parser/parser.cc" /* yacc.c:1646  */
    57386424    break;
    57396425
    57406426  case 266:
    5741 #line 1157 "parser.yy" /* yacc.c:1646  */
     6427
     6428/* Line 1806 of yacc.c  */
     6429#line 1157 "parser.yy"
    57426430    {
    5743                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
     6431                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
    57446432                }
    5745 #line 5746 "Parser/parser.cc" /* yacc.c:1646  */
    57466433    break;
    57476434
    57486435  case 267:
    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  */
     6436
     6437/* Line 1806 of yacc.c  */
     6438#line 1164 "parser.yy"
     6439    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    57526440    break;
    57536441
    57546442  case 268:
    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  */
     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) ) ); }
    57586447    break;
    57596448
    57606449  case 269:
    5761 #line 1173 "parser.yy" /* yacc.c:1646  */
     6450
     6451/* Line 1806 of yacc.c  */
     6452#line 1173 "parser.yy"
    57626453    {
    57636454                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5764                         (yyval.decl) = (yyvsp[0].decl)->addTypedef();
     6455                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    57656456                }
    5766 #line 5767 "Parser/parser.cc" /* yacc.c:1646  */
    57676457    break;
    57686458
    57696459  case 270:
    5770 #line 1178 "parser.yy" /* yacc.c:1646  */
     6460
     6461/* Line 1806 of yacc.c  */
     6462#line 1178 "parser.yy"
    57716463    {
    57726464                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5773                         (yyval.decl) = (yyvsp[0].decl)->addTypedef();
     6465                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    57746466                }
    5775 #line 5776 "Parser/parser.cc" /* yacc.c:1646  */
    57766467    break;
    57776468
    57786469  case 271:
    5779 #line 1183 "parser.yy" /* yacc.c:1646  */
     6470
     6471/* Line 1806 of yacc.c  */
     6472#line 1183 "parser.yy"
    57806473    {
    5781                         typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
    5782                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
     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) ) );
    57836476                }
    5784 #line 5785 "Parser/parser.cc" /* yacc.c:1646  */
    57856477    break;
    57866478
    57876479  case 272:
    5788 #line 1194 "parser.yy" /* yacc.c:1646  */
     6480
     6481/* Line 1806 of yacc.c  */
     6482#line 1194 "parser.yy"
    57896483    {
    57906484                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5791                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
     6485                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
    57926486                }
    5793 #line 5794 "Parser/parser.cc" /* yacc.c:1646  */
    57946487    break;
    57956488
    57966489  case 273:
    5797 #line 1199 "parser.yy" /* yacc.c:1646  */
     6490
     6491/* Line 1806 of yacc.c  */
     6492#line 1199 "parser.yy"
    57986493    {
    57996494                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5800                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
     6495                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
    58016496                }
    5802 #line 5803 "Parser/parser.cc" /* yacc.c:1646  */
    58036497    break;
    58046498
    58056499  case 274:
    5806 #line 1204 "parser.yy" /* yacc.c:1646  */
     6500
     6501/* Line 1806 of yacc.c  */
     6502#line 1204 "parser.yy"
    58076503    {
    58086504                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5809                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
     6505                        (yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
    58106506                }
    5811 #line 5812 "Parser/parser.cc" /* yacc.c:1646  */
    58126507    break;
    58136508
    58146509  case 275:
    5815 #line 1209 "parser.yy" /* yacc.c:1646  */
     6510
     6511/* Line 1806 of yacc.c  */
     6512#line 1209 "parser.yy"
    58166513    {
    58176514                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5818                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
     6515                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
    58196516                }
    5820 #line 5821 "Parser/parser.cc" /* yacc.c:1646  */
    58216517    break;
    58226518
    58236519  case 276:
    5824 #line 1214 "parser.yy" /* yacc.c:1646  */
     6520
     6521/* Line 1806 of yacc.c  */
     6522#line 1214 "parser.yy"
    58256523    {
    58266524                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5827                         (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
     6525                        (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
    58286526                }
    5829 #line 5830 "Parser/parser.cc" /* yacc.c:1646  */
    58306527    break;
    58316528
    58326529  case 277:
    5833 #line 1223 "parser.yy" /* yacc.c:1646  */
     6530
     6531/* Line 1806 of yacc.c  */
     6532#line 1223 "parser.yy"
    58346533    {
    5835                         typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
     6534                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
    58366535                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    58376536                }
    5838 #line 5839 "Parser/parser.cc" /* yacc.c:1646  */
    58396537    break;
    58406538
    58416539  case 278:
    5842 #line 1228 "parser.yy" /* yacc.c:1646  */
     6540
     6541/* Line 1806 of yacc.c  */
     6542#line 1228 "parser.yy"
    58436543    {
    5844                         typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
     6544                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
    58456545                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    58466546                }
    5847 #line 5848 "Parser/parser.cc" /* yacc.c:1646  */
    58486547    break;
    58496548
    58506549  case 283:
    5851 #line 1245 "parser.yy" /* yacc.c:1646  */
     6550
     6551/* Line 1806 of yacc.c  */
     6552#line 1245 "parser.yy"
    58526553    {
    58536554                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5854                         (yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
     6555                        (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
    58556556                }
    5856 #line 5857 "Parser/parser.cc" /* yacc.c:1646  */
    58576557    break;
    58586558
    58596559  case 284:
    5860 #line 1250 "parser.yy" /* yacc.c:1646  */
     6560
     6561/* Line 1806 of yacc.c  */
     6562#line 1250 "parser.yy"
    58616563    {
    58626564                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5863                         (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
     6565                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
    58646566                }
    5865 #line 5866 "Parser/parser.cc" /* yacc.c:1646  */
    58666567    break;
    58676568
    58686569  case 293:
    5869 #line 1272 "parser.yy" /* yacc.c:1646  */
     6570
     6571/* Line 1806 of yacc.c  */
     6572#line 1272 "parser.yy"
    58706573    { (yyval.decl) = 0; }
    5871 #line 5872 "Parser/parser.cc" /* yacc.c:1646  */
    58726574    break;
    58736575
    58746576  case 296:
    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  */
     6577
     6578/* Line 1806 of yacc.c  */
     6579#line 1284 "parser.yy"
     6580    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    58786581    break;
    58796582
    58806583  case 299:
    5881 #line 1295 "parser.yy" /* yacc.c:1646  */
     6584
     6585/* Line 1806 of yacc.c  */
     6586#line 1295 "parser.yy"
    58826587    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    5883 #line 5884 "Parser/parser.cc" /* yacc.c:1646  */
    58846588    break;
    58856589
    58866590  case 300:
    5887 #line 1297 "parser.yy" /* yacc.c:1646  */
     6591
     6592/* Line 1806 of yacc.c  */
     6593#line 1297 "parser.yy"
    58886594    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    5889 #line 5890 "Parser/parser.cc" /* yacc.c:1646  */
    58906595    break;
    58916596
    58926597  case 301:
    5893 #line 1299 "parser.yy" /* yacc.c:1646  */
     6598
     6599/* Line 1806 of yacc.c  */
     6600#line 1299 "parser.yy"
    58946601    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    5895 #line 5896 "Parser/parser.cc" /* yacc.c:1646  */
    58966602    break;
    58976603
    58986604  case 302:
    5899 #line 1301 "parser.yy" /* yacc.c:1646  */
     6605
     6606/* Line 1806 of yacc.c  */
     6607#line 1301 "parser.yy"
    59006608    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    5901 #line 5902 "Parser/parser.cc" /* yacc.c:1646  */
    59026609    break;
    59036610
    59046611  case 303:
    5905 #line 1303 "parser.yy" /* yacc.c:1646  */
     6612
     6613/* Line 1806 of yacc.c  */
     6614#line 1303 "parser.yy"
    59066615    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    5907 #line 5908 "Parser/parser.cc" /* yacc.c:1646  */
    59086616    break;
    59096617
    59106618  case 304:
    5911 #line 1305 "parser.yy" /* yacc.c:1646  */
     6619
     6620/* Line 1806 of yacc.c  */
     6621#line 1305 "parser.yy"
    59126622    {
    59136623                        typedefTable.enterScope();
    59146624                }
    5915 #line 5916 "Parser/parser.cc" /* yacc.c:1646  */
    59166625    break;
    59176626
    59186627  case 305:
    5919 #line 1309 "parser.yy" /* yacc.c:1646  */
     6628
     6629/* Line 1806 of yacc.c  */
     6630#line 1309 "parser.yy"
    59206631    {
    59216632                        typedefTable.leaveScope();
    5922                         (yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
     6633                        (yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
    59236634                }
    5924 #line 5925 "Parser/parser.cc" /* yacc.c:1646  */
    59256635    break;
    59266636
    59276637  case 307:
    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  */
     6638
     6639/* Line 1806 of yacc.c  */
     6640#line 1318 "parser.yy"
     6641    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    59316642    break;
    59326643
    59336644  case 308:
    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  */
     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) ); }
    59376649    break;
    59386650
    59396651  case 310:
    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  */
     6652
     6653/* Line 1806 of yacc.c  */
     6654#line 1331 "parser.yy"
     6655    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    59436656    break;
    59446657
    59456658  case 311:
    5946 #line 1336 "parser.yy" /* yacc.c:1646  */
     6659
     6660/* Line 1806 of yacc.c  */
     6661#line 1336 "parser.yy"
    59476662    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    5948 #line 5949 "Parser/parser.cc" /* yacc.c:1646  */
    59496663    break;
    59506664
    59516665  case 312:
    5952 #line 1338 "parser.yy" /* yacc.c:1646  */
     6666
     6667/* Line 1806 of yacc.c  */
     6668#line 1338 "parser.yy"
    59536669    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    5954 #line 5955 "Parser/parser.cc" /* yacc.c:1646  */
    59556670    break;
    59566671
    59576672  case 313:
    5958 #line 1340 "parser.yy" /* yacc.c:1646  */
     6673
     6674/* Line 1806 of yacc.c  */
     6675#line 1340 "parser.yy"
    59596676    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    5960 #line 5961 "Parser/parser.cc" /* yacc.c:1646  */
    59616677    break;
    59626678
    59636679  case 314:
    5964 #line 1342 "parser.yy" /* yacc.c:1646  */
     6680
     6681/* Line 1806 of yacc.c  */
     6682#line 1342 "parser.yy"
    59656683    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    5966 #line 5967 "Parser/parser.cc" /* yacc.c:1646  */
    59676684    break;
    59686685
    59696686  case 315:
    5970 #line 1345 "parser.yy" /* yacc.c:1646  */
     6687
     6688/* Line 1806 of yacc.c  */
     6689#line 1345 "parser.yy"
    59716690    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    5972 #line 5973 "Parser/parser.cc" /* yacc.c:1646  */
    59736691    break;
    59746692
    59756693  case 316:
    5976 #line 1347 "parser.yy" /* yacc.c:1646  */
     6694
     6695/* Line 1806 of yacc.c  */
     6696#line 1347 "parser.yy"
    59776697    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    5978 #line 5979 "Parser/parser.cc" /* yacc.c:1646  */
    59796698    break;
    59806699
    59816700  case 317:
    5982 #line 1350 "parser.yy" /* yacc.c:1646  */
     6701
     6702/* Line 1806 of yacc.c  */
     6703#line 1350 "parser.yy"
    59836704    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    5984 #line 5985 "Parser/parser.cc" /* yacc.c:1646  */
    59856705    break;
    59866706
    59876707  case 318:
    5988 #line 1352 "parser.yy" /* yacc.c:1646  */
     6708
     6709/* Line 1806 of yacc.c  */
     6710#line 1352 "parser.yy"
    59896711    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    5990 #line 5991 "Parser/parser.cc" /* yacc.c:1646  */
    59916712    break;
    59926713
    59936714  case 319:
    5994 #line 1357 "parser.yy" /* yacc.c:1646  */
     6715
     6716/* Line 1806 of yacc.c  */
     6717#line 1357 "parser.yy"
    59956718    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    5996 #line 5997 "Parser/parser.cc" /* yacc.c:1646  */
    59976719    break;
    59986720
    59996721  case 320:
    6000 #line 1359 "parser.yy" /* yacc.c:1646  */
     6722
     6723/* Line 1806 of yacc.c  */
     6724#line 1359 "parser.yy"
    60016725    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6002 #line 6003 "Parser/parser.cc" /* yacc.c:1646  */
    60036726    break;
    60046727
    60056728  case 321:
    6006 #line 1361 "parser.yy" /* yacc.c:1646  */
     6729
     6730/* Line 1806 of yacc.c  */
     6731#line 1361 "parser.yy"
    60076732    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6008 #line 6009 "Parser/parser.cc" /* yacc.c:1646  */
    60096733    break;
    60106734
    60116735  case 322:
    6012 #line 1363 "parser.yy" /* yacc.c:1646  */
     6736
     6737/* Line 1806 of yacc.c  */
     6738#line 1363 "parser.yy"
    60136739    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6014 #line 6015 "Parser/parser.cc" /* yacc.c:1646  */
    60156740    break;
    60166741
    60176742  case 323:
    6018 #line 1365 "parser.yy" /* yacc.c:1646  */
     6743
     6744/* Line 1806 of yacc.c  */
     6745#line 1365 "parser.yy"
    60196746    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6020 #line 6021 "Parser/parser.cc" /* yacc.c:1646  */
    60216747    break;
    60226748
    60236749  case 324:
    6024 #line 1367 "parser.yy" /* yacc.c:1646  */
     6750
     6751/* Line 1806 of yacc.c  */
     6752#line 1367 "parser.yy"
    60256753    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    6026 #line 6027 "Parser/parser.cc" /* yacc.c:1646  */
    60276754    break;
    60286755
    60296756  case 325:
    6030 #line 1369 "parser.yy" /* yacc.c:1646  */
     6757
     6758/* Line 1806 of yacc.c  */
     6759#line 1369 "parser.yy"
    60316760    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    6032 #line 6033 "Parser/parser.cc" /* yacc.c:1646  */
    60336761    break;
    60346762
    60356763  case 326:
    6036 #line 1371 "parser.yy" /* yacc.c:1646  */
     6764
     6765/* Line 1806 of yacc.c  */
     6766#line 1371 "parser.yy"
    60376767    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    6038 #line 6039 "Parser/parser.cc" /* yacc.c:1646  */
    60396768    break;
    60406769
    60416770  case 327:
    6042 #line 1373 "parser.yy" /* yacc.c:1646  */
     6771
     6772/* Line 1806 of yacc.c  */
     6773#line 1373 "parser.yy"
    60436774    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6044 #line 6045 "Parser/parser.cc" /* yacc.c:1646  */
    60456775    break;
    60466776
    60476777  case 328:
    6048 #line 1375 "parser.yy" /* yacc.c:1646  */
     6778
     6779/* Line 1806 of yacc.c  */
     6780#line 1375 "parser.yy"
    60496781    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6050 #line 6051 "Parser/parser.cc" /* yacc.c:1646  */
    60516782    break;
    60526783
    60536784  case 329:
    6054 #line 1377 "parser.yy" /* yacc.c:1646  */
     6785
     6786/* Line 1806 of yacc.c  */
     6787#line 1377 "parser.yy"
    60556788    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    6056 #line 6057 "Parser/parser.cc" /* yacc.c:1646  */
    60576789    break;
    60586790
    60596791  case 330:
    6060 #line 1379 "parser.yy" /* yacc.c:1646  */
     6792
     6793/* Line 1806 of yacc.c  */
     6794#line 1379 "parser.yy"
    60616795    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    6062 #line 6063 "Parser/parser.cc" /* yacc.c:1646  */
    60636796    break;
    60646797
    60656798  case 331:
    6066 #line 1381 "parser.yy" /* yacc.c:1646  */
     6799
     6800/* Line 1806 of yacc.c  */
     6801#line 1381 "parser.yy"
    60676802    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    6068 #line 6069 "Parser/parser.cc" /* yacc.c:1646  */
    60696803    break;
    60706804
    60716805  case 333:
    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  */
     6806
     6807/* Line 1806 of yacc.c  */
     6808#line 1388 "parser.yy"
     6809    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    60756810    break;
    60766811
    60776812  case 334:
    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  */
     6813
     6814/* Line 1806 of yacc.c  */
     6815#line 1390 "parser.yy"
     6816    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    60816817    break;
    60826818
    60836819  case 335:
    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  */
     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) ); }
    60876824    break;
    60886825
    60896826  case 336:
    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  */
     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) ); }
    60936831    break;
    60946832
    60956833  case 338:
    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  */
     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) ); }
    60996838    break;
    61006839
    61016840  case 340:
    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  */
     6841
     6842/* Line 1806 of yacc.c  */
     6843#line 1407 "parser.yy"
     6844    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    61056845    break;
    61066846
    61076847  case 341:
    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  */
     6848
     6849/* Line 1806 of yacc.c  */
     6850#line 1409 "parser.yy"
     6851    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    61116852    break;
    61126853
    61136854  case 342:
    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  */
     6855
     6856/* Line 1806 of yacc.c  */
     6857#line 1411 "parser.yy"
     6858    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    61176859    break;
    61186860
    61196861  case 343:
    6120 #line 1416 "parser.yy" /* yacc.c:1646  */
    6121     { (yyval.decl) = (yyvsp[-1].decl); }
    6122 #line 6123 "Parser/parser.cc" /* yacc.c:1646  */
     6862
     6863/* Line 1806 of yacc.c  */
     6864#line 1416 "parser.yy"
     6865    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    61236866    break;
    61246867
    61256868  case 344:
    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  */
     6869
     6870/* Line 1806 of yacc.c  */
     6871#line 1418 "parser.yy"
     6872    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    61296873    break;
    61306874
    61316875  case 345:
    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  */
     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) ); }
    61356880    break;
    61366881
    61376882  case 346:
    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  */
     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) ); }
    61416887    break;
    61426888
    61436889  case 348:
    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  */
     6890
     6891/* Line 1806 of yacc.c  */
     6892#line 1428 "parser.yy"
     6893    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    61476894    break;
    61486895
    61496896  case 349:
    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  */
     6897
     6898/* Line 1806 of yacc.c  */
     6899#line 1430 "parser.yy"
     6900    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    61536901    break;
    61546902
    61556903  case 350:
    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  */
     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) ); }
    61596908    break;
    61606909
    61616910  case 352:
    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  */
     6911
     6912/* Line 1806 of yacc.c  */
     6913#line 1438 "parser.yy"
     6914    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    61656915    break;
    61666916
    61676917  case 353:
    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  */
     6918
     6919/* Line 1806 of yacc.c  */
     6920#line 1440 "parser.yy"
     6921    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    61716922    break;
    61726923
    61736924  case 355:
    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  */
     6925
     6926/* Line 1806 of yacc.c  */
     6927#line 1446 "parser.yy"
     6928    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    61776929    break;
    61786930
    61796931  case 356:
    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  */
     6932
     6933/* Line 1806 of yacc.c  */
     6934#line 1448 "parser.yy"
     6935    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    61836936    break;
    61846937
    61856938  case 357:
    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  */
     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) ); }
    61896943    break;
    61906944
    61916945  case 358:
    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  */
     6946
     6947/* Line 1806 of yacc.c  */
     6948#line 1455 "parser.yy"
     6949    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    61956950    break;
    61966951
    61976952  case 359:
    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  */
     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) ); }
    62016957    break;
    62026958
    62036959  case 360:
    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  */
     6960
     6961/* Line 1806 of yacc.c  */
     6962#line 1459 "parser.yy"
     6963    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    62076964    break;
    62086965
    62096966  case 363:
    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  */
     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 ); }
    62136971    break;
    62146972
    62156973  case 364:
    6216 #line 1471 "parser.yy" /* yacc.c:1646  */
     6974
     6975/* Line 1806 of yacc.c  */
     6976#line 1471 "parser.yy"
    62176977    {
    6218                         typedefTable.makeTypedef( *(yyvsp[0].tok) );
    6219                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), 0, 0, false );
     6978                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     6979                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
    62206980                }
    6221 #line 6222 "Parser/parser.cc" /* yacc.c:1646  */
    62226981    break;
    62236982
    62246983  case 365:
    6225 #line 1476 "parser.yy" /* yacc.c:1646  */
    6226     { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
    6227 #line 6228 "Parser/parser.cc" /* yacc.c:1646  */
     6984
     6985/* Line 1806 of yacc.c  */
     6986#line 1476 "parser.yy"
     6987    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    62286988    break;
    62296989
    62306990  case 366:
    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  */
     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 ); }
    62346995    break;
    62356996
    62366997  case 367:
    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  */
     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 ); }
    62407002    break;
    62417003
    62427004  case 368:
    6243 #line 1482 "parser.yy" /* yacc.c:1646  */
    6244     { (yyval.decl) = (yyvsp[0].decl); }
    6245 #line 6246 "Parser/parser.cc" /* yacc.c:1646  */
     7005
     7006/* Line 1806 of yacc.c  */
     7007#line 1482 "parser.yy"
     7008    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    62467009    break;
    62477010
    62487011  case 369:
    6249 #line 1487 "parser.yy" /* yacc.c:1646  */
     7012
     7013/* Line 1806 of yacc.c  */
     7014#line 1487 "parser.yy"
    62507015    { (yyval.aggKey) = DeclarationNode::Struct; }
    6251 #line 6252 "Parser/parser.cc" /* yacc.c:1646  */
    62527016    break;
    62537017
    62547018  case 370:
    6255 #line 1489 "parser.yy" /* yacc.c:1646  */
     7019
     7020/* Line 1806 of yacc.c  */
     7021#line 1489 "parser.yy"
    62567022    { (yyval.aggKey) = DeclarationNode::Union; }
    6257 #line 6258 "Parser/parser.cc" /* yacc.c:1646  */
    62587023    break;
    62597024
    62607025  case 371:
    6261 #line 1494 "parser.yy" /* yacc.c:1646  */
     7026
     7027/* Line 1806 of yacc.c  */
     7028#line 1494 "parser.yy"
    62627029    { (yyval.decl) = 0; }
    6263 #line 6264 "Parser/parser.cc" /* yacc.c:1646  */
    62647030    break;
    62657031
    62667032  case 372:
    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  */
     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); }
    62707037    break;
    62717038
    62727039  case 374:
    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  */
     7040
     7041/* Line 1806 of yacc.c  */
     7042#line 1502 "parser.yy"
     7043    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    62767044    break;
    62777045
    62787046  case 376:
    6279 #line 1505 "parser.yy" /* yacc.c:1646  */
     7047
     7048/* Line 1806 of yacc.c  */
     7049#line 1505 "parser.yy"
    62807050    {   // mark all fields in list
    6281                         for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     7051                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    62827052                                iter->set_extension( true );
    6283                         (yyval.decl) = (yyvsp[-1].decl);
     7053                        (yyval.decl) = (yyvsp[(2) - (3)].decl);
    62847054                }
    6285 #line 6286 "Parser/parser.cc" /* yacc.c:1646  */
    62867055    break;
    62877056
    62887057  case 378:
    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  */
     7058
     7059/* Line 1806 of yacc.c  */
     7060#line 1515 "parser.yy"
     7061    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    62927062    break;
    62937063
    62947064  case 379:
    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  */
     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) ) ); }
    62987069    break;
    62997070
    63007071  case 380:
    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  */
     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 ) ); }
    63047076    break;
    63057077
    63067078  case 381:
    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  */
     7079
     7080/* Line 1806 of yacc.c  */
     7081#line 1524 "parser.yy"
     7082    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    63107083    break;
    63117084
    63127085  case 382:
    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  */
     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) ) ); }
    63167090    break;
    63177091
    63187092  case 383:
    6319 #line 1531 "parser.yy" /* yacc.c:1646  */
     7093
     7094/* Line 1806 of yacc.c  */
     7095#line 1531 "parser.yy"
    63207096    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    6321 #line 6322 "Parser/parser.cc" /* yacc.c:1646  */
    63227097    break;
    63237098
    63247099  case 384:
    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  */
     7100
     7101/* Line 1806 of yacc.c  */
     7102#line 1533 "parser.yy"
     7103    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    63287104    break;
    63297105
    63307106  case 385:
    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  */
     7107
     7108/* Line 1806 of yacc.c  */
     7109#line 1536 "parser.yy"
     7110    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    63347111    break;
    63357112
    63367113  case 386:
    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  */
     7114
     7115/* Line 1806 of yacc.c  */
     7116#line 1539 "parser.yy"
     7117    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    63407118    break;
    63417119
    63427120  case 388:
    6343 #line 1545 "parser.yy" /* yacc.c:1646  */
     7121
     7122/* Line 1806 of yacc.c  */
     7123#line 1545 "parser.yy"
    63447124    { (yyval.en) = 0; }
    6345 #line 6346 "Parser/parser.cc" /* yacc.c:1646  */
    63467125    break;
    63477126
    63487127  case 389:
    6349 #line 1547 "parser.yy" /* yacc.c:1646  */
    6350     { (yyval.en) = (yyvsp[0].en); }
    6351 #line 6352 "Parser/parser.cc" /* yacc.c:1646  */
     7128
     7129/* Line 1806 of yacc.c  */
     7130#line 1547 "parser.yy"
     7131    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    63527132    break;
    63537133
    63547134  case 390:
    6355 #line 1552 "parser.yy" /* yacc.c:1646  */
    6356     { (yyval.en) = (yyvsp[0].en); }
    6357 #line 6358 "Parser/parser.cc" /* yacc.c:1646  */
     7135
     7136/* Line 1806 of yacc.c  */
     7137#line 1552 "parser.yy"
     7138    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    63587139    break;
    63597140
    63607141  case 392:
    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  */
     7142
     7143/* Line 1806 of yacc.c  */
     7144#line 1561 "parser.yy"
     7145    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    63647146    break;
    63657147
    63667148  case 393:
    6367 #line 1563 "parser.yy" /* yacc.c:1646  */
     7149
     7150/* Line 1806 of yacc.c  */
     7151#line 1563 "parser.yy"
    63687152    {
    6369                         typedefTable.makeTypedef( *(yyvsp[0].tok) );
    6370                         (yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
     7153                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     7154                        (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
    63717155                }
    6372 #line 6373 "Parser/parser.cc" /* yacc.c:1646  */
    63737156    break;
    63747157
    63757158  case 394:
    6376 #line 1568 "parser.yy" /* yacc.c:1646  */
    6377     { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
    6378 #line 6379 "Parser/parser.cc" /* yacc.c:1646  */
     7159
     7160/* Line 1806 of yacc.c  */
     7161#line 1568 "parser.yy"
     7162    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    63797163    break;
    63807164
    63817165  case 395:
    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  */
     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) ); }
    63857170    break;
    63867171
    63877172  case 396:
    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  */
     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) ); }
    63917177    break;
    63927178
    63937179  case 397:
    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  */
     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) ) ); }
    63977184    break;
    63987185
    63997186  case 398:
    6400 #line 1582 "parser.yy" /* yacc.c:1646  */
     7187
     7188/* Line 1806 of yacc.c  */
     7189#line 1582 "parser.yy"
    64017190    { (yyval.en) = 0; }
    6402 #line 6403 "Parser/parser.cc" /* yacc.c:1646  */
    64037191    break;
    64047192
    64057193  case 399:
    6406 #line 1584 "parser.yy" /* yacc.c:1646  */
    6407     { (yyval.en) = (yyvsp[0].en); }
    6408 #line 6409 "Parser/parser.cc" /* yacc.c:1646  */
     7194
     7195/* Line 1806 of yacc.c  */
     7196#line 1584 "parser.yy"
     7197    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    64097198    break;
    64107199
    64117200  case 400:
    6412 #line 1591 "parser.yy" /* yacc.c:1646  */
     7201
     7202/* Line 1806 of yacc.c  */
     7203#line 1591 "parser.yy"
    64137204    { (yyval.decl) = 0; }
    6414 #line 6415 "Parser/parser.cc" /* yacc.c:1646  */
    64157205    break;
    64167206
    64177207  case 404:
    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  */
     7208
     7209/* Line 1806 of yacc.c  */
     7210#line 1599 "parser.yy"
     7211    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64217212    break;
    64227213
    64237214  case 405:
    6424 #line 1601 "parser.yy" /* yacc.c:1646  */
    6425     { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    6426 #line 6427 "Parser/parser.cc" /* yacc.c:1646  */
     7215
     7216/* Line 1806 of yacc.c  */
     7217#line 1601 "parser.yy"
     7218    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    64277219    break;
    64287220
    64297221  case 406:
    6430 #line 1603 "parser.yy" /* yacc.c:1646  */
    6431     { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    6432 #line 6433 "Parser/parser.cc" /* yacc.c:1646  */
     7222
     7223/* Line 1806 of yacc.c  */
     7224#line 1603 "parser.yy"
     7225    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    64337226    break;
    64347227
    64357228  case 408:
    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  */
     7229
     7230/* Line 1806 of yacc.c  */
     7231#line 1611 "parser.yy"
     7232    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64397233    break;
    64407234
    64417235  case 409:
    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  */
     7236
     7237/* Line 1806 of yacc.c  */
     7238#line 1613 "parser.yy"
     7239    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64457240    break;
    64467241
    64477242  case 410:
    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  */
     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) ); }
    64517247    break;
    64527248
    64537249  case 412:
    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  */
     7250
     7251/* Line 1806 of yacc.c  */
     7252#line 1621 "parser.yy"
     7253    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64577254    break;
    64587255
    64597256  case 413:
    6460 #line 1626 "parser.yy" /* yacc.c:1646  */
     7257
     7258/* Line 1806 of yacc.c  */
     7259#line 1626 "parser.yy"
    64617260    { (yyval.decl) = 0; }
    6462 #line 6463 "Parser/parser.cc" /* yacc.c:1646  */
    64637261    break;
    64647262
    64657263  case 416:
    6466 #line 1633 "parser.yy" /* yacc.c:1646  */
    6467     { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    6468 #line 6469 "Parser/parser.cc" /* yacc.c:1646  */
     7264
     7265/* Line 1806 of yacc.c  */
     7266#line 1633 "parser.yy"
     7267    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    64697268    break;
    64707269
    64717270  case 419:
    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  */
     7271
     7272/* Line 1806 of yacc.c  */
     7273#line 1640 "parser.yy"
     7274    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64757275    break;
    64767276
    64777277  case 420:
    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  */
     7278
     7279/* Line 1806 of yacc.c  */
     7280#line 1642 "parser.yy"
     7281    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64817282    break;
    64827283
    64837284  case 422:
    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  */
     7285
     7286/* Line 1806 of yacc.c  */
     7287#line 1651 "parser.yy"
     7288    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    64877289    break;
    64887290
    64897291  case 423:
    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  */
     7292
     7293/* Line 1806 of yacc.c  */
     7294#line 1654 "parser.yy"
     7295    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    64937296    break;
    64947297
    64957298  case 424:
    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  */
     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) ); }
    64997303    break;
    65007304
    65017305  case 429:
    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  */
     7306
     7307/* Line 1806 of yacc.c  */
     7308#line 1666 "parser.yy"
     7309    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    65057310    break;
    65067311
    65077312  case 431:
    6508 #line 1672 "parser.yy" /* yacc.c:1646  */
     7313
     7314/* Line 1806 of yacc.c  */
     7315#line 1672 "parser.yy"
    65097316    {
    65107317                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6511                         (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
     7318                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    65127319                }
    6513 #line 6514 "Parser/parser.cc" /* yacc.c:1646  */
    65147320    break;
    65157321
    65167322  case 432:
    6517 #line 1677 "parser.yy" /* yacc.c:1646  */
     7323
     7324/* Line 1806 of yacc.c  */
     7325#line 1677 "parser.yy"
    65187326    {
    65197327                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6520                         (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
     7328                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    65217329                }
    6522 #line 6523 "Parser/parser.cc" /* yacc.c:1646  */
    65237330    break;
    65247331
    65257332  case 434:
    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  */
     7333
     7334/* Line 1806 of yacc.c  */
     7335#line 1686 "parser.yy"
     7336    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    65297337    break;
    65307338
    65317339  case 435:
    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  */
     7340
     7341/* Line 1806 of yacc.c  */
     7342#line 1695 "parser.yy"
     7343    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    65357344    break;
    65367345
    65377346  case 436:
    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  */
     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) ) ); }
    65417351    break;
    65427352
    65437353  case 448:
    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  */
     7354
     7355/* Line 1806 of yacc.c  */
     7356#line 1722 "parser.yy"
     7357    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    65477358    break;
    65487359
    65497360  case 452:
    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  */
     7361
     7362/* Line 1806 of yacc.c  */
     7363#line 1730 "parser.yy"
     7364    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    65537365    break;
    65547366
    65557367  case 453:
    6556 #line 1735 "parser.yy" /* yacc.c:1646  */
     7368
     7369/* Line 1806 of yacc.c  */
     7370#line 1735 "parser.yy"
    65577371    { (yyval.in) = 0; }
    6558 #line 6559 "Parser/parser.cc" /* yacc.c:1646  */
    65597372    break;
    65607373
    65617374  case 454:
    6562 #line 1737 "parser.yy" /* yacc.c:1646  */
    6563     { (yyval.in) = (yyvsp[0].in); }
    6564 #line 6565 "Parser/parser.cc" /* yacc.c:1646  */
     7375
     7376/* Line 1806 of yacc.c  */
     7377#line 1737 "parser.yy"
     7378    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    65657379    break;
    65667380
    65677381  case 455:
    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  */
     7382
     7383/* Line 1806 of yacc.c  */
     7384#line 1739 "parser.yy"
     7385    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    65717386    break;
    65727387
    65737388  case 456:
    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  */
     7389
     7390/* Line 1806 of yacc.c  */
     7391#line 1743 "parser.yy"
     7392    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    65777393    break;
    65787394
    65797395  case 457:
    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  */
     7396
     7397/* Line 1806 of yacc.c  */
     7398#line 1744 "parser.yy"
     7399    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    65837400    break;
    65847401
    65857402  case 458:
    6586 #line 1749 "parser.yy" /* yacc.c:1646  */
     7403
     7404/* Line 1806 of yacc.c  */
     7405#line 1749 "parser.yy"
    65877406    { (yyval.in) = 0; }
    6588 #line 6589 "Parser/parser.cc" /* yacc.c:1646  */
    65897407    break;
    65907408
    65917409  case 460:
    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  */
     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) ); }
    65957414    break;
    65967415
    65977416  case 461:
    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  */
     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) ) ); }
    66017421    break;
    66027422
    66037423  case 462:
    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  */
     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) ) ) ); }
    66077428    break;
    66087429
    66097430  case 464:
    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  */
     7431
     7432/* Line 1806 of yacc.c  */
     7433#line 1770 "parser.yy"
     7434    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    66137435    break;
    66147436
    66157437  case 466:
    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  */
     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) ) ); }
    66197442    break;
    66207443
    66217444  case 467:
    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  */
     7445
     7446/* Line 1806 of yacc.c  */
     7447#line 1782 "parser.yy"
     7448    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    66257449    break;
    66267450
    66277451  case 468:
    6628 #line 1785 "parser.yy" /* yacc.c:1646  */
    6629     { (yyval.en) = (yyvsp[-2].en); }
    6630 #line 6631 "Parser/parser.cc" /* yacc.c:1646  */
     7452
     7453/* Line 1806 of yacc.c  */
     7454#line 1785 "parser.yy"
     7455    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    66317456    break;
    66327457
    66337458  case 469:
    6634 #line 1787 "parser.yy" /* yacc.c:1646  */
    6635     { (yyval.en) = (yyvsp[-2].en); }
    6636 #line 6637 "Parser/parser.cc" /* yacc.c:1646  */
     7459
     7460/* Line 1806 of yacc.c  */
     7461#line 1787 "parser.yy"
     7462    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    66377463    break;
    66387464
    66397465  case 470:
    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  */
     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) ) ); }
    66437470    break;
    66447471
    66457472  case 471:
    6646 #line 1791 "parser.yy" /* yacc.c:1646  */
    6647     { (yyval.en) = (yyvsp[-2].en); }
    6648 #line 6649 "Parser/parser.cc" /* yacc.c:1646  */
     7473
     7474/* Line 1806 of yacc.c  */
     7475#line 1791 "parser.yy"
     7476    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    66497477    break;
    66507478
    66517479  case 473:
    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  */
     7480
     7481/* Line 1806 of yacc.c  */
     7482#line 1815 "parser.yy"
     7483    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    66557484    break;
    66567485
    66577486  case 474:
    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  */
     7487
     7488/* Line 1806 of yacc.c  */
     7489#line 1817 "parser.yy"
     7490    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66617491    break;
    66627492
    66637493  case 475:
    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  */
     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) ); }
    66677498    break;
    66687499
    66697500  case 477:
    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  */
     7501
     7502/* Line 1806 of yacc.c  */
     7503#line 1825 "parser.yy"
     7504    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    66737505    break;
    66747506
    66757507  case 478:
    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  */
     7508
     7509/* Line 1806 of yacc.c  */
     7510#line 1827 "parser.yy"
     7511    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66797512    break;
    66807513
    66817514  case 479:
    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  */
     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) ); }
    66857519    break;
    66867520
    66877521  case 481:
    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  */
     7522
     7523/* Line 1806 of yacc.c  */
     7524#line 1838 "parser.yy"
     7525    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    66917526    break;
    66927527
    66937528  case 482:
    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  */
     7529
     7530/* Line 1806 of yacc.c  */
     7531#line 1843 "parser.yy"
     7532    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    66977533    break;
    66987534
    66997535  case 483:
    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  */
     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) ); }
    67037540    break;
    67047541
    67057542  case 485:
    6706 #line 1851 "parser.yy" /* yacc.c:1646  */
     7543
     7544/* Line 1806 of yacc.c  */
     7545#line 1851 "parser.yy"
    67077546    { (yyval.tclass) = DeclarationNode::Type; }
    6708 #line 6709 "Parser/parser.cc" /* yacc.c:1646  */
    67097547    break;
    67107548
    67117549  case 486:
    6712 #line 1853 "parser.yy" /* yacc.c:1646  */
     7550
     7551/* Line 1806 of yacc.c  */
     7552#line 1853 "parser.yy"
    67137553    { (yyval.tclass) = DeclarationNode::Ftype; }
    6714 #line 6715 "Parser/parser.cc" /* yacc.c:1646  */
    67157554    break;
    67167555
    67177556  case 487:
    6718 #line 1855 "parser.yy" /* yacc.c:1646  */
     7557
     7558/* Line 1806 of yacc.c  */
     7559#line 1855 "parser.yy"
    67197560    { (yyval.tclass) = DeclarationNode::Dtype; }
    6720 #line 6721 "Parser/parser.cc" /* yacc.c:1646  */
    67217561    break;
    67227562
    67237563  case 488:
    6724 #line 1860 "parser.yy" /* yacc.c:1646  */
     7564
     7565/* Line 1806 of yacc.c  */
     7566#line 1860 "parser.yy"
    67257567    { (yyval.decl) = 0; }
    6726 #line 6727 "Parser/parser.cc" /* yacc.c:1646  */
    67277568    break;
    67287569
    67297570  case 489:
    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  */
     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); }
    67337575    break;
    67347576
    67357577  case 490:
    6736 #line 1867 "parser.yy" /* yacc.c:1646  */
     7578
     7579/* Line 1806 of yacc.c  */
     7580#line 1867 "parser.yy"
    67377581    {
    6738                         typedefTable.openTrait( *(yyvsp[-3].tok) );
    6739                         (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
     7582                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     7583                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    67407584                }
    6741 #line 6742 "Parser/parser.cc" /* yacc.c:1646  */
    67427585    break;
    67437586
    67447587  case 491:
    6745 #line 1872 "parser.yy" /* yacc.c:1646  */
    6746     { (yyval.decl) = (yyvsp[-1].decl); }
    6747 #line 6748 "Parser/parser.cc" /* yacc.c:1646  */
     7588
     7589/* Line 1806 of yacc.c  */
     7590#line 1872 "parser.yy"
     7591    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    67487592    break;
    67497593
    67507594  case 492:
    6751 #line 1874 "parser.yy" /* yacc.c:1646  */
     7595
     7596/* Line 1806 of yacc.c  */
     7597#line 1874 "parser.yy"
    67527598    { (yyval.decl) = 0; }
    6753 #line 6754 "Parser/parser.cc" /* yacc.c:1646  */
    67547599    break;
    67557600
    67567601  case 493:
    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  */
     7602
     7603/* Line 1806 of yacc.c  */
     7604#line 1879 "parser.yy"
     7605    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    67607606    break;
    67617607
    67627608  case 495:
    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  */
     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) ) ) ) ); }
    67667613    break;
    67677614
    67687615  case 496:
    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  */
     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) )); }
    67727620    break;
    67737621
    67747622  case 497:
    6775 #line 1889 "parser.yy" /* yacc.c:1646  */
    6776     { (yyval.decl) = (yyvsp[0].decl); }
    6777 #line 6778 "Parser/parser.cc" /* yacc.c:1646  */
     7623
     7624/* Line 1806 of yacc.c  */
     7625#line 1889 "parser.yy"
     7626    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    67787627    break;
    67797628
    67807629  case 498:
    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  */
     7630
     7631/* Line 1806 of yacc.c  */
     7632#line 1891 "parser.yy"
     7633    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    67847634    break;
    67857635
    67867636  case 499:
    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  */
     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) ) ); }
    67907641    break;
    67917642
    67927643  case 500:
    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  */
     7644
     7645/* Line 1806 of yacc.c  */
     7646#line 1898 "parser.yy"
     7647    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    67967648    break;
    67977649
    67987650  case 501:
    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  */
     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) ); }
    68027655    break;
    68037656
    68047657  case 502:
    6805 #line 1905 "parser.yy" /* yacc.c:1646  */
     7658
     7659/* Line 1806 of yacc.c  */
     7660#line 1905 "parser.yy"
    68067661    {
    6807                         typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
    6808                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
     7662                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     7663                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
    68097664                }
    6810 #line 6811 "Parser/parser.cc" /* yacc.c:1646  */
    68117665    break;
    68127666
    68137667  case 503:
    6814 #line 1910 "parser.yy" /* yacc.c:1646  */
     7668
     7669/* Line 1806 of yacc.c  */
     7670#line 1910 "parser.yy"
    68157671    {
    6816                         typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
    6817                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
     7672                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     7673                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
    68187674                }
    6819 #line 6820 "Parser/parser.cc" /* yacc.c:1646  */
    68207675    break;
    68217676
    68227677  case 504:
    6823 #line 1918 "parser.yy" /* yacc.c:1646  */
     7678
     7679/* Line 1806 of yacc.c  */
     7680#line 1918 "parser.yy"
    68247681    {
    6825                         typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
    6826                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
     7682                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     7683                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    68277684                }
    6828 #line 6829 "Parser/parser.cc" /* yacc.c:1646  */
    68297685    break;
    68307686
    68317687  case 505:
    6832 #line 1923 "parser.yy" /* yacc.c:1646  */
     7688
     7689/* Line 1806 of yacc.c  */
     7690#line 1923 "parser.yy"
    68337691    {
    6834                         typedefTable.enterTrait( *(yyvsp[-6].tok) );
     7692                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
    68357693                        typedefTable.enterScope();
    68367694                }
    6837 #line 6838 "Parser/parser.cc" /* yacc.c:1646  */
    68387695    break;
    68397696
    68407697  case 506:
    6841 #line 1928 "parser.yy" /* yacc.c:1646  */
     7698
     7699/* Line 1806 of yacc.c  */
     7700#line 1928 "parser.yy"
    68427701    {
    68437702                        typedefTable.leaveTrait();
    6844                         typedefTable.addToEnclosingScope( *(yyvsp[-9].tok), TypedefTable::ID );
    6845                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
     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) );
    68467705                }
    6847 #line 6848 "Parser/parser.cc" /* yacc.c:1646  */
    68487706    break;
    68497707
    68507708  case 508:
    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  */
     7709
     7710/* Line 1806 of yacc.c  */
     7711#line 1938 "parser.yy"
     7712    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    68547713    break;
    68557714
    68567715  case 511:
    6857 #line 1948 "parser.yy" /* yacc.c:1646  */
     7716
     7717/* Line 1806 of yacc.c  */
     7718#line 1948 "parser.yy"
    68587719    {
    68597720                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    6860                         (yyval.decl) = (yyvsp[0].decl);
     7721                        (yyval.decl) = (yyvsp[(1) - (1)].decl);
    68617722                }
    6862 #line 6863 "Parser/parser.cc" /* yacc.c:1646  */
    68637723    break;
    68647724
    68657725  case 512:
    6866 #line 1953 "parser.yy" /* yacc.c:1646  */
     7726
     7727/* Line 1806 of yacc.c  */
     7728#line 1953 "parser.yy"
    68677729    {
    68687730                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    6869                         (yyval.decl) = (yyvsp[0].decl);
     7731                        (yyval.decl) = (yyvsp[(1) - (1)].decl);
    68707732                }
    6871 #line 6872 "Parser/parser.cc" /* yacc.c:1646  */
    68727733    break;
    68737734
    68747735  case 513:
    6875 #line 1958 "parser.yy" /* yacc.c:1646  */
     7736
     7737/* Line 1806 of yacc.c  */
     7738#line 1958 "parser.yy"
    68767739    {
    6877                         typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
    6878                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
     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) ) );
    68797742                }
    6880 #line 6881 "Parser/parser.cc" /* yacc.c:1646  */
    68817743    break;
    68827744
    68837745  case 514:
    6884 #line 1966 "parser.yy" /* yacc.c:1646  */
     7746
     7747/* Line 1806 of yacc.c  */
     7748#line 1966 "parser.yy"
    68857749    {
    68867750                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    6887                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
     7751                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
    68887752                }
    6889 #line 6890 "Parser/parser.cc" /* yacc.c:1646  */
    68907753    break;
    68917754
    68927755  case 515:
    6893 #line 1971 "parser.yy" /* yacc.c:1646  */
     7756
     7757/* Line 1806 of yacc.c  */
     7758#line 1971 "parser.yy"
    68947759    {
    68957760                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    6896                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
     7761                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
    68977762                }
    6898 #line 6899 "Parser/parser.cc" /* yacc.c:1646  */
    68997763    break;
    69007764
    69017765  case 516:
    6902 #line 1981 "parser.yy" /* yacc.c:1646  */
     7766
     7767/* Line 1806 of yacc.c  */
     7768#line 1981 "parser.yy"
    69037769    {}
    6904 #line 6905 "Parser/parser.cc" /* yacc.c:1646  */
    69057770    break;
    69067771
    69077772  case 517:
    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  */
     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);    }
    69117777    break;
    69127778
    69137779  case 519:
    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  */
     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); }
    69177784    break;
    69187785
    69197786  case 520:
    6920 #line 1994 "parser.yy" /* yacc.c:1646  */
     7787
     7788/* Line 1806 of yacc.c  */
     7789#line 1994 "parser.yy"
    69217790    { (yyval.decl) = 0; }
    6922 #line 6923 "Parser/parser.cc" /* yacc.c:1646  */
    69237791    break;
    69247792
    69257793  case 524:
    6926 #line 2002 "parser.yy" /* yacc.c:1646  */
     7794
     7795/* Line 1806 of yacc.c  */
     7796#line 2002 "parser.yy"
    69277797    {}
    6928 #line 6929 "Parser/parser.cc" /* yacc.c:1646  */
    69297798    break;
    69307799
    69317800  case 525:
    6932 #line 2004 "parser.yy" /* yacc.c:1646  */
     7801
     7802/* Line 1806 of yacc.c  */
     7803#line 2004 "parser.yy"
    69337804    {
    69347805                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    6935                         linkage = LinkageSpec::fromString( *(yyvsp[0].tok) );
     7806                        linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
    69367807                }
    6937 #line 6938 "Parser/parser.cc" /* yacc.c:1646  */
    69387808    break;
    69397809
    69407810  case 526:
    6941 #line 2009 "parser.yy" /* yacc.c:1646  */
     7811
     7812/* Line 1806 of yacc.c  */
     7813#line 2009 "parser.yy"
    69427814    {
    69437815                        linkage = linkageStack.top();
    69447816                        linkageStack.pop();
    6945                         (yyval.decl) = (yyvsp[-1].decl);
     7817                        (yyval.decl) = (yyvsp[(5) - (6)].decl);
    69467818                }
    6947 #line 6948 "Parser/parser.cc" /* yacc.c:1646  */
    69487819    break;
    69497820
    69507821  case 527:
    6951 #line 2015 "parser.yy" /* yacc.c:1646  */
     7822
     7823/* Line 1806 of yacc.c  */
     7824#line 2015 "parser.yy"
    69527825    {   // mark all fields in list
    6953                         for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     7826                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    69547827                                iter->set_extension( true );
    6955                         (yyval.decl) = (yyvsp[0].decl);
     7828                        (yyval.decl) = (yyvsp[(2) - (2)].decl);
    69567829                }
    6957 #line 6958 "Parser/parser.cc" /* yacc.c:1646  */
    69587830    break;
    69597831
    69607832  case 529:
    6961 #line 2030 "parser.yy" /* yacc.c:1646  */
     7833
     7834/* Line 1806 of yacc.c  */
     7835#line 2030 "parser.yy"
    69627836    {
    69637837                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    69647838                        typedefTable.leaveScope();
    6965                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
     7839                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
    69667840                }
    6967 #line 6968 "Parser/parser.cc" /* yacc.c:1646  */
    69687841    break;
    69697842
    69707843  case 530:
    6971 #line 2036 "parser.yy" /* yacc.c:1646  */
     7844
     7845/* Line 1806 of yacc.c  */
     7846#line 2036 "parser.yy"
    69727847    {
    69737848                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    69747849                        typedefTable.leaveScope();
    6975                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
     7850                        (yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
    69767851                }
    6977 #line 6978 "Parser/parser.cc" /* yacc.c:1646  */
    69787852    break;
    69797853
    69807854  case 531:
    6981 #line 2045 "parser.yy" /* yacc.c:1646  */
     7855
     7856/* Line 1806 of yacc.c  */
     7857#line 2045 "parser.yy"
    69827858    {
    69837859                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    69847860                        typedefTable.leaveScope();
    6985                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
     7861                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
    69867862                }
    6987 #line 6988 "Parser/parser.cc" /* yacc.c:1646  */
    69887863    break;
    69897864
    69907865  case 532:
    6991 #line 2051 "parser.yy" /* yacc.c:1646  */
     7866
     7867/* Line 1806 of yacc.c  */
     7868#line 2051 "parser.yy"
    69927869    {
    69937870                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    69947871                        typedefTable.leaveScope();
    6995                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
     7872                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
    69967873                }
    6997 #line 6998 "Parser/parser.cc" /* yacc.c:1646  */
    69987874    break;
    69997875
    70007876  case 533:
    7001 #line 2057 "parser.yy" /* yacc.c:1646  */
     7877
     7878/* Line 1806 of yacc.c  */
     7879#line 2057 "parser.yy"
    70027880    {
    70037881                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70047882                        typedefTable.leaveScope();
    7005                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
     7883                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
    70067884                }
    7007 #line 7008 "Parser/parser.cc" /* yacc.c:1646  */
    70087885    break;
    70097886
    70107887  case 534:
    7011 #line 2063 "parser.yy" /* yacc.c:1646  */
     7888
     7889/* Line 1806 of yacc.c  */
     7890#line 2063 "parser.yy"
    70127891    {
    70137892                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70147893                        typedefTable.leaveScope();
    7015                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
     7894                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
    70167895                }
    7017 #line 7018 "Parser/parser.cc" /* yacc.c:1646  */
    70187896    break;
    70197897
    70207898  case 535:
    7021 #line 2069 "parser.yy" /* yacc.c:1646  */
     7899
     7900/* Line 1806 of yacc.c  */
     7901#line 2069 "parser.yy"
    70227902    {
    70237903                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70247904                        typedefTable.leaveScope();
    7025                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
     7905                        (yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
    70267906                }
    7027 #line 7028 "Parser/parser.cc" /* yacc.c:1646  */
    70287907    break;
    70297908
    70307909  case 536:
    7031 #line 2077 "parser.yy" /* yacc.c:1646  */
     7910
     7911/* Line 1806 of yacc.c  */
     7912#line 2077 "parser.yy"
    70327913    {
    70337914                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70347915                        typedefTable.leaveScope();
    7035                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
     7916                        (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
    70367917                }
    7037 #line 7038 "Parser/parser.cc" /* yacc.c:1646  */
    70387918    break;
    70397919
    70407920  case 537:
    7041 #line 2083 "parser.yy" /* yacc.c:1646  */
     7921
     7922/* Line 1806 of yacc.c  */
     7923#line 2083 "parser.yy"
    70427924    {
    70437925                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70447926                        typedefTable.leaveScope();
    7045                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
     7927                        (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
    70467928                }
    7047 #line 7048 "Parser/parser.cc" /* yacc.c:1646  */
    70487929    break;
    70497930
    70507931  case 538:
    7051 #line 2091 "parser.yy" /* yacc.c:1646  */
     7932
     7933/* Line 1806 of yacc.c  */
     7934#line 2091 "parser.yy"
    70527935    {
    70537936                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70547937                        typedefTable.leaveScope();
    7055                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
     7938                        (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
    70567939                }
    7057 #line 7058 "Parser/parser.cc" /* yacc.c:1646  */
    70587940    break;
    70597941
    70607942  case 539:
    7061 #line 2097 "parser.yy" /* yacc.c:1646  */
     7943
     7944/* Line 1806 of yacc.c  */
     7945#line 2097 "parser.yy"
    70627946    {
    70637947                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70647948                        typedefTable.leaveScope();
    7065                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
     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) );
    70667950                }
    7067 #line 7068 "Parser/parser.cc" /* yacc.c:1646  */
    70687951    break;
    70697952
    70707953  case 543:
    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  */
     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) ) ); }
    70747958    break;
    70757959
    70767960  case 545:
    7077 #line 2117 "parser.yy" /* yacc.c:1646  */
    7078     { delete (yyvsp[-2].str); }
    7079 #line 7080 "Parser/parser.cc" /* yacc.c:1646  */
     7961
     7962/* Line 1806 of yacc.c  */
     7963#line 2117 "parser.yy"
     7964    { delete (yyvsp[(3) - (5)].str); }
    70807965    break;
    70817966
    70827967  case 546:
    7083 #line 2122 "parser.yy" /* yacc.c:1646  */
     7968
     7969/* Line 1806 of yacc.c  */
     7970#line 2122 "parser.yy"
    70847971    { (yyval.decl) = 0; }
    7085 #line 7086 "Parser/parser.cc" /* yacc.c:1646  */
    70867972    break;
    70877973
    70887974  case 549:
    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  */
     7975
     7976/* Line 1806 of yacc.c  */
     7977#line 2129 "parser.yy"
     7978    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70927979    break;
    70937980
    70947981  case 550:
    7095 #line 2135 "parser.yy" /* yacc.c:1646  */
     7982
     7983/* Line 1806 of yacc.c  */
     7984#line 2135 "parser.yy"
    70967985    { (yyval.decl) = 0; }
    7097 #line 7098 "Parser/parser.cc" /* yacc.c:1646  */
    70987986    break;
    70997987
    71007988  case 555:
    7101 #line 2146 "parser.yy" /* yacc.c:1646  */
    7102     { delete (yyvsp[-1].en); }
    7103 #line 7104 "Parser/parser.cc" /* yacc.c:1646  */
     7989
     7990/* Line 1806 of yacc.c  */
     7991#line 2146 "parser.yy"
     7992    { delete (yyvsp[(3) - (4)].en); }
    71047993    break;
    71057994
    71067995  case 556:
    7107 #line 2150 "parser.yy" /* yacc.c:1646  */
    7108     { delete (yyvsp[0].tok); }
    7109 #line 7110 "Parser/parser.cc" /* yacc.c:1646  */
     7996
     7997/* Line 1806 of yacc.c  */
     7998#line 2150 "parser.yy"
     7999    { delete (yyvsp[(1) - (1)].tok); }
    71108000    break;
    71118001
    71128002  case 557:
    7113 #line 2151 "parser.yy" /* yacc.c:1646  */
    7114     { delete (yyvsp[0].decl); }
    7115 #line 7116 "Parser/parser.cc" /* yacc.c:1646  */
     8003
     8004/* Line 1806 of yacc.c  */
     8005#line 2151 "parser.yy"
     8006    { delete (yyvsp[(1) - (1)].decl); }
    71168007    break;
    71178008
    71188009  case 558:
    7119 #line 2152 "parser.yy" /* yacc.c:1646  */
    7120     { delete (yyvsp[0].decl); }
    7121 #line 7122 "Parser/parser.cc" /* yacc.c:1646  */
     8010
     8011/* Line 1806 of yacc.c  */
     8012#line 2152 "parser.yy"
     8013    { delete (yyvsp[(1) - (1)].decl); }
    71228014    break;
    71238015
    71248016  case 559:
    7125 #line 2153 "parser.yy" /* yacc.c:1646  */
    7126     { delete (yyvsp[0].decl); }
    7127 #line 7128 "Parser/parser.cc" /* yacc.c:1646  */
     8017
     8018/* Line 1806 of yacc.c  */
     8019#line 2153 "parser.yy"
     8020    { delete (yyvsp[(1) - (1)].decl); }
    71288021    break;
    71298022
    71308023  case 560:
    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  */
     8024
     8025/* Line 1806 of yacc.c  */
     8026#line 2188 "parser.yy"
     8027    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71348028    break;
    71358029
    71368030  case 562:
    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  */
     8031
     8032/* Line 1806 of yacc.c  */
     8033#line 2191 "parser.yy"
     8034    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71408035    break;
    71418036
    71428037  case 563:
    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  */
     8038
     8039/* Line 1806 of yacc.c  */
     8040#line 2193 "parser.yy"
     8041    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71468042    break;
    71478043
    71488044  case 564:
    7149 #line 2198 "parser.yy" /* yacc.c:1646  */
     8045
     8046/* Line 1806 of yacc.c  */
     8047#line 2198 "parser.yy"
    71508048    {
    7151                         typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    7152                         (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     8049                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8050                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    71538051                }
    7154 #line 7155 "Parser/parser.cc" /* yacc.c:1646  */
    71558052    break;
    71568053
    71578054  case 565:
    7158 #line 2203 "parser.yy" /* yacc.c:1646  */
    7159     { (yyval.decl) = (yyvsp[-1].decl); }
    7160 #line 7161 "Parser/parser.cc" /* yacc.c:1646  */
     8055
     8056/* Line 1806 of yacc.c  */
     8057#line 2203 "parser.yy"
     8058    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    71618059    break;
    71628060
    71638061  case 566:
    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  */
     8062
     8063/* Line 1806 of yacc.c  */
     8064#line 2208 "parser.yy"
     8065    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    71678066    break;
    71688067
    71698068  case 567:
    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  */
     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) ) ); }
    71738073    break;
    71748074
    71758075  case 568:
    7176 #line 2212 "parser.yy" /* yacc.c:1646  */
    7177     { (yyval.decl) = (yyvsp[-1].decl); }
    7178 #line 7179 "Parser/parser.cc" /* yacc.c:1646  */
     8076
     8077/* Line 1806 of yacc.c  */
     8078#line 2212 "parser.yy"
     8079    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    71798080    break;
    71808081
    71818082  case 569:
    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  */
     8083
     8084/* Line 1806 of yacc.c  */
     8085#line 2217 "parser.yy"
     8086    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    71858087    break;
    71868088
    71878089  case 570:
    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  */
     8090
     8091/* Line 1806 of yacc.c  */
     8092#line 2219 "parser.yy"
     8093    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    71918094    break;
    71928095
    71938096  case 571:
    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  */
     8097
     8098/* Line 1806 of yacc.c  */
     8099#line 2221 "parser.yy"
     8100    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    71978101    break;
    71988102
    71998103  case 572:
    7200 #line 2223 "parser.yy" /* yacc.c:1646  */
    7201     { (yyval.decl) = (yyvsp[-1].decl); }
    7202 #line 7203 "Parser/parser.cc" /* yacc.c:1646  */
     8104
     8105/* Line 1806 of yacc.c  */
     8106#line 2223 "parser.yy"
     8107    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72038108    break;
    72048109
    72058110  case 573:
    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  */
     8111
     8112/* Line 1806 of yacc.c  */
     8113#line 2228 "parser.yy"
     8114    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    72098115    break;
    72108116
    72118117  case 574:
    7212 #line 2230 "parser.yy" /* yacc.c:1646  */
    7213     { (yyval.decl) = (yyvsp[-1].decl); }
    7214 #line 7215 "Parser/parser.cc" /* yacc.c:1646  */
     8118
     8119/* Line 1806 of yacc.c  */
     8120#line 2230 "parser.yy"
     8121    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72158122    break;
    72168123
    72178124  case 575:
    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  */
     8125
     8126/* Line 1806 of yacc.c  */
     8127#line 2239 "parser.yy"
     8128    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    72218129    break;
    72228130
    72238131  case 577:
    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  */
     8132
     8133/* Line 1806 of yacc.c  */
     8134#line 2242 "parser.yy"
     8135    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    72278136    break;
    72288137
    72298138  case 578:
    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  */
     8139
     8140/* Line 1806 of yacc.c  */
     8141#line 2247 "parser.yy"
     8142    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    72338143    break;
    72348144
    72358145  case 579:
    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  */
     8146
     8147/* Line 1806 of yacc.c  */
     8148#line 2249 "parser.yy"
     8149    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    72398150    break;
    72408151
    72418152  case 580:
    7242 #line 2251 "parser.yy" /* yacc.c:1646  */
    7243     { (yyval.decl) = (yyvsp[-1].decl); }
    7244 #line 7245 "Parser/parser.cc" /* yacc.c:1646  */
     8153
     8154/* Line 1806 of yacc.c  */
     8155#line 2251 "parser.yy"
     8156    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72458157    break;
    72468158
    72478159  case 581:
    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  */
     8160
     8161/* Line 1806 of yacc.c  */
     8162#line 2256 "parser.yy"
     8163    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    72518164    break;
    72528165
    72538166  case 582:
    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  */
     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) ) ); }
    72578171    break;
    72588172
    72598173  case 583:
    7260 #line 2260 "parser.yy" /* yacc.c:1646  */
    7261     { (yyval.decl) = (yyvsp[-1].decl); }
    7262 #line 7263 "Parser/parser.cc" /* yacc.c:1646  */
     8174
     8175/* Line 1806 of yacc.c  */
     8176#line 2260 "parser.yy"
     8177    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72638178    break;
    72648179
    72658180  case 584:
    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  */
     8181
     8182/* Line 1806 of yacc.c  */
     8183#line 2265 "parser.yy"
     8184    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    72698185    break;
    72708186
    72718187  case 585:
    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  */
     8188
     8189/* Line 1806 of yacc.c  */
     8190#line 2267 "parser.yy"
     8191    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    72758192    break;
    72768193
    72778194  case 586:
    7278 #line 2269 "parser.yy" /* yacc.c:1646  */
    7279     { (yyval.decl) = (yyvsp[-1].decl); }
    7280 #line 7281 "Parser/parser.cc" /* yacc.c:1646  */
     8195
     8196/* Line 1806 of yacc.c  */
     8197#line 2269 "parser.yy"
     8198    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72818199    break;
    72828200
    72838201  case 590:
    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  */
     8202
     8203/* Line 1806 of yacc.c  */
     8204#line 2284 "parser.yy"
     8205    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    72878206    break;
    72888207
    72898208  case 591:
    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  */
     8209
     8210/* Line 1806 of yacc.c  */
     8211#line 2286 "parser.yy"
     8212    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    72938213    break;
    72948214
    72958215  case 592:
    7296 #line 2288 "parser.yy" /* yacc.c:1646  */
    7297     { (yyval.decl) = (yyvsp[-1].decl); }
    7298 #line 7299 "Parser/parser.cc" /* yacc.c:1646  */
     8216
     8217/* Line 1806 of yacc.c  */
     8218#line 2288 "parser.yy"
     8219    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72998220    break;
    73008221
    73018222  case 593:
    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  */
     8223
     8224/* Line 1806 of yacc.c  */
     8225#line 2293 "parser.yy"
     8226    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    73058227    break;
    73068228
    73078229  case 594:
    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  */
     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) ) ); }
    73118234    break;
    73128235
    73138236  case 595:
    7314 #line 2297 "parser.yy" /* yacc.c:1646  */
    7315     { (yyval.decl) = (yyvsp[-1].decl); }
    7316 #line 7317 "Parser/parser.cc" /* yacc.c:1646  */
     8237
     8238/* Line 1806 of yacc.c  */
     8239#line 2297 "parser.yy"
     8240    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73178241    break;
    73188242
    73198243  case 596:
    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  */
     8244
     8245/* Line 1806 of yacc.c  */
     8246#line 2302 "parser.yy"
     8247    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    73238248    break;
    73248249
    73258250  case 597:
    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  */
     8251
     8252/* Line 1806 of yacc.c  */
     8253#line 2304 "parser.yy"
     8254    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    73298255    break;
    73308256
    73318257  case 598:
    7332 #line 2306 "parser.yy" /* yacc.c:1646  */
    7333     { (yyval.decl) = (yyvsp[-1].decl); }
    7334 #line 7335 "Parser/parser.cc" /* yacc.c:1646  */
     8258
     8259/* Line 1806 of yacc.c  */
     8260#line 2306 "parser.yy"
     8261    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73358262    break;
    73368263
    73378264  case 599:
    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  */
     8265
     8266/* Line 1806 of yacc.c  */
     8267#line 2321 "parser.yy"
     8268    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73418269    break;
    73428270
    73438271  case 601:
    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  */
     8272
     8273/* Line 1806 of yacc.c  */
     8274#line 2324 "parser.yy"
     8275    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73478276    break;
    73488277
    73498278  case 602:
    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  */
     8279
     8280/* Line 1806 of yacc.c  */
     8281#line 2326 "parser.yy"
     8282    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73538283    break;
    73548284
    73558285  case 604:
    7356 #line 2332 "parser.yy" /* yacc.c:1646  */
    7357     { (yyval.decl) = (yyvsp[-1].decl); }
    7358 #line 7359 "Parser/parser.cc" /* yacc.c:1646  */
     8286
     8287/* Line 1806 of yacc.c  */
     8288#line 2332 "parser.yy"
     8289    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73598290    break;
    73608291
    73618292  case 605:
    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  */
     8293
     8294/* Line 1806 of yacc.c  */
     8295#line 2337 "parser.yy"
     8296    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    73658297    break;
    73668298
    73678299  case 606:
    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  */
     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) ) ); }
    73718304    break;
    73728305
    73738306  case 607:
    7374 #line 2341 "parser.yy" /* yacc.c:1646  */
    7375     { (yyval.decl) = (yyvsp[-1].decl); }
    7376 #line 7377 "Parser/parser.cc" /* yacc.c:1646  */
     8307
     8308/* Line 1806 of yacc.c  */
     8309#line 2341 "parser.yy"
     8310    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73778311    break;
    73788312
    73798313  case 608:
    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  */
     8314
     8315/* Line 1806 of yacc.c  */
     8316#line 2346 "parser.yy"
     8317    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    73838318    break;
    73848319
    73858320  case 609:
    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  */
     8321
     8322/* Line 1806 of yacc.c  */
     8323#line 2348 "parser.yy"
     8324    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    73898325    break;
    73908326
    73918327  case 610:
    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  */
     8328
     8329/* Line 1806 of yacc.c  */
     8330#line 2350 "parser.yy"
     8331    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    73958332    break;
    73968333
    73978334  case 611:
    7398 #line 2352 "parser.yy" /* yacc.c:1646  */
    7399     { (yyval.decl) = (yyvsp[-1].decl); }
    7400 #line 7401 "Parser/parser.cc" /* yacc.c:1646  */
     8335
     8336/* Line 1806 of yacc.c  */
     8337#line 2352 "parser.yy"
     8338    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74018339    break;
    74028340
    74038341  case 612:
    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  */
     8342
     8343/* Line 1806 of yacc.c  */
     8344#line 2357 "parser.yy"
     8345    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    74078346    break;
    74088347
    74098348  case 613:
    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  */
     8349
     8350/* Line 1806 of yacc.c  */
     8351#line 2359 "parser.yy"
     8352    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    74138353    break;
    74148354
    74158355  case 614:
    7416 #line 2361 "parser.yy" /* yacc.c:1646  */
    7417     { (yyval.decl) = (yyvsp[-1].decl); }
    7418 #line 7419 "Parser/parser.cc" /* yacc.c:1646  */
     8356
     8357/* Line 1806 of yacc.c  */
     8358#line 2361 "parser.yy"
     8359    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74198360    break;
    74208361
    74218362  case 615:
    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  */
     8363
     8364/* Line 1806 of yacc.c  */
     8365#line 2371 "parser.yy"
     8366    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74258367    break;
    74268368
    74278369  case 617:
    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  */
     8370
     8371/* Line 1806 of yacc.c  */
     8372#line 2374 "parser.yy"
     8373    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74318374    break;
    74328375
    74338376  case 618:
    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  */
     8377
     8378/* Line 1806 of yacc.c  */
     8379#line 2376 "parser.yy"
     8380    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74378381    break;
    74388382
    74398383  case 619:
    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  */
     8384
     8385/* Line 1806 of yacc.c  */
     8386#line 2381 "parser.yy"
     8387    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    74438388    break;
    74448389
    74458390  case 620:
    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  */
     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) ) ); }
    74498395    break;
    74508396
    74518397  case 621:
    7452 #line 2385 "parser.yy" /* yacc.c:1646  */
    7453     { (yyval.decl) = (yyvsp[-1].decl); }
    7454 #line 7455 "Parser/parser.cc" /* yacc.c:1646  */
     8398
     8399/* Line 1806 of yacc.c  */
     8400#line 2385 "parser.yy"
     8401    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74558402    break;
    74568403
    74578404  case 622:
    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  */
     8405
     8406/* Line 1806 of yacc.c  */
     8407#line 2390 "parser.yy"
     8408    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    74618409    break;
    74628410
    74638411  case 623:
    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  */
     8412
     8413/* Line 1806 of yacc.c  */
     8414#line 2392 "parser.yy"
     8415    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    74678416    break;
    74688417
    74698418  case 624:
    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  */
     8419
     8420/* Line 1806 of yacc.c  */
     8421#line 2394 "parser.yy"
     8422    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    74738423    break;
    74748424
    74758425  case 625:
    7476 #line 2396 "parser.yy" /* yacc.c:1646  */
    7477     { (yyval.decl) = (yyvsp[-1].decl); }
    7478 #line 7479 "Parser/parser.cc" /* yacc.c:1646  */
     8426
     8427/* Line 1806 of yacc.c  */
     8428#line 2396 "parser.yy"
     8429    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74798430    break;
    74808431
    74818432  case 626:
    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  */
     8433
     8434/* Line 1806 of yacc.c  */
     8435#line 2401 "parser.yy"
     8436    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    74858437    break;
    74868438
    74878439  case 627:
    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  */
     8440
     8441/* Line 1806 of yacc.c  */
     8442#line 2403 "parser.yy"
     8443    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    74918444    break;
    74928445
    74938446  case 628:
    7494 #line 2405 "parser.yy" /* yacc.c:1646  */
    7495     { (yyval.decl) = (yyvsp[-1].decl); }
    7496 #line 7497 "Parser/parser.cc" /* yacc.c:1646  */
     8447
     8448/* Line 1806 of yacc.c  */
     8449#line 2405 "parser.yy"
     8450    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74978451    break;
    74988452
    74998453  case 629:
    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  */
     8454
     8455/* Line 1806 of yacc.c  */
     8456#line 2436 "parser.yy"
     8457    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75038458    break;
    75048459
    75058460  case 631:
    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  */
     8461
     8462/* Line 1806 of yacc.c  */
     8463#line 2439 "parser.yy"
     8464    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75098465    break;
    75108466
    75118467  case 632:
    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  */
     8468
     8469/* Line 1806 of yacc.c  */
     8470#line 2441 "parser.yy"
     8471    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75158472    break;
    75168473
    75178474  case 633:
    7518 #line 2446 "parser.yy" /* yacc.c:1646  */
     8475
     8476/* Line 1806 of yacc.c  */
     8477#line 2446 "parser.yy"
    75198478    {
    7520                         typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    7521                         (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     8479                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8480                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    75228481                }
    7523 #line 7524 "Parser/parser.cc" /* yacc.c:1646  */
    75248482    break;
    75258483
    75268484  case 634:
    7527 #line 2451 "parser.yy" /* yacc.c:1646  */
     8485
     8486/* Line 1806 of yacc.c  */
     8487#line 2451 "parser.yy"
    75288488    {
    7529                         typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    7530                         (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     8489                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8490                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    75318491                }
    7532 #line 7533 "Parser/parser.cc" /* yacc.c:1646  */
    75338492    break;
    75348493
    75358494  case 635:
    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  */
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2459 "parser.yy"
     8498    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    75398499    break;
    75408500
    75418501  case 636:
    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  */
     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) ) ); }
    75458506    break;
    75468507
    75478508  case 637:
    7548 #line 2463 "parser.yy" /* yacc.c:1646  */
    7549     { (yyval.decl) = (yyvsp[-1].decl); }
    7550 #line 7551 "Parser/parser.cc" /* yacc.c:1646  */
     8509
     8510/* Line 1806 of yacc.c  */
     8511#line 2463 "parser.yy"
     8512    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    75518513    break;
    75528514
    75538515  case 638:
    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  */
     8516
     8517/* Line 1806 of yacc.c  */
     8518#line 2468 "parser.yy"
     8519    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    75578520    break;
    75588521
    75598522  case 639:
    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  */
     8523
     8524/* Line 1806 of yacc.c  */
     8525#line 2470 "parser.yy"
     8526    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    75638527    break;
    75648528
    75658529  case 640:
    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  */
     8530
     8531/* Line 1806 of yacc.c  */
     8532#line 2475 "parser.yy"
     8533    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    75698534    break;
    75708535
    75718536  case 641:
    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  */
     8537
     8538/* Line 1806 of yacc.c  */
     8539#line 2477 "parser.yy"
     8540    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    75758541    break;
    75768542
    75778543  case 643:
    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  */
     8544
     8545/* Line 1806 of yacc.c  */
     8546#line 2492 "parser.yy"
     8547    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75818548    break;
    75828549
    75838550  case 644:
    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  */
     8551
     8552/* Line 1806 of yacc.c  */
     8553#line 2494 "parser.yy"
     8554    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75878555    break;
    75888556
    75898557  case 645:
    7590 #line 2499 "parser.yy" /* yacc.c:1646  */
     8558
     8559/* Line 1806 of yacc.c  */
     8560#line 2499 "parser.yy"
    75918561    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7592 #line 7593 "Parser/parser.cc" /* yacc.c:1646  */
    75938562    break;
    75948563
    75958564  case 646:
    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  */
     8565
     8566/* Line 1806 of yacc.c  */
     8567#line 2501 "parser.yy"
     8568    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    75998569    break;
    76008570
    76018571  case 647:
    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  */
     8572
     8573/* Line 1806 of yacc.c  */
     8574#line 2503 "parser.yy"
     8575    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    76058576    break;
    76068577
    76078578  case 648:
    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  */
     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) ) ); }
    76118583    break;
    76128584
    76138585  case 649:
    7614 #line 2507 "parser.yy" /* yacc.c:1646  */
    7615     { (yyval.decl) = (yyvsp[-1].decl); }
    7616 #line 7617 "Parser/parser.cc" /* yacc.c:1646  */
     8586
     8587/* Line 1806 of yacc.c  */
     8588#line 2507 "parser.yy"
     8589    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    76178590    break;
    76188591
    76198592  case 651:
    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  */
     8593
     8594/* Line 1806 of yacc.c  */
     8595#line 2513 "parser.yy"
     8596    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    76238597    break;
    76248598
    76258599  case 652:
    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  */
     8600
     8601/* Line 1806 of yacc.c  */
     8602#line 2515 "parser.yy"
     8603    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    76298604    break;
    76308605
    76318606  case 653:
    7632 #line 2517 "parser.yy" /* yacc.c:1646  */
    7633     { (yyval.decl) = (yyvsp[-1].decl); }
    7634 #line 7635 "Parser/parser.cc" /* yacc.c:1646  */
     8607
     8608/* Line 1806 of yacc.c  */
     8609#line 2517 "parser.yy"
     8610    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    76358611    break;
    76368612
    76378613  case 654:
    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  */
     8614
     8615/* Line 1806 of yacc.c  */
     8616#line 2522 "parser.yy"
     8617    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    76418618    break;
    76428619
    76438620  case 655:
    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  */
     8621
     8622/* Line 1806 of yacc.c  */
     8623#line 2524 "parser.yy"
     8624    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    76478625    break;
    76488626
    76498627  case 656:
    7650 #line 2526 "parser.yy" /* yacc.c:1646  */
    7651     { (yyval.decl) = (yyvsp[-1].decl); }
    7652 #line 7653 "Parser/parser.cc" /* yacc.c:1646  */
     8628
     8629/* Line 1806 of yacc.c  */
     8630#line 2526 "parser.yy"
     8631    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    76538632    break;
    76548633
    76558634  case 657:
    7656 #line 2532 "parser.yy" /* yacc.c:1646  */
     8635
     8636/* Line 1806 of yacc.c  */
     8637#line 2532 "parser.yy"
    76578638    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    7658 #line 7659 "Parser/parser.cc" /* yacc.c:1646  */
    76598639    break;
    76608640
    76618641  case 658:
    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  */
     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) ); }
    76658646    break;
    76668647
    76678648  case 660:
    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  */
     8649
     8650/* Line 1806 of yacc.c  */
     8651#line 2540 "parser.yy"
     8652    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    76718653    break;
    76728654
    76738655  case 661:
    7674 #line 2542 "parser.yy" /* yacc.c:1646  */
     8656
     8657/* Line 1806 of yacc.c  */
     8658#line 2542 "parser.yy"
    76758659    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    7676 #line 7677 "Parser/parser.cc" /* yacc.c:1646  */
    76778660    break;
    76788661
    76798662  case 662:
    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  */
     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 ) ); }
    76838667    break;
    76848668
    76858669  case 663:
    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  */
     8670
     8671/* Line 1806 of yacc.c  */
     8672#line 2546 "parser.yy"
     8673    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    76898674    break;
    76908675
    76918676  case 665:
    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  */
     8677
     8678/* Line 1806 of yacc.c  */
     8679#line 2561 "parser.yy"
     8680    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    76958681    break;
    76968682
    76978683  case 666:
    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  */
     8684
     8685/* Line 1806 of yacc.c  */
     8686#line 2563 "parser.yy"
     8687    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    77018688    break;
    77028689
    77038690  case 667:
    7704 #line 2568 "parser.yy" /* yacc.c:1646  */
     8691
     8692/* Line 1806 of yacc.c  */
     8693#line 2568 "parser.yy"
    77058694    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7706 #line 7707 "Parser/parser.cc" /* yacc.c:1646  */
    77078695    break;
    77088696
    77098697  case 668:
    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  */
     8698
     8699/* Line 1806 of yacc.c  */
     8700#line 2570 "parser.yy"
     8701    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    77138702    break;
    77148703
    77158704  case 669:
    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  */
     8705
     8706/* Line 1806 of yacc.c  */
     8707#line 2572 "parser.yy"
     8708    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    77198709    break;
    77208710
    77218711  case 670:
    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  */
     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) ) ); }
    77258716    break;
    77268717
    77278718  case 671:
    7728 #line 2576 "parser.yy" /* yacc.c:1646  */
    7729     { (yyval.decl) = (yyvsp[-1].decl); }
    7730 #line 7731 "Parser/parser.cc" /* yacc.c:1646  */
     8719
     8720/* Line 1806 of yacc.c  */
     8721#line 2576 "parser.yy"
     8722    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    77318723    break;
    77328724
    77338725  case 673:
    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  */
     8726
     8727/* Line 1806 of yacc.c  */
     8728#line 2582 "parser.yy"
     8729    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    77378730    break;
    77388731
    77398732  case 674:
    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  */
     8733
     8734/* Line 1806 of yacc.c  */
     8735#line 2584 "parser.yy"
     8736    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    77438737    break;
    77448738
    77458739  case 675:
    7746 #line 2586 "parser.yy" /* yacc.c:1646  */
    7747     { (yyval.decl) = (yyvsp[-1].decl); }
    7748 #line 7749 "Parser/parser.cc" /* yacc.c:1646  */
     8740
     8741/* Line 1806 of yacc.c  */
     8742#line 2586 "parser.yy"
     8743    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    77498744    break;
    77508745
    77518746  case 676:
    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  */
     8747
     8748/* Line 1806 of yacc.c  */
     8749#line 2591 "parser.yy"
     8750    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    77558751    break;
    77568752
    77578753  case 677:
    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  */
     8754
     8755/* Line 1806 of yacc.c  */
     8756#line 2593 "parser.yy"
     8757    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    77618758    break;
    77628759
    77638760  case 678:
    7764 #line 2595 "parser.yy" /* yacc.c:1646  */
    7765     { (yyval.decl) = (yyvsp[-1].decl); }
    7766 #line 7767 "Parser/parser.cc" /* yacc.c:1646  */
     8761
     8762/* Line 1806 of yacc.c  */
     8763#line 2595 "parser.yy"
     8764    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    77678765    break;
    77688766
    77698767  case 680:
    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  */
     8768
     8769/* Line 1806 of yacc.c  */
     8770#line 2602 "parser.yy"
     8771    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    77738772    break;
    77748773
    77758774  case 682:
    7776 #line 2613 "parser.yy" /* yacc.c:1646  */
     8775
     8776/* Line 1806 of yacc.c  */
     8777#line 2613 "parser.yy"
    77778778    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    7778 #line 7779 "Parser/parser.cc" /* yacc.c:1646  */
    77798779    break;
    77808780
    77818781  case 683:
    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  */
     8782
     8783/* Line 1806 of yacc.c  */
     8784#line 2616 "parser.yy"
     8785    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    77858786    break;
    77868787
    77878788  case 684:
    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  */
     8789
     8790/* Line 1806 of yacc.c  */
     8791#line 2618 "parser.yy"
     8792    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    77918793    break;
    77928794
    77938795  case 685:
    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  */
     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 ); }
    77978800    break;
    77988801
    77998802  case 686:
    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  */
     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 ); }
    78038807    break;
    78048808
    78058809  case 687:
    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  */
     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 ); }
    78098814    break;
    78108815
    78118816  case 689:
    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  */
     8817
     8818/* Line 1806 of yacc.c  */
     8819#line 2639 "parser.yy"
     8820    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78158821    break;
    78168822
    78178823  case 690:
    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  */
     8824
     8825/* Line 1806 of yacc.c  */
     8826#line 2641 "parser.yy"
     8827    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78218828    break;
    78228829
    78238830  case 691:
    7824 #line 2646 "parser.yy" /* yacc.c:1646  */
     8831
     8832/* Line 1806 of yacc.c  */
     8833#line 2646 "parser.yy"
    78258834    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7826 #line 7827 "Parser/parser.cc" /* yacc.c:1646  */
    78278835    break;
    78288836
    78298837  case 692:
    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  */
     8838
     8839/* Line 1806 of yacc.c  */
     8840#line 2648 "parser.yy"
     8841    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    78338842    break;
    78348843
    78358844  case 693:
    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  */
     8845
     8846/* Line 1806 of yacc.c  */
     8847#line 2650 "parser.yy"
     8848    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    78398849    break;
    78408850
    78418851  case 694:
    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  */
     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) ) ); }
    78458856    break;
    78468857
    78478858  case 695:
    7848 #line 2654 "parser.yy" /* yacc.c:1646  */
    7849     { (yyval.decl) = (yyvsp[-1].decl); }
    7850 #line 7851 "Parser/parser.cc" /* yacc.c:1646  */
     8859
     8860/* Line 1806 of yacc.c  */
     8861#line 2654 "parser.yy"
     8862    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78518863    break;
    78528864
    78538865  case 697:
    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  */
     8866
     8867/* Line 1806 of yacc.c  */
     8868#line 2660 "parser.yy"
     8869    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    78578870    break;
    78588871
    78598872  case 698:
    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  */
     8873
     8874/* Line 1806 of yacc.c  */
     8875#line 2662 "parser.yy"
     8876    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    78638877    break;
    78648878
    78658879  case 699:
    7866 #line 2664 "parser.yy" /* yacc.c:1646  */
    7867     { (yyval.decl) = (yyvsp[-1].decl); }
    7868 #line 7869 "Parser/parser.cc" /* yacc.c:1646  */
     8880
     8881/* Line 1806 of yacc.c  */
     8882#line 2664 "parser.yy"
     8883    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78698884    break;
    78708885
    78718886  case 700:
    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  */
     8887
     8888/* Line 1806 of yacc.c  */
     8889#line 2669 "parser.yy"
     8890    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    78758891    break;
    78768892
    78778893  case 701:
    7878 #line 2671 "parser.yy" /* yacc.c:1646  */
    7879     { (yyval.decl) = (yyvsp[-1].decl); }
    7880 #line 7881 "Parser/parser.cc" /* yacc.c:1646  */
     8894
     8895/* Line 1806 of yacc.c  */
     8896#line 2671 "parser.yy"
     8897    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78818898    break;
    78828899
    78838900  case 704:
    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  */
     8901
     8902/* Line 1806 of yacc.c  */
     8903#line 2681 "parser.yy"
     8904    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78878905    break;
    78888906
    78898907  case 707:
    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  */
     8908
     8909/* Line 1806 of yacc.c  */
     8910#line 2691 "parser.yy"
     8911    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    78938912    break;
    78948913
    78958914  case 708:
    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  */
     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) ) ); }
    78998919    break;
    79008920
    79018921  case 709:
    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  */
     8922
     8923/* Line 1806 of yacc.c  */
     8924#line 2695 "parser.yy"
     8925    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    79058926    break;
    79068927
    79078928  case 710:
    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  */
     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) ) ); }
    79118933    break;
    79128934
    79138935  case 711:
    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  */
     8936
     8937/* Line 1806 of yacc.c  */
     8938#line 2699 "parser.yy"
     8939    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    79178940    break;
    79188941
    79198942  case 712:
    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  */
     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) ) ); }
    79238947    break;
    79248948
    79258949  case 713:
    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  */
     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 ) ); }
    79298954    break;
    79308955
    79318956  case 714:
    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  */
     8957
     8958/* Line 1806 of yacc.c  */
     8959#line 2710 "parser.yy"
     8960    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    79358961    break;
    79368962
    79378963  case 715:
    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  */
     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 ) ); }
    79418968    break;
    79428969
    79438970  case 716:
    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  */
     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) ); }
    79478975    break;
    79488976
    79498977  case 717:
    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  */
     8978
     8979/* Line 1806 of yacc.c  */
     8980#line 2716 "parser.yy"
     8981    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    79538982    break;
    79548983
    79558984  case 718:
    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  */
     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 ) ); }
    79598989    break;
    79608990
    79618991  case 719:
    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  */
     8992
     8993/* Line 1806 of yacc.c  */
     8994#line 2720 "parser.yy"
     8995    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    79658996    break;
    79668997
    79678998  case 720:
    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  */
     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 ) ); }
    79719003    break;
    79729004
    79739005  case 721:
    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  */
     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) ); }
    79779010    break;
    79789011
    79799012  case 722:
    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  */
     9013
     9014/* Line 1806 of yacc.c  */
     9015#line 2726 "parser.yy"
     9016    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    79839017    break;
    79849018
    79859019  case 723:
    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  */
     9020
     9021/* Line 1806 of yacc.c  */
     9022#line 2731 "parser.yy"
     9023    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    79899024    break;
    79909025
    79919026  case 724:
    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  */
     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 ); }
    79959031    break;
    79969032
    79979033  case 725:
    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  */
     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 ); }
    80019038    break;
    80029039
    80039040  case 726:
    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  */
     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 ); }
    80079045    break;
    80089046
    80099047  case 728:
    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  */
     9048
     9049/* Line 1806 of yacc.c  */
     9050#line 2767 "parser.yy"
     9051    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    80139052    break;
    80149053
    80159054  case 732:
    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  */
     9055
     9056/* Line 1806 of yacc.c  */
     9057#line 2778 "parser.yy"
     9058    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    80199059    break;
    80209060
    80219061  case 733:
    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  */
     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) ) ); }
    80259066    break;
    80269067
    80279068  case 734:
    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  */
     9069
     9070/* Line 1806 of yacc.c  */
     9071#line 2782 "parser.yy"
     9072    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    80319073    break;
    80329074
    80339075  case 735:
    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  */
     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) ) ); }
    80379080    break;
    80389081
    80399082  case 736:
    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  */
     9083
     9084/* Line 1806 of yacc.c  */
     9085#line 2786 "parser.yy"
     9086    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    80439087    break;
    80449088
    80459089  case 737:
    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  */
     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) ) ); }
    80499094    break;
    80509095
    80519096  case 738:
    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  */
     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 ) ); }
    80559101    break;
    80569102
    80579103  case 739:
    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  */
     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 ) ); }
    80619108    break;
    80629109
    80639110  case 740:
    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  */
     9111
     9112/* Line 1806 of yacc.c  */
     9113#line 2799 "parser.yy"
     9114    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    80679115    break;
    80689116
    80699117  case 741:
    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  */
     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 ) ); }
    80739122    break;
    80749123
    80759124  case 742:
    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  */
     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 ) ); }
    80799129    break;
    80809130
    80819131  case 743:
    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  */
     9132
     9133/* Line 1806 of yacc.c  */
     9134#line 2805 "parser.yy"
     9135    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    80859136    break;
    80869137
    80879138  case 744:
    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  */
     9139
     9140/* Line 1806 of yacc.c  */
     9141#line 2810 "parser.yy"
     9142    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    80919143    break;
    80929144
    80939145  case 745:
    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  */
     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 ); }
    80979150    break;
    80989151
    80999152  case 746:
    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  */
     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 ); }
    81039157    break;
    81049158
    81059159  case 747:
    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  */
     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 ); }
    81099164    break;
    81109165
    81119166  case 750:
    8112 #line 2843 "parser.yy" /* yacc.c:1646  */
     9167
     9168/* Line 1806 of yacc.c  */
     9169#line 2843 "parser.yy"
    81139170    { (yyval.en) = 0; }
    8114 #line 8115 "Parser/parser.cc" /* yacc.c:1646  */
    81159171    break;
    81169172
    81179173  case 751:
    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  */
     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"
    81259184      default: break;
    81269185    }
     
    81449203  *++yyvsp = yyval;
    81459204
    8146   /* Now 'shift' the result of the reduction.  Determine what state
     9205  /* Now `shift' the result of the reduction.  Determine what state
    81479206     that goes to, based on the state we popped back to and the rule
    81489207     number reduced by.  */
     
    81599218
    81609219
    8161 /*--------------------------------------.
    8162 | yyerrlab -- here on detecting error. |
    8163 `--------------------------------------*/
     9220/*------------------------------------.
     9221| yyerrlab -- here on detecting error |
     9222`------------------------------------*/
    81649223yyerrlab:
    81659224  /* Make sure we have latest lookahead translation.  See comments at
     
    82129271    {
    82139272      /* If just tried and failed to reuse lookahead token after an
    8214         error, discard it.  */
     9273        error, discard it.  */
    82159274
    82169275      if (yychar <= YYEOF)
    8217         {
    8218           /* Return failure if at end of input.  */
    8219           if (yychar == YYEOF)
    8220             YYABORT;
    8221         }
     9276        {
     9277          /* Return failure if at end of input.  */
     9278          if (yychar == YYEOF)
     9279            YYABORT;
     9280        }
    82229281      else
    8223         {
    8224           yydestruct ("Error: discarding",
    8225                       yytoken, &yylval);
    8226           yychar = YYEMPTY;
    8227         }
     9282        {
     9283          yydestruct ("Error: discarding",
     9284                      yytoken, &yylval);
     9285          yychar = YYEMPTY;
     9286        }
    82289287    }
    82299288
     
    82449303     goto yyerrorlab;
    82459304
    8246   /* Do not reclaim the symbols of the rule whose action triggered
     9305  /* Do not reclaim the symbols of the rule which action triggered
    82479306     this YYERROR.  */
    82489307  YYPOPSTACK (yylen);
     
    82579316`-------------------------------------------------------------*/
    82589317yyerrlab1:
    8259   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
     9318  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
    82609319
    82619320  for (;;)
     
    82639322      yyn = yypact[yystate];
    82649323      if (!yypact_value_is_default (yyn))
    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         }
     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        }
    82749333
    82759334      /* Pop the current state because it cannot handle the error token.  */
    82769335      if (yyssp == yyss)
    8277         YYABORT;
     9336        YYABORT;
    82789337
    82799338
    82809339      yydestruct ("Error: popping",
    8281                   yystos[yystate], yyvsp);
     9340                  yystos[yystate], yyvsp);
    82829341      YYPOPSTACK (1);
    82839342      yystate = *yyssp;
     
    82859344    }
    82869345
    8287   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    82889346  *++yyvsp = yylval;
    8289   YY_IGNORE_MAYBE_UNINITIALIZED_END
    82909347
    82919348
     
    83119368  goto yyreturn;
    83129369
    8313 #if !defined yyoverflow || YYERROR_VERBOSE
     9370#if !defined(yyoverflow) || YYERROR_VERBOSE
    83149371/*-------------------------------------------------.
    83159372| yyexhaustedlab -- memory exhaustion comes here.  |
     
    83309387                  yytoken, &yylval);
    83319388    }
    8332   /* Do not reclaim the symbols of the rule whose action triggered
     9389  /* Do not reclaim the symbols of the rule which action triggered
    83339390     this YYABORT or YYACCEPT.  */
    83349391  YYPOPSTACK (yylen);
     
    83379394    {
    83389395      yydestruct ("Cleanup: popping",
    8339                   yystos[*yyssp], yyvsp);
     9396                  yystos[*yyssp], yyvsp);
    83409397      YYPOPSTACK (1);
    83419398    }
     
    83489405    YYSTACK_FREE (yymsg);
    83499406#endif
    8350   return yyresult;
     9407  /* Make sure YYID is used.  */
     9408  return YYID (yyresult);
    83519409}
    8352 #line 2848 "parser.yy" /* yacc.c:1906  */
     9410
     9411
     9412
     9413/* Line 2067 of yacc.c  */
     9414#line 2848 "parser.yy"
    83539415
    83549416// ----end of grammar----
     
    83699431// compile-command: "make install" //
    83709432// End: //
     9433
  • src/Parser/parser.yy

    r50c5cf3 r1eba452  
    389389                {
    390390                        Token fn;
    391                         fn.str = new std::string( "?{}" ); // location undefined
    392                         $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) );
     391                        fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
     392                        $$ = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) ) );
    393393                }
    394394        ;
  • src/ResolvExpr/AlternativeFinder.cc

    r50c5cf3 r1eba452  
    197197        }
    198198
    199         void AlternativeFinder::find( Expression *expr, bool adjust ) {
     199        void AlternativeFinder::find( Expression *expr, bool adjust, bool prune ) {
    200200                expr->accept( *this );
    201201                if ( alternatives.empty() ) {
     
    207207                        }
    208208                }
    209                 PRINT(
    210                         std::cerr << "alternatives before prune:" << std::endl;
    211                         printAlts( alternatives, std::cerr );
    212                 )
    213                 AltList::iterator oldBegin = alternatives.begin();
    214                 pruneAlternatives( alternatives.begin(), alternatives.end(), front_inserter( alternatives ), indexer );
    215                 if ( alternatives.begin() == oldBegin ) {
    216                         std::ostringstream stream;
    217                         stream << "Can't choose between alternatives for expression ";
    218                         expr->print( stream );
    219                         stream << "Alternatives are:";
    220                         AltList winners;
    221                         findMinCost( alternatives.begin(), alternatives.end(), back_inserter( winners ) );
    222                         printAlts( winners, stream, 8 );
    223                         throw SemanticError( stream.str() );
    224                 }
    225                 alternatives.erase( oldBegin, alternatives.end() );
    226                 PRINT(
    227                         std::cerr << "there are " << alternatives.size() << " alternatives after elimination" << std::endl;
    228                 )
     209                if ( prune ) {
     210                        PRINT(
     211                                std::cerr << "alternatives before prune:" << std::endl;
     212                                printAlts( alternatives, std::cerr );
     213                        )
     214                        AltList::iterator oldBegin = alternatives.begin();
     215                        pruneAlternatives( alternatives.begin(), alternatives.end(), front_inserter( alternatives ), indexer );
     216                        if ( alternatives.begin() == oldBegin ) {
     217                                std::ostringstream stream;
     218                                stream << "Can't choose between alternatives for expression ";
     219                                expr->print( stream );
     220                                stream << "Alternatives are:";
     221                                AltList winners;
     222                                findMinCost( alternatives.begin(), alternatives.end(), back_inserter( winners ) );
     223                                printAlts( winners, stream, 8 );
     224                                throw SemanticError( stream.str() );
     225                        }
     226                        alternatives.erase( oldBegin, alternatives.end() );
     227                        PRINT(
     228                                std::cerr << "there are " << alternatives.size() << " alternatives after elimination" << std::endl;
     229                        )
     230                }
    229231
    230232                // Central location to handle gcc extension keyword for all expression types.
     
    234236        }
    235237
    236         void AlternativeFinder::findWithAdjustment( Expression *expr ) {
    237                 find( expr, true );
     238        void AlternativeFinder::findWithAdjustment( Expression *expr, bool prune ) {
     239                find( expr, true, prune );
    238240        }
    239241
    240242        template< typename StructOrUnionType >
    241         void AlternativeFinder::addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const std::string &name ) {
     243        void AlternativeFinder::addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const TypeEnvironment & env, const std::string &name ) {
    242244                std::list< Declaration* > members;
    243245                aggInst->lookup( name, members );
     
    760762                        if ( agg->expr->get_results().size() == 1 ) {
    761763                                if ( StructInstType *structInst = dynamic_cast< StructInstType* >( agg->expr->get_results().front() ) ) {
    762                                         addAggMembers( structInst, agg->expr, agg->cost, memberExpr->get_member() );
     764                                        addAggMembers( structInst, agg->expr, agg->cost, agg->env, memberExpr->get_member() );
    763765                                } else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( agg->expr->get_results().front() ) ) {
    764                                         addAggMembers( unionInst, agg->expr, agg->cost, memberExpr->get_member() );
     766                                        addAggMembers( unionInst, agg->expr, agg->cost, agg->env, memberExpr->get_member() );
    765767                                } // if
    766768                        } // if
     
    789791                        renameTypes( alternatives.back().expr );
    790792                        if ( StructInstType *structInst = dynamic_cast< StructInstType* >( (*i)->get_type() ) ) {
    791                                 addAggMembers( structInst, &newExpr, Cost( 0, 0, 1 ), "" );
     793                                addAggMembers( structInst, &newExpr, Cost( 0, 0, 1 ), env, "" );
    792794                        } else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( (*i)->get_type() ) ) {
    793                                 addAggMembers( unionInst, &newExpr, Cost( 0, 0, 1 ), "" );
     795                                addAggMembers( unionInst, &newExpr, Cost( 0, 0, 1 ), env, "" );
    794796                        } // if
    795797                } // for
     
    10121014                alternatives.push_back( Alternative( impCpCtorExpr->clone(), env, Cost::zero ) );
    10131015        }
     1016
     1017        void AlternativeFinder::visit( ConstructorExpr * ctorExpr ) {
     1018                AlternativeFinder finder( indexer, env );
     1019                // don't prune here, since it's guaranteed all alternatives will have the same type
     1020                // (giving the alternatives different types is half of the point of ConstructorExpr nodes)
     1021                finder.findWithAdjustment( ctorExpr->get_callExpr(), false );
     1022                for ( Alternative & alt : finder.alternatives ) {
     1023                        alternatives.push_back( Alternative( new ConstructorExpr( alt.expr->clone() ), alt.env, alt.cost ) );
     1024                }
     1025        }
    10141026} // namespace ResolvExpr
    10151027
  • src/ResolvExpr/AlternativeFinder.h

    r50c5cf3 r1eba452  
    2929          public:
    3030                AlternativeFinder( const SymTab::Indexer &indexer, const TypeEnvironment &env );
    31                 void find( Expression *expr, bool adjust = false );
     31                void find( Expression *expr, bool adjust = false, bool prune = true );
    3232                /// Calls find with the adjust flag set; adjustment turns array and function types into equivalent pointer types
    33                 void findWithAdjustment( Expression *expr );
     33                void findWithAdjustment( Expression *expr, bool prune = true );
    3434                AltList &get_alternatives() { return alternatives; }
    3535
     
    6666                virtual void visit( TupleExpr *tupleExpr );
    6767                virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr );
     68                virtual void visit( ConstructorExpr * ctorExpr );
    6869          public:  // xxx - temporary hack - should make Tuples::TupleAssignment a friend
    6970                template< typename InputIterator, typename OutputIterator >
     
    7273          private:
    7374                /// Adds alternatives for member expressions, given the aggregate, conversion cost for that aggregate, and name of the member
    74                 template< typename StructOrUnionType > void addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const std::string &name );
     75                template< typename StructOrUnionType > void addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const TypeEnvironment & env, const std::string &name );
    7576                /// Adds alternatives for offsetof expressions, given the base type and name of the member
    7677                template< typename StructOrUnionType > void addOffsetof( StructOrUnionType *aggInst, const std::string &name );
  • src/SymTab/Validate.cc

    r50c5cf3 r1eba452  
    6060#include "ResolvExpr/typeops.h"
    6161#include <algorithm>
     62#include "InitTweak/InitTweak.h"
    6263
    6364#define debugPrint( x ) if ( doDebug ) { std::cout << x; }
     
    171172        };
    172173
    173         class VerifyCtorDtor : public Visitor {
     174        class VerifyCtorDtorAssign : public Visitor {
    174175        public:
    175                 /// ensure that constructors and destructors have at least one
    176                 /// parameter, the first of which must be a pointer, and no
     176                /// ensure that constructors, destructors, and assignment have at least one
     177                /// parameter, the first of which must be a pointer, and that ctor/dtors have no
    177178                /// return values.
    178179                static void verify( std::list< Declaration * > &translationUnit );
     
    202203                compoundliteral.mutateDeclarationList( translationUnit );
    203204                acceptAll( translationUnit, pass3 );
    204                 VerifyCtorDtor::verify( translationUnit );
     205                VerifyCtorDtorAssign::verify( translationUnit );
    205206        }
    206207
     
    687688        }
    688689
    689         void VerifyCtorDtor::verify( std::list< Declaration * > & translationUnit ) {
    690                 VerifyCtorDtor verifier;
     690        void VerifyCtorDtorAssign::verify( std::list< Declaration * > & translationUnit ) {
     691                VerifyCtorDtorAssign verifier;
    691692                acceptAll( translationUnit, verifier );
    692693        }
    693694
    694         void VerifyCtorDtor::visit( FunctionDecl * funcDecl ) {
     695        void VerifyCtorDtorAssign::visit( FunctionDecl * funcDecl ) {
    695696                FunctionType * funcType = funcDecl->get_functionType();
    696697                std::list< DeclarationWithType * > &returnVals = funcType->get_returnVals();
    697698                std::list< DeclarationWithType * > &params = funcType->get_parameters();
    698699
    699                 if ( funcDecl->get_name() == "?{}" || funcDecl->get_name() == "^?{}" ) {
     700                if ( InitTweak::isCtorDtorAssign( funcDecl->get_name() ) ) {
    700701                        if ( params.size() == 0 ) {
    701                                 throw SemanticError( "Constructors and destructors require at least one parameter ", funcDecl );
     702                                throw SemanticError( "Constructors, destructors, and assignment functions require at least one parameter ", funcDecl );
    702703                        }
    703704                        if ( ! dynamic_cast< PointerType * >( params.front()->get_type() ) ) {
    704                                 throw SemanticError( "First parameter of a constructor or destructor must be a pointer ", funcDecl );
     705                                throw SemanticError( "First parameter of a constructor, destructor, or assignment function must be a pointer ", funcDecl );
    705706                        }
    706                         if ( returnVals.size() != 0 ) {
     707                        if ( InitTweak::isCtorDtor( funcDecl->get_name() ) && returnVals.size() != 0 ) {
    707708                                throw SemanticError( "Constructors and destructors cannot have explicit return values ", funcDecl );
    708709                        }
  • src/SynTree/Expression.cc

    r50c5cf3 r1eba452  
    2828#include "TypeSubstitution.h"
    2929#include "Common/utility.h"
     30#include "InitTweak/InitTweak.h"
    3031
    3132
     
    493494
    494495void ImplicitCopyCtorExpr::print( std::ostream &os, int indent ) const {
    495         os << std::string( indent, ' ' ) << "Implicit Copy Constructor Expression: " << std::endl;
     496        os << "Implicit Copy Constructor Expression: " << std::endl;
    496497        assert( callExpr );
    497498        callExpr->print( os, indent + 2 );
     
    503504}
    504505
     506
     507ConstructorExpr::ConstructorExpr( Expression * callExpr ) : callExpr( callExpr ) {
     508        // allow resolver to type a constructor used as an expression as if it has the same type as its first argument
     509        assert( callExpr );
     510        Expression * arg = InitTweak::getCallArg( callExpr, 0 );
     511        assert( arg );
     512        cloneAll( arg->get_results(), results );
     513}
     514
     515ConstructorExpr::ConstructorExpr( const ConstructorExpr & other ) : Expression( other ), callExpr( maybeClone( other.callExpr ) ) {
     516}
     517
     518ConstructorExpr::~ConstructorExpr() {
     519        delete callExpr;
     520}
     521
     522void ConstructorExpr::print( std::ostream &os, int indent ) const {
     523        os <<  "Constructor Expression: " << std::endl;
     524        assert( callExpr );
     525        os << std::string( indent+2, ' ' );
     526        callExpr->print( os, indent + 2 );
     527        Expression::print( os, indent );
     528}
     529
     530
     531CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : type( type ), initializer( initializer ) {
     532        add_result( type->clone() );
     533}
     534
     535CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), type( maybeClone( other.type ) ), initializer( maybeClone( other.initializer ) ) {}
     536
     537CompoundLiteralExpr::~CompoundLiteralExpr() {
     538        delete initializer;
     539        delete type;
     540}
     541
     542void CompoundLiteralExpr::print( std::ostream &os, int indent ) const {
     543        os << "Compound Literal Expression: " << std::endl;
     544        if ( type ) type->print( os, indent + 2 );
     545        if ( initializer ) initializer->print( os, indent + 2 );
     546}
     547
    505548UntypedValofExpr::UntypedValofExpr( const UntypedValofExpr & other ) : Expression( other ), body ( maybeClone( other.body ) ) {}
    506549
     
    511554        if ( get_body() != 0 )
    512555                get_body()->print( os, indent + 2 );
    513 }
    514 
    515 
    516 CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : type( type ), initializer( initializer ) {
    517         add_result( type->clone() );
    518 }
    519 
    520 CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), type( maybeClone( other.type ) ), initializer( maybeClone( other.initializer ) ) {}
    521 
    522 CompoundLiteralExpr::~CompoundLiteralExpr() {
    523         delete initializer;
    524         delete type;
    525 }
    526 
    527 void CompoundLiteralExpr::print( std::ostream &os, int indent ) const {
    528         os << "Compound Literal Expression: " << std::endl;
    529         if ( type ) type->print( os, indent + 2 );
    530         if ( initializer ) initializer->print( os, indent + 2 );
    531556}
    532557
  • src/SynTree/Expression.h

    r50c5cf3 r1eba452  
    595595};
    596596
     597/// ConstructorExpr represents the use of a constructor in an expression context, e.g. int * x = malloc() { 5 };
     598class ConstructorExpr : public Expression {
     599public:
     600        ConstructorExpr( Expression * callExpr );
     601        ConstructorExpr( const ConstructorExpr & other );
     602        ~ConstructorExpr();
     603
     604        Expression *get_callExpr() const { return callExpr; }
     605        void set_callExpr( Expression *newValue ) { callExpr = newValue; }
     606
     607        virtual ConstructorExpr *clone() const { return new ConstructorExpr( *this ); }
     608        virtual void accept( Visitor &v ) { v.visit( this ); }
     609        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     610        virtual void print( std::ostream &os, int indent = 0 ) const;
     611private:
     612        Expression * callExpr;
     613};
     614
     615/// CompoundLiteralExpr represents a C99 'compound literal'
     616class CompoundLiteralExpr : public Expression {
     617  public:
     618        CompoundLiteralExpr( Type * type, Initializer * initializer );
     619        CompoundLiteralExpr( const CompoundLiteralExpr &other );
     620        ~CompoundLiteralExpr();
     621
     622        Type * get_type() const { return type; }
     623        void set_type( Type * t ) { type = t; }
     624
     625        Initializer * get_initializer() const { return initializer; }
     626        void set_initializer( Initializer * i ) { initializer = i; }
     627
     628        virtual CompoundLiteralExpr *clone() const { return new CompoundLiteralExpr( *this ); }
     629        virtual void accept( Visitor &v ) { v.visit( this ); }
     630        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     631        virtual void print( std::ostream &os, int indent = 0 ) const;
     632  private:
     633        Type * type;
     634        Initializer * initializer;
     635};
     636
    597637/// ValofExpr represents a GCC 'lambda expression'
    598638class UntypedValofExpr : public Expression {
     
    613653};
    614654
    615 /// CompoundLiteralExpr represents a C99 'compound literal'
    616 class CompoundLiteralExpr : public Expression {
    617   public:
    618         CompoundLiteralExpr( Type * type, Initializer * initializer );
    619         CompoundLiteralExpr( const CompoundLiteralExpr &other );
    620         ~CompoundLiteralExpr();
    621 
    622         Type * get_type() const { return type; }
    623         void set_type( Type * t ) { type = t; }
    624 
    625         Initializer * get_initializer() const { return initializer; }
    626         void set_initializer( Initializer * i ) { initializer = i; }
    627 
    628         virtual CompoundLiteralExpr *clone() const { return new CompoundLiteralExpr( *this ); }
    629         virtual void accept( Visitor &v ) { v.visit( this ); }
    630         virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    631         virtual void print( std::ostream &os, int indent = 0 ) const;
    632   private:
    633         Type * type;
    634         Initializer * initializer;
    635 };
    636 
     655/// RangeExpr represents a range e.g. '3 ... 5' or '1~10'
    637656class RangeExpr : public Expression {
    638657  public:
  • src/SynTree/Mutator.cc

    r50c5cf3 r1eba452  
    339339}
    340340
    341 Expression *Mutator::mutate( UntypedValofExpr *valofExpr ) {
    342         mutateAll( valofExpr->get_results(), *this );
    343         return valofExpr;
     341Expression* Mutator::mutate( ConstructorExpr *ctorExpr ) {
     342        mutateAll( ctorExpr->get_results(), *this );
     343        ctorExpr->set_callExpr( maybeMutate( ctorExpr->get_callExpr(), *this ) );
     344        return ctorExpr;
    344345}
    345346
     
    349350        compLitExpr->set_initializer( maybeMutate( compLitExpr->get_initializer(), *this ) );
    350351        return compLitExpr;
     352}
     353
     354Expression *Mutator::mutate( UntypedValofExpr *valofExpr ) {
     355        mutateAll( valofExpr->get_results(), *this );
     356        return valofExpr;
    351357}
    352358
  • src/SynTree/Mutator.h

    r50c5cf3 r1eba452  
    7676        virtual Expression* mutate( AsmExpr *asmExpr );
    7777        virtual Expression* mutate( ImplicitCopyCtorExpr *impCpCtorExpr );
     78        virtual Expression* mutate( ConstructorExpr *ctorExpr );
     79        virtual Expression* mutate( CompoundLiteralExpr *compLitExpr );
    7880        virtual Expression* mutate( UntypedValofExpr *valofExpr );
    79         virtual Expression* mutate( CompoundLiteralExpr *compLitExpr );
    8081        virtual Expression* mutate( RangeExpr *rangeExpr );
    8182
  • src/SynTree/SynTree.h

    r50c5cf3 r1eba452  
    8181class AsmExpr;
    8282class ImplicitCopyCtorExpr;
     83class ConstructorExpr;
     84class CompoundLiteralExpr;
    8385class UntypedValofExpr;
    84 class CompoundLiteralExpr;
    8586class RangeExpr;
    8687
  • src/SynTree/Visitor.cc

    r50c5cf3 r1eba452  
    287287}
    288288
    289 void Visitor::visit( UntypedValofExpr *valofExpr ) {
    290         acceptAll( valofExpr->get_results(), *this );
    291         maybeAccept( valofExpr->get_body(), *this );
     289void Visitor::visit( ConstructorExpr * ctorExpr ) {
     290        acceptAll( ctorExpr->get_results(), *this );
     291        maybeAccept( ctorExpr->get_callExpr(), *this );
    292292}
    293293
     
    296296        maybeAccept( compLitExpr->get_type(), *this );
    297297        maybeAccept( compLitExpr->get_initializer(), *this );
     298}
     299
     300void Visitor::visit( UntypedValofExpr *valofExpr ) {
     301        acceptAll( valofExpr->get_results(), *this );
     302        maybeAccept( valofExpr->get_body(), *this );
    298303}
    299304
  • src/SynTree/Visitor.h

    r50c5cf3 r1eba452  
    7676        virtual void visit( AsmExpr *asmExpr );
    7777        virtual void visit( ImplicitCopyCtorExpr *impCpCtorExpr );
     78        virtual void visit( ConstructorExpr * ctorExpr );
     79        virtual void visit( CompoundLiteralExpr *compLitExpr );
    7880        virtual void visit( UntypedValofExpr *valofExpr );
    79         virtual void visit( CompoundLiteralExpr *compLitExpr );
    8081        virtual void visit( RangeExpr *rangeExpr );
    8182
  • src/include/assert.h

    r50c5cf3 r1eba452  
    2222#define assertf(expr, fmt, ...) ((expr) ? static_cast<void>(0) : __assert_fail_f(__VSTRINGIFY__(expr), __FILE__, __LINE__, __PRETTY_FUNCTION__, fmt, ## __VA_ARGS__ ))
    2323
    24 void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... );
     24void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) __attribute__((noreturn));
    2525
    2626template<typename T, typename U>
  • src/libcfa/prelude.cf

    r50c5cf3 r1eba452  
    636636
    637637// default ctor
    638 void    ?{}( _Bool * ),                         ?{}( volatile _Bool * );
    639 void    ?{}( char * ),  ?{}( volatile char * );
    640 void    ?{}( unsigned char * ), ?{}( volatile unsigned char * );
    641 void    ?{}( char signed * ),                   ?{}( volatile char signed * );
    642 void    ?{}( int short * ),                             ?{}( volatile int short * );
    643 void    ?{}( int short unsigned * ),    ?{}( volatile int short unsigned * );
    644 void    ?{}( signed int * ),                    ?{}( volatile signed int * );
    645 void    ?{}( unsigned int * ),                  ?{}( volatile unsigned int * );
    646 void    ?{}( signed long int * ),               ?{}( volatile signed long int * );
    647 void    ?{}( unsigned long int * ),             ?{}( volatile unsigned long int * );
    648 void    ?{}( signed long long int * ),          ?{}( volatile signed long long int * );
    649 void    ?{}( unsigned long long int * ),        ?{}( volatile unsigned long long int * );
    650 void    ?{}( float * ),                         ?{}( volatile float * );
    651 void    ?{}( double * ),                        ?{}( volatile double * );
    652 void    ?{}( long double * ),                   ?{}( volatile long double * );
    653 void    ?{}( float _Complex * ),                ?{}( volatile float _Complex * );
    654 void    ?{}( double _Complex * ),               ?{}( volatile double _Complex * );
    655 void    ?{}( long double _Complex * ),          ?{}( volatile long double _Complex * );
     638void    ?{}( _Bool * );
     639void    ?{}( char * );
     640void    ?{}( unsigned char * );
     641void    ?{}( char signed * );
     642void    ?{}( int short * );
     643void    ?{}( int short unsigned * );
     644void    ?{}( signed int * );
     645void    ?{}( unsigned int * );
     646void    ?{}( signed long int * );
     647void    ?{}( unsigned long int * );
     648void    ?{}( signed long long int * );
     649void    ?{}( unsigned long long int * );
     650void    ?{}( float * );
     651void    ?{}( double * );
     652void    ?{}( long double * );
     653void    ?{}( float _Complex * );
     654void    ?{}( double _Complex * );
     655void    ?{}( long double _Complex * );
    656656
    657657// copy ctor
    658 void    ?{}( _Bool *, _Bool ),                                  ?{}( volatile _Bool *, _Bool );
    659 void    ?{}( char *, char ),    ?{}( volatile char *, char );
    660 void    ?{}( unsigned char *, unsigned char ),                  ?{}( volatile unsigned char *, unsigned char );
    661 void    ?{}( char signed *, char signed ),                      ?{}( volatile char signed *, char signed );
    662 void    ?{}( int short *, int short ),                          ?{}( volatile int short *, int short );
    663 void    ?{}( int short unsigned *, int short unsigned ),        ?{}( volatile int short unsigned *, int short unsigned );
    664 void    ?{}( signed int *, signed int),                         ?{}( volatile signed int *, signed int );
    665 void    ?{}( unsigned int *, unsigned int),                     ?{}( volatile unsigned int *, unsigned int );
    666 void    ?{}( signed long int *, signed long int),               ?{}( volatile signed long int *, signed long int );
    667 void    ?{}( unsigned long int *, unsigned long int),           ?{}( volatile unsigned long int *, unsigned long int );
    668 void    ?{}( signed long long int *, signed long long int),     ?{}( volatile signed long long int *, signed long long int );
    669 void    ?{}( unsigned long long int *, unsigned long long int), ?{}( volatile unsigned long long int *, unsigned long long int );
    670 void    ?{}( float *, float),                                   ?{}( volatile float *, float );
    671 void    ?{}( double *, double),                                 ?{}( volatile double *, double );
    672 void    ?{}( long double *, long double),                       ?{}( volatile long double *, long double );
    673 void    ?{}( float _Complex *, float _Complex),                 ?{}( volatile float _Complex *, float _Complex );
    674 void    ?{}( double _Complex *, double _Complex),               ?{}( volatile double _Complex *, double _Complex );
    675 void    ?{}( long double _Complex *, long double _Complex),     ?{}( volatile long double _Complex *, long double _Complex );
     658void    ?{}( _Bool *, _Bool );
     659void    ?{}( char *, char );
     660void    ?{}( unsigned char *, unsigned char );
     661void    ?{}( char signed *, char signed );
     662void    ?{}( int short *, int short );
     663void    ?{}( int short unsigned *, int short unsigned );
     664void    ?{}( signed int *, signed int);
     665void    ?{}( unsigned int *, unsigned int);
     666void    ?{}( signed long int *, signed long int);
     667void    ?{}( unsigned long int *, unsigned long int);
     668void    ?{}( signed long long int *, signed long long int);
     669void    ?{}( unsigned long long int *, unsigned long long int);
     670void    ?{}( float *, float);
     671void    ?{}( double *, double);
     672void    ?{}( long double *, long double);
     673void    ?{}( float _Complex *, float _Complex);
     674void    ?{}( double _Complex *, double _Complex);
     675void    ?{}( long double _Complex *, long double _Complex);
    676676
    677677// dtor
    678 void    ^?{}( _Bool * ),                        ^?{}( volatile _Bool * );
    679 void    ^?{}( char * ), ^?{}( volatile char * );
    680 void    ^?{}( char unsigned * ),                        ^?{}( volatile char unsigned * );
    681 void    ^?{}( char signed * ),                  ^?{}( volatile char signed * );
    682 void    ^?{}( int short * ),                            ^?{}( volatile int short * );
    683 void    ^?{}( int short unsigned * ),   ^?{}( volatile int short unsigned * );
    684 void    ^?{}( signed int * ),                   ^?{}( volatile signed int * );
    685 void    ^?{}( unsigned int * ),                 ^?{}( volatile unsigned int * );
    686 void    ^?{}( signed long int * ),              ^?{}( volatile signed long int * );
    687 void    ^?{}( unsigned long int * ),            ^?{}( volatile unsigned long int * );
    688 void    ^?{}( signed long long int * ),         ^?{}( volatile signed long long int * );
    689 void    ^?{}( unsigned long long int * ),       ^?{}( volatile unsigned long long int * );
    690 void    ^?{}( float * ),                        ^?{}( volatile float * );
    691 void    ^?{}( double * ),                       ^?{}( volatile double * );
    692 void    ^?{}( long double * ),                  ^?{}( volatile long double * );
    693 void    ^?{}( float _Complex * ),               ^?{}( volatile float _Complex * );
    694 void    ^?{}( double _Complex * ),              ^?{}( volatile double _Complex * );
    695 void    ^?{}( long double _Complex * ),         ^?{}( volatile long double _Complex * );
     678void    ^?{}( _Bool * );
     679void    ^?{}( char * );
     680void    ^?{}( char unsigned * );
     681void    ^?{}( char signed * );
     682void    ^?{}( int short * );
     683void    ^?{}( int short unsigned * );
     684void    ^?{}( signed int * );
     685void    ^?{}( unsigned int * );
     686void    ^?{}( signed long int * );
     687void    ^?{}( unsigned long int * );
     688void    ^?{}( signed long long int * );
     689void    ^?{}( unsigned long long int * );
     690void    ^?{}( float * );
     691void    ^?{}( double * );
     692void    ^?{}( long double * );
     693void    ^?{}( float _Complex * );
     694void    ^?{}( double _Complex * );
     695void    ^?{}( long double _Complex * );
    696696
    697697// // default ctor
     
    719719
    720720forall( dtype DT ) void ?{}(                 DT *          *,                   DT * );
    721 forall( dtype DT ) void ?{}(                 DT * volatile *,                   DT * );
    722721forall( dtype DT ) void ?{}( const           DT *          *,                   DT * );
    723 forall( dtype DT ) void ?{}( const           DT * volatile *,                   DT * );
    724722forall( dtype DT ) void ?{}( const           DT *          *, const             DT * );
    725 forall( dtype DT ) void ?{}( const           DT * volatile *, const             DT * );
    726723forall( dtype DT ) void ?{}(       volatile  DT *          *,                   DT * );
    727 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   DT * );
    728724forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    DT * );
    729 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    DT * );
    730725
    731726forall( dtype DT ) void ?{}( const volatile  DT *          *,                   DT * );
    732 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   DT * );
    733727forall( dtype DT ) void ?{}( const volatile  DT *          *, const             DT * );
    734 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             DT * );
    735728forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    DT * );
    736 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    DT * );
    737729forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    DT * );
    738 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    DT * );
    739730
    740731forall( dtype DT ) void ?{}(                 DT *          *,                   void * );
    741 forall( dtype DT ) void ?{}(                 DT * volatile *,                   void * );
    742732forall( dtype DT ) void ?{}( const           DT *          *,                   void * );
    743 forall( dtype DT ) void ?{}( const           DT * volatile *,                   void * );
    744733forall( dtype DT ) void ?{}( const           DT *          *, const             void * );
    745 forall( dtype DT ) void ?{}( const           DT * volatile *, const             void * );
    746734forall( dtype DT ) void ?{}(       volatile  DT *          *,                   void * );
    747 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   void * );
    748735forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    void * );
    749 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    void * );
    750736
    751737forall( dtype DT ) void ?{}( const volatile  DT *          *,                   void * );
    752 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   void * );
    753738forall( dtype DT ) void ?{}( const volatile  DT *          *, const             void * );
    754 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             void * );
    755739forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    void * );
    756 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    void * );
    757740forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    void * );
    758 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    void * );
    759741
    760742forall( dtype DT ) void ?{}(                 void *          *,                 DT * );
    761 forall( dtype DT ) void ?{}(                 void * volatile *,                 DT * );
    762743forall( dtype DT ) void ?{}( const           void *          *,                 DT * );
    763 forall( dtype DT ) void ?{}( const           void * volatile *,                 DT * );
    764744forall( dtype DT ) void ?{}( const           void *          *, const           DT * );
    765 forall( dtype DT ) void ?{}( const           void * volatile *, const           DT * );
    766745forall( dtype DT ) void ?{}(        volatile void *          *,                 DT * );
    767 forall( dtype DT ) void ?{}(        volatile void * volatile *,                 DT * );
    768746forall( dtype DT ) void ?{}(        volatile void *          *,       volatile  DT * );
    769 forall( dtype DT ) void ?{}(        volatile void * volatile *,       volatile  DT * );
    770747forall( dtype DT ) void ?{}( const volatile void *           *,                 DT * );
    771 forall( dtype DT ) void ?{}( const volatile void * volatile *,                  DT * );
    772748forall( dtype DT ) void ?{}( const volatile void *           *, const           DT * );
    773 forall( dtype DT ) void ?{}( const volatile void * volatile *, const            DT * );
    774749forall( dtype DT ) void ?{}( const volatile void *           *,       volatile  DT * );
    775 forall( dtype DT ) void ?{}( const volatile void * volatile *,        volatile  DT * );
    776750forall( dtype DT ) void ?{}( const volatile void *           *, const volatile  DT * );
    777 forall( dtype DT ) void ?{}( const volatile void * volatile *, const volatile   DT * );
    778751
    779752void    ?{}(                void *          *,                void * );
    780 void    ?{}(                void * volatile *,                void * );
    781753void    ?{}( const          void *          *,                void * );
    782 void    ?{}( const          void * volatile *,                void * );
    783754void    ?{}( const          void *          *, const          void * );
    784 void    ?{}( const          void * volatile *, const          void * );
    785755void    ?{}(       volatile void *          *,                void * );
    786 void    ?{}(       volatile void * volatile *,                void * );
    787756void    ?{}(       volatile void *          *,       volatile void * );
    788 void    ?{}(       volatile void * volatile *,       volatile void * );
    789757void    ?{}( const volatile void *          *,                void * );
    790 void    ?{}( const volatile void * volatile *,                void * );
    791758void    ?{}( const volatile void *          *, const          void * );
    792 void    ?{}( const volatile void * volatile *, const          void * );
    793759void    ?{}( const volatile void *          *,       volatile void * );
    794 void    ?{}( const volatile void * volatile *,       volatile void * );
    795760void    ?{}( const volatile void *          *, const volatile void * );
    796 void    ?{}( const volatile void * volatile *, const volatile void * );
    797761
    798762//forall( dtype DT ) void ?{}(              DT *          *, forall( dtype DT2 ) const DT2 * );
    799763//forall( dtype DT ) void ?{}(              DT * volatile *, forall( dtype DT2 ) const DT2 * );
    800764forall( dtype DT ) void ?{}( const          DT *          *, forall( dtype DT2 ) const DT2 * );
    801 forall( dtype DT ) void ?{}( const          DT * volatile *, forall( dtype DT2 ) const DT2 * );
    802765//forall( dtype DT ) void ?{}( volatile     DT *          *, forall( dtype DT2 ) const DT2 * );
    803766//forall( dtype DT ) void ?{}( volatile     DT * volatile *, forall( dtype DT2 ) const DT2 * );
    804767forall( dtype DT ) void ?{}( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
    805 forall( dtype DT ) void ?{}( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
    806768
    807769forall( ftype FT ) void ?{}( FT *          *, forall( ftype FT2 ) FT2 * );
    808 forall( ftype FT ) void ?{}( FT * volatile *, forall( ftype FT2 ) FT2 * );
    809770
    810771// default ctors
    811772forall( ftype FT ) void ?{}( FT *          * );
    812 forall( ftype FT ) void ?{}( FT * volatile * );
    813773
    814774forall( dtype DT ) void ?{}(                 DT *          *);
    815 forall( dtype DT ) void ?{}(                 DT * volatile *);
    816775forall( dtype DT ) void ?{}( const           DT *          *);
    817 forall( dtype DT ) void ?{}( const           DT * volatile *);
    818776forall( dtype DT ) void ?{}(       volatile  DT *          *);
    819 forall( dtype DT ) void ?{}(       volatile  DT * volatile *);
    820777forall( dtype DT ) void ?{}( const volatile  DT *          *);
    821 forall( dtype DT ) void ?{}( const volatile  DT * volatile *);
    822778
    823779void    ?{}(                void *          *);
    824 void    ?{}(                void * volatile *);
    825780void    ?{}( const          void *          *);
    826 void    ?{}( const          void * volatile *);
    827781void    ?{}(       volatile void *          *);
    828 void    ?{}(       volatile void * volatile *);
    829782void    ?{}( const volatile void *          *);
    830 void    ?{}( const volatile void * volatile *);
    831783
    832784// dtors
    833785forall( ftype FT ) void ^?{}( FT *         * );
    834 forall( ftype FT ) void ^?{}( FT * volatile * );
    835786
    836787forall( dtype DT ) void ^?{}(                DT *          *);
    837 forall( dtype DT ) void ^?{}(                DT * volatile *);
    838788forall( dtype DT ) void ^?{}( const          DT *          *);
    839 forall( dtype DT ) void ^?{}( const          DT * volatile *);
    840789forall( dtype DT ) void ^?{}(      volatile  DT *          *);
    841 forall( dtype DT ) void ^?{}(      volatile  DT * volatile *);
    842790forall( dtype DT ) void ^?{}( const volatile  DT *         *);
    843 forall( dtype DT ) void ^?{}( const volatile  DT * volatile *);
    844791
    845792void    ^?{}(               void *          *);
    846 void    ^?{}(               void * volatile *);
    847793void    ^?{}( const         void *          *);
    848 void    ^?{}( const         void * volatile *);
    849794void    ^?{}(      volatile void *          *);
    850 void    ^?{}(      volatile void * volatile *);
    851795void    ^?{}( const volatile void *         *);
    852 void    ^?{}( const volatile void * volatile *);
    853796
    854797// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.