Changeset 58dd019


Ignore:
Timestamp:
Dec 13, 2016, 3:14:59 PM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
04c8bba
Parents:
2ee5426
Message:

add asm_name clause to declarations

Location:
src
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r2ee5426 r58dd019  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 13:35:30 2016
    13 // Update Count     : 352
     12// Last Modified On : Tue Dec 13 14:51:27 2016
     13// Update Count     : 362
    1414//
    1515
     
    5757                if ( decl->get_extension() ) {
    5858                        output << "__extension__ ";
     59                } // if
     60        } // extension
     61
     62        void CodeGenerator::asmName( DeclarationWithType * decl ) {
     63                if ( ConstantExpr * asmName = decl->get_asmName() ) {
     64                        output << " asm ( " << asmName->get_constant()->get_value() << " )";
    5965                } // if
    6066        } // extension
     
    141147                } // if
    142148
     149                asmName( functionDecl );
     150
    143151                // acceptAll( functionDecl->get_oldDecls(), *this );
    144152                if ( functionDecl->get_statements() ) {
     
    153161                handleStorageClass( objectDecl );
    154162                output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
     163
     164                asmName( objectDecl );
    155165
    156166                if ( objectDecl->get_init() ) {
  • src/CodeGen/CodeGenerator.h

    r2ee5426 r58dd019  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 13:37:07 2016
    13 // Update Count     : 38
     12// Last Modified On : Tue Dec 13 13:51:53 2016
     13// Update Count     : 39
    1414//
    1515
     
    107107                };
    108108
     109                void asmName( DeclarationWithType *decl );
     110
    109111                void extension( Expression *expr );
    110112                void extension( Declaration *decl );
  • src/CodeGen/OperatorTable.cc

    r2ee5426 r58dd019  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Apr 14 16:48:27 2016
    13 // Update Count     : 9
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Dec 13 14:33:05 2016
     13// Update Count     : 10
    1414//
    1515
     
    2121                const OperatorInfo tableValues[] = {
    2222                        {       "?[?]",         "",             "_operator_index",                              OT_INDEX                        },
    23                         {       "?{}",          "=",            "_constructor",                                 OT_CTOR                         },
     23                        {       "?{}",          "=",    "_constructor",                                 OT_CTOR                         },
    2424                        {       "^?{}",         "",             "_destructor",                                  OT_DTOR                         },
    2525                        {       "?()",          "",             "_operator_call",                               OT_CALL                         },
  • src/Parser/DeclarationNode.cc

    r2ee5426 r58dd019  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 18:03:08 2016
    13 // Update Count     : 651
     12// Last Modified On : Tue Dec 13 14:43:38 2016
     13// Update Count     : 660
    1414//
    1515
     
    4848                type( nullptr ),
    4949                storageClass( NoStorageClass ),
     50                bitfieldWidth( nullptr ),
    5051                isInline( false ),
    5152                isNoreturn( false ),
    52                 bitfieldWidth( nullptr ),
    53                 initializer( nullptr ),
    5453                hasEllipsis( false ),
    5554                linkage( ::linkage ),
     55                asmName( nullptr ),
     56                initializer( nullptr ),
    5657                extension( false ) {
    5758
     
    7576        delete type;
    7677        delete bitfieldWidth;
     78        // asmName, no delete, passed to next stage
    7779        delete initializer;
    7880}
     
    9092        newnode->set_next( maybeClone( get_next() ) );
    9193        newnode->linkage = linkage;
     94        newnode->asmName = maybeClone( asmName );
    9295
    9396//      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     
    641644}
    642645
     646DeclarationNode * DeclarationNode::addAsmName( ConstantExpr * newname ) {
     647        assert( ! asmName );
     648        asmName = newname;
     649        return this;
     650}
     651
    643652DeclarationNode * DeclarationNode::addBitfield( ExpressionNode * size ) {
    644653        bitfieldWidth = size;
     
    947956
    948957        if ( type ) {
    949                 return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     958                return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, asmName, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    950959        } // if
    951960
    952961        if ( ! isInline && ! isNoreturn ) {
    953962                assertf( name, "ObjectDecl are assumed to have names\n" );
    954                 return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
     963                return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_asmName( asmName )->set_extension( extension );
    955964        } // if
    956965
  • src/Parser/ParseNode.h

    r2ee5426 r58dd019  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 18:03:08 2016
    13 // Update Count     : 636
     12// Last Modified On : Tue Dec 13 13:26:56 2016
     13// Update Count     : 642
    1414//
    1515
     
    7373        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode * des = nullptr );
    7474        ~InitializerNode();
    75         virtual InitializerNode * clone() const { assert( false ); return nullptr; }
     75        virtual InitializerNode * clone() const { return nullptr; }
    7676
    7777        ExpressionNode * get_expression() const { return expr; }
     
    257257        DeclarationNode * addAssertions( DeclarationNode * );
    258258        DeclarationNode * addName( std::string * );
     259        DeclarationNode * addAsmName( ConstantExpr * );
    259260        DeclarationNode * addBitfield( ExpressionNode * size );
    260261        DeclarationNode * addVarArgs();
     
    309310        TypeData * type;
    310311        StorageClass storageClass;
     312        ExpressionNode * bitfieldWidth;
    311313        bool isInline, isNoreturn;
    312         std::list< std::string > attributes;
    313         ExpressionNode * bitfieldWidth;
    314314        std::unique_ptr<ExpressionNode> enumeratorValue;
    315         InitializerNode * initializer;
    316315        bool hasEllipsis;
    317316        LinkageSpec::Spec linkage;
     317        ConstantExpr *asmName;
     318        std::list< std::string > attributes;
     319        InitializerNode * initializer;
    318320        bool extension = false;
    319321        std::string error;
  • src/Parser/TypeData.cc

    r2ee5426 r58dd019  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Sep 24 11:14:26 2016
    13 // Update Count     : 415
     12// Last Modified On : Tue Dec 13 13:40:33 2016
     13// Update Count     : 420
    1414//
    1515
     
    721721} // buildTypeof
    722722
    723 Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
     723Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init ) {
    724724        if ( td->kind == TypeData::Function ) {
    725725                FunctionDecl * decl;
     
    743743                } // for
    744744                buildList( td->function.oldDeclList, decl->get_oldDecls() );
    745                 return decl;
     745                return decl->set_asmName( asmName );
    746746        } else if ( td->kind == TypeData::Aggregate ) {
    747747                return buildAggregate( td );
     
    751751                return buildSymbolic( td, name, sc );
    752752        } else {
    753                 return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn );
     753                return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn ))->set_asmName( asmName );
    754754        } // if
    755755        return nullptr;
     
    769769                        break;
    770770                  default:
    771                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall ) ) );
     771                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall, nullptr ) ) );
    772772                } // switch
    773773        } else {
  • src/Parser/TypeData.h

    r2ee5426 r58dd019  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Oct  3 12:34:08 2016
    13 // Update Count     : 142
     12// Last Modified On : Tue Dec 13 13:39:39 2016
     13// Update Count     : 143
    1414//
    1515
     
    111111TupleType * buildTuple( const TypeData * );
    112112TypeofType * buildTypeof( const TypeData * );
    113 Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = nullptr );
     113Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr );
    114114FunctionType * buildFunction( const TypeData * );
    115115
  • src/Parser/parser.cc

    r2ee5426 r58dd019  
    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
     
    9195} // appendStr
    9296
    93 #line 94 "Parser/parser.cc" /* yacc.c:339  */
    94 
    95 # ifndef YY_NULLPTR
    96 #  if defined __cplusplus && 201103L <= __cplusplus
    97 #   define YY_NULLPTR nullptr
    98 #  else
    99 #   define YY_NULLPTR 0
    100 #  endif
    101 # endif
     97
     98/* Line 268 of yacc.c  */
     99#line 100 "Parser/parser.cc"
     100
     101/* Enabling traces.  */
     102#ifndef YYDEBUG
     103# define YYDEBUG 1
     104#endif
    102105
    103106/* Enabling verbose error messages.  */
     
    109112#endif
    110113
    111 /* In a future release of Bison, this section will be replaced
    112    by #include "y.tab.h".  */
    113 #ifndef YY_YY_Y_TAB_H_INCLUDED
    114 # define YY_YY_Y_TAB_H_INCLUDED
    115 /* Debug traces.  */
    116 #ifndef YYDEBUG
    117 # define YYDEBUG 1
     114/* Enabling the token table.  */
     115#ifndef YYTOKEN_TABLE
     116# define YYTOKEN_TABLE 0
    118117#endif
    119 #if YYDEBUG
    120 extern int yydebug;
    121 #endif
    122 
    123 /* Token type.  */
     118
     119
     120/* Tokens.  */
    124121#ifndef YYTOKENTYPE
    125122# define YYTOKENTYPE
    126   enum yytokentype
    127   {
    128     TYPEDEF = 258,
    129     AUTO = 259,
    130     EXTERN = 260,
    131     REGISTER = 261,
    132     STATIC = 262,
    133     INLINE = 263,
    134     FORTRAN = 264,
    135     CONST = 265,
    136     VOLATILE = 266,
    137     RESTRICT = 267,
    138     FORALL = 268,
    139     LVALUE = 269,
    140     VOID = 270,
    141     CHAR = 271,
    142     SHORT = 272,
    143     INT = 273,
    144     LONG = 274,
    145     FLOAT = 275,
    146     DOUBLE = 276,
    147     SIGNED = 277,
    148     UNSIGNED = 278,
    149     ZERO_T = 279,
    150     ONE_T = 280,
    151     VALIST = 281,
    152     BOOL = 282,
    153     COMPLEX = 283,
    154     IMAGINARY = 284,
    155     TYPEOF = 285,
    156     LABEL = 286,
    157     ENUM = 287,
    158     STRUCT = 288,
    159     UNION = 289,
    160     OTYPE = 290,
    161     FTYPE = 291,
    162     DTYPE = 292,
    163     TRAIT = 293,
    164     SIZEOF = 294,
    165     OFFSETOF = 295,
    166     ATTRIBUTE = 296,
    167     EXTENSION = 297,
    168     IF = 298,
    169     ELSE = 299,
    170     SWITCH = 300,
    171     CASE = 301,
    172     DEFAULT = 302,
    173     DO = 303,
    174     WHILE = 304,
    175     FOR = 305,
    176     BREAK = 306,
    177     CONTINUE = 307,
    178     GOTO = 308,
    179     RETURN = 309,
    180     CHOOSE = 310,
    181     DISABLE = 311,
    182     ENABLE = 312,
    183     FALLTHRU = 313,
    184     TRY = 314,
    185     CATCH = 315,
    186     CATCHRESUME = 316,
    187     FINALLY = 317,
    188     THROW = 318,
    189     THROWRESUME = 319,
    190     AT = 320,
    191     ASM = 321,
    192     ALIGNAS = 322,
    193     ALIGNOF = 323,
    194     ATOMIC = 324,
    195     GENERIC = 325,
    196     NORETURN = 326,
    197     STATICASSERT = 327,
    198     THREADLOCAL = 328,
    199     IDENTIFIER = 329,
    200     QUOTED_IDENTIFIER = 330,
    201     TYPEDEFname = 331,
    202     TYPEGENname = 332,
    203     ATTR_IDENTIFIER = 333,
    204     ATTR_TYPEDEFname = 334,
    205     ATTR_TYPEGENname = 335,
    206     INTEGERconstant = 336,
    207     CHARACTERconstant = 337,
    208     STRINGliteral = 338,
    209     REALDECIMALconstant = 339,
    210     REALFRACTIONconstant = 340,
    211     FLOATINGconstant = 341,
    212     ZERO = 342,
    213     ONE = 343,
    214     ARROW = 344,
    215     ICR = 345,
    216     DECR = 346,
    217     LS = 347,
    218     RS = 348,
    219     LE = 349,
    220     GE = 350,
    221     EQ = 351,
    222     NE = 352,
    223     ANDAND = 353,
    224     OROR = 354,
    225     ELLIPSIS = 355,
    226     MULTassign = 356,
    227     DIVassign = 357,
    228     MODassign = 358,
    229     PLUSassign = 359,
    230     MINUSassign = 360,
    231     LSassign = 361,
    232     RSassign = 362,
    233     ANDassign = 363,
    234     ERassign = 364,
    235     ORassign = 365,
    236     ATassign = 366,
    237     THEN = 367
    238   };
     123   /* Put the tokens into the symbol table, so that GDB and other debuggers
     124      know about them.  */
     125   enum yytokentype {
     126     TYPEDEF = 258,
     127     AUTO = 259,
     128     EXTERN = 260,
     129     REGISTER = 261,
     130     STATIC = 262,
     131     INLINE = 263,
     132     FORTRAN = 264,
     133     CONST = 265,
     134     VOLATILE = 266,
     135     RESTRICT = 267,
     136     FORALL = 268,
     137     LVALUE = 269,
     138     VOID = 270,
     139     CHAR = 271,
     140     SHORT = 272,
     141     INT = 273,
     142     LONG = 274,
     143     FLOAT = 275,
     144     DOUBLE = 276,
     145     SIGNED = 277,
     146     UNSIGNED = 278,
     147     ZERO_T = 279,
     148     ONE_T = 280,
     149     VALIST = 281,
     150     BOOL = 282,
     151     COMPLEX = 283,
     152     IMAGINARY = 284,
     153     TYPEOF = 285,
     154     LABEL = 286,
     155     ENUM = 287,
     156     STRUCT = 288,
     157     UNION = 289,
     158     OTYPE = 290,
     159     FTYPE = 291,
     160     DTYPE = 292,
     161     TRAIT = 293,
     162     SIZEOF = 294,
     163     OFFSETOF = 295,
     164     ATTRIBUTE = 296,
     165     EXTENSION = 297,
     166     IF = 298,
     167     ELSE = 299,
     168     SWITCH = 300,
     169     CASE = 301,
     170     DEFAULT = 302,
     171     DO = 303,
     172     WHILE = 304,
     173     FOR = 305,
     174     BREAK = 306,
     175     CONTINUE = 307,
     176     GOTO = 308,
     177     RETURN = 309,
     178     CHOOSE = 310,
     179     DISABLE = 311,
     180     ENABLE = 312,
     181     FALLTHRU = 313,
     182     TRY = 314,
     183     CATCH = 315,
     184     CATCHRESUME = 316,
     185     FINALLY = 317,
     186     THROW = 318,
     187     THROWRESUME = 319,
     188     AT = 320,
     189     ASM = 321,
     190     ALIGNAS = 322,
     191     ALIGNOF = 323,
     192     ATOMIC = 324,
     193     GENERIC = 325,
     194     NORETURN = 326,
     195     STATICASSERT = 327,
     196     THREADLOCAL = 328,
     197     IDENTIFIER = 329,
     198     QUOTED_IDENTIFIER = 330,
     199     TYPEDEFname = 331,
     200     TYPEGENname = 332,
     201     ATTR_IDENTIFIER = 333,
     202     ATTR_TYPEDEFname = 334,
     203     ATTR_TYPEGENname = 335,
     204     INTEGERconstant = 336,
     205     CHARACTERconstant = 337,
     206     STRINGliteral = 338,
     207     REALDECIMALconstant = 339,
     208     REALFRACTIONconstant = 340,
     209     FLOATINGconstant = 341,
     210     ZERO = 342,
     211     ONE = 343,
     212     ARROW = 344,
     213     ICR = 345,
     214     DECR = 346,
     215     LS = 347,
     216     RS = 348,
     217     LE = 349,
     218     GE = 350,
     219     EQ = 351,
     220     NE = 352,
     221     ANDAND = 353,
     222     OROR = 354,
     223     ELLIPSIS = 355,
     224     MULTassign = 356,
     225     DIVassign = 357,
     226     MODassign = 358,
     227     PLUSassign = 359,
     228     MINUSassign = 360,
     229     LSassign = 361,
     230     RSassign = 362,
     231     ANDassign = 363,
     232     ERassign = 364,
     233     ORassign = 365,
     234     ATassign = 366,
     235     THEN = 367
     236   };
    239237#endif
    240238/* Tokens.  */
     
    350348#define THEN 367
    351349
    352 /* Value type.  */
     350
     351
     352
    353353#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    354 typedef union YYSTYPE YYSTYPE;
    355 union YYSTYPE
     354typedef union YYSTYPE
    356355{
    357 #line 120 "parser.yy" /* yacc.c:355  */
     356
     357/* Line 293 of yacc.c  */
     358#line 120 "parser.yy"
    358359
    359360        Token tok;
     
    372373        bool flag;
    373374
    374 #line 375 "Parser/parser.cc" /* yacc.c:355  */
    375 };
     375
     376
     377/* Line 293 of yacc.c  */
     378#line 379 "Parser/parser.cc"
     379} YYSTYPE;
    376380# define YYSTYPE_IS_TRIVIAL 1
     381# define yystype YYSTYPE /* obsolescent; will be withdrawn */
    377382# define YYSTYPE_IS_DECLARED 1
    378383#endif
    379384
    380385
    381 extern YYSTYPE yylval;
    382 
    383 int yyparse (void);
    384 
    385 #endif /* !YY_YY_Y_TAB_H_INCLUDED  */
    386 
    387386/* Copy the second part of user declarations.  */
    388387
    389 #line 390 "Parser/parser.cc" /* yacc.c:358  */
     388
     389/* Line 343 of yacc.c  */
     390#line 391 "Parser/parser.cc"
    390391
    391392#ifdef short
     
    401402#ifdef YYTYPE_INT8
    402403typedef YYTYPE_INT8 yytype_int8;
     404#elif (defined __STDC__ || defined __C99__FUNC__ \
     405     || defined __cplusplus || defined _MSC_VER)
     406typedef signed char yytype_int8;
    403407#else
    404 typedef signed char yytype_int8;
     408typedef short int yytype_int8;
    405409#endif
    406410
     
    422426# elif defined size_t
    423427#  define YYSIZE_T size_t
    424 # elif ! defined YYSIZE_T
     428# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
     429     || defined __cplusplus || defined _MSC_VER)
    425430#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    426431#  define YYSIZE_T size_t
     
    436441#  if ENABLE_NLS
    437442#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    438 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
     443#   define YY_(msgid) dgettext ("bison-runtime", msgid)
    439444#  endif
    440445# endif
    441446# ifndef YY_
    442 #  define YY_(Msgid) Msgid
     447#  define YY_(msgid) msgid
    443448# endif
    444449#endif
    445450
    446 #ifndef YY_ATTRIBUTE
    447 # if (defined __GNUC__                                               \
    448       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
    449      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
    450 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
    451 # else
    452 #  define YY_ATTRIBUTE(Spec) /* empty */
    453 # endif
    454 #endif
    455 
    456 #ifndef YY_ATTRIBUTE_PURE
    457 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
    458 #endif
    459 
    460 #ifndef YY_ATTRIBUTE_UNUSED
    461 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
    462 #endif
    463 
    464 #if !defined _Noreturn \
    465      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
    466 # if defined _MSC_VER && 1200 <= _MSC_VER
    467 #  define _Noreturn __declspec (noreturn)
    468 # else
    469 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
    470 # endif
    471 #endif
    472 
    473451/* Suppress unused-variable warnings by "using" E.  */
    474452#if ! defined lint || defined __GNUC__
    475 # define YYUSE(E) ((void) (E))
     453# define YYUSE(e) ((void) (e))
    476454#else
    477 # define YYUSE(E) /* empty */
     455# define YYUSE(e) /* empty */
    478456#endif
    479457
    480 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
    481 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
    482 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
    483     _Pragma ("GCC diagnostic push") \
    484     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
    485     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
    486 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
    487     _Pragma ("GCC diagnostic pop")
     458/* Identity function, used to suppress warnings about constant conditions.  */
     459#ifndef lint
     460# define YYID(n) (n)
    488461#else
    489 # define YY_INITIAL_VALUE(Value) Value
     462#if (defined __STDC__ || defined __C99__FUNC__ \
     463     || defined __cplusplus || defined _MSC_VER)
     464static int
     465YYID (int yyi)
     466#else
     467static int
     468YYID (yyi)
     469    int yyi;
    490470#endif
    491 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    492 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    493 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
     471{
     472  return yyi;
     473}
    494474#endif
    495 #ifndef YY_INITIAL_VALUE
    496 # define YY_INITIAL_VALUE(Value) /* Nothing. */
    497 #endif
    498 
    499475
    500476#if ! defined yyoverflow || YYERROR_VERBOSE
     
    515491#   else
    516492#    define YYSTACK_ALLOC alloca
    517 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
     493#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     494     || defined __cplusplus || defined _MSC_VER)
    518495#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    519       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    520496#     ifndef EXIT_SUCCESS
    521497#      define EXIT_SUCCESS 0
     
    527503
    528504# ifdef YYSTACK_ALLOC
    529    /* Pacify GCC's 'empty if-body' warning.  */
    530 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
     505   /* Pacify GCC's `empty if-body' warning.  */
     506#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
    531507#  ifndef YYSTACK_ALLOC_MAXIMUM
    532508    /* The OS might guarantee only one guard page at the bottom of the stack,
     
    544520#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    545521       && ! ((defined YYMALLOC || defined malloc) \
    546              && (defined YYFREE || defined free)))
     522             && (defined YYFREE || defined free)))
    547523#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    548524#   ifndef EXIT_SUCCESS
     
    552528#  ifndef YYMALLOC
    553529#   define YYMALLOC malloc
    554 #   if ! defined malloc && ! defined EXIT_SUCCESS
     530#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     531     || defined __cplusplus || defined _MSC_VER)
    555532void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    556533#   endif
     
    558535#  ifndef YYFREE
    559536#   define YYFREE free
    560 #   if ! defined free && ! defined EXIT_SUCCESS
     537#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     538     || defined __cplusplus || defined _MSC_VER)
    561539void free (void *); /* INFRINGES ON USER NAME SPACE */
    562540#   endif
     
    568546#if (! defined yyoverflow \
    569547     && (! defined __cplusplus \
    570         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     548        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    571549
    572550/* A type that is properly aligned for any stack member.  */
     
    593571   stack.  Advance YYPTR to a properly aligned location for the next
    594572   stack.  */
    595 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    596     do                                                                  \
    597       {                                                                 \
    598         YYSIZE_T yynewbytes;                                            \
    599         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
    600         Stack = &yyptr->Stack_alloc;                                    \
    601         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    602         yyptr += yynewbytes / sizeof (*yyptr);                          \
    603       }                                                                 \
    604     while (0)
     573# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     574    do                                                                  \
     575      {                                                                 \
     576        YYSIZE_T yynewbytes;                                            \
     577        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
     578        Stack = &yyptr->Stack_alloc;                                    \
     579        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
     580        yyptr += yynewbytes / sizeof (*yyptr);                          \
     581      }                                                                 \
     582    while (YYID (0))
    605583
    606584#endif
    607585
    608586#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    609 /* Copy COUNT objects from SRC to DST.  The source and destination do
     587/* Copy COUNT objects from FROM to TO.  The source and destination do
    610588   not overlap.  */
    611589# ifndef YYCOPY
    612590#  if defined __GNUC__ && 1 < __GNUC__
    613 #   define YYCOPY(Dst, Src, Count) \
    614       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
     591#   define YYCOPY(To, From, Count) \
     592      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
    615593#  else
    616 #   define YYCOPY(Dst, Src, Count)              \
    617       do                                        \
    618         {                                       \
    619           YYSIZE_T yyi;                         \
    620           for (yyi = 0; yyi < (Count); yyi++)   \
    621             (Dst)[yyi] = (Src)[yyi];            \
    622         }                                       \
    623       while (0)
     594#   define YYCOPY(To, From, Count)              \
     595      do                                        \
     596        {                                       \
     597          YYSIZE_T yyi;                         \
     598          for (yyi = 0; yyi < (Count); yyi++)   \
     599            (To)[yyi] = (From)[yyi];            \
     600        }                                       \
     601      while (YYID (0))
    624602#  endif
    625603# endif
     
    637615/* YYNRULES -- Number of rules.  */
    638616#define YYNRULES  757
    639 /* YYNSTATES -- Number of states.  */
     617/* YYNRULES -- Number of states.  */
    640618#define YYNSTATES  1540
    641619
    642 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    643    by yylex, with out-of-bounds checking.  */
     620/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    644621#define YYUNDEFTOK  2
    645622#define YYMAXUTOK   367
    646623
    647 #define YYTRANSLATE(YYX)                                                \
     624#define YYTRANSLATE(YYX)                                                \
    648625  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    649626
    650 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    651    as returned by yylex, without out-of-bounds checking.  */
     627/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
    652628static const yytype_uint8 yytranslate[] =
    653629{
     
    692668
    693669#if YYDEBUG
    694   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
     670/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
     671   YYRHS.  */
     672static const yytype_uint16 yyprhs[] =
     673{
     674       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
     675      17,    19,    21,    23,    25,    27,    29,    31,    33,    35,
     676      37,    40,    42,    44,    46,    50,    54,    56,    63,    68,
     677      72,    80,    83,    87,    95,    98,   101,   109,   114,   116,
     678     120,   121,   123,   125,   129,   131,   134,   141,   145,   153,
     679     157,   165,   168,   171,   174,   175,   178,   180,   182,   184,
     680     187,   190,   193,   196,   199,   202,   207,   210,   215,   222,
     681     224,   229,   234,   236,   238,   240,   242,   244,   246,   248,
     682     253,   255,   259,   263,   267,   269,   273,   277,   279,   283,
     683     287,   289,   293,   297,   301,   305,   307,   311,   315,   317,
     684     321,   323,   327,   329,   333,   335,   339,   341,   345,   347,
     685     353,   358,   360,   362,   366,   367,   369,   371,   373,   375,
     686     377,   379,   381,   383,   385,   387,   389,   391,   393,   400,
     687     408,   410,   414,   416,   420,   421,   423,   425,   427,   429,
     688     431,   433,   435,   437,   439,   446,   451,   454,   462,   464,
     689     468,   470,   473,   475,   478,   480,   483,   486,   492,   500,
     690     506,   516,   522,   532,   534,   538,   540,   542,   546,   550,
     691     553,   555,   558,   561,   562,   564,   567,   571,   572,   574,
     692     577,   581,   585,   590,   591,   593,   595,   598,   604,   612,
     693     619,   626,   631,   635,   640,   643,   647,   650,   654,   658,
     694     662,   666,   672,   676,   680,   685,   687,   693,   700,   706,
     695     713,   723,   734,   744,   755,   758,   760,   763,   766,   769,
     696     771,   778,   787,   798,   811,   826,   827,   829,   830,   832,
     697     834,   838,   843,   851,   852,   854,   858,   860,   864,   866,
     698     868,   870,   874,   876,   878,   880,   884,   885,   887,   891,
     699     896,   898,   902,   904,   906,   910,   914,   918,   922,   926,
     700     929,   933,   940,   944,   948,   953,   955,   958,   961,   965,
     701     971,   979,   987,   993,  1003,  1006,  1009,  1015,  1019,  1025,
     702    1030,  1034,  1039,  1044,  1052,  1056,  1060,  1064,  1068,  1073,
     703    1080,  1082,  1084,  1086,  1088,  1090,  1092,  1094,  1096,  1097,
     704    1099,  1101,  1104,  1106,  1108,  1110,  1112,  1114,  1116,  1118,
     705    1119,  1125,  1127,  1130,  1134,  1136,  1139,  1141,  1143,  1145,
     706    1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,  1163,  1165,
     707    1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1185,
     708    1187,  1190,  1193,  1197,  1201,  1203,  1207,  1209,  1212,  1215,
     709    1218,  1223,  1228,  1233,  1238,  1240,  1243,  1246,  1250,  1252,
     710    1255,  1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,
     711    1282,  1287,  1290,  1291,  1298,  1306,  1309,  1312,  1315,  1316,
     712    1319,  1322,  1326,  1329,  1333,  1335,  1338,  1342,  1345,  1348,
     713    1353,  1354,  1356,  1359,  1362,  1364,  1365,  1367,  1370,  1373,
     714    1379,  1382,  1383,  1391,  1394,  1399,  1400,  1403,  1404,  1406,
     715    1408,  1410,  1416,  1422,  1428,  1430,  1436,  1442,  1452,  1454,
     716    1460,  1461,  1463,  1465,  1471,  1473,  1475,  1481,  1487,  1489,
     717    1493,  1497,  1502,  1504,  1506,  1508,  1510,  1513,  1515,  1519,
     718    1523,  1525,  1528,  1530,  1534,  1536,  1538,  1540,  1542,  1544,
     719    1546,  1548,  1550,  1552,  1554,  1556,  1559,  1561,  1563,  1565,
     720    1568,  1569,  1572,  1575,  1577,  1582,  1583,  1585,  1588,  1592,
     721    1597,  1600,  1603,  1605,  1608,  1611,  1617,  1623,  1631,  1638,
     722    1640,  1643,  1646,  1650,  1652,  1655,  1658,  1663,  1666,  1671,
     723    1672,  1677,  1680,  1682,  1684,  1686,  1687,  1690,  1696,  1702,
     724    1716,  1718,  1720,  1724,  1728,  1731,  1735,  1739,  1742,  1747,
     725    1749,  1756,  1766,  1767,  1779,  1781,  1785,  1789,  1793,  1795,
     726    1797,  1803,  1806,  1812,  1813,  1815,  1817,  1821,  1822,  1824,
     727    1826,  1828,  1830,  1831,  1838,  1841,  1843,  1846,  1851,  1854,
     728    1858,  1862,  1866,  1871,  1877,  1883,  1889,  1896,  1898,  1900,
     729    1902,  1906,  1907,  1913,  1914,  1916,  1918,  1921,  1928,  1930,
     730    1934,  1935,  1937,  1942,  1944,  1946,  1948,  1950,  1953,  1955,
     731    1958,  1961,  1963,  1967,  1970,  1974,  1978,  1981,  1986,  1991,
     732    1995,  2004,  2008,  2011,  2013,  2016,  2023,  2032,  2036,  2039,
     733    2043,  2047,  2052,  2057,  2061,  2063,  2065,  2067,  2072,  2079,
     734    2083,  2086,  2090,  2094,  2099,  2104,  2108,  2111,  2113,  2116,
     735    2119,  2121,  2125,  2128,  2132,  2136,  2139,  2144,  2149,  2153,
     736    2160,  2169,  2173,  2176,  2178,  2181,  2184,  2187,  2191,  2195,
     737    2198,  2203,  2208,  2212,  2219,  2228,  2232,  2235,  2237,  2240,
     738    2243,  2245,  2247,  2250,  2254,  2258,  2261,  2266,  2273,  2282,
     739    2284,  2287,  2290,  2292,  2295,  2298,  2302,  2306,  2308,  2313,
     740    2318,  2322,  2328,  2337,  2341,  2344,  2348,  2350,  2356,  2362,
     741    2369,  2376,  2378,  2381,  2384,  2386,  2389,  2392,  2396,  2400,
     742    2402,  2407,  2412,  2416,  2422,  2431,  2435,  2437,  2440,  2442,
     743    2445,  2452,  2458,  2465,  2473,  2481,  2483,  2486,  2489,  2491,
     744    2494,  2497,  2501,  2505,  2507,  2512,  2517,  2521,  2530,  2534,
     745    2536,  2538,  2541,  2543,  2545,  2548,  2552,  2555,  2559,  2562,
     746    2566,  2570,  2573,  2578,  2582,  2585,  2589,  2592,  2597,  2601,
     747    2604,  2611,  2618,  2625,  2633,  2635,  2638,  2640,  2642,  2644,
     748    2647,  2651,  2654,  2658,  2661,  2665,  2669,  2674,  2677,  2681,
     749    2686,  2689,  2695,  2702,  2709,  2710,  2712,  2713
     750};
     751
     752/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
     753static const yytype_int16 yyrhs[] =
     754{
     755     308,     0,    -1,    -1,    -1,    81,    -1,    84,    -1,    85,
     756      -1,    86,    -1,    82,    -1,    74,    -1,    78,    -1,   144,
     757      -1,    74,    -1,    78,    -1,    74,    -1,   144,    -1,    87,
     758      -1,    88,    -1,   146,    -1,    83,    -1,   146,    83,    -1,
     759      74,    -1,   144,    -1,   174,    -1,   113,   176,   114,    -1,
     760     113,   180,   114,    -1,   147,    -1,   148,   115,   138,   171,
     761     139,   116,    -1,   148,   113,   149,   114,    -1,   148,   117,
     762     143,    -1,   148,   117,   115,   138,   151,   139,   116,    -1,
     763     148,    85,    -1,   148,    89,   143,    -1,   148,    89,   115,
     764     138,   151,   139,   116,    -1,   148,    90,    -1,   148,    91,
     765      -1,   113,   281,   114,   118,   285,   378,   119,    -1,   148,
     766     118,   149,   119,    -1,   150,    -1,   149,   120,   150,    -1,
     767      -1,   171,    -1,   152,    -1,   151,   120,   152,    -1,   153,
     768      -1,    84,   152,    -1,    84,   115,   138,   151,   139,   116,
     769      -1,   153,   117,   152,    -1,   153,   117,   115,   138,   151,
     770     139,   116,    -1,   153,    89,   152,    -1,   153,    89,   115,
     771     138,   151,   139,   116,    -1,    81,   154,    -1,    86,   154,
     772      -1,   143,   154,    -1,    -1,   154,    85,    -1,   148,    -1,
     773     140,    -1,   145,    -1,    42,   158,    -1,   156,   158,    -1,
     774     157,   158,    -1,    90,   155,    -1,    91,   155,    -1,    39,
     775     155,    -1,    39,   113,   281,   114,    -1,    68,   155,    -1,
     776      68,   113,   281,   114,    -1,    40,   113,   281,   120,   143,
     777     114,    -1,    78,    -1,    78,   113,   150,   114,    -1,    78,
     778     113,   282,   114,    -1,   121,    -1,   122,    -1,   123,    -1,
     779     124,    -1,   125,    -1,   126,    -1,   155,    -1,   113,   281,
     780     114,   158,    -1,   158,    -1,   159,   121,   158,    -1,   159,
     781     127,   158,    -1,   159,   128,   158,    -1,   159,    -1,   160,
     782     123,   159,    -1,   160,   124,   159,    -1,   160,    -1,   161,
     783      92,   160,    -1,   161,    93,   160,    -1,   161,    -1,   162,
     784     129,   161,    -1,   162,   130,   161,    -1,   162,    94,   161,
     785      -1,   162,    95,   161,    -1,   162,    -1,   163,    96,   162,
     786      -1,   163,    97,   162,    -1,   163,    -1,   164,   122,   163,
     787      -1,   164,    -1,   165,   131,   164,    -1,   165,    -1,   166,
     788     132,   165,    -1,   166,    -1,   167,    98,   166,    -1,   167,
     789      -1,   168,    99,   167,    -1,   168,    -1,   168,   133,   176,
     790     134,   169,    -1,   168,   133,   134,   169,    -1,   169,    -1,
     791     169,    -1,   155,   173,   171,    -1,    -1,   171,    -1,   135,
     792      -1,   111,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
     793      -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,   109,
     794      -1,   110,    -1,   115,   138,   120,   175,   139,   116,    -1,
     795     115,   138,   171,   120,   175,   139,   116,    -1,   172,    -1,
     796     175,   120,   172,    -1,   171,    -1,   176,   120,   171,    -1,
     797      -1,   176,    -1,   179,    -1,   180,    -1,   184,    -1,   185,
     798      -1,   197,    -1,   199,    -1,   200,    -1,   205,    -1,   131,
     799     148,   118,   149,   119,   136,    -1,    74,   134,   318,   178,
     800      -1,   118,   119,    -1,   118,   138,   138,   216,   181,   139,
     801     119,    -1,   182,    -1,   181,   138,   182,    -1,   219,    -1,
     802      42,   219,    -1,   314,    -1,   178,   139,    -1,   178,    -1,
     803     183,   178,    -1,   177,   136,    -1,    43,   113,   176,   114,
     804     178,    -1,    43,   113,   176,   114,   178,    44,   178,    -1,
     805      45,   113,   176,   114,   190,    -1,    45,   113,   176,   114,
     806     118,   138,   212,   191,   119,    -1,    55,   113,   176,   114,
     807     190,    -1,    55,   113,   176,   114,   118,   138,   212,   193,
     808     119,    -1,   170,    -1,   170,   100,   170,    -1,   316,    -1,
     809     186,    -1,   187,   120,   186,    -1,    46,   187,   134,    -1,
     810      47,   134,    -1,   188,    -1,   189,   188,    -1,   189,   178,
     811      -1,    -1,   192,    -1,   189,   183,    -1,   192,   189,   183,
     812      -1,    -1,   194,    -1,   189,   196,    -1,   189,   183,   195,
     813      -1,   194,   189,   196,    -1,   194,   189,   183,   195,    -1,
     814      -1,   196,    -1,    58,    -1,    58,   136,    -1,    49,   113,
     815     176,   114,   178,    -1,    48,   178,    49,   113,   176,   114,
     816     136,    -1,    50,   113,   138,   198,   114,   178,    -1,   177,
     817     139,   136,   177,   136,   177,    -1,   219,   177,   136,   177,
     818      -1,    53,    74,   136,    -1,    53,   121,   176,   136,    -1,
     819      52,   136,    -1,    52,    74,   136,    -1,    51,   136,    -1,
     820      51,    74,   136,    -1,    54,   177,   136,    -1,    63,   172,
     821     136,    -1,    64,   172,   136,    -1,    64,   172,    65,   171,
     822     136,    -1,    59,   180,   201,    -1,    59,   180,   203,    -1,
     823      59,   180,   201,   203,    -1,   202,    -1,    60,   113,   100,
     824     114,   180,    -1,   202,    60,   113,   100,   114,   180,    -1,
     825      61,   113,   100,   114,   180,    -1,   202,    61,   113,   100,
     826     114,   180,    -1,    60,   113,   138,   138,   204,   139,   114,
     827     180,   139,    -1,   202,    60,   113,   138,   138,   204,   139,
     828     114,   180,   139,    -1,    61,   113,   138,   138,   204,   139,
     829     114,   180,   139,    -1,   202,    61,   113,   138,   138,   204,
     830     139,   114,   180,   139,    -1,    62,   180,    -1,   232,    -1,
     831     232,   315,    -1,   232,   363,    -1,   372,   143,    -1,   372,
     832      -1,    66,   206,   113,   145,   114,   136,    -1,    66,   206,
     833     113,   145,   134,   207,   114,   136,    -1,    66,   206,   113,
     834     145,   134,   207,   134,   207,   114,   136,    -1,    66,   206,
     835     113,   145,   134,   207,   134,   207,   134,   210,   114,   136,
     836      -1,    66,   206,    53,   113,   145,   134,   134,   207,   134,
     837     210,   134,   211,   114,   136,    -1,    -1,    11,    -1,    -1,
     838     208,    -1,   209,    -1,   208,   120,   209,    -1,   145,   113,
     839     170,   114,    -1,   115,   170,   116,   145,   113,   170,   114,
     840      -1,    -1,   145,    -1,   210,   120,   145,    -1,   143,    -1,
     841     211,   120,   143,    -1,   139,    -1,   213,    -1,   219,    -1,
     842     213,   138,   219,    -1,   139,    -1,   215,    -1,   229,    -1,
     843     215,   138,   229,    -1,    -1,   217,    -1,    31,   218,   136,
     844      -1,   217,    31,   218,   136,    -1,   280,    -1,   218,   120,
     845     280,    -1,   220,    -1,   229,    -1,   221,   139,   136,    -1,
     846     226,   139,   136,    -1,   223,   139,   136,    -1,   299,   139,
     847     136,    -1,   302,   139,   136,    -1,   222,   283,    -1,   238,
     848     222,   283,    -1,   221,   139,   120,   138,   278,   283,    -1,
     849     373,   278,   317,    -1,   376,   278,   317,    -1,   234,   376,
     850     278,   317,    -1,   224,    -1,   234,   224,    -1,   238,   224,
     851      -1,   238,   234,   224,    -1,   223,   139,   120,   138,   278,
     852      -1,   376,   278,   113,   138,   266,   139,   114,    -1,   225,
     853     278,   113,   138,   266,   139,   114,    -1,   115,   138,   268,
     854     139,   116,    -1,   115,   138,   268,   139,   120,   138,   269,
     855     139,   116,    -1,     3,   222,    -1,     3,   224,    -1,   226,
     856     139,   120,   138,   143,    -1,     3,   232,   315,    -1,   227,
     857     139,   120,   138,   315,    -1,   234,     3,   232,   315,    -1,
     858     232,     3,   315,    -1,   232,     3,   234,   315,    -1,     3,
     859     143,   135,   171,    -1,   228,   139,   120,   138,   143,   135,
     860     171,    -1,   230,   139,   136,    -1,   227,   139,   136,    -1,
     861     228,   139,   136,    -1,   246,   139,   136,    -1,   231,   315,
     862     317,   283,    -1,   230,   120,   318,   315,   317,   283,    -1,
     863     242,    -1,   246,    -1,   248,    -1,   289,    -1,   243,    -1,
     864     247,    -1,   249,    -1,   290,    -1,    -1,   234,    -1,   235,
     865      -1,   234,   235,    -1,   236,    -1,   320,    -1,    10,    -1,
     866      12,    -1,    11,    -1,    14,    -1,    69,    -1,    -1,    13,
     867     113,   237,   292,   114,    -1,   239,    -1,   234,   239,    -1,
     868     238,   234,   239,    -1,   240,    -1,   239,   240,    -1,     5,
     869      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
     870      -1,    71,    -1,    73,    -1,    16,    -1,    21,    -1,    20,
     871      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
     872      -1,    15,    -1,    27,    -1,    28,    -1,    29,    -1,    26,
     873      -1,    24,    -1,    25,    -1,   243,    -1,   238,   243,    -1,
     874     242,   240,    -1,   242,   240,   234,    -1,   242,   240,   243,
     875      -1,   244,    -1,   233,   245,   233,    -1,   241,    -1,   234,
     876     241,    -1,   244,   235,    -1,   244,   241,    -1,    30,   113,
     877     282,   114,    -1,    30,   113,   176,   114,    -1,    80,   113,
     878     282,   114,    -1,    80,   113,   176,   114,    -1,   247,    -1,
     879     238,   247,    -1,   246,   240,    -1,   246,   240,   234,    -1,
     880     250,    -1,   234,   250,    -1,   247,   235,    -1,   249,    -1,
     881     238,   249,    -1,   248,   240,    -1,   248,   240,   234,    -1,
     882      76,    -1,   234,    76,    -1,   249,   235,    -1,   251,    -1,
     883     262,    -1,   253,   118,   254,   119,    -1,   253,   280,    -1,
     884      -1,   253,   280,   252,   118,   254,   119,    -1,   253,   113,
     885     298,   114,   118,   254,   119,    -1,   253,   291,    -1,    33,
     886     318,    -1,    34,   318,    -1,    -1,   254,   255,    -1,   256,
     887     136,    -1,    42,   256,   136,    -1,   257,   136,    -1,    42,
     888     257,   136,    -1,   372,    -1,   372,   280,    -1,   256,   120,
     889     280,    -1,   256,   120,    -1,   232,   258,    -1,   257,   120,
     890     318,   258,    -1,    -1,   260,    -1,   324,   259,    -1,   337,
     891     259,    -1,   363,    -1,    -1,   260,    -1,   134,   170,    -1,
     892      32,   318,    -1,   261,   118,   264,   378,   119,    -1,   261,
     893     280,    -1,    -1,   261,   280,   263,   118,   264,   378,   119,
     894      -1,   280,   265,    -1,   264,   120,   280,   265,    -1,    -1,
     895     135,   170,    -1,    -1,   267,    -1,   269,    -1,   268,    -1,
     896     268,   139,   120,   138,   269,    -1,   269,   139,   120,   138,
     897     100,    -1,   268,   139,   120,   138,   100,    -1,   273,    -1,
     898     269,   139,   120,   138,   273,    -1,   268,   139,   120,   138,
     899     273,    -1,   268,   139,   120,   138,   269,   139,   120,   138,
     900     273,    -1,   274,    -1,   269,   139,   120,   138,   274,    -1,
     901      -1,   271,    -1,   272,    -1,   272,   139,   120,   138,   100,
     902      -1,   276,    -1,   275,    -1,   272,   139,   120,   138,   276,
     903      -1,   272,   139,   120,   138,   275,    -1,   275,    -1,   368,
     904     278,   379,    -1,   376,   278,   379,    -1,   234,   376,   278,
     905     379,    -1,   224,    -1,   276,    -1,   368,    -1,   376,    -1,
     906     234,   376,    -1,   377,    -1,   231,   342,   379,    -1,   231,
     907     346,   379,    -1,   231,    -1,   231,   357,    -1,   143,    -1,
     908     277,   120,   143,    -1,   141,    -1,    76,    -1,    77,    -1,
     909     142,    -1,    76,    -1,    77,    -1,   143,    -1,    76,    -1,
     910      77,    -1,   372,    -1,   232,    -1,   232,   363,    -1,   372,
     911      -1,   377,    -1,   232,    -1,   232,   351,    -1,    -1,   135,
     912     284,    -1,   111,   284,    -1,   171,    -1,   118,   285,   378,
     913     119,    -1,    -1,   284,    -1,   286,   284,    -1,   285,   120,
     914     284,    -1,   285,   120,   286,   284,    -1,   287,   134,    -1,
     915     280,   134,    -1,   288,    -1,   287,   288,    -1,   117,   280,
     916      -1,   115,   138,   171,   139,   116,    -1,   115,   138,   316,
     917     139,   116,    -1,   115,   138,   170,   100,   170,   139,   116,
     918      -1,   117,   115,   138,   151,   139,   116,    -1,   290,    -1,
     919     238,   290,    -1,   289,   240,    -1,   289,   240,   234,    -1,
     920     291,    -1,   234,   291,    -1,   290,   235,    -1,    77,   113,
     921     298,   114,    -1,   293,   379,    -1,   292,   120,   293,   379,
     922      -1,    -1,   295,   280,   294,   296,    -1,   232,   342,    -1,
     923      35,    -1,    37,    -1,    36,    -1,    -1,   296,   297,    -1,
     924     132,   280,   113,   298,   114,    -1,   132,   118,   138,   304,
     925     119,    -1,   132,   113,   138,   292,   139,   114,   118,   138,
     926     304,   119,   113,   298,   114,    -1,   282,    -1,   171,    -1,
     927     298,   120,   282,    -1,   298,   120,   171,    -1,    35,   300,
     928      -1,   239,    35,   300,    -1,   299,   120,   300,    -1,   301,
     929     296,    -1,   301,   296,   135,   282,    -1,   280,    -1,   279,
     930     113,   138,   292,   139,   114,    -1,    38,   280,   113,   138,
     931     292,   139,   114,   118,   119,    -1,    -1,    38,   280,   113,
     932     138,   292,   139,   114,   118,   303,   304,   119,    -1,   305,
     933      -1,   304,   138,   305,    -1,   306,   139,   136,    -1,   307,
     934     139,   136,    -1,   222,    -1,   224,    -1,   306,   139,   120,
     935     138,   278,    -1,   232,   315,    -1,   307,   139,   120,   138,
     936     315,    -1,    -1,   309,    -1,   311,    -1,   309,   138,   311,
     937      -1,    -1,   309,    -1,   219,    -1,   313,    -1,   205,    -1,
     938      -1,     5,    83,   312,   118,   310,   119,    -1,    42,   311,
     939      -1,   314,    -1,   329,   180,    -1,   333,   138,   214,   180,
     940      -1,   223,   180,    -1,   231,   329,   180,    -1,   234,   329,
     941     180,    -1,   238,   329,   180,    -1,   238,   234,   329,   180,
     942      -1,   231,   333,   138,   214,   180,    -1,   234,   333,   138,
     943     214,   180,    -1,   238,   333,   138,   214,   180,    -1,   238,
     944     234,   333,   138,   214,   180,    -1,   324,    -1,   337,    -1,
     945     329,    -1,   170,   126,   170,    -1,    -1,    66,   113,   145,
     946     114,   318,    -1,    -1,   319,    -1,   320,    -1,   319,   320,
     947      -1,    41,   113,   113,   321,   114,   114,    -1,   322,    -1,
     948     321,   120,   322,    -1,    -1,   323,    -1,   323,   113,   177,
     949     114,    -1,   278,    -1,   240,    -1,   241,    -1,   235,    -1,
     950     325,   318,    -1,   326,    -1,   327,   318,    -1,   328,   318,
     951      -1,   141,    -1,   113,   325,   114,    -1,   156,   324,    -1,
     952     156,   234,   324,    -1,   113,   326,   114,    -1,   325,   355,
     953      -1,   113,   326,   114,   355,    -1,   113,   327,   114,   356,
     954      -1,   113,   327,   114,    -1,   113,   326,   114,   113,   138,
     955     270,   139,   114,    -1,   113,   328,   114,    -1,   330,   318,
     956      -1,   331,    -1,   332,   318,    -1,   325,   113,   138,   270,
     957     139,   114,    -1,   113,   331,   114,   113,   138,   270,   139,
     958     114,    -1,   113,   330,   114,    -1,   156,   329,    -1,   156,
     959     234,   329,    -1,   113,   331,   114,    -1,   113,   331,   114,
     960     355,    -1,   113,   332,   114,   356,    -1,   113,   332,   114,
     961      -1,   334,    -1,   335,    -1,   336,    -1,   325,   113,   277,
     962     114,    -1,   113,   335,   114,   113,   277,   114,    -1,   113,
     963     334,   114,    -1,   156,   333,    -1,   156,   234,   333,    -1,
     964     113,   335,   114,    -1,   113,   335,   114,   355,    -1,   113,
     965     336,   114,   356,    -1,   113,   336,   114,    -1,   338,   318,
     966      -1,   339,    -1,   340,   318,    -1,   341,   318,    -1,   347,
     967      -1,   113,   338,   114,    -1,   156,   337,    -1,   156,   234,
     968     337,    -1,   113,   339,   114,    -1,   338,   355,    -1,   113,
     969     339,   114,   355,    -1,   113,   340,   114,   356,    -1,   113,
     970     340,   114,    -1,   338,   113,   138,   270,   139,   114,    -1,
     971     113,   339,   114,   113,   138,   270,   139,   114,    -1,   113,
     972     341,   114,    -1,   325,   318,    -1,   343,    -1,   344,   318,
     973      -1,   345,   318,    -1,   156,   342,    -1,   156,   234,   342,
     974      -1,   113,   343,   114,    -1,   325,   361,    -1,   113,   343,
     975     114,   355,    -1,   113,   344,   114,   356,    -1,   113,   344,
     976     114,    -1,   325,   113,   138,   270,   139,   114,    -1,   113,
     977     343,   114,   113,   138,   270,   139,   114,    -1,   113,   345,
     978     114,    -1,   347,   318,    -1,   348,    -1,   349,   318,    -1,
     979     350,   318,    -1,    76,    -1,    77,    -1,   156,   346,    -1,
     980     156,   234,   346,    -1,   113,   348,   114,    -1,   347,   361,
     981      -1,   113,   348,   114,   361,    -1,   347,   113,   138,   270,
     982     139,   114,    -1,   113,   348,   114,   113,   138,   270,   139,
     983     114,    -1,   352,    -1,   353,   318,    -1,   354,   318,    -1,
     984     156,    -1,   156,   234,    -1,   156,   351,    -1,   156,   234,
     985     351,    -1,   113,   352,   114,    -1,   355,    -1,   113,   352,
     986     114,   355,    -1,   113,   353,   114,   356,    -1,   113,   353,
     987     114,    -1,   113,   138,   270,   139,   114,    -1,   113,   352,
     988     114,   113,   138,   270,   139,   114,    -1,   113,   354,   114,
     989      -1,   115,   116,    -1,   115,   116,   356,    -1,   356,    -1,
     990     115,   138,   171,   139,   116,    -1,   115,   138,   121,   139,
     991     116,    -1,   356,   115,   138,   171,   139,   116,    -1,   356,
     992     115,   138,   121,   139,   116,    -1,   358,    -1,   359,   318,
     993      -1,   360,   318,    -1,   156,    -1,   156,   234,    -1,   156,
     994     357,    -1,   156,   234,   357,    -1,   113,   358,   114,    -1,
     995     361,    -1,   113,   358,   114,   361,    -1,   113,   359,   114,
     996     356,    -1,   113,   359,   114,    -1,   113,   138,   270,   139,
     997     114,    -1,   113,   358,   114,   113,   138,   270,   139,   114,
     998      -1,   113,   360,   114,    -1,   362,    -1,   362,   356,    -1,
     999     356,    -1,   115,   116,    -1,   115,   138,   234,   121,   139,
     1000     116,    -1,   115,   138,   234,   139,   116,    -1,   115,   138,
     1001     234,   171,   139,   116,    -1,   115,   138,     7,   233,   171,
     1002     139,   116,    -1,   115,   138,   234,     7,   171,   139,   116,
     1003      -1,   364,    -1,   365,   318,    -1,   366,   318,    -1,   156,
     1004      -1,   156,   234,    -1,   156,   363,    -1,   156,   234,   363,
     1005      -1,   113,   364,   114,    -1,   355,    -1,   113,   364,   114,
     1006     355,    -1,   113,   365,   114,   356,    -1,   113,   365,   114,
     1007      -1,   113,   364,   114,   113,   138,   270,   139,   114,    -1,
     1008     113,   366,   114,    -1,   368,    -1,   376,    -1,   234,   376,
     1009      -1,   369,    -1,   370,    -1,   156,   232,    -1,   234,   156,
     1010     232,    -1,   156,   377,    -1,   234,   156,   377,    -1,   156,
     1011     367,    -1,   234,   156,   367,    -1,   115,   116,   232,    -1,
     1012     371,   232,    -1,   115,   116,   356,   232,    -1,   371,   356,
     1013     232,    -1,   356,   232,    -1,   115,   116,   369,    -1,   371,
     1014     369,    -1,   115,   116,   356,   369,    -1,   371,   356,   369,
     1015      -1,   356,   369,    -1,   115,   138,   234,   121,   139,   116,
     1016      -1,   115,   138,   234,   171,   139,   116,    -1,   115,   138,
     1017     238,   171,   139,   116,    -1,   115,   138,   238,   234,   171,
     1018     139,   116,    -1,   376,    -1,   234,   376,    -1,   373,    -1,
     1019     374,    -1,   375,    -1,   156,   232,    -1,   234,   156,   232,
     1020      -1,   156,   377,    -1,   234,   156,   377,    -1,   156,   372,
     1021      -1,   234,   156,   372,    -1,   115,   116,   232,    -1,   115,
     1022     116,   356,   232,    -1,   356,   232,    -1,   115,   116,   374,
     1023      -1,   115,   116,   356,   374,    -1,   356,   374,    -1,   115,
     1024     138,   269,   139,   116,    -1,   376,   113,   138,   266,   139,
     1025     114,    -1,   225,   113,   138,   266,   139,   114,    -1,    -1,
     1026     120,    -1,    -1,   135,   171,    -1
     1027};
     1028
     1029/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
    6951030static const yytype_uint16 yyrline[] =
    6961031{
    697        0,   305,   305,   309,   316,   317,   318,   319,   320,   324,
    698      325,   326,   330,   331,   335,   336,   340,   341,   345,   349,
    699      350,   361,   363,   365,   366,   368,   373,   374,   380,   382,
    700      384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
    701      414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
    702      435,   440,   442,   444,   456,   457,   465,   468,   470,   472,
    703      477,   490,   492,   494,   496,   498,   500,   502,   504,   506,
    704      508,   510,   517,   518,   524,   525,   526,   527,   531,   532,
    705      539,   540,   542,   544,   549,   550,   552,   557,   558,   560,
    706      565,   566,   568,   570,   572,   577,   578,   580,   585,   586,
    707      591,   592,   597,   598,   603,   604,   609,   610,   615,   616,
    708      619,   626,   631,   632,   640,   641,   645,   646,   647,   648,
    709      649,   650,   651,   652,   653,   654,   655,   656,   666,   668,
    710      673,   674,   679,   680,   686,   687,   693,   694,   695,   696,
    711      697,   698,   699,   700,   701,   711,   718,   720,   730,   731,
    712      736,   738,   744,   746,   750,   751,   756,   761,   764,   766,
    713      768,   778,   780,   791,   792,   794,   798,   800,   804,   805,
    714      810,   811,   815,   820,   821,   825,   827,   833,   834,   838,
    715      840,   842,   844,   850,   851,   855,   857,   862,   864,   866,
    716      871,   873,   878,   880,   884,   887,   891,   894,   898,   900,
    717      902,   904,   909,   911,   913,   918,   920,   922,   924,   926,
    718      931,   933,   935,   937,   942,   954,   955,   960,   962,   967,
    719      971,   973,   975,   977,   979,   985,   986,   992,   993,   997,
    720      998,  1003,  1005,  1011,  1012,  1014,  1019,  1024,  1034,  1036,
    721     1040,  1041,  1046,  1048,  1052,  1053,  1057,  1059,  1063,  1064,
    722     1068,  1069,  1073,  1074,  1089,  1090,  1091,  1092,  1093,  1097,
    723     1102,  1109,  1119,  1124,  1129,  1137,  1142,  1147,  1152,  1157,
    724     1187,  1192,  1199,  1201,  1208,  1213,  1218,  1229,  1234,  1239,
    725     1244,  1249,  1258,  1263,  1271,  1272,  1273,  1274,  1280,  1285,
    726     1293,  1294,  1295,  1296,  1300,  1301,  1302,  1303,  1308,  1309,
    727     1318,  1319,  1324,  1325,  1330,  1332,  1334,  1336,  1338,  1341,
    728     1340,  1352,  1353,  1355,  1365,  1366,  1371,  1373,  1375,  1377,
    729     1379,  1382,  1384,  1387,  1392,  1394,  1396,  1398,  1400,  1402,
    730     1404,  1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1426,
    731     1427,  1429,  1431,  1433,  1438,  1439,  1445,  1446,  1448,  1450,
    732     1455,  1457,  1459,  1461,  1466,  1467,  1469,  1471,  1476,  1477,
    733     1479,  1484,  1485,  1487,  1489,  1494,  1496,  1498,  1503,  1504,
    734     1508,  1510,  1516,  1515,  1519,  1521,  1526,  1528,  1534,  1535,
    735     1540,  1541,  1543,  1544,  1553,  1554,  1556,  1558,  1563,  1565,
    736     1571,  1572,  1574,  1577,  1580,  1585,  1586,  1591,  1596,  1600,
    737     1602,  1608,  1607,  1614,  1616,  1622,  1623,  1631,  1632,  1636,
    738     1637,  1638,  1640,  1642,  1649,  1650,  1652,  1654,  1659,  1660,
    739     1666,  1667,  1671,  1672,  1677,  1678,  1679,  1681,  1689,  1690,
    740     1692,  1695,  1697,  1701,  1702,  1703,  1705,  1707,  1711,  1716,
    741     1724,  1725,  1734,  1736,  1741,  1742,  1743,  1747,  1748,  1749,
    742     1753,  1754,  1755,  1759,  1760,  1761,  1766,  1767,  1768,  1769,
    743     1775,  1776,  1778,  1783,  1784,  1789,  1790,  1791,  1792,  1793,
    744     1808,  1809,  1814,  1815,  1821,  1823,  1826,  1828,  1830,  1853,
    745     1854,  1856,  1858,  1863,  1864,  1866,  1871,  1876,  1877,  1883,
    746     1882,  1886,  1890,  1892,  1894,  1900,  1901,  1906,  1911,  1913,
    747     1918,  1920,  1921,  1923,  1928,  1930,  1932,  1937,  1939,  1944,
    748     1949,  1957,  1963,  1962,  1976,  1977,  1982,  1983,  1987,  1992,
    749     1997,  2005,  2010,  2021,  2022,  2027,  2028,  2034,  2035,  2039,
    750     2040,  2041,  2044,  2043,  2054,  2063,  2069,  2075,  2084,  2090,
    751     2096,  2102,  2108,  2116,  2122,  2130,  2136,  2145,  2146,  2147,
    752     2151,  2155,  2157,  2162,  2163,  2167,  2168,  2173,  2179,  2180,
    753     2183,  2185,  2186,  2190,  2191,  2192,  2193,  2227,  2229,  2230,
    754     2232,  2237,  2242,  2247,  2249,  2251,  2256,  2258,  2260,  2262,
    755     2267,  2269,  2278,  2280,  2281,  2286,  2288,  2290,  2295,  2297,
    756     2299,  2304,  2306,  2308,  2317,  2318,  2319,  2323,  2325,  2327,
    757     2332,  2334,  2336,  2341,  2343,  2345,  2360,  2362,  2363,  2365,
    758     2370,  2371,  2376,  2378,  2380,  2385,  2387,  2389,  2391,  2396,
    759     2398,  2400,  2410,  2412,  2413,  2415,  2420,  2422,  2424,  2429,
    760     2431,  2433,  2435,  2440,  2442,  2444,  2475,  2477,  2478,  2480,
    761     2485,  2490,  2498,  2500,  2502,  2507,  2509,  2514,  2516,  2530,
    762     2531,  2533,  2538,  2540,  2542,  2544,  2546,  2551,  2552,  2554,
    763     2556,  2561,  2563,  2565,  2571,  2573,  2575,  2579,  2581,  2583,
    764     2585,  2599,  2600,  2602,  2607,  2609,  2611,  2613,  2615,  2620,
    765     2621,  2623,  2625,  2630,  2632,  2634,  2640,  2641,  2643,  2652,
    766     2655,  2657,  2660,  2662,  2664,  2677,  2678,  2680,  2685,  2687,
    767     2689,  2691,  2693,  2698,  2699,  2701,  2703,  2708,  2710,  2718,
    768     2719,  2720,  2725,  2726,  2730,  2732,  2734,  2736,  2738,  2740,
    769     2747,  2749,  2751,  2753,  2755,  2758,  2760,  2762,  2764,  2766,
    770     2771,  2773,  2775,  2780,  2806,  2807,  2809,  2813,  2814,  2818,
    771     2820,  2822,  2824,  2826,  2828,  2835,  2837,  2839,  2841,  2843,
    772     2845,  2850,  2857,  2859,  2877,  2879,  2884,  2885
     1032       0,   306,   306,   310,   317,   318,   319,   320,   321,   325,
     1033     326,   327,   331,   332,   336,   337,   341,   342,   346,   350,
     1034     351,   362,   364,   366,   367,   369,   374,   375,   381,   383,
     1035     385,   387,   389,   391,   393,   395,   397,   399,   408,   409,
     1036     415,   416,   420,   421,   425,   426,   428,   430,   432,   434,
     1037     436,   441,   443,   445,   457,   458,   466,   469,   471,   473,
     1038     478,   491,   493,   495,   497,   499,   501,   503,   505,   507,
     1039     509,   511,   518,   519,   525,   526,   527,   528,   532,   533,
     1040     540,   541,   543,   545,   550,   551,   553,   558,   559,   561,
     1041     566,   567,   569,   571,   573,   578,   579,   581,   586,   587,
     1042     592,   593,   598,   599,   604,   605,   610,   611,   616,   617,
     1043     620,   627,   632,   633,   641,   642,   646,   647,   648,   649,
     1044     650,   651,   652,   653,   654,   655,   656,   657,   667,   669,
     1045     674,   675,   680,   681,   687,   688,   694,   695,   696,   697,
     1046     698,   699,   700,   701,   702,   712,   719,   721,   731,   732,
     1047     737,   739,   745,   747,   751,   752,   757,   762,   765,   767,
     1048     769,   779,   781,   792,   793,   795,   799,   801,   805,   806,
     1049     811,   812,   816,   821,   822,   826,   828,   834,   835,   839,
     1050     841,   843,   845,   851,   852,   856,   858,   863,   865,   867,
     1051     872,   874,   879,   881,   885,   888,   892,   895,   899,   901,
     1052     903,   905,   910,   912,   914,   919,   921,   923,   925,   927,
     1053     932,   934,   936,   938,   943,   955,   956,   961,   963,   968,
     1054     972,   974,   976,   978,   980,   986,   987,   993,   994,   998,
     1055     999,  1004,  1006,  1012,  1013,  1015,  1020,  1025,  1035,  1037,
     1056    1041,  1042,  1047,  1049,  1053,  1054,  1058,  1060,  1064,  1065,
     1057    1069,  1070,  1074,  1075,  1090,  1091,  1092,  1093,  1094,  1098,
     1058    1103,  1110,  1120,  1125,  1130,  1138,  1143,  1148,  1153,  1158,
     1059    1188,  1193,  1200,  1202,  1209,  1214,  1219,  1230,  1235,  1240,
     1060    1245,  1250,  1259,  1264,  1272,  1273,  1274,  1275,  1281,  1286,
     1061    1294,  1295,  1296,  1297,  1301,  1302,  1303,  1304,  1309,  1310,
     1062    1319,  1320,  1325,  1326,  1331,  1333,  1335,  1337,  1339,  1342,
     1063    1341,  1353,  1354,  1356,  1366,  1367,  1372,  1374,  1376,  1378,
     1064    1380,  1383,  1385,  1388,  1393,  1395,  1397,  1399,  1401,  1403,
     1065    1405,  1407,  1409,  1411,  1413,  1415,  1417,  1419,  1421,  1427,
     1066    1428,  1430,  1432,  1434,  1439,  1440,  1446,  1447,  1449,  1451,
     1067    1456,  1458,  1460,  1462,  1467,  1468,  1470,  1472,  1477,  1478,
     1068    1480,  1485,  1486,  1488,  1490,  1495,  1497,  1499,  1504,  1505,
     1069    1509,  1511,  1517,  1516,  1520,  1522,  1527,  1529,  1535,  1536,
     1070    1541,  1542,  1544,  1545,  1554,  1555,  1557,  1559,  1564,  1566,
     1071    1572,  1573,  1575,  1578,  1581,  1586,  1587,  1592,  1597,  1601,
     1072    1603,  1609,  1608,  1615,  1617,  1623,  1624,  1632,  1633,  1637,
     1073    1638,  1639,  1641,  1643,  1650,  1651,  1653,  1655,  1660,  1661,
     1074    1667,  1668,  1672,  1673,  1678,  1679,  1680,  1682,  1690,  1691,
     1075    1693,  1696,  1698,  1702,  1703,  1704,  1706,  1708,  1712,  1717,
     1076    1725,  1726,  1735,  1737,  1742,  1743,  1744,  1748,  1749,  1750,
     1077    1754,  1755,  1756,  1760,  1761,  1762,  1767,  1768,  1769,  1770,
     1078    1776,  1777,  1779,  1784,  1785,  1790,  1791,  1792,  1793,  1794,
     1079    1809,  1810,  1815,  1816,  1822,  1824,  1827,  1829,  1831,  1854,
     1080    1855,  1857,  1859,  1864,  1865,  1867,  1872,  1877,  1878,  1884,
     1081    1883,  1887,  1891,  1893,  1895,  1901,  1902,  1907,  1912,  1914,
     1082    1919,  1921,  1922,  1924,  1929,  1931,  1933,  1938,  1940,  1945,
     1083    1950,  1958,  1964,  1963,  1977,  1978,  1983,  1984,  1988,  1993,
     1084    1998,  2006,  2011,  2022,  2023,  2028,  2029,  2035,  2036,  2040,
     1085    2041,  2042,  2045,  2044,  2055,  2064,  2070,  2076,  2085,  2091,
     1086    2097,  2103,  2109,  2117,  2123,  2131,  2137,  2146,  2147,  2148,
     1087    2152,  2158,  2159,  2165,  2166,  2170,  2171,  2176,  2182,  2183,
     1088    2186,  2188,  2189,  2193,  2194,  2195,  2196,  2230,  2232,  2233,
     1089    2235,  2240,  2245,  2250,  2252,  2254,  2259,  2261,  2263,  2265,
     1090    2270,  2272,  2281,  2283,  2284,  2289,  2291,  2293,  2298,  2300,
     1091    2302,  2307,  2309,  2311,  2320,  2321,  2322,  2326,  2328,  2330,
     1092    2335,  2337,  2339,  2344,  2346,  2348,  2363,  2365,  2366,  2368,
     1093    2373,  2374,  2379,  2381,  2383,  2388,  2390,  2392,  2394,  2399,
     1094    2401,  2403,  2413,  2415,  2416,  2418,  2423,  2425,  2427,  2432,
     1095    2434,  2436,  2438,  2443,  2445,  2447,  2478,  2480,  2481,  2483,
     1096    2488,  2493,  2501,  2503,  2505,  2510,  2512,  2517,  2519,  2533,
     1097    2534,  2536,  2541,  2543,  2545,  2547,  2549,  2554,  2555,  2557,
     1098    2559,  2564,  2566,  2568,  2574,  2576,  2578,  2582,  2584,  2586,
     1099    2588,  2602,  2603,  2605,  2610,  2612,  2614,  2616,  2618,  2623,
     1100    2624,  2626,  2628,  2633,  2635,  2637,  2643,  2644,  2646,  2655,
     1101    2658,  2660,  2663,  2665,  2667,  2680,  2681,  2683,  2688,  2690,
     1102    2692,  2694,  2696,  2701,  2702,  2704,  2706,  2711,  2713,  2721,
     1103    2722,  2723,  2728,  2729,  2733,  2735,  2737,  2739,  2741,  2743,
     1104    2750,  2752,  2754,  2756,  2758,  2761,  2763,  2765,  2767,  2769,
     1105    2774,  2776,  2778,  2783,  2809,  2810,  2812,  2816,  2817,  2821,
     1106    2823,  2825,  2827,  2829,  2831,  2838,  2840,  2842,  2844,  2846,
     1107    2848,  2853,  2860,  2862,  2880,  2882,  2887,  2888
    7731108};
    7741109#endif
    7751110
    776 #if YYDEBUG || YYERROR_VERBOSE || 0
     1111#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
    7771112/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    7781113   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     
    8851220  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
    8861221  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
    887   "comma_opt", "assignment_opt", YY_NULLPTR
     1222  "comma_opt", "assignment_opt", 0
    8881223};
    8891224#endif
    8901225
    8911226# ifdef YYPRINT
    892 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    893    (internal) symbol number NUM (which must be that of a token).  */
     1227/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
     1228   token YYLEX-NUM.  */
    8941229static const yytype_uint16 yytoknum[] =
    8951230{
     
    9111246# endif
    9121247
    913 #define YYPACT_NINF -1267
    914 
    915 #define yypact_value_is_default(Yystate) \
    916   (!!((Yystate) == (-1267)))
    917 
    918 #define YYTABLE_NINF -529
    919 
    920 #define yytable_value_is_error(Yytable_value) \
    921   0
    922 
    923   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    924      STATE-NUM.  */
    925 static const yytype_int16 yypact[] =
     1248/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
     1249static const yytype_uint16 yyr1[] =
    9261250{
    927     5235,  8510, -1267,   -14, -1267, -1267, -1267, -1267, -1267, -1267,
    928    -1267,   -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    929    -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,    84,    84,
    930       84,  1541,   905,   123,  6677,   163, -1267, -1267, -1267, -1267,
    931    -1267,   157, -1267, -1267, -1267,  1043,   172, -1267, -1267, -1267,
    932    -1267,  4048, -1267, -1267, -1267, -1267,   225,   198, -1267,  1956,
    933    -1267, -1267, -1267, -1267,   217,  1716,   380,    37,  6797, -1267,
    934    -1267,  4048,   829, -1267, -1267,  1101,   436,  3172,   661,   839,
    935     1101,   977, -1267, -1267,  1289,   340, -1267,  1101,  1140, -1267,
    936      327, -1267,   450,   467, -1267, -1267, -1267, -1267,   378,   198,
    937       84, -1267,    84, -1267, -1267, -1267, -1267,  7269,  1956, -1267,
    938    -1267,  1956, -1267,   386, -1267,  7582, -1267, -1267,  2178,  8744,
    939    -1267,   675,   675,   675, -1267, -1267, -1267,    84, -1267, -1267,
    940    -1267,   400,   425,   466, -1267, -1267, -1267,   503, -1267, -1267,
    941    -1267, -1267, -1267,   515,   527, -1267, -1267,   272,  8119,  1675,
    942      732,   435,   568,   593,   612,   625,   639,  8828,  6307,   586,
    943    -1267,  4677, -1267, -1267, -1267, -1267,   652, -1267,   339,  9583,
    944     9583, -1267,   651,   348, -1267, -1267, -1267, -1267,   665,   379,
    945      421,   471,    84,   654, -1267, -1267,  1716,  2591,   717, -1267,
    946       90, -1267,    84,    84,   198, -1267, -1267,    91, -1267,    84,
    947       84, -1267,  2973,   690,   712,   675,  6831, -1267, -1267, -1267,
    948     4048, -1267, -1267,  1101, -1267, -1267, -1267,   198, -1267,  1956,
    949      225, -1267,  7235, -1267,   675,   675,   675,   198, -1267,  1541,
    950    -1267,  3826, -1267, -1267,   722,   675, -1267,   675, -1267,   157,
    951     8119, -1267,   748, -1267,   905,   763,   675, -1267,  1541,   768,
    952      779, -1267,  6677,   605, -1267, -1267, -1267,  8477, -1267, -1267,
    953     4354, -1267,   717,     8,  9760,  8744,  2178,  2973, -1267,   101,
    954    -1267, -1267,  7582,  1956,   807, 10515, -1267, -1267,   473, -1267,
    955    10178,   816,   862,  9819,   849,  9760,  9878, -1267,   860, -1267,
    956    -1267, -1267, -1267, -1267, -1267,  9937,  9937,  7885,   172, -1267,
    957    -1267, -1267, -1267, -1267, -1267, -1267,   866, -1267,  1184,  2546,
    958     8119,  9760, -1267,   525,   813,   848,   509,   861,   847,   853,
    959      879,   915,    56, -1267, -1267, -1267,   658, -1267,   474, -1267,
    960    -1267,  1675, -1267, -1267,   456,   900, -1267,   518,   900, -1267,
    961    -1267,  7269, -1267,   917,   933,  8236, -1267, -1267,   536,  1525,
    962     7667,  6831,  1101, -1267,  1101,   675,   675, -1267, -1267, -1267,
    963    -1267, -1267, -1267,   675,  7269,  1956, -1267, -1267,  8828,  1786,
    964    -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9524,
    965     9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    966    -1267, -1267, -1267, -1267, -1267,  2178, -1267,   446,   942,   951,
    967      953,   885,   956,   968,   973,  2591, -1267, -1267,   985,   225,
    968      974, -1267, -1267,   987, -1267, -1267, -1267,  8477, -1267, -1267,
    969    -1267, -1267, -1267,  2973, -1267,  8119,  8119, -1267,   675,  2178,
    970    10547,  7742, -1267, -1267, -1267, -1267,  8477,     8, -1267, -1267,
    971     1101,   198, -1267, -1267,  8477, -1267,  5404, -1267, -1267,   675,
    972      675,   528,  8594,   998,  1002,   983,  1007,   675, -1267, -1267,
    973    -1267, -1267,  9019, -1267,   627, 10212, -1267,   198,  1008, -1267,
    974     2178, 10298,  9996, -1267, -1267, -1267, -1267,   922,  2973, -1267,
    975     7742,   717,  5806, -1267, -1267, -1267,  1900,   640,   994,   905,
    976    10515,  1647,  7582, -1267, 10515, -1267, -1267, -1267, -1267,   643,
    977    -1267,  1026,   862,   190,  7885, -1267,  8860, -1267, -1267,  7885,
    978    -1267,  8002,  7885, -1267, -1267,   172, -1267,   647,  1027,   694,
    979     1028, -1267, -1267,  6061, -1267, -1267,   315, -1267, -1267,  9760,
    980    -1267,   368,  9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    981    -1267, -1267, -1267, -1267, -1267,  9760, -1267, -1267,  9760,  9760,
    982     9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,
    983     9760,  9760,  9760,  9760,  9760,  9760,  3432,   658,  1212, -1267,
    984    -1267,    84,    84, -1267, -1267,  8119, -1267, -1267,   987,   605,
    985    -1267,   987, 10055, -1267, -1267,  8828,  6061,  1029, -1267,  8744,
    986    -1267, -1267,   652, -1267,  1030,  1793,  1039,  1950,   136,   994,
    987    -1267,    84,    84,   994,   407, -1267,    84,    84,   987, -1267,
    988    -1267,    84,    84, -1267,   900,  8944,  1956, 10447,   258,   304,
    989     8944, -1267,  4354, -1267,   994, -1267,  7269, -1267,   126,  7354,
    990     7354,  1956,  9642,  1010, -1267,   345,  1025,  1032, -1267,  1040,
    991     9583,   449, -1267,  1130,  1956,  7354,   605,  2178,   605,   717,
    992      581,   900, -1267, -1267,   616,   900, -1267, -1267, -1267,   862,
    993    -1267,   900,   198,  9019, -1267,   679,  1056,   691,  1057, -1267,
    994      917,   198, -1267, -1267,  8477,   198,  1058,  8860,   172, -1267,
    995     1307, -1267,   481,   505,   905, -1267,   905,  1060,  9760, -1267,
    996      905, 10447, -1267, -1267,  1061, -1267, -1267, -1267,   605, -1267,
    997    10373,   933, -1267,  7354,   792,  7667, -1267, -1267,   652,  1063,
    998     1065,  1900,  2267, -1267, -1267, 10515,  9760, -1267, -1267,  1067,
    999    -1267, -1267,  1064, -1267,  1067,  1066, 10178,  9760,  1054,  1059,
    1000      117,  1082,  1077,  1085,  1086, -1267,  1087,  1089,  6061, -1267,
    1001     9760, -1267,   694,  1520, -1267, -1267, -1267,    84,    84,  9701,
    1002     9760,  1090, -1267, -1267,   704, -1267,  9760, -1267, -1267,   876,
    1003    -1267, -1267, -1267, -1267,   525,   525,   813,   813,   848,   848,
    1004      848,   848,   509,   509,   861,   847,   853,   879,   915,  9760,
    1005       77,  9019,  1091,  1092,  1093,  1212, -1267, -1267, -1267, -1267,
    1006    -1267,  9019,   709, -1267,  7269, -1267,  6430,  8353, -1267, -1267,
    1007    -1267,  1793,  9019,   980,  1098,  1104,  1105,  1106,  1113,  1114,
    1008     1116, -1267,  3291,  1950, -1267, -1267, -1267, -1267, -1267, -1267,
    1009    -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1010    -1267,   987, -1267, -1267, -1267,   994, -1267, -1267, -1267, -1267,
    1011    -1267, -1267, -1267, -1267, -1267, -1267,  1117,  1119, -1267,   225,
    1012     1090,  9642, -1267, -1267, -1267,  9524,  1115, -1267, -1267, -1267,
    1013    -1267,   905,  5524,  1204, -1267, -1267, -1267, -1267,  1103,   225,
    1014    -1267, -1267,   987, -1267, -1267,   987,   154,   987, -1267, -1267,
    1015    -1267, -1267, -1267, -1267,  6307, -1267,   198, -1267, -1267,   507,
    1016      540,  6307,  1549,  9760,  2098, -1267, -1267,  1109,    38,  1109,
    1017    -1267,   905, -1267,    84, -1267, -1267,  8627,   983, -1267, -1267,
    1018    -1267,  1002,  1125,  1120, -1267, -1267,  1129,  1133, -1267,   792,
    1019     1698, -1267,   356, -1267,  2267,   994, -1267, -1267,  1138, 10515,
    1020     7582,  8119,  1142, -1267, -1267,  1134,  1146,  1127, -1267,  9760,
    1021     1153,   256,  1148, -1267,  1159,   605,  1159, -1267, -1267,  1159,
    1022    -1267,  1164,  1165,  1166,  1520, -1267, -1267, -1267,  9524, -1267,
    1023    -1267, -1267,  1163,  9760,   791, -1267,  9760, -1267,   791, -1267,
    1024    -1267,  9760, -1267,   673,   900, -1267, -1267, -1267, -1267, -1267,
    1025    -1267, -1267,   933,  8236, -1267, -1267,  6553,  1171, -1267,   707,
    1026      900, -1267,   728,   773,   900, -1267,   675,  7112, -1267, -1267,
    1027    -1267,  9019,  9019, -1267,  7742,  7742,  1172,  1167,  1168,  1175,
    1028    -1267,   419,   240,  1090, -1267,   791, -1267,  9583, -1267,  9760,
    1029      554, -1267,  5932,  1180,  1181,  9465,  1182,  1185,    -8,    40,
    1030       86,  9760,  1191,   198,  9760,  9760,  1177,   585,  1169, -1267,
    1031    -1267, -1267,  1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1032    -1267, -1267,   905,  1195,  9760, -1267,  9019,  9019,    84,  1201,
    1033    -1267,  8711, -1267, -1267,   906, -1267,  2098, -1267, -1267, -1267,
    1034    -1267,  1307, -1267, -1267,  1197, -1267, -1267, -1267, -1267,  1203,
    1035     1698, -1267, -1267,  1196, -1267,  1067, -1267, -1267,  2178,  1210,
    1036    -1267, -1267, -1267,   749,  1217, -1267,   117,  1214,  9760,  1200,
    1037      117,   117,  1224,   894,   900, -1267, -1267,  1040,  9760,  1230,
    1038     1163, -1267,   943, -1267, -1267,  1220, -1267,    78, -1267,  1231,
    1039     1220, -1267,  1234, -1267, -1267,   987,  1236,  6184,  1235,  1239,
    1040     1241, -1267, -1267,  1238, -1267, -1267,   987, -1267, -1267, -1267,
    1041    -1267,   987,  9760,  9760,   933,  1243, -1267, -1267, -1267, -1267,
    1042    -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9760,  9760,  1244,
    1043     1248,  1220, -1267, -1267,   905, -1267, -1267, -1267,  7070,  7582,
    1044     9760,  9760,  1318,  9760, -1267,  1233, -1267,  1246, -1267,  1250,
    1045     9760,  1254,  9760,  1075,  1255,    47,    84,  1805, -1267, -1267,
    1046     5524,  1256,   555, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
    1047    -1267, -1267,  9281, -1267,  7742,  1260, -1267, -1267,  7582,   561,
    1048      582, -1267,  1273,  1262,   862,  1283, -1267,   273, -1267, -1267,
    1049    -1267, -1267,   987,  1282, -1267, -1267,  1288,  1321, -1267, -1267,
    1050     1321,  1321,   791,  1292,  1699,  1866, -1267,  1295, -1267,  9019,
    1051    -1267, -1267, -1267, -1267,  1298, -1267,  9019,  9019,  9019, -1267,
    1052    -1267,  1300, -1267,  1301,  1310,  1311,   541,  7429,  7548, -1267,
    1053    -1267, -1267, -1267,  1305, -1267,  7817,   762,   783,  1317,   797,
    1054     5667, -1267, -1267, -1267,   610, -1267,   802,  1319,  1323,   198,
    1055     1369,   965, -1267, -1267,  9760, -1267,  9465,  9760, -1267, -1267,
    1056    -1267,  1320,  1326, -1267, -1267, -1267,  1324, -1267, -1267, -1267,
    1057    -1267, -1267, -1267,  7582,   862,  1330, -1267,  1313,   862,  9019,
    1058    -1267, -1267, -1267,   791, -1267, -1267, -1267, -1267, -1267, -1267,
    1059    -1267, -1267, -1267, -1267, -1267, -1267,  1337,  1340, -1267, -1267,
    1060    -1267, -1267, -1267, -1267, -1267,  1343, -1267,  1342, -1267,  9465,
    1061      276,  9760,  9465, -1267,  1346,  9760, -1267,   281,  1361,  1363,
    1062    -1267, -1267,  1355,  1356,  1339, -1267,   921, -1267, -1267, -1267,
    1063     1956,  2178,  1347, -1267,   259,  9760, -1267,   814, -1267,  1220,
    1064      791,   791,  1362,  1364,  1365,  1367, -1267, -1267,  7742,  1357,
    1065    -1267,  1438,  9760,  1352, -1267, -1267,  9375, -1267,   836, -1267,
    1066     1360,  9465,  1368, -1267, -1267,  1386, -1267,  1389, -1267,  1407,
    1067     1409, -1267,  1376,  7582, -1267, -1267, -1267,   862,   605,  1403,
    1068     1382,  1405,  1404,  1220,  1220, -1267, -1267, -1267, -1267, -1267,
    1069     9465,   265, -1267,   397, -1267, -1267,  6917, -1267, -1267,  1385,
    1070     9760, -1267,  9760,  6917,   198,  8860,   198,  8860,  1410, -1267,
    1071     1411, -1267, -1267,  1408, -1267, -1267,   856, -1267, -1267, -1267,
    1072    -1267,  1422,  1423, -1267,  9760,  9760, -1267, -1267,  1005,    59,
    1073    -1267, -1267,  1390, -1267,  1005, -1267, -1267,  2042,   605, -1267,
    1074    -1267,   198,  8860,   198,  8860,  1427,  1412,   605, -1267, -1267,
    1075    -1267, -1267,  9375,  1425,  1005,  6995,  9760,  9285,  1426,  1005,
    1076     1435,  2042,  2360, -1267, -1267, -1267,  1436, -1267, -1267, -1267,
    1077    -1267,  8119, -1267, -1267, -1267,  9148, -1267,  9375, -1267, -1267,
    1078     1416,  9058, -1267, -1267,  9285,   198,  2360,   198,  1441,  1445,
    1079      857, -1267,  9148, -1267, -1267, -1267,  9058, -1267, -1267, -1267,
    1080      198,   198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267
     1251       0,   137,   138,   139,   140,   140,   140,   140,   140,   141,
     1252     141,   141,   142,   142,   143,   143,   144,   144,   145,   146,
     1253     146,   147,   147,   147,   147,   147,   148,   148,   148,   148,
     1254     148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
     1255     150,   150,   151,   151,   152,   152,   152,   152,   152,   152,
     1256     152,   153,   153,   153,   154,   154,   155,   155,   155,   155,
     1257     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
     1258     155,   155,   156,   156,   157,   157,   157,   157,   158,   158,
     1259     159,   159,   159,   159,   160,   160,   160,   161,   161,   161,
     1260     162,   162,   162,   162,   162,   163,   163,   163,   164,   164,
     1261     165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
     1262     169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
     1263     173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
     1264     175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
     1265     178,   178,   178,   178,   178,   179,   180,   180,   181,   181,
     1266     182,   182,   182,   182,   183,   183,   184,   185,   185,   185,
     1267     185,   185,   185,   186,   186,   186,   187,   187,   188,   188,
     1268     189,   189,   190,   191,   191,   192,   192,   193,   193,   194,
     1269     194,   194,   194,   195,   195,   196,   196,   197,   197,   197,
     1270     198,   198,   199,   199,   199,   199,   199,   199,   199,   199,
     1271     199,   199,   200,   200,   200,   201,   201,   201,   201,   201,
     1272     202,   202,   202,   202,   203,   204,   204,   204,   204,   204,
     1273     205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
     1274     208,   209,   209,   210,   210,   210,   211,   211,   212,   212,
     1275     213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
     1276     218,   218,   219,   219,   220,   220,   220,   220,   220,   221,
     1277     221,   221,   222,   222,   222,   223,   223,   223,   223,   223,
     1278     224,   224,   225,   225,   226,   226,   226,   227,   227,   227,
     1279     227,   227,   228,   228,   229,   229,   229,   229,   230,   230,
     1280     231,   231,   231,   231,   232,   232,   232,   232,   233,   233,
     1281     234,   234,   235,   235,   236,   236,   236,   236,   236,   237,
     1282     236,   238,   238,   238,   239,   239,   240,   240,   240,   240,
     1283     240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
     1284     241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
     1285     242,   242,   242,   242,   243,   243,   244,   244,   244,   244,
     1286     245,   245,   245,   245,   246,   246,   246,   246,   247,   247,
     1287     247,   248,   248,   248,   248,   249,   249,   249,   250,   250,
     1288     251,   251,   252,   251,   251,   251,   253,   253,   254,   254,
     1289     255,   255,   255,   255,   256,   256,   256,   256,   257,   257,
     1290     258,   258,   258,   258,   258,   259,   259,   260,   261,   262,
     1291     262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
     1292     267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
     1293     270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
     1294     273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
     1295     276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
     1296     280,   280,   280,   281,   281,   281,   282,   282,   282,   282,
     1297     283,   283,   283,   284,   284,   285,   285,   285,   285,   285,
     1298     286,   286,   287,   287,   288,   288,   288,   288,   288,   289,
     1299     289,   289,   289,   290,   290,   290,   291,   292,   292,   294,
     1300     293,   293,   295,   295,   295,   296,   296,   297,   297,   297,
     1301     298,   298,   298,   298,   299,   299,   299,   300,   300,   301,
     1302     301,   302,   303,   302,   304,   304,   305,   305,   306,   306,
     1303     306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
     1304     311,   311,   312,   311,   311,   313,   313,   313,   314,   314,
     1305     314,   314,   314,   314,   314,   314,   314,   315,   315,   315,
     1306     316,   317,   317,   318,   318,   319,   319,   320,   321,   321,
     1307     322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
     1308     324,   325,   325,   326,   326,   326,   327,   327,   327,   327,
     1309     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
     1310     331,   332,   332,   332,   333,   333,   333,   334,   334,   334,
     1311     335,   335,   335,   336,   336,   336,   337,   337,   337,   337,
     1312     338,   338,   339,   339,   339,   340,   340,   340,   340,   341,
     1313     341,   341,   342,   342,   342,   342,   343,   343,   343,   344,
     1314     344,   344,   344,   345,   345,   345,   346,   346,   346,   346,
     1315     347,   347,   348,   348,   348,   349,   349,   350,   350,   351,
     1316     351,   351,   352,   352,   352,   352,   352,   353,   353,   353,
     1317     353,   354,   354,   354,   355,   355,   355,   356,   356,   356,
     1318     356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
     1319     359,   359,   359,   360,   360,   360,   361,   361,   361,   362,
     1320     362,   362,   362,   362,   362,   363,   363,   363,   364,   364,
     1321     364,   364,   364,   365,   365,   365,   365,   366,   366,   367,
     1322     367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
     1323     370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
     1324     371,   371,   371,   371,   372,   372,   372,   373,   373,   374,
     1325     374,   374,   374,   374,   374,   375,   375,   375,   375,   375,
     1326     375,   376,   377,   377,   378,   378,   379,   379
    10811327};
    10821328
    1083   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
    1084      Performed when YYTABLE does not specify something else to do.  Zero
    1085      means the default is an error.  */
     1329/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
     1330static const yytype_uint8 yyr2[] =
     1331{
     1332       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
     1333       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1334       2,     1,     1,     1,     3,     3,     1,     6,     4,     3,
     1335       7,     2,     3,     7,     2,     2,     7,     4,     1,     3,
     1336       0,     1,     1,     3,     1,     2,     6,     3,     7,     3,
     1337       7,     2,     2,     2,     0,     2,     1,     1,     1,     2,
     1338       2,     2,     2,     2,     2,     4,     2,     4,     6,     1,
     1339       4,     4,     1,     1,     1,     1,     1,     1,     1,     4,
     1340       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
     1341       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
     1342       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
     1343       4,     1,     1,     3,     0,     1,     1,     1,     1,     1,
     1344       1,     1,     1,     1,     1,     1,     1,     1,     6,     7,
     1345       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
     1346       1,     1,     1,     1,     6,     4,     2,     7,     1,     3,
     1347       1,     2,     1,     2,     1,     2,     2,     5,     7,     5,
     1348       9,     5,     9,     1,     3,     1,     1,     3,     3,     2,
     1349       1,     2,     2,     0,     1,     2,     3,     0,     1,     2,
     1350       3,     3,     4,     0,     1,     1,     2,     5,     7,     6,
     1351       6,     4,     3,     4,     2,     3,     2,     3,     3,     3,
     1352       3,     5,     3,     3,     4,     1,     5,     6,     5,     6,
     1353       9,    10,     9,    10,     2,     1,     2,     2,     2,     1,
     1354       6,     8,    10,    12,    14,     0,     1,     0,     1,     1,
     1355       3,     4,     7,     0,     1,     3,     1,     3,     1,     1,
     1356       1,     3,     1,     1,     1,     3,     0,     1,     3,     4,
     1357       1,     3,     1,     1,     3,     3,     3,     3,     3,     2,
     1358       3,     6,     3,     3,     4,     1,     2,     2,     3,     5,
     1359       7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
     1360       3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
     1361       1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
     1362       1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
     1363       5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
     1364       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1365       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1366       2,     2,     3,     3,     1,     3,     1,     2,     2,     2,
     1367       4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
     1368       2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
     1369       4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
     1370       2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
     1371       0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
     1372       2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
     1373       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
     1374       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
     1375       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
     1376       1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
     1377       1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
     1378       0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
     1379       2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
     1380       2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
     1381       4,     2,     1,     1,     1,     0,     2,     5,     5,    13,
     1382       1,     1,     3,     3,     2,     3,     3,     2,     4,     1,
     1383       6,     9,     0,    11,     1,     3,     3,     3,     1,     1,
     1384       5,     2,     5,     0,     1,     1,     3,     0,     1,     1,
     1385       1,     1,     0,     6,     2,     1,     2,     4,     2,     3,
     1386       3,     3,     4,     5,     5,     5,     6,     1,     1,     1,
     1387       3,     0,     5,     0,     1,     1,     2,     6,     1,     3,
     1388       0,     1,     4,     1,     1,     1,     1,     2,     1,     2,
     1389       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
     1390       8,     3,     2,     1,     2,     6,     8,     3,     2,     3,
     1391       3,     4,     4,     3,     1,     1,     1,     4,     6,     3,
     1392       2,     3,     3,     4,     4,     3,     2,     1,     2,     2,
     1393       1,     3,     2,     3,     3,     2,     4,     4,     3,     6,
     1394       8,     3,     2,     1,     2,     2,     2,     3,     3,     2,
     1395       4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
     1396       1,     1,     2,     3,     3,     2,     4,     6,     8,     1,
     1397       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
     1398       3,     5,     8,     3,     2,     3,     1,     5,     5,     6,
     1399       6,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1400       4,     4,     3,     5,     8,     3,     1,     2,     1,     2,
     1401       6,     5,     6,     7,     7,     1,     2,     2,     1,     2,
     1402       2,     3,     3,     1,     4,     4,     3,     8,     3,     1,
     1403       1,     2,     1,     1,     2,     3,     2,     3,     2,     3,
     1404       3,     2,     4,     3,     2,     3,     2,     4,     3,     2,
     1405       6,     6,     6,     7,     1,     2,     1,     1,     1,     2,
     1406       3,     2,     3,     2,     3,     3,     4,     2,     3,     4,
     1407       2,     5,     6,     6,     0,     1,     0,     2
     1408};
     1409
     1410/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
     1411   Performed when YYTABLE doesn't specify something else to do.  Zero
     1412   means the default is an error.  */
    10861413static const yytype_uint16 yydefact[] =
    10871414{
     
    12421569};
    12431570
    1244   /* YYPGOTO[NTERM-NUM].  */
    1245 static const yytype_int16 yypgoto[] =
    1246 {
    1247    -1267,  4051,  2784, -1267,   133, -1267,  1353,   867,  -240,   882,
    1248    -1267,   523,  -528,  -489,  -834, -1001, -1267,   -51,  4776,     0,
    1249    -1267,   793,   508,   531,   517,   553,  1006,  1001,  1009,  1004,
    1250     1015, -1267,   711,  -584,  4023,  -739, -1267, -1267,   606,  -227,
    1251     -674,  -263, -1267,   335, -1267,   384,  -963, -1267, -1267,   116,
    1252    -1267,  -732, -1049,   228, -1267, -1267, -1267, -1267,    57, -1266,
    1253    -1267, -1267, -1267, -1267, -1267, -1267,   302,  -964,    23, -1267,
    1254     -360, -1267,   484,   278, -1267,   155, -1267,  -355, -1267, -1267,
    1255    -1267,   538,  -612, -1267, -1267,     9,  -990,   219,  2319, -1267,
    1256    -1267, -1267,  -124, -1267,   110,    36,  -188,  1213,  3869, -1267,
    1257    -1267,    12,    61,   970,  1623, -1267,  1495, -1267, -1267,    21,
    1258     1827, -1267,  2153,  1937, -1267, -1267, -1267,  -641, -1267,   914,
    1259      919,   521,   695,   -93, -1267, -1267, -1267,   907,   693,  -521,
    1260    -1267,  -507,  -417,  -420, -1267, -1267,  -914,  -941,  -147,   -54,
    1261     1019,    19, -1267,  2311,   381,  -366,  -185,  -122,   649,   750,
    1262    -1267,   969, -1267,  2435,  1823,  -463,   901, -1267, -1267,   697,
    1263    -1267,  -225, -1267,   103, -1267, -1267, -1267, -1263,   412, -1267,
    1264    -1267, -1267,  1139, -1267,    42, -1267, -1267,  -832,   -94, -1230,
    1265     -162,  2364, -1267,  3117, -1267,   908, -1267,  -103,   120,  -184,
    1266     -183,  -178,     7,   -40,   -39,   -36,  1505,     4,    32,    71,
    1267       92,  -173,  -172,  -170,  -168,  -306,  -510,  -503,  -496,  -559,
    1268     -313,  -498, -1267, -1267,  -514,  1072,  1076,  1081,  1925,  4399,
    1269     -524,  -566,  -556,  -543,  -548, -1267,  -508,  -723,  -722,  -717,
    1270     -582,  -166,  -229, -1267, -1267,   283,   102,     6, -1267,  3380,
    1271      108,  -611,  -462
    1272 };
    1273 
    1274   /* YYDEFGOTO[NTERM-NUM].  */
     1571/* YYDEFGOTO[NTERM-NUM].  */
    12751572static const yytype_int16 yydefgoto[] =
    12761573{
     
    13021599};
    13031600
    1304   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
    1305      positive, shift that token.  If negative, reduce the rule whose
    1306      number is the opposite.  If YYTABLE_NINF, syntax error.  */
     1601/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     1602   STATE-NUM.  */
     1603#define YYPACT_NINF -1267
     1604static const yytype_int16 yypact[] =
     1605{
     1606    5235,  8510, -1267,   -14, -1267, -1267, -1267, -1267, -1267, -1267,
     1607   -1267,   -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1608   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,    84,    84,
     1609      84,  1541,   905,   123,  6677,   163, -1267, -1267, -1267, -1267,
     1610   -1267,   157, -1267, -1267, -1267,  1043,    81, -1267, -1267, -1267,
     1611   -1267,  4048, -1267, -1267, -1267, -1267,   225,   198, -1267,  1956,
     1612   -1267, -1267, -1267, -1267,   217,  1716,   371,    37,  6797, -1267,
     1613   -1267,  4048,   829, -1267, -1267,  1101,   380,  3172,   661,   839,
     1614    1101,   977, -1267, -1267,  1289,   340, -1267,  1101,  1140, -1267,
     1615     273, -1267,   439,   447, -1267, -1267, -1267, -1267,   337,   198,
     1616      84, -1267,    84, -1267, -1267, -1267, -1267,  7269,  1956, -1267,
     1617   -1267,  1956, -1267,   325, -1267,  7582, -1267, -1267,  2178,  8744,
     1618   -1267,   675,   675,   675, -1267, -1267, -1267,    84, -1267, -1267,
     1619   -1267,   360,   395,   436, -1267, -1267, -1267,   466, -1267, -1267,
     1620   -1267, -1267, -1267,   503,   515, -1267, -1267,   272,  8119,  1675,
     1621     307,   370,   377,   524,   565,   568,   580,  8828,  6307,   594,
     1622   -1267,  4677, -1267, -1267, -1267, -1267,   613, -1267,   271,  9583,
     1623    9583, -1267,   610,   339, -1267, -1267, -1267, -1267,   618,   379,
     1624     421,   468,    84,   603, -1267, -1267,  1716,  2591,   687, -1267,
     1625      90, -1267,    84,    84,   198, -1267, -1267,    91, -1267,    84,
     1626      84, -1267,  2973,   652,   657,   675,  6831, -1267, -1267, -1267,
     1627    4048, -1267, -1267,  1101, -1267, -1267, -1267,   198, -1267,  1956,
     1628     225, -1267,  7235, -1267,   675,   675,   675,   198, -1267,  1541,
     1629   -1267,  3826, -1267, -1267,   642,   675, -1267,   675, -1267,   157,
     1630    8119, -1267,   665, -1267,   905,   685,   675, -1267,  1541,   689,
     1631     710, -1267,  6677,   291, -1267, -1267, -1267,  8477, -1267, -1267,
     1632    4354, -1267,   687,     8,  9760,  8744,  2178,  2973, -1267,   101,
     1633   -1267, -1267,  7582,  1956,   740, 10515, -1267, -1267,   378, -1267,
     1634   10178,   730,   705,  9819,   773,  9760,  9878, -1267,   794, -1267,
     1635   -1267, -1267, -1267, -1267, -1267,  9937,  9937,  7885,    81, -1267,
     1636   -1267, -1267, -1267, -1267, -1267, -1267,   834, -1267,  1184,  2546,
     1637    8119,  9760, -1267,   525,   415,   844,   338,   853,   823,   831,
     1638     841,   886,    56, -1267, -1267, -1267,   518, -1267,   528, -1267,
     1639   -1267,  1675, -1267, -1267,   456,   900, -1267,   490,   900, -1267,
     1640   -1267,  7269, -1267,   940,   946,  8236, -1267, -1267,   536,  1525,
     1641    7667,  6831,  1101, -1267,  1101,   675,   675, -1267, -1267, -1267,
     1642   -1267, -1267, -1267,   675,  7269,  1956, -1267, -1267,  8828,  1786,
     1643   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9524,
     1644    9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1645   -1267, -1267, -1267, -1267, -1267,  2178, -1267,   446,   945,   961,
     1646     968,   800,   973,   976,   981,  2591, -1267, -1267,   939,   225,
     1647     982, -1267, -1267,   987, -1267, -1267, -1267,  8477, -1267, -1267,
     1648   -1267, -1267, -1267,  2973, -1267,  8119,  8119, -1267,   675,  2178,
     1649   10547,  7742, -1267, -1267, -1267, -1267,  8477,     8, -1267, -1267,
     1650    1101,   198, -1267, -1267,  8477, -1267,  5404, -1267, -1267,   675,
     1651     675,   579,  8594,   994,   993,   983,   998,   675, -1267, -1267,
     1652   -1267, -1267,  9019, -1267,   616, 10212, -1267,   198,  1004, -1267,
     1653    2178, 10298,  9996, -1267, -1267, -1267, -1267,   843,  2973, -1267,
     1654    7742,   687,  5806, -1267, -1267, -1267,  1900,   626,   990,   905,
     1655   10515,  1647,  7582, -1267, 10515, -1267, -1267, -1267, -1267,   627,
     1656   -1267,  1013,   705,   154,  7885, -1267,  8860, -1267, -1267,  7885,
     1657   -1267,  8002,  7885, -1267, -1267,    81, -1267,   640,  1015,   658,
     1658    1021, -1267, -1267,  6061, -1267, -1267,   315, -1267, -1267,  9760,
     1659   -1267,   368,  9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1660   -1267, -1267, -1267, -1267, -1267,  9760, -1267, -1267,  9760,  9760,
     1661    9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,
     1662    9760,  9760,  9760,  9760,  9760,  9760,  3432,   518,  1212, -1267,
     1663   -1267,    84,    84, -1267, -1267,  8119, -1267, -1267,   987,   291,
     1664   -1267,   987, 10055, -1267, -1267,  8828,  6061,  1020, -1267,  8744,
     1665   -1267, -1267,   613, -1267,  1023,  1793,  1025,  1950,   136,   990,
     1666   -1267,    84,    84,   990,   407, -1267,    84,    84,   987, -1267,
     1667   -1267,    84,    84, -1267,   900,  8944,  1956, 10447,   356,   541,
     1668    8944, -1267,  4354, -1267,   990, -1267,  7269, -1267,   126,  7354,
     1669    7354,  1956,  9642,  1003, -1267,   789,  1008,  1010, -1267,  1026,
     1670    9583,   449, -1267,  1114,  1956,  7354,   291,  2178,   291,   687,
     1671     707,   900, -1267, -1267,   766,   900, -1267, -1267, -1267,   705,
     1672   -1267,   900,   198,  9019, -1267,   643,  1041,   647,  1045, -1267,
     1673     940,   198, -1267, -1267,  8477,   198,  1042,  8860,    81, -1267,
     1674    1307, -1267,   471,   481,   905, -1267,   905,  1047,  9760, -1267,
     1675     905, 10447, -1267, -1267,  1056, -1267, -1267, -1267,   291, -1267,
     1676   10373,   946, -1267,  7354,   694,  7667, -1267, -1267,   613,  1052,
     1677    1057,  1900,  2267, -1267, -1267, 10515,  9760, -1267, -1267,  1055,
     1678   -1267, -1267,  1048, -1267,  1055,  1063, 10178,  9760,  1046,  1051,
     1679     117,  1065,  1062,  1070,  1074, -1267,  1081,  1082,  6061, -1267,
     1680    9760, -1267,   658,  1520, -1267, -1267, -1267,    84,    84,  9701,
     1681    9760,  1077, -1267, -1267,   679, -1267,  9760, -1267, -1267,   821,
     1682   -1267, -1267, -1267, -1267,   525,   525,   415,   415,   844,   844,
     1683     844,   844,   338,   338,   853,   823,   831,   841,   886,  9760,
     1684     397,  9019,  1085,  1086,  1087,  1212, -1267, -1267, -1267, -1267,
     1685   -1267,  9019,   691, -1267,  7269, -1267,  6430,  8353, -1267, -1267,
     1686   -1267,  1793,  9019,   856,  1089,  1091,  1092,  1093,  1096,  1098,
     1687    1104, -1267,  3291,  1950, -1267, -1267, -1267, -1267, -1267, -1267,
     1688   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1689   -1267,   987, -1267, -1267, -1267,   990, -1267, -1267, -1267, -1267,
     1690   -1267, -1267, -1267, -1267, -1267, -1267,  1105,  1106, -1267,   225,
     1691    1077,  9642, -1267, -1267, -1267,  9524,  1108, -1267, -1267, -1267,
     1692   -1267,   905,  5524,  1197, -1267, -1267, -1267, -1267,  1095,   225,
     1693   -1267, -1267,   987, -1267, -1267,   987,  1117,   987, -1267, -1267,
     1694   -1267, -1267, -1267, -1267,  6307, -1267,   198, -1267, -1267,   505,
     1695     507,  6307,  1549,  9760,  2098, -1267, -1267,  1099,    38,  1099,
     1696   -1267,   905, -1267,    84, -1267, -1267,  8627,   983, -1267, -1267,
     1697   -1267,   993,  1120,  1115, -1267, -1267,  1122,  1123, -1267,   694,
     1698    1698, -1267,   576, -1267,  2267,   990, -1267, -1267,  1126, 10515,
     1699    7582,  8119,  1129, -1267, -1267,  1125,  1135,  1118, -1267,  9760,
     1700    1141,   190,  1136, -1267,  1142,   291,  1142, -1267, -1267,  1142,
     1701   -1267,  1147,  1152,  1154,  1520, -1267, -1267, -1267,  9524, -1267,
     1702   -1267, -1267,  1163,  9760,   986, -1267,  9760, -1267,   986, -1267,
     1703   -1267,  9760, -1267,   894,   900, -1267, -1267, -1267, -1267, -1267,
     1704   -1267, -1267,   946,  8236, -1267, -1267,  6553,  1171, -1267,   898,
     1705     900, -1267,   920,   936,   900, -1267,   675,  7112, -1267, -1267,
     1706   -1267,  9019,  9019, -1267,  7742,  7742,  1172,  1167,  1168,  1175,
     1707   -1267,   670,   111,  1077, -1267,   986, -1267,  9583, -1267,  9760,
     1708     540, -1267,  5932,  1180,  1181,  9465,  1182,  1185,    -8,    40,
     1709      86,  9760,  1191,   198,  9760,  9760,  1177,   585,  1169, -1267,
     1710   -1267, -1267,  1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1711   -1267, -1267,   905,  1195,  9760, -1267,  9019,  9019,    84,  1201,
     1712   -1267,  8711, -1267, -1267,   862, -1267,  2098, -1267, -1267, -1267,
     1713   -1267,  1307, -1267, -1267,  1198, -1267, -1267, -1267, -1267,  1202,
     1714    1698, -1267, -1267,  1196, -1267,  1055, -1267, -1267,  2178,  1210,
     1715   -1267, -1267, -1267,   704,  1217, -1267,   117,  1214,  9760,  1200,
     1716     117,   117,  1224,   950,   900, -1267, -1267,  1026,  9760,  1230,
     1717    1163, -1267,   943, -1267, -1267,  1220, -1267,    78, -1267,  1231,
     1718    1220, -1267,  1234, -1267, -1267,   987,  1236,  6184,  1235,  1239,
     1719    1241, -1267, -1267,  1238, -1267, -1267,   987, -1267, -1267, -1267,
     1720   -1267,   987,  9760,  9760,   946,  1243, -1267, -1267, -1267, -1267,
     1721   -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9760,  9760,  1244,
     1722    1248,  1220, -1267, -1267,   905, -1267, -1267, -1267,  7070,  7582,
     1723    9760,  9760,  1318,  9760, -1267,  1233, -1267,  1246, -1267,  1250,
     1724    9760,  1254,  9760,   938,  1255,    47,    84,  1805, -1267, -1267,
     1725    5524,  1256,   554, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
     1726   -1267, -1267,  9281, -1267,  7742,  1260, -1267, -1267,  7582,   555,
     1727     561, -1267,  1273,  1262,   705,  1283, -1267,   256, -1267, -1267,
     1728   -1267, -1267,   987,  1282, -1267, -1267,  1288,  1321, -1267, -1267,
     1729    1321,  1321,   986,  1292,  1699,  1866, -1267,  1295, -1267,  9019,
     1730   -1267, -1267, -1267, -1267,  1298, -1267,  9019,  9019,  9019, -1267,
     1731   -1267,  1300, -1267,  1301,  1310,  1311,   725,  7429,  7548, -1267,
     1732   -1267, -1267, -1267,  1305, -1267,  7817,   709,   755,  1317,   758,
     1733    5667, -1267, -1267, -1267,   582, -1267,   768,  1319,  1323,   198,
     1734    1369,   935, -1267, -1267,  9760, -1267,  9465,  9760, -1267, -1267,
     1735   -1267,  1320,  1326, -1267, -1267, -1267,  1324, -1267, -1267, -1267,
     1736   -1267, -1267, -1267,  7582,   705,  1330, -1267,  1313,   705,  9019,
     1737   -1267, -1267, -1267,   986, -1267, -1267, -1267, -1267, -1267, -1267,
     1738   -1267, -1267, -1267, -1267, -1267, -1267,  1337,  1340, -1267, -1267,
     1739   -1267, -1267, -1267, -1267, -1267,  1343, -1267,  1342, -1267,  9465,
     1740     276,  9760,  9465, -1267,  1346,  9760, -1267,   281,  1361,  1363,
     1741   -1267, -1267,  1355,  1356,  1339, -1267,   901, -1267, -1267, -1267,
     1742    1956,  2178,  1347, -1267,   401,  9760, -1267,   783, -1267,  1220,
     1743     986,   986,  1362,  1364,  1365,  1367, -1267, -1267,  7742,  1357,
     1744   -1267,  1438,  9760,  1352, -1267, -1267,  9375, -1267,   791, -1267,
     1745    1360,  9465,  1368, -1267, -1267,  1386, -1267,  1389, -1267,  1407,
     1746    1409, -1267,  1376,  7582, -1267, -1267, -1267,   705,   291,  1403,
     1747    1382,  1405,  1404,  1220,  1220, -1267, -1267, -1267, -1267, -1267,
     1748    9465,   240, -1267,   474, -1267, -1267,  6917, -1267, -1267,  1385,
     1749    9760, -1267,  9760,  6917,   198,  8860,   198,  8860,  1410, -1267,
     1750    1411, -1267, -1267,  1408, -1267, -1267,   802, -1267, -1267, -1267,
     1751   -1267,  1422,  1423, -1267,  9760,  9760, -1267, -1267,   979,    59,
     1752   -1267, -1267,  1390, -1267,   979, -1267, -1267,  2042,   291, -1267,
     1753   -1267,   198,  8860,   198,  8860,  1427,  1412,   291, -1267, -1267,
     1754   -1267, -1267,  9375,  1425,   979,  6995,  9760,  9285,  1426,   979,
     1755    1435,  2042,  2360, -1267, -1267, -1267,  1436, -1267, -1267, -1267,
     1756   -1267,  8119, -1267, -1267, -1267,  9148, -1267,  9375, -1267, -1267,
     1757    1416,  9058, -1267, -1267,  9285,   198,  2360,   198,  1441,  1445,
     1758     814, -1267,  9148, -1267, -1267, -1267,  9058, -1267, -1267, -1267,
     1759     198,   198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267
     1760};
     1761
     1762/* YYPGOTO[NTERM-NUM].  */
     1763static const yytype_int16 yypgoto[] =
     1764{
     1765   -1267,  4051,  2784, -1267,   133, -1267,  1353,   867,  -240, -1267,
     1766   -1267,   504,  -528,  -489,  -834, -1001, -1267,   -77,  4776,     0,
     1767   -1267,   793,   489,   531,   722,   534,   999,  1001,  1005,  1007,
     1768    1002, -1267,   711,  -584,  4023,  -739, -1267, -1267,   606,  -227,
     1769    -674,  -263, -1267,   335, -1267,   382,  -963, -1267, -1267,   119,
     1770   -1267,  -732, -1049,   228, -1267, -1267, -1267, -1267,    54, -1266,
     1771   -1267, -1267, -1267, -1267, -1267, -1267,   302, -1050,    23, -1267,
     1772    -171, -1267,   482,   277, -1267,   153, -1267,  -355, -1267, -1267,
     1773   -1267,   538,  -612, -1267, -1267,     9,  -990,   219,  2319, -1267,
     1774   -1267, -1267,  -124, -1267,   110,    36,  -188,  1213,  3869, -1267,
     1775   -1267,    12,    61,   970,  1623, -1267,  1495, -1267, -1267,    21,
     1776    1827, -1267,  2153,  1937, -1267, -1267, -1267,  -641, -1267,   911,
     1777     914,   521,   695,   -93, -1267, -1267, -1267,   906,   690,  -521,
     1778   -1267,  -507,  -417,  -420, -1267, -1267,  -914,  -941,  -147,   -54,
     1779    1019,    19, -1267,  2311,   381,  -366,  -185,  -122,   649,   745,
     1780   -1267,   964, -1267,  2435,  1823,  -463,   895, -1267, -1267,   693,
     1781   -1267,  -225, -1267,   103, -1267, -1267, -1267, -1263,   408, -1267,
     1782   -1267, -1267,  1139, -1267,    42, -1267, -1267,  -832,   -94, -1230,
     1783    -162,  2364, -1267,  3117, -1267,   908, -1267,  -103,   120,  -184,
     1784    -183,  -178,     7,   -40,   -39,   -36,  1505,     4,    32,    71,
     1785      92,  -173,  -172,  -170,  -168,  -306,  -510,  -503,  -496,  -559,
     1786    -313,  -498, -1267, -1267,  -514,  1064,  1072,  1076,  1925,  4399,
     1787    -524,  -566,  -556,  -543,  -548, -1267,  -508,  -723,  -722,  -717,
     1788    -582,  -166,  -229, -1267, -1267,   283,   102,     6, -1267,  3380,
     1789     108,  -611,  -462
     1790};
     1791
     1792/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
     1793   positive, shift that token.  If negative, reduce the rule which
     1794   number is the opposite.  If YYTABLE_NINF, syntax error.  */
     1795#define YYTABLE_NINF -529
    13071796static const yytype_int16 yytable[] =
    13081797{
     
    13261815     952,    98,   900,   108,   146,   953,  1178,    33,  -239,   591,
    13271816     713,  1161,   918,  1285,   326,   190,   187,   187,    98,   566,
    1328      154,    98,   177,   340,   162,  1235,   846,   740,   665,   667,
     1817     154,    98,   177,   340,   162,  1235,   846,   157,   665,   667,
    13291818     291,   804,   267,   253,   418,   410,   410,  1180,   805,   790,
    1330       51,   971,   847,   847,   479,   806,   410,   162,   155,    58,
     1819      51,  1157,   847,   847,   479,   806,   410,   162,   155,    58,
    13311820     117,  1512,   210,   167,   660,  1424,   151,   152,   847,   441,
    1332      153,  1314,   939,  1317,  1319,   808,   144,   524,   437,   474,
     1821     153,  1314,   939,  1317,  1319,   808,   144,  1158,   437,   474,
    13331822     310,   177,   429,   879,   177,   809,   432,  1061,  1527,   817,
    13341823    1050,   596,    51,    58,   999,   819,   330,   156,   810,    99,
    1335      272,   716,   728,  1152,    71,   272,   267,   267,  1058,    98,
     1824     272,   716,   728,  1152,    71,   272,   267,   267,   729,    98,
    13361825     148,   976,   115,    78,   162,    52,   326,   517,    78,   407,
    1337     1167,    98,   517,   440,   604,   517,   847,   211,   157,  1000,
     1826    1167,    98,   517,   440,   604,   517,   847,   211,   730,  1000,
    13381827     221,   804,   481,   469,   461,  1184,  1185,   310,   805,   498,
    1339     1074,   649,   657,   987,   729,   806,   397,   190,   432,  1065,
     1828    1074,   649,   657,   987,  1099,   806,   397,   190,   432,  1065,
    13401829     310,   486,   469,    72,   707,   695,   172,  1152,   434,   886,
    1341      469,   706,  1382,  1383,   730,   281,   568,  1382,  1383,   664,
     1830     469,   706,  1382,  1383,  1100,   281,   568,  1382,  1383,   664,
    13421831      98,   149,   445,   519,   164,   669,   169,   182,   372,   780,
    1343     1157,   115,    98,  1150,  1151,   345,   160,   584,   330,   597,
     1832    1454,   115,    98,  1150,  1151,   345,   160,   584,   330,   597,
    13441833     615,   458,   177,   808,   108,  1097,   795,  1181,  1051,   407,
    1345      170,   972,    65,   809,   620,  1454,  1158,   470,   620,  1224,
    1346     1099,   977,    98,  1003,   836,   657,   810,   583,   837,  1407,
    1347      434,   588,   988,   202,   624,   282,   477,  1307,   628,   112,
    1348     1100,  1158,   174,  1408,  1384,   267,   816,   842,   164,  1393,
    1349      621,   833,    43,    44,   625,   187,   177,  1308,   696,  1482,
    1350     1166,   213,   372,   177,   112,  1487,   141,   142,   167,   112,
    1351      838,   141,   142,   267,   839,   310,   310,    43,    44,   267,
    1352      752,   620,    43,    44,   254,  1507,  1167,  1152,    78,  -294,
    1353     1514,   439,   112,  1167,  1138,  1140,  1106,   248,    33,   591,
    1354      251,    98,   115,   593,   591,    43,    44,    78,   244,   376,
    1355      852,   326,   326,  1082,  1419,    78,  1085,  -524,   386,   598,
    1356      267,    58,   838,  1470,   706,   377,  1081,  1118,   267,  1369,
    1357      620,   177,    51,   757,   387,   372,   712,   869,   680,    99,
    1358      940,   253,   115,   433,    71,  1167,  1223,   658,   177,   389,
    1359      604,   118,   177,    78,   310,    52,   115,   998,  1498,   310,
    1360     1500,   310,   310,   -12,  1215,   390,   695,  1455,   857,   743,
    1361      824,   264,   596,   345,  1511,   190,   486,   470,   326,   416,
    1362      486,  1456,   213,   330,   330,  -112,  1413,  1414,  -448,  -112,
    1363      519,   391,   519,    72,  1522,   519,   470,   326,   519,   333,
     1834     170,   972,    65,   809,   620,   112,  1158,   470,   620,  1224,
     1835    1307,   977,    98,  1003,   202,   657,   810,   583,    43,    44,
     1836     434,   588,   988,  -294,   624,   282,   477,  1470,   628,   112,
     1837    1308,   376,   174,   248,  1384,   267,   816,   842,   164,  1393,
     1838     621,   833,    43,    44,   625,   187,   177,   377,   696,  1482,
     1839    1166,   213,   372,   177,   112,  1487,   141,   142,   167,   876,
     1840     253,   332,  1498,   267,  1500,   310,   310,    43,    44,   267,
     1841     752,   620,   555,   556,   254,  1507,  1167,  1152,    78,   251,
     1842    1514,   439,   112,  1167,  1138,  1140,  1106,  -524,    33,   591,
     1843     253,    98,   115,   593,   591,    43,    44,    78,   244,   386,
     1844     264,   326,   326,  1082,  1419,    78,  1085,   557,   558,   598,
     1845     267,    58,   836,   -12,   706,   387,   837,  1118,   267,  1369,
     1846     620,   177,    51,   757,   333,   372,   712,   869,   680,    99,
     1847     940,   334,   115,   433,    71,  1167,  1223,   658,   177,   389,
     1848     604,   118,   177,    78,   310,    52,   115,   998,  -448,   310,
     1849     491,   310,   310,   492,  1215,   390,   695,   740,   857,   743,
     1850     824,  1407,   596,   345,  1511,   190,   486,   470,   326,   416,
     1851     486,   971,   213,   330,   330,  1408,  1413,  1414,   551,   552,
     1852     519,   391,   519,    72,  1522,   519,   470,   326,   519,  -449,
    13641853     469,  1526,   435,   867,   470,   433,  1000,   392,  1106,   253,
    13651854     332,   410,   443,   900,   858,   980,   635,   568,   568,   576,
    1366      658,   410,   707,  1259,  1260,   310,   915,   897,  1050,  -449,
    1367      521,  1147,  1148,   859,   108,   620,   345,  1149,   574,   615,
    1368      704,   393,    65,   164,   575,   597,  1343,   597,   797,  1039,
    1369      330,   901,    98,   555,   556,   491,   598,   394,   492,   696,
    1370       39,   326,   175,   176,    42,   620,   277,   902,   998,   330,
    1371      620,   793,   615,    43,    44,   903,   620,   901,   279,   620,
    1372      620,   579,   518,   410,   695,   835,  1195,  1196,   557,   558,
    1373      280,   904,   676,  1062,   695,   620,   548,   267,   575,   371,
    1374      849,   832,   549,   550,  1428,   695,   588,  1332,  1345,   287,
    1375      903,  1333,   841,   864,  1010,     2,   207,     4,     5,     6,
    1376        7,  1392,    43,    44,  1164,  1164,  1063,   115,   440,   112,
    1377      894,  1298,   334,   330,  1055,     8,     9,    10,    11,    12,
    1378     1165,  1290,    43,    44,   870,    78,   410,  1299,   512,   371,
    1379      378,    58,  1300,   620,   920,   615,  1093,   335,   398,   399,
    1380      706,   712,   712,   680,   400,   803,    33,   598,  1301,   401,
    1381      402,    78,   403,   834,   404,   707,   336,   696,   593,   873,
    1382      740,   410,    37,  1016,    38,   684,  1213,   696,   345,   337,
    1383     1217,   697,   743,   743,    36,   498,  1346,   698,   696,   177,
    1384     1428,   486,   213,   338,   714,  1428,  1462,   725,  1463,  1356,
    1385      715,   739,  1172,   726,   177,   375,   213,   740,   951,   952,
    1386      384,   567,   899,   410,   953,  1428,   673,   177,   388,    47,
    1387       48,  1409,  1428,   408,   470,   568,  1123,   521,   410,   521,
    1388      396,   406,   521,   880,   620,   521,   983,    -3,  1421,   740,
    1389      898,   597,   699,   425,  1068,   882,  1068,   742,  1142,   410,
    1390      470,   740,  1509,   597,  1460,    47,    48,   591,   965,  1321,
    1391     1134,  1460,   410,   978,   966,   426,  1323,  1324,  1325,   698,
     1855     658,   410,   707,  1259,  1260,   310,   915,   897,  1050,   277,
     1856     521,  1147,  1148,   859,   108,   620,   345,  1149,   393,   615,
     1857     704,   901,    65,   164,  1455,   597,  1343,   597,   797,  1039,
     1858     330,   903,    98,   579,   394,   410,   598,   902,  1456,   696,
     1859      39,   326,   175,   176,    42,   620,   279,   904,   998,   330,
     1860     620,   793,   615,    43,    44,   901,   620,   903,   280,   620,
     1861     620,   567,   518,   410,   695,   835,  1195,  1196,   335,    47,
     1862      48,  1062,   574,  1063,   695,   620,   548,   267,   575,   371,
     1863     849,   832,   549,   550,  1428,   695,   588,   838,  1345,   287,
     1864    1164,   839,   841,   864,  1010,     2,   207,     4,     5,     6,
     1865       7,  1392,    43,    44,  1164,  1298,  1165,   115,   440,   336,
     1866     894,  1300,   337,   330,  1055,     8,     9,    10,    11,    12,
     1867    1290,  1299,   838,   676,   338,    78,  1081,  1301,   512,   575,
     1868     378,    58,   740,   620,   920,   615,  1093,   371,   398,   399,
     1869     706,   712,   712,   680,   400,   803,    33,   598,  1346,   401,
     1870     402,    78,   403,   834,   404,   707,   375,   696,   593,   384,
     1871     697,   388,    37,  1016,    38,   684,   698,   696,   345,   396,
     1872     714,   725,   743,   743,    36,   498,   715,   726,   696,   177,
     1873    1428,   486,   213,   408,   739,  1428,  1462,   880,  1463,  1356,
     1874     740,   882,  1172,   740,   177,   425,   213,   740,   951,   952,
     1875     426,   742,   899,   410,   953,  1428,   673,   177,   448,    47,
     1876      48,  1409,  1428,  -372,   470,   568,  -112,   521,   291,   521,
     1877    -112,   406,   521,   965,   620,   521,   983,    -3,  1421,   966,
     1878     898,   597,   699,  -401,  1068,   978,  1068,   919,  1142,   596,
     1879     470,   698,  1509,   597,  1460,    47,    48,   591,  1211,  1321,
     1880     870,  1460,   410,  1339,   575,   459,  1323,  1324,  1325,   740,
    13921881     979,   803,   598,     2,   207,     4,     5,     6,     7,   518,
    1393     1335,  1137,  -295,   596,   518,   253,   332,   518,   704,     8,
    1394        9,    10,    11,    12,   695,   695,   940,   213,   448,   177,
    1395      940,   940,   310,  1211,   229,   112,  -372,    50,   114,   575,
    1396     1480,  1421,  1111,  1508,    71,  1112,  1339,  1113,    43,    44,
    1397       33,  -401,   740,    78,   345,   731,  1139,   732,   596,  1368,
    1398      733,   345,   894,   737,   894,  1162,   797,  1340,   114,   114,
    1399       37,    50,    38,   740,   459,   919,   115,   596,    36,   695,
    1400      695,  1342,    50,    47,    48,   460,  1347,   740,    50,   920,
    1401      920,   803,   740,    72,   712,   482,    50,  1039,  1410,   502,
    1402      115,   310,    50,   598,  1407,    50,   551,   552,    50,  1086,
    1403      553,   554,   680,  1266,  1267,   291,  1269,   696,   696,   524,
    1404     1429,   114,   114,  1274,   743,  1276,   740,   559,   560,  1494,
    1405      684,   707,   506,   657,   108,   486,  1088,   326,   897,   561,
    1406     1476,  1532,    65,   511,  1305,    50,  1477,   575,    50,   112,
    1407     -296,   141,   142,   345,   562,    50,   407,     8,     9,    10,
    1408       11,    12,    43,    44,  1206,   969,   966,   878,   418,   653,
    1409      410,   704,   696,   696,   620,   620,   885,  1220,  1106,   410,
    1410      887,   563,  1064,   564,   898,   339,    50,   112,    33,   832,
    1411      332,   410,   310,  1355,  1111,  1352,  1353,  1112,    50,  1113,
    1412       43,    44,   108,   585,  1169,   479,   332,   410,   707,   330,
    1413     1402,   966,   230,    78,   598,   231,    36,   440,   235,    -3,
    1414      237,  1382,  1383,    50,    50,  1294,   650,   246,  1228,   764,
    1415      765,   115,  1230,  1231,  1363,   651,   894,   652,  1363,    50,
    1416      654,   894,   768,   769,   770,   771,  1381,    50,   508,  1389,
    1417      920,    58,   655,    72,   766,   767,    50,   656,   267,    50,
    1418      661,   834,   695,   817,   332,   596,   114,   680,   659,   695,
     1882    1335,  1332,  -295,   502,   518,  1333,   460,   518,   704,     8,
     1883       9,    10,    11,    12,   695,   695,   940,   213,   482,   177,
     1884     940,   940,   310,   112,   229,   141,   142,    50,   114,  1340,
     1885    1480,  1421,  1342,  1508,    71,   740,    43,    44,   740,   873,
     1886      33,   410,  1347,    78,   345,   731,   506,   732,   740,  1368,
     1887     733,   345,   894,   737,   894,  1162,   797,  1410,   114,   114,
     1888      37,    50,    38,  1407,   852,  1429,   115,   511,    36,   695,
     1889     695,   740,    50,   418,   653,   410,  1476,   524,    50,   920,
     1890     920,   803,  1477,    72,   712,  1213,    50,  1039,  1532,  1217,
     1891     115,   310,    50,   598,   575,    50,   553,   554,    50,  1086,
     1892     969,   966,   680,  1266,  1267,   561,  1269,   696,   696,   559,
     1893     560,   114,   114,  1274,   743,  1276,   479,   332,   410,  1494,
     1894     684,   707,   562,   657,   108,   486,  1088,   326,   897,   817,
     1895     332,   596,    65,   563,  1305,    50,   332,   410,    50,   112,
     1896    -296,   141,   142,   345,   564,    50,   407,     8,     9,    10,
     1897      11,    12,    43,    44,  1206,  1352,  1353,   878,  1277,  1278,
     1898    1279,   704,   696,   696,   620,   620,   885,  1123,  1106,   410,
     1899     887,  1134,  1064,   410,   898,   339,    50,   112,    33,   832,
     1900    1402,   966,   310,  1355,  1111,  1382,  1383,  1112,    50,  1113,
     1901      43,    44,   108,  1137,  1169,   596,  1230,  1231,   707,   330,
     1902     764,   765,   230,    78,   598,   231,    36,   440,   235,  1139,
     1903     237,   596,   659,    50,    50,  1294,   585,   246,  1228,   650,
     1904     112,   115,    -3,  1220,  1363,   410,   894,  1111,  1363,    50,
     1905    1112,   894,  1113,    43,    44,   651,  1381,    50,   508,  1389,
     1906     920,    58,   652,    72,   766,   767,    50,   654,   267,    50,
     1907     655,   834,   695,   772,   773,   656,   114,   680,   661,   695,
    14191908     695,   695,   258,   546,   547,     2,   207,     4,     5,     6,
    1420        7,   114,   772,   773,  1388,   114,   685,    39,   688,    50,
    1421      114,    42,   686,  1427,   108,   690,  -243,   345,  1431,   716,
    1422       43,    44,   470,    50,    50,  1277,  1278,  1279,   546,   727,
    1423       50,   741,   749,  -297,   -14,   798,   800,    50,  1295,  1087,
    1424        8,     9,    10,    11,    12,   811,    45,  1453,   658,   -15,
    1425      855,   861,   695,   899,    47,    48,   854,  1444,   272,   115,
    1426      881,   883,    37,   546,    38,  -422,   888,   931,   220,   908,
    1427      933,    33,  -528,   230,   923,   696,   898,   715,   937,   684,
    1428      310,   898,   696,   696,   696,   938,   944,   945,    50,   946,
    1429      947,   948,    71,   949,   620,   973,   974,   975,   115,    36,
    1430      963,    78,   989,    68,   119,    50,    50,  1086,   990,   991,
    1431      992,  1060,     8,     9,    10,    11,    12,   993,   994,   213,
    1432      995,  -410,    50,  -409,  1018,  1052,    50,   704,  1054,  1075,
    1433     1076,    58,  1521,   893,  1088,  1077,   636,    68,  1521,  1078,
    1434      496,    72,  1084,    33,   740,   696,  1094,   620,   620,  1521,
    1435     1095,  1096,    50,  1521,   161,   272,  1098,  1405,  1101,   525,
    1436      310,   108,    50,   526,   527,   528,  1520,   958,  1103,  1104,
    1437     1105,    36,  1169,  1108,   222,  1132,  1153,  1154,  1155,  1156,
     1909       7,   114,   685,   686,  1388,   114,   690,    39,   688,    50,
     1910     114,    42,  -243,  1427,   108,   716,   727,   345,  1431,   741,
     1911      43,    44,   470,    50,    50,   749,   798,   -14,   546,   800,
     1912      50,   811,   -15,  -297,   854,   861,   855,    50,  1295,  1087,
     1913       8,     9,    10,    11,    12,   881,    45,  1453,   658,   883,
     1914     888,   931,   695,   899,    47,    48,   908,  1444,   272,   115,
     1915    -422,  -528,    37,   546,    38,   715,   923,   933,   220,   944,
     1916     937,    33,   945,   230,   946,   696,   898,   938,   947,   684,
     1917     310,   898,   696,   696,   696,   948,   949,   963,    50,   973,
     1918     974,   975,    71,   989,   620,   990,   991,   992,   115,    36,
     1919     993,    78,   994,    68,   119,    50,    50,  1086,   995,  -410,
     1920    -409,  1060,     8,     9,    10,    11,    12,  1018,  1052,   213,
     1921    1054,  1058,    50,   893,  1075,  1076,    50,   704,  1077,  1078,
     1922    1084,    58,  1521,  1094,  1088,   740,   636,    68,  1521,  1095,
     1923     496,    72,  1096,    33,  1098,   696,  1101,   620,   620,  1521,
     1924     958,  1103,    50,  1521,   161,   272,  1104,  1405,  1105,   525,
     1925     310,   108,    50,   526,   527,   528,  1520,   768,   769,   770,
     1926     771,    36,  1169,  1108,   222,  1132,  1153,  1154,  1155,  1156,
    14381927      50,    78,   108,  1170,  1171,  1173,    50,   529,  1174,   530,
    14391928      65,   531,   532,   115,  1182,  1188,    -3,   398,   399,  1193,
    1440      108,  1186,  1086,   400,   704,  1198,  1201,  1203,   401,   402,
     1929     108,  1186,  1086,   400,   704,  1198,  1203,  1201,   401,   402,
    14411930     260,   403,   230,   404,   235,   567,   440,   410,   491,  1207,
    14421931    1214,    72,   114,    47,    48,  1212,  1216,    50,  1219,  1088,
     
    14611950    1450,  1461,  1087,   372,  1471,  1473,  1486,  1475,   108,    76,
    14621951       8,     9,    10,    11,    12,   108,   470,   326,  1478,  1479,
    1463     1501,   876,   959,   470,  1506,  1513,    72,    50,  1502,  1515,
     1952    1501,  1187,   959,   470,  1506,  1513,    72,    50,  1502,  1515,
    14641953    1517,   114,  1523,   114,   260,  1530,   163,   114,   589,  1531,
    1465     1187,    33,  1011,   775,   617,   114,   223,   774,   777,  1110,
    1466      195,  1481,   776,   218,  1288,  1394,   228,   622,    50,    50,
    1467      778,   622,  1351,  1533,   407,  1218,  1367,   108,  1464,    36,
    1468     1192,   889,  1200,    50,  1069,   470,   890,   911,   792,    39,
    1469     1073,   184,   185,    42,   909,  1017,   463,  1107,   658,   330,
    1470      860,   477,    43,    44,  1350,   131,   925,   132,   133,   134,
    1471     1297,   709,  1087,    39,  1083,   184,   185,    42,    43,    44,
    1472      471,     0,     0,   742,   934,   410,    43,    44,   595,   782,
    1473      596,    47,    48,   783,   350,    58,    47,    48,   784,   471,
     1954     774,    33,  1011,   775,   617,   114,   223,   778,   776,  1110,
     1955     195,   777,  1288,   218,  1481,  1394,   228,   622,    50,    50,
     1956    1533,   622,  1351,  1218,   407,  1367,  1464,   108,   889,    36,
     1957    1192,   890,  1200,    50,  1069,   470,   911,  1073,   792,    39,
     1958    1017,   184,   185,    42,   909,   860,   463,  1107,   658,   330,
     1959     925,   477,    43,    44,  1350,   131,  1297,   132,   133,   134,
     1960    1083,   709,  1087,    39,     0,   184,   185,    42,    43,    44,
     1961     471,   782,     0,   742,   934,   410,    43,    44,   595,   783,
     1962     596,    47,    48,   784,   350,    58,    47,    48,     0,   471,
    14741963     909,     0,    58,   353,   163,     0,     0,   471,     0,     0,
    14751964       0,     0,   892,     0,   410,     0,   373,     0,    50,     0,
     
    23722861};
    23732862
     2863#define yypact_value_is_default(yystate) \
     2864  ((yystate) == (-1267))
     2865
     2866#define yytable_value_is_error(yytable_value) \
     2867  YYID (0)
     2868
    23742869static const yytype_int16 yycheck[] =
    23752870{
     
    23932888     892,    51,   680,    71,    11,   892,   136,    41,   119,   345,
    23942889     486,  1015,   703,   136,   148,    65,   186,   187,    68,   133,
    2395      186,    71,    59,   157,   187,   117,   703,   120,   425,   426,
     2890     186,    71,    59,   157,   187,   117,   703,   116,   425,   426,
    23962891      83,   711,   202,   113,   113,   115,   115,   121,   711,   575,
    2397      210,   134,   629,   630,   113,   711,   115,   210,   186,     0,
     2892     210,   100,   629,   630,   113,   711,   115,   210,   186,     0,
    23982893       1,  1487,   222,   115,   409,  1455,   266,   266,   645,   222,
    2399      266,  1232,   115,  1234,  1235,   801,   113,    83,   219,   113,
     2894     266,  1232,   115,  1234,  1235,   801,   113,   126,   219,   113,
    24002895     240,   108,   206,   663,   111,   801,   210,   888,  1514,   113,
    24012896     862,   115,   252,    34,   813,   803,   148,   186,   801,   252,
    24022897     260,   135,   502,  1204,   252,   265,   266,   267,   114,   149,
    24032898     113,   785,   272,   252,   267,   252,   240,   504,   257,   187,
    2404     1270,   161,   509,   222,   597,   512,   703,    68,   116,   813,
     2899    1270,   161,   509,   222,   597,   512,   703,    68,   134,   813,
    24052900      71,   801,   273,   417,   252,  1034,  1035,   297,   801,   280,
    24062901     911,   395,   405,   801,   114,   801,   186,   187,   272,   893,
     
    24102905     100,   341,   222,  1257,  1258,   345,   310,   341,   240,   349,
    24112906     350,   248,   219,   919,   252,   939,   585,  1031,  1190,   267,
    2412      135,   781,   252,   919,   364,   100,   126,   257,   368,  1108,
    2413      114,   791,   252,   835,   116,   478,   919,   341,   120,   120,
    2414      272,   345,   802,     3,   365,   113,   266,   114,   369,    74,
    2415      134,   126,    57,   134,   118,   395,   920,   626,   115,   118,
    2416      364,   983,    87,    88,   368,   405,   273,   134,   462,  1458,
    2417     1022,   350,   405,   280,    74,  1464,    76,    77,   310,    74,
    2418      116,    76,    77,   423,   120,   425,   426,    87,    88,   429,
    2419      115,   431,    87,    88,    99,  1484,  1426,  1378,   417,     3,
    2420     1489,   222,    74,  1433,   992,   993,   954,   120,    41,   615,
    2421        0,   331,   452,   345,   620,    87,    88,   436,   118,   120,
    2422      115,   425,   426,   925,  1378,   444,   929,     0,   120,   349,
    2423      470,   252,   116,  1437,   891,   136,   120,   966,   478,  1313,
    2424      480,   348,   482,   115,   136,   478,   486,   649,   452,   482,
    2425      730,   113,   492,   210,   482,  1485,  1107,   405,   365,   120,
    2426      813,   465,   369,   482,   504,   482,   506,   813,  1472,   509,
    2427     1474,   511,   512,   113,  1098,   136,   663,   120,   640,   519,
    2428      113,   135,   115,   523,  1487,   405,   490,   417,   492,   194,
    2429      494,   134,   471,   425,   426,   116,  1370,  1371,   113,   120,
    2430      504,   120,   506,   482,  1507,   509,   436,   511,   512,   114,
     2907     135,   781,   252,   919,   364,    74,   126,   257,   368,  1108,
     2908     114,   791,   252,   835,     3,   478,   919,   341,    87,    88,
     2909     272,   345,   802,     3,   365,   113,   266,  1437,   369,    74,
     2910     134,   120,    57,   120,   118,   395,   920,   626,   115,   118,
     2911     364,   983,    87,    88,   368,   405,   273,   136,   462,  1458,
     2912    1022,   350,   405,   280,    74,  1464,    76,    77,   310,   659,
     2913     113,   114,  1472,   423,  1474,   425,   426,    87,    88,   429,
     2914     115,   431,    94,    95,    99,  1484,  1426,  1378,   417,     0,
     2915    1489,   222,    74,  1433,   992,   993,   954,     0,    41,   615,
     2916     113,   331,   452,   345,   620,    87,    88,   436,   118,   120,
     2917     135,   425,   426,   925,  1378,   444,   929,   129,   130,   349,
     2918     470,   252,   116,   113,   891,   136,   120,   966,   478,  1313,
     2919     480,   348,   482,   115,   114,   478,   486,   649,   452,   482,
     2920     730,   114,   492,   210,   482,  1485,  1107,   405,   365,   120,
     2921     813,   465,   369,   482,   504,   482,   506,   813,   113,   509,
     2922     132,   511,   512,   135,  1098,   136,   663,   120,   640,   519,
     2923     113,   120,   115,   523,  1487,   405,   490,   417,   492,   194,
     2924     494,   134,   471,   425,   426,   134,  1370,  1371,   123,   124,
     2925     504,   120,   506,   482,  1507,   509,   436,   511,   512,   113,
    24312926     674,  1514,   217,   647,   444,   272,  1080,   136,  1066,   113,
    24322927     114,   115,   227,  1071,   115,   794,   117,   567,   568,   113,
    24332928     478,   115,   738,  1157,  1158,   575,   700,   680,  1190,   113,
    2434      297,  1001,  1002,   134,   482,   585,   586,  1004,   114,   589,
     2929     297,  1001,  1002,   134,   482,   585,   586,  1004,   120,   589,
    24352930     480,   120,   482,   310,   120,   595,  1270,   597,   586,   862,
    2436      492,   120,   482,    94,    95,   132,   486,   136,   135,   663,
     2931     492,   120,   482,   113,   136,   115,   486,   136,   134,   663,
    24372932      74,   575,    76,    77,    78,   615,   113,   136,   924,   511,
    24382933     620,   585,   622,    87,    88,   120,   626,   120,   113,   629,
    2439      630,   113,   297,   115,   781,   616,  1056,  1057,   129,   130,
    2440      113,   136,   114,   136,   791,   645,   121,   647,   120,   113,
     2934     630,   113,   297,   115,   781,   616,  1056,  1057,   114,   121,
     2935     122,   136,   114,   136,   791,   645,   121,   647,   120,   113,
    24412936     631,   615,   127,   128,  1386,   802,   620,   116,  1270,    74,
    24422937     120,   120,   626,   644,   849,     4,     5,     6,     7,     8,
    2443        9,  1345,    87,    88,   120,   120,   136,   677,   617,    74,
     2938       9,  1345,    87,    88,   120,   120,   136,   677,   617,   114,
    24442939     680,   120,   114,   575,   869,    10,    11,    12,    13,    14,
    2445      136,   136,    87,    88,   113,   674,   115,   136,   113,   113,
    2446      115,   482,   120,   703,   704,   705,   931,   114,   892,   892,
     2940     136,   136,   116,   114,   114,   674,   120,   136,   113,   120,
     2941     115,   482,   120,   703,   704,   705,   931,   113,   892,   892,
    24472942    1127,   711,   712,   677,   892,   595,    41,   597,   136,   892,
    2448      892,   700,   892,   615,   892,   891,   114,   781,   620,   113,
    2449      120,   115,    71,   855,    73,   452,  1096,   791,   738,   114,
    2450     1100,   114,   742,   743,    69,   726,   136,   120,   802,   616,
    2451     1482,   715,   691,   114,   114,  1487,  1430,   114,  1432,  1287,
     2943     892,   700,   892,   615,   892,   891,   113,   781,   620,   119,
     2944     114,   113,    71,   855,    73,   452,   120,   791,   738,   136,
     2945     114,   114,   742,   743,    69,   726,   120,   120,   802,   616,
     2946    1482,   715,   691,    66,   114,  1487,  1430,   114,  1432,  1287,
    24522947     120,   114,  1025,   120,   631,   113,   705,   120,  1491,  1491,
    2453      119,   113,   680,   115,  1491,  1507,   441,   644,   113,   121,
    2454      122,  1365,  1514,    66,   674,   785,   113,   504,   115,   506,
    2455      136,   894,   509,   114,   794,   512,   796,   136,  1382,   120,
    2456      680,   801,   467,   113,   897,   114,   899,   113,   996,   115,
     2948     113,   113,   680,   115,  1491,  1507,   441,   644,   136,   121,
     2949     122,  1365,  1514,   118,   674,   785,   116,   504,    83,   506,
     2950     120,   894,   509,   114,   794,   512,   796,   136,  1382,   120,
     2951     680,   801,   467,   118,   897,   114,   899,   113,   996,   115,
    24572952     700,   120,  1486,   813,  1426,   121,   122,   983,   114,  1239,
    2458      113,  1433,   115,   114,   120,   113,  1246,  1247,  1248,   120,
     2953     113,  1433,   115,   114,   120,   136,  1246,  1247,  1248,   120,
    24592954     794,   711,   712,     4,     5,     6,     7,     8,     9,   504,
    2460     1257,   113,     3,   115,   509,   113,   114,   512,   738,    10,
    2461       11,    12,    13,    14,  1001,  1002,  1096,   796,   136,   726,
    2462     1100,  1101,   862,   114,    35,    74,   118,     0,     1,   120,
    2463     1454,  1455,    81,  1485,   862,    84,   114,    86,    87,    88,
    2464       41,   118,   120,   862,   884,   504,   113,   506,   115,  1309,
     2955    1257,   116,     3,   113,   509,   120,   136,   512,   738,    10,
     2956      11,    12,    13,    14,  1001,  1002,  1096,   796,   118,   726,
     2957    1100,  1101,   862,    74,    35,    76,    77,     0,     1,   114,
     2958    1454,  1455,   114,  1485,   862,   120,    87,    88,   120,   113,
     2959      41,   115,   114,   862,   884,   504,   113,   506,   120,  1309,
    24652960     509,   891,   892,   512,   894,  1017,   884,   114,    31,    32,
    2466       71,    34,    73,   120,   136,   113,   906,   115,    69,  1056,
    2467     1057,   114,    45,   121,   122,   136,   114,   120,    51,   919,
    2468      920,   801,   120,   862,   924,   118,    59,  1190,   114,   113,
    2469      930,   931,    65,   813,   120,    68,   123,   124,    71,   930,
    2470       92,    93,   906,  1170,  1171,    83,  1173,  1001,  1002,    83,
    2471      114,    84,    85,  1180,   954,  1182,   120,    96,    97,  1467,
    2472      677,  1127,   113,  1066,   862,   929,   930,   931,  1071,   122,
    2473      114,   114,   862,   113,  1214,   108,   120,   120,   111,    74,
    2474        3,    76,    77,   983,   131,   118,   894,    10,    11,    12,
    2475       13,    14,    87,    88,  1088,   119,   120,   662,   113,   114,
    2476      115,   891,  1056,  1057,  1004,  1005,   671,   113,  1516,   115,
    2477      675,   132,   892,    98,   894,   115,   149,    74,    41,   983,
    2478      114,   115,  1022,  1286,    81,    60,    61,    84,   161,    86,
    2479       87,    88,   930,   116,  1022,   113,   114,   115,  1204,   931,
    2480      119,   120,    72,  1022,   924,    75,    69,   986,    78,   116,
    2481       80,    46,    47,   186,   187,  1202,   114,    87,   115,   551,
    2482      552,  1061,  1113,  1114,  1304,   114,  1066,   114,  1308,   202,
    2483      114,  1071,   555,   556,   557,   558,  1339,   210,   285,  1342,
     2961      71,    34,    73,   120,   115,   114,   906,   113,    69,  1056,
     2962    1057,   120,    45,   113,   114,   115,   114,    83,    51,   919,
     2963     920,   801,   120,   862,   924,  1096,    59,  1190,   114,  1100,
     2964     930,   931,    65,   813,   120,    68,    92,    93,    71,   930,
     2965     119,   120,   906,  1170,  1171,   122,  1173,  1001,  1002,    96,
     2966      97,    84,    85,  1180,   954,  1182,   113,   114,   115,  1467,
     2967     677,  1127,   131,  1066,   862,   929,   930,   931,  1071,   113,
     2968     114,   115,   862,   132,  1214,   108,   114,   115,   111,    74,
     2969       3,    76,    77,   983,    98,   118,   894,    10,    11,    12,
     2970      13,    14,    87,    88,  1088,    60,    61,   662,    60,    61,
     2971      62,   891,  1056,  1057,  1004,  1005,   671,   113,  1516,   115,
     2972     675,   113,   892,   115,   894,   115,   149,    74,    41,   983,
     2973     119,   120,  1022,  1286,    81,    46,    47,    84,   161,    86,
     2974      87,    88,   930,   113,  1022,   115,  1113,  1114,  1204,   931,
     2975     551,   552,    72,  1022,   924,    75,    69,   986,    78,   113,
     2976      80,   115,   113,   186,   187,  1202,   116,    87,   115,   114,
     2977      74,  1061,   116,   113,  1304,   115,  1066,    81,  1308,   202,
     2978      84,  1071,    86,    87,    88,   114,  1339,   210,   285,  1342,
    24842979    1080,   862,   114,  1022,   553,   554,   219,   114,  1088,   222,
    2485      116,   983,  1239,   113,   114,   115,   229,  1061,   113,  1246,
     2980     114,   983,  1239,   559,   560,   114,   229,  1061,   116,  1246,
    24862981    1247,  1248,   115,   310,   311,     4,     5,     6,     7,     8,
    2487        9,   244,   559,   560,  1341,   248,   118,    74,   135,   252,
    2488      253,    78,   120,  1386,  1022,   118,   118,  1127,  1391,   135,
    2489       87,    88,  1022,   266,   267,    60,    61,    62,   345,   113,
    2490      273,   114,   114,     3,   134,   116,   116,   280,  1202,   930,
    2491       10,    11,    12,    13,    14,   116,   113,  1420,  1066,   134,
    2492      120,    31,  1309,  1071,   121,   122,   134,  1407,  1168,  1169,
    2493      114,   114,    71,   380,    73,   114,   118,   113,  1169,   119,
    2494      114,    41,   119,   213,   119,  1239,  1066,   120,   134,   906,
    2495     1190,  1071,  1246,  1247,  1248,   136,   114,   120,   331,   114,
     2982       9,   244,   118,   120,  1341,   248,   118,    74,   135,   252,
     2983     253,    78,   118,  1386,  1022,   135,   113,  1127,  1391,   114,
     2984      87,    88,  1022,   266,   267,   114,   116,   134,   345,   116,
     2985     273,   116,   134,     3,   134,    31,   120,   280,  1202,   930,
     2986      10,    11,    12,    13,    14,   114,   113,  1420,  1066,   114,
     2987     118,   113,  1309,  1071,   121,   122,   119,  1407,  1168,  1169,
     2988     114,   119,    71,   380,    73,   120,   119,   114,  1169,   114,
     2989     134,    41,   120,   213,   114,  1239,  1066,   136,   114,   906,
     2990    1190,  1071,  1246,  1247,  1248,   114,   114,   120,   331,   114,
    24962991     114,   114,  1190,   114,  1204,   114,   114,   114,  1208,    69,
    2497      120,  1190,   114,     0,     1,   348,   349,  1208,   114,   114,
    2498      114,   886,    10,    11,    12,    13,    14,   114,   114,  1168,
    2499      114,   114,   365,   114,   119,    31,   369,  1127,   135,   114,
    2500      120,  1022,  1505,   134,  1208,   116,   379,    34,  1511,   116,
    2501      280,  1190,   114,    41,   120,  1309,   114,  1257,  1258,  1522,
    2502      114,   134,   395,  1526,    51,  1265,   113,  1361,   120,    85,
    2503     1270,  1169,   405,    89,    90,    91,  1501,   118,   114,   114,
    2504      114,    69,  1270,   120,    71,   114,   114,   120,   120,   114,
     2992     114,  1190,   114,     0,     1,   348,   349,  1208,   114,   114,
     2993     114,   886,    10,    11,    12,    13,    14,   119,    31,  1168,
     2994     135,   114,   365,   134,   114,   120,   369,  1127,   116,   116,
     2995     114,  1022,  1505,   114,  1208,   120,   379,    34,  1511,   114,
     2996     280,  1190,   134,    41,   113,  1309,   120,  1257,  1258,  1522,
     2997     118,   114,   395,  1526,    51,  1265,   114,  1361,   114,    85,
     2998    1270,  1169,   405,    89,    90,    91,  1501,   555,   556,   557,
     2999     558,    69,  1270,   120,    71,   114,   114,   120,   120,   114,
    25053000     423,  1270,  1190,   113,   113,   113,   429,   113,   113,   115,
    25063001    1190,   117,   118,  1303,   113,   136,   119,  1491,  1491,   114,
    2507     1208,   134,  1303,  1491,  1204,   114,   119,   114,  1491,  1491,
     3002    1208,   134,  1303,  1491,  1204,   114,   114,   119,  1491,  1491,
    25083003     107,  1491,   352,  1491,   354,   113,  1265,   115,   132,   119,
    25093004     116,  1270,   465,   121,   122,   118,   136,   470,   114,  1303,
     
    25283023     116,   136,  1303,  1516,   114,   114,   136,   119,  1426,    34,
    25293024      10,    11,    12,    13,    14,  1433,  1426,  1501,   116,   116,
    2530      113,   659,   749,  1433,   119,   119,  1485,   680,   136,   114,
     3025     113,  1037,   749,  1433,   119,   119,  1485,   680,   136,   114,
    25313026     114,   684,   136,   686,   341,   114,    51,   690,   345,   114,
    2532     1037,    41,   851,   562,   351,   698,    71,   561,   564,   963,
    2533       65,  1455,   563,    68,  1190,  1347,    71,   364,   711,   712,
    2534      565,   368,  1280,  1526,  1492,  1101,  1308,  1485,  1433,    69,
    2535     1052,   677,  1071,   726,   899,  1485,   677,   690,   579,    74,
    2536      907,    76,    77,    78,   893,   855,   253,   958,  1516,  1501,
    2537      641,  1491,    87,    88,  1279,    74,   715,    76,    77,    78,
    2538     1208,   482,  1403,    74,   927,    76,    77,    78,    87,    88,
    2539      417,    -1,    -1,   113,   726,   115,    87,    88,   113,   567,
    2540      115,   121,   122,   567,   431,  1426,   121,   122,   567,   436,
     3027     561,    41,   851,   562,   351,   698,    71,   565,   563,   963,
     3028      65,   564,  1190,    68,  1455,  1347,    71,   364,   711,   712,
     3029    1526,   368,  1280,  1101,  1492,  1308,  1433,  1485,   677,    69,
     3030    1052,   677,  1071,   726,   899,  1485,   690,   907,   579,    74,
     3031     855,    76,    77,    78,   893,   641,   253,   958,  1516,  1501,
     3032     715,  1491,    87,    88,  1279,    74,  1208,    76,    77,    78,
     3033     927,   482,  1403,    74,    -1,    76,    77,    78,    87,    88,
     3034     417,   567,    -1,   113,   726,   115,    87,    88,   113,   567,
     3035     115,   121,   122,   567,   431,  1426,   121,   122,    -1,   436,
    25413036     939,    -1,  1433,   158,   149,    -1,    -1,   444,    -1,    -1,
    25423037      -1,    -1,   113,    -1,   115,    -1,   161,    -1,   801,    -1,
     
    34393934};
    34403935
    3441   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    3442      symbol of state STATE-NUM.  */
     3936/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     3937   symbol of state STATE-NUM.  */
    34433938static const yytype_uint16 yystos[] =
    34443939{
     
    35304025     171,   138,   115,   280,   134,   120,   378,   284,   115,   134,
    35314026     288,    31,   216,   217,   278,   266,   143,   315,   143,   317,
    3532      113,   355,   356,   113,   355,   356,   146,   356,   180,   270,
     4027     113,   355,   356,   113,   355,   356,   145,   356,   180,   270,
    35334028     114,   114,   114,   114,   138,   180,   214,   180,   118,   256,
    35344029     257,   138,   113,   134,   156,   258,   260,   324,   325,   337,
     
    35994094};
    36004095
    3601   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
    3602 static const yytype_uint16 yyr1[] =
    3603 {
    3604        0,   137,   138,   139,   140,   140,   140,   140,   140,   141,
    3605      141,   141,   142,   142,   143,   143,   144,   144,   145,   146,
    3606      146,   147,   147,   147,   147,   147,   148,   148,   148,   148,
    3607      148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
    3608      150,   150,   151,   151,   152,   152,   152,   152,   152,   152,
    3609      152,   153,   153,   153,   154,   154,   155,   155,   155,   155,
    3610      155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
    3611      155,   155,   156,   156,   157,   157,   157,   157,   158,   158,
    3612      159,   159,   159,   159,   160,   160,   160,   161,   161,   161,
    3613      162,   162,   162,   162,   162,   163,   163,   163,   164,   164,
    3614      165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
    3615      169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
    3616      173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
    3617      175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
    3618      178,   178,   178,   178,   178,   179,   180,   180,   181,   181,
    3619      182,   182,   182,   182,   183,   183,   184,   185,   185,   185,
    3620      185,   185,   185,   186,   186,   186,   187,   187,   188,   188,
    3621      189,   189,   190,   191,   191,   192,   192,   193,   193,   194,
    3622      194,   194,   194,   195,   195,   196,   196,   197,   197,   197,
    3623      198,   198,   199,   199,   199,   199,   199,   199,   199,   199,
    3624      199,   199,   200,   200,   200,   201,   201,   201,   201,   201,
    3625      202,   202,   202,   202,   203,   204,   204,   204,   204,   204,
    3626      205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
    3627      208,   209,   209,   210,   210,   210,   211,   211,   212,   212,
    3628      213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
    3629      218,   218,   219,   219,   220,   220,   220,   220,   220,   221,
    3630      221,   221,   222,   222,   222,   223,   223,   223,   223,   223,
    3631      224,   224,   225,   225,   226,   226,   226,   227,   227,   227,
    3632      227,   227,   228,   228,   229,   229,   229,   229,   230,   230,
    3633      231,   231,   231,   231,   232,   232,   232,   232,   233,   233,
    3634      234,   234,   235,   235,   236,   236,   236,   236,   236,   237,
    3635      236,   238,   238,   238,   239,   239,   240,   240,   240,   240,
    3636      240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
    3637      241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
    3638      242,   242,   242,   242,   243,   243,   244,   244,   244,   244,
    3639      245,   245,   245,   245,   246,   246,   246,   246,   247,   247,
    3640      247,   248,   248,   248,   248,   249,   249,   249,   250,   250,
    3641      251,   251,   252,   251,   251,   251,   253,   253,   254,   254,
    3642      255,   255,   255,   255,   256,   256,   256,   256,   257,   257,
    3643      258,   258,   258,   258,   258,   259,   259,   260,   261,   262,
    3644      262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
    3645      267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
    3646      270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
    3647      273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
    3648      276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
    3649      280,   280,   280,   281,   281,   281,   282,   282,   282,   282,
    3650      283,   283,   283,   284,   284,   285,   285,   285,   285,   285,
    3651      286,   286,   287,   287,   288,   288,   288,   288,   288,   289,
    3652      289,   289,   289,   290,   290,   290,   291,   292,   292,   294,
    3653      293,   293,   295,   295,   295,   296,   296,   297,   297,   297,
    3654      298,   298,   298,   298,   299,   299,   299,   300,   300,   301,
    3655      301,   302,   303,   302,   304,   304,   305,   305,   306,   306,
    3656      306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
    3657      311,   311,   312,   311,   311,   313,   313,   313,   314,   314,
    3658      314,   314,   314,   314,   314,   314,   314,   315,   315,   315,
    3659      316,   317,   317,   318,   318,   319,   319,   320,   321,   321,
    3660      322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
    3661      324,   325,   325,   326,   326,   326,   327,   327,   327,   327,
    3662      328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
    3663      331,   332,   332,   332,   333,   333,   333,   334,   334,   334,
    3664      335,   335,   335,   336,   336,   336,   337,   337,   337,   337,
    3665      338,   338,   339,   339,   339,   340,   340,   340,   340,   341,
    3666      341,   341,   342,   342,   342,   342,   343,   343,   343,   344,
    3667      344,   344,   344,   345,   345,   345,   346,   346,   346,   346,
    3668      347,   347,   348,   348,   348,   349,   349,   350,   350,   351,
    3669      351,   351,   352,   352,   352,   352,   352,   353,   353,   353,
    3670      353,   354,   354,   354,   355,   355,   355,   356,   356,   356,
    3671      356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
    3672      359,   359,   359,   360,   360,   360,   361,   361,   361,   362,
    3673      362,   362,   362,   362,   362,   363,   363,   363,   364,   364,
    3674      364,   364,   364,   365,   365,   365,   365,   366,   366,   367,
    3675      367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
    3676      370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
    3677      371,   371,   371,   371,   372,   372,   372,   373,   373,   374,
    3678      374,   374,   374,   374,   374,   375,   375,   375,   375,   375,
    3679      375,   376,   377,   377,   378,   378,   379,   379
    3680 };
    3681 
    3682   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
    3683 static const yytype_uint8 yyr2[] =
    3684 {
    3685        0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    3686        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    3687        2,     1,     1,     1,     3,     3,     1,     6,     4,     3,
    3688        7,     2,     3,     7,     2,     2,     7,     4,     1,     3,
    3689        0,     1,     1,     3,     1,     2,     6,     3,     7,     3,
    3690        7,     2,     2,     2,     0,     2,     1,     1,     1,     2,
    3691        2,     2,     2,     2,     2,     4,     2,     4,     6,     1,
    3692        4,     4,     1,     1,     1,     1,     1,     1,     1,     4,
    3693        1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
    3694        1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
    3695        1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
    3696        4,     1,     1,     3,     0,     1,     1,     1,     1,     1,
    3697        1,     1,     1,     1,     1,     1,     1,     1,     6,     7,
    3698        1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
    3699        1,     1,     1,     1,     6,     4,     2,     7,     1,     3,
    3700        1,     2,     1,     2,     1,     2,     2,     5,     7,     5,
    3701        9,     5,     9,     1,     3,     1,     1,     3,     3,     2,
    3702        1,     2,     2,     0,     1,     2,     3,     0,     1,     2,
    3703        3,     3,     4,     0,     1,     1,     2,     5,     7,     6,
    3704        6,     4,     3,     4,     2,     3,     2,     3,     3,     3,
    3705        3,     5,     3,     3,     4,     1,     5,     6,     5,     6,
    3706        9,    10,     9,    10,     2,     1,     2,     2,     2,     1,
    3707        6,     8,    10,    12,    14,     0,     1,     0,     1,     1,
    3708        3,     4,     7,     0,     1,     3,     1,     3,     1,     1,
    3709        1,     3,     1,     1,     1,     3,     0,     1,     3,     4,
    3710        1,     3,     1,     1,     3,     3,     3,     3,     3,     2,
    3711        3,     6,     3,     3,     4,     1,     2,     2,     3,     5,
    3712        7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
    3713        3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
    3714        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
    3715        1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
    3716        5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
    3717        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    3718        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    3719        2,     2,     3,     3,     1,     3,     1,     2,     2,     2,
    3720        4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
    3721        2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
    3722        4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
    3723        2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
    3724        0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
    3725        2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
    3726        1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
    3727        0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
    3728        3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
    3729        1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
    3730        1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
    3731        0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
    3732        2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
    3733        2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
    3734        4,     2,     1,     1,     1,     0,     2,     5,     5,    13,
    3735        1,     1,     3,     3,     2,     3,     3,     2,     4,     1,
    3736        6,     9,     0,    11,     1,     3,     3,     3,     1,     1,
    3737        5,     2,     5,     0,     1,     1,     3,     0,     1,     1,
    3738        1,     1,     0,     6,     2,     1,     2,     4,     2,     3,
    3739        3,     3,     4,     5,     5,     5,     6,     1,     1,     1,
    3740        3,     0,     5,     0,     1,     1,     2,     6,     1,     3,
    3741        0,     1,     4,     1,     1,     1,     1,     2,     1,     2,
    3742        2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
    3743        8,     3,     2,     1,     2,     6,     8,     3,     2,     3,
    3744        3,     4,     4,     3,     1,     1,     1,     4,     6,     3,
    3745        2,     3,     3,     4,     4,     3,     2,     1,     2,     2,
    3746        1,     3,     2,     3,     3,     2,     4,     4,     3,     6,
    3747        8,     3,     2,     1,     2,     2,     2,     3,     3,     2,
    3748        4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
    3749        1,     1,     2,     3,     3,     2,     4,     6,     8,     1,
    3750        2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
    3751        3,     5,     8,     3,     2,     3,     1,     5,     5,     6,
    3752        6,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    3753        4,     4,     3,     5,     8,     3,     1,     2,     1,     2,
    3754        6,     5,     6,     7,     7,     1,     2,     2,     1,     2,
    3755        2,     3,     3,     1,     4,     4,     3,     8,     3,     1,
    3756        1,     2,     1,     1,     2,     3,     2,     3,     2,     3,
    3757        3,     2,     4,     3,     2,     3,     2,     4,     3,     2,
    3758        6,     6,     6,     7,     1,     2,     1,     1,     1,     2,
    3759        3,     2,     3,     2,     3,     3,     4,     2,     3,     4,
    3760        2,     5,     6,     6,     0,     1,     0,     2
    3761 };
    3762 
    3763 
    3764 #define yyerrok         (yyerrstatus = 0)
    3765 #define yyclearin       (yychar = YYEMPTY)
    3766 #define YYEMPTY         (-2)
    3767 #define YYEOF           0
    3768 
    3769 #define YYACCEPT        goto yyacceptlab
    3770 #define YYABORT         goto yyabortlab
    3771 #define YYERROR         goto yyerrorlab
    3772 
     4096#define yyerrok         (yyerrstatus = 0)
     4097#define yyclearin       (yychar = YYEMPTY)
     4098#define YYEMPTY         (-2)
     4099#define YYEOF           0
     4100
     4101#define YYACCEPT        goto yyacceptlab
     4102#define YYABORT         goto yyabortlab
     4103#define YYERROR         goto yyerrorlab
     4104
     4105
     4106/* Like YYERROR except do call yyerror.  This remains here temporarily
     4107   to ease the transition to the new meaning of YYERROR, for GCC.
     4108   Once GCC version 2 has supplanted version 1, this can go.  However,
     4109   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
     4110   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
     4111   discussed.  */
     4112
     4113#define YYFAIL          goto yyerrlab
     4114#if defined YYFAIL
     4115  /* This is here to suppress warnings from the GCC cpp's
     4116     -Wunused-macros.  Normally we don't worry about that warning, but
     4117     some users do, and we want to make it easy for users to remove
     4118     YYFAIL uses, which will produce warnings from Bison 2.5.  */
     4119#endif
    37734120
    37744121#define YYRECOVERING()  (!!yyerrstatus)
    37754122
    3776 #define YYBACKUP(Token, Value)                                  \
    3777 do                                                              \
    3778   if (yychar == YYEMPTY)                                        \
    3779     {                                                           \
    3780       yychar = (Token);                                         \
    3781       yylval = (Value);                                         \
    3782       YYPOPSTACK (yylen);                                       \
    3783       yystate = *yyssp;                                         \
    3784       goto yybackup;                                            \
    3785     }                                                           \
    3786   else                                                          \
    3787     {                                                           \
     4123#define YYBACKUP(Token, Value)                                  \
     4124do                                                              \
     4125  if (yychar == YYEMPTY && yylen == 1)                          \
     4126    {                                                           \
     4127      yychar = (Token);                                         \
     4128      yylval = (Value);                                         \
     4129      YYPOPSTACK (1);                                           \
     4130      goto yybackup;                                            \
     4131    }                                                           \
     4132  else                                                          \
     4133    {                                                           \
    37884134      yyerror (YY_("syntax error: cannot back up")); \
    3789       YYERROR;                                                  \
    3790     }                                                           \
    3791 while (0)
    3792 
    3793 /* Error token number */
    3794 #define YYTERROR        1
    3795 #define YYERRCODE       256
    3796 
    3797 
     4135      YYERROR;                                                  \
     4136    }                                                           \
     4137while (YYID (0))
     4138
     4139
     4140#define YYTERROR        1
     4141#define YYERRCODE       256
     4142
     4143
     4144/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
     4145   If N is 0, then set CURRENT to the empty location which ends
     4146   the previous symbol: RHS[0] (always defined).  */
     4147
     4148#define YYRHSLOC(Rhs, K) ((Rhs)[K])
     4149#ifndef YYLLOC_DEFAULT
     4150# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
     4151    do                                                                  \
     4152      if (YYID (N))                                                    \
     4153        {                                                               \
     4154          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
     4155          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
     4156          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
     4157          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
     4158        }                                                               \
     4159      else                                                              \
     4160        {                                                               \
     4161          (Current).first_line   = (Current).last_line   =              \
     4162            YYRHSLOC (Rhs, 0).last_line;                                \
     4163          (Current).first_column = (Current).last_column =              \
     4164            YYRHSLOC (Rhs, 0).last_column;                              \
     4165        }                                                               \
     4166    while (YYID (0))
     4167#endif
     4168
     4169
     4170/* This macro is provided for backward compatibility. */
     4171
     4172#ifndef YY_LOCATION_PRINT
     4173# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
     4174#endif
     4175
     4176
     4177/* YYLEX -- calling `yylex' with the right arguments.  */
     4178
     4179#ifdef YYLEX_PARAM
     4180# define YYLEX yylex (YYLEX_PARAM)
     4181#else
     4182# define YYLEX yylex ()
     4183#endif
    37984184
    37994185/* Enable debugging if requested.  */
     
    38054191# endif
    38064192
    3807 # define YYDPRINTF(Args)                        \
    3808 do {                                            \
    3809   if (yydebug)                                  \
    3810     YYFPRINTF Args;                             \
    3811 } while (0)
    3812 
    3813 /* This macro is provided for backward compatibility. */
    3814 #ifndef YY_LOCATION_PRINT
    3815 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
    3816 #endif
    3817 
    3818 
    3819 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
    3820 do {                                                                      \
    3821   if (yydebug)                                                            \
    3822     {                                                                     \
    3823       YYFPRINTF (stderr, "%s ", Title);                                   \
    3824       yy_symbol_print (stderr,                                            \
    3825                   Type, Value); \
    3826       YYFPRINTF (stderr, "\n");                                           \
    3827     }                                                                     \
    3828 } while (0)
    3829 
    3830 
    3831 /*----------------------------------------.
    3832 | Print this symbol's value on YYOUTPUT.  |
    3833 `----------------------------------------*/
    3834 
     4193# define YYDPRINTF(Args)                        \
     4194do {                                            \
     4195  if (yydebug)                                  \
     4196    YYFPRINTF Args;                             \
     4197} while (YYID (0))
     4198
     4199# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
     4200do {                                                                      \
     4201  if (yydebug)                                                            \
     4202    {                                                                     \
     4203      YYFPRINTF (stderr, "%s ", Title);                                   \
     4204      yy_symbol_print (stderr,                                            \
     4205                  Type, Value); \
     4206      YYFPRINTF (stderr, "\n");                                           \
     4207    }                                                                     \
     4208} while (YYID (0))
     4209
     4210
     4211/*--------------------------------.
     4212| Print this symbol on YYOUTPUT.  |
     4213`--------------------------------*/
     4214
     4215/*ARGSUSED*/
     4216#if (defined __STDC__ || defined __C99__FUNC__ \
     4217     || defined __cplusplus || defined _MSC_VER)
    38354218static void
    38364219yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
     4220#else
     4221static void
     4222yy_symbol_value_print (yyoutput, yytype, yyvaluep)
     4223    FILE *yyoutput;
     4224    int yytype;
     4225    YYSTYPE const * const yyvaluep;
     4226#endif
    38374227{
    3838   FILE *yyo = yyoutput;
    3839   YYUSE (yyo);
    38404228  if (!yyvaluep)
    38414229    return;
     
    38434231  if (yytype < YYNTOKENS)
    38444232    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
     4233# else
     4234  YYUSE (yyoutput);
    38454235# endif
    3846   YYUSE (yytype);
     4236  switch (yytype)
     4237    {
     4238      default:
     4239        break;
     4240    }
    38474241}
    38484242
     
    38524246`--------------------------------*/
    38534247
     4248#if (defined __STDC__ || defined __C99__FUNC__ \
     4249     || defined __cplusplus || defined _MSC_VER)
    38544250static void
    38554251yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
     4252#else
     4253static void
     4254yy_symbol_print (yyoutput, yytype, yyvaluep)
     4255    FILE *yyoutput;
     4256    int yytype;
     4257    YYSTYPE const * const yyvaluep;
     4258#endif
    38564259{
    3857   YYFPRINTF (yyoutput, "%s %s (",
    3858              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
     4260  if (yytype < YYNTOKENS)
     4261    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
     4262  else
     4263    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
    38594264
    38604265  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
     
    38674272`------------------------------------------------------------------*/
    38684273
     4274#if (defined __STDC__ || defined __C99__FUNC__ \
     4275     || defined __cplusplus || defined _MSC_VER)
    38694276static void
    38704277yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
     4278#else
     4279static void
     4280yy_stack_print (yybottom, yytop)
     4281    yytype_int16 *yybottom;
     4282    yytype_int16 *yytop;
     4283#endif
    38714284{
    38724285  YYFPRINTF (stderr, "Stack now");
     
    38794292}
    38804293
    3881 # define YY_STACK_PRINT(Bottom, Top)                            \
    3882 do {                                                            \
    3883   if (yydebug)                                                  \
    3884     yy_stack_print ((Bottom), (Top));                           \
    3885 } while (0)
     4294# define YY_STACK_PRINT(Bottom, Top)                            \
     4295do {                                                            \
     4296  if (yydebug)                                                  \
     4297    yy_stack_print ((Bottom), (Top));                           \
     4298} while (YYID (0))
    38864299
    38874300
     
    38904303`------------------------------------------------*/
    38914304
     4305#if (defined __STDC__ || defined __C99__FUNC__ \
     4306     || defined __cplusplus || defined _MSC_VER)
    38924307static void
    3893 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
     4308yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
     4309#else
     4310static void
     4311yy_reduce_print (yyvsp, yyrule)
     4312    YYSTYPE *yyvsp;
     4313    int yyrule;
     4314#endif
    38944315{
    3895   unsigned long int yylno = yyrline[yyrule];
    38964316  int yynrhs = yyr2[yyrule];
    38974317  int yyi;
     4318  unsigned long int yylno = yyrline[yyrule];
    38984319  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
    3899              yyrule - 1, yylno);
     4320             yyrule - 1, yylno);
    39004321  /* The symbols being reduced.  */
    39014322  for (yyi = 0; yyi < yynrhs; yyi++)
    39024323    {
    39034324      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
    3904       yy_symbol_print (stderr,
    3905                        yystos[yyssp[yyi + 1 - yynrhs]],
    3906                        &(yyvsp[(yyi + 1) - (yynrhs)])
    3907                                               );
     4325      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
     4326                       &(yyvsp[(yyi + 1) - (yynrhs)])
     4327                                       );
    39084328      YYFPRINTF (stderr, "\n");
    39094329    }
    39104330}
    39114331
    3912 # define YY_REDUCE_PRINT(Rule)          \
    3913 do {                                    \
    3914   if (yydebug)                          \
    3915     yy_reduce_print (yyssp, yyvsp, Rule); \
    3916 } while (0)
     4332# define YY_REDUCE_PRINT(Rule)          \
     4333do {                                    \
     4334  if (yydebug)                          \
     4335    yy_reduce_print (yyvsp, Rule); \
     4336} while (YYID (0))
    39174337
    39184338/* Nonzero means print parse trace.  It is left uninitialized so that
     
    39284348
    39294349/* YYINITDEPTH -- initial size of the parser's stacks.  */
    3930 #ifndef YYINITDEPTH
     4350#ifndef YYINITDEPTH
    39314351# define YYINITDEPTH 200
    39324352#endif
     
    39514371#  else
    39524372/* Return the length of YYSTR.  */
     4373#if (defined __STDC__ || defined __C99__FUNC__ \
     4374     || defined __cplusplus || defined _MSC_VER)
    39534375static YYSIZE_T
    39544376yystrlen (const char *yystr)
     4377#else
     4378static YYSIZE_T
     4379yystrlen (yystr)
     4380    const char *yystr;
     4381#endif
    39554382{
    39564383  YYSIZE_T yylen;
     
    39684395/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    39694396   YYDEST.  */
     4397#if (defined __STDC__ || defined __C99__FUNC__ \
     4398     || defined __cplusplus || defined _MSC_VER)
    39704399static char *
    39714400yystpcpy (char *yydest, const char *yysrc)
     4401#else
     4402static char *
     4403yystpcpy (yydest, yysrc)
     4404    char *yydest;
     4405    const char *yysrc;
     4406#endif
    39724407{
    39734408  char *yyd = yydest;
     
    39994434
    40004435      for (;;)
    4001         switch (*++yyp)
    4002           {
    4003           case '\'':
    4004           case ',':
    4005             goto do_not_strip_quotes;
    4006 
    4007           case '\\':
    4008             if (*++yyp != '\\')
    4009               goto do_not_strip_quotes;
    4010             /* Fall through.  */
    4011           default:
    4012             if (yyres)
    4013               yyres[yyn] = *yyp;
    4014             yyn++;
    4015             break;
    4016 
    4017           case '"':
    4018             if (yyres)
    4019               yyres[yyn] = '\0';
    4020             return yyn;
    4021           }
     4436        switch (*++yyp)
     4437          {
     4438          case '\'':
     4439          case ',':
     4440            goto do_not_strip_quotes;
     4441
     4442          case '\\':
     4443            if (*++yyp != '\\')
     4444              goto do_not_strip_quotes;
     4445            /* Fall through.  */
     4446          default:
     4447            if (yyres)
     4448              yyres[yyn] = *yyp;
     4449            yyn++;
     4450            break;
     4451
     4452          case '"':
     4453            if (yyres)
     4454              yyres[yyn] = '\0';
     4455            return yyn;
     4456          }
    40224457    do_not_strip_quotes: ;
    40234458    }
     
    40424477                yytype_int16 *yyssp, int yytoken)
    40434478{
    4044   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
     4479  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
    40454480  YYSIZE_T yysize = yysize0;
     4481  YYSIZE_T yysize1;
    40464482  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
    40474483  /* Internationalized format string. */
    4048   const char *yyformat = YY_NULLPTR;
     4484  const char *yyformat = 0;
    40494485  /* Arguments of yyformat. */
    40504486  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
     
    40544490
    40554491  /* There are many possibilities here to consider:
     4492     - Assume YYFAIL is not used.  It's too flawed to consider.  See
     4493       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
     4494       for details.  YYERROR is fine as it does not invoke this
     4495       function.
    40564496     - If this state is a consistent state with a default action, then
    40574497       the only way this function was invoked is if the default action
     
    41024542                  }
    41034543                yyarg[yycount++] = yytname[yyx];
    4104                 {
    4105                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
    4106                   if (! (yysize <= yysize1
    4107                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4108                     return 2;
    4109                   yysize = yysize1;
    4110                 }
     4544                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
     4545                if (! (yysize <= yysize1
     4546                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4547                  return 2;
     4548                yysize = yysize1;
    41114549              }
    41124550        }
     
    41284566    }
    41294567
    4130   {
    4131     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
    4132     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4133       return 2;
    4134     yysize = yysize1;
    4135   }
     4568  yysize1 = yysize + yystrlen (yyformat);
     4569  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4570    return 2;
     4571  yysize = yysize1;
    41364572
    41374573  if (*yymsg_alloc < yysize)
     
    41704606`-----------------------------------------------*/
    41714607
     4608/*ARGSUSED*/
     4609#if (defined __STDC__ || defined __C99__FUNC__ \
     4610     || defined __cplusplus || defined _MSC_VER)
    41724611static void
    41734612yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
     4613#else
     4614static void
     4615yydestruct (yymsg, yytype, yyvaluep)
     4616    const char *yymsg;
     4617    int yytype;
     4618    YYSTYPE *yyvaluep;
     4619#endif
    41744620{
    41754621  YYUSE (yyvaluep);
     4622
    41764623  if (!yymsg)
    41774624    yymsg = "Deleting";
    41784625  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    41794626
    4180   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    4181   YYUSE (yytype);
    4182   YY_IGNORE_MAYBE_UNINITIALIZED_END
     4627  switch (yytype)
     4628    {
     4629
     4630      default:
     4631        break;
     4632    }
    41834633}
    41844634
    41854635
     4636/* Prevent warnings from -Wmissing-prototypes.  */
     4637#ifdef YYPARSE_PARAM
     4638#if defined __STDC__ || defined __cplusplus
     4639int yyparse (void *YYPARSE_PARAM);
     4640#else
     4641int yyparse ();
     4642#endif
     4643#else /* ! YYPARSE_PARAM */
     4644#if defined __STDC__ || defined __cplusplus
     4645int yyparse (void);
     4646#else
     4647int yyparse ();
     4648#endif
     4649#endif /* ! YYPARSE_PARAM */
    41864650
    41874651
     
    41914655/* The semantic value of the lookahead symbol.  */
    41924656YYSTYPE yylval;
     4657
    41934658/* Number of syntax errors so far.  */
    41944659int yynerrs;
     
    41994664`----------*/
    42004665
     4666#ifdef YYPARSE_PARAM
     4667#if (defined __STDC__ || defined __C99__FUNC__ \
     4668     || defined __cplusplus || defined _MSC_VER)
     4669int
     4670yyparse (void *YYPARSE_PARAM)
     4671#else
     4672int
     4673yyparse (YYPARSE_PARAM)
     4674    void *YYPARSE_PARAM;
     4675#endif
     4676#else /* ! YYPARSE_PARAM */
     4677#if (defined __STDC__ || defined __C99__FUNC__ \
     4678     || defined __cplusplus || defined _MSC_VER)
    42014679int
    42024680yyparse (void)
     4681#else
     4682int
     4683yyparse ()
     4684
     4685#endif
     4686#endif
    42034687{
    42044688    int yystate;
     
    42074691
    42084692    /* The stacks and their tools:
    4209        'yyss': related to states.
    4210        'yyvs': related to semantic values.
    4211 
    4212        Refer to the stacks through separate pointers, to allow yyoverflow
     4693       `yyss': related to states.
     4694       `yyvs': related to semantic values.
     4695
     4696       Refer to the stacks thru separate pointers, to allow yyoverflow
    42134697       to reallocate them elsewhere.  */
    42144698
     
    42284712  int yyresult;
    42294713  /* Lookahead token as an internal (translated) token number.  */
    4230   int yytoken = 0;
     4714  int yytoken;
    42314715  /* The variables used to return semantic value and location from the
    42324716     action routines.  */
     
    42464730  int yylen = 0;
    42474731
    4248   yyssp = yyss = yyssa;
    4249   yyvsp = yyvs = yyvsa;
     4732  yytoken = 0;
     4733  yyss = yyssa;
     4734  yyvs = yyvsa;
    42504735  yystacksize = YYINITDEPTH;
    42514736
     
    42564741  yynerrs = 0;
    42574742  yychar = YYEMPTY; /* Cause a token to be read.  */
     4743
     4744  /* Initialize stack pointers.
     4745     Waste one element of value and location stack
     4746     so that they stay on the same level as the state stack.
     4747     The wasted elements are never initialized.  */
     4748  yyssp = yyss;
     4749  yyvsp = yyvs;
     4750
    42584751  goto yysetstate;
    42594752
     
    42764769#ifdef yyoverflow
    42774770      {
    4278         /* Give user a chance to reallocate the stack.  Use copies of
    4279            these so that the &'s don't force the real ones into
    4280            memory.  */
    4281         YYSTYPE *yyvs1 = yyvs;
    4282         yytype_int16 *yyss1 = yyss;
    4283 
    4284         /* Each stack pointer address is followed by the size of the
    4285            data in use in that stack, in bytes.  This used to be a
    4286            conditional around just the two extra args, but that might
    4287            be undefined if yyoverflow is a macro.  */
    4288         yyoverflow (YY_("memory exhausted"),
    4289                     &yyss1, yysize * sizeof (*yyssp),
    4290                     &yyvs1, yysize * sizeof (*yyvsp),
    4291                     &yystacksize);
    4292 
    4293         yyss = yyss1;
    4294         yyvs = yyvs1;
     4771        /* Give user a chance to reallocate the stack.  Use copies of
     4772           these so that the &'s don't force the real ones into
     4773           memory.  */
     4774        YYSTYPE *yyvs1 = yyvs;
     4775        yytype_int16 *yyss1 = yyss;
     4776
     4777        /* Each stack pointer address is followed by the size of the
     4778           data in use in that stack, in bytes.  This used to be a
     4779           conditional around just the two extra args, but that might
     4780           be undefined if yyoverflow is a macro.  */
     4781        yyoverflow (YY_("memory exhausted"),
     4782                    &yyss1, yysize * sizeof (*yyssp),
     4783                    &yyvs1, yysize * sizeof (*yyvsp),
     4784                    &yystacksize);
     4785
     4786        yyss = yyss1;
     4787        yyvs = yyvs1;
    42954788      }
    42964789#else /* no yyoverflow */
     
    43004793      /* Extend the stack our own way.  */
    43014794      if (YYMAXDEPTH <= yystacksize)
    4302         goto yyexhaustedlab;
     4795        goto yyexhaustedlab;
    43034796      yystacksize *= 2;
    43044797      if (YYMAXDEPTH < yystacksize)
    4305         yystacksize = YYMAXDEPTH;
     4798        yystacksize = YYMAXDEPTH;
    43064799
    43074800      {
    4308         yytype_int16 *yyss1 = yyss;
    4309         union yyalloc *yyptr =
    4310           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
    4311         if (! yyptr)
    4312           goto yyexhaustedlab;
    4313         YYSTACK_RELOCATE (yyss_alloc, yyss);
    4314         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
     4801        yytype_int16 *yyss1 = yyss;
     4802        union yyalloc *yyptr =
     4803          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
     4804        if (! yyptr)
     4805          goto yyexhaustedlab;
     4806        YYSTACK_RELOCATE (yyss_alloc, yyss);
     4807        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
    43154808#  undef YYSTACK_RELOCATE
    4316         if (yyss1 != yyssa)
    4317           YYSTACK_FREE (yyss1);
     4809        if (yyss1 != yyssa)
     4810          YYSTACK_FREE (yyss1);
    43184811      }
    43194812# endif
     
    43244817
    43254818      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
    4326                   (unsigned long int) yystacksize));
     4819                  (unsigned long int) yystacksize));
    43274820
    43284821      if (yyss + yystacksize - 1 <= yyssp)
    4329         YYABORT;
     4822        YYABORT;
    43304823    }
    43314824
     
    43564849    {
    43574850      YYDPRINTF ((stderr, "Reading a token: "));
    4358       yychar = yylex ();
     4851      yychar = YYLEX;
    43594852    }
    43604853
     
    43964889
    43974890  yystate = yyn;
    4398   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    43994891  *++yyvsp = yylval;
    4400   YY_IGNORE_MAYBE_UNINITIALIZED_END
    44014892
    44024893  goto yynewstate;
     
    44214912
    44224913  /* If YYLEN is nonzero, implement the default value of the action:
    4423      '$$ = $1'.
     4914     `$$ = $1'.
    44244915
    44254916     Otherwise, the following line sets YYVAL to garbage.
     
    44354926    {
    44364927        case 2:
    4437 #line 305 "parser.yy" /* yacc.c:1646  */
     4928
     4929/* Line 1806 of yacc.c  */
     4930#line 306 "parser.yy"
    44384931    { typedefTable.enterScope(); }
    4439 #line 4440 "Parser/parser.cc" /* yacc.c:1646  */
    44404932    break;
    44414933
    44424934  case 3:
    4443 #line 309 "parser.yy" /* yacc.c:1646  */
     4935
     4936/* Line 1806 of yacc.c  */
     4937#line 310 "parser.yy"
    44444938    { typedefTable.leaveScope(); }
    4445 #line 4446 "Parser/parser.cc" /* yacc.c:1646  */
    44464939    break;
    44474940
    44484941  case 4:
    4449 #line 316 "parser.yy" /* yacc.c:1646  */
    4450     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[0].tok) ) ); }
    4451 #line 4452 "Parser/parser.cc" /* yacc.c:1646  */
     4942
     4943/* Line 1806 of yacc.c  */
     4944#line 317 "parser.yy"
     4945    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    44524946    break;
    44534947
    44544948  case 5:
    4455 #line 317 "parser.yy" /* yacc.c:1646  */
    4456     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
    4457 #line 4458 "Parser/parser.cc" /* yacc.c:1646  */
     4949
     4950/* Line 1806 of yacc.c  */
     4951#line 318 "parser.yy"
     4952    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    44584953    break;
    44594954
    44604955  case 6:
    4461 #line 318 "parser.yy" /* yacc.c:1646  */
    4462     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
    4463 #line 4464 "Parser/parser.cc" /* yacc.c:1646  */
     4956
     4957/* Line 1806 of yacc.c  */
     4958#line 319 "parser.yy"
     4959    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    44644960    break;
    44654961
    44664962  case 7:
    4467 #line 319 "parser.yy" /* yacc.c:1646  */
    4468     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
    4469 #line 4470 "Parser/parser.cc" /* yacc.c:1646  */
     4963
     4964/* Line 1806 of yacc.c  */
     4965#line 320 "parser.yy"
     4966    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    44704967    break;
    44714968
    44724969  case 8:
    4473 #line 320 "parser.yy" /* yacc.c:1646  */
    4474     { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[0].tok) ) ); }
    4475 #line 4476 "Parser/parser.cc" /* yacc.c:1646  */
     4970
     4971/* Line 1806 of yacc.c  */
     4972#line 321 "parser.yy"
     4973    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    44764974    break;
    44774975
    44784976  case 18:
    4479 #line 345 "parser.yy" /* yacc.c:1646  */
    4480     { (yyval.constant) = build_constantStr( *(yyvsp[0].str) ); }
    4481 #line 4482 "Parser/parser.cc" /* yacc.c:1646  */
     4977
     4978/* Line 1806 of yacc.c  */
     4979#line 346 "parser.yy"
     4980    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    44824981    break;
    44834982
    44844983  case 19:
    4485 #line 349 "parser.yy" /* yacc.c:1646  */
    4486     { (yyval.str) = (yyvsp[0].tok); }
    4487 #line 4488 "Parser/parser.cc" /* yacc.c:1646  */
     4984
     4985/* Line 1806 of yacc.c  */
     4986#line 350 "parser.yy"
     4987    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    44884988    break;
    44894989
    44904990  case 20:
    4491 #line 351 "parser.yy" /* yacc.c:1646  */
     4991
     4992/* Line 1806 of yacc.c  */
     4993#line 352 "parser.yy"
    44924994    {
    4493                         appendStr( (yyvsp[-1].str), (yyvsp[0].tok) );                                           // append 2nd juxtaposed string to 1st
    4494                         delete (yyvsp[0].tok);                                                                  // allocated by lexer
    4495                         (yyval.str) = (yyvsp[-1].str);                                                                  // conversion from tok to str
     4995                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     4996                        delete (yyvsp[(2) - (2)].tok);                                                                  // allocated by lexer
     4997                        (yyval.str) = (yyvsp[(1) - (2)].str);                                                                   // conversion from tok to str
    44964998                }
    4497 #line 4498 "Parser/parser.cc" /* yacc.c:1646  */
    44984999    break;
    44995000
    45005001  case 21:
    4501 #line 362 "parser.yy" /* yacc.c:1646  */
    4502     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
    4503 #line 4504 "Parser/parser.cc" /* yacc.c:1646  */
     5002
     5003/* Line 1806 of yacc.c  */
     5004#line 363 "parser.yy"
     5005    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    45045006    break;
    45055007
    45065008  case 22:
    4507 #line 364 "parser.yy" /* yacc.c:1646  */
    4508     { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[0].tok) ) ); }
    4509 #line 4510 "Parser/parser.cc" /* yacc.c:1646  */
     5009
     5010/* Line 1806 of yacc.c  */
     5011#line 365 "parser.yy"
     5012    { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[(1) - (1)].tok) ) ); }
    45105013    break;
    45115014
    45125015  case 24:
    4513 #line 367 "parser.yy" /* yacc.c:1646  */
    4514     { (yyval.en) = (yyvsp[-1].en); }
    4515 #line 4516 "Parser/parser.cc" /* yacc.c:1646  */
     5016
     5017/* Line 1806 of yacc.c  */
     5018#line 368 "parser.yy"
     5019    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    45165020    break;
    45175021
    45185022  case 25:
    4519 #line 369 "parser.yy" /* yacc.c:1646  */
    4520     { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); }
    4521 #line 4522 "Parser/parser.cc" /* yacc.c:1646  */
     5023
     5024/* Line 1806 of yacc.c  */
     5025#line 370 "parser.yy"
     5026    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    45225027    break;
    45235028
    45245029  case 27:
    4525 #line 379 "parser.yy" /* yacc.c:1646  */
    4526     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); }
    4527 #line 4528 "Parser/parser.cc" /* yacc.c:1646  */
     5030
     5031/* Line 1806 of yacc.c  */
     5032#line 380 "parser.yy"
     5033    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    45285034    break;
    45295035
    45305036  case 28:
    4531 #line 381 "parser.yy" /* yacc.c:1646  */
    4532     { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); }
    4533 #line 4534 "Parser/parser.cc" /* yacc.c:1646  */
     5037
     5038/* Line 1806 of yacc.c  */
     5039#line 382 "parser.yy"
     5040    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    45345041    break;
    45355042
    45365043  case 29:
    4537 #line 383 "parser.yy" /* yacc.c:1646  */
    4538     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
    4539 #line 4540 "Parser/parser.cc" /* yacc.c:1646  */
     5044
     5045/* Line 1806 of yacc.c  */
     5046#line 384 "parser.yy"
     5047    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    45405048    break;
    45415049
    45425050  case 30:
    4543 #line 385 "parser.yy" /* yacc.c:1646  */
    4544     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-6].en), build_tuple( (yyvsp[-2].en) ) ) ); }
    4545 #line 4546 "Parser/parser.cc" /* yacc.c:1646  */
     5051
     5052/* Line 1806 of yacc.c  */
     5053#line 386 "parser.yy"
     5054    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    45465055    break;
    45475056
    45485057  case 31:
    4549 #line 387 "parser.yy" /* yacc.c:1646  */
    4550     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-1].en), build_field_name_REALFRACTIONconstant( *(yyvsp[0].tok) ) ) ); }
    4551 #line 4552 "Parser/parser.cc" /* yacc.c:1646  */
     5058
     5059/* Line 1806 of yacc.c  */
     5060#line 388 "parser.yy"
     5061    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
    45525062    break;
    45535063
    45545064  case 32:
    4555 #line 389 "parser.yy" /* yacc.c:1646  */
    4556     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
    4557 #line 4558 "Parser/parser.cc" /* yacc.c:1646  */
     5065
     5066/* Line 1806 of yacc.c  */
     5067#line 390 "parser.yy"
     5068    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    45585069    break;
    45595070
    45605071  case 33:
    4561 #line 391 "parser.yy" /* yacc.c:1646  */
    4562     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-6].en), build_tuple( (yyvsp[-2].en) ) ) ); }
    4563 #line 4564 "Parser/parser.cc" /* yacc.c:1646  */
     5072
     5073/* Line 1806 of yacc.c  */
     5074#line 392 "parser.yy"
     5075    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    45645076    break;
    45655077
    45665078  case 34:
    4567 #line 393 "parser.yy" /* yacc.c:1646  */
    4568     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); }
    4569 #line 4570 "Parser/parser.cc" /* yacc.c:1646  */
     5079
     5080/* Line 1806 of yacc.c  */
     5081#line 394 "parser.yy"
     5082    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    45705083    break;
    45715084
    45725085  case 35:
    4573 #line 395 "parser.yy" /* yacc.c:1646  */
    4574     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); }
    4575 #line 4576 "Parser/parser.cc" /* yacc.c:1646  */
     5086
     5087/* Line 1806 of yacc.c  */
     5088#line 396 "parser.yy"
     5089    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    45765090    break;
    45775091
    45785092  case 36:
    4579 #line 397 "parser.yy" /* yacc.c:1646  */
    4580     { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); }
    4581 #line 4582 "Parser/parser.cc" /* yacc.c:1646  */
     5093
     5094/* Line 1806 of yacc.c  */
     5095#line 398 "parser.yy"
     5096    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    45825097    break;
    45835098
    45845099  case 37:
    4585 #line 399 "parser.yy" /* yacc.c:1646  */
     5100
     5101/* Line 1806 of yacc.c  */
     5102#line 400 "parser.yy"
    45865103    {
    45875104                        Token fn;
    45885105                        fn.str = new std::string( "?{}" );                      // location undefined - use location of '{'?
    4589                         (yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) ) );
     5106                        (yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ) );
    45905107                }
    4591 #line 4592 "Parser/parser.cc" /* yacc.c:1646  */
    45925108    break;
    45935109
    45945110  case 39:
    4595 #line 409 "parser.yy" /* yacc.c:1646  */
    4596     { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
    4597 #line 4598 "Parser/parser.cc" /* yacc.c:1646  */
     5111
     5112/* Line 1806 of yacc.c  */
     5113#line 410 "parser.yy"
     5114    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    45985115    break;
    45995116
    46005117  case 40:
    4601 #line 414 "parser.yy" /* yacc.c:1646  */
    4602     { (yyval.en) = 0; }
    4603 #line 4604 "Parser/parser.cc" /* yacc.c:1646  */
     5118
     5119/* Line 1806 of yacc.c  */
     5120#line 415 "parser.yy"
     5121    { (yyval.en) = nullptr; }
    46045122    break;
    46055123
    46065124  case 43:
    4607 #line 420 "parser.yy" /* yacc.c:1646  */
    4608     { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
    4609 #line 4610 "Parser/parser.cc" /* yacc.c:1646  */
     5125
     5126/* Line 1806 of yacc.c  */
     5127#line 421 "parser.yy"
     5128    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    46105129    break;
    46115130
    46125131  case 45:
    4613 #line 426 "parser.yy" /* yacc.c:1646  */
    4614     { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[-1].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[0].en) ) ) ); }
    4615 #line 4616 "Parser/parser.cc" /* yacc.c:1646  */
     5132
     5133/* Line 1806 of yacc.c  */
     5134#line 427 "parser.yy"
     5135    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
    46165136    break;
    46175137
    46185138  case 46:
    4619 #line 428 "parser.yy" /* yacc.c:1646  */
    4620     { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[-5].tok) ) ), build_tuple( (yyvsp[-2].en) ) ) ); }
    4621 #line 4622 "Parser/parser.cc" /* yacc.c:1646  */
     5139
     5140/* Line 1806 of yacc.c  */
     5141#line 429 "parser.yy"
     5142    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
    46225143    break;
    46235144
    46245145  case 47:
    4625 #line 430 "parser.yy" /* yacc.c:1646  */
    4626     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), maybeMoveBuild<Expression>( (yyvsp[0].en) ) ) ); }
    4627 #line 4628 "Parser/parser.cc" /* yacc.c:1646  */
     5146
     5147/* Line 1806 of yacc.c  */
     5148#line 431 "parser.yy"
     5149    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    46285150    break;
    46295151
    46305152  case 48:
    4631 #line 432 "parser.yy" /* yacc.c:1646  */
    4632     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-6].en), build_tuple( (yyvsp[-2].en) ) ) ); }
    4633 #line 4634 "Parser/parser.cc" /* yacc.c:1646  */
     5153
     5154/* Line 1806 of yacc.c  */
     5155#line 433 "parser.yy"
     5156    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    46345157    break;
    46355158
    46365159  case 49:
    4637 #line 434 "parser.yy" /* yacc.c:1646  */
    4638     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), maybeMoveBuild<Expression>( (yyvsp[0].en) ) ) ); }
    4639 #line 4640 "Parser/parser.cc" /* yacc.c:1646  */
     5160
     5161/* Line 1806 of yacc.c  */
     5162#line 435 "parser.yy"
     5163    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    46405164    break;
    46415165
    46425166  case 50:
    4643 #line 436 "parser.yy" /* yacc.c:1646  */
    4644     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-6].en), build_tuple( (yyvsp[-2].en) ) ) ); }
    4645 #line 4646 "Parser/parser.cc" /* yacc.c:1646  */
     5167
     5168/* Line 1806 of yacc.c  */
     5169#line 437 "parser.yy"
     5170    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    46465171    break;
    46475172
    46485173  case 51:
    4649 #line 441 "parser.yy" /* yacc.c:1646  */
    4650     { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[-1].tok) ), (yyvsp[0].en) ) ); }
    4651 #line 4652 "Parser/parser.cc" /* yacc.c:1646  */
     5174
     5175/* Line 1806 of yacc.c  */
     5176#line 442 "parser.yy"
     5177    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    46525178    break;
    46535179
    46545180  case 52:
    4655 #line 443 "parser.yy" /* yacc.c:1646  */
    4656     { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[-1].tok) ), (yyvsp[0].en) ) ); }
    4657 #line 4658 "Parser/parser.cc" /* yacc.c:1646  */
     5181
     5182/* Line 1806 of yacc.c  */
     5183#line 444 "parser.yy"
     5184    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    46585185    break;
    46595186
    46605187  case 53:
    4661 #line 445 "parser.yy" /* yacc.c:1646  */
     5188
     5189/* Line 1806 of yacc.c  */
     5190#line 446 "parser.yy"
    46625191    {
    4663                         if( (*(yyvsp[-1].tok)) == "0" || (*(yyvsp[-1].tok)) == "1" ) {
    4664                                 (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *(yyvsp[-1].tok) ), (yyvsp[0].en) ) );
     5192                        if( (*(yyvsp[(1) - (2)].tok)) == "0" || (*(yyvsp[(1) - (2)].tok)) == "1" ) {
     5193                                (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
    46655194                        } else {
    4666                                 (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[-1].tok) ), (yyvsp[0].en) ) );
     5195                                (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
    46675196                        }
    46685197                }
    4669 #line 4670 "Parser/parser.cc" /* yacc.c:1646  */
    46705198    break;
    46715199
    46725200  case 54:
    4673 #line 456 "parser.yy" /* yacc.c:1646  */
     5201
     5202/* Line 1806 of yacc.c  */
     5203#line 457 "parser.yy"
    46745204    { (yyval.en) = nullptr; }
    4675 #line 4676 "Parser/parser.cc" /* yacc.c:1646  */
    46765205    break;
    46775206
    46785207  case 55:
    4679 #line 458 "parser.yy" /* yacc.c:1646  */
     5208
     5209/* Line 1806 of yacc.c  */
     5210#line 459 "parser.yy"
    46805211    {
    4681                         Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[0].tok) );
    4682                         (yyval.en) = (yyvsp[-1].en) != nullptr ? new ExpressionNode( build_fieldSel( (yyvsp[-1].en),  constant ) ) : new ExpressionNode( constant );
     5212                        Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
     5213                        (yyval.en) = (yyvsp[(1) - (2)].en) != nullptr ? new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en),  constant ) ) : new ExpressionNode( constant );
    46835214                }
    4684 #line 4685 "Parser/parser.cc" /* yacc.c:1646  */
    46855215    break;
    46865216
    46875217  case 57:
    4688 #line 469 "parser.yy" /* yacc.c:1646  */
    4689     { (yyval.en) = (yyvsp[0].en); }
    4690 #line 4691 "Parser/parser.cc" /* yacc.c:1646  */
     5218
     5219/* Line 1806 of yacc.c  */
     5220#line 470 "parser.yy"
     5221    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    46915222    break;
    46925223
    46935224  case 58:
    4694 #line 471 "parser.yy" /* yacc.c:1646  */
    4695     { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
    4696 #line 4697 "Parser/parser.cc" /* yacc.c:1646  */
     5225
     5226/* Line 1806 of yacc.c  */
     5227#line 472 "parser.yy"
     5228    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    46975229    break;
    46985230
    46995231  case 59:
    4700 #line 473 "parser.yy" /* yacc.c:1646  */
    4701     { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
    4702 #line 4703 "Parser/parser.cc" /* yacc.c:1646  */
     5232
     5233/* Line 1806 of yacc.c  */
     5234#line 474 "parser.yy"
     5235    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    47035236    break;
    47045237
    47055238  case 60:
    4706 #line 478 "parser.yy" /* yacc.c:1646  */
     5239
     5240/* Line 1806 of yacc.c  */
     5241#line 479 "parser.yy"
    47075242    {
    4708                         switch ( (yyvsp[-1].op) ) {
     5243                        switch ( (yyvsp[(1) - (2)].op) ) {
    47095244                          case OperKinds::AddressOf:
    4710                                 (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) );
     5245                                (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
    47115246                                break;
    47125247                          case OperKinds::PointTo:
    4713                                 (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) );
     5248                                (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
    47145249                                break;
    47155250                          default:
     
    47175252                        }
    47185253                }
    4719 #line 4720 "Parser/parser.cc" /* yacc.c:1646  */
    47205254    break;
    47215255
    47225256  case 61:
    4723 #line 491 "parser.yy" /* yacc.c:1646  */
    4724     { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
    4725 #line 4726 "Parser/parser.cc" /* yacc.c:1646  */
     5257
     5258/* Line 1806 of yacc.c  */
     5259#line 492 "parser.yy"
     5260    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    47265261    break;
    47275262
    47285263  case 62:
    4729 #line 493 "parser.yy" /* yacc.c:1646  */
    4730     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
    4731 #line 4732 "Parser/parser.cc" /* yacc.c:1646  */
     5264
     5265/* Line 1806 of yacc.c  */
     5266#line 494 "parser.yy"
     5267    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    47325268    break;
    47335269
    47345270  case 63:
    4735 #line 495 "parser.yy" /* yacc.c:1646  */
    4736     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
    4737 #line 4738 "Parser/parser.cc" /* yacc.c:1646  */
     5271
     5272/* Line 1806 of yacc.c  */
     5273#line 496 "parser.yy"
     5274    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    47385275    break;
    47395276
    47405277  case 64:
    4741 #line 497 "parser.yy" /* yacc.c:1646  */
    4742     { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
    4743 #line 4744 "Parser/parser.cc" /* yacc.c:1646  */
     5278
     5279/* Line 1806 of yacc.c  */
     5280#line 498 "parser.yy"
     5281    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    47445282    break;
    47455283
    47465284  case 65:
    4747 #line 499 "parser.yy" /* yacc.c:1646  */
    4748     { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
    4749 #line 4750 "Parser/parser.cc" /* yacc.c:1646  */
     5285
     5286/* Line 1806 of yacc.c  */
     5287#line 500 "parser.yy"
     5288    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    47505289    break;
    47515290
    47525291  case 66:
    4753 #line 501 "parser.yy" /* yacc.c:1646  */
    4754     { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
    4755 #line 4756 "Parser/parser.cc" /* yacc.c:1646  */
     5292
     5293/* Line 1806 of yacc.c  */
     5294#line 502 "parser.yy"
     5295    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    47565296    break;
    47575297
    47585298  case 67:
    4759 #line 503 "parser.yy" /* yacc.c:1646  */
    4760     { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
    4761 #line 4762 "Parser/parser.cc" /* yacc.c:1646  */
     5299
     5300/* Line 1806 of yacc.c  */
     5301#line 504 "parser.yy"
     5302    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    47625303    break;
    47635304
    47645305  case 68:
    4765 #line 505 "parser.yy" /* yacc.c:1646  */
    4766     { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
    4767 #line 4768 "Parser/parser.cc" /* yacc.c:1646  */
     5306
     5307/* Line 1806 of yacc.c  */
     5308#line 506 "parser.yy"
     5309    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    47685310    break;
    47695311
    47705312  case 69:
    4771 #line 507 "parser.yy" /* yacc.c:1646  */
    4772     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
    4773 #line 4774 "Parser/parser.cc" /* yacc.c:1646  */
     5313
     5314/* Line 1806 of yacc.c  */
     5315#line 508 "parser.yy"
     5316    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    47745317    break;
    47755318
    47765319  case 70:
    4777 #line 509 "parser.yy" /* yacc.c:1646  */
    4778     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
    4779 #line 4780 "Parser/parser.cc" /* yacc.c:1646  */
     5320
     5321/* Line 1806 of yacc.c  */
     5322#line 510 "parser.yy"
     5323    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    47805324    break;
    47815325
    47825326  case 71:
    4783 #line 511 "parser.yy" /* yacc.c:1646  */
    4784     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
    4785 #line 4786 "Parser/parser.cc" /* yacc.c:1646  */
     5327
     5328/* Line 1806 of yacc.c  */
     5329#line 512 "parser.yy"
     5330    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    47865331    break;
    47875332
    47885333  case 72:
    4789 #line 517 "parser.yy" /* yacc.c:1646  */
     5334
     5335/* Line 1806 of yacc.c  */
     5336#line 518 "parser.yy"
    47905337    { (yyval.op) = OperKinds::PointTo; }
    4791 #line 4792 "Parser/parser.cc" /* yacc.c:1646  */
    47925338    break;
    47935339
    47945340  case 73:
    4795 #line 518 "parser.yy" /* yacc.c:1646  */
     5341
     5342/* Line 1806 of yacc.c  */
     5343#line 519 "parser.yy"
    47965344    { (yyval.op) = OperKinds::AddressOf; }
    4797 #line 4798 "Parser/parser.cc" /* yacc.c:1646  */
    47985345    break;
    47995346
    48005347  case 74:
    4801 #line 524 "parser.yy" /* yacc.c:1646  */
     5348
     5349/* Line 1806 of yacc.c  */
     5350#line 525 "parser.yy"
    48025351    { (yyval.op) = OperKinds::UnPlus; }
    4803 #line 4804 "Parser/parser.cc" /* yacc.c:1646  */
    48045352    break;
    48055353
    48065354  case 75:
    4807 #line 525 "parser.yy" /* yacc.c:1646  */
     5355
     5356/* Line 1806 of yacc.c  */
     5357#line 526 "parser.yy"
    48085358    { (yyval.op) = OperKinds::UnMinus; }
    4809 #line 4810 "Parser/parser.cc" /* yacc.c:1646  */
    48105359    break;
    48115360
    48125361  case 76:
    4813 #line 526 "parser.yy" /* yacc.c:1646  */
     5362
     5363/* Line 1806 of yacc.c  */
     5364#line 527 "parser.yy"
    48145365    { (yyval.op) = OperKinds::Neg; }
    4815 #line 4816 "Parser/parser.cc" /* yacc.c:1646  */
    48165366    break;
    48175367
    48185368  case 77:
    4819 #line 527 "parser.yy" /* yacc.c:1646  */
     5369
     5370/* Line 1806 of yacc.c  */
     5371#line 528 "parser.yy"
    48205372    { (yyval.op) = OperKinds::BitNeg; }
    4821 #line 4822 "Parser/parser.cc" /* yacc.c:1646  */
    48225373    break;
    48235374
    48245375  case 79:
    4825 #line 533 "parser.yy" /* yacc.c:1646  */
    4826     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
    4827 #line 4828 "Parser/parser.cc" /* yacc.c:1646  */
     5376
     5377/* Line 1806 of yacc.c  */
     5378#line 534 "parser.yy"
     5379    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    48285380    break;
    48295381
    48305382  case 81:
    4831 #line 541 "parser.yy" /* yacc.c:1646  */
    4832     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4833 #line 4834 "Parser/parser.cc" /* yacc.c:1646  */
     5383
     5384/* Line 1806 of yacc.c  */
     5385#line 542 "parser.yy"
     5386    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48345387    break;
    48355388
    48365389  case 82:
    4837 #line 543 "parser.yy" /* yacc.c:1646  */
    4838     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4839 #line 4840 "Parser/parser.cc" /* yacc.c:1646  */
     5390
     5391/* Line 1806 of yacc.c  */
     5392#line 544 "parser.yy"
     5393    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48405394    break;
    48415395
    48425396  case 83:
    4843 #line 545 "parser.yy" /* yacc.c:1646  */
    4844     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4845 #line 4846 "Parser/parser.cc" /* yacc.c:1646  */
     5397
     5398/* Line 1806 of yacc.c  */
     5399#line 546 "parser.yy"
     5400    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48465401    break;
    48475402
    48485403  case 85:
    4849 #line 551 "parser.yy" /* yacc.c:1646  */
    4850     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4851 #line 4852 "Parser/parser.cc" /* yacc.c:1646  */
     5404
     5405/* Line 1806 of yacc.c  */
     5406#line 552 "parser.yy"
     5407    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48525408    break;
    48535409
    48545410  case 86:
    4855 #line 553 "parser.yy" /* yacc.c:1646  */
    4856     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4857 #line 4858 "Parser/parser.cc" /* yacc.c:1646  */
     5411
     5412/* Line 1806 of yacc.c  */
     5413#line 554 "parser.yy"
     5414    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48585415    break;
    48595416
    48605417  case 88:
    4861 #line 559 "parser.yy" /* yacc.c:1646  */
    4862     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4863 #line 4864 "Parser/parser.cc" /* yacc.c:1646  */
     5418
     5419/* Line 1806 of yacc.c  */
     5420#line 560 "parser.yy"
     5421    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48645422    break;
    48655423
    48665424  case 89:
    4867 #line 561 "parser.yy" /* yacc.c:1646  */
    4868     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4869 #line 4870 "Parser/parser.cc" /* yacc.c:1646  */
     5425
     5426/* Line 1806 of yacc.c  */
     5427#line 562 "parser.yy"
     5428    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48705429    break;
    48715430
    48725431  case 91:
    4873 #line 567 "parser.yy" /* yacc.c:1646  */
    4874     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4875 #line 4876 "Parser/parser.cc" /* yacc.c:1646  */
     5432
     5433/* Line 1806 of yacc.c  */
     5434#line 568 "parser.yy"
     5435    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48765436    break;
    48775437
    48785438  case 92:
    4879 #line 569 "parser.yy" /* yacc.c:1646  */
    4880     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4881 #line 4882 "Parser/parser.cc" /* yacc.c:1646  */
     5439
     5440/* Line 1806 of yacc.c  */
     5441#line 570 "parser.yy"
     5442    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48825443    break;
    48835444
    48845445  case 93:
    4885 #line 571 "parser.yy" /* yacc.c:1646  */
    4886     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4887 #line 4888 "Parser/parser.cc" /* yacc.c:1646  */
     5446
     5447/* Line 1806 of yacc.c  */
     5448#line 572 "parser.yy"
     5449    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48885450    break;
    48895451
    48905452  case 94:
    4891 #line 573 "parser.yy" /* yacc.c:1646  */
    4892     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4893 #line 4894 "Parser/parser.cc" /* yacc.c:1646  */
     5453
     5454/* Line 1806 of yacc.c  */
     5455#line 574 "parser.yy"
     5456    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    48945457    break;
    48955458
    48965459  case 96:
    4897 #line 579 "parser.yy" /* yacc.c:1646  */
    4898     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4899 #line 4900 "Parser/parser.cc" /* yacc.c:1646  */
     5460
     5461/* Line 1806 of yacc.c  */
     5462#line 580 "parser.yy"
     5463    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    49005464    break;
    49015465
    49025466  case 97:
    4903 #line 581 "parser.yy" /* yacc.c:1646  */
    4904     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4905 #line 4906 "Parser/parser.cc" /* yacc.c:1646  */
     5467
     5468/* Line 1806 of yacc.c  */
     5469#line 582 "parser.yy"
     5470    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    49065471    break;
    49075472
    49085473  case 99:
    4909 #line 587 "parser.yy" /* yacc.c:1646  */
    4910     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4911 #line 4912 "Parser/parser.cc" /* yacc.c:1646  */
     5474
     5475/* Line 1806 of yacc.c  */
     5476#line 588 "parser.yy"
     5477    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    49125478    break;
    49135479
    49145480  case 101:
    4915 #line 593 "parser.yy" /* yacc.c:1646  */
    4916     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4917 #line 4918 "Parser/parser.cc" /* yacc.c:1646  */
     5481
     5482/* Line 1806 of yacc.c  */
     5483#line 594 "parser.yy"
     5484    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    49185485    break;
    49195486
    49205487  case 103:
    4921 #line 599 "parser.yy" /* yacc.c:1646  */
    4922     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4923 #line 4924 "Parser/parser.cc" /* yacc.c:1646  */
     5488
     5489/* Line 1806 of yacc.c  */
     5490#line 600 "parser.yy"
     5491    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    49245492    break;
    49255493
    49265494  case 105:
    4927 #line 605 "parser.yy" /* yacc.c:1646  */
    4928     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
    4929 #line 4930 "Parser/parser.cc" /* yacc.c:1646  */
     5495
     5496/* Line 1806 of yacc.c  */
     5497#line 606 "parser.yy"
     5498    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    49305499    break;
    49315500
    49325501  case 107:
    4933 #line 611 "parser.yy" /* yacc.c:1646  */
    4934     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
    4935 #line 4936 "Parser/parser.cc" /* yacc.c:1646  */
     5502
     5503/* Line 1806 of yacc.c  */
     5504#line 612 "parser.yy"
     5505    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    49365506    break;
    49375507
    49385508  case 109:
    4939 #line 617 "parser.yy" /* yacc.c:1646  */
    4940     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4941 #line 4942 "Parser/parser.cc" /* yacc.c:1646  */
     5509
     5510/* Line 1806 of yacc.c  */
     5511#line 618 "parser.yy"
     5512    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    49425513    break;
    49435514
    49445515  case 110:
    4945 #line 620 "parser.yy" /* yacc.c:1646  */
    4946     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
    4947 #line 4948 "Parser/parser.cc" /* yacc.c:1646  */
     5516
     5517/* Line 1806 of yacc.c  */
     5518#line 621 "parser.yy"
     5519    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    49485520    break;
    49495521
    49505522  case 113:
    4951 #line 633 "parser.yy" /* yacc.c:1646  */
    4952     { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4953 #line 4954 "Parser/parser.cc" /* yacc.c:1646  */
     5523
     5524/* Line 1806 of yacc.c  */
     5525#line 634 "parser.yy"
     5526    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    49545527    break;
    49555528
    49565529  case 114:
    4957 #line 640 "parser.yy" /* yacc.c:1646  */
     5530
     5531/* Line 1806 of yacc.c  */
     5532#line 641 "parser.yy"
    49585533    { (yyval.en) = nullptr; }
    4959 #line 4960 "Parser/parser.cc" /* yacc.c:1646  */
    49605534    break;
    49615535
    49625536  case 116:
    4963 #line 645 "parser.yy" /* yacc.c:1646  */
     5537
     5538/* Line 1806 of yacc.c  */
     5539#line 646 "parser.yy"
    49645540    { (yyval.op) = OperKinds::Assign; }
    4965 #line 4966 "Parser/parser.cc" /* yacc.c:1646  */
    49665541    break;
    49675542
    49685543  case 117:
    4969 #line 646 "parser.yy" /* yacc.c:1646  */
     5544
     5545/* Line 1806 of yacc.c  */
     5546#line 647 "parser.yy"
    49705547    { (yyval.op) = OperKinds::AtAssn; }
    4971 #line 4972 "Parser/parser.cc" /* yacc.c:1646  */
    49725548    break;
    49735549
    49745550  case 118:
    4975 #line 647 "parser.yy" /* yacc.c:1646  */
     5551
     5552/* Line 1806 of yacc.c  */
     5553#line 648 "parser.yy"
    49765554    { (yyval.op) = OperKinds::MulAssn; }
    4977 #line 4978 "Parser/parser.cc" /* yacc.c:1646  */
    49785555    break;
    49795556
    49805557  case 119:
    4981 #line 648 "parser.yy" /* yacc.c:1646  */
     5558
     5559/* Line 1806 of yacc.c  */
     5560#line 649 "parser.yy"
    49825561    { (yyval.op) = OperKinds::DivAssn; }
    4983 #line 4984 "Parser/parser.cc" /* yacc.c:1646  */
    49845562    break;
    49855563
    49865564  case 120:
    4987 #line 649 "parser.yy" /* yacc.c:1646  */
     5565
     5566/* Line 1806 of yacc.c  */
     5567#line 650 "parser.yy"
    49885568    { (yyval.op) = OperKinds::ModAssn; }
    4989 #line 4990 "Parser/parser.cc" /* yacc.c:1646  */
    49905569    break;
    49915570
    49925571  case 121:
    4993 #line 650 "parser.yy" /* yacc.c:1646  */
     5572
     5573/* Line 1806 of yacc.c  */
     5574#line 651 "parser.yy"
    49945575    { (yyval.op) = OperKinds::PlusAssn; }
    4995 #line 4996 "Parser/parser.cc" /* yacc.c:1646  */
    49965576    break;
    49975577
    49985578  case 122:
    4999 #line 651 "parser.yy" /* yacc.c:1646  */
     5579
     5580/* Line 1806 of yacc.c  */
     5581#line 652 "parser.yy"
    50005582    { (yyval.op) = OperKinds::MinusAssn; }
    5001 #line 5002 "Parser/parser.cc" /* yacc.c:1646  */
    50025583    break;
    50035584
    50045585  case 123:
    5005 #line 652 "parser.yy" /* yacc.c:1646  */
     5586
     5587/* Line 1806 of yacc.c  */
     5588#line 653 "parser.yy"
    50065589    { (yyval.op) = OperKinds::LSAssn; }
    5007 #line 5008 "Parser/parser.cc" /* yacc.c:1646  */
    50085590    break;
    50095591
    50105592  case 124:
    5011 #line 653 "parser.yy" /* yacc.c:1646  */
     5593
     5594/* Line 1806 of yacc.c  */
     5595#line 654 "parser.yy"
    50125596    { (yyval.op) = OperKinds::RSAssn; }
    5013 #line 5014 "Parser/parser.cc" /* yacc.c:1646  */
    50145597    break;
    50155598
    50165599  case 125:
    5017 #line 654 "parser.yy" /* yacc.c:1646  */
     5600
     5601/* Line 1806 of yacc.c  */
     5602#line 655 "parser.yy"
    50185603    { (yyval.op) = OperKinds::AndAssn; }
    5019 #line 5020 "Parser/parser.cc" /* yacc.c:1646  */
    50205604    break;
    50215605
    50225606  case 126:
    5023 #line 655 "parser.yy" /* yacc.c:1646  */
     5607
     5608/* Line 1806 of yacc.c  */
     5609#line 656 "parser.yy"
    50245610    { (yyval.op) = OperKinds::ERAssn; }
    5025 #line 5026 "Parser/parser.cc" /* yacc.c:1646  */
    50265611    break;
    50275612
    50285613  case 127:
    5029 #line 656 "parser.yy" /* yacc.c:1646  */
     5614
     5615/* Line 1806 of yacc.c  */
     5616#line 657 "parser.yy"
    50305617    { (yyval.op) = OperKinds::OrAssn; }
    5031 #line 5032 "Parser/parser.cc" /* yacc.c:1646  */
    50325618    break;
    50335619
    50345620  case 128:
    5035 #line 667 "parser.yy" /* yacc.c:1646  */
    5036     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
    5037 #line 5038 "Parser/parser.cc" /* yacc.c:1646  */
     5621
     5622/* Line 1806 of yacc.c  */
     5623#line 668 "parser.yy"
     5624    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    50385625    break;
    50395626
    50405627  case 129:
    5041 #line 669 "parser.yy" /* yacc.c:1646  */
    5042     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
    5043 #line 5044 "Parser/parser.cc" /* yacc.c:1646  */
     5628
     5629/* Line 1806 of yacc.c  */
     5630#line 670 "parser.yy"
     5631    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    50445632    break;
    50455633
    50465634  case 131:
    5047 #line 675 "parser.yy" /* yacc.c:1646  */
    5048     { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
    5049 #line 5050 "Parser/parser.cc" /* yacc.c:1646  */
     5635
     5636/* Line 1806 of yacc.c  */
     5637#line 676 "parser.yy"
     5638    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    50505639    break;
    50515640
    50525641  case 133:
    5053 #line 681 "parser.yy" /* yacc.c:1646  */
    5054     { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    5055 #line 5056 "Parser/parser.cc" /* yacc.c:1646  */
     5642
     5643/* Line 1806 of yacc.c  */
     5644#line 682 "parser.yy"
     5645    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    50565646    break;
    50575647
    50585648  case 134:
    5059 #line 686 "parser.yy" /* yacc.c:1646  */
    5060     { (yyval.en) = 0; }
    5061 #line 5062 "Parser/parser.cc" /* yacc.c:1646  */
     5649
     5650/* Line 1806 of yacc.c  */
     5651#line 687 "parser.yy"
     5652    { (yyval.en) = nullptr; }
    50625653    break;
    50635654
    50645655  case 138:
    5065 #line 695 "parser.yy" /* yacc.c:1646  */
    5066     { (yyval.sn) = (yyvsp[0].sn); }
    5067 #line 5068 "Parser/parser.cc" /* yacc.c:1646  */
     5656
     5657/* Line 1806 of yacc.c  */
     5658#line 696 "parser.yy"
     5659    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    50685660    break;
    50695661
    50705662  case 144:
    5071 #line 702 "parser.yy" /* yacc.c:1646  */
     5663
     5664/* Line 1806 of yacc.c  */
     5665#line 703 "parser.yy"
    50725666    {
    50735667                        Token fn;
    50745668                        fn.str = new string( "^?{}" );                          // location undefined
    5075                         (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) );
     5669                        (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) ) ) ) ) );
    50765670                }
    5077 #line 5078 "Parser/parser.cc" /* yacc.c:1646  */
    50785671    break;
    50795672
    50805673  case 145:
    5081 #line 712 "parser.yy" /* yacc.c:1646  */
     5674
     5675/* Line 1806 of yacc.c  */
     5676#line 713 "parser.yy"
    50825677    {
    5083                         (yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
     5678                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
    50845679                }
    5085 #line 5086 "Parser/parser.cc" /* yacc.c:1646  */
    50865680    break;
    50875681
    50885682  case 146:
    5089 #line 719 "parser.yy" /* yacc.c:1646  */
     5683
     5684/* Line 1806 of yacc.c  */
     5685#line 720 "parser.yy"
    50905686    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    5091 #line 5092 "Parser/parser.cc" /* yacc.c:1646  */
    50925687    break;
    50935688
    50945689  case 147:
    5095 #line 726 "parser.yy" /* yacc.c:1646  */
    5096     { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
    5097 #line 5098 "Parser/parser.cc" /* yacc.c:1646  */
     5690
     5691/* Line 1806 of yacc.c  */
     5692#line 727 "parser.yy"
     5693    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    50985694    break;
    50995695
    51005696  case 149:
    5101 #line 732 "parser.yy" /* yacc.c:1646  */
    5102     { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
    5103 #line 5104 "Parser/parser.cc" /* yacc.c:1646  */
     5697
     5698/* Line 1806 of yacc.c  */
     5699#line 733 "parser.yy"
     5700    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    51045701    break;
    51055702
    51065703  case 150:
    5107 #line 737 "parser.yy" /* yacc.c:1646  */
    5108     { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
    5109 #line 5110 "Parser/parser.cc" /* yacc.c:1646  */
     5704
     5705/* Line 1806 of yacc.c  */
     5706#line 738 "parser.yy"
     5707    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    51105708    break;
    51115709
    51125710  case 151:
    5113 #line 739 "parser.yy" /* yacc.c:1646  */
     5711
     5712/* Line 1806 of yacc.c  */
     5713#line 740 "parser.yy"
    51145714    {   // mark all fields in list
    5115                         for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     5715                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    51165716                                iter->set_extension( true );
    5117                         (yyval.sn) = new StatementNode( (yyvsp[0].decl) );
     5717                        (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
    51185718                }
    5119 #line 5120 "Parser/parser.cc" /* yacc.c:1646  */
    51205719    break;
    51215720
    51225721  case 152:
    5123 #line 745 "parser.yy" /* yacc.c:1646  */
    5124     { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
    5125 #line 5126 "Parser/parser.cc" /* yacc.c:1646  */
     5722
     5723/* Line 1806 of yacc.c  */
     5724#line 746 "parser.yy"
     5725    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    51265726    break;
    51275727
    51285728  case 155:
    5129 #line 752 "parser.yy" /* yacc.c:1646  */
    5130     { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
    5131 #line 5132 "Parser/parser.cc" /* yacc.c:1646  */
     5729
     5730/* Line 1806 of yacc.c  */
     5731#line 753 "parser.yy"
     5732    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    51325733    break;
    51335734
    51345735  case 156:
    5135 #line 757 "parser.yy" /* yacc.c:1646  */
    5136     { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
    5137 #line 5138 "Parser/parser.cc" /* yacc.c:1646  */
     5736
     5737/* Line 1806 of yacc.c  */
     5738#line 758 "parser.yy"
     5739    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    51385740    break;
    51395741
    51405742  case 157:
    5141 #line 763 "parser.yy" /* yacc.c:1646  */
    5142     { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
    5143 #line 5144 "Parser/parser.cc" /* yacc.c:1646  */
     5743
     5744/* Line 1806 of yacc.c  */
     5745#line 764 "parser.yy"
     5746    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    51445747    break;
    51455748
    51465749  case 158:
    5147 #line 765 "parser.yy" /* yacc.c:1646  */
    5148     { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
    5149 #line 5150 "Parser/parser.cc" /* yacc.c:1646  */
     5750
     5751/* Line 1806 of yacc.c  */
     5752#line 766 "parser.yy"
     5753    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    51505754    break;
    51515755
    51525756  case 159:
    5153 #line 767 "parser.yy" /* yacc.c:1646  */
    5154     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
    5155 #line 5156 "Parser/parser.cc" /* yacc.c:1646  */
     5757
     5758/* Line 1806 of yacc.c  */
     5759#line 768 "parser.yy"
     5760    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    51565761    break;
    51575762
    51585763  case 160:
    5159 #line 769 "parser.yy" /* yacc.c:1646  */
     5764
     5765/* Line 1806 of yacc.c  */
     5766#line 770 "parser.yy"
    51605767    {
    5161                         StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
     5768                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    51625769                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    51635770                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    51655772                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    51665773                        // statement.
    5167                         (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
     5774                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    51685775                }
    5169 #line 5170 "Parser/parser.cc" /* yacc.c:1646  */
    51705776    break;
    51715777
    51725778  case 161:
    5173 #line 779 "parser.yy" /* yacc.c:1646  */
    5174     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
    5175 #line 5176 "Parser/parser.cc" /* yacc.c:1646  */
     5779
     5780/* Line 1806 of yacc.c  */
     5781#line 780 "parser.yy"
     5782    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    51765783    break;
    51775784
    51785785  case 162:
    5179 #line 781 "parser.yy" /* yacc.c:1646  */
     5786
     5787/* Line 1806 of yacc.c  */
     5788#line 782 "parser.yy"
    51805789    {
    5181                         StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
    5182                         (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
     5790                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     5791                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    51835792                }
    5184 #line 5185 "Parser/parser.cc" /* yacc.c:1646  */
    51855793    break;
    51865794
    51875795  case 163:
    5188 #line 791 "parser.yy" /* yacc.c:1646  */
    5189     { (yyval.en) = (yyvsp[0].en); }
    5190 #line 5191 "Parser/parser.cc" /* yacc.c:1646  */
     5796
     5797/* Line 1806 of yacc.c  */
     5798#line 792 "parser.yy"
     5799    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51915800    break;
    51925801
    51935802  case 164:
    5194 #line 793 "parser.yy" /* yacc.c:1646  */
    5195     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    5196 #line 5197 "Parser/parser.cc" /* yacc.c:1646  */
     5803
     5804/* Line 1806 of yacc.c  */
     5805#line 794 "parser.yy"
     5806    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    51975807    break;
    51985808
    51995809  case 166:
    5200 #line 798 "parser.yy" /* yacc.c:1646  */
    5201     { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
    5202 #line 5203 "Parser/parser.cc" /* yacc.c:1646  */
     5810
     5811/* Line 1806 of yacc.c  */
     5812#line 799 "parser.yy"
     5813    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    52035814    break;
    52045815
    52055816  case 167:
    5206 #line 800 "parser.yy" /* yacc.c:1646  */
    5207     { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
    5208 #line 5209 "Parser/parser.cc" /* yacc.c:1646  */
     5817
     5818/* Line 1806 of yacc.c  */
     5819#line 801 "parser.yy"
     5820    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    52095821    break;
    52105822
    52115823  case 168:
    5212 #line 804 "parser.yy" /* yacc.c:1646  */
    5213     { (yyval.sn) = (yyvsp[-1].sn); }
    5214 #line 5215 "Parser/parser.cc" /* yacc.c:1646  */
     5824
     5825/* Line 1806 of yacc.c  */
     5826#line 805 "parser.yy"
     5827    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    52155828    break;
    52165829
    52175830  case 169:
    5218 #line 805 "parser.yy" /* yacc.c:1646  */
     5831
     5832/* Line 1806 of yacc.c  */
     5833#line 806 "parser.yy"
    52195834    { (yyval.sn) = new StatementNode( build_default() ); }
    5220 #line 5221 "Parser/parser.cc" /* yacc.c:1646  */
    52215835    break;
    52225836
    52235837  case 171:
    5224 #line 811 "parser.yy" /* yacc.c:1646  */
    5225     { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
    5226 #line 5227 "Parser/parser.cc" /* yacc.c:1646  */
     5838
     5839/* Line 1806 of yacc.c  */
     5840#line 812 "parser.yy"
     5841    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    52275842    break;
    52285843
    52295844  case 172:
    5230 #line 815 "parser.yy" /* yacc.c:1646  */
    5231     { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
    5232 #line 5233 "Parser/parser.cc" /* yacc.c:1646  */
     5845
     5846/* Line 1806 of yacc.c  */
     5847#line 816 "parser.yy"
     5848    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    52335849    break;
    52345850
    52355851  case 173:
    5236 #line 820 "parser.yy" /* yacc.c:1646  */
    5237     { (yyval.sn) = 0; }
    5238 #line 5239 "Parser/parser.cc" /* yacc.c:1646  */
     5852
     5853/* Line 1806 of yacc.c  */
     5854#line 821 "parser.yy"
     5855    { (yyval.sn) = nullptr; }
    52395856    break;
    52405857
    52415858  case 175:
    5242 #line 826 "parser.yy" /* yacc.c:1646  */
    5243     { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
    5244 #line 5245 "Parser/parser.cc" /* yacc.c:1646  */
     5859
     5860/* Line 1806 of yacc.c  */
     5861#line 827 "parser.yy"
     5862    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    52455863    break;
    52465864
    52475865  case 176:
    5248 #line 828 "parser.yy" /* yacc.c:1646  */
    5249     { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); }
    5250 #line 5251 "Parser/parser.cc" /* yacc.c:1646  */
     5866
     5867/* Line 1806 of yacc.c  */
     5868#line 829 "parser.yy"
     5869    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    52515870    break;
    52525871
    52535872  case 177:
    5254 #line 833 "parser.yy" /* yacc.c:1646  */
    5255     { (yyval.sn) = 0; }
    5256 #line 5257 "Parser/parser.cc" /* yacc.c:1646  */
     5873
     5874/* Line 1806 of yacc.c  */
     5875#line 834 "parser.yy"
     5876    { (yyval.sn) = nullptr; }
    52575877    break;
    52585878
    52595879  case 179:
    5260 #line 839 "parser.yy" /* yacc.c:1646  */
    5261     { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
    5262 #line 5263 "Parser/parser.cc" /* yacc.c:1646  */
     5880
     5881/* Line 1806 of yacc.c  */
     5882#line 840 "parser.yy"
     5883    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    52635884    break;
    52645885
    52655886  case 180:
    5266 #line 841 "parser.yy" /* yacc.c:1646  */
    5267     { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); }
    5268 #line 5269 "Parser/parser.cc" /* yacc.c:1646  */
     5887
     5888/* Line 1806 of yacc.c  */
     5889#line 842 "parser.yy"
     5890    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    52695891    break;
    52705892
    52715893  case 181:
    5272 #line 843 "parser.yy" /* yacc.c:1646  */
    5273     { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
    5274 #line 5275 "Parser/parser.cc" /* yacc.c:1646  */
     5894
     5895/* Line 1806 of yacc.c  */
     5896#line 844 "parser.yy"
     5897    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    52755898    break;
    52765899
    52775900  case 182:
    5278 #line 845 "parser.yy" /* yacc.c:1646  */
    5279     { (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) ) ) ) ) ) ); }
    5280 #line 5281 "Parser/parser.cc" /* yacc.c:1646  */
     5901
     5902/* Line 1806 of yacc.c  */
     5903#line 846 "parser.yy"
     5904    { (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) ) ) ) ) ) ); }
    52815905    break;
    52825906
    52835907  case 183:
    5284 #line 850 "parser.yy" /* yacc.c:1646  */
     5908
     5909/* Line 1806 of yacc.c  */
     5910#line 851 "parser.yy"
    52855911    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    5286 #line 5287 "Parser/parser.cc" /* yacc.c:1646  */
    52875912    break;
    52885913
    52895914  case 185:
    5290 #line 856 "parser.yy" /* yacc.c:1646  */
    5291     { (yyval.sn) = 0; }
    5292 #line 5293 "Parser/parser.cc" /* yacc.c:1646  */
     5915
     5916/* Line 1806 of yacc.c  */
     5917#line 857 "parser.yy"
     5918    { (yyval.sn) = nullptr; }
    52935919    break;
    52945920
    52955921  case 186:
    5296 #line 858 "parser.yy" /* yacc.c:1646  */
    5297     { (yyval.sn) = 0; }
    5298 #line 5299 "Parser/parser.cc" /* yacc.c:1646  */
     5922
     5923/* Line 1806 of yacc.c  */
     5924#line 859 "parser.yy"
     5925    { (yyval.sn) = nullptr; }
    52995926    break;
    53005927
    53015928  case 187:
    5302 #line 863 "parser.yy" /* yacc.c:1646  */
    5303     { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
    5304 #line 5305 "Parser/parser.cc" /* yacc.c:1646  */
     5929
     5930/* Line 1806 of yacc.c  */
     5931#line 864 "parser.yy"
     5932    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    53055933    break;
    53065934
    53075935  case 188:
    5308 #line 865 "parser.yy" /* yacc.c:1646  */
    5309     { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn), true ) ); }
    5310 #line 5311 "Parser/parser.cc" /* yacc.c:1646  */
     5936
     5937/* Line 1806 of yacc.c  */
     5938#line 866 "parser.yy"
     5939    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    53115940    break;
    53125941
    53135942  case 189:
    5314 #line 867 "parser.yy" /* yacc.c:1646  */
    5315     { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
    5316 #line 5317 "Parser/parser.cc" /* yacc.c:1646  */
     5943
     5944/* Line 1806 of yacc.c  */
     5945#line 868 "parser.yy"
     5946    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    53175947    break;
    53185948
    53195949  case 190:
    5320 #line 872 "parser.yy" /* yacc.c:1646  */
    5321     { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
    5322 #line 5323 "Parser/parser.cc" /* yacc.c:1646  */
     5950
     5951/* Line 1806 of yacc.c  */
     5952#line 873 "parser.yy"
     5953    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    53235954    break;
    53245955
    53255956  case 191:
    5326 #line 874 "parser.yy" /* yacc.c:1646  */
    5327     { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
    5328 #line 5329 "Parser/parser.cc" /* yacc.c:1646  */
     5957
     5958/* Line 1806 of yacc.c  */
     5959#line 875 "parser.yy"
     5960    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    53295961    break;
    53305962
    53315963  case 192:
    5332 #line 879 "parser.yy" /* yacc.c:1646  */
    5333     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Goto ) ); }
    5334 #line 5335 "Parser/parser.cc" /* yacc.c:1646  */
     5964
     5965/* Line 1806 of yacc.c  */
     5966#line 880 "parser.yy"
     5967    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    53355968    break;
    53365969
    53375970  case 193:
    5338 #line 883 "parser.yy" /* yacc.c:1646  */
    5339     { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
    5340 #line 5341 "Parser/parser.cc" /* yacc.c:1646  */
     5971
     5972/* Line 1806 of yacc.c  */
     5973#line 884 "parser.yy"
     5974    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    53415975    break;
    53425976
    53435977  case 194:
    5344 #line 886 "parser.yy" /* yacc.c:1646  */
     5978
     5979/* Line 1806 of yacc.c  */
     5980#line 887 "parser.yy"
    53455981    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    5346 #line 5347 "Parser/parser.cc" /* yacc.c:1646  */
    53475982    break;
    53485983
    53495984  case 195:
    5350 #line 890 "parser.yy" /* yacc.c:1646  */
    5351     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Continue ) ); }
    5352 #line 5353 "Parser/parser.cc" /* yacc.c:1646  */
     5985
     5986/* Line 1806 of yacc.c  */
     5987#line 891 "parser.yy"
     5988    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    53535989    break;
    53545990
    53555991  case 196:
    5356 #line 893 "parser.yy" /* yacc.c:1646  */
     5992
     5993/* Line 1806 of yacc.c  */
     5994#line 894 "parser.yy"
    53575995    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    5358 #line 5359 "Parser/parser.cc" /* yacc.c:1646  */
    53595996    break;
    53605997
    53615998  case 197:
    5362 #line 897 "parser.yy" /* yacc.c:1646  */
    5363     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Break ) ); }
    5364 #line 5365 "Parser/parser.cc" /* yacc.c:1646  */
     5999
     6000/* Line 1806 of yacc.c  */
     6001#line 898 "parser.yy"
     6002    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    53656003    break;
    53666004
    53676005  case 198:
    5368 #line 899 "parser.yy" /* yacc.c:1646  */
    5369     { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
    5370 #line 5371 "Parser/parser.cc" /* yacc.c:1646  */
     6006
     6007/* Line 1806 of yacc.c  */
     6008#line 900 "parser.yy"
     6009    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    53716010    break;
    53726011
    53736012  case 199:
    5374 #line 901 "parser.yy" /* yacc.c:1646  */
    5375     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
    5376 #line 5377 "Parser/parser.cc" /* yacc.c:1646  */
     6013
     6014/* Line 1806 of yacc.c  */
     6015#line 902 "parser.yy"
     6016    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    53776017    break;
    53786018
    53796019  case 200:
    5380 #line 903 "parser.yy" /* yacc.c:1646  */
    5381     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
    5382 #line 5383 "Parser/parser.cc" /* yacc.c:1646  */
     6020
     6021/* Line 1806 of yacc.c  */
     6022#line 904 "parser.yy"
     6023    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    53836024    break;
    53846025
    53856026  case 201:
    5386 #line 905 "parser.yy" /* yacc.c:1646  */
    5387     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
    5388 #line 5389 "Parser/parser.cc" /* yacc.c:1646  */
     6027
     6028/* Line 1806 of yacc.c  */
     6029#line 906 "parser.yy"
     6030    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    53896031    break;
    53906032
    53916033  case 202:
    5392 #line 910 "parser.yy" /* yacc.c:1646  */
    5393     { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
    5394 #line 5395 "Parser/parser.cc" /* yacc.c:1646  */
     6034
     6035/* Line 1806 of yacc.c  */
     6036#line 911 "parser.yy"
     6037    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    53956038    break;
    53966039
    53976040  case 203:
    5398 #line 912 "parser.yy" /* yacc.c:1646  */
    5399     { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
    5400 #line 5401 "Parser/parser.cc" /* yacc.c:1646  */
     6041
     6042/* Line 1806 of yacc.c  */
     6043#line 913 "parser.yy"
     6044    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    54016045    break;
    54026046
    54036047  case 204:
    5404 #line 914 "parser.yy" /* yacc.c:1646  */
    5405     { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
    5406 #line 5407 "Parser/parser.cc" /* yacc.c:1646  */
     6048
     6049/* Line 1806 of yacc.c  */
     6050#line 915 "parser.yy"
     6051    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    54076052    break;
    54086053
    54096054  case 206:
    5410 #line 921 "parser.yy" /* yacc.c:1646  */
    5411     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
    5412 #line 5413 "Parser/parser.cc" /* yacc.c:1646  */
     6055
     6056/* Line 1806 of yacc.c  */
     6057#line 922 "parser.yy"
     6058    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    54136059    break;
    54146060
    54156061  case 207:
    5416 #line 923 "parser.yy" /* yacc.c:1646  */
    5417     { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
    5418 #line 5419 "Parser/parser.cc" /* yacc.c:1646  */
     6062
     6063/* Line 1806 of yacc.c  */
     6064#line 924 "parser.yy"
     6065    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    54196066    break;
    54206067
    54216068  case 208:
    5422 #line 925 "parser.yy" /* yacc.c:1646  */
    5423     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
    5424 #line 5425 "Parser/parser.cc" /* yacc.c:1646  */
     6069
     6070/* Line 1806 of yacc.c  */
     6071#line 926 "parser.yy"
     6072    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    54256073    break;
    54266074
    54276075  case 209:
    5428 #line 927 "parser.yy" /* yacc.c:1646  */
    5429     { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
    5430 #line 5431 "Parser/parser.cc" /* yacc.c:1646  */
     6076
     6077/* Line 1806 of yacc.c  */
     6078#line 928 "parser.yy"
     6079    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    54316080    break;
    54326081
    54336082  case 210:
    5434 #line 932 "parser.yy" /* yacc.c:1646  */
    5435     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
    5436 #line 5437 "Parser/parser.cc" /* yacc.c:1646  */
     6083
     6084/* Line 1806 of yacc.c  */
     6085#line 933 "parser.yy"
     6086    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    54376087    break;
    54386088
    54396089  case 211:
    5440 #line 934 "parser.yy" /* yacc.c:1646  */
    5441     { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
    5442 #line 5443 "Parser/parser.cc" /* yacc.c:1646  */
     6090
     6091/* Line 1806 of yacc.c  */
     6092#line 935 "parser.yy"
     6093    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    54436094    break;
    54446095
    54456096  case 212:
    5446 #line 936 "parser.yy" /* yacc.c:1646  */
    5447     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
    5448 #line 5449 "Parser/parser.cc" /* yacc.c:1646  */
     6097
     6098/* Line 1806 of yacc.c  */
     6099#line 937 "parser.yy"
     6100    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    54496101    break;
    54506102
    54516103  case 213:
    5452 #line 938 "parser.yy" /* yacc.c:1646  */
    5453     { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
    5454 #line 5455 "Parser/parser.cc" /* yacc.c:1646  */
     6104
     6105/* Line 1806 of yacc.c  */
     6106#line 939 "parser.yy"
     6107    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    54556108    break;
    54566109
    54576110  case 214:
    5458 #line 943 "parser.yy" /* yacc.c:1646  */
     6111
     6112/* Line 1806 of yacc.c  */
     6113#line 944 "parser.yy"
    54596114    {
    5460                         (yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
     6115                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
    54616116                }
    5462 #line 5463 "Parser/parser.cc" /* yacc.c:1646  */
    54636117    break;
    54646118
    54656119  case 216:
    5466 #line 956 "parser.yy" /* yacc.c:1646  */
     6120
     6121/* Line 1806 of yacc.c  */
     6122#line 957 "parser.yy"
    54676123    {
    54686124                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5469                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
     6125                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
    54706126                }
    5471 #line 5472 "Parser/parser.cc" /* yacc.c:1646  */
    54726127    break;
    54736128
    54746129  case 217:
    5475 #line 961 "parser.yy" /* yacc.c:1646  */
    5476     { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    5477 #line 5478 "Parser/parser.cc" /* yacc.c:1646  */
     6130
     6131/* Line 1806 of yacc.c  */
     6132#line 962 "parser.yy"
     6133    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    54786134    break;
    54796135
    54806136  case 218:
    5481 #line 963 "parser.yy" /* yacc.c:1646  */
     6137
     6138/* Line 1806 of yacc.c  */
     6139#line 964 "parser.yy"
    54826140    {
    54836141                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5484                         (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
     6142                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
    54856143                }
    5486 #line 5487 "Parser/parser.cc" /* yacc.c:1646  */
    54876144    break;
    54886145
    54896146  case 220:
    5490 #line 972 "parser.yy" /* yacc.c:1646  */
    5491     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
    5492 #line 5493 "Parser/parser.cc" /* yacc.c:1646  */
     6147
     6148/* Line 1806 of yacc.c  */
     6149#line 973 "parser.yy"
     6150    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    54936151    break;
    54946152
    54956153  case 221:
    5496 #line 974 "parser.yy" /* yacc.c:1646  */
    5497     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
    5498 #line 5499 "Parser/parser.cc" /* yacc.c:1646  */
     6154
     6155/* Line 1806 of yacc.c  */
     6156#line 975 "parser.yy"
     6157    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    54996158    break;
    55006159
    55016160  case 222:
    5502 #line 976 "parser.yy" /* yacc.c:1646  */
    5503     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
    5504 #line 5505 "Parser/parser.cc" /* yacc.c:1646  */
     6161
     6162/* Line 1806 of yacc.c  */
     6163#line 977 "parser.yy"
     6164    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    55056165    break;
    55066166
    55076167  case 223:
    5508 #line 978 "parser.yy" /* yacc.c:1646  */
    5509     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
    5510 #line 5511 "Parser/parser.cc" /* yacc.c:1646  */
     6168
     6169/* Line 1806 of yacc.c  */
     6170#line 979 "parser.yy"
     6171    { (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) ) ); }
    55116172    break;
    55126173
    55136174  case 224:
    5514 #line 980 "parser.yy" /* yacc.c:1646  */
    5515     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); }
    5516 #line 5517 "Parser/parser.cc" /* yacc.c:1646  */
     6175
     6176/* Line 1806 of yacc.c  */
     6177#line 981 "parser.yy"
     6178    { (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) ) ); }
    55176179    break;
    55186180
    55196181  case 225:
    5520 #line 985 "parser.yy" /* yacc.c:1646  */
     6182
     6183/* Line 1806 of yacc.c  */
     6184#line 986 "parser.yy"
    55216185    { (yyval.flag) = false; }
    5522 #line 5523 "Parser/parser.cc" /* yacc.c:1646  */
    55236186    break;
    55246187
    55256188  case 226:
    5526 #line 987 "parser.yy" /* yacc.c:1646  */
     6189
     6190/* Line 1806 of yacc.c  */
     6191#line 988 "parser.yy"
    55276192    { (yyval.flag) = true; }
    5528 #line 5529 "Parser/parser.cc" /* yacc.c:1646  */
    55296193    break;
    55306194
    55316195  case 227:
    5532 #line 992 "parser.yy" /* yacc.c:1646  */
    5533     { (yyval.en) = 0; }
    5534 #line 5535 "Parser/parser.cc" /* yacc.c:1646  */
     6196
     6197/* Line 1806 of yacc.c  */
     6198#line 993 "parser.yy"
     6199    { (yyval.en) = nullptr; }
    55356200    break;
    55366201
    55376202  case 230:
    5538 #line 999 "parser.yy" /* yacc.c:1646  */
    5539     { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
    5540 #line 5541 "Parser/parser.cc" /* yacc.c:1646  */
     6203
     6204/* Line 1806 of yacc.c  */
     6205#line 1000 "parser.yy"
     6206    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    55416207    break;
    55426208
    55436209  case 231:
    5544 #line 1004 "parser.yy" /* yacc.c:1646  */
    5545     { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
    5546 #line 5547 "Parser/parser.cc" /* yacc.c:1646  */
     6210
     6211/* Line 1806 of yacc.c  */
     6212#line 1005 "parser.yy"
     6213    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    55476214    break;
    55486215
    55496216  case 232:
    5550 #line 1006 "parser.yy" /* yacc.c:1646  */
    5551     { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
    5552 #line 5553 "Parser/parser.cc" /* yacc.c:1646  */
     6217
     6218/* Line 1806 of yacc.c  */
     6219#line 1007 "parser.yy"
     6220    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    55536221    break;
    55546222
    55556223  case 233:
    5556 #line 1011 "parser.yy" /* yacc.c:1646  */
    5557     { (yyval.en) = 0; }
    5558 #line 5559 "Parser/parser.cc" /* yacc.c:1646  */
     6224
     6225/* Line 1806 of yacc.c  */
     6226#line 1012 "parser.yy"
     6227    { (yyval.en) = nullptr; }
    55596228    break;
    55606229
    55616230  case 234:
    5562 #line 1013 "parser.yy" /* yacc.c:1646  */
    5563     { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
    5564 #line 5565 "Parser/parser.cc" /* yacc.c:1646  */
     6231
     6232/* Line 1806 of yacc.c  */
     6233#line 1014 "parser.yy"
     6234    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    55656235    break;
    55666236
    55676237  case 235:
    5568 #line 1015 "parser.yy" /* yacc.c:1646  */
    5569     { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
    5570 #line 5571 "Parser/parser.cc" /* yacc.c:1646  */
     6238
     6239/* Line 1806 of yacc.c  */
     6240#line 1016 "parser.yy"
     6241    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    55716242    break;
    55726243
    55736244  case 236:
    5574 #line 1020 "parser.yy" /* yacc.c:1646  */
     6245
     6246/* Line 1806 of yacc.c  */
     6247#line 1021 "parser.yy"
    55756248    {
    5576                         (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[0].tok) );
    5577                         delete (yyvsp[0].tok);                                                                  // allocated by lexer
     6249                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     6250                        delete (yyvsp[(1) - (1)].tok);                                                                  // allocated by lexer
    55786251                }
    5579 #line 5580 "Parser/parser.cc" /* yacc.c:1646  */
    55806252    break;
    55816253
    55826254  case 237:
    5583 #line 1025 "parser.yy" /* yacc.c:1646  */
     6255
     6256/* Line 1806 of yacc.c  */
     6257#line 1026 "parser.yy"
    55846258    {
    5585                         (yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( *(yyvsp[0].tok) );
    5586                         delete (yyvsp[0].tok);                                                                  // allocated by lexer
     6259                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     6260                        delete (yyvsp[(3) - (3)].tok);                                                                  // allocated by lexer
    55876261                }
    5588 #line 5589 "Parser/parser.cc" /* yacc.c:1646  */
    55896262    break;
    55906263
    55916264  case 238:
    5592 #line 1035 "parser.yy" /* yacc.c:1646  */
    5593     { (yyval.decl) = 0; }
    5594 #line 5595 "Parser/parser.cc" /* yacc.c:1646  */
     6265
     6266/* Line 1806 of yacc.c  */
     6267#line 1036 "parser.yy"
     6268    { (yyval.decl) = nullptr; }
    55956269    break;
    55966270
    55976271  case 241:
    5598 #line 1042 "parser.yy" /* yacc.c:1646  */
    5599     { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
    5600 #line 5601 "Parser/parser.cc" /* yacc.c:1646  */
     6272
     6273/* Line 1806 of yacc.c  */
     6274#line 1043 "parser.yy"
     6275    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    56016276    break;
    56026277
    56036278  case 242:
    5604 #line 1047 "parser.yy" /* yacc.c:1646  */
    5605     { (yyval.decl) = 0; }
    5606 #line 5607 "Parser/parser.cc" /* yacc.c:1646  */
     6279
     6280/* Line 1806 of yacc.c  */
     6281#line 1048 "parser.yy"
     6282    { (yyval.decl) = nullptr; }
    56076283    break;
    56086284
    56096285  case 245:
    5610 #line 1054 "parser.yy" /* yacc.c:1646  */
    5611     { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
    5612 #line 5613 "Parser/parser.cc" /* yacc.c:1646  */
     6286
     6287/* Line 1806 of yacc.c  */
     6288#line 1055 "parser.yy"
     6289    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    56136290    break;
    56146291
    56156292  case 250:
    5616 #line 1068 "parser.yy" /* yacc.c:1646  */
     6293
     6294/* Line 1806 of yacc.c  */
     6295#line 1069 "parser.yy"
    56176296    {}
    5618 #line 5619 "Parser/parser.cc" /* yacc.c:1646  */
    56196297    break;
    56206298
    56216299  case 251:
    5622 #line 1069 "parser.yy" /* yacc.c:1646  */
     6300
     6301/* Line 1806 of yacc.c  */
     6302#line 1070 "parser.yy"
    56236303    {}
    5624 #line 5625 "Parser/parser.cc" /* yacc.c:1646  */
    56256304    break;
    56266305
    56276306  case 259:
    5628 #line 1098 "parser.yy" /* yacc.c:1646  */
     6307
     6308/* Line 1806 of yacc.c  */
     6309#line 1099 "parser.yy"
    56296310    {
    56306311                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5631                         (yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
     6312                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
    56326313                }
    5633 #line 5634 "Parser/parser.cc" /* yacc.c:1646  */
    56346314    break;
    56356315
    56366316  case 260:
    5637 #line 1105 "parser.yy" /* yacc.c:1646  */
     6317
     6318/* Line 1806 of yacc.c  */
     6319#line 1106 "parser.yy"
    56386320    {
    56396321                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5640                         (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
     6322                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
    56416323                }
    5642 #line 5643 "Parser/parser.cc" /* yacc.c:1646  */
    56436324    break;
    56446325
    56456326  case 261:
    5646 #line 1110 "parser.yy" /* yacc.c:1646  */
     6327
     6328/* Line 1806 of yacc.c  */
     6329#line 1111 "parser.yy"
    56476330    {
    5648                         typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID );
    5649                         (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) );
     6331                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     6332                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
    56506333                }
    5651 #line 5652 "Parser/parser.cc" /* yacc.c:1646  */
    56526334    break;
    56536335
    56546336  case 262:
    5655 #line 1120 "parser.yy" /* yacc.c:1646  */
     6337
     6338/* Line 1806 of yacc.c  */
     6339#line 1121 "parser.yy"
    56566340    {
    5657                         typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    5658                         (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
     6341                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     6342                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
    56596343                }
    5660 #line 5661 "Parser/parser.cc" /* yacc.c:1646  */
    56616344    break;
    56626345
    56636346  case 263:
    5664 #line 1125 "parser.yy" /* yacc.c:1646  */
     6347
     6348/* Line 1806 of yacc.c  */
     6349#line 1126 "parser.yy"
    56656350    {
    5666                         typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    5667                         (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
     6351                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     6352                        (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
    56686353                }
    5669 #line 5670 "Parser/parser.cc" /* yacc.c:1646  */
    56706354    break;
    56716355
    56726356  case 264:
    5673 #line 1130 "parser.yy" /* yacc.c:1646  */
     6357
     6358/* Line 1806 of yacc.c  */
     6359#line 1131 "parser.yy"
    56746360    {
    5675                         typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    5676                         (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
     6361                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     6362                        (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) )->addAsmName( (yyvsp[(4) - (4)].constant) );
    56776363                }
    5678 #line 5679 "Parser/parser.cc" /* yacc.c:1646  */
    56796364    break;
    56806365
    56816366  case 265:
    5682 #line 1138 "parser.yy" /* yacc.c:1646  */
     6367
     6368/* Line 1806 of yacc.c  */
     6369#line 1139 "parser.yy"
    56836370    {
    56846371                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5685                         (yyval.decl) = (yyvsp[0].decl);
     6372                        (yyval.decl) = (yyvsp[(1) - (1)].decl);
    56866373                }
    5687 #line 5688 "Parser/parser.cc" /* yacc.c:1646  */
    56886374    break;
    56896375
    56906376  case 266:
    5691 #line 1143 "parser.yy" /* yacc.c:1646  */
     6377
     6378/* Line 1806 of yacc.c  */
     6379#line 1144 "parser.yy"
    56926380    {
    56936381                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5694                         (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
     6382                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
    56956383                }
    5696 #line 5697 "Parser/parser.cc" /* yacc.c:1646  */
    56976384    break;
    56986385
    56996386  case 267:
    5700 #line 1148 "parser.yy" /* yacc.c:1646  */
     6387
     6388/* Line 1806 of yacc.c  */
     6389#line 1149 "parser.yy"
    57016390    {
    57026391                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5703                         (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
     6392                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
    57046393                }
    5705 #line 5706 "Parser/parser.cc" /* yacc.c:1646  */
    57066394    break;
    57076395
    57086396  case 268:
    5709 #line 1153 "parser.yy" /* yacc.c:1646  */
     6397
     6398/* Line 1806 of yacc.c  */
     6399#line 1154 "parser.yy"
    57106400    {
    57116401                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5712                         (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
     6402                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
    57136403                }
    5714 #line 5715 "Parser/parser.cc" /* yacc.c:1646  */
    57156404    break;
    57166405
    57176406  case 269:
    5718 #line 1158 "parser.yy" /* yacc.c:1646  */
     6407
     6408/* Line 1806 of yacc.c  */
     6409#line 1159 "parser.yy"
    57196410    {
    5720                         typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
    5721                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
     6411                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     6412                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    57226413                }
    5723 #line 5724 "Parser/parser.cc" /* yacc.c:1646  */
    57246414    break;
    57256415
    57266416  case 270:
    5727 #line 1189 "parser.yy" /* yacc.c:1646  */
     6417
     6418/* Line 1806 of yacc.c  */
     6419#line 1190 "parser.yy"
    57286420    {
    5729                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
     6421                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
    57306422                }
    5731 #line 5732 "Parser/parser.cc" /* yacc.c:1646  */
    57326423    break;
    57336424
    57346425  case 271:
    5735 #line 1193 "parser.yy" /* yacc.c:1646  */
     6426
     6427/* Line 1806 of yacc.c  */
     6428#line 1194 "parser.yy"
    57366429    {
    5737                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
     6430                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
    57386431                }
    5739 #line 5740 "Parser/parser.cc" /* yacc.c:1646  */
    57406432    break;
    57416433
    57426434  case 272:
    5743 #line 1200 "parser.yy" /* yacc.c:1646  */
    5744     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
    5745 #line 5746 "Parser/parser.cc" /* yacc.c:1646  */
     6435
     6436/* Line 1806 of yacc.c  */
     6437#line 1201 "parser.yy"
     6438    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    57466439    break;
    57476440
    57486441  case 273:
    5749 #line 1204 "parser.yy" /* yacc.c:1646  */
    5750     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
    5751 #line 5752 "Parser/parser.cc" /* yacc.c:1646  */
     6442
     6443/* Line 1806 of yacc.c  */
     6444#line 1205 "parser.yy"
     6445    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    57526446    break;
    57536447
    57546448  case 274:
    5755 #line 1209 "parser.yy" /* yacc.c:1646  */
     6449
     6450/* Line 1806 of yacc.c  */
     6451#line 1210 "parser.yy"
    57566452    {
    57576453                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5758                         (yyval.decl) = (yyvsp[0].decl)->addTypedef();
     6454                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    57596455                }
    5760 #line 5761 "Parser/parser.cc" /* yacc.c:1646  */
    57616456    break;
    57626457
    57636458  case 275:
    5764 #line 1214 "parser.yy" /* yacc.c:1646  */
     6459
     6460/* Line 1806 of yacc.c  */
     6461#line 1215 "parser.yy"
    57656462    {
    57666463                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5767                         (yyval.decl) = (yyvsp[0].decl)->addTypedef();
     6464                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    57686465                }
    5769 #line 5770 "Parser/parser.cc" /* yacc.c:1646  */
    57706466    break;
    57716467
    57726468  case 276:
    5773 #line 1219 "parser.yy" /* yacc.c:1646  */
     6469
     6470/* Line 1806 of yacc.c  */
     6471#line 1220 "parser.yy"
    57746472    {
    5775                         typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
    5776                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
     6473                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     6474                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    57776475                }
    5778 #line 5779 "Parser/parser.cc" /* yacc.c:1646  */
    57796476    break;
    57806477
    57816478  case 277:
    5782 #line 1230 "parser.yy" /* yacc.c:1646  */
     6479
     6480/* Line 1806 of yacc.c  */
     6481#line 1231 "parser.yy"
    57836482    {
    57846483                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5785                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
     6484                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
    57866485                }
    5787 #line 5788 "Parser/parser.cc" /* yacc.c:1646  */
    57886486    break;
    57896487
    57906488  case 278:
    5791 #line 1235 "parser.yy" /* yacc.c:1646  */
     6489
     6490/* Line 1806 of yacc.c  */
     6491#line 1236 "parser.yy"
    57926492    {
    57936493                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5794                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
     6494                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
    57956495                }
    5796 #line 5797 "Parser/parser.cc" /* yacc.c:1646  */
    57976496    break;
    57986497
    57996498  case 279:
    5800 #line 1240 "parser.yy" /* yacc.c:1646  */
     6499
     6500/* Line 1806 of yacc.c  */
     6501#line 1241 "parser.yy"
    58016502    {
    58026503                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5803                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
     6504                        (yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
    58046505                }
    5805 #line 5806 "Parser/parser.cc" /* yacc.c:1646  */
    58066506    break;
    58076507
    58086508  case 280:
    5809 #line 1245 "parser.yy" /* yacc.c:1646  */
     6509
     6510/* Line 1806 of yacc.c  */
     6511#line 1246 "parser.yy"
    58106512    {
    58116513                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5812                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
     6514                        (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
    58136515                }
    5814 #line 5815 "Parser/parser.cc" /* yacc.c:1646  */
    58156516    break;
    58166517
    58176518  case 281:
    5818 #line 1250 "parser.yy" /* yacc.c:1646  */
     6519
     6520/* Line 1806 of yacc.c  */
     6521#line 1251 "parser.yy"
    58196522    {
    58206523                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    5821                         (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
     6524                        (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
    58226525                }
    5823 #line 5824 "Parser/parser.cc" /* yacc.c:1646  */
    58246526    break;
    58256527
    58266528  case 282:
    5827 #line 1259 "parser.yy" /* yacc.c:1646  */
     6529
     6530/* Line 1806 of yacc.c  */
     6531#line 1260 "parser.yy"
    58286532    {
    5829                         typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
     6533                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
    58306534                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    58316535                }
    5832 #line 5833 "Parser/parser.cc" /* yacc.c:1646  */
    58336536    break;
    58346537
    58356538  case 283:
    5836 #line 1264 "parser.yy" /* yacc.c:1646  */
     6539
     6540/* Line 1806 of yacc.c  */
     6541#line 1265 "parser.yy"
    58376542    {
    5838                         typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
     6543                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
    58396544                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    58406545                }
    5841 #line 5842 "Parser/parser.cc" /* yacc.c:1646  */
    58426546    break;
    58436547
    58446548  case 288:
    5845 #line 1281 "parser.yy" /* yacc.c:1646  */
     6549
     6550/* Line 1806 of yacc.c  */
     6551#line 1282 "parser.yy"
    58466552    {
    58476553                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5848                         (yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
     6554                        (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addAsmName( (yyvsp[(3) - (4)].constant) )->addInitializer( (yyvsp[(4) - (4)].in) );
    58496555                }
    5850 #line 5851 "Parser/parser.cc" /* yacc.c:1646  */
    58516556    break;
    58526557
    58536558  case 289:
    5854 #line 1286 "parser.yy" /* yacc.c:1646  */
     6559
     6560/* Line 1806 of yacc.c  */
     6561#line 1287 "parser.yy"
    58556562    {
    58566563                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    5857                         (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
     6564                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addAsmName( (yyvsp[(5) - (6)].constant) )->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
    58586565                }
    5859 #line 5860 "Parser/parser.cc" /* yacc.c:1646  */
    58606566    break;
    58616567
    58626568  case 298:
    5863 #line 1308 "parser.yy" /* yacc.c:1646  */
    5864     { (yyval.decl) = 0; }
    5865 #line 5866 "Parser/parser.cc" /* yacc.c:1646  */
     6569
     6570/* Line 1806 of yacc.c  */
     6571#line 1309 "parser.yy"
     6572    { (yyval.decl) = nullptr; }
    58666573    break;
    58676574
    58686575  case 301:
    5869 #line 1320 "parser.yy" /* yacc.c:1646  */
    5870     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    5871 #line 5872 "Parser/parser.cc" /* yacc.c:1646  */
     6576
     6577/* Line 1806 of yacc.c  */
     6578#line 1321 "parser.yy"
     6579    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    58726580    break;
    58736581
    58746582  case 304:
    5875 #line 1331 "parser.yy" /* yacc.c:1646  */
     6583
     6584/* Line 1806 of yacc.c  */
     6585#line 1332 "parser.yy"
    58766586    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    5877 #line 5878 "Parser/parser.cc" /* yacc.c:1646  */
    58786587    break;
    58796588
    58806589  case 305:
    5881 #line 1333 "parser.yy" /* yacc.c:1646  */
     6590
     6591/* Line 1806 of yacc.c  */
     6592#line 1334 "parser.yy"
    58826593    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    5883 #line 5884 "Parser/parser.cc" /* yacc.c:1646  */
    58846594    break;
    58856595
    58866596  case 306:
    5887 #line 1335 "parser.yy" /* yacc.c:1646  */
     6597
     6598/* Line 1806 of yacc.c  */
     6599#line 1336 "parser.yy"
    58886600    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    5889 #line 5890 "Parser/parser.cc" /* yacc.c:1646  */
    58906601    break;
    58916602
    58926603  case 307:
    5893 #line 1337 "parser.yy" /* yacc.c:1646  */
     6604
     6605/* Line 1806 of yacc.c  */
     6606#line 1338 "parser.yy"
    58946607    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    5895 #line 5896 "Parser/parser.cc" /* yacc.c:1646  */
    58966608    break;
    58976609
    58986610  case 308:
    5899 #line 1339 "parser.yy" /* yacc.c:1646  */
     6611
     6612/* Line 1806 of yacc.c  */
     6613#line 1340 "parser.yy"
    59006614    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    5901 #line 5902 "Parser/parser.cc" /* yacc.c:1646  */
    59026615    break;
    59036616
    59046617  case 309:
    5905 #line 1341 "parser.yy" /* yacc.c:1646  */
     6618
     6619/* Line 1806 of yacc.c  */
     6620#line 1342 "parser.yy"
    59066621    {
    59076622                        typedefTable.enterScope();
    59086623                }
    5909 #line 5910 "Parser/parser.cc" /* yacc.c:1646  */
    59106624    break;
    59116625
    59126626  case 310:
    5913 #line 1345 "parser.yy" /* yacc.c:1646  */
     6627
     6628/* Line 1806 of yacc.c  */
     6629#line 1346 "parser.yy"
    59146630    {
    59156631                        typedefTable.leaveScope();
    5916                         (yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
     6632                        (yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
    59176633                }
    5918 #line 5919 "Parser/parser.cc" /* yacc.c:1646  */
    59196634    break;
    59206635
    59216636  case 312:
    5922 #line 1354 "parser.yy" /* yacc.c:1646  */
    5923     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    5924 #line 5925 "Parser/parser.cc" /* yacc.c:1646  */
     6637
     6638/* Line 1806 of yacc.c  */
     6639#line 1355 "parser.yy"
     6640    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    59256641    break;
    59266642
    59276643  case 313:
    5928 #line 1356 "parser.yy" /* yacc.c:1646  */
    5929     { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    5930 #line 5931 "Parser/parser.cc" /* yacc.c:1646  */
     6644
     6645/* Line 1806 of yacc.c  */
     6646#line 1357 "parser.yy"
     6647    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    59316648    break;
    59326649
    59336650  case 315:
    5934 #line 1367 "parser.yy" /* yacc.c:1646  */
    5935     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    5936 #line 5937 "Parser/parser.cc" /* yacc.c:1646  */
     6651
     6652/* Line 1806 of yacc.c  */
     6653#line 1368 "parser.yy"
     6654    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    59376655    break;
    59386656
    59396657  case 316:
    5940 #line 1372 "parser.yy" /* yacc.c:1646  */
     6658
     6659/* Line 1806 of yacc.c  */
     6660#line 1373 "parser.yy"
    59416661    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    5942 #line 5943 "Parser/parser.cc" /* yacc.c:1646  */
    59436662    break;
    59446663
    59456664  case 317:
    5946 #line 1374 "parser.yy" /* yacc.c:1646  */
     6665
     6666/* Line 1806 of yacc.c  */
     6667#line 1375 "parser.yy"
    59476668    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    5948 #line 5949 "Parser/parser.cc" /* yacc.c:1646  */
    59496669    break;
    59506670
    59516671  case 318:
    5952 #line 1376 "parser.yy" /* yacc.c:1646  */
     6672
     6673/* Line 1806 of yacc.c  */
     6674#line 1377 "parser.yy"
    59536675    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    5954 #line 5955 "Parser/parser.cc" /* yacc.c:1646  */
    59556676    break;
    59566677
    59576678  case 319:
    5958 #line 1378 "parser.yy" /* yacc.c:1646  */
     6679
     6680/* Line 1806 of yacc.c  */
     6681#line 1379 "parser.yy"
    59596682    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    5960 #line 5961 "Parser/parser.cc" /* yacc.c:1646  */
    59616683    break;
    59626684
    59636685  case 320:
    5964 #line 1381 "parser.yy" /* yacc.c:1646  */
     6686
     6687/* Line 1806 of yacc.c  */
     6688#line 1382 "parser.yy"
    59656689    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    5966 #line 5967 "Parser/parser.cc" /* yacc.c:1646  */
    59676690    break;
    59686691
    59696692  case 321:
    5970 #line 1383 "parser.yy" /* yacc.c:1646  */
     6693
     6694/* Line 1806 of yacc.c  */
     6695#line 1384 "parser.yy"
    59716696    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    5972 #line 5973 "Parser/parser.cc" /* yacc.c:1646  */
    59736697    break;
    59746698
    59756699  case 322:
    5976 #line 1386 "parser.yy" /* yacc.c:1646  */
     6700
     6701/* Line 1806 of yacc.c  */
     6702#line 1387 "parser.yy"
    59776703    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    5978 #line 5979 "Parser/parser.cc" /* yacc.c:1646  */
    59796704    break;
    59806705
    59816706  case 323:
    5982 #line 1388 "parser.yy" /* yacc.c:1646  */
     6707
     6708/* Line 1806 of yacc.c  */
     6709#line 1389 "parser.yy"
    59836710    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    5984 #line 5985 "Parser/parser.cc" /* yacc.c:1646  */
    59856711    break;
    59866712
    59876713  case 324:
    5988 #line 1393 "parser.yy" /* yacc.c:1646  */
     6714
     6715/* Line 1806 of yacc.c  */
     6716#line 1394 "parser.yy"
    59896717    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    5990 #line 5991 "Parser/parser.cc" /* yacc.c:1646  */
    59916718    break;
    59926719
    59936720  case 325:
    5994 #line 1395 "parser.yy" /* yacc.c:1646  */
     6721
     6722/* Line 1806 of yacc.c  */
     6723#line 1396 "parser.yy"
    59956724    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    5996 #line 5997 "Parser/parser.cc" /* yacc.c:1646  */
    59976725    break;
    59986726
    59996727  case 326:
    6000 #line 1397 "parser.yy" /* yacc.c:1646  */
     6728
     6729/* Line 1806 of yacc.c  */
     6730#line 1398 "parser.yy"
    60016731    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6002 #line 6003 "Parser/parser.cc" /* yacc.c:1646  */
    60036732    break;
    60046733
    60056734  case 327:
    6006 #line 1399 "parser.yy" /* yacc.c:1646  */
     6735
     6736/* Line 1806 of yacc.c  */
     6737#line 1400 "parser.yy"
    60076738    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6008 #line 6009 "Parser/parser.cc" /* yacc.c:1646  */
    60096739    break;
    60106740
    60116741  case 328:
    6012 #line 1401 "parser.yy" /* yacc.c:1646  */
     6742
     6743/* Line 1806 of yacc.c  */
     6744#line 1402 "parser.yy"
    60136745    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    6014 #line 6015 "Parser/parser.cc" /* yacc.c:1646  */
    60156746    break;
    60166747
    60176748  case 329:
    6018 #line 1403 "parser.yy" /* yacc.c:1646  */
     6749
     6750/* Line 1806 of yacc.c  */
     6751#line 1404 "parser.yy"
    60196752    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    6020 #line 6021 "Parser/parser.cc" /* yacc.c:1646  */
    60216753    break;
    60226754
    60236755  case 330:
    6024 #line 1405 "parser.yy" /* yacc.c:1646  */
     6756
     6757/* Line 1806 of yacc.c  */
     6758#line 1406 "parser.yy"
    60256759    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    6026 #line 6027 "Parser/parser.cc" /* yacc.c:1646  */
    60276760    break;
    60286761
    60296762  case 331:
    6030 #line 1407 "parser.yy" /* yacc.c:1646  */
     6763
     6764/* Line 1806 of yacc.c  */
     6765#line 1408 "parser.yy"
    60316766    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    6032 #line 6033 "Parser/parser.cc" /* yacc.c:1646  */
    60336767    break;
    60346768
    60356769  case 332:
    6036 #line 1409 "parser.yy" /* yacc.c:1646  */
     6770
     6771/* Line 1806 of yacc.c  */
     6772#line 1410 "parser.yy"
    60376773    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6038 #line 6039 "Parser/parser.cc" /* yacc.c:1646  */
    60396774    break;
    60406775
    60416776  case 333:
    6042 #line 1411 "parser.yy" /* yacc.c:1646  */
     6777
     6778/* Line 1806 of yacc.c  */
     6779#line 1412 "parser.yy"
    60436780    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6044 #line 6045 "Parser/parser.cc" /* yacc.c:1646  */
    60456781    break;
    60466782
    60476783  case 334:
    6048 #line 1413 "parser.yy" /* yacc.c:1646  */
     6784
     6785/* Line 1806 of yacc.c  */
     6786#line 1414 "parser.yy"
    60496787    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    6050 #line 6051 "Parser/parser.cc" /* yacc.c:1646  */
    60516788    break;
    60526789
    60536790  case 335:
    6054 #line 1415 "parser.yy" /* yacc.c:1646  */
     6791
     6792/* Line 1806 of yacc.c  */
     6793#line 1416 "parser.yy"
    60556794    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    6056 #line 6057 "Parser/parser.cc" /* yacc.c:1646  */
    60576795    break;
    60586796
    60596797  case 336:
    6060 #line 1417 "parser.yy" /* yacc.c:1646  */
     6798
     6799/* Line 1806 of yacc.c  */
     6800#line 1418 "parser.yy"
    60616801    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    6062 #line 6063 "Parser/parser.cc" /* yacc.c:1646  */
    60636802    break;
    60646803
    60656804  case 337:
    6066 #line 1419 "parser.yy" /* yacc.c:1646  */
     6805
     6806/* Line 1806 of yacc.c  */
     6807#line 1420 "parser.yy"
    60676808    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
    6068 #line 6069 "Parser/parser.cc" /* yacc.c:1646  */
    60696809    break;
    60706810
    60716811  case 338:
    6072 #line 1421 "parser.yy" /* yacc.c:1646  */
     6812
     6813/* Line 1806 of yacc.c  */
     6814#line 1422 "parser.yy"
    60736815    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
    6074 #line 6075 "Parser/parser.cc" /* yacc.c:1646  */
    60756816    break;
    60766817
    60776818  case 340:
    6078 #line 1428 "parser.yy" /* yacc.c:1646  */
    6079     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6080 #line 6081 "Parser/parser.cc" /* yacc.c:1646  */
     6819
     6820/* Line 1806 of yacc.c  */
     6821#line 1429 "parser.yy"
     6822    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    60816823    break;
    60826824
    60836825  case 341:
    6084 #line 1430 "parser.yy" /* yacc.c:1646  */
    6085     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6086 #line 6087 "Parser/parser.cc" /* yacc.c:1646  */
     6826
     6827/* Line 1806 of yacc.c  */
     6828#line 1431 "parser.yy"
     6829    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    60876830    break;
    60886831
    60896832  case 342:
    6090 #line 1432 "parser.yy" /* yacc.c:1646  */
    6091     { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6092 #line 6093 "Parser/parser.cc" /* yacc.c:1646  */
     6833
     6834/* Line 1806 of yacc.c  */
     6835#line 1433 "parser.yy"
     6836    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    60936837    break;
    60946838
    60956839  case 343:
    6096 #line 1434 "parser.yy" /* yacc.c:1646  */
    6097     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
    6098 #line 6099 "Parser/parser.cc" /* yacc.c:1646  */
     6840
     6841/* Line 1806 of yacc.c  */
     6842#line 1435 "parser.yy"
     6843    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    60996844    break;
    61006845
    61016846  case 345:
    6102 #line 1440 "parser.yy" /* yacc.c:1646  */
    6103     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6104 #line 6105 "Parser/parser.cc" /* yacc.c:1646  */
     6847
     6848/* Line 1806 of yacc.c  */
     6849#line 1441 "parser.yy"
     6850    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    61056851    break;
    61066852
    61076853  case 347:
    6108 #line 1447 "parser.yy" /* yacc.c:1646  */
    6109     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6110 #line 6111 "Parser/parser.cc" /* yacc.c:1646  */
     6854
     6855/* Line 1806 of yacc.c  */
     6856#line 1448 "parser.yy"
     6857    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    61116858    break;
    61126859
    61136860  case 348:
    6114 #line 1449 "parser.yy" /* yacc.c:1646  */
    6115     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6116 #line 6117 "Parser/parser.cc" /* yacc.c:1646  */
     6861
     6862/* Line 1806 of yacc.c  */
     6863#line 1450 "parser.yy"
     6864    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    61176865    break;
    61186866
    61196867  case 349:
    6120 #line 1451 "parser.yy" /* yacc.c:1646  */
    6121     { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
    6122 #line 6123 "Parser/parser.cc" /* yacc.c:1646  */
     6868
     6869/* Line 1806 of yacc.c  */
     6870#line 1452 "parser.yy"
     6871    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    61236872    break;
    61246873
    61256874  case 350:
    6126 #line 1456 "parser.yy" /* yacc.c:1646  */
    6127     { (yyval.decl) = (yyvsp[-1].decl); }
    6128 #line 6129 "Parser/parser.cc" /* yacc.c:1646  */
     6875
     6876/* Line 1806 of yacc.c  */
     6877#line 1457 "parser.yy"
     6878    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    61296879    break;
    61306880
    61316881  case 351:
    6132 #line 1458 "parser.yy" /* yacc.c:1646  */
    6133     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
    6134 #line 6135 "Parser/parser.cc" /* yacc.c:1646  */
     6882
     6883/* Line 1806 of yacc.c  */
     6884#line 1459 "parser.yy"
     6885    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    61356886    break;
    61366887
    61376888  case 352:
    6138 #line 1460 "parser.yy" /* yacc.c:1646  */
    6139     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
    6140 #line 6141 "Parser/parser.cc" /* yacc.c:1646  */
     6889
     6890/* Line 1806 of yacc.c  */
     6891#line 1461 "parser.yy"
     6892    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    61416893    break;
    61426894
    61436895  case 353:
    6144 #line 1462 "parser.yy" /* yacc.c:1646  */
    6145     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
    6146 #line 6147 "Parser/parser.cc" /* yacc.c:1646  */
     6896
     6897/* Line 1806 of yacc.c  */
     6898#line 1463 "parser.yy"
     6899    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    61476900    break;
    61486901
    61496902  case 355:
    6150 #line 1468 "parser.yy" /* yacc.c:1646  */
    6151     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6152 #line 6153 "Parser/parser.cc" /* yacc.c:1646  */
     6903
     6904/* Line 1806 of yacc.c  */
     6905#line 1469 "parser.yy"
     6906    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    61536907    break;
    61546908
    61556909  case 356:
    6156 #line 1470 "parser.yy" /* yacc.c:1646  */
    6157     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6158 #line 6159 "Parser/parser.cc" /* yacc.c:1646  */
     6910
     6911/* Line 1806 of yacc.c  */
     6912#line 1471 "parser.yy"
     6913    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    61596914    break;
    61606915
    61616916  case 357:
    6162 #line 1472 "parser.yy" /* yacc.c:1646  */
    6163     { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6164 #line 6165 "Parser/parser.cc" /* yacc.c:1646  */
     6917
     6918/* Line 1806 of yacc.c  */
     6919#line 1473 "parser.yy"
     6920    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    61656921    break;
    61666922
    61676923  case 359:
    6168 #line 1478 "parser.yy" /* yacc.c:1646  */
    6169     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6170 #line 6171 "Parser/parser.cc" /* yacc.c:1646  */
     6924
     6925/* Line 1806 of yacc.c  */
     6926#line 1479 "parser.yy"
     6927    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    61716928    break;
    61726929
    61736930  case 360:
    6174 #line 1480 "parser.yy" /* yacc.c:1646  */
    6175     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6176 #line 6177 "Parser/parser.cc" /* yacc.c:1646  */
     6931
     6932/* Line 1806 of yacc.c  */
     6933#line 1481 "parser.yy"
     6934    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    61776935    break;
    61786936
    61796937  case 362:
    6180 #line 1486 "parser.yy" /* yacc.c:1646  */
    6181     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6182 #line 6183 "Parser/parser.cc" /* yacc.c:1646  */
     6938
     6939/* Line 1806 of yacc.c  */
     6940#line 1487 "parser.yy"
     6941    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    61836942    break;
    61846943
    61856944  case 363:
    6186 #line 1488 "parser.yy" /* yacc.c:1646  */
    6187     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6188 #line 6189 "Parser/parser.cc" /* yacc.c:1646  */
     6945
     6946/* Line 1806 of yacc.c  */
     6947#line 1489 "parser.yy"
     6948    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    61896949    break;
    61906950
    61916951  case 364:
    6192 #line 1490 "parser.yy" /* yacc.c:1646  */
    6193     { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6194 #line 6195 "Parser/parser.cc" /* yacc.c:1646  */
     6952
     6953/* Line 1806 of yacc.c  */
     6954#line 1491 "parser.yy"
     6955    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    61956956    break;
    61966957
    61976958  case 365:
    6198 #line 1495 "parser.yy" /* yacc.c:1646  */
    6199     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
    6200 #line 6201 "Parser/parser.cc" /* yacc.c:1646  */
     6959
     6960/* Line 1806 of yacc.c  */
     6961#line 1496 "parser.yy"
     6962    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    62016963    break;
    62026964
    62036965  case 366:
    6204 #line 1497 "parser.yy" /* yacc.c:1646  */
    6205     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
    6206 #line 6207 "Parser/parser.cc" /* yacc.c:1646  */
     6966
     6967/* Line 1806 of yacc.c  */
     6968#line 1498 "parser.yy"
     6969    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    62076970    break;
    62086971
    62096972  case 367:
    6210 #line 1499 "parser.yy" /* yacc.c:1646  */
    6211     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6212 #line 6213 "Parser/parser.cc" /* yacc.c:1646  */
     6973
     6974/* Line 1806 of yacc.c  */
     6975#line 1500 "parser.yy"
     6976    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    62136977    break;
    62146978
    62156979  case 370:
    6216 #line 1509 "parser.yy" /* yacc.c:1646  */
    6217     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), nullptr, nullptr, (yyvsp[-1].decl), true ); }
    6218 #line 6219 "Parser/parser.cc" /* yacc.c:1646  */
     6980
     6981/* Line 1806 of yacc.c  */
     6982#line 1510 "parser.yy"
     6983    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    62196984    break;
    62206985
    62216986  case 371:
    6222 #line 1511 "parser.yy" /* yacc.c:1646  */
     6987
     6988/* Line 1806 of yacc.c  */
     6989#line 1512 "parser.yy"
    62236990    {
    6224                         typedefTable.makeTypedef( *(yyvsp[0].tok) );
    6225                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), nullptr, nullptr, false );
     6991                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     6992                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), nullptr, nullptr, false );
    62266993                }
    6227 #line 6228 "Parser/parser.cc" /* yacc.c:1646  */
    62286994    break;
    62296995
    62306996  case 372:
    6231 #line 1516 "parser.yy" /* yacc.c:1646  */
    6232     { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
    6233 #line 6234 "Parser/parser.cc" /* yacc.c:1646  */
     6997
     6998/* Line 1806 of yacc.c  */
     6999#line 1517 "parser.yy"
     7000    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    62347001    break;
    62357002
    62367003  case 373:
    6237 #line 1518 "parser.yy" /* yacc.c:1646  */
    6238     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), nullptr, (yyvsp[-1].decl), true ); }
    6239 #line 6240 "Parser/parser.cc" /* yacc.c:1646  */
     7004
     7005/* Line 1806 of yacc.c  */
     7006#line 1519 "parser.yy"
     7007    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
    62407008    break;
    62417009
    62427010  case 374:
    6243 #line 1520 "parser.yy" /* yacc.c:1646  */
    6244     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), nullptr, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
    6245 #line 6246 "Parser/parser.cc" /* yacc.c:1646  */
     7011
     7012/* Line 1806 of yacc.c  */
     7013#line 1521 "parser.yy"
     7014    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    62467015    break;
    62477016
    62487017  case 375:
    6249 #line 1522 "parser.yy" /* yacc.c:1646  */
    6250     { (yyval.decl) = (yyvsp[0].decl); }
    6251 #line 6252 "Parser/parser.cc" /* yacc.c:1646  */
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1523 "parser.yy"
     7021    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    62527022    break;
    62537023
    62547024  case 376:
    6255 #line 1527 "parser.yy" /* yacc.c:1646  */
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1528 "parser.yy"
    62567028    { (yyval.aggKey) = DeclarationNode::Struct; }
    6257 #line 6258 "Parser/parser.cc" /* yacc.c:1646  */
    62587029    break;
    62597030
    62607031  case 377:
    6261 #line 1529 "parser.yy" /* yacc.c:1646  */
     7032
     7033/* Line 1806 of yacc.c  */
     7034#line 1530 "parser.yy"
    62627035    { (yyval.aggKey) = DeclarationNode::Union; }
    6263 #line 6264 "Parser/parser.cc" /* yacc.c:1646  */
    62647036    break;
    62657037
    62667038  case 378:
    6267 #line 1534 "parser.yy" /* yacc.c:1646  */
    6268     { (yyval.decl) = 0; }
    6269 #line 6270 "Parser/parser.cc" /* yacc.c:1646  */
     7039
     7040/* Line 1806 of yacc.c  */
     7041#line 1535 "parser.yy"
     7042    { (yyval.decl) = nullptr; }
    62707043    break;
    62717044
    62727045  case 379:
    6273 #line 1536 "parser.yy" /* yacc.c:1646  */
    6274     { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
    6275 #line 6276 "Parser/parser.cc" /* yacc.c:1646  */
     7046
     7047/* Line 1806 of yacc.c  */
     7048#line 1537 "parser.yy"
     7049    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    62767050    break;
    62777051
    62787052  case 381:
    6279 #line 1542 "parser.yy" /* yacc.c:1646  */
    6280     { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
    6281 #line 6282 "Parser/parser.cc" /* yacc.c:1646  */
     7053
     7054/* Line 1806 of yacc.c  */
     7055#line 1543 "parser.yy"
     7056    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    62827057    break;
    62837058
    62847059  case 383:
    6285 #line 1545 "parser.yy" /* yacc.c:1646  */
     7060
     7061/* Line 1806 of yacc.c  */
     7062#line 1546 "parser.yy"
    62867063    {   // mark all fields in list
    6287                         for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     7064                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    62887065                                iter->set_extension( true );
    6289                         (yyval.decl) = (yyvsp[-1].decl);
     7066                        (yyval.decl) = (yyvsp[(2) - (3)].decl);
    62907067                }
    6291 #line 6292 "Parser/parser.cc" /* yacc.c:1646  */
    62927068    break;
    62937069
    62947070  case 385:
    6295 #line 1555 "parser.yy" /* yacc.c:1646  */
    6296     { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
    6297 #line 6298 "Parser/parser.cc" /* yacc.c:1646  */
     7071
     7072/* Line 1806 of yacc.c  */
     7073#line 1556 "parser.yy"
     7074    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    62987075    break;
    62997076
    63007077  case 386:
    6301 #line 1557 "parser.yy" /* yacc.c:1646  */
    6302     { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
    6303 #line 6304 "Parser/parser.cc" /* yacc.c:1646  */
     7078
     7079/* Line 1806 of yacc.c  */
     7080#line 1558 "parser.yy"
     7081    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    63047082    break;
    63057083
    63067084  case 387:
    6307 #line 1559 "parser.yy" /* yacc.c:1646  */
    6308     { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
    6309 #line 6310 "Parser/parser.cc" /* yacc.c:1646  */
     7085
     7086/* Line 1806 of yacc.c  */
     7087#line 1560 "parser.yy"
     7088    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    63107089    break;
    63117090
    63127091  case 388:
    6313 #line 1564 "parser.yy" /* yacc.c:1646  */
    6314     { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    6315 #line 6316 "Parser/parser.cc" /* yacc.c:1646  */
     7092
     7093/* Line 1806 of yacc.c  */
     7094#line 1565 "parser.yy"
     7095    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    63167096    break;
    63177097
    63187098  case 389:
    6319 #line 1566 "parser.yy" /* yacc.c:1646  */
    6320     { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
    6321 #line 6322 "Parser/parser.cc" /* yacc.c:1646  */
     7099
     7100/* Line 1806 of yacc.c  */
     7101#line 1567 "parser.yy"
     7102    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    63227103    break;
    63237104
    63247105  case 390:
    6325 #line 1571 "parser.yy" /* yacc.c:1646  */
     7106
     7107/* Line 1806 of yacc.c  */
     7108#line 1572 "parser.yy"
    63267109    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    6327 #line 6328 "Parser/parser.cc" /* yacc.c:1646  */
    63287110    break;
    63297111
    63307112  case 391:
    6331 #line 1573 "parser.yy" /* yacc.c:1646  */
    6332     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
    6333 #line 6334 "Parser/parser.cc" /* yacc.c:1646  */
     7113
     7114/* Line 1806 of yacc.c  */
     7115#line 1574 "parser.yy"
     7116    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    63347117    break;
    63357118
    63367119  case 392:
    6337 #line 1576 "parser.yy" /* yacc.c:1646  */
    6338     { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
    6339 #line 6340 "Parser/parser.cc" /* yacc.c:1646  */
     7120
     7121/* Line 1806 of yacc.c  */
     7122#line 1577 "parser.yy"
     7123    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    63407124    break;
    63417125
    63427126  case 393:
    6343 #line 1579 "parser.yy" /* yacc.c:1646  */
    6344     { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
    6345 #line 6346 "Parser/parser.cc" /* yacc.c:1646  */
     7127
     7128/* Line 1806 of yacc.c  */
     7129#line 1580 "parser.yy"
     7130    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    63467131    break;
    63477132
    63487133  case 395:
    6349 #line 1585 "parser.yy" /* yacc.c:1646  */
    6350     { (yyval.en) = 0; }
    6351 #line 6352 "Parser/parser.cc" /* yacc.c:1646  */
     7134
     7135/* Line 1806 of yacc.c  */
     7136#line 1586 "parser.yy"
     7137    { (yyval.en) = nullptr; }
    63527138    break;
    63537139
    63547140  case 396:
    6355 #line 1587 "parser.yy" /* yacc.c:1646  */
    6356     { (yyval.en) = (yyvsp[0].en); }
    6357 #line 6358 "Parser/parser.cc" /* yacc.c:1646  */
     7141
     7142/* Line 1806 of yacc.c  */
     7143#line 1588 "parser.yy"
     7144    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    63587145    break;
    63597146
    63607147  case 397:
    6361 #line 1592 "parser.yy" /* yacc.c:1646  */
    6362     { (yyval.en) = (yyvsp[0].en); }
    6363 #line 6364 "Parser/parser.cc" /* yacc.c:1646  */
     7148
     7149/* Line 1806 of yacc.c  */
     7150#line 1593 "parser.yy"
     7151    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    63647152    break;
    63657153
    63667154  case 399:
    6367 #line 1601 "parser.yy" /* yacc.c:1646  */
    6368     { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[-2].decl) ); }
    6369 #line 6370 "Parser/parser.cc" /* yacc.c:1646  */
     7155
     7156/* Line 1806 of yacc.c  */
     7157#line 1602 "parser.yy"
     7158    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    63707159    break;
    63717160
    63727161  case 400:
    6373 #line 1603 "parser.yy" /* yacc.c:1646  */
     7162
     7163/* Line 1806 of yacc.c  */
     7164#line 1604 "parser.yy"
    63747165    {
    6375                         typedefTable.makeTypedef( *(yyvsp[0].tok) );
    6376                         (yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
     7166                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     7167                        (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
    63777168                }
    6378 #line 6379 "Parser/parser.cc" /* yacc.c:1646  */
    63797169    break;
    63807170
    63817171  case 401:
    6382 #line 1608 "parser.yy" /* yacc.c:1646  */
    6383     { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
    6384 #line 6385 "Parser/parser.cc" /* yacc.c:1646  */
     7172
     7173/* Line 1806 of yacc.c  */
     7174#line 1609 "parser.yy"
     7175    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    63857176    break;
    63867177
    63877178  case 402:
    6388 #line 1610 "parser.yy" /* yacc.c:1646  */
    6389     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
    6390 #line 6391 "Parser/parser.cc" /* yacc.c:1646  */
     7179
     7180/* Line 1806 of yacc.c  */
     7181#line 1611 "parser.yy"
     7182    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    63917183    break;
    63927184
    63937185  case 403:
    6394 #line 1615 "parser.yy" /* yacc.c:1646  */
    6395     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
    6396 #line 6397 "Parser/parser.cc" /* yacc.c:1646  */
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1616 "parser.yy"
     7189    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    63977190    break;
    63987191
    63997192  case 404:
    6400 #line 1617 "parser.yy" /* yacc.c:1646  */
    6401     { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
    6402 #line 6403 "Parser/parser.cc" /* yacc.c:1646  */
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1618 "parser.yy"
     7196    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    64037197    break;
    64047198
    64057199  case 405:
    6406 #line 1622 "parser.yy" /* yacc.c:1646  */
    6407     { (yyval.en) = 0; }
    6408 #line 6409 "Parser/parser.cc" /* yacc.c:1646  */
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1623 "parser.yy"
     7203    { (yyval.en) = nullptr; }
    64097204    break;
    64107205
    64117206  case 406:
    6412 #line 1624 "parser.yy" /* yacc.c:1646  */
    6413     { (yyval.en) = (yyvsp[0].en); }
    6414 #line 6415 "Parser/parser.cc" /* yacc.c:1646  */
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1625 "parser.yy"
     7210    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    64157211    break;
    64167212
    64177213  case 407:
    6418 #line 1631 "parser.yy" /* yacc.c:1646  */
    6419     { (yyval.decl) = 0; }
    6420 #line 6421 "Parser/parser.cc" /* yacc.c:1646  */
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1632 "parser.yy"
     7217    { (yyval.decl) = nullptr; }
    64217218    break;
    64227219
    64237220  case 411:
    6424 #line 1639 "parser.yy" /* yacc.c:1646  */
    6425     { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6426 #line 6427 "Parser/parser.cc" /* yacc.c:1646  */
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1640 "parser.yy"
     7224    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64277225    break;
    64287226
    64297227  case 412:
    6430 #line 1641 "parser.yy" /* yacc.c:1646  */
    6431     { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    6432 #line 6433 "Parser/parser.cc" /* yacc.c:1646  */
     7228
     7229/* Line 1806 of yacc.c  */
     7230#line 1642 "parser.yy"
     7231    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    64337232    break;
    64347233
    64357234  case 413:
    6436 #line 1643 "parser.yy" /* yacc.c:1646  */
    6437     { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    6438 #line 6439 "Parser/parser.cc" /* yacc.c:1646  */
     7235
     7236/* Line 1806 of yacc.c  */
     7237#line 1644 "parser.yy"
     7238    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    64397239    break;
    64407240
    64417241  case 415:
    6442 #line 1651 "parser.yy" /* yacc.c:1646  */
    6443     { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6444 #line 6445 "Parser/parser.cc" /* yacc.c:1646  */
     7242
     7243/* Line 1806 of yacc.c  */
     7244#line 1652 "parser.yy"
     7245    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64457246    break;
    64467247
    64477248  case 416:
    6448 #line 1653 "parser.yy" /* yacc.c:1646  */
    6449     { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6450 #line 6451 "Parser/parser.cc" /* yacc.c:1646  */
     7249
     7250/* Line 1806 of yacc.c  */
     7251#line 1654 "parser.yy"
     7252    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64517253    break;
    64527254
    64537255  case 417:
    6454 #line 1655 "parser.yy" /* yacc.c:1646  */
    6455     { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
    6456 #line 6457 "Parser/parser.cc" /* yacc.c:1646  */
     7256
     7257/* Line 1806 of yacc.c  */
     7258#line 1656 "parser.yy"
     7259    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    64577260    break;
    64587261
    64597262  case 419:
    6460 #line 1661 "parser.yy" /* yacc.c:1646  */
    6461     { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6462 #line 6463 "Parser/parser.cc" /* yacc.c:1646  */
     7263
     7264/* Line 1806 of yacc.c  */
     7265#line 1662 "parser.yy"
     7266    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64637267    break;
    64647268
    64657269  case 420:
    6466 #line 1666 "parser.yy" /* yacc.c:1646  */
    6467     { (yyval.decl) = 0; }
    6468 #line 6469 "Parser/parser.cc" /* yacc.c:1646  */
     7270
     7271/* Line 1806 of yacc.c  */
     7272#line 1667 "parser.yy"
     7273    { (yyval.decl) = nullptr; }
    64697274    break;
    64707275
    64717276  case 423:
    6472 #line 1673 "parser.yy" /* yacc.c:1646  */
    6473     { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    6474 #line 6475 "Parser/parser.cc" /* yacc.c:1646  */
     7277
     7278/* Line 1806 of yacc.c  */
     7279#line 1674 "parser.yy"
     7280    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    64757281    break;
    64767282
    64777283  case 426:
    6478 #line 1680 "parser.yy" /* yacc.c:1646  */
    6479     { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6480 #line 6481 "Parser/parser.cc" /* yacc.c:1646  */
     7284
     7285/* Line 1806 of yacc.c  */
     7286#line 1681 "parser.yy"
     7287    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64817288    break;
    64827289
    64837290  case 427:
    6484 #line 1682 "parser.yy" /* yacc.c:1646  */
    6485     { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6486 #line 6487 "Parser/parser.cc" /* yacc.c:1646  */
     7291
     7292/* Line 1806 of yacc.c  */
     7293#line 1683 "parser.yy"
     7294    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    64877295    break;
    64887296
    64897297  case 429:
    6490 #line 1691 "parser.yy" /* yacc.c:1646  */
    6491     { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
    6492 #line 6493 "Parser/parser.cc" /* yacc.c:1646  */
     7298
     7299/* Line 1806 of yacc.c  */
     7300#line 1692 "parser.yy"
     7301    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    64937302    break;
    64947303
    64957304  case 430:
    6496 #line 1694 "parser.yy" /* yacc.c:1646  */
    6497     { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
    6498 #line 6499 "Parser/parser.cc" /* yacc.c:1646  */
     7305
     7306/* Line 1806 of yacc.c  */
     7307#line 1695 "parser.yy"
     7308    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    64997309    break;
    65007310
    65017311  case 431:
    6502 #line 1696 "parser.yy" /* yacc.c:1646  */
    6503     { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
    6504 #line 6505 "Parser/parser.cc" /* yacc.c:1646  */
     7312
     7313/* Line 1806 of yacc.c  */
     7314#line 1697 "parser.yy"
     7315    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    65057316    break;
    65067317
    65077318  case 436:
    6508 #line 1706 "parser.yy" /* yacc.c:1646  */
    6509     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6510 #line 6511 "Parser/parser.cc" /* yacc.c:1646  */
     7319
     7320/* Line 1806 of yacc.c  */
     7321#line 1707 "parser.yy"
     7322    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    65117323    break;
    65127324
    65137325  case 438:
    6514 #line 1712 "parser.yy" /* yacc.c:1646  */
     7326
     7327/* Line 1806 of yacc.c  */
     7328#line 1713 "parser.yy"
    65157329    {
    65167330                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6517                         (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
     7331                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    65187332                }
    6519 #line 6520 "Parser/parser.cc" /* yacc.c:1646  */
    65207333    break;
    65217334
    65227335  case 439:
    6523 #line 1717 "parser.yy" /* yacc.c:1646  */
     7336
     7337/* Line 1806 of yacc.c  */
     7338#line 1718 "parser.yy"
    65247339    {
    65257340                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6526                         (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
     7341                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    65277342                }
    6528 #line 6529 "Parser/parser.cc" /* yacc.c:1646  */
    65297343    break;
    65307344
    65317345  case 441:
    6532 #line 1726 "parser.yy" /* yacc.c:1646  */
    6533     { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    6534 #line 6535 "Parser/parser.cc" /* yacc.c:1646  */
     7346
     7347/* Line 1806 of yacc.c  */
     7348#line 1727 "parser.yy"
     7349    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    65357350    break;
    65367351
    65377352  case 442:
    6538 #line 1735 "parser.yy" /* yacc.c:1646  */
    6539     { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
    6540 #line 6541 "Parser/parser.cc" /* yacc.c:1646  */
     7353
     7354/* Line 1806 of yacc.c  */
     7355#line 1736 "parser.yy"
     7356    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    65417357    break;
    65427358
    65437359  case 443:
    6544 #line 1737 "parser.yy" /* yacc.c:1646  */
    6545     { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
    6546 #line 6547 "Parser/parser.cc" /* yacc.c:1646  */
     7360
     7361/* Line 1806 of yacc.c  */
     7362#line 1738 "parser.yy"
     7363    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    65477364    break;
    65487365
    65497366  case 455:
    6550 #line 1762 "parser.yy" /* yacc.c:1646  */
    6551     { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    6552 #line 6553 "Parser/parser.cc" /* yacc.c:1646  */
     7367
     7368/* Line 1806 of yacc.c  */
     7369#line 1763 "parser.yy"
     7370    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    65537371    break;
    65547372
    65557373  case 459:
    6556 #line 1770 "parser.yy" /* yacc.c:1646  */
    6557     { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    6558 #line 6559 "Parser/parser.cc" /* yacc.c:1646  */
     7374
     7375/* Line 1806 of yacc.c  */
     7376#line 1771 "parser.yy"
     7377    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    65597378    break;
    65607379
    65617380  case 460:
    6562 #line 1775 "parser.yy" /* yacc.c:1646  */
    6563     { (yyval.in) = 0; }
    6564 #line 6565 "Parser/parser.cc" /* yacc.c:1646  */
     7381
     7382/* Line 1806 of yacc.c  */
     7383#line 1776 "parser.yy"
     7384    { (yyval.in) = nullptr; }
    65657385    break;
    65667386
    65677387  case 461:
    6568 #line 1777 "parser.yy" /* yacc.c:1646  */
    6569     { (yyval.in) = (yyvsp[0].in); }
    6570 #line 6571 "Parser/parser.cc" /* yacc.c:1646  */
     7388
     7389/* Line 1806 of yacc.c  */
     7390#line 1778 "parser.yy"
     7391    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    65717392    break;
    65727393
    65737394  case 462:
    6574 #line 1779 "parser.yy" /* yacc.c:1646  */
    6575     { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
    6576 #line 6577 "Parser/parser.cc" /* yacc.c:1646  */
     7395
     7396/* Line 1806 of yacc.c  */
     7397#line 1780 "parser.yy"
     7398    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    65777399    break;
    65787400
    65797401  case 463:
    6580 #line 1783 "parser.yy" /* yacc.c:1646  */
    6581     { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
    6582 #line 6583 "Parser/parser.cc" /* yacc.c:1646  */
     7402
     7403/* Line 1806 of yacc.c  */
     7404#line 1784 "parser.yy"
     7405    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    65837406    break;
    65847407
    65857408  case 464:
    6586 #line 1784 "parser.yy" /* yacc.c:1646  */
    6587     { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
    6588 #line 6589 "Parser/parser.cc" /* yacc.c:1646  */
     7409
     7410/* Line 1806 of yacc.c  */
     7411#line 1785 "parser.yy"
     7412    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    65897413    break;
    65907414
    65917415  case 465:
    6592 #line 1789 "parser.yy" /* yacc.c:1646  */
    6593     { (yyval.in) = 0; }
    6594 #line 6595 "Parser/parser.cc" /* yacc.c:1646  */
     7416
     7417/* Line 1806 of yacc.c  */
     7418#line 1790 "parser.yy"
     7419    { (yyval.in) = nullptr; }
    65957420    break;
    65967421
    65977422  case 467:
    6598 #line 1791 "parser.yy" /* yacc.c:1646  */
    6599     { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
    6600 #line 6601 "Parser/parser.cc" /* yacc.c:1646  */
     7423
     7424/* Line 1806 of yacc.c  */
     7425#line 1792 "parser.yy"
     7426    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    66017427    break;
    66027428
    66037429  case 468:
    6604 #line 1792 "parser.yy" /* yacc.c:1646  */
    6605     { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
    6606 #line 6607 "Parser/parser.cc" /* yacc.c:1646  */
     7430
     7431/* Line 1806 of yacc.c  */
     7432#line 1793 "parser.yy"
     7433    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    66077434    break;
    66087435
    66097436  case 469:
    6610 #line 1794 "parser.yy" /* yacc.c:1646  */
    6611     { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
    6612 #line 6613 "Parser/parser.cc" /* yacc.c:1646  */
     7437
     7438/* Line 1806 of yacc.c  */
     7439#line 1795 "parser.yy"
     7440    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    66137441    break;
    66147442
    66157443  case 471:
    6616 #line 1810 "parser.yy" /* yacc.c:1646  */
    6617     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
    6618 #line 6619 "Parser/parser.cc" /* yacc.c:1646  */
     7444
     7445/* Line 1806 of yacc.c  */
     7446#line 1811 "parser.yy"
     7447    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    66197448    break;
    66207449
    66217450  case 473:
    6622 #line 1816 "parser.yy" /* yacc.c:1646  */
    6623     { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
    6624 #line 6625 "Parser/parser.cc" /* yacc.c:1646  */
     7451
     7452/* Line 1806 of yacc.c  */
     7453#line 1817 "parser.yy"
     7454    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    66257455    break;
    66267456
    66277457  case 474:
    6628 #line 1822 "parser.yy" /* yacc.c:1646  */
    6629     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
    6630 #line 6631 "Parser/parser.cc" /* yacc.c:1646  */
     7458
     7459/* Line 1806 of yacc.c  */
     7460#line 1823 "parser.yy"
     7461    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    66317462    break;
    66327463
    66337464  case 475:
    6634 #line 1825 "parser.yy" /* yacc.c:1646  */
    6635     { (yyval.en) = (yyvsp[-2].en); }
    6636 #line 6637 "Parser/parser.cc" /* yacc.c:1646  */
     7465
     7466/* Line 1806 of yacc.c  */
     7467#line 1826 "parser.yy"
     7468    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    66377469    break;
    66387470
    66397471  case 476:
    6640 #line 1827 "parser.yy" /* yacc.c:1646  */
    6641     { (yyval.en) = (yyvsp[-2].en); }
    6642 #line 6643 "Parser/parser.cc" /* yacc.c:1646  */
     7472
     7473/* Line 1806 of yacc.c  */
     7474#line 1828 "parser.yy"
     7475    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    66437476    break;
    66447477
    66457478  case 477:
    6646 #line 1829 "parser.yy" /* yacc.c:1646  */
    6647     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
    6648 #line 6649 "Parser/parser.cc" /* yacc.c:1646  */
     7479
     7480/* Line 1806 of yacc.c  */
     7481#line 1830 "parser.yy"
     7482    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    66497483    break;
    66507484
    66517485  case 478:
    6652 #line 1831 "parser.yy" /* yacc.c:1646  */
    6653     { (yyval.en) = (yyvsp[-2].en); }
    6654 #line 6655 "Parser/parser.cc" /* yacc.c:1646  */
     7486
     7487/* Line 1806 of yacc.c  */
     7488#line 1832 "parser.yy"
     7489    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    66557490    break;
    66567491
    66577492  case 480:
    6658 #line 1855 "parser.yy" /* yacc.c:1646  */
    6659     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6660 #line 6661 "Parser/parser.cc" /* yacc.c:1646  */
     7493
     7494/* Line 1806 of yacc.c  */
     7495#line 1856 "parser.yy"
     7496    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    66617497    break;
    66627498
    66637499  case 481:
    6664 #line 1857 "parser.yy" /* yacc.c:1646  */
    6665     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6666 #line 6667 "Parser/parser.cc" /* yacc.c:1646  */
     7500
     7501/* Line 1806 of yacc.c  */
     7502#line 1858 "parser.yy"
     7503    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66677504    break;
    66687505
    66697506  case 482:
    6670 #line 1859 "parser.yy" /* yacc.c:1646  */
    6671     { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6672 #line 6673 "Parser/parser.cc" /* yacc.c:1646  */
     7507
     7508/* Line 1806 of yacc.c  */
     7509#line 1860 "parser.yy"
     7510    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66737511    break;
    66747512
    66757513  case 484:
    6676 #line 1865 "parser.yy" /* yacc.c:1646  */
    6677     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6678 #line 6679 "Parser/parser.cc" /* yacc.c:1646  */
     7514
     7515/* Line 1806 of yacc.c  */
     7516#line 1866 "parser.yy"
     7517    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    66797518    break;
    66807519
    66817520  case 485:
    6682 #line 1867 "parser.yy" /* yacc.c:1646  */
    6683     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6684 #line 6685 "Parser/parser.cc" /* yacc.c:1646  */
     7521
     7522/* Line 1806 of yacc.c  */
     7523#line 1868 "parser.yy"
     7524    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66857525    break;
    66867526
    66877527  case 486:
    6688 #line 1872 "parser.yy" /* yacc.c:1646  */
    6689     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
    6690 #line 6691 "Parser/parser.cc" /* yacc.c:1646  */
     7528
     7529/* Line 1806 of yacc.c  */
     7530#line 1873 "parser.yy"
     7531    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    66917532    break;
    66927533
    66937534  case 488:
    6694 #line 1878 "parser.yy" /* yacc.c:1646  */
    6695     { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
    6696 #line 6697 "Parser/parser.cc" /* yacc.c:1646  */
     7535
     7536/* Line 1806 of yacc.c  */
     7537#line 1879 "parser.yy"
     7538    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    66977539    break;
    66987540
    66997541  case 489:
    6700 #line 1883 "parser.yy" /* yacc.c:1646  */
    6701     { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
    6702 #line 6703 "Parser/parser.cc" /* yacc.c:1646  */
     7542
     7543/* Line 1806 of yacc.c  */
     7544#line 1884 "parser.yy"
     7545    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    67037546    break;
    67047547
    67057548  case 490:
    6706 #line 1885 "parser.yy" /* yacc.c:1646  */
    6707     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
    6708 #line 6709 "Parser/parser.cc" /* yacc.c:1646  */
     7549
     7550/* Line 1806 of yacc.c  */
     7551#line 1886 "parser.yy"
     7552    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    67097553    break;
    67107554
    67117555  case 492:
    6712 #line 1891 "parser.yy" /* yacc.c:1646  */
     7556
     7557/* Line 1806 of yacc.c  */
     7558#line 1892 "parser.yy"
    67137559    { (yyval.tclass) = DeclarationNode::Otype; }
    6714 #line 6715 "Parser/parser.cc" /* yacc.c:1646  */
    67157560    break;
    67167561
    67177562  case 493:
    6718 #line 1893 "parser.yy" /* yacc.c:1646  */
     7563
     7564/* Line 1806 of yacc.c  */
     7565#line 1894 "parser.yy"
    67197566    { (yyval.tclass) = DeclarationNode::Ftype; }
    6720 #line 6721 "Parser/parser.cc" /* yacc.c:1646  */
    67217567    break;
    67227568
    67237569  case 494:
    6724 #line 1895 "parser.yy" /* yacc.c:1646  */
     7570
     7571/* Line 1806 of yacc.c  */
     7572#line 1896 "parser.yy"
    67257573    { (yyval.tclass) = DeclarationNode::Dtype; }
    6726 #line 6727 "Parser/parser.cc" /* yacc.c:1646  */
    67277574    break;
    67287575
    67297576  case 495:
    6730 #line 1900 "parser.yy" /* yacc.c:1646  */
    6731     { (yyval.decl) = 0; }
    6732 #line 6733 "Parser/parser.cc" /* yacc.c:1646  */
     7577
     7578/* Line 1806 of yacc.c  */
     7579#line 1901 "parser.yy"
     7580    { (yyval.decl) = nullptr; }
    67337581    break;
    67347582
    67357583  case 496:
    6736 #line 1902 "parser.yy" /* yacc.c:1646  */
    6737     { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
    6738 #line 6739 "Parser/parser.cc" /* yacc.c:1646  */
     7584
     7585/* Line 1806 of yacc.c  */
     7586#line 1903 "parser.yy"
     7587    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    67397588    break;
    67407589
    67417590  case 497:
    6742 #line 1907 "parser.yy" /* yacc.c:1646  */
     7591
     7592/* Line 1806 of yacc.c  */
     7593#line 1908 "parser.yy"
    67437594    {
    6744                         typedefTable.openTrait( *(yyvsp[-3].tok) );
    6745                         (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
     7595                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     7596                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    67467597                }
    6747 #line 6748 "Parser/parser.cc" /* yacc.c:1646  */
    67487598    break;
    67497599
    67507600  case 498:
    6751 #line 1912 "parser.yy" /* yacc.c:1646  */
    6752     { (yyval.decl) = (yyvsp[-1].decl); }
    6753 #line 6754 "Parser/parser.cc" /* yacc.c:1646  */
     7601
     7602/* Line 1806 of yacc.c  */
     7603#line 1913 "parser.yy"
     7604    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    67547605    break;
    67557606
    67567607  case 499:
    6757 #line 1914 "parser.yy" /* yacc.c:1646  */
    6758     { (yyval.decl) = 0; }
    6759 #line 6760 "Parser/parser.cc" /* yacc.c:1646  */
     7608
     7609/* Line 1806 of yacc.c  */
     7610#line 1915 "parser.yy"
     7611    { (yyval.decl) = nullptr; }
    67607612    break;
    67617613
    67627614  case 500:
    6763 #line 1919 "parser.yy" /* yacc.c:1646  */
    6764     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
    6765 #line 6766 "Parser/parser.cc" /* yacc.c:1646  */
     7615
     7616/* Line 1806 of yacc.c  */
     7617#line 1920 "parser.yy"
     7618    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    67667619    break;
    67677620
    67687621  case 502:
    6769 #line 1922 "parser.yy" /* yacc.c:1646  */
    6770     { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
    6771 #line 6772 "Parser/parser.cc" /* yacc.c:1646  */
     7622
     7623/* Line 1806 of yacc.c  */
     7624#line 1923 "parser.yy"
     7625    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    67727626    break;
    67737627
    67747628  case 503:
    6775 #line 1924 "parser.yy" /* yacc.c:1646  */
    6776     { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
    6777 #line 6778 "Parser/parser.cc" /* yacc.c:1646  */
     7629
     7630/* Line 1806 of yacc.c  */
     7631#line 1925 "parser.yy"
     7632    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    67787633    break;
    67797634
    67807635  case 504:
    6781 #line 1929 "parser.yy" /* yacc.c:1646  */
    6782     { (yyval.decl) = (yyvsp[0].decl); }
    6783 #line 6784 "Parser/parser.cc" /* yacc.c:1646  */
     7636
     7637/* Line 1806 of yacc.c  */
     7638#line 1930 "parser.yy"
     7639    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    67847640    break;
    67857641
    67867642  case 505:
    6787 #line 1931 "parser.yy" /* yacc.c:1646  */
    6788     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
    6789 #line 6790 "Parser/parser.cc" /* yacc.c:1646  */
     7643
     7644/* Line 1806 of yacc.c  */
     7645#line 1932 "parser.yy"
     7646    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    67907647    break;
    67917648
    67927649  case 506:
    6793 #line 1933 "parser.yy" /* yacc.c:1646  */
    6794     { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
    6795 #line 6796 "Parser/parser.cc" /* yacc.c:1646  */
     7650
     7651/* Line 1806 of yacc.c  */
     7652#line 1934 "parser.yy"
     7653    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    67967654    break;
    67977655
    67987656  case 507:
    6799 #line 1938 "parser.yy" /* yacc.c:1646  */
    6800     { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
    6801 #line 6802 "Parser/parser.cc" /* yacc.c:1646  */
     7657
     7658/* Line 1806 of yacc.c  */
     7659#line 1939 "parser.yy"
     7660    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    68027661    break;
    68037662
    68047663  case 508:
    6805 #line 1940 "parser.yy" /* yacc.c:1646  */
    6806     { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
    6807 #line 6808 "Parser/parser.cc" /* yacc.c:1646  */
     7664
     7665/* Line 1806 of yacc.c  */
     7666#line 1941 "parser.yy"
     7667    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    68087668    break;
    68097669
    68107670  case 509:
    6811 #line 1945 "parser.yy" /* yacc.c:1646  */
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1946 "parser.yy"
    68127674    {
    6813                         typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
    6814                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
     7675                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     7676                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
    68157677                }
    6816 #line 6817 "Parser/parser.cc" /* yacc.c:1646  */
    68177678    break;
    68187679
    68197680  case 510:
    6820 #line 1950 "parser.yy" /* yacc.c:1646  */
     7681
     7682/* Line 1806 of yacc.c  */
     7683#line 1951 "parser.yy"
    68217684    {
    6822                         typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
    6823                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
     7685                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     7686                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
    68247687                }
    6825 #line 6826 "Parser/parser.cc" /* yacc.c:1646  */
    68267688    break;
    68277689
    68287690  case 511:
    6829 #line 1958 "parser.yy" /* yacc.c:1646  */
     7691
     7692/* Line 1806 of yacc.c  */
     7693#line 1959 "parser.yy"
    68307694    {
    6831                         typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
    6832                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
     7695                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     7696                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    68337697                }
    6834 #line 6835 "Parser/parser.cc" /* yacc.c:1646  */
    68357698    break;
    68367699
    68377700  case 512:
    6838 #line 1963 "parser.yy" /* yacc.c:1646  */
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1964 "parser.yy"
    68397704    {
    6840                         typedefTable.enterTrait( *(yyvsp[-6].tok) );
     7705                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
    68417706                        typedefTable.enterScope();
    68427707                }
    6843 #line 6844 "Parser/parser.cc" /* yacc.c:1646  */
    68447708    break;
    68457709
    68467710  case 513:
    6847 #line 1968 "parser.yy" /* yacc.c:1646  */
     7711
     7712/* Line 1806 of yacc.c  */
     7713#line 1969 "parser.yy"
    68487714    {
    68497715                        typedefTable.leaveTrait();
    6850                         typedefTable.addToEnclosingScope( *(yyvsp[-9].tok), TypedefTable::ID );
    6851                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
     7716                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
     7717                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
    68527718                }
    6853 #line 6854 "Parser/parser.cc" /* yacc.c:1646  */
    68547719    break;
    68557720
    68567721  case 515:
    6857 #line 1978 "parser.yy" /* yacc.c:1646  */
    6858     { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
    6859 #line 6860 "Parser/parser.cc" /* yacc.c:1646  */
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1979 "parser.yy"
     7725    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    68607726    break;
    68617727
    68627728  case 518:
    6863 #line 1988 "parser.yy" /* yacc.c:1646  */
     7729
     7730/* Line 1806 of yacc.c  */
     7731#line 1989 "parser.yy"
    68647732    {
    68657733                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    6866                         (yyval.decl) = (yyvsp[0].decl);
     7734                        (yyval.decl) = (yyvsp[(1) - (1)].decl);
    68677735                }
    6868 #line 6869 "Parser/parser.cc" /* yacc.c:1646  */
    68697736    break;
    68707737
    68717738  case 519:
    6872 #line 1993 "parser.yy" /* yacc.c:1646  */
     7739
     7740/* Line 1806 of yacc.c  */
     7741#line 1994 "parser.yy"
    68737742    {
    68747743                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    6875                         (yyval.decl) = (yyvsp[0].decl);
     7744                        (yyval.decl) = (yyvsp[(1) - (1)].decl);
    68767745                }
    6877 #line 6878 "Parser/parser.cc" /* yacc.c:1646  */
    68787746    break;
    68797747
    68807748  case 520:
    6881 #line 1998 "parser.yy" /* yacc.c:1646  */
     7749
     7750/* Line 1806 of yacc.c  */
     7751#line 1999 "parser.yy"
    68827752    {
    6883                         typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
    6884                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
     7753                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     7754                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    68857755                }
    6886 #line 6887 "Parser/parser.cc" /* yacc.c:1646  */
    68877756    break;
    68887757
    68897758  case 521:
    6890 #line 2006 "parser.yy" /* yacc.c:1646  */
     7759
     7760/* Line 1806 of yacc.c  */
     7761#line 2007 "parser.yy"
    68917762    {
    68927763                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    6893                         (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
     7764                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
    68947765                }
    6895 #line 6896 "Parser/parser.cc" /* yacc.c:1646  */
    68967766    break;
    68977767
    68987768  case 522:
    6899 #line 2011 "parser.yy" /* yacc.c:1646  */
     7769
     7770/* Line 1806 of yacc.c  */
     7771#line 2012 "parser.yy"
    69007772    {
    69017773                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    6902                         (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
     7774                        (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
    69037775                }
    6904 #line 6905 "Parser/parser.cc" /* yacc.c:1646  */
    69057776    break;
    69067777
    69077778  case 523:
    6908 #line 2021 "parser.yy" /* yacc.c:1646  */
     7779
     7780/* Line 1806 of yacc.c  */
     7781#line 2022 "parser.yy"
    69097782    {}
    6910 #line 6911 "Parser/parser.cc" /* yacc.c:1646  */
    69117783    break;
    69127784
    69137785  case 524:
    6914 #line 2023 "parser.yy" /* yacc.c:1646  */
    6915     { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);    }
    6916 #line 6917 "Parser/parser.cc" /* yacc.c:1646  */
     7786
     7787/* Line 1806 of yacc.c  */
     7788#line 2024 "parser.yy"
     7789    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
    69177790    break;
    69187791
    69197792  case 526:
    6920 #line 2029 "parser.yy" /* yacc.c:1646  */
    6921     { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
    6922 #line 6923 "Parser/parser.cc" /* yacc.c:1646  */
     7793
     7794/* Line 1806 of yacc.c  */
     7795#line 2030 "parser.yy"
     7796    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    69237797    break;
    69247798
    69257799  case 527:
    6926 #line 2034 "parser.yy" /* yacc.c:1646  */
    6927     { (yyval.decl) = 0; }
    6928 #line 6929 "Parser/parser.cc" /* yacc.c:1646  */
     7800
     7801/* Line 1806 of yacc.c  */
     7802#line 2035 "parser.yy"
     7803    { (yyval.decl) = nullptr; }
    69297804    break;
    69307805
    69317806  case 531:
    6932 #line 2042 "parser.yy" /* yacc.c:1646  */
     7807
     7808/* Line 1806 of yacc.c  */
     7809#line 2043 "parser.yy"
    69337810    {}
    6934 #line 6935 "Parser/parser.cc" /* yacc.c:1646  */
    69357811    break;
    69367812
    69377813  case 532:
    6938 #line 2044 "parser.yy" /* yacc.c:1646  */
     7814
     7815/* Line 1806 of yacc.c  */
     7816#line 2045 "parser.yy"
    69397817    {
    69407818                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    6941                         linkage = LinkageSpec::linkageCheck( (yyvsp[0].tok) );
     7819                        linkage = LinkageSpec::linkageCheck( (yyvsp[(2) - (2)].tok) );
    69427820                }
    6943 #line 6944 "Parser/parser.cc" /* yacc.c:1646  */
    69447821    break;
    69457822
    69467823  case 533:
    6947 #line 2049 "parser.yy" /* yacc.c:1646  */
     7824
     7825/* Line 1806 of yacc.c  */
     7826#line 2050 "parser.yy"
    69487827    {
    69497828                        linkage = linkageStack.top();
    69507829                        linkageStack.pop();
    6951                         (yyval.decl) = (yyvsp[-1].decl);
     7830                        (yyval.decl) = (yyvsp[(5) - (6)].decl);
    69527831                }
    6953 #line 6954 "Parser/parser.cc" /* yacc.c:1646  */
    69547832    break;
    69557833
    69567834  case 534:
    6957 #line 2055 "parser.yy" /* yacc.c:1646  */
     7835
     7836/* Line 1806 of yacc.c  */
     7837#line 2056 "parser.yy"
    69587838    {   // mark all fields in list
    6959                         for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     7839                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    69607840                                iter->set_extension( true );
    6961                         (yyval.decl) = (yyvsp[0].decl);
     7841                        (yyval.decl) = (yyvsp[(2) - (2)].decl);
    69627842                }
    6963 #line 6964 "Parser/parser.cc" /* yacc.c:1646  */
    69647843    break;
    69657844
    69667845  case 536:
    6967 #line 2070 "parser.yy" /* yacc.c:1646  */
     7846
     7847/* Line 1806 of yacc.c  */
     7848#line 2071 "parser.yy"
    69687849    {
    69697850                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    69707851                        typedefTable.leaveScope();
    6971                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
     7852                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
    69727853                }
    6973 #line 6974 "Parser/parser.cc" /* yacc.c:1646  */
    69747854    break;
    69757855
    69767856  case 537:
    6977 #line 2076 "parser.yy" /* yacc.c:1646  */
     7857
     7858/* Line 1806 of yacc.c  */
     7859#line 2077 "parser.yy"
    69787860    {
    69797861                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    69807862                        typedefTable.leaveScope();
    6981                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
     7863                        (yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
    69827864                }
    6983 #line 6984 "Parser/parser.cc" /* yacc.c:1646  */
    69847865    break;
    69857866
    69867867  case 538:
    6987 #line 2085 "parser.yy" /* yacc.c:1646  */
     7868
     7869/* Line 1806 of yacc.c  */
     7870#line 2086 "parser.yy"
    69887871    {
    69897872                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    69907873                        typedefTable.leaveScope();
    6991                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
     7874                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
    69927875                }
    6993 #line 6994 "Parser/parser.cc" /* yacc.c:1646  */
    69947876    break;
    69957877
    69967878  case 539:
    6997 #line 2091 "parser.yy" /* yacc.c:1646  */
     7879
     7880/* Line 1806 of yacc.c  */
     7881#line 2092 "parser.yy"
    69987882    {
    69997883                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70007884                        typedefTable.leaveScope();
    7001                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
     7885                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
    70027886                }
    7003 #line 7004 "Parser/parser.cc" /* yacc.c:1646  */
    70047887    break;
    70057888
    70067889  case 540:
    7007 #line 2097 "parser.yy" /* yacc.c:1646  */
     7890
     7891/* Line 1806 of yacc.c  */
     7892#line 2098 "parser.yy"
    70087893    {
    70097894                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70107895                        typedefTable.leaveScope();
    7011                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
     7896                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
    70127897                }
    7013 #line 7014 "Parser/parser.cc" /* yacc.c:1646  */
    70147898    break;
    70157899
    70167900  case 541:
    7017 #line 2103 "parser.yy" /* yacc.c:1646  */
     7901
     7902/* Line 1806 of yacc.c  */
     7903#line 2104 "parser.yy"
    70187904    {
    70197905                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70207906                        typedefTable.leaveScope();
    7021                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
     7907                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
    70227908                }
    7023 #line 7024 "Parser/parser.cc" /* yacc.c:1646  */
    70247909    break;
    70257910
    70267911  case 542:
    7027 #line 2109 "parser.yy" /* yacc.c:1646  */
     7912
     7913/* Line 1806 of yacc.c  */
     7914#line 2110 "parser.yy"
    70287915    {
    70297916                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70307917                        typedefTable.leaveScope();
    7031                         (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
     7918                        (yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
    70327919                }
    7033 #line 7034 "Parser/parser.cc" /* yacc.c:1646  */
    70347920    break;
    70357921
    70367922  case 543:
    7037 #line 2117 "parser.yy" /* yacc.c:1646  */
     7923
     7924/* Line 1806 of yacc.c  */
     7925#line 2118 "parser.yy"
    70387926    {
    70397927                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70407928                        typedefTable.leaveScope();
    7041                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
     7929                        (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
    70427930                }
    7043 #line 7044 "Parser/parser.cc" /* yacc.c:1646  */
    70447931    break;
    70457932
    70467933  case 544:
    7047 #line 2123 "parser.yy" /* yacc.c:1646  */
     7934
     7935/* Line 1806 of yacc.c  */
     7936#line 2124 "parser.yy"
    70487937    {
    70497938                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70507939                        typedefTable.leaveScope();
    7051                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
     7940                        (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
    70527941                }
    7053 #line 7054 "Parser/parser.cc" /* yacc.c:1646  */
    70547942    break;
    70557943
    70567944  case 545:
    7057 #line 2131 "parser.yy" /* yacc.c:1646  */
     7945
     7946/* Line 1806 of yacc.c  */
     7947#line 2132 "parser.yy"
    70587948    {
    70597949                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70607950                        typedefTable.leaveScope();
    7061                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
     7951                        (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
    70627952                }
    7063 #line 7064 "Parser/parser.cc" /* yacc.c:1646  */
    70647953    break;
    70657954
    70667955  case 546:
    7067 #line 2137 "parser.yy" /* yacc.c:1646  */
     7956
     7957/* Line 1806 of yacc.c  */
     7958#line 2138 "parser.yy"
    70687959    {
    70697960                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    70707961                        typedefTable.leaveScope();
    7071                         (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
     7962                        (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) );
    70727963                }
    7073 #line 7074 "Parser/parser.cc" /* yacc.c:1646  */
    70747964    break;
    70757965
    70767966  case 550:
    7077 #line 2152 "parser.yy" /* yacc.c:1646  */
    7078     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    7079 #line 7080 "Parser/parser.cc" /* yacc.c:1646  */
     7967
     7968/* Line 1806 of yacc.c  */
     7969#line 2153 "parser.yy"
     7970    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     7971    break;
     7972
     7973  case 551:
     7974
     7975/* Line 1806 of yacc.c  */
     7976#line 2158 "parser.yy"
     7977    { (yyval.constant) = nullptr; }
    70807978    break;
    70817979
    70827980  case 552:
    7083 #line 2157 "parser.yy" /* yacc.c:1646  */
    7084     { delete (yyvsp[-2].str); }
    7085 #line 7086 "Parser/parser.cc" /* yacc.c:1646  */
     7981
     7982/* Line 1806 of yacc.c  */
     7983#line 2160 "parser.yy"
     7984    { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
    70867985    break;
    70877986
    70887987  case 553:
    7089 #line 2162 "parser.yy" /* yacc.c:1646  */
    7090     { (yyval.decl) = 0; }
    7091 #line 7092 "Parser/parser.cc" /* yacc.c:1646  */
     7988
     7989/* Line 1806 of yacc.c  */
     7990#line 2165 "parser.yy"
     7991    { (yyval.decl) = nullptr; }
    70927992    break;
    70937993
    70947994  case 556:
    7095 #line 2169 "parser.yy" /* yacc.c:1646  */
    7096     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    7097 #line 7098 "Parser/parser.cc" /* yacc.c:1646  */
     7995
     7996/* Line 1806 of yacc.c  */
     7997#line 2172 "parser.yy"
     7998    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70987999    break;
    70998000
    71008001  case 557:
    7101 #line 2175 "parser.yy" /* yacc.c:1646  */
    7102     { (yyval.decl) = 0; }
    7103 #line 7104 "Parser/parser.cc" /* yacc.c:1646  */
     8002
     8003/* Line 1806 of yacc.c  */
     8004#line 2178 "parser.yy"
     8005    { (yyval.decl) = nullptr; }
    71048006    break;
    71058007
    71068008  case 562:
    7107 #line 2186 "parser.yy" /* yacc.c:1646  */
    7108     { delete (yyvsp[-1].en); }
    7109 #line 7110 "Parser/parser.cc" /* yacc.c:1646  */
     8009
     8010/* Line 1806 of yacc.c  */
     8011#line 2189 "parser.yy"
     8012    { delete (yyvsp[(3) - (4)].en); }
    71108013    break;
    71118014
    71128015  case 563:
    7113 #line 2190 "parser.yy" /* yacc.c:1646  */
    7114     { delete (yyvsp[0].tok); }
    7115 #line 7116 "Parser/parser.cc" /* yacc.c:1646  */
     8016
     8017/* Line 1806 of yacc.c  */
     8018#line 2193 "parser.yy"
     8019    { delete (yyvsp[(1) - (1)].tok); }
    71168020    break;
    71178021
    71188022  case 564:
    7119 #line 2191 "parser.yy" /* yacc.c:1646  */
    7120     { delete (yyvsp[0].decl); }
    7121 #line 7122 "Parser/parser.cc" /* yacc.c:1646  */
     8023
     8024/* Line 1806 of yacc.c  */
     8025#line 2194 "parser.yy"
     8026    { delete (yyvsp[(1) - (1)].decl); }
    71228027    break;
    71238028
    71248029  case 565:
    7125 #line 2192 "parser.yy" /* yacc.c:1646  */
    7126     { delete (yyvsp[0].decl); }
    7127 #line 7128 "Parser/parser.cc" /* yacc.c:1646  */
     8030
     8031/* Line 1806 of yacc.c  */
     8032#line 2195 "parser.yy"
     8033    { delete (yyvsp[(1) - (1)].decl); }
    71288034    break;
    71298035
    71308036  case 566:
    7131 #line 2193 "parser.yy" /* yacc.c:1646  */
    7132     { delete (yyvsp[0].decl); }
    7133 #line 7134 "Parser/parser.cc" /* yacc.c:1646  */
     8037
     8038/* Line 1806 of yacc.c  */
     8039#line 2196 "parser.yy"
     8040    { delete (yyvsp[(1) - (1)].decl); }
    71348041    break;
    71358042
    71368043  case 567:
    7137 #line 2228 "parser.yy" /* yacc.c:1646  */
    7138     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7139 #line 7140 "Parser/parser.cc" /* yacc.c:1646  */
     8044
     8045/* Line 1806 of yacc.c  */
     8046#line 2231 "parser.yy"
     8047    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71408048    break;
    71418049
    71428050  case 569:
    7143 #line 2231 "parser.yy" /* yacc.c:1646  */
    7144     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7145 #line 7146 "Parser/parser.cc" /* yacc.c:1646  */
     8051
     8052/* Line 1806 of yacc.c  */
     8053#line 2234 "parser.yy"
     8054    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71468055    break;
    71478056
    71488057  case 570:
    7149 #line 2233 "parser.yy" /* yacc.c:1646  */
    7150     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7151 #line 7152 "Parser/parser.cc" /* yacc.c:1646  */
     8058
     8059/* Line 1806 of yacc.c  */
     8060#line 2236 "parser.yy"
     8061    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71528062    break;
    71538063
    71548064  case 571:
    7155 #line 2238 "parser.yy" /* yacc.c:1646  */
     8065
     8066/* Line 1806 of yacc.c  */
     8067#line 2241 "parser.yy"
    71568068    {
    7157                         typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    7158                         (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     8069                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8070                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    71598071                }
    7160 #line 7161 "Parser/parser.cc" /* yacc.c:1646  */
    71618072    break;
    71628073
    71638074  case 572:
    7164 #line 2243 "parser.yy" /* yacc.c:1646  */
    7165     { (yyval.decl) = (yyvsp[-1].decl); }
    7166 #line 7167 "Parser/parser.cc" /* yacc.c:1646  */
     8075
     8076/* Line 1806 of yacc.c  */
     8077#line 2246 "parser.yy"
     8078    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    71678079    break;
    71688080
    71698081  case 573:
    7170 #line 2248 "parser.yy" /* yacc.c:1646  */
    7171     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7172 #line 7173 "Parser/parser.cc" /* yacc.c:1646  */
     8082
     8083/* Line 1806 of yacc.c  */
     8084#line 2251 "parser.yy"
     8085    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    71738086    break;
    71748087
    71758088  case 574:
    7176 #line 2250 "parser.yy" /* yacc.c:1646  */
    7177     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7178 #line 7179 "Parser/parser.cc" /* yacc.c:1646  */
     8089
     8090/* Line 1806 of yacc.c  */
     8091#line 2253 "parser.yy"
     8092    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    71798093    break;
    71808094
    71818095  case 575:
    7182 #line 2252 "parser.yy" /* yacc.c:1646  */
    7183     { (yyval.decl) = (yyvsp[-1].decl); }
    7184 #line 7185 "Parser/parser.cc" /* yacc.c:1646  */
     8096
     8097/* Line 1806 of yacc.c  */
     8098#line 2255 "parser.yy"
     8099    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    71858100    break;
    71868101
    71878102  case 576:
    7188 #line 2257 "parser.yy" /* yacc.c:1646  */
    7189     { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7190 #line 7191 "Parser/parser.cc" /* yacc.c:1646  */
     8103
     8104/* Line 1806 of yacc.c  */
     8105#line 2260 "parser.yy"
     8106    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    71918107    break;
    71928108
    71938109  case 577:
    7194 #line 2259 "parser.yy" /* yacc.c:1646  */
    7195     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7196 #line 7197 "Parser/parser.cc" /* yacc.c:1646  */
     8110
     8111/* Line 1806 of yacc.c  */
     8112#line 2262 "parser.yy"
     8113    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    71978114    break;
    71988115
    71998116  case 578:
    7200 #line 2261 "parser.yy" /* yacc.c:1646  */
    7201     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7202 #line 7203 "Parser/parser.cc" /* yacc.c:1646  */
     8117
     8118/* Line 1806 of yacc.c  */
     8119#line 2264 "parser.yy"
     8120    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    72038121    break;
    72048122
    72058123  case 579:
    7206 #line 2263 "parser.yy" /* yacc.c:1646  */
    7207     { (yyval.decl) = (yyvsp[-1].decl); }
    7208 #line 7209 "Parser/parser.cc" /* yacc.c:1646  */
     8124
     8125/* Line 1806 of yacc.c  */
     8126#line 2266 "parser.yy"
     8127    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72098128    break;
    72108129
    72118130  case 580:
    7212 #line 2268 "parser.yy" /* yacc.c:1646  */
    7213     { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7214 #line 7215 "Parser/parser.cc" /* yacc.c:1646  */
     8131
     8132/* Line 1806 of yacc.c  */
     8133#line 2271 "parser.yy"
     8134    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    72158135    break;
    72168136
    72178137  case 581:
    7218 #line 2270 "parser.yy" /* yacc.c:1646  */
    7219     { (yyval.decl) = (yyvsp[-1].decl); }
    7220 #line 7221 "Parser/parser.cc" /* yacc.c:1646  */
     8138
     8139/* Line 1806 of yacc.c  */
     8140#line 2273 "parser.yy"
     8141    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72218142    break;
    72228143
    72238144  case 582:
    7224 #line 2279 "parser.yy" /* yacc.c:1646  */
    7225     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7226 #line 7227 "Parser/parser.cc" /* yacc.c:1646  */
     8145
     8146/* Line 1806 of yacc.c  */
     8147#line 2282 "parser.yy"
     8148    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    72278149    break;
    72288150
    72298151  case 584:
    7230 #line 2282 "parser.yy" /* yacc.c:1646  */
    7231     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7232 #line 7233 "Parser/parser.cc" /* yacc.c:1646  */
     8152
     8153/* Line 1806 of yacc.c  */
     8154#line 2285 "parser.yy"
     8155    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    72338156    break;
    72348157
    72358158  case 585:
    7236 #line 2287 "parser.yy" /* yacc.c:1646  */
    7237     { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
    7238 #line 7239 "Parser/parser.cc" /* yacc.c:1646  */
     8159
     8160/* Line 1806 of yacc.c  */
     8161#line 2290 "parser.yy"
     8162    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    72398163    break;
    72408164
    72418165  case 586:
    7242 #line 2289 "parser.yy" /* yacc.c:1646  */
    7243     { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7244 #line 7245 "Parser/parser.cc" /* yacc.c:1646  */
     8166
     8167/* Line 1806 of yacc.c  */
     8168#line 2292 "parser.yy"
     8169    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    72458170    break;
    72468171
    72478172  case 587:
    7248 #line 2291 "parser.yy" /* yacc.c:1646  */
    7249     { (yyval.decl) = (yyvsp[-1].decl); }
    7250 #line 7251 "Parser/parser.cc" /* yacc.c:1646  */
     8173
     8174/* Line 1806 of yacc.c  */
     8175#line 2294 "parser.yy"
     8176    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72518177    break;
    72528178
    72538179  case 588:
    7254 #line 2296 "parser.yy" /* yacc.c:1646  */
    7255     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7256 #line 7257 "Parser/parser.cc" /* yacc.c:1646  */
     8180
     8181/* Line 1806 of yacc.c  */
     8182#line 2299 "parser.yy"
     8183    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    72578184    break;
    72588185
    72598186  case 589:
    7260 #line 2298 "parser.yy" /* yacc.c:1646  */
    7261     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7262 #line 7263 "Parser/parser.cc" /* yacc.c:1646  */
     8187
     8188/* Line 1806 of yacc.c  */
     8189#line 2301 "parser.yy"
     8190    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    72638191    break;
    72648192
    72658193  case 590:
    7266 #line 2300 "parser.yy" /* yacc.c:1646  */
    7267     { (yyval.decl) = (yyvsp[-1].decl); }
    7268 #line 7269 "Parser/parser.cc" /* yacc.c:1646  */
     8194
     8195/* Line 1806 of yacc.c  */
     8196#line 2303 "parser.yy"
     8197    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72698198    break;
    72708199
    72718200  case 591:
    7272 #line 2305 "parser.yy" /* yacc.c:1646  */
    7273     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7274 #line 7275 "Parser/parser.cc" /* yacc.c:1646  */
     8201
     8202/* Line 1806 of yacc.c  */
     8203#line 2308 "parser.yy"
     8204    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    72758205    break;
    72768206
    72778207  case 592:
    7278 #line 2307 "parser.yy" /* yacc.c:1646  */
    7279     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7280 #line 7281 "Parser/parser.cc" /* yacc.c:1646  */
     8208
     8209/* Line 1806 of yacc.c  */
     8210#line 2310 "parser.yy"
     8211    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    72818212    break;
    72828213
    72838214  case 593:
    7284 #line 2309 "parser.yy" /* yacc.c:1646  */
    7285     { (yyval.decl) = (yyvsp[-1].decl); }
    7286 #line 7287 "Parser/parser.cc" /* yacc.c:1646  */
     8215
     8216/* Line 1806 of yacc.c  */
     8217#line 2312 "parser.yy"
     8218    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    72878219    break;
    72888220
    72898221  case 597:
    7290 #line 2324 "parser.yy" /* yacc.c:1646  */
    7291     { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
    7292 #line 7293 "Parser/parser.cc" /* yacc.c:1646  */
     8222
     8223/* Line 1806 of yacc.c  */
     8224#line 2327 "parser.yy"
     8225    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    72938226    break;
    72948227
    72958228  case 598:
    7296 #line 2326 "parser.yy" /* yacc.c:1646  */
    7297     { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
    7298 #line 7299 "Parser/parser.cc" /* yacc.c:1646  */
     8229
     8230/* Line 1806 of yacc.c  */
     8231#line 2329 "parser.yy"
     8232    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    72998233    break;
    73008234
    73018235  case 599:
    7302 #line 2328 "parser.yy" /* yacc.c:1646  */
    7303     { (yyval.decl) = (yyvsp[-1].decl); }
    7304 #line 7305 "Parser/parser.cc" /* yacc.c:1646  */
     8236
     8237/* Line 1806 of yacc.c  */
     8238#line 2331 "parser.yy"
     8239    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73058240    break;
    73068241
    73078242  case 600:
    7308 #line 2333 "parser.yy" /* yacc.c:1646  */
    7309     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7310 #line 7311 "Parser/parser.cc" /* yacc.c:1646  */
     8243
     8244/* Line 1806 of yacc.c  */
     8245#line 2336 "parser.yy"
     8246    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    73118247    break;
    73128248
    73138249  case 601:
    7314 #line 2335 "parser.yy" /* yacc.c:1646  */
    7315     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7316 #line 7317 "Parser/parser.cc" /* yacc.c:1646  */
     8250
     8251/* Line 1806 of yacc.c  */
     8252#line 2338 "parser.yy"
     8253    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    73178254    break;
    73188255
    73198256  case 602:
    7320 #line 2337 "parser.yy" /* yacc.c:1646  */
    7321     { (yyval.decl) = (yyvsp[-1].decl); }
    7322 #line 7323 "Parser/parser.cc" /* yacc.c:1646  */
     8257
     8258/* Line 1806 of yacc.c  */
     8259#line 2340 "parser.yy"
     8260    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73238261    break;
    73248262
    73258263  case 603:
    7326 #line 2342 "parser.yy" /* yacc.c:1646  */
    7327     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7328 #line 7329 "Parser/parser.cc" /* yacc.c:1646  */
     8264
     8265/* Line 1806 of yacc.c  */
     8266#line 2345 "parser.yy"
     8267    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    73298268    break;
    73308269
    73318270  case 604:
    7332 #line 2344 "parser.yy" /* yacc.c:1646  */
    7333     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7334 #line 7335 "Parser/parser.cc" /* yacc.c:1646  */
     8271
     8272/* Line 1806 of yacc.c  */
     8273#line 2347 "parser.yy"
     8274    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    73358275    break;
    73368276
    73378277  case 605:
    7338 #line 2346 "parser.yy" /* yacc.c:1646  */
    7339     { (yyval.decl) = (yyvsp[-1].decl); }
    7340 #line 7341 "Parser/parser.cc" /* yacc.c:1646  */
     8278
     8279/* Line 1806 of yacc.c  */
     8280#line 2349 "parser.yy"
     8281    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73418282    break;
    73428283
    73438284  case 606:
    7344 #line 2361 "parser.yy" /* yacc.c:1646  */
    7345     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7346 #line 7347 "Parser/parser.cc" /* yacc.c:1646  */
     8285
     8286/* Line 1806 of yacc.c  */
     8287#line 2364 "parser.yy"
     8288    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73478289    break;
    73488290
    73498291  case 608:
    7350 #line 2364 "parser.yy" /* yacc.c:1646  */
    7351     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7352 #line 7353 "Parser/parser.cc" /* yacc.c:1646  */
     8292
     8293/* Line 1806 of yacc.c  */
     8294#line 2367 "parser.yy"
     8295    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73538296    break;
    73548297
    73558298  case 609:
    7356 #line 2366 "parser.yy" /* yacc.c:1646  */
    7357     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7358 #line 7359 "Parser/parser.cc" /* yacc.c:1646  */
     8299
     8300/* Line 1806 of yacc.c  */
     8301#line 2369 "parser.yy"
     8302    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73598303    break;
    73608304
    73618305  case 611:
    7362 #line 2372 "parser.yy" /* yacc.c:1646  */
    7363     { (yyval.decl) = (yyvsp[-1].decl); }
    7364 #line 7365 "Parser/parser.cc" /* yacc.c:1646  */
     8306
     8307/* Line 1806 of yacc.c  */
     8308#line 2375 "parser.yy"
     8309    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73658310    break;
    73668311
    73678312  case 612:
    7368 #line 2377 "parser.yy" /* yacc.c:1646  */
    7369     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7370 #line 7371 "Parser/parser.cc" /* yacc.c:1646  */
     8313
     8314/* Line 1806 of yacc.c  */
     8315#line 2380 "parser.yy"
     8316    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    73718317    break;
    73728318
    73738319  case 613:
    7374 #line 2379 "parser.yy" /* yacc.c:1646  */
    7375     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7376 #line 7377 "Parser/parser.cc" /* yacc.c:1646  */
     8320
     8321/* Line 1806 of yacc.c  */
     8322#line 2382 "parser.yy"
     8323    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    73778324    break;
    73788325
    73798326  case 614:
    7380 #line 2381 "parser.yy" /* yacc.c:1646  */
    7381     { (yyval.decl) = (yyvsp[-1].decl); }
    7382 #line 7383 "Parser/parser.cc" /* yacc.c:1646  */
     8327
     8328/* Line 1806 of yacc.c  */
     8329#line 2384 "parser.yy"
     8330    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    73838331    break;
    73848332
    73858333  case 615:
    7386 #line 2386 "parser.yy" /* yacc.c:1646  */
    7387     { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7388 #line 7389 "Parser/parser.cc" /* yacc.c:1646  */
     8334
     8335/* Line 1806 of yacc.c  */
     8336#line 2389 "parser.yy"
     8337    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    73898338    break;
    73908339
    73918340  case 616:
    7392 #line 2388 "parser.yy" /* yacc.c:1646  */
    7393     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7394 #line 7395 "Parser/parser.cc" /* yacc.c:1646  */
     8341
     8342/* Line 1806 of yacc.c  */
     8343#line 2391 "parser.yy"
     8344    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    73958345    break;
    73968346
    73978347  case 617:
    7398 #line 2390 "parser.yy" /* yacc.c:1646  */
    7399     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7400 #line 7401 "Parser/parser.cc" /* yacc.c:1646  */
     8348
     8349/* Line 1806 of yacc.c  */
     8350#line 2393 "parser.yy"
     8351    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    74018352    break;
    74028353
    74038354  case 618:
    7404 #line 2392 "parser.yy" /* yacc.c:1646  */
    7405     { (yyval.decl) = (yyvsp[-1].decl); }
    7406 #line 7407 "Parser/parser.cc" /* yacc.c:1646  */
     8355
     8356/* Line 1806 of yacc.c  */
     8357#line 2395 "parser.yy"
     8358    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74078359    break;
    74088360
    74098361  case 619:
    7410 #line 2397 "parser.yy" /* yacc.c:1646  */
    7411     { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
    7412 #line 7413 "Parser/parser.cc" /* yacc.c:1646  */
     8362
     8363/* Line 1806 of yacc.c  */
     8364#line 2400 "parser.yy"
     8365    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    74138366    break;
    74148367
    74158368  case 620:
    7416 #line 2399 "parser.yy" /* yacc.c:1646  */
    7417     { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7418 #line 7419 "Parser/parser.cc" /* yacc.c:1646  */
     8369
     8370/* Line 1806 of yacc.c  */
     8371#line 2402 "parser.yy"
     8372    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    74198373    break;
    74208374
    74218375  case 621:
    7422 #line 2401 "parser.yy" /* yacc.c:1646  */
    7423     { (yyval.decl) = (yyvsp[-1].decl); }
    7424 #line 7425 "Parser/parser.cc" /* yacc.c:1646  */
     8376
     8377/* Line 1806 of yacc.c  */
     8378#line 2404 "parser.yy"
     8379    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74258380    break;
    74268381
    74278382  case 622:
    7428 #line 2411 "parser.yy" /* yacc.c:1646  */
    7429     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7430 #line 7431 "Parser/parser.cc" /* yacc.c:1646  */
     8383
     8384/* Line 1806 of yacc.c  */
     8385#line 2414 "parser.yy"
     8386    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74318387    break;
    74328388
    74338389  case 624:
    7434 #line 2414 "parser.yy" /* yacc.c:1646  */
    7435     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7436 #line 7437 "Parser/parser.cc" /* yacc.c:1646  */
     8390
     8391/* Line 1806 of yacc.c  */
     8392#line 2417 "parser.yy"
     8393    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74378394    break;
    74388395
    74398396  case 625:
    7440 #line 2416 "parser.yy" /* yacc.c:1646  */
    7441     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7442 #line 7443 "Parser/parser.cc" /* yacc.c:1646  */
     8397
     8398/* Line 1806 of yacc.c  */
     8399#line 2419 "parser.yy"
     8400    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74438401    break;
    74448402
    74458403  case 626:
    7446 #line 2421 "parser.yy" /* yacc.c:1646  */
    7447     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7448 #line 7449 "Parser/parser.cc" /* yacc.c:1646  */
     8404
     8405/* Line 1806 of yacc.c  */
     8406#line 2424 "parser.yy"
     8407    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    74498408    break;
    74508409
    74518410  case 627:
    7452 #line 2423 "parser.yy" /* yacc.c:1646  */
    7453     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7454 #line 7455 "Parser/parser.cc" /* yacc.c:1646  */
     8411
     8412/* Line 1806 of yacc.c  */
     8413#line 2426 "parser.yy"
     8414    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    74558415    break;
    74568416
    74578417  case 628:
    7458 #line 2425 "parser.yy" /* yacc.c:1646  */
    7459     { (yyval.decl) = (yyvsp[-1].decl); }
    7460 #line 7461 "Parser/parser.cc" /* yacc.c:1646  */
     8418
     8419/* Line 1806 of yacc.c  */
     8420#line 2428 "parser.yy"
     8421    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74618422    break;
    74628423
    74638424  case 629:
    7464 #line 2430 "parser.yy" /* yacc.c:1646  */
    7465     { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7466 #line 7467 "Parser/parser.cc" /* yacc.c:1646  */
     8425
     8426/* Line 1806 of yacc.c  */
     8427#line 2433 "parser.yy"
     8428    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    74678429    break;
    74688430
    74698431  case 630:
    7470 #line 2432 "parser.yy" /* yacc.c:1646  */
    7471     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7472 #line 7473 "Parser/parser.cc" /* yacc.c:1646  */
     8432
     8433/* Line 1806 of yacc.c  */
     8434#line 2435 "parser.yy"
     8435    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    74738436    break;
    74748437
    74758438  case 631:
    7476 #line 2434 "parser.yy" /* yacc.c:1646  */
    7477     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7478 #line 7479 "Parser/parser.cc" /* yacc.c:1646  */
     8439
     8440/* Line 1806 of yacc.c  */
     8441#line 2437 "parser.yy"
     8442    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    74798443    break;
    74808444
    74818445  case 632:
    7482 #line 2436 "parser.yy" /* yacc.c:1646  */
    7483     { (yyval.decl) = (yyvsp[-1].decl); }
    7484 #line 7485 "Parser/parser.cc" /* yacc.c:1646  */
     8446
     8447/* Line 1806 of yacc.c  */
     8448#line 2439 "parser.yy"
     8449    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    74858450    break;
    74868451
    74878452  case 633:
    7488 #line 2441 "parser.yy" /* yacc.c:1646  */
    7489     { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
    7490 #line 7491 "Parser/parser.cc" /* yacc.c:1646  */
     8453
     8454/* Line 1806 of yacc.c  */
     8455#line 2444 "parser.yy"
     8456    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    74918457    break;
    74928458
    74938459  case 634:
    7494 #line 2443 "parser.yy" /* yacc.c:1646  */
    7495     { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7496 #line 7497 "Parser/parser.cc" /* yacc.c:1646  */
     8460
     8461/* Line 1806 of yacc.c  */
     8462#line 2446 "parser.yy"
     8463    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    74978464    break;
    74988465
    74998466  case 635:
    7500 #line 2445 "parser.yy" /* yacc.c:1646  */
    7501     { (yyval.decl) = (yyvsp[-1].decl); }
    7502 #line 7503 "Parser/parser.cc" /* yacc.c:1646  */
     8467
     8468/* Line 1806 of yacc.c  */
     8469#line 2448 "parser.yy"
     8470    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    75038471    break;
    75048472
    75058473  case 636:
    7506 #line 2476 "parser.yy" /* yacc.c:1646  */
    7507     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7508 #line 7509 "Parser/parser.cc" /* yacc.c:1646  */
     8474
     8475/* Line 1806 of yacc.c  */
     8476#line 2479 "parser.yy"
     8477    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75098478    break;
    75108479
    75118480  case 638:
    7512 #line 2479 "parser.yy" /* yacc.c:1646  */
    7513     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7514 #line 7515 "Parser/parser.cc" /* yacc.c:1646  */
     8481
     8482/* Line 1806 of yacc.c  */
     8483#line 2482 "parser.yy"
     8484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75158485    break;
    75168486
    75178487  case 639:
    7518 #line 2481 "parser.yy" /* yacc.c:1646  */
    7519     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7520 #line 7521 "Parser/parser.cc" /* yacc.c:1646  */
     8488
     8489/* Line 1806 of yacc.c  */
     8490#line 2484 "parser.yy"
     8491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75218492    break;
    75228493
    75238494  case 640:
    7524 #line 2486 "parser.yy" /* yacc.c:1646  */
     8495
     8496/* Line 1806 of yacc.c  */
     8497#line 2489 "parser.yy"
    75258498    {
    7526                         typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    7527                         (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     8499                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8500                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    75288501                }
    7529 #line 7530 "Parser/parser.cc" /* yacc.c:1646  */
    75308502    break;
    75318503
    75328504  case 641:
    7533 #line 2491 "parser.yy" /* yacc.c:1646  */
     8505
     8506/* Line 1806 of yacc.c  */
     8507#line 2494 "parser.yy"
    75348508    {
    7535                         typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    7536                         (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     8509                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8510                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    75378511                }
    7538 #line 7539 "Parser/parser.cc" /* yacc.c:1646  */
    75398512    break;
    75408513
    75418514  case 642:
    7542 #line 2499 "parser.yy" /* yacc.c:1646  */
    7543     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7544 #line 7545 "Parser/parser.cc" /* yacc.c:1646  */
     8515
     8516/* Line 1806 of yacc.c  */
     8517#line 2502 "parser.yy"
     8518    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    75458519    break;
    75468520
    75478521  case 643:
    7548 #line 2501 "parser.yy" /* yacc.c:1646  */
    7549     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7550 #line 7551 "Parser/parser.cc" /* yacc.c:1646  */
     8522
     8523/* Line 1806 of yacc.c  */
     8524#line 2504 "parser.yy"
     8525    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    75518526    break;
    75528527
    75538528  case 644:
    7554 #line 2503 "parser.yy" /* yacc.c:1646  */
    7555     { (yyval.decl) = (yyvsp[-1].decl); }
    7556 #line 7557 "Parser/parser.cc" /* yacc.c:1646  */
     8529
     8530/* Line 1806 of yacc.c  */
     8531#line 2506 "parser.yy"
     8532    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    75578533    break;
    75588534
    75598535  case 645:
    7560 #line 2508 "parser.yy" /* yacc.c:1646  */
    7561     { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7562 #line 7563 "Parser/parser.cc" /* yacc.c:1646  */
     8536
     8537/* Line 1806 of yacc.c  */
     8538#line 2511 "parser.yy"
     8539    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    75638540    break;
    75648541
    75658542  case 646:
    7566 #line 2510 "parser.yy" /* yacc.c:1646  */
    7567     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7568 #line 7569 "Parser/parser.cc" /* yacc.c:1646  */
     8543
     8544/* Line 1806 of yacc.c  */
     8545#line 2513 "parser.yy"
     8546    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    75698547    break;
    75708548
    75718549  case 647:
    7572 #line 2515 "parser.yy" /* yacc.c:1646  */
    7573     { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
    7574 #line 7575 "Parser/parser.cc" /* yacc.c:1646  */
     8550
     8551/* Line 1806 of yacc.c  */
     8552#line 2518 "parser.yy"
     8553    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    75758554    break;
    75768555
    75778556  case 648:
    7578 #line 2517 "parser.yy" /* yacc.c:1646  */
    7579     { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7580 #line 7581 "Parser/parser.cc" /* yacc.c:1646  */
     8557
     8558/* Line 1806 of yacc.c  */
     8559#line 2520 "parser.yy"
     8560    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    75818561    break;
    75828562
    75838563  case 650:
    7584 #line 2532 "parser.yy" /* yacc.c:1646  */
    7585     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7586 #line 7587 "Parser/parser.cc" /* yacc.c:1646  */
     8564
     8565/* Line 1806 of yacc.c  */
     8566#line 2535 "parser.yy"
     8567    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75878568    break;
    75888569
    75898570  case 651:
    7590 #line 2534 "parser.yy" /* yacc.c:1646  */
    7591     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7592 #line 7593 "Parser/parser.cc" /* yacc.c:1646  */
     8571
     8572/* Line 1806 of yacc.c  */
     8573#line 2537 "parser.yy"
     8574    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75938575    break;
    75948576
    75958577  case 652:
    7596 #line 2539 "parser.yy" /* yacc.c:1646  */
     8578
     8579/* Line 1806 of yacc.c  */
     8580#line 2542 "parser.yy"
    75978581    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7598 #line 7599 "Parser/parser.cc" /* yacc.c:1646  */
    75998582    break;
    76008583
    76018584  case 653:
    7602 #line 2541 "parser.yy" /* yacc.c:1646  */
    7603     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
    7604 #line 7605 "Parser/parser.cc" /* yacc.c:1646  */
     8585
     8586/* Line 1806 of yacc.c  */
     8587#line 2544 "parser.yy"
     8588    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    76058589    break;
    76068590
    76078591  case 654:
    7608 #line 2543 "parser.yy" /* yacc.c:1646  */
    7609     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7610 #line 7611 "Parser/parser.cc" /* yacc.c:1646  */
     8592
     8593/* Line 1806 of yacc.c  */
     8594#line 2546 "parser.yy"
     8595    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    76118596    break;
    76128597
    76138598  case 655:
    7614 #line 2545 "parser.yy" /* yacc.c:1646  */
    7615     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7616 #line 7617 "Parser/parser.cc" /* yacc.c:1646  */
     8599
     8600/* Line 1806 of yacc.c  */
     8601#line 2548 "parser.yy"
     8602    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    76178603    break;
    76188604
    76198605  case 656:
    7620 #line 2547 "parser.yy" /* yacc.c:1646  */
    7621     { (yyval.decl) = (yyvsp[-1].decl); }
    7622 #line 7623 "Parser/parser.cc" /* yacc.c:1646  */
     8606
     8607/* Line 1806 of yacc.c  */
     8608#line 2550 "parser.yy"
     8609    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    76238610    break;
    76248611
    76258612  case 658:
    7626 #line 2553 "parser.yy" /* yacc.c:1646  */
    7627     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7628 #line 7629 "Parser/parser.cc" /* yacc.c:1646  */
     8613
     8614/* Line 1806 of yacc.c  */
     8615#line 2556 "parser.yy"
     8616    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    76298617    break;
    76308618
    76318619  case 659:
    7632 #line 2555 "parser.yy" /* yacc.c:1646  */
    7633     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7634 #line 7635 "Parser/parser.cc" /* yacc.c:1646  */
     8620
     8621/* Line 1806 of yacc.c  */
     8622#line 2558 "parser.yy"
     8623    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    76358624    break;
    76368625
    76378626  case 660:
    7638 #line 2557 "parser.yy" /* yacc.c:1646  */
    7639     { (yyval.decl) = (yyvsp[-1].decl); }
    7640 #line 7641 "Parser/parser.cc" /* yacc.c:1646  */
     8627
     8628/* Line 1806 of yacc.c  */
     8629#line 2560 "parser.yy"
     8630    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    76418631    break;
    76428632
    76438633  case 661:
    7644 #line 2562 "parser.yy" /* yacc.c:1646  */
    7645     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[-2].decl), nullptr ); }
    7646 #line 7647 "Parser/parser.cc" /* yacc.c:1646  */
     8634
     8635/* Line 1806 of yacc.c  */
     8636#line 2565 "parser.yy"
     8637    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    76478638    break;
    76488639
    76498640  case 662:
    7650 #line 2564 "parser.yy" /* yacc.c:1646  */
    7651     { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7652 #line 7653 "Parser/parser.cc" /* yacc.c:1646  */
     8641
     8642/* Line 1806 of yacc.c  */
     8643#line 2567 "parser.yy"
     8644    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    76538645    break;
    76548646
    76558647  case 663:
    7656 #line 2566 "parser.yy" /* yacc.c:1646  */
    7657     { (yyval.decl) = (yyvsp[-1].decl); }
    7658 #line 7659 "Parser/parser.cc" /* yacc.c:1646  */
     8648
     8649/* Line 1806 of yacc.c  */
     8650#line 2569 "parser.yy"
     8651    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    76598652    break;
    76608653
    76618654  case 664:
    7662 #line 2572 "parser.yy" /* yacc.c:1646  */
     8655
     8656/* Line 1806 of yacc.c  */
     8657#line 2575 "parser.yy"
    76638658    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    7664 #line 7665 "Parser/parser.cc" /* yacc.c:1646  */
    76658659    break;
    76668660
    76678661  case 665:
    7668 #line 2574 "parser.yy" /* yacc.c:1646  */
    7669     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
    7670 #line 7671 "Parser/parser.cc" /* yacc.c:1646  */
     8662
     8663/* Line 1806 of yacc.c  */
     8664#line 2577 "parser.yy"
     8665    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    76718666    break;
    76728667
    76738668  case 667:
    7674 #line 2580 "parser.yy" /* yacc.c:1646  */
    7675     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
    7676 #line 7677 "Parser/parser.cc" /* yacc.c:1646  */
     8669
     8670/* Line 1806 of yacc.c  */
     8671#line 2583 "parser.yy"
     8672    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    76778673    break;
    76788674
    76798675  case 668:
    7680 #line 2582 "parser.yy" /* yacc.c:1646  */
     8676
     8677/* Line 1806 of yacc.c  */
     8678#line 2585 "parser.yy"
    76818679    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    7682 #line 7683 "Parser/parser.cc" /* yacc.c:1646  */
    76838680    break;
    76848681
    76858682  case 669:
    7686 #line 2584 "parser.yy" /* yacc.c:1646  */
    7687     { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
    7688 #line 7689 "Parser/parser.cc" /* yacc.c:1646  */
     8683
     8684/* Line 1806 of yacc.c  */
     8685#line 2587 "parser.yy"
     8686    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    76898687    break;
    76908688
    76918689  case 670:
    7692 #line 2586 "parser.yy" /* yacc.c:1646  */
    7693     { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    7694 #line 7695 "Parser/parser.cc" /* yacc.c:1646  */
     8690
     8691/* Line 1806 of yacc.c  */
     8692#line 2589 "parser.yy"
     8693    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    76958694    break;
    76968695
    76978696  case 672:
    7698 #line 2601 "parser.yy" /* yacc.c:1646  */
    7699     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7700 #line 7701 "Parser/parser.cc" /* yacc.c:1646  */
     8697
     8698/* Line 1806 of yacc.c  */
     8699#line 2604 "parser.yy"
     8700    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    77018701    break;
    77028702
    77038703  case 673:
    7704 #line 2603 "parser.yy" /* yacc.c:1646  */
    7705     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7706 #line 7707 "Parser/parser.cc" /* yacc.c:1646  */
     8704
     8705/* Line 1806 of yacc.c  */
     8706#line 2606 "parser.yy"
     8707    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    77078708    break;
    77088709
    77098710  case 674:
    7710 #line 2608 "parser.yy" /* yacc.c:1646  */
     8711
     8712/* Line 1806 of yacc.c  */
     8713#line 2611 "parser.yy"
    77118714    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7712 #line 7713 "Parser/parser.cc" /* yacc.c:1646  */
    77138715    break;
    77148716
    77158717  case 675:
    7716 #line 2610 "parser.yy" /* yacc.c:1646  */
    7717     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
    7718 #line 7719 "Parser/parser.cc" /* yacc.c:1646  */
     8718
     8719/* Line 1806 of yacc.c  */
     8720#line 2613 "parser.yy"
     8721    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    77198722    break;
    77208723
    77218724  case 676:
    7722 #line 2612 "parser.yy" /* yacc.c:1646  */
    7723     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7724 #line 7725 "Parser/parser.cc" /* yacc.c:1646  */
     8725
     8726/* Line 1806 of yacc.c  */
     8727#line 2615 "parser.yy"
     8728    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    77258729    break;
    77268730
    77278731  case 677:
    7728 #line 2614 "parser.yy" /* yacc.c:1646  */
    7729     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7730 #line 7731 "Parser/parser.cc" /* yacc.c:1646  */
     8732
     8733/* Line 1806 of yacc.c  */
     8734#line 2617 "parser.yy"
     8735    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    77318736    break;
    77328737
    77338738  case 678:
    7734 #line 2616 "parser.yy" /* yacc.c:1646  */
    7735     { (yyval.decl) = (yyvsp[-1].decl); }
    7736 #line 7737 "Parser/parser.cc" /* yacc.c:1646  */
     8739
     8740/* Line 1806 of yacc.c  */
     8741#line 2619 "parser.yy"
     8742    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    77378743    break;
    77388744
    77398745  case 680:
    7740 #line 2622 "parser.yy" /* yacc.c:1646  */
    7741     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7742 #line 7743 "Parser/parser.cc" /* yacc.c:1646  */
     8746
     8747/* Line 1806 of yacc.c  */
     8748#line 2625 "parser.yy"
     8749    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    77438750    break;
    77448751
    77458752  case 681:
    7746 #line 2624 "parser.yy" /* yacc.c:1646  */
    7747     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7748 #line 7749 "Parser/parser.cc" /* yacc.c:1646  */
     8753
     8754/* Line 1806 of yacc.c  */
     8755#line 2627 "parser.yy"
     8756    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    77498757    break;
    77508758
    77518759  case 682:
    7752 #line 2626 "parser.yy" /* yacc.c:1646  */
    7753     { (yyval.decl) = (yyvsp[-1].decl); }
    7754 #line 7755 "Parser/parser.cc" /* yacc.c:1646  */
     8760
     8761/* Line 1806 of yacc.c  */
     8762#line 2629 "parser.yy"
     8763    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    77558764    break;
    77568765
    77578766  case 683:
    7758 #line 2631 "parser.yy" /* yacc.c:1646  */
    7759     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[-2].decl), nullptr ); }
    7760 #line 7761 "Parser/parser.cc" /* yacc.c:1646  */
     8767
     8768/* Line 1806 of yacc.c  */
     8769#line 2634 "parser.yy"
     8770    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    77618771    break;
    77628772
    77638773  case 684:
    7764 #line 2633 "parser.yy" /* yacc.c:1646  */
    7765     { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7766 #line 7767 "Parser/parser.cc" /* yacc.c:1646  */
     8774
     8775/* Line 1806 of yacc.c  */
     8776#line 2636 "parser.yy"
     8777    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    77678778    break;
    77688779
    77698780  case 685:
    7770 #line 2635 "parser.yy" /* yacc.c:1646  */
    7771     { (yyval.decl) = (yyvsp[-1].decl); }
    7772 #line 7773 "Parser/parser.cc" /* yacc.c:1646  */
     8781
     8782/* Line 1806 of yacc.c  */
     8783#line 2638 "parser.yy"
     8784    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    77738785    break;
    77748786
    77758787  case 687:
    7776 #line 2642 "parser.yy" /* yacc.c:1646  */
    7777     { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7778 #line 7779 "Parser/parser.cc" /* yacc.c:1646  */
     8788
     8789/* Line 1806 of yacc.c  */
     8790#line 2645 "parser.yy"
     8791    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    77798792    break;
    77808793
    77818794  case 689:
    7782 #line 2653 "parser.yy" /* yacc.c:1646  */
     8795
     8796/* Line 1806 of yacc.c  */
     8797#line 2656 "parser.yy"
    77838798    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    7784 #line 7785 "Parser/parser.cc" /* yacc.c:1646  */
    77858799    break;
    77868800
    77878801  case 690:
    7788 #line 2656 "parser.yy" /* yacc.c:1646  */
    7789     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
    7790 #line 7791 "Parser/parser.cc" /* yacc.c:1646  */
     8802
     8803/* Line 1806 of yacc.c  */
     8804#line 2659 "parser.yy"
     8805    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    77918806    break;
    77928807
    77938808  case 691:
    7794 #line 2658 "parser.yy" /* yacc.c:1646  */
    7795     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
    7796 #line 7797 "Parser/parser.cc" /* yacc.c:1646  */
     8809
     8810/* Line 1806 of yacc.c  */
     8811#line 2661 "parser.yy"
     8812    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    77978813    break;
    77988814
    77998815  case 692:
    7800 #line 2661 "parser.yy" /* yacc.c:1646  */
    7801     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
    7802 #line 7803 "Parser/parser.cc" /* yacc.c:1646  */
     8816
     8817/* Line 1806 of yacc.c  */
     8818#line 2664 "parser.yy"
     8819    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    78038820    break;
    78048821
    78058822  case 693:
    7806 #line 2663 "parser.yy" /* yacc.c:1646  */
    7807     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
    7808 #line 7809 "Parser/parser.cc" /* yacc.c:1646  */
     8823
     8824/* Line 1806 of yacc.c  */
     8825#line 2666 "parser.yy"
     8826    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    78098827    break;
    78108828
    78118829  case 694:
    7812 #line 2665 "parser.yy" /* yacc.c:1646  */
    7813     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
    7814 #line 7815 "Parser/parser.cc" /* yacc.c:1646  */
     8830
     8831/* Line 1806 of yacc.c  */
     8832#line 2668 "parser.yy"
     8833    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    78158834    break;
    78168835
    78178836  case 696:
    7818 #line 2679 "parser.yy" /* yacc.c:1646  */
    7819     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7820 #line 7821 "Parser/parser.cc" /* yacc.c:1646  */
     8837
     8838/* Line 1806 of yacc.c  */
     8839#line 2682 "parser.yy"
     8840    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78218841    break;
    78228842
    78238843  case 697:
    7824 #line 2681 "parser.yy" /* yacc.c:1646  */
    7825     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7826 #line 7827 "Parser/parser.cc" /* yacc.c:1646  */
     8844
     8845/* Line 1806 of yacc.c  */
     8846#line 2684 "parser.yy"
     8847    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78278848    break;
    78288849
    78298850  case 698:
    7830 #line 2686 "parser.yy" /* yacc.c:1646  */
     8851
     8852/* Line 1806 of yacc.c  */
     8853#line 2689 "parser.yy"
    78318854    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7832 #line 7833 "Parser/parser.cc" /* yacc.c:1646  */
    78338855    break;
    78348856
    78358857  case 699:
    7836 #line 2688 "parser.yy" /* yacc.c:1646  */
    7837     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
    7838 #line 7839 "Parser/parser.cc" /* yacc.c:1646  */
     8858
     8859/* Line 1806 of yacc.c  */
     8860#line 2691 "parser.yy"
     8861    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    78398862    break;
    78408863
    78418864  case 700:
    7842 #line 2690 "parser.yy" /* yacc.c:1646  */
    7843     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7844 #line 7845 "Parser/parser.cc" /* yacc.c:1646  */
     8865
     8866/* Line 1806 of yacc.c  */
     8867#line 2693 "parser.yy"
     8868    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    78458869    break;
    78468870
    78478871  case 701:
    7848 #line 2692 "parser.yy" /* yacc.c:1646  */
    7849     { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7850 #line 7851 "Parser/parser.cc" /* yacc.c:1646  */
     8872
     8873/* Line 1806 of yacc.c  */
     8874#line 2695 "parser.yy"
     8875    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    78518876    break;
    78528877
    78538878  case 702:
    7854 #line 2694 "parser.yy" /* yacc.c:1646  */
    7855     { (yyval.decl) = (yyvsp[-1].decl); }
    7856 #line 7857 "Parser/parser.cc" /* yacc.c:1646  */
     8879
     8880/* Line 1806 of yacc.c  */
     8881#line 2697 "parser.yy"
     8882    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78578883    break;
    78588884
    78598885  case 704:
    7860 #line 2700 "parser.yy" /* yacc.c:1646  */
    7861     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7862 #line 7863 "Parser/parser.cc" /* yacc.c:1646  */
     8886
     8887/* Line 1806 of yacc.c  */
     8888#line 2703 "parser.yy"
     8889    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    78638890    break;
    78648891
    78658892  case 705:
    7866 #line 2702 "parser.yy" /* yacc.c:1646  */
    7867     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7868 #line 7869 "Parser/parser.cc" /* yacc.c:1646  */
     8893
     8894/* Line 1806 of yacc.c  */
     8895#line 2705 "parser.yy"
     8896    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    78698897    break;
    78708898
    78718899  case 706:
    7872 #line 2704 "parser.yy" /* yacc.c:1646  */
    7873     { (yyval.decl) = (yyvsp[-1].decl); }
    7874 #line 7875 "Parser/parser.cc" /* yacc.c:1646  */
     8900
     8901/* Line 1806 of yacc.c  */
     8902#line 2707 "parser.yy"
     8903    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78758904    break;
    78768905
    78778906  case 707:
    7878 #line 2709 "parser.yy" /* yacc.c:1646  */
    7879     { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7880 #line 7881 "Parser/parser.cc" /* yacc.c:1646  */
     8907
     8908/* Line 1806 of yacc.c  */
     8909#line 2712 "parser.yy"
     8910    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    78818911    break;
    78828912
    78838913  case 708:
    7884 #line 2711 "parser.yy" /* yacc.c:1646  */
    7885     { (yyval.decl) = (yyvsp[-1].decl); }
    7886 #line 7887 "Parser/parser.cc" /* yacc.c:1646  */
     8914
     8915/* Line 1806 of yacc.c  */
     8916#line 2714 "parser.yy"
     8917    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78878918    break;
    78888919
    78898920  case 711:
    7890 #line 2721 "parser.yy" /* yacc.c:1646  */
    7891     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    7892 #line 7893 "Parser/parser.cc" /* yacc.c:1646  */
     8921
     8922/* Line 1806 of yacc.c  */
     8923#line 2724 "parser.yy"
     8924    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78938925    break;
    78948926
    78958927  case 714:
    7896 #line 2731 "parser.yy" /* yacc.c:1646  */
    7897     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    7898 #line 7899 "Parser/parser.cc" /* yacc.c:1646  */
     8928
     8929/* Line 1806 of yacc.c  */
     8930#line 2734 "parser.yy"
     8931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    78998932    break;
    79008933
    79018934  case 715:
    7902 #line 2733 "parser.yy" /* yacc.c:1646  */
    7903     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    7904 #line 7905 "Parser/parser.cc" /* yacc.c:1646  */
     8935
     8936/* Line 1806 of yacc.c  */
     8937#line 2736 "parser.yy"
     8938    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    79058939    break;
    79068940
    79078941  case 716:
    7908 #line 2735 "parser.yy" /* yacc.c:1646  */
    7909     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    7910 #line 7911 "Parser/parser.cc" /* yacc.c:1646  */
     8942
     8943/* Line 1806 of yacc.c  */
     8944#line 2738 "parser.yy"
     8945    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    79118946    break;
    79128947
    79138948  case 717:
    7914 #line 2737 "parser.yy" /* yacc.c:1646  */
    7915     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    7916 #line 7917 "Parser/parser.cc" /* yacc.c:1646  */
     8949
     8950/* Line 1806 of yacc.c  */
     8951#line 2740 "parser.yy"
     8952    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    79178953    break;
    79188954
    79198955  case 718:
    7920 #line 2739 "parser.yy" /* yacc.c:1646  */
    7921     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    7922 #line 7923 "Parser/parser.cc" /* yacc.c:1646  */
     8956
     8957/* Line 1806 of yacc.c  */
     8958#line 2742 "parser.yy"
     8959    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    79238960    break;
    79248961
    79258962  case 719:
    7926 #line 2741 "parser.yy" /* yacc.c:1646  */
    7927     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    7928 #line 7929 "Parser/parser.cc" /* yacc.c:1646  */
     8963
     8964/* Line 1806 of yacc.c  */
     8965#line 2744 "parser.yy"
     8966    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    79298967    break;
    79308968
    79318969  case 720:
    7932 #line 2748 "parser.yy" /* yacc.c:1646  */
    7933     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    7934 #line 7935 "Parser/parser.cc" /* yacc.c:1646  */
     8970
     8971/* Line 1806 of yacc.c  */
     8972#line 2751 "parser.yy"
     8973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    79358974    break;
    79368975
    79378976  case 721:
    7938 #line 2750 "parser.yy" /* yacc.c:1646  */
    7939     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    7940 #line 7941 "Parser/parser.cc" /* yacc.c:1646  */
     8977
     8978/* Line 1806 of yacc.c  */
     8979#line 2753 "parser.yy"
     8980    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    79418981    break;
    79428982
    79438983  case 722:
    7944 #line 2752 "parser.yy" /* yacc.c:1646  */
    7945     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    7946 #line 7947 "Parser/parser.cc" /* yacc.c:1646  */
     8984
     8985/* Line 1806 of yacc.c  */
     8986#line 2755 "parser.yy"
     8987    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    79478988    break;
    79488989
    79498990  case 723:
    7950 #line 2754 "parser.yy" /* yacc.c:1646  */
    7951     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
    7952 #line 7953 "Parser/parser.cc" /* yacc.c:1646  */
     8991
     8992/* Line 1806 of yacc.c  */
     8993#line 2757 "parser.yy"
     8994    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    79538995    break;
    79548996
    79558997  case 724:
    7956 #line 2756 "parser.yy" /* yacc.c:1646  */
    7957     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    7958 #line 7959 "Parser/parser.cc" /* yacc.c:1646  */
     8998
     8999/* Line 1806 of yacc.c  */
     9000#line 2759 "parser.yy"
     9001    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    79599002    break;
    79609003
    79619004  case 725:
    7962 #line 2759 "parser.yy" /* yacc.c:1646  */
    7963     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    7964 #line 7965 "Parser/parser.cc" /* yacc.c:1646  */
     9005
     9006/* Line 1806 of yacc.c  */
     9007#line 2762 "parser.yy"
     9008    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    79659009    break;
    79669010
    79679011  case 726:
    7968 #line 2761 "parser.yy" /* yacc.c:1646  */
    7969     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    7970 #line 7971 "Parser/parser.cc" /* yacc.c:1646  */
     9012
     9013/* Line 1806 of yacc.c  */
     9014#line 2764 "parser.yy"
     9015    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    79719016    break;
    79729017
    79739018  case 727:
    7974 #line 2763 "parser.yy" /* yacc.c:1646  */
    7975     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    7976 #line 7977 "Parser/parser.cc" /* yacc.c:1646  */
     9019
     9020/* Line 1806 of yacc.c  */
     9021#line 2766 "parser.yy"
     9022    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    79779023    break;
    79789024
    79799025  case 728:
    7980 #line 2765 "parser.yy" /* yacc.c:1646  */
    7981     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
    7982 #line 7983 "Parser/parser.cc" /* yacc.c:1646  */
     9026
     9027/* Line 1806 of yacc.c  */
     9028#line 2768 "parser.yy"
     9029    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    79839030    break;
    79849031
    79859032  case 729:
    7986 #line 2767 "parser.yy" /* yacc.c:1646  */
    7987     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    7988 #line 7989 "Parser/parser.cc" /* yacc.c:1646  */
     9033
     9034/* Line 1806 of yacc.c  */
     9035#line 2770 "parser.yy"
     9036    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    79899037    break;
    79909038
    79919039  case 730:
    7992 #line 2772 "parser.yy" /* yacc.c:1646  */
    7993     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
    7994 #line 7995 "Parser/parser.cc" /* yacc.c:1646  */
     9040
     9041/* Line 1806 of yacc.c  */
     9042#line 2775 "parser.yy"
     9043    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    79959044    break;
    79969045
    79979046  case 731:
    7998 #line 2774 "parser.yy" /* yacc.c:1646  */
    7999     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
    8000 #line 8001 "Parser/parser.cc" /* yacc.c:1646  */
     9047
     9048/* Line 1806 of yacc.c  */
     9049#line 2777 "parser.yy"
     9050    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    80019051    break;
    80029052
    80039053  case 732:
    8004 #line 2779 "parser.yy" /* yacc.c:1646  */
    8005     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
    8006 #line 8007 "Parser/parser.cc" /* yacc.c:1646  */
     9054
     9055/* Line 1806 of yacc.c  */
     9056#line 2782 "parser.yy"
     9057    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    80079058    break;
    80089059
    80099060  case 733:
    8010 #line 2781 "parser.yy" /* yacc.c:1646  */
    8011     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
    8012 #line 8013 "Parser/parser.cc" /* yacc.c:1646  */
     9061
     9062/* Line 1806 of yacc.c  */
     9063#line 2784 "parser.yy"
     9064    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    80139065    break;
    80149066
    80159067  case 735:
    8016 #line 2808 "parser.yy" /* yacc.c:1646  */
    8017     { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    8018 #line 8019 "Parser/parser.cc" /* yacc.c:1646  */
     9068
     9069/* Line 1806 of yacc.c  */
     9070#line 2811 "parser.yy"
     9071    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    80199072    break;
    80209073
    80219074  case 739:
    8022 #line 2819 "parser.yy" /* yacc.c:1646  */
    8023     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8024 #line 8025 "Parser/parser.cc" /* yacc.c:1646  */
     9075
     9076/* Line 1806 of yacc.c  */
     9077#line 2822 "parser.yy"
     9078    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    80259079    break;
    80269080
    80279081  case 740:
    8028 #line 2821 "parser.yy" /* yacc.c:1646  */
    8029     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    8030 #line 8031 "Parser/parser.cc" /* yacc.c:1646  */
     9082
     9083/* Line 1806 of yacc.c  */
     9084#line 2824 "parser.yy"
     9085    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    80319086    break;
    80329087
    80339088  case 741:
    8034 #line 2823 "parser.yy" /* yacc.c:1646  */
    8035     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8036 #line 8037 "Parser/parser.cc" /* yacc.c:1646  */
     9089
     9090/* Line 1806 of yacc.c  */
     9091#line 2826 "parser.yy"
     9092    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    80379093    break;
    80389094
    80399095  case 742:
    8040 #line 2825 "parser.yy" /* yacc.c:1646  */
    8041     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    8042 #line 8043 "Parser/parser.cc" /* yacc.c:1646  */
     9096
     9097/* Line 1806 of yacc.c  */
     9098#line 2828 "parser.yy"
     9099    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    80439100    break;
    80449101
    80459102  case 743:
    8046 #line 2827 "parser.yy" /* yacc.c:1646  */
    8047     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8048 #line 8049 "Parser/parser.cc" /* yacc.c:1646  */
     9103
     9104/* Line 1806 of yacc.c  */
     9105#line 2830 "parser.yy"
     9106    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    80499107    break;
    80509108
    80519109  case 744:
    8052 #line 2829 "parser.yy" /* yacc.c:1646  */
    8053     { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    8054 #line 8055 "Parser/parser.cc" /* yacc.c:1646  */
     9110
     9111/* Line 1806 of yacc.c  */
     9112#line 2832 "parser.yy"
     9113    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    80559114    break;
    80569115
    80579116  case 745:
    8058 #line 2836 "parser.yy" /* yacc.c:1646  */
    8059     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8060 #line 8061 "Parser/parser.cc" /* yacc.c:1646  */
     9117
     9118/* Line 1806 of yacc.c  */
     9119#line 2839 "parser.yy"
     9120    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    80619121    break;
    80629122
    80639123  case 746:
    8064 #line 2838 "parser.yy" /* yacc.c:1646  */
    8065     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8066 #line 8067 "Parser/parser.cc" /* yacc.c:1646  */
     9124
     9125/* Line 1806 of yacc.c  */
     9126#line 2841 "parser.yy"
     9127    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    80679128    break;
    80689129
    80699130  case 747:
    8070 #line 2840 "parser.yy" /* yacc.c:1646  */
    8071     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    8072 #line 8073 "Parser/parser.cc" /* yacc.c:1646  */
     9131
     9132/* Line 1806 of yacc.c  */
     9133#line 2843 "parser.yy"
     9134    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    80739135    break;
    80749136
    80759137  case 748:
    8076 #line 2842 "parser.yy" /* yacc.c:1646  */
    8077     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8078 #line 8079 "Parser/parser.cc" /* yacc.c:1646  */
     9138
     9139/* Line 1806 of yacc.c  */
     9140#line 2845 "parser.yy"
     9141    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    80799142    break;
    80809143
    80819144  case 749:
    8082 #line 2844 "parser.yy" /* yacc.c:1646  */
    8083     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8084 #line 8085 "Parser/parser.cc" /* yacc.c:1646  */
     9145
     9146/* Line 1806 of yacc.c  */
     9147#line 2847 "parser.yy"
     9148    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    80859149    break;
    80869150
    80879151  case 750:
    8088 #line 2846 "parser.yy" /* yacc.c:1646  */
    8089     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    8090 #line 8091 "Parser/parser.cc" /* yacc.c:1646  */
     9152
     9153/* Line 1806 of yacc.c  */
     9154#line 2849 "parser.yy"
     9155    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    80919156    break;
    80929157
    80939158  case 751:
    8094 #line 2851 "parser.yy" /* yacc.c:1646  */
    8095     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
    8096 #line 8097 "Parser/parser.cc" /* yacc.c:1646  */
     9159
     9160/* Line 1806 of yacc.c  */
     9161#line 2854 "parser.yy"
     9162    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    80979163    break;
    80989164
    80999165  case 752:
    8100 #line 2858 "parser.yy" /* yacc.c:1646  */
    8101     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[-5].decl), (yyvsp[-2].decl), nullptr ); }
    8102 #line 8103 "Parser/parser.cc" /* yacc.c:1646  */
     9166
     9167/* Line 1806 of yacc.c  */
     9168#line 2861 "parser.yy"
     9169    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    81039170    break;
    81049171
    81059172  case 753:
    8106 #line 2860 "parser.yy" /* yacc.c:1646  */
    8107     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[-5].decl), (yyvsp[-2].decl), nullptr ); }
    8108 #line 8109 "Parser/parser.cc" /* yacc.c:1646  */
     9173
     9174/* Line 1806 of yacc.c  */
     9175#line 2863 "parser.yy"
     9176    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    81099177    break;
    81109178
    81119179  case 756:
    8112 #line 2884 "parser.yy" /* yacc.c:1646  */
    8113     { (yyval.en) = 0; }
    8114 #line 8115 "Parser/parser.cc" /* yacc.c:1646  */
     9180
     9181/* Line 1806 of yacc.c  */
     9182#line 2887 "parser.yy"
     9183    { (yyval.en) = nullptr; }
    81159184    break;
    81169185
    81179186  case 757:
    8118 #line 2886 "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  */
     9187
     9188/* Line 1806 of yacc.c  */
     9189#line 2889 "parser.yy"
     9190    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     9191    break;
     9192
     9193
     9194
     9195/* Line 1806 of yacc.c  */
     9196#line 9197 "Parser/parser.cc"
    81259197      default: break;
    81269198    }
     
    81449216  *++yyvsp = yyval;
    81459217
    8146   /* Now 'shift' the result of the reduction.  Determine what state
     9218  /* Now `shift' the result of the reduction.  Determine what state
    81479219     that goes to, based on the state we popped back to and the rule
    81489220     number reduced by.  */
     
    81599231
    81609232
    8161 /*--------------------------------------.
    8162 | yyerrlab -- here on detecting error. |
    8163 `--------------------------------------*/
     9233/*------------------------------------.
     9234| yyerrlab -- here on detecting error |
     9235`------------------------------------*/
    81649236yyerrlab:
    81659237  /* Make sure we have latest lookahead translation.  See comments at
     
    82129284    {
    82139285      /* If just tried and failed to reuse lookahead token after an
    8214         error, discard it.  */
     9286        error, discard it.  */
    82159287
    82169288      if (yychar <= YYEOF)
    8217         {
    8218           /* Return failure if at end of input.  */
    8219           if (yychar == YYEOF)
    8220             YYABORT;
    8221         }
     9289        {
     9290          /* Return failure if at end of input.  */
     9291          if (yychar == YYEOF)
     9292            YYABORT;
     9293        }
    82229294      else
    8223         {
    8224           yydestruct ("Error: discarding",
    8225                       yytoken, &yylval);
    8226           yychar = YYEMPTY;
    8227         }
     9295        {
     9296          yydestruct ("Error: discarding",
     9297                      yytoken, &yylval);
     9298          yychar = YYEMPTY;
     9299        }
    82289300    }
    82299301
     
    82449316     goto yyerrorlab;
    82459317
    8246   /* Do not reclaim the symbols of the rule whose action triggered
     9318  /* Do not reclaim the symbols of the rule which action triggered
    82479319     this YYERROR.  */
    82489320  YYPOPSTACK (yylen);
     
    82579329`-------------------------------------------------------------*/
    82589330yyerrlab1:
    8259   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
     9331  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
    82609332
    82619333  for (;;)
     
    82639335      yyn = yypact[yystate];
    82649336      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         }
     9337        {
     9338          yyn += YYTERROR;
     9339          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
     9340            {
     9341              yyn = yytable[yyn];
     9342              if (0 < yyn)
     9343                break;
     9344            }
     9345        }
    82749346
    82759347      /* Pop the current state because it cannot handle the error token.  */
    82769348      if (yyssp == yyss)
    8277         YYABORT;
     9349        YYABORT;
    82789350
    82799351
    82809352      yydestruct ("Error: popping",
    8281                   yystos[yystate], yyvsp);
     9353                  yystos[yystate], yyvsp);
    82829354      YYPOPSTACK (1);
    82839355      yystate = *yyssp;
     
    82859357    }
    82869358
    8287   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    82889359  *++yyvsp = yylval;
    8289   YY_IGNORE_MAYBE_UNINITIALIZED_END
    82909360
    82919361
     
    83119381  goto yyreturn;
    83129382
    8313 #if !defined yyoverflow || YYERROR_VERBOSE
     9383#if !defined(yyoverflow) || YYERROR_VERBOSE
    83149384/*-------------------------------------------------.
    83159385| yyexhaustedlab -- memory exhaustion comes here.  |
     
    83309400                  yytoken, &yylval);
    83319401    }
    8332   /* Do not reclaim the symbols of the rule whose action triggered
     9402  /* Do not reclaim the symbols of the rule which action triggered
    83339403     this YYABORT or YYACCEPT.  */
    83349404  YYPOPSTACK (yylen);
     
    83379407    {
    83389408      yydestruct ("Cleanup: popping",
    8339                   yystos[*yyssp], yyvsp);
     9409                  yystos[*yyssp], yyvsp);
    83409410      YYPOPSTACK (1);
    83419411    }
     
    83489418    YYSTACK_FREE (yymsg);
    83499419#endif
    8350   return yyresult;
     9420  /* Make sure YYID is used.  */
     9421  return YYID (yyresult);
    83519422}
    8352 #line 2889 "parser.yy" /* yacc.c:1906  */
     9423
     9424
     9425
     9426/* Line 2067 of yacc.c  */
     9427#line 2892 "parser.yy"
    83539428
    83549429// ----end of grammar----
     
    83699444// compile-command: "make install" //
    83709445// End: //
     9446
  • src/Parser/parser.h

    r2ee5426 r58dd019  
    1 /* A Bison parser, made by GNU Bison 3.0.2.  */
     1/* A Bison parser, made by GNU Bison 2.5.  */
    22
    33/* Bison interface 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.  */
    3232
    33 #ifndef YY_YY_PARSER_PARSER_H_INCLUDED
    34 # define YY_YY_PARSER_PARSER_H_INCLUDED
    35 /* Debug traces.  */
    36 #ifndef YYDEBUG
    37 # define YYDEBUG 1
    38 #endif
    39 #if YYDEBUG
    40 extern int yydebug;
    41 #endif
    42 
    43 /* Token type.  */
     33
     34/* Tokens.  */
    4435#ifndef YYTOKENTYPE
    4536# define YYTOKENTYPE
    46   enum yytokentype
    47   {
    48     TYPEDEF = 258,
    49     AUTO = 259,
    50     EXTERN = 260,
    51     REGISTER = 261,
    52     STATIC = 262,
    53     INLINE = 263,
    54     FORTRAN = 264,
    55     CONST = 265,
    56     VOLATILE = 266,
    57     RESTRICT = 267,
    58     FORALL = 268,
    59     LVALUE = 269,
    60     VOID = 270,
    61     CHAR = 271,
    62     SHORT = 272,
    63     INT = 273,
    64     LONG = 274,
    65     FLOAT = 275,
    66     DOUBLE = 276,
    67     SIGNED = 277,
    68     UNSIGNED = 278,
    69     ZERO_T = 279,
    70     ONE_T = 280,
    71     VALIST = 281,
    72     BOOL = 282,
    73     COMPLEX = 283,
    74     IMAGINARY = 284,
    75     TYPEOF = 285,
    76     LABEL = 286,
    77     ENUM = 287,
    78     STRUCT = 288,
    79     UNION = 289,
    80     OTYPE = 290,
    81     FTYPE = 291,
    82     DTYPE = 292,
    83     TRAIT = 293,
    84     SIZEOF = 294,
    85     OFFSETOF = 295,
    86     ATTRIBUTE = 296,
    87     EXTENSION = 297,
    88     IF = 298,
    89     ELSE = 299,
    90     SWITCH = 300,
    91     CASE = 301,
    92     DEFAULT = 302,
    93     DO = 303,
    94     WHILE = 304,
    95     FOR = 305,
    96     BREAK = 306,
    97     CONTINUE = 307,
    98     GOTO = 308,
    99     RETURN = 309,
    100     CHOOSE = 310,
    101     DISABLE = 311,
    102     ENABLE = 312,
    103     FALLTHRU = 313,
    104     TRY = 314,
    105     CATCH = 315,
    106     CATCHRESUME = 316,
    107     FINALLY = 317,
    108     THROW = 318,
    109     THROWRESUME = 319,
    110     AT = 320,
    111     ASM = 321,
    112     ALIGNAS = 322,
    113     ALIGNOF = 323,
    114     ATOMIC = 324,
    115     GENERIC = 325,
    116     NORETURN = 326,
    117     STATICASSERT = 327,
    118     THREADLOCAL = 328,
    119     IDENTIFIER = 329,
    120     QUOTED_IDENTIFIER = 330,
    121     TYPEDEFname = 331,
    122     TYPEGENname = 332,
    123     ATTR_IDENTIFIER = 333,
    124     ATTR_TYPEDEFname = 334,
    125     ATTR_TYPEGENname = 335,
    126     INTEGERconstant = 336,
    127     CHARACTERconstant = 337,
    128     STRINGliteral = 338,
    129     REALDECIMALconstant = 339,
    130     REALFRACTIONconstant = 340,
    131     FLOATINGconstant = 341,
    132     ZERO = 342,
    133     ONE = 343,
    134     ARROW = 344,
    135     ICR = 345,
    136     DECR = 346,
    137     LS = 347,
    138     RS = 348,
    139     LE = 349,
    140     GE = 350,
    141     EQ = 351,
    142     NE = 352,
    143     ANDAND = 353,
    144     OROR = 354,
    145     ELLIPSIS = 355,
    146     MULTassign = 356,
    147     DIVassign = 357,
    148     MODassign = 358,
    149     PLUSassign = 359,
    150     MINUSassign = 360,
    151     LSassign = 361,
    152     RSassign = 362,
    153     ANDassign = 363,
    154     ERassign = 364,
    155     ORassign = 365,
    156     ATassign = 366,
    157     THEN = 367
    158   };
     37   /* Put the tokens into the symbol table, so that GDB and other debuggers
     38      know about them.  */
     39   enum yytokentype {
     40     TYPEDEF = 258,
     41     AUTO = 259,
     42     EXTERN = 260,
     43     REGISTER = 261,
     44     STATIC = 262,
     45     INLINE = 263,
     46     FORTRAN = 264,
     47     CONST = 265,
     48     VOLATILE = 266,
     49     RESTRICT = 267,
     50     FORALL = 268,
     51     LVALUE = 269,
     52     VOID = 270,
     53     CHAR = 271,
     54     SHORT = 272,
     55     INT = 273,
     56     LONG = 274,
     57     FLOAT = 275,
     58     DOUBLE = 276,
     59     SIGNED = 277,
     60     UNSIGNED = 278,
     61     ZERO_T = 279,
     62     ONE_T = 280,
     63     VALIST = 281,
     64     BOOL = 282,
     65     COMPLEX = 283,
     66     IMAGINARY = 284,
     67     TYPEOF = 285,
     68     LABEL = 286,
     69     ENUM = 287,
     70     STRUCT = 288,
     71     UNION = 289,
     72     OTYPE = 290,
     73     FTYPE = 291,
     74     DTYPE = 292,
     75     TRAIT = 293,
     76     SIZEOF = 294,
     77     OFFSETOF = 295,
     78     ATTRIBUTE = 296,
     79     EXTENSION = 297,
     80     IF = 298,
     81     ELSE = 299,
     82     SWITCH = 300,
     83     CASE = 301,
     84     DEFAULT = 302,
     85     DO = 303,
     86     WHILE = 304,
     87     FOR = 305,
     88     BREAK = 306,
     89     CONTINUE = 307,
     90     GOTO = 308,
     91     RETURN = 309,
     92     CHOOSE = 310,
     93     DISABLE = 311,
     94     ENABLE = 312,
     95     FALLTHRU = 313,
     96     TRY = 314,
     97     CATCH = 315,
     98     CATCHRESUME = 316,
     99     FINALLY = 317,
     100     THROW = 318,
     101     THROWRESUME = 319,
     102     AT = 320,
     103     ASM = 321,
     104     ALIGNAS = 322,
     105     ALIGNOF = 323,
     106     ATOMIC = 324,
     107     GENERIC = 325,
     108     NORETURN = 326,
     109     STATICASSERT = 327,
     110     THREADLOCAL = 328,
     111     IDENTIFIER = 329,
     112     QUOTED_IDENTIFIER = 330,
     113     TYPEDEFname = 331,
     114     TYPEGENname = 332,
     115     ATTR_IDENTIFIER = 333,
     116     ATTR_TYPEDEFname = 334,
     117     ATTR_TYPEGENname = 335,
     118     INTEGERconstant = 336,
     119     CHARACTERconstant = 337,
     120     STRINGliteral = 338,
     121     REALDECIMALconstant = 339,
     122     REALFRACTIONconstant = 340,
     123     FLOATINGconstant = 341,
     124     ZERO = 342,
     125     ONE = 343,
     126     ARROW = 344,
     127     ICR = 345,
     128     DECR = 346,
     129     LS = 347,
     130     RS = 348,
     131     LE = 349,
     132     GE = 350,
     133     EQ = 351,
     134     NE = 352,
     135     ANDAND = 353,
     136     OROR = 354,
     137     ELLIPSIS = 355,
     138     MULTassign = 356,
     139     DIVassign = 357,
     140     MODassign = 358,
     141     PLUSassign = 359,
     142     MINUSassign = 360,
     143     LSassign = 361,
     144     RSassign = 362,
     145     ANDassign = 363,
     146     ERassign = 364,
     147     ORassign = 365,
     148     ATassign = 366,
     149     THEN = 367
     150   };
    159151#endif
    160152/* Tokens.  */
     
    270262#define THEN 367
    271263
    272 /* Value type.  */
     264
     265
     266
    273267#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    274 typedef union YYSTYPE YYSTYPE;
    275 union YYSTYPE
     268typedef union YYSTYPE
    276269{
    277 #line 120 "parser.yy" /* yacc.c:1909  */
     270
     271/* Line 2068 of yacc.c  */
     272#line 120 "parser.yy"
    278273
    279274        Token tok;
     
    292287        bool flag;
    293288
    294 #line 295 "Parser/parser.h" /* yacc.c:1909  */
    295 };
     289
     290
     291/* Line 2068 of yacc.c  */
     292#line 293 "Parser/parser.h"
     293} YYSTYPE;
    296294# define YYSTYPE_IS_TRIVIAL 1
     295# define yystype YYSTYPE /* obsolescent; will be withdrawn */
    297296# define YYSTYPE_IS_DECLARED 1
    298297#endif
    299298
    300 
    301299extern YYSTYPE yylval;
    302300
    303 int yyparse (void);
    304 
    305 #endif /* !YY_YY_PARSER_PARSER_H_INCLUDED  */
     301
  • src/Parser/parser.yy

    r2ee5426 r58dd019  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Nov 29 11:35:52 2016
    13 // Update Count     : 2069
     12// Last Modified On : Tue Dec 13 14:14:52 2016
     13// Update Count     : 2081
    1414//
    1515
     
    153153%type<fctl> for_control_expression
    154154%type<en> subrange
     155%type<constant> asm_name_opt
    155156%type<en> asm_operands_opt asm_operands_list asm_operand
    156157%type<label> label_list
     
    412413argument_expression:
    413414        // empty
    414                 { $$ = 0; }                                                                             // use default argument
     415                { $$ = nullptr; }                                                               // use default argument
    415416        | assignment_expression
    416417        ;
     
    684685comma_expression_opt:
    685686        // empty
    686                 { $$ = 0; }
     687                { $$ = nullptr; }
    687688        | comma_expression
    688689        ;
     
    818819switch_clause_list_opt:                                                                 // CFA
    819820        // empty
    820                 { $$ = 0; }
     821                { $$ = nullptr; }
    821822        | switch_clause_list
    822823        ;
     
    831832choose_clause_list_opt:                                                                 // CFA
    832833        // empty
    833                 { $$ = 0; }
     834                { $$ = nullptr; }
    834835        | choose_clause_list
    835836        ;
     
    854855fall_through:                                                                                   // CFA
    855856        FALLTHRU
    856                 { $$ = 0; }
     857                { $$ = nullptr; }
    857858        | FALLTHRU ';'
    858                 { $$ = 0; }
     859                { $$ = nullptr; }
    859860        ;
    860861
     
    990991asm_operands_opt:                                                                               // GCC
    991992        // empty
    992                 { $$ = 0; }                                                                             // use default argument
     993                { $$ = nullptr; }                                                               // use default argument
    993994        | asm_operands_list
    994995        ;
     
    10091010asm_clobbers_list_opt:                                                                  // GCC
    10101011        // empty
    1011                 { $$ = 0; }                                                                             // use default argument
     1012                { $$ = nullptr; }                                                               // use default argument
    10121013        | string_literal
    10131014                { $$ = new ExpressionNode( $1 ); }
     
    10331034declaration_list_opt:                                                                   // used at beginning of switch statement
    10341035        pop
    1035                 { $$ = 0; }
     1036                { $$ = nullptr; }
    10361037        | declaration_list
    10371038        ;
     
    10451046old_declaration_list_opt:                                                               // used to declare parameter types in K&R style functions
    10461047        pop
    1047                 { $$ = 0; }
     1048                { $$ = nullptr; }
    10481049        | old_declaration_list
    10491050        ;
     
    11201121                {
    11211122                        typedefTable.setNextIdentifier( *$2 );
    1122                         $$ = $1->addName( $2 );
     1123                        $$ = $1->addName( $2 )->addAsmName( $3 );
    11231124                }
    11241125        | new_abstract_tuple identifier_or_type_name asm_name_opt
    11251126                {
    11261127                        typedefTable.setNextIdentifier( *$2 );
    1127                         $$ = $1->addName( $2 );
     1128                        $$ = $1->addName( $2 )->addAsmName( $3 );
    11281129                }
    11291130        | type_qualifier_list new_abstract_tuple identifier_or_type_name asm_name_opt
    11301131                {
    11311132                        typedefTable.setNextIdentifier( *$3 );
    1132                         $$ = $2->addQualifiers( $1 )->addName( $3 );
     1133                        $$ = $2->addQualifiers( $1 )->addName( $3 )->addAsmName( $4 );
    11331134                }
    11341135        ;
     
    12811282                {
    12821283                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1283                         $$ = ( $2->addType( $1 ))->addInitializer( $4 );
     1284                        $$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
    12841285                }
    12851286        | declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
    12861287                {
    12871288                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1288                         $$ = $1->appendList( $1->cloneBaseType( $4->addInitializer( $6 ) ) );
     1289                        $$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
    12891290                }
    12901291        ;
     
    13061307type_qualifier_list_opt:                                                                // GCC, used in asm_statement
    13071308        // empty
    1308                 { $$ = 0; }
     1309                { $$ = nullptr; }
    13091310        | type_qualifier_list
    13101311        ;
     
    15321533field_declaration_list:
    15331534        // empty
    1534                 { $$ = 0; }
     1535                { $$ = nullptr; }
    15351536        | field_declaration_list field_declaration
    15361537                { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
     
    15831584bit_subrange_size_opt:
    15841585        // empty
    1585                 { $$ = 0; }
     1586                { $$ = nullptr; }
    15861587        | bit_subrange_size
    15871588                { $$ = $1; }
     
    16201621enumerator_value_opt:
    16211622        // empty
    1622                 { $$ = 0; }
     1623                { $$ = nullptr; }
    16231624        | '=' constant_expression
    16241625                { $$ = $2; }
     
    16291630new_parameter_type_list_opt:                                                    // CFA
    16301631        // empty
    1631                 { $$ = 0; }
     1632                { $$ = nullptr; }
    16321633        | new_parameter_type_list
    16331634        ;
     
    16641665parameter_type_list_opt:
    16651666        // empty
    1666                 { $$ = 0; }
     1667                { $$ = nullptr; }
    16671668        | parameter_type_list
    16681669        ;
     
    17731774initializer_opt:
    17741775        // empty
    1775                 { $$ = 0; }
     1776                { $$ = nullptr; }
    17761777        | '=' initializer
    17771778                { $$ = $2; }
     
    17871788initializer_list:
    17881789        // empty
    1789                 { $$ = 0; }
     1790                { $$ = nullptr; }
    17901791        | initializer
    17911792        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
     
    18981899assertion_list_opt:                                                                             // CFA
    18991900        // empty
    1900                 { $$ = 0; }
     1901                { $$ = nullptr; }
    19011902        | assertion_list_opt assertion
    19021903                { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
     
    19121913                { $$ = $4; }
    19131914        | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
    1914                 { $$ = 0; }
     1915                { $$ = nullptr; }
    19151916        ;
    19161917
     
    20322033external_definition_list_opt:
    20332034        // empty
    2034                 { $$ = 0; }
     2035                { $$ = nullptr; }
    20352036        | external_definition_list
    20362037        ;
     
    21552156asm_name_opt:                                                                                   // GCC
    21562157        // empty
    2157         | ASM '(' string_literal_list ')' attribute_list_opt { delete $3; }     // FIX ME: unimplemented
     2158                { $$ = nullptr; }
     2159        | ASM '(' string_literal ')' attribute_list_opt
     2160                { $$ = $3; }
    21582161        ;
    21592162
    21602163attribute_list_opt:                                                                             // GCC
    21612164        // empty
    2162                 { $$ = 0; }
     2165                { $$ = nullptr; }
    21632166        | attribute_list
    21642167        ;
     
    21732176        ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
    21742177        //              { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    2175                 { $$ = 0; }
     2178                { $$ = nullptr; }
    21762179        ;
    21772180
     
    28822885assignment_opt:
    28832886        // empty
    2884                 { $$ = 0; }
     2887                { $$ = nullptr; }
    28852888        | '=' assignment_expression
    28862889                { $$ = $2; }
  • src/SynTree/Declaration.h

    r2ee5426 r58dd019  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 18 23:50:24 2016
    13 // Update Count     : 40
     12// Last Modified On : Tue Dec 13 13:37:33 2016
     13// Update Count     : 49
    1414//
    1515
     
    6969
    7070        std::string get_mangleName() const { return mangleName; }
    71         void set_mangleName( std::string newValue ) { mangleName = newValue; }
     71        DeclarationWithType * set_mangleName( std::string newValue ) { mangleName = newValue; return this; }
    7272
    7373        std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
    7474
    7575        int get_scopeLevel() const { return scopeLevel; }
    76         void set_scopeLevel( int newValue ) { scopeLevel = newValue; }
     76        DeclarationWithType * set_scopeLevel( int newValue ) { scopeLevel = newValue; return this; }
     77
     78        ConstantExpr *get_asmName() const { return asmName; }
     79        DeclarationWithType * set_asmName( ConstantExpr *newValue ) { asmName = newValue; return this; }
    7780
    7881        std::list< Attribute * >& get_attributes() { return attributes; }
     
    8790        // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
    8891        std::string mangleName;
    89         // need to remember the scope level at which the variable was declared, so that
    90         // shadowed identifiers can be accessed
     92        // need to remember the scope level at which the variable was declared, so that shadowed identifiers can be accessed
    9193        int scopeLevel = 0;
    9294
     95        ConstantExpr *asmName;
    9396        std::list< Attribute * > attributes;
    9497};
     
    106109        Initializer *get_init() const { return init; }
    107110        void set_init( Initializer *newValue ) { init = newValue; }
     111
    108112        Expression *get_bitfieldWidth() const { return bitfieldWidth; }
    109113        void set_bitfieldWidth( Expression *newValue ) { bitfieldWidth = newValue; }
  • src/SynTree/DeclarationWithType.cc

    r2ee5426 r58dd019  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 18 23:50:41 2016
    13 // Update Count     : 4
     12// Last Modified On : Tue Dec 13 14:49:43 2016
     13// Update Count     : 7
    1414//
    1515
     
    2020
    2121DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes )
    22                 : Declaration( name, sc, linkage ), attributes( attributes ) {
     22        : Declaration( name, sc, linkage ), asmName( nullptr ), attributes( attributes ) {
    2323}
    2424
     
    2626                : Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ) {
    2727        cloneAll( other.attributes, attributes );
     28        asmName = maybeClone( other.asmName );
    2829}
    2930
    3031DeclarationWithType::~DeclarationWithType() {
    3132        deleteAll( attributes );
     33        delete asmName;
    3234}
    3335
  • src/tests/.expect/32/gccExtensions.txt

    r2ee5426 r58dd019  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    7 extern int __x__i_1;
     7extern int __x__i_1 asm ( "xx" );
    88int main(int __argc__i_1, const char **__argv__PPCc_1){
    99    asm ( "nop" :  :  :  );
    1010    asm ( "nop" :  :  :  );
    1111    asm ( "nop" :  :  :  );
    12     static int __y__i_2;
    13     static int *__z__Pi_2;
     12    static int __y__i_2 asm ( "yy" );
     13    static int *__z__Pi_2 asm ( "zz" );
    1414    int __src__i_2;
    1515    int __dst__i_2;
  • src/tests/.expect/64/gccExtensions.txt

    r2ee5426 r58dd019  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
    7 extern int __x__i_1;
     7extern int __x__i_1 asm ( "xx" );
    88int main(int __argc__i_1, const char **__argv__PPCc_1){
    99    asm ( "nop" :  :  :  );
    1010    asm ( "nop" :  :  :  );
    1111    asm ( "nop" :  :  :  );
    12     static int __y__i_2;
    13     static int *__z__Pi_2;
     12    static int __y__i_2 asm ( "yy" );
     13    static int *__z__Pi_2 asm ( "zz" );
    1414    int __src__i_2;
    1515    int __dst__i_2;
Note: See TracChangeset for help on using the changeset viewer.