Changeset 58dd019


Ignore:
Timestamp:
Dec 13, 2016, 3:14:59 PM (5 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, 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