Changeset 04cdd9b for src


Ignore:
Timestamp:
Aug 19, 2016, 2:42:04 PM (9 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
e85a8631
Parents:
03da511 (diff), ac71a86 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into ctor

Location:
src
Files:
6 added
7 deleted
66 edited

Legend:

Unmodified
Added
Removed
  • src/Common/CompilerError.h

    r03da511 r04cdd9b  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:20:37 2015
    13 // Update Count     : 2
     12// Last Modified On : Thu Aug 18 23:41:30 2016
     13// Update Count     : 3
    1414//
    1515
     
    1818
    1919#include <string>
    20 //#include "../config.h"
    2120
    2221class CompilerError : public std::exception {
  • src/Common/module.mk

    r03da511 r04cdd9b  
    1111## Created On       : Mon Jun  1 17:49:17 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jun  1 17:51:23 2015
    14 ## Update Count     : 1
     13## Last Modified On : Thu Aug 18 13:29:04 2016
     14## Update Count     : 2
    1515###############################################################################
    1616
    1717SRC += Common/SemanticError.cc \
    18        Common/UniqueName.cc
     18       Common/UniqueName.cc \
     19       Common/Assert.cc
  • src/Common/utility.h

    r03da511 r04cdd9b  
    4949}
    5050
     51template< typename T, typename U >
     52static inline T * maybeMoveBuild( const U *orig ) {
     53        T* ret = maybeBuild<T>(orig);
     54        delete orig;
     55        return ret;
     56}
     57
     58
    5159template< typename Input_iterator >
    5260void printEnums( Input_iterator begin, Input_iterator end, const char * const *name_array, std::ostream &os ) {
  • src/GenPoly/Box.cc

    r03da511 r04cdd9b  
    104104                        Type *replaceWithConcrete( ApplicationExpr *appExpr, Type *type, bool doClone = true );
    105105                        /// wraps a function application returning a polymorphic type with a new temporary for the out-parameter return value
    106                         Expression *addPolyRetParam( ApplicationExpr *appExpr, FunctionType *function, ReferenceToType *polyType, std::list< Expression *>::iterator &arg );
     106                        Expression *addDynRetParam( ApplicationExpr *appExpr, FunctionType *function, ReferenceToType *polyType, std::list< Expression *>::iterator &arg );
    107107                        Expression *applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars );
    108108                        void boxParam( Type *formal, Expression *&arg, const TyVarMap &exprTyVars );
     
    661661                                // process polymorphic return value
    662662                                retval = 0;
    663                                 if ( isPolyRet( functionDecl->get_functionType() ) && functionDecl->get_linkage() == LinkageSpec::Cforall ) {
     663                                if ( isDynRet( functionDecl->get_functionType() ) && functionDecl->get_linkage() == LinkageSpec::Cforall ) {
    664664                                        retval = functionDecl->get_functionType()->get_returnVals().front();
    665665
     
    868868                }
    869869
    870                 Expression *Pass1::addPolyRetParam( ApplicationExpr *appExpr, FunctionType *function, ReferenceToType *polyType, std::list< Expression *>::iterator &arg ) {
     870                Expression *Pass1::addDynRetParam( ApplicationExpr *appExpr, FunctionType *function, ReferenceToType *dynType, std::list< Expression *>::iterator &arg ) {
    871871                        assert( env );
    872                         Type *concrete = replaceWithConcrete( appExpr, polyType );
     872                        Type *concrete = replaceWithConcrete( appExpr, dynType );
    873873                        // add out-parameter for return value
    874874                        return addRetParam( appExpr, function, concrete, arg );
     
    877877                Expression *Pass1::applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars ) {
    878878                        Expression *ret = appExpr;
    879                         if ( ! function->get_returnVals().empty() && isPolyType( function->get_returnVals().front()->get_type(), tyVars ) ) {
     879//                      if ( ! function->get_returnVals().empty() && isPolyType( function->get_returnVals().front()->get_type(), tyVars ) ) {
     880                        if ( isDynRet( function, tyVars ) ) {
    880881                                ret = addRetParam( appExpr, function, function->get_returnVals().front()->get_type(), arg );
    881882                        } // if
     
    968969                        // actually make the adapter type
    969970                        FunctionType *adapter = adaptee->clone();
    970                         if ( ! adapter->get_returnVals().empty() && isPolyType( adapter->get_returnVals().front()->get_type(), tyVars ) ) {
     971//                      if ( ! adapter->get_returnVals().empty() && isPolyType( adapter->get_returnVals().front()->get_type(), tyVars ) ) {
     972                        if ( isDynRet( adapter, tyVars ) ) {
    971973                                makeRetParm( adapter );
    972974                        } // if
     
    10301032                                addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
    10311033                                bodyStmt = new ExprStmt( noLabels, adapteeApp );
    1032                         } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
     1034//                      } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
     1035                        } else if ( isDynType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
    10331036                                // return type T
    10341037                                if ( (*param)->get_name() == "" ) {
     
    12771280                        TyVarMap exprTyVars( (TypeDecl::Kind)-1 );
    12781281                        makeTyVarMap( function, exprTyVars );
    1279                         ReferenceToType *polyRetType = isPolyRet( function );
    1280 
    1281                         if ( polyRetType ) {
    1282                                 ret = addPolyRetParam( appExpr, function, polyRetType, arg );
     1282                        ReferenceToType *dynRetType = isDynRet( function, exprTyVars );
     1283
     1284                        if ( dynRetType ) {
     1285                                ret = addDynRetParam( appExpr, function, dynRetType, arg );
    12831286                        } else if ( needsAdapter( function, scopeTyVars ) ) {
    12841287                                // std::cerr << "needs adapter: ";
     
    12901293                        arg = appExpr->get_args().begin();
    12911294
    1292                         passTypeVars( appExpr, polyRetType, arg, exprTyVars );
     1295                        passTypeVars( appExpr, dynRetType, arg, exprTyVars );
    12931296                        addInferredParams( appExpr, function, arg, exprTyVars );
    12941297
     
    15771580
    15781581                        // move polymorphic return type to parameter list
    1579                         if ( isPolyRet( funcType ) ) {
     1582                        if ( isDynRet( funcType ) ) {
    15801583                                DeclarationWithType *ret = funcType->get_returnVals().front();
    15811584                                ret->set_type( new PointerType( Type::Qualifiers(), ret->get_type() ) );
  • src/GenPoly/GenPoly.cc

    r03da511 r04cdd9b  
    2323
    2424namespace GenPoly {
    25         bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVars ) {
    26                 if ( ! adaptee->get_returnVals().empty() && isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
    27                         return true;
    28                 } // if
    29                 for ( std::list< DeclarationWithType* >::const_iterator innerArg = adaptee->get_parameters().begin(); innerArg != adaptee->get_parameters().end(); ++innerArg ) {
    30                         if ( isPolyType( (*innerArg)->get_type(), tyVars ) ) {
    31                                 return true;
    32                         } // if
    33                 } // for
    34                 return false;
    35         }
    36 
    37         ReferenceToType *isPolyRet( FunctionType *function ) {
    38                 if ( ! function->get_returnVals().empty() ) {
    39                         TyVarMap forallTypes( (TypeDecl::Kind)-1 );
    40                         makeTyVarMap( function, forallTypes );
    41                         return (ReferenceToType*)isPolyType( function->get_returnVals().front()->get_type(), forallTypes );
    42                 } // if
    43                 return 0;
    44         }
    45 
    4625        namespace {
    4726                /// Checks a parameter list for polymorphic parameters; will substitute according to env if present
     
    6443                        return false;
    6544                }
     45
     46                /// Checks a parameter list for dynamic-layout parameters from tyVars; will substitute according to env if present
     47                bool hasDynParams( std::list< Expression* >& params, const TyVarMap &tyVars, const TypeSubstitution *env ) {
     48                        for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) {
     49                                TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
     50                                assert(paramType && "Aggregate parameters should be type expressions");
     51                                if ( isDynType( paramType->get_type(), tyVars, env ) ) return true;
     52                        }
     53                        return false;
     54                }
    6655        }
    6756
     
    10190                }
    10291                return 0;
     92        }
     93
     94        Type *isDynType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
     95                type = replaceTypeInst( type, env );
     96
     97                if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( type ) ) {
     98                        auto var = tyVars.find( typeInst->get_name() );
     99                        if ( var != tyVars.end() && var->second == TypeDecl::Any ) {
     100                                return type;
     101                        }
     102                } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
     103                        if ( hasDynParams( structType->get_parameters(), tyVars, env ) ) return type;
     104                } else if ( UnionInstType *unionType = dynamic_cast< UnionInstType* >( type ) ) {
     105                        if ( hasDynParams( unionType->get_parameters(), tyVars, env ) ) return type;
     106                }
     107                return 0;
     108        }
     109
     110        ReferenceToType *isDynRet( FunctionType *function, const TyVarMap &forallTypes ) {
     111                if ( function->get_returnVals().empty() ) return 0;
     112               
     113                return (ReferenceToType*)isDynType( function->get_returnVals().front()->get_type(), forallTypes );
     114        }
     115
     116        ReferenceToType *isDynRet( FunctionType *function ) {
     117                if ( function->get_returnVals().empty() ) return 0;
     118
     119                TyVarMap forallTypes( (TypeDecl::Kind)-1 );
     120                makeTyVarMap( function, forallTypes );
     121                return (ReferenceToType*)isDynType( function->get_returnVals().front()->get_type(), forallTypes );
     122        }
     123
     124        bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVars ) {
     125//              if ( ! adaptee->get_returnVals().empty() && isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
     126//                      return true;
     127//              } // if
     128                if ( isDynRet( adaptee, tyVars ) ) return true;
     129               
     130                for ( std::list< DeclarationWithType* >::const_iterator innerArg = adaptee->get_parameters().begin(); innerArg != adaptee->get_parameters().end(); ++innerArg ) {
     131//                      if ( isPolyType( (*innerArg)->get_type(), tyVars ) ) {
     132                        if ( isDynType( (*innerArg)->get_type(), tyVars ) ) {
     133                                return true;
     134                        } // if
     135                } // for
     136                return false;
    103137        }
    104138
  • src/GenPoly/GenPoly.h

    r03da511 r04cdd9b  
    3131namespace GenPoly {
    3232        typedef ErasableScopedMap< std::string, TypeDecl::Kind > TyVarMap;
    33        
    34         /// A function needs an adapter if it returns a polymorphic value or if any of its
    35         /// parameters have polymorphic type
    36         bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVarr );
    37 
    38         /// true iff function has polymorphic return type
    39         ReferenceToType *isPolyRet( FunctionType *function );
    4033
    4134        /// Replaces a TypeInstType by its referrent in the environment, if applicable
     
    4740        /// returns polymorphic type if is polymorphic type in tyVars, NULL otherwise; will look up substitution in env if provided
    4841        Type *isPolyType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env = 0 );
     42
     43        /// returns dynamic-layout type if is dynamic-layout type in tyVars, NULL otherwise; will look up substitution in env if provided
     44        Type *isDynType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env = 0 );
     45
     46        /// true iff function has dynamic-layout return type under the given type variable map
     47        ReferenceToType *isDynRet( FunctionType *function, const TyVarMap &tyVars );
     48
     49        /// true iff function has dynamic-layout return type under the type variable map generated from its forall-parameters
     50        ReferenceToType *isDynRet( FunctionType *function );
     51
     52        /// A function needs an adapter if it returns a dynamic-layout value or if any of its parameters have dynamic-layout type
     53        bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVarr );
    4954
    5055        /// returns polymorphic type if is pointer to polymorphic type, NULL otherwise; will look up substitution in env if provided
  • src/GenPoly/InstantiateGeneric.cc

    r03da511 r04cdd9b  
    2424#include "GenPoly.h"
    2525#include "ScopedMap.h"
     26#include "ScopedSet.h"
    2627
    2728#include "ResolvExpr/typeops.h"
     
    122123                }
    123124        };
     125
     126        /// Possible options for a given specialization of a generic type
     127        enum class genericType {
     128                dtypeStatic,  ///< Concrete instantiation based solely on {d,f}type-to-void conversions
     129                concrete,     ///< Concrete instantiation requiring at least one parameter type
     130                dynamic       ///< No concrete instantiation
     131        };
     132
     133        genericType& operator |= ( genericType& gt, const genericType& ht ) {
     134                switch ( gt ) {
     135                case genericType::dtypeStatic:
     136                        gt = ht;
     137                        break;
     138                case genericType::concrete:
     139                        if ( ht == genericType::dynamic ) { gt = genericType::dynamic; }
     140                        break;
     141                case genericType::dynamic:
     142                        // nothing possible
     143                        break;
     144                }
     145                return gt;
     146        }
    124147       
    125148        /// Mutator pass that replaces concrete instantiations of generic types with actual struct declarations, scoped appropriately
     
    127150                /// Map of (generic type, parameter list) pairs to concrete type instantiations
    128151                InstantiationMap< AggregateDecl, AggregateDecl > instantiations;
     152                /// Set of types which are dtype-only generic (and therefore have static layout)
     153                ScopedSet< AggregateDecl* > dtypeStatics;
    129154                /// Namer for concrete types
    130155                UniqueName typeNamer;
    131156
    132157        public:
    133                 GenericInstantiator() : DeclMutator(), instantiations(), typeNamer("_conc_") {}
     158                GenericInstantiator() : DeclMutator(), instantiations(), dtypeStatics(), typeNamer("_conc_") {}
    134159
    135160                virtual Type* mutate( StructInstType *inst );
     
    147172                /// Wrap instantiation insertion for unions
    148173                void insert( UnionInstType *inst, const std::list< TypeExpr* > &typeSubs, UnionDecl *decl ) { instantiations.insert( inst->get_baseUnion(), typeSubs, decl ); }
     174
     175                /// Strips a dtype-static aggregate decl of its type parameters, marks it as stripped
     176                void stripDtypeParams( AggregateDecl *base, std::list< TypeDecl* >& baseParams, const std::list< TypeExpr* >& typeSubs );
    149177        };
    150178
     
    154182        }
    155183
    156         //////////////////////////////////////// GenericInstantiator //////////////////////////////////////////////////
    157 
    158         /// Possible options for a given specialization of a generic type
    159         enum class genericType {
    160                 dtypeStatic,  ///< Concrete instantiation based solely on {d,f}type-to-void conversions
    161                 concrete,     ///< Concrete instantiation requiring at least one parameter type
    162                 dynamic       ///< No concrete instantiation
    163         };
    164 
    165         genericType& operator |= ( genericType& gt, const genericType& ht ) {
    166                 switch ( gt ) {
    167                 case genericType::dtypeStatic:
    168                         gt = ht;
    169                         break;
    170                 case genericType::concrete:
    171                         if ( ht == genericType::dynamic ) { gt = genericType::dynamic; }
    172                         break;
    173                 case genericType::dynamic:
    174                         // nothing possible
    175                         break;
    176                 }
    177                 return gt;
    178         }
    179 
    180         /// Makes substitutions of params into baseParams; returns true if all parameters substituted for a concrete type
     184        /// Makes substitutions of params into baseParams; returns dtypeStatic if there is a concrete instantiation based only on {d,f}type-to-void conversions,
     185        /// concrete if there is a concrete instantiation requiring at least one parameter type, and dynamic if there is no concrete instantiation
    181186        genericType makeSubstitutions( const std::list< TypeDecl* >& baseParams, const std::list< Expression* >& params, std::list< TypeExpr* >& out ) {
    182187                genericType gt = genericType::dtypeStatic;
     
    223228        }
    224229
     230        /// Substitutes types of members according to baseParams => typeSubs, working in-place
     231        void substituteMembers( std::list< Declaration* >& members, const std::list< TypeDecl* >& baseParams, const std::list< TypeExpr* >& typeSubs ) {
     232                // substitute types into new members
     233                TypeSubstitution subs( baseParams.begin(), baseParams.end(), typeSubs.begin() );
     234                for ( std::list< Declaration* >::iterator member = members.begin(); member != members.end(); ++member ) {
     235                        subs.apply(*member);
     236                }
     237        }
     238
     239        /// Strips the instances's type parameters
     240        void stripInstParams( ReferenceToType *inst ) {
     241                deleteAll( inst->get_parameters() );
     242                inst->get_parameters().clear();
     243        }
     244       
     245        void GenericInstantiator::stripDtypeParams( AggregateDecl *base, std::list< TypeDecl* >& baseParams, const std::list< TypeExpr* >& typeSubs ) {
     246                substituteMembers( base->get_members(), baseParams, typeSubs );
     247
     248                deleteAll( baseParams );
     249                baseParams.clear();
     250               
     251                dtypeStatics.insert( base );
     252        }
     253
    225254        Type* GenericInstantiator::mutate( StructInstType *inst ) {
    226255                // mutate subtypes
     
    231260                // exit early if no need for further mutation
    232261                if ( inst->get_parameters().empty() ) return inst;
     262
     263                // check for an already-instantiatiated dtype-static type
     264                if ( dtypeStatics.find( inst->get_baseStruct() ) != dtypeStatics.end() ) {
     265                        stripInstParams( inst );
     266                        return inst;
     267                }
     268               
     269                // check if type can be concretely instantiated; put substitutions into typeSubs
    233270                assert( inst->get_baseParameters() && "Base struct has parameters" );
    234 
    235                 // check if type can be concretely instantiated; put substitutions into typeSubs
    236271                std::list< TypeExpr* > typeSubs;
    237272                genericType gt = makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs );
    238273                switch ( gt ) {
    239                 case genericType::dtypeStatic: // TODO strip params off original decl and reuse here
    240                 case genericType::concrete:
    241                 {
     274                case genericType::dtypeStatic:
     275                        stripDtypeParams( inst->get_baseStruct(), *inst->get_baseParameters(), typeSubs );
     276                        stripInstParams( inst );
     277                        break;
     278               
     279                case genericType::concrete: {
    242280                        // make concrete instantiation of generic type
    243281                        StructDecl *concDecl = lookup( inst, typeSubs );
     
    274312                // exit early if no need for further mutation
    275313                if ( inst->get_parameters().empty() ) return inst;
     314
     315                // check for an already-instantiatiated dtype-static type
     316                if ( dtypeStatics.find( inst->get_baseUnion() ) != dtypeStatics.end() ) {
     317                        stripInstParams( inst );
     318                        return inst;
     319                }
     320
     321                // check if type can be concretely instantiated; put substitutions into typeSubs
    276322                assert( inst->get_baseParameters() && "Base union has parameters" );
    277 
    278                 // check if type can be concretely instantiated; put substitutions into typeSubs
    279323                std::list< TypeExpr* > typeSubs;
    280324                genericType gt = makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs );
    281325                switch ( gt ) {
    282                 case genericType::dtypeStatic:  // TODO strip params off original decls and reuse here
     326                case genericType::dtypeStatic:
     327                        stripDtypeParams( inst->get_baseUnion(), *inst->get_baseParameters(), typeSubs );
     328                        stripInstParams( inst );
     329                        break;
     330                       
    283331                case genericType::concrete:
    284332                {
     
    311359                DeclMutator::doBeginScope();
    312360                instantiations.beginScope();
     361                dtypeStatics.beginScope();
    313362        }
    314363
     
    316365                DeclMutator::doEndScope();
    317366                instantiations.endScope();
     367                dtypeStatics.endScope();
    318368        }
    319369
  • src/GenPoly/ScrubTyVars.cc

    r03da511 r04cdd9b  
    4545
    4646        Type * ScrubTyVars::mutateAggregateType( Type *ty ) {
    47                 if ( isPolyType( ty, tyVars ) ) {
     47                if ( shouldScrub( ty ) ) {
    4848                        PointerType *ret = new PointerType( Type::Qualifiers(), new VoidType( ty->get_qualifiers() ) );
    4949                        delete ty;
     
    6363        Expression * ScrubTyVars::mutate( SizeofExpr *szeof ) {
    6464                // sizeof( T ) => _sizeof_T parameter, which is the size of T
    65                 if ( Type *polyType = isPolyType( szeof->get_type() ) ) {
    66                         Expression *expr = new NameExpr( sizeofName( mangleType( polyType ) ) );
     65                if ( Type *dynType = shouldScrub( szeof->get_type() ) ) {
     66                        Expression *expr = new NameExpr( sizeofName( mangleType( dynType ) ) );
    6767                        return expr;
    6868                } else {
     
    7373        Expression * ScrubTyVars::mutate( AlignofExpr *algnof ) {
    7474                // alignof( T ) => _alignof_T parameter, which is the alignment of T
    75                 if ( Type *polyType = isPolyType( algnof->get_type() ) ) {
    76                         Expression *expr = new NameExpr( alignofName( mangleType( polyType ) ) );
     75                if ( Type *dynType = shouldScrub( algnof->get_type() ) ) {
     76                        Expression *expr = new NameExpr( alignofName( mangleType( dynType ) ) );
    7777                        return expr;
    7878                } else {
     
    8282
    8383        Type * ScrubTyVars::mutate( PointerType *pointer ) {
    84                 if ( Type *polyType = isPolyType( pointer->get_base(), tyVars ) ) {
    85                         Type *ret = polyType->acceptMutator( *this );
     84//              // special case of shouldScrub that takes all TypeInstType pointer bases, even if they're not dynamic
     85//              Type *base = pointer->get_base();
     86//              Type *dynType = 0;
     87//              if ( dynamicOnly ) {
     88//                      if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( base ) ) {
     89//                              if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) { dynType = typeInst; }
     90//                      } else {
     91//                              dynType = isDynType( base, tyVars );
     92//                      }
     93//              } else {
     94//                      dynType = isPolyType( base, tyVars );
     95//              }
     96//              if ( dynType ) {
     97                if ( Type *dynType = shouldScrub( pointer->get_base() ) ) {
     98                        Type *ret = dynType->acceptMutator( *this );
    8699                        ret->get_qualifiers() += pointer->get_qualifiers();
    87100                        pointer->set_base( 0 );
  • src/GenPoly/ScrubTyVars.h

    r03da511 r04cdd9b  
    2727        class ScrubTyVars : public Mutator {
    2828          public:
    29                 ScrubTyVars( const TyVarMap &tyVars ): tyVars( tyVars ) {}
     29                ScrubTyVars( const TyVarMap &tyVars, bool dynamicOnly = false ): tyVars( tyVars ), dynamicOnly( dynamicOnly ) {}
    3030
    3131                /// For all polymorphic types with type variables in `tyVars`, replaces generic types, dtypes, and ftypes with the appropriate void type,
     
    3333                template< typename SynTreeClass >
    3434                static SynTreeClass *scrub( SynTreeClass *target, const TyVarMap &tyVars );
     35
     36                /// For all dynamic-layout types with type variables in `tyVars`, replaces generic types, dtypes, and ftypes with the appropriate void type,
     37                /// and sizeof/alignof expressions with the proper variable
     38                template< typename SynTreeClass >
     39                static SynTreeClass *scrubDynamic( SynTreeClass *target, const TyVarMap &tyVars );
    3540
    3641                virtual Type* mutate( TypeInstType *typeInst );
     
    4247
    4348          private:
     49                /// Returns the type if it should be scrubbed, NULL otherwise.
     50                Type* shouldScrub( Type *ty ) {
     51                        return dynamicOnly ? isDynType( ty, tyVars ) : isPolyType( ty, tyVars );
     52//                      if ( ! dynamicOnly ) return isPolyType( ty, tyVars );
     53//
     54//                      if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( ty ) ) {
     55//                              return tyVars.find( typeInst->get_name() ) != tyVars.end() ? ty : 0;
     56//                      }
     57//
     58//                      return isDynType( ty, tyVars );
     59                }
     60               
    4461                /// Mutates (possibly generic) aggregate types appropriately
    4562                Type* mutateAggregateType( Type *ty );
    4663               
    47                 const TyVarMap &tyVars;
     64                const TyVarMap &tyVars;  ///< Type variables to scrub
     65                bool dynamicOnly;        ///< only scrub the types with dynamic layout? [false]
    4866        };
    4967
    50         /* static class method */
    5168        template< typename SynTreeClass >
    5269        SynTreeClass * ScrubTyVars::scrub( SynTreeClass *target, const TyVarMap &tyVars ) {
    5370                ScrubTyVars scrubber( tyVars );
     71                return static_cast< SynTreeClass * >( target->acceptMutator( scrubber ) );
     72        }
     73
     74        template< typename SynTreeClass >
     75        SynTreeClass * ScrubTyVars::scrubDynamic( SynTreeClass *target, const TyVarMap &tyVars ) {
     76                ScrubTyVars scrubber( tyVars, true );
    5477                return static_cast< SynTreeClass * >( target->acceptMutator( scrubber ) );
    5578        }
  • src/Makefile.am

    r03da511 r04cdd9b  
    1111## Created On       : Sun May 31 08:51:46 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Fri Jul  8 12:22:25 2016
    14 ## Update Count     : 60
     13## Last Modified On : Thu Aug 18 17:47:06 2016
     14## Update Count     : 70
    1515###############################################################################
    1616
     
    4242cfa_cpplib_PROGRAMS = driver/cfa-cpp
    4343driver_cfa_cpp_SOURCES = ${SRC}
    44 driver_cfa_cpp_LDADD = ${LEXLIB}        # yywrap
    45 # need files Common/utility.h
    46 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL
    47 
    48 AM_CXXFLAGS = -g -std=c++11
     44driver_cfa_cpp_LDADD = ${LEXLIB}                        # yywrap
     45driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include
    4946
    5047MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}}
  • src/Makefile.in

    r03da511 r04cdd9b  
    105105        Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
    106106        Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
     107        Common/driver_cfa_cpp-Assert.$(OBJEXT) \
    107108        ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) \
    108109        ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT) \
     
    137138        Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) \
    138139        Parser/driver_cfa_cpp-parseutility.$(OBJEXT) \
    139         Parser/driver_cfa_cpp-Parser.$(OBJEXT) \
    140140        ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT) \
    141141        ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT) \
     
    370370        CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
    371371        CodeGen/FixNames.cc CodeGen/OperatorTable.cc \
    372         Common/SemanticError.cc Common/UniqueName.cc \
     372        Common/SemanticError.cc Common/UniqueName.cc Common/Assert.cc \
    373373        ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
    374374        ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
     
    385385        Parser/ExpressionNode.cc Parser/StatementNode.cc \
    386386        Parser/InitializerNode.cc Parser/TypeData.cc \
    387         Parser/LinkageSpec.cc Parser/parseutility.cc Parser/Parser.cc \
     387        Parser/LinkageSpec.cc Parser/parseutility.cc \
    388388        ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \
    389389        ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \
     
    426426cfa_cpplibdir = ${libdir}
    427427driver_cfa_cpp_SOURCES = ${SRC}
    428 driver_cfa_cpp_LDADD = ${LEXLIB}        # yywrap
    429 # need files Common/utility.h
    430 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL
    431 AM_CXXFLAGS = -g -std=c++11
     428driver_cfa_cpp_LDADD = ${LEXLIB}                        # yywrap
     429driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include
    432430all: $(BUILT_SOURCES)
    433431        $(MAKE) $(AM_MAKEFLAGS) all-am
     
    528526        Common/$(DEPDIR)/$(am__dirstamp)
    529527Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
     528        Common/$(DEPDIR)/$(am__dirstamp)
     529Common/driver_cfa_cpp-Assert.$(OBJEXT): Common/$(am__dirstamp) \
    530530        Common/$(DEPDIR)/$(am__dirstamp)
    531531ControlStruct/$(am__dirstamp):
     
    632632        Parser/$(DEPDIR)/$(am__dirstamp)
    633633Parser/driver_cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \
    634         Parser/$(DEPDIR)/$(am__dirstamp)
    635 Parser/driver_cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \
    636634        Parser/$(DEPDIR)/$(am__dirstamp)
    637635ResolvExpr/$(am__dirstamp):
     
    817815        -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT)
    818816        -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT)
     817        -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT)
    819818        -rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT)
    820819        -rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT)
     
    845844        -rm -f Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT)
    846845        -rm -f Parser/driver_cfa_cpp-ParseNode.$(OBJEXT)
    847         -rm -f Parser/driver_cfa_cpp-Parser.$(OBJEXT)
    848846        -rm -f Parser/driver_cfa_cpp-StatementNode.$(OBJEXT)
    849847        -rm -f Parser/driver_cfa_cpp-TypeData.$(OBJEXT)
     
    927925@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@
    928926@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@
     927@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@
    929928@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@
    930929@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@
     
    955954@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po@am__quote@
    956955@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po@am__quote@
    957 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po@am__quote@
    958956@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po@am__quote@
    959957@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po@am__quote@
     
    11691167@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
    11701168
     1169Common/driver_cfa_cpp-Assert.o: Common/Assert.cc
     1170@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc
     1171@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po
     1172@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/Assert.cc' object='Common/driver_cfa_cpp-Assert.o' libtool=no @AMDEPBACKSLASH@
     1173@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1174@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc
     1175
     1176Common/driver_cfa_cpp-Assert.obj: Common/Assert.cc
     1177@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.obj `if test -f 'Common/Assert.cc'; then $(CYGPATH_W) 'Common/Assert.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Assert.cc'; fi`
     1178@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po
     1179@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/Assert.cc' object='Common/driver_cfa_cpp-Assert.obj' libtool=no @AMDEPBACKSLASH@
     1180@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1181@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Assert.obj `if test -f 'Common/Assert.cc'; then $(CYGPATH_W) 'Common/Assert.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Assert.cc'; fi`
     1182
    11711183ControlStruct/driver_cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc
    11721184@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
     
    16161628@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    16171629@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
    1618 
    1619 Parser/driver_cfa_cpp-Parser.o: Parser/Parser.cc
    1620 @am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
    1621 @am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
    1622 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.o' libtool=no @AMDEPBACKSLASH@
    1623 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1624 @am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
    1625 
    1626 Parser/driver_cfa_cpp-Parser.obj: Parser/Parser.cc
    1627 @am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
    1628 @am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
    1629 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.obj' libtool=no @AMDEPBACKSLASH@
    1630 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1631 @am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
    16321630
    16331631ResolvExpr/driver_cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc
  • src/Parser/DeclarationNode.cc

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 08:01:55 2016
    13 // Update Count     : 165
     12// Last Modified On : Thu Aug 18 23:48:23 2016
     13// Update Count     : 182
    1414//
    1515
     
    2525#include "SynTree/Expression.h"
    2626
    27 #include "Parser.h"
    2827#include "TypedefTable.h"
    2928extern TypedefTable typedefTable;
     
    4241UniqueName DeclarationNode::anonymous( "__anonymous" );
    4342
    44 extern LinkageSpec::Type linkage;                                               // defined in parser.yy
     43extern LinkageSpec::Spec linkage;                                               // defined in parser.yy
    4544
    4645DeclarationNode *DeclarationNode::clone() const {
     
    4847        newnode->type = maybeClone( type );
    4948        newnode->name = name;
    50         newnode->storageClasses = storageClasses;
    51 //PAB   newnode->bitfieldWidth = maybeClone( bitfieldWidth );
     49        newnode->storageClass = storageClass;
     50        newnode->isInline = isInline;
     51        newnode->isNoreturn = isNoreturn;
    5252        newnode->bitfieldWidth = bitfieldWidth;
    5353        newnode->hasEllipsis = hasEllipsis;
    5454        newnode->initializer = initializer;
    55         newnode->next = maybeClone( next );
     55        newnode->set_next( maybeClone( get_next() ) );
    5656        newnode->linkage = linkage;
    5757        return newnode;
    5858} // DeclarationNode::clone
    5959
    60 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
     60DeclarationNode::DeclarationNode()
     61        : type( 0 )
     62        , storageClass( NoStorageClass )
     63        , isInline( false )
     64        , isNoreturn( false )
     65        , bitfieldWidth( 0 )
     66        , initializer( 0 )
     67        , hasEllipsis( false )
     68        , linkage( ::linkage )
     69        , extension( false )
     70        , error() {
    6171}
    6272
     
    8393        } // if
    8494
    85         printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os );
     95        if(storageClass != NoStorageClass) os << DeclarationNode::storageName[storageClass] << ' ';
     96        if(isInline) os << DeclarationNode::storageName[Inline] << ' ';
     97        if(isNoreturn) os << DeclarationNode::storageName[Noreturn] << ' ';
    8698        if ( type ) {
    8799                type->print( os, indent );
     
    144156DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
    145157        DeclarationNode *newnode = new DeclarationNode;
    146         newnode->storageClasses.push_back( sc );
     158        switch (sc) {
     159                case Inline: newnode->isInline = true; break;
     160                case Noreturn: newnode->isNoreturn = true; break;
     161                default: newnode->storageClass = sc; break;
     162        }
    147163        return newnode;
    148164} // DeclarationNode::newStorageClass
     
    284300        newnode->type->array->dimension = size;
    285301        newnode->type->array->isStatic = isStatic;
    286         if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantNode *>( newnode->type->array->dimension ) ) {
     302        if ( newnode->type->array->dimension == 0 || newnode->type->array->dimension->isExpressionType<ConstantExpr *>() ) {
    287303                newnode->type->array->isVarLen = false;
    288304        } else {
     
    360376DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    361377        if ( q ) {
    362                 storageClasses.splice( storageClasses.end(), q->storageClasses );
     378                copyStorageClasses(q);
    363379                if ( q->type ) {
    364380                        if ( ! type ) {
     
    387403
    388404DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) {
    389         storageClasses = q->storageClasses;
     405        isInline = isInline || q->isInline;
     406        isNoreturn = isNoreturn || q->isNoreturn;
     407        if(storageClass == NoStorageClass) {
     408                storageClass = q->storageClass;
     409        }
     410        else if (q->storageClass != NoStorageClass) {
     411                q->error = "invalid combination of storage classes in declaration of ";
     412        }
     413        if(error.empty()) error = q->error;
    390414        return this;
    391415}
     
    447471DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) {
    448472        if ( o ) {
    449                 storageClasses.splice( storageClasses.end(), o->storageClasses );
     473                copyStorageClasses( o );
    450474                if ( o->type ) {
    451475                        if ( ! type ) {
     
    470494
    471495                // there may be typedefs chained onto the type
    472                 if ( o->get_link() ) {
    473                         set_link( o->get_link()->clone() );
     496                if ( o->get_next() ) {
     497                        set_last( o->get_next()->clone() );
    474498                } // if
    475499        } // if
     
    694718        } // if
    695719        newnode->type->forall = maybeClone( type->forall );
    696         newnode->storageClasses = storageClasses;
     720        newnode->copyStorageClasses( this );
    697721        newnode->name = assign_strptr( newName );
    698722        return newnode;
     
    701725DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) {
    702726        if ( o ) {
    703                 o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
     727                o->copyStorageClasses( this );
    704728                if ( type ) {
    705729                        TypeData *srcType = type;
     
    734758        DeclarationNode *newnode = new DeclarationNode;
    735759        newnode->type = maybeClone( type );
    736         newnode->storageClasses = storageClasses;
     760        newnode->copyStorageClasses( this );
    737761        newnode->name = assign_strptr( newName );
    738762        return newnode;
     
    741765DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) {
    742766        if ( o ) {
    743                 o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
     767                o->copyStorageClasses( this );
    744768                if ( type ) {
    745769                        TypeData *newType = type->clone();
     
    755779}
    756780
    757 DeclarationNode *DeclarationNode::appendList( DeclarationNode *node ) {
    758         if ( node != 0 ) {
    759                 set_link( node );
    760         } // if
    761         return this;
    762 }
    763 
    764781DeclarationNode *DeclarationNode::extractAggregate() const {
    765782        if ( type ) {
     
    776793void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
    777794        SemanticError errors;
    778         std::back_insert_iterator< std::list< Declaration *> > out( outputList );
     795        std::back_insert_iterator< std::list< Declaration * > > out( outputList );
    779796        const DeclarationNode *cur = firstNode;
    780797        while ( cur ) {
     
    794811                        errors.append( e );
    795812                } // try
    796                 cur = dynamic_cast<DeclarationNode *>( cur->get_link() );
     813                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    797814        } // while
    798815        if ( ! errors.isEmpty() ) {
     
    801818}
    802819
    803 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList ) {
     820void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {
    804821        SemanticError errors;
    805         std::back_insert_iterator< std::list< DeclarationWithType *> > out( outputList );
     822        std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );
    806823        const DeclarationNode *cur = firstNode;
    807824        while ( cur ) {
     
    817834                        Declaration *decl = cur->build();
    818835                        if ( decl ) {
    819                                 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType *>( decl ) ) {
     836                                if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
    820837                                        *out++ = dwt;
    821                                 } else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
     838                                } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {
    822839                                        StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    823840                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
    824841                                        delete agg;
    825                                 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
     842                                } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {
    826843                                        UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    827844                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
     
    831848                        errors.append( e );
    832849                } // try
    833                 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
     850                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    834851        } // while
    835852        if ( ! errors.isEmpty() ) {
     
    838855}
    839856
    840 void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList ) {
     857void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {
    841858        SemanticError errors;
    842         std::back_insert_iterator< std::list< Type *> > out( outputList );
     859        std::back_insert_iterator< std::list< Type * > > out( outputList );
    843860        const DeclarationNode *cur = firstNode;
    844861        while ( cur ) {
     
    848865                        errors.append( e );
    849866                } // try
    850                 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
     867                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    851868        } // while
    852869        if ( ! errors.isEmpty() ) {
     
    856873
    857874Declaration *DeclarationNode::build() const {
     875        if( !error.empty() ) throw SemanticError( error, this );
    858876        if ( type ) {
    859                 return type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    860         } // if
    861         if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
    862                 return (new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
     877                return type->buildDecl( name, storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     878        } // if
     879        if ( ! isInline && ! isNoreturn ) {
     880                return (new ObjectDecl( name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
    863881        } // if
    864882        throw SemanticError( "invalid function specifier in declaration of ", this );
     
    899917}
    900918
    901 DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
    902         DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
    903         for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
    904           if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
    905           if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
    906                         throw SemanticError( "invalid combination of storage classes in declaration of ", this );
    907                 } // if
    908                 ret = *i;
    909         } // for
    910         return ret;
    911 }
    912 
    913 bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
    914         std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
    915   if ( first == storageClasses.end() ) return false;    // not found
    916         first = std::find( ++first, storageClasses.end(), key ); // found
    917   if ( first == storageClasses.end() ) return true;             // not found again
    918         throw SemanticError( "duplicate function specifier in declaration of ", this );
    919 }
     919// DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
     920//      DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
     921//      for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
     922//        if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
     923//        if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
     924//                      throw SemanticError( "invalid combination of storage classes in declaration of ", this );
     925//              } // if
     926//              ret = *i;
     927//      } // for
     928//      return ret;
     929// }
     930
     931// bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
     932//      std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
     933//   if ( first == storageClasses.end() ) return false; // not found
     934//      first = std::find( ++first, storageClasses.end(), key ); // found
     935//   if ( first == storageClasses.end() ) return true;          // not found again
     936//      throw SemanticError( "duplicate function specifier in declaration of ", this );
     937// }
    920938
    921939// Local Variables: //
  • src/Parser/ExpressionNode.cc

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 09:23:12 2016
    13 // Update Count     : 437
     12// Last Modified On : Tue Aug 16 00:09:20 2016
     13// Update Count     : 495
    1414//
    1515
     
    3232using namespace std;
    3333
    34 ExpressionNode::ExpressionNode() : ParseNode() {}
    35 
    36 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ) {}
    37 
    38 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {
    39         if ( other.argName ) {
    40                 std::cout << "ExpressionNode" << std::endl;
    41                 argName = other.argName->clone();
    42         } else {
    43                 argName = 0;
    44         } // if
    45 }
    46 
    47 ExpressionNode * ExpressionNode::set_argName( const std::string *aName ) {
    48         argName = new VarRefNode( aName );
    49         return this;
    50 }
    51 
    52 ExpressionNode * ExpressionNode::set_argName( ExpressionNode *aDesignator ) {
    53         argName = aDesignator;
    54         return this;
    55 }
    56 
    57 void ExpressionNode::printDesignation( std::ostream &os, int indent ) const {
    58         if ( argName ) {
    59                 os << string( indent, ' ' ) << "(designated by:  ";
    60                 argName->printOneLine( os, indent );
    61                 os << ")" << std::endl;
    62         } // if
    63 }
    64 
    65 //##############################################################################
    66 
    67 NullExprNode::NullExprNode() {}
    68 
    69 NullExprNode *NullExprNode::clone() const {
    70         return new NullExprNode();
    71 }
    72 
    73 void NullExprNode::print( std::ostream & os, int indent ) const {
    74         printDesignation( os );
    75         os << "null expression";
    76 }
    77 
    78 void NullExprNode::printOneLine( std::ostream & os, int indent ) const {
    79         printDesignation( os );
    80         os << "null";
    81 }
    82 
    83 Expression *NullExprNode::build() const {
    84         return 0;
    85 }
     34ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {}
    8635
    8736//##############################################################################
     
    10857static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    10958
    110 ConstantNode *build_constantInteger( std::string & str ) {
     59Expression *build_constantInteger( const std::string & str ) {
    11160        static const BasicType::Kind kind[2][3] = {
    11261                { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
     
    171120        } // if
    172121
    173         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) ) );
     122        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) );
    174123} // build_constantInteger
    175124
    176 ConstantNode *build_constantFloat( std::string & str ) {
     125Expression *build_constantFloat( const std::string & str ) {
    177126        static const BasicType::Kind kind[2][3] = {
    178127                { BasicType::Float, BasicType::Double, BasicType::LongDouble },
     
    201150        } // if
    202151
    203         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) ) );
     152        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) );
    204153} // build_constantFloat
    205154
    206 ConstantNode *build_constantChar( std::string & str ) {
    207         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) ) );
     155Expression *build_constantChar( const std::string & str ) {
     156        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
    208157} // build_constantChar
    209158
    210 ConstantNode *build_constantStr( std::string & str ) {
     159ConstantExpr *build_constantStr( const std::string & str ) {
    211160        // string should probably be a primitive type
    212161        ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
     
    214163                                                                                        toString( str.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
    215164                                                                   false, false );
    216         return new ConstantNode( new ConstantExpr( Constant( at, str ) ) );
     165        return new ConstantExpr( Constant( at, str ) );
    217166} // build_constantStr
    218167
    219 //##############################################################################
    220 
    221 //Expression *build_varref( ExpressionNode expr ) {
    222 //      return new NameExpr( get_name(), maybeBuild<Expression>( get_argName() ) );
    223 //}
    224 
    225 VarRefNode::VarRefNode( const string *name, bool labelp ) : ExpressionNode( name ), isLabel( labelp ) {}
    226 
    227 VarRefNode::VarRefNode( const VarRefNode &other ) : ExpressionNode( other ), isLabel( other.isLabel ) {
    228 }
    229 
    230 Expression *VarRefNode::build() const {
    231         return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );
    232 }
    233 
    234 void VarRefNode::printOneLine( std::ostream &os, int indent ) const {
    235         printDesignation( os );
    236         os << get_name() << ' ';
    237 }
    238 
    239 void VarRefNode::print( std::ostream &os, int indent ) const {
    240         printDesignation( os );
    241         os << string( indent, ' ' ) << "Referencing: ";
    242         os << "Variable: " << get_name();
    243         os << endl;
    244 }
    245 
    246 //##############################################################################
    247 
    248 DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) {
    249         set_argName( expr );
    250         assert( get_argName() );
    251 
    252         if ( ! isArrayIndex ) {
    253                 if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) {
    254 
    255                         stringstream ss( var->get_name() );
    256                         double value;
    257                         if ( ss >> value ) {
    258                                 // this is a floating point constant. It MUST be ".0" or ".1", otherwise the program is invalid
    259                                 if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) {
    260                                         throw SemanticError( "invalid designator name: " + var->get_name() );
    261                                 } // if
    262                                 var->set_name( var->get_name().substr(1) );
    263                         } // if
    264                 } // if
    265         } // if
    266 }
    267 
    268 DesignatorNode::DesignatorNode( const DesignatorNode &other ) : ExpressionNode( other ), isArrayIndex( other.isArrayIndex ) {
    269 }
    270 
    271 class DesignatorFixer : public Mutator {
    272 public:
    273         virtual Expression* mutate( NameExpr *nameExpr ) {
    274                 if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {
    275                         Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );
    276                         delete nameExpr;
    277                         return new ConstantExpr( val );
    278                 }
    279                 return nameExpr;
    280         }
    281 };
    282 
    283 Expression *DesignatorNode::build() const {
    284         Expression * ret = maybeBuild<Expression>(get_argName());
    285 
    286         if ( isArrayIndex ) {
    287                 // need to traverse entire structure and change any instances of 0 or 1 to ConstantExpr
    288                 DesignatorFixer fixer;
    289                 ret = ret->acceptMutator( fixer );
    290         } // if
    291 
    292         return ret;
    293 }
    294 
    295 void DesignatorNode::printOneLine( std::ostream &os, int indent ) const {
    296         if ( get_argName() ) {
    297                 if ( isArrayIndex ) {
    298                         os << "[";
    299                         get_argName()->printOneLine( os, indent );
    300                         os << "]";
    301                 } else {
    302                         os << ".";
    303                         get_argName()->printOneLine( os, indent );
    304                 }
    305         } // if
    306 }
    307 
    308 void DesignatorNode::print( std::ostream &os, int indent ) const {
    309         if ( get_argName() ) {
    310                 if ( isArrayIndex ) {
    311                         os << "[";
    312                         get_argName()->print( os, indent );
    313                         os << "]";
    314                 } else {
    315                         os << ".";
    316                         get_argName()->print( os, indent );
    317                 }
    318         } // if
    319 }
    320 
    321 //##############################################################################
     168NameExpr * build_varref( const string *name, bool labelp ) {
     169        NameExpr *expr = new NameExpr( *name, nullptr );
     170        delete name;
     171        return expr;
     172}
    322173
    323174static const char *OperName[] = {
     
    331182};
    332183
    333 //##############################################################################
    334 
    335 Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node ) {
    336         DeclarationNode *decl_node = arg->get_decl();
    337 
     184Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    338185        Type *targetType = decl_node->buildType();
    339         if ( dynamic_cast< VoidType* >( targetType ) ) {
     186        if ( dynamic_cast< VoidType * >( targetType ) ) {
    340187                delete targetType;
    341                 return new CastExpr( maybeBuild<Expression>(expr_node) );
     188                return new CastExpr( maybeMoveBuild< Expression >(expr_node) );
    342189        } else {
    343                 return new CastExpr( maybeBuild<Expression>(expr_node), targetType );
    344         } // if
    345 }
    346 
    347 Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member ) {
    348         NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) );
    349         assert( memberExpr );
    350         UntypedMemberExpr *ret = new UntypedMemberExpr( memberExpr->get_name(), maybeBuild<Expression>(expr_node) );
     190                return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );
     191        } // if
     192}
     193
     194Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
     195        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) );
    351196        delete member;
    352197        return ret;
    353198}
    354199
    355 Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member ) {
    356         NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) );
    357         assert( memberExpr );
     200Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    358201        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    359         deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
    360         UntypedMemberExpr *ret = new UntypedMemberExpr( memberExpr->get_name(), deref );
     202        deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) );
     203        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    361204        delete member;
    362205        return ret;
     
    364207
    365208Expression *build_addressOf( ExpressionNode *expr_node ) {
    366                 return new AddressExpr( maybeBuild<Expression>(expr_node) );
    367 }
    368 Expression *build_sizeOf( ExpressionNode *expr_node ) {
    369         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr_node ) ) {
    370                 return new SizeofExpr( arg->get_decl()->buildType() );
    371         } else {
    372                 return new SizeofExpr( maybeBuild<Expression>(expr_node) );
    373         } // if
    374 }
    375 Expression *build_alignOf( ExpressionNode *expr_node ) {
    376         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr_node ) ) {
    377                 return new AlignofExpr( arg->get_decl()->buildType() );
    378         } else {
    379                 return new AlignofExpr( maybeBuild<Expression>(expr_node) );
    380         } // if
    381 }
    382 Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member ) {
    383         NameExpr *memberExpr = dynamic_cast<NameExpr *>( maybeBuild<Expression>( member ) );
    384         assert( memberExpr );
    385         return new UntypedOffsetofExpr( arg->get_decl()->buildType(), memberExpr->get_name() );
     209                return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );
     210}
     211Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
     212        return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) );
     213}
     214Expression *build_sizeOftype( DeclarationNode *decl_node ) {
     215        Expression* ret = new SizeofExpr( decl_node->buildType() );
     216        delete decl_node;
     217        return ret;
     218}
     219Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
     220        return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) );
     221}
     222Expression *build_alignOftype( DeclarationNode *decl_node ) {
     223        return new AlignofExpr( decl_node->buildType() );
     224}
     225Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
     226        Expression* ret = new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
     227        delete decl_node;
     228        delete member;
     229        return ret;
    386230}
    387231
    388232Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
    389         return new LogicalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );
     233        return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind );
    390234}
    391235
    392236Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
    393         std::list<Expression *> args;
    394         args.push_back( maybeBuild<Expression>(expr_node) );
     237        std::list< Expression * > args;
     238        args.push_back( maybeMoveBuild< Expression >(expr_node) );
    395239        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    396240}
    397241Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
    398         std::list<Expression *> args;
    399         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node) ) );
     242        std::list< Expression * > args;
     243        args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) );
    400244        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    401245}
    402246Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    403         std::list<Expression *> args;
    404         args.push_back( maybeBuild<Expression>(expr_node1) );
    405         args.push_back( maybeBuild<Expression>(expr_node2) );
     247        std::list< Expression * > args;
     248        args.push_back( maybeMoveBuild< Expression >(expr_node1) );
     249        args.push_back( maybeMoveBuild< Expression >(expr_node2) );
    406250        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    407251}
    408252Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    409         std::list<Expression *> args;
    410         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node1) ) );
    411         args.push_back( maybeBuild<Expression>(expr_node2) );
     253        std::list< Expression * > args;
     254        args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) );
     255        args.push_back( maybeMoveBuild< Expression >(expr_node2) );
    412256        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    413257}
    414258
    415259Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
    416         return new ConditionalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), maybeBuild<Expression>(expr_node2), maybeBuild<Expression>(expr_node3) );
     260        return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) );
    417261}
    418262
    419263Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    420         return new CommaExpr( maybeBuild<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );
    421 }
    422 
    423 Expression *build_attr( VarRefNode *var, ExpressionNode * expr ) {
    424         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr ) ) {
    425                 return new AttrExpr( maybeBuild<Expression>(var), arg->get_decl()->buildType() );
    426         } else {
    427                 return new AttrExpr( maybeBuild<Expression>(var), maybeBuild<Expression>(expr) );
    428         } // if
    429 }
    430 
    431 Expression *build_tuple( ExpressionNode * expr ) {
     264        return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) );
     265}
     266
     267Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
     268        return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) );
     269}
     270Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
     271        return new AttrExpr( var, decl_node->buildType() );
     272}
     273
     274Expression *build_tuple( ExpressionNode * expr_node ) {
    432275        TupleExpr *ret = new TupleExpr();
    433         buildList( expr, ret->get_exprs() );
    434         return ret;
    435 }
    436 
    437 Expression *build_func( ExpressionNode * function, ExpressionNode * expr ) {
    438         std::list<Expression *> args;
    439 
    440         buildList( expr, args );
    441         return new UntypedExpr( maybeBuild<Expression>(function), args, nullptr );
     276        buildMoveList( expr_node, ret->get_exprs() );
     277        return ret;
     278}
     279
     280Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
     281        std::list< Expression * > args;
     282        buildMoveList( expr_node, args );
     283        return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr );
    442284}
    443285
    444286Expression *build_range( ExpressionNode * low, ExpressionNode *high ) {
    445         Expression *low_cexpr = maybeBuild<Expression>( low );
    446         Expression *high_cexpr = maybeBuild<Expression>( high );
    447         return new RangeExpr( low_cexpr, high_cexpr );
    448 }
    449 
    450 //##############################################################################
    451 
    452 Expression *AsmExprNode::build() const {
    453         return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );
    454 }
    455 
    456 void AsmExprNode::print( std::ostream &os, int indent ) const {
    457         os << string( indent, ' ' ) << "Assembler Expression:" << endl;
    458         if ( inout ) {
    459                 os << string( indent, ' ' ) << "inout: " << std::endl;
    460                 inout->print( os, indent + 2 );
    461         } // if
    462         if ( constraint ) {
    463                 os << string( indent, ' ' ) << "constraint: " << std::endl;
    464                 constraint->print( os, indent + 2 );
    465         } // if
    466         if ( operand ) {
    467                 os << string( indent, ' ' ) << "operand: " << std::endl;
    468                 operand->print( os, indent + 2 );
    469         } // if
    470 }
    471 
    472 void AsmExprNode::printOneLine( std::ostream &os, int indent ) const {
    473         printDesignation( os );
    474         os << "( ";
    475         if ( inout ) inout->printOneLine( os, indent + 2 );
    476         os << ", ";
    477         if ( constraint ) constraint->printOneLine( os, indent + 2 );
    478         os << ", ";
    479         if ( operand ) operand->printOneLine( os, indent + 2 );
    480         os << ") ";
    481 }
    482 
    483 //##############################################################################
    484 
    485 void LabelNode::print( std::ostream &os, int indent ) const {}
    486 
    487 void LabelNode::printOneLine( std::ostream &os, int indent ) const {}
    488 
    489 //##############################################################################
    490 
    491 ValofExprNode::ValofExprNode( StatementNode *s ): body( s ) {}
    492 
    493 ValofExprNode::ValofExprNode( const ValofExprNode &other ) : ExpressionNode( other ), body( maybeClone( body ) ) {
    494 }
    495 
    496 ValofExprNode::~ValofExprNode() {
    497         delete body;
    498 }
    499 
    500 void ValofExprNode::print( std::ostream &os, int indent ) const {
    501         printDesignation( os );
    502         os << string( indent, ' ' ) << "Valof Expression:" << std::endl;
    503         get_body()->print( os, indent + 4);
    504 }
    505 
    506 void ValofExprNode::printOneLine( std::ostream &, int indent ) const {
    507         assert( false );
    508 }
    509 
    510 Expression *ValofExprNode::build() const {
    511         return new UntypedValofExpr ( maybeBuild<Statement>(get_body()), maybeBuild< Expression >( get_argName() ) );
    512 }
    513 
    514 //##############################################################################
    515 
    516 ForCtlExprNode::ForCtlExprNode( ParseNode *init_, ExpressionNode *cond, ExpressionNode *incr ) throw ( SemanticError ) : condition( cond ), change( incr ) {
    517         if ( init_ == 0 )
    518                 init = 0;
    519         else {
    520                 DeclarationNode *decl;
    521                 ExpressionNode *exp;
    522 
    523                 if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0)
    524                         init = new StatementNode( decl );
    525                 else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0)
    526                         init = new StatementNode( StatementNode::Exp, exp );
    527                 else
    528                         throw SemanticError("Error in for control expression");
    529         }
    530 }
    531 
    532 ForCtlExprNode::ForCtlExprNode( const ForCtlExprNode &other )
    533         : ExpressionNode( other ), init( maybeClone( other.init ) ), condition( maybeClone( other.condition ) ), change( maybeClone( other.change ) ) {
    534 }
    535 
    536 ForCtlExprNode::~ForCtlExprNode() {
    537         delete init;
    538         delete condition;
    539         delete change;
    540 }
    541 
    542 Expression *ForCtlExprNode::build() const {
    543         // this shouldn't be used!
    544         assert( false );
    545         return 0;
    546 }
    547 
    548 void ForCtlExprNode::print( std::ostream &os, int indent ) const{
    549         os << string( indent,' ' ) << "For Control Expression -- :" << endl;
    550 
    551         os << string( indent + 2, ' ' ) << "initialization:" << endl;
    552         if ( init != 0 )
    553                 init->printList( os, indent + 4 );
    554 
    555         os << string( indent + 2, ' ' ) << "condition: " << endl;
    556         if ( condition != 0 )
    557                 condition->print( os, indent + 4 );
    558         os << string( indent + 2, ' ' ) << "increment: " << endl;
    559         if ( change != 0 )
    560                 change->print( os, indent + 4 );
    561 }
    562 
    563 void ForCtlExprNode::printOneLine( std::ostream &, int indent ) const {
    564         assert( false );
    565 }
    566 
    567 //##############################################################################
    568 
    569 TypeValueNode::TypeValueNode( DeclarationNode *decl ) : decl( decl ) {
    570 }
    571 
    572 TypeValueNode::TypeValueNode( const TypeValueNode &other ) : ExpressionNode( other ), decl( maybeClone( other.decl ) ) {
    573 }
    574 
    575 Expression *TypeValueNode::build() const {
     287        return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) );
     288}
     289
     290Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
     291        return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) );
     292}
     293
     294Expression *build_valexpr( StatementNode *s ) {
     295        return new UntypedValofExpr( maybeMoveBuild< Statement >(s), nullptr );
     296}
     297Expression *build_typevalue( DeclarationNode *decl ) {
    576298        return new TypeExpr( decl->buildType() );
    577299}
    578300
    579 void TypeValueNode::print( std::ostream &os, int indent ) const {
    580         os << std::string( indent, ' ' ) << "Type:";
    581         get_decl()->print( os, indent + 2);
    582 }
    583 
    584 void TypeValueNode::printOneLine( std::ostream &os, int indent ) const {
    585         os << "Type:";
    586         get_decl()->print( os, indent + 2);
    587 }
    588 
    589 
    590 CompoundLiteralNode::CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ) : type( type ), kids( kids ) {}
    591 CompoundLiteralNode::CompoundLiteralNode( const CompoundLiteralNode &other ) : ExpressionNode( other ), type( other.type ), kids( other.kids ) {}
    592 
    593 CompoundLiteralNode::~CompoundLiteralNode() {
    594         delete kids;
    595         delete type;
    596 }
    597 
    598 CompoundLiteralNode *CompoundLiteralNode::clone() const {
    599         return new CompoundLiteralNode( *this );
    600 }
    601 
    602 void CompoundLiteralNode::print( std::ostream &os, int indent ) const {
    603         os << string( indent,' ' ) << "CompoundLiteralNode:" << endl;
    604 
    605         os << string( indent + 2, ' ' ) << "type:" << endl;
    606         if ( type != 0 )
    607                 type->print( os, indent + 4 );
    608 
    609         os << string( indent + 2, ' ' ) << "initialization:" << endl;
    610         if ( kids != 0 )
    611                 kids->printList( os, indent + 4 );
    612 }
    613 
    614 void CompoundLiteralNode::printOneLine( std::ostream &os, int indent ) const {
    615         os << "( ";
    616         if ( type ) type->print( os );
    617         os << ", ";
    618         if ( kids ) kids->printOneLine( os );
    619         os << ") ";
    620 }
    621 
    622 Expression *CompoundLiteralNode::build() const {
    623         Declaration * newDecl = maybeBuild<Declaration>(type); // compound literal type
     301Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
     302        Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type
    624303        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    625                 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     304                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) );
    626305        // these types do not have associated type information
    627306        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
    628                 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
     307                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    629308        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
    630                 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
     309                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    631310        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
    632                 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
     311                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    633312        } else {
    634313                assert( false );
  • src/Parser/InitializerNode.cc

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul  4 15:37:15 2016
    13 // Update Count     : 15
     12// Last Modified On : Mon Aug 15 18:27:02 2016
     13// Update Count     : 20
    1414//
    1515
     
    2525        : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    27                 kids = dynamic_cast< InitializerNode *>( get_link() );
     27                kids = dynamic_cast< InitializerNode * >( get_next() );
    2828
    2929        if ( kids != 0 )
    30                 set_link( 0 );
     30                set_last( 0 );
    3131}
    3232
     
    3434        : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    3535        if ( init != 0 )
    36                 set_link(init);
     36                set_last( init );
    3737
    3838        if ( aggrp )
    39                 kids = dynamic_cast< InitializerNode *>( get_link() );
     39                kids = dynamic_cast< InitializerNode * >( get_next() );
    4040
    4141        if ( kids != 0 )
     
    5858                        while ( curdes != 0) {
    5959                                curdes->printOneLine(os);
    60                                 curdes = (ExpressionNode *)(curdes->get_link());
     60                                curdes = (ExpressionNode *)(curdes->get_next());
    6161                                if ( curdes ) os << ", ";
    6262                        } // while
     
    7272
    7373        InitializerNode *moreInit;
    74         if  ( get_link() != 0 && ((moreInit = dynamic_cast< InitializerNode * >( get_link() ) ) != 0) )
     74        if  ( get_next() != 0 && ((moreInit = dynamic_cast< InitializerNode * >( get_next() ) ) != 0) )
    7575                moreInit->printOneLine( os );
    7676}
     
    8282                //assert( next_init() != 0 );
    8383
    84                 std::list< Initializer *> initlist;
    85                 buildList<Initializer, InitializerNode>( next_init(), initlist );
     84                std::list< Initializer * > initlist;
     85                buildList< Initializer, InitializerNode >( next_init(), initlist );
    8686
    87                 std::list< Expression *> designlist;
     87                std::list< Expression * > designlist;
    8888
    8989                if ( designator != 0 ) {
    90                         buildList<Expression, ExpressionNode>( designator, designlist );
     90                        buildList< Expression, ExpressionNode >( designator, designlist );
    9191                } // if
    9292
    9393                return new ListInit( initlist, designlist, maybeConstructed );
    9494        } else {
    95                 std::list< Expression *> designators;
     95                std::list< Expression * > designators;
    9696
    9797                if ( designator != 0 )
    98                         buildList<Expression, ExpressionNode>( designator, designators );
     98                        buildList< Expression, ExpressionNode >( designator, designators );
    9999
    100100                if ( get_expression() != 0)
    101                         return new SingleInit( maybeBuild<Expression>( get_expression() ), designators, maybeConstructed );
     101                        return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed );
    102102        } // if
    103103
  • src/Parser/LinkageSpec.cc

    r03da511 r04cdd9b  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:22:09 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 19 15:53:05 2015
    13 // Update Count     : 5
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug 18 23:47:14 2016
     13// Update Count     : 12
    1414//
    1515
     
    2020#include "Common/SemanticError.h"
    2121
    22 LinkageSpec::Type LinkageSpec::fromString( const std::string &stringSpec ) {
     22LinkageSpec::Spec LinkageSpec::fromString( const std::string &stringSpec ) {
    2323        if ( stringSpec == "\"Cforall\"" ) {
    2424                return Cforall;
     
    3030}
    3131
    32 std::string LinkageSpec::toString( LinkageSpec::Type linkage ) {
    33         switch ( linkage ) {
    34           case Intrinsic:
    35                 return "intrinsic";
    36           case Cforall:
    37                 return "Cforall";
    38           case C:
    39                 return "C";
    40           case AutoGen:
    41                 return "automatically generated";
    42           case Compiler:
    43                 return "compiler built-in";
    44         }
    45         assert( false );
    46         return "";
     32std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) {
     33        static const char *linkageKinds[LinkageSpec::NoOfSpecs] = {
     34                "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
     35        };
     36        return linkageKinds[linkage];
    4737}
    4838
    49 bool LinkageSpec::isDecoratable( Type t ) {
    50         switch ( t ) {
    51           case Intrinsic:
    52           case Cforall:
    53           case AutoGen:
    54                 return true;
    55           case C:
    56           case Compiler:
    57                 return false;
    58         }
    59         assert( false );
    60         return false;
     39bool LinkageSpec::isDecoratable( Spec t ) {
     40        static bool decoratable[LinkageSpec::NoOfSpecs] = {
     41                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     42                        true,           true,           false,  true,           false,
     43        };
     44        return decoratable[t];
    6145}
    6246
    63 bool LinkageSpec::isGeneratable( Type t ) {
    64         switch ( t ) {
    65           case Intrinsic:
    66           case Cforall:
    67           case AutoGen:
    68           case C:
    69                 return true;
    70           case Compiler:
    71                 return false;
    72         }
    73         assert( false );
    74         return false;
     47bool LinkageSpec::isGeneratable( Spec t ) {
     48        static bool generatable[LinkageSpec::NoOfSpecs] = {
     49                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     50                        true,           true,           true,   true,           false,
     51        };
     52        return generatable[t];
    7553}
    7654
    77 bool LinkageSpec::isOverloadable( Type t ) {
     55bool LinkageSpec::isOverloadable( Spec t ) {
    7856        return isDecoratable( t );
    7957}
    8058
    8159
    82 bool LinkageSpec::isOverridable( Type t ) {
    83         switch ( t ) {
    84           case Intrinsic:
    85           case AutoGen:
    86                 return true;
    87           case Cforall:
    88           case C:
    89           case Compiler:
    90                 return false;
    91         }
    92         assert( false );
    93         return false;
     60bool LinkageSpec::isOverridable( Spec t ) {
     61        static bool overridable[LinkageSpec::NoOfSpecs] = {
     62                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     63                        true,           false,          false,  true,           false,
     64        };
     65        return overridable[t];
    9466}
    9567
    96 bool LinkageSpec::isBuiltin( Type t ) {
    97         switch ( t ) {
    98           case Cforall:
    99           case AutoGen:
    100           case C:
    101                 return false;
    102           case Intrinsic:
    103           case Compiler:
    104                 return true;
    105         }
    106         assert( false );
    107         return false;
     68bool LinkageSpec::isBuiltin( Spec t ) {
     69        static bool builtin[LinkageSpec::NoOfSpecs] = {
     70                //      Intrinsic,      Cforall,        C,              AutoGen,        Compiler
     71                        true,           false,          false,  false,          true,
     72        };
     73        return builtin[t];
    10874}
    10975
  • src/Parser/LinkageSpec.h

    r03da511 r04cdd9b  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:24:28 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Aug 18 14:11:55 2015
    13 // Update Count     : 5
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug 18 23:47:16 2016
     13// Update Count     : 7
    1414//
    1515
     
    2020
    2121struct LinkageSpec {
    22         enum Type {
     22        enum Spec {
    2323                Intrinsic,                                                                              // C built-in defined in prelude
    2424                Cforall,                                                                                // ordinary
    2525                C,                                                                                              // not overloadable, not mangled
    2626                AutoGen,                                                                                // built by translator (struct assignment)
    27                 Compiler                                                                                // gcc internal
     27                Compiler,                                                                               // gcc internal
     28                NoOfSpecs
    2829        };
    2930 
    30         static Type fromString( const std::string & );
    31         static std::string toString( Type );
     31        static Spec fromString( const std::string & );
     32        static std::string toString( Spec );
    3233 
    33         static bool isDecoratable( Type );
    34         static bool isGeneratable( Type );
    35         static bool isOverloadable( Type );
    36         static bool isOverridable( Type );
    37         static bool isBuiltin( Type );
     34        static bool isDecoratable( Spec );
     35        static bool isGeneratable( Spec );
     36        static bool isOverloadable( Spec );
     37        static bool isOverridable( Spec );
     38        static bool isBuiltin( Spec );
    3839};
    3940
  • src/Parser/ParseNode.cc

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug  6 08:26:11 2016
    13 // Update Count     : 93
     12// Last Modified On : Wed Aug 17 23:14:16 2016
     13// Update Count     : 126
    1414//
    1515
     
    1717using namespace std;
    1818
    19 // Builder
    2019int ParseNode::indent_by = 4;
    21 
    22 ParseNode::ParseNode() : next( 0 ) {};
    23 ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
    24 ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
    25 
    26 ParseNode::~ParseNode() {
    27         delete next;
    28 };
    29 
    30 ParseNode *ParseNode::get_last() {
    31         ParseNode *current = this;
    32 
    33         while ( current->get_link() != 0 )
    34         current = current->get_link();
    35 
    36         return current;
    37 }
    38 
    39 ParseNode *ParseNode::set_link( ParseNode *next_ ) {
    40         if ( next_ != 0 ) get_last()->next = next_;
    41         return this;
    42 }
    43 
    44 void ParseNode::print( std::ostream &os, int indent ) const {}
    45 
    46 
    47 void ParseNode::printList( std::ostream &os, int indent ) const {
    48         print( os, indent );
    49 
    50         if ( next ) {
    51                 next->printList( os, indent );
    52         } // if
    53 }
    54 
    55 ParseNode &ParseNode::operator,( ParseNode &p ) {
    56         set_link( &p );
    57 
    58         return *this;
    59 }
    60 
    61 ParseNode *mkList( ParseNode &pn ) {
    62         // it just relies on `operator,' to take care of the "arguments" and provides a nice interface to an awful-looking
    63         // address-of, rendering, for example (StatementNode *)(&(*$5 + *$7)) into (StatementNode *)mkList(($5, $7))
    64         // (although "nice" is probably not the word)
    65         return &pn;
    66 }
    6720
    6821// Local Variables: //
  • src/Parser/ParseNode.h

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 09:37:16 2016
    13 // Update Count     : 333
     12// Last Modified On : Thu Aug 18 23:48:37 2016
     13// Update Count     : 542
    1414//
    1515
     
    2222#include <memory>
    2323
    24 #include "Common/utility.h"
    2524#include "Parser/LinkageSpec.h"
    2625#include "SynTree/Type.h"
    2726#include "SynTree/Expression.h"
    28 //#include "SynTree/Declaration.h"
     27#include "SynTree/Statement.h"
     28#include "SynTree/Label.h"
     29#include "Common/utility.h"
    2930#include "Common/UniqueName.h"
    30 #include "SynTree/Label.h"
    3131
    3232class StatementNode;
    3333class CompoundStmtNode;
    3434class DeclarationNode;
     35class ExpressionNode;
    3536class InitializerNode;
    3637
    37 // Builder
     38//##############################################################################
     39
    3840class ParseNode {
    3941  public:
    40         ParseNode();
    41         ParseNode( const std::string * );
    42         ParseNode( const std::string & );                                       // for copy constructing subclasses
    43         virtual ~ParseNode();
    44 
    45         ParseNode *get_link() const { return next; }
    46         ParseNode *get_last();
    47         ParseNode *set_link( ParseNode * );
    48         void set_next( ParseNode *newlink ) { next = newlink; }
    49 
    50         virtual ParseNode *clone() const { return 0; };
     42        ParseNode() {};
     43        ParseNode( const std::string *name ) : name( *name ) { assert( false ); delete name; }
     44        ParseNode( const std::string &name ) : name( name ) { assert( false ); }
     45        virtual ~ParseNode() { delete next; };
     46        virtual ParseNode *clone() const = 0;
     47
     48        ParseNode *get_next() const { return next; }
     49        ParseNode *set_next( ParseNode *newlink ) { next = newlink; return this; }
     50        ParseNode *get_last() {
     51                ParseNode *current;
     52                for ( current = this; current->get_next() != 0; current = current->get_next() );
     53                return current;
     54        }
     55        ParseNode *set_last( ParseNode *newlast ) {
     56                if ( newlast != 0 ) get_last()->set_next( newlast );
     57                return this;
     58        }
    5159
    5260        const std::string &get_name() const { return name; }
    5361        void set_name( const std::string &newValue ) { name = newValue; }
    5462
    55         virtual void print( std::ostream &os, int indent = 0 ) const;
    56         virtual void printList( std::ostream &os, int indent = 0 ) const;
    57 
    58         ParseNode &operator,( ParseNode &);
    59   protected:
     63        virtual void print( std::ostream &os, int indent = 0 ) const {}
     64        virtual void printList( std::ostream &os, int indent = 0 ) const {}
     65  private:
     66        static int indent_by;
     67
     68        ParseNode *next = nullptr;
    6069        std::string name;
    61         static int indent_by;
    62         ParseNode *next;
    63 };
    64 
    65 ParseNode *mkList( ParseNode & );
    66 
    67 //##############################################################################
    68 
    69 class ExpressionNode : public ParseNode {
     70}; // ParseNode
     71
     72//##############################################################################
     73
     74class InitializerNode : public ParseNode {
    7075  public:
    71         ExpressionNode();
    72         ExpressionNode( const std::string * );
     76        InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode *des = 0 );
     77        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
     78        ~InitializerNode();
     79        virtual InitializerNode *clone() const { assert( false ); return nullptr; }
     80
     81        ExpressionNode *get_expression() const { return expr; }
     82
     83        InitializerNode *set_designators( ExpressionNode *des ) { designator = des; return this; }
     84        ExpressionNode *get_designators() const { return designator; }
     85
     86        InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
     87        bool get_maybeConstructed() const { return maybeConstructed; }
     88
     89        InitializerNode *next_init() const { return kids; }
     90
     91        void print( std::ostream &os, int indent = 0 ) const;
     92        void printOneLine( std::ostream & ) const;
     93
     94        virtual Initializer *build() const;
     95  private:
     96        ExpressionNode *expr;
     97        bool aggregate;
     98        ExpressionNode *designator;                                                     // may be list
     99        InitializerNode *kids;
     100        bool maybeConstructed;
     101};
     102
     103//##############################################################################
     104
     105class ExpressionNode final : public ParseNode {
     106  public:
     107        ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
     108        ExpressionNode( Expression * expr, const std::string *name ) : ParseNode( name ), expr( expr ) {}
    73109        ExpressionNode( const ExpressionNode &other );
    74         virtual ~ExpressionNode() { delete argName; }
    75 
    76         virtual ExpressionNode *clone() const = 0;
    77 
    78         ExpressionNode *get_argName() const { return argName; }
    79         ExpressionNode *set_argName( const std::string *aName );
    80         ExpressionNode *set_argName( ExpressionNode *aDesignator );
     110        virtual ~ExpressionNode() {}
     111        virtual ExpressionNode *clone() const { assert( false ); return nullptr; }
     112
    81113        bool get_extension() const { return extension; }
    82114        ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    83115
    84         virtual void print( std::ostream &os, int indent = 0) const = 0;
    85         virtual void printOneLine( std::ostream &os, int indent = 0) const = 0;
    86 
    87         virtual Expression *build() const = 0;
    88   protected:
    89         void printDesignation ( std::ostream &os, int indent = 0) const;
     116        void print( std::ostream &os, int indent = 0 ) const {}
     117        void printOneLine( std::ostream &os, int indent = 0 ) const {}
     118
     119        template<typename T>
     120        bool isExpressionType() const {
     121                return nullptr != dynamic_cast<T>(expr.get());
     122        }
     123
     124        Expression *build() const { return const_cast<ExpressionNode*>(this)->expr.release(); }
    90125  private:
    91         ExpressionNode *argName = 0;
    92126        bool extension = false;
     127        std::unique_ptr<Expression> expr;
    93128};
    94129
    95130template< typename T >
    96 struct maybeBuild_t<Expression, T> {
     131struct maybeBuild_t< Expression, T > {
    97132        static inline Expression * doit( const T *orig ) {
    98133                if ( orig ) {
     
    101136                        return p;
    102137                } else {
    103                         return 0;
     138                        return nullptr;
    104139                } // if
    105140        }
    106 };
    107 
    108 //##############################################################################
    109 
    110 // NullExprNode is used in tuples as a place-holder where a tuple component is omitted e.g., [ 2, , 3 ]
    111 class NullExprNode : public ExpressionNode {
    112   public:
    113         NullExprNode();
    114 
    115         virtual NullExprNode *clone() const;
    116 
    117         virtual void print( std::ostream &os, int indent = 0) const;
    118         virtual void printOneLine( std::ostream &os, int indent = 0) const;
    119 
    120         virtual Expression *build() const;
    121 };
    122 
    123 //##############################################################################
    124 
    125 class ConstantNode : public ExpressionNode {
    126   public:
    127         ConstantNode( ConstantExpr *expr ) : expr( expr ) {}
    128         ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {}
    129         virtual ~ConstantNode() {}
    130 
    131         virtual ConstantNode *clone() const { assert( false ); return new ConstantNode( *this ); }
    132 
    133         ConstantExpr *get_expr() const { return expr; }
    134 
    135         virtual void print( std::ostream &os, int indent = 0 ) const {}
    136         virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}
    137 
    138         Expression *build() const { return expr; }
    139   private:
    140         ConstantExpr *expr;
    141 };
    142 
    143 ConstantNode *build_constantInteger( std::string &str );
    144 ConstantNode *build_constantFloat( std::string &str );
    145 ConstantNode *build_constantChar( std::string &str );
    146 ConstantNode *build_constantStr( std::string &str );
    147 
    148 //##############################################################################
    149 
    150 class VarRefNode : public ExpressionNode {
    151   public:
    152         VarRefNode( const std::string *, bool isLabel = false );
    153         VarRefNode( const VarRefNode &other );
    154 
    155         virtual Expression *build() const ;
    156 
    157         virtual VarRefNode *clone() const { return new VarRefNode( *this ); }
    158 
    159         virtual void print( std::ostream &os, int indent = 0 ) const;
    160         virtual void printOneLine( std::ostream &os, int indent = 0 ) const;
    161   private:
    162         bool isLabel;
    163 };
    164 
    165 //##############################################################################
    166 
    167 class DesignatorNode : public ExpressionNode {
    168   public:
    169         DesignatorNode( ExpressionNode *expr, bool isArrayIndex = false );
    170         DesignatorNode( const DesignatorNode &other );
    171 
    172         virtual Expression *build() const ;
    173         virtual DesignatorNode *clone() const { return new DesignatorNode( *this ); }
    174 
    175         virtual void print( std::ostream &os, int indent = 0 ) const;
    176         virtual void printOneLine( std::ostream &os, int indent = 0 ) const;
    177   private:
    178         bool isArrayIndex;
    179 };
    180 
    181 //##############################################################################
    182 
    183 class TypeValueNode : public ExpressionNode {
    184   public:
    185         TypeValueNode( DeclarationNode * );
    186         TypeValueNode( const TypeValueNode &other );
    187 
    188         DeclarationNode *get_decl() const { return decl; }
    189 
    190         virtual Expression *build() const ;
    191 
    192         virtual TypeValueNode *clone() const { return new TypeValueNode( *this ); }
    193 
    194         virtual void print( std::ostream &os, int indent = 0) const;
    195         virtual void printOneLine( std::ostream &os, int indent = 0) const;
    196   private:
    197         DeclarationNode *decl;
    198 };
    199 
    200 //##############################################################################
    201 
    202 class CompositeExprNode : public ExpressionNode {
    203   public:
    204         CompositeExprNode( Expression *expr ) : expr( expr ) {}
    205         CompositeExprNode( const CompositeExprNode &other ) : expr( other.expr->clone() ) {}
    206         virtual ~CompositeExprNode() {}
    207 
    208         CompositeExprNode *clone() const { assert( false ); return new CompositeExprNode( *this ); }
    209 
    210         Expression *build() const { return expr; }
    211 
    212         void print( std::ostream &os, int indent = 0 ) const {}
    213         void printOneLine( std::ostream &os, int indent = 0 ) const {}
    214   private:
    215         Expression *expr;
    216141};
    217142
     
    227152};
    228153
    229 Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node );
    230 Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member );
    231 Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member );
     154struct LabelNode {
     155        std::list< Label > labels;
     156};
     157
     158Expression *build_constantInteger( const std::string &str );
     159Expression *build_constantFloat( const std::string &str );
     160Expression *build_constantChar( const std::string &str );
     161ConstantExpr *build_constantStr( const std::string &str );
     162
     163NameExpr *build_varref( const std::string *name, bool labelp = false );
     164Expression *build_typevalue( DeclarationNode *decl );
     165
     166Expression *build_cast( DeclarationNode * decl_node, ExpressionNode *expr_node );
     167Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member );
     168Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member );
    232169Expression *build_addressOf( ExpressionNode *expr_node );
    233 Expression *build_sizeOf( ExpressionNode *expr_node );
    234 Expression *build_alignOf( ExpressionNode *expr_node );
    235 Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member );
     170Expression *build_sizeOfexpr( ExpressionNode *expr_node );
     171Expression *build_sizeOftype( DeclarationNode *decl_node );
     172Expression *build_alignOfexpr( ExpressionNode *expr_node );
     173Expression *build_alignOftype( DeclarationNode *decl_node );
     174Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member );
    236175Expression *build_and( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    237176Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind );
     
    242181Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 );
    243182Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    244 Expression *build_attr( VarRefNode *var, ExpressionNode * expr = 0 );
    245 Expression *build_tuple( ExpressionNode * expr = 0 );
    246 Expression *build_func( ExpressionNode * function, ExpressionNode * expr );
     183Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node );
     184Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node );
     185Expression *build_tuple( ExpressionNode * expr_node = 0 );
     186Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node );
    247187Expression *build_range( ExpressionNode * low, ExpressionNode *high );
    248 
    249 //##############################################################################
    250 
    251 class AsmExprNode : public ExpressionNode {
    252   public:
    253         AsmExprNode();
    254         AsmExprNode( ExpressionNode *inout, ConstantNode *constraint, ExpressionNode *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
    255         virtual ~AsmExprNode() { delete inout; delete constraint; delete operand; }
    256 
    257         virtual AsmExprNode *clone() const { return new AsmExprNode( *this ); }
    258         virtual Expression *build() const;
    259 
    260         virtual void print( std::ostream &os, int indent = 0) const;
    261         virtual void printOneLine( std::ostream &os, int indent = 0) const;
    262 
    263         ExpressionNode *get_inout() const { return inout; };
    264         void set_inout( ExpressionNode *newValue ) { inout = newValue; }
    265 
    266         ConstantNode *get_constraint() const { return constraint; };
    267         void set_constraint( ConstantNode *newValue ) { constraint = newValue; }
    268 
    269         ExpressionNode *get_operand() const { return operand; };
    270         void set_operand( ExpressionNode *newValue ) { operand = newValue; }
    271   private:
    272         ExpressionNode *inout;
    273         ConstantNode *constraint;
    274         ExpressionNode *operand;
    275 };
    276 
    277 //##############################################################################
    278 
    279 class LabelNode : public ExpressionNode {
    280   public:
    281         virtual Expression *build() const { return NULL; }
    282         virtual LabelNode *clone() const { return new LabelNode( *this ); }
    283 
    284         virtual void print( std::ostream &os, int indent = 0) const;
    285         virtual void printOneLine( std::ostream &os, int indent = 0) const;
    286 
    287         const std::list< Label > &get_labels() const { return labels; };
    288         void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
    289   private:
    290         std::list< Label > labels;
    291 };
    292 
    293 //##############################################################################
    294 
    295 class ForCtlExprNode : public ExpressionNode {
    296   public:
    297         ForCtlExprNode( ParseNode *, ExpressionNode *, ExpressionNode * ) throw ( SemanticError );
    298         ForCtlExprNode( const ForCtlExprNode &other );
    299         ~ForCtlExprNode();
    300 
    301         StatementNode *get_init() const { return init; }
    302         ExpressionNode *get_condition() const { return condition; }
    303         ExpressionNode *get_change() const { return change; }
    304 
    305         virtual ForCtlExprNode *clone() const { return new ForCtlExprNode( *this ); }
    306         virtual Expression *build() const;
    307 
    308         virtual void print( std::ostream &os, int indent = 0 ) const;
    309         virtual void printOneLine( std::ostream &os, int indent = 0 ) const;
    310   private:
    311         StatementNode *init;
    312         ExpressionNode *condition;
    313         ExpressionNode *change;
    314 };
    315 
    316 //##############################################################################
    317 
    318 class ValofExprNode : public ExpressionNode {
    319   public:
    320         ValofExprNode();
    321         ValofExprNode( StatementNode *s = 0 );
    322         ValofExprNode( const ValofExprNode &other );
    323         ~ValofExprNode();
    324 
    325         virtual ValofExprNode *clone() const { return new ValofExprNode( *this ); }
    326 
    327         StatementNode *get_body() const { return body; }
    328         void print( std::ostream &os, int indent = 0 ) const;
    329         void printOneLine( std::ostream &os, int indent = 0 ) const;
    330         Expression *build() const;
    331 
    332   private:
    333         StatementNode *body;
    334 };
     188Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand );
     189Expression *build_valexpr( StatementNode *s );
     190Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids );
    335191
    336192//##############################################################################
     
    382238        static DeclarationNode *newBuiltinType( BuiltinType );
    383239
     240        DeclarationNode();
     241        ~DeclarationNode();
     242        DeclarationNode *clone() const;
     243
    384244        DeclarationNode *addQualifiers( DeclarationNode *);
    385245        DeclarationNode *copyStorageClasses( DeclarationNode *);
     
    397257        DeclarationNode *addNewArray( DeclarationNode *array );
    398258        DeclarationNode *addParamList( DeclarationNode *list );
    399         DeclarationNode *addIdList( DeclarationNode *list );       // old-style functions
     259        DeclarationNode *addIdList( DeclarationNode *list ); // old-style functions
    400260        DeclarationNode *addInitializer( InitializerNode *init );
    401261
     
    406266        DeclarationNode *cloneBaseType( DeclarationNode *newdecl );
    407267
    408         DeclarationNode *appendList( DeclarationNode * );
    409 
    410         DeclarationNode *clone() const;
     268        DeclarationNode *appendList( DeclarationNode *node ) {
     269                return (DeclarationNode *)set_last( node );
     270        }
     271
    411272        void print( std::ostream &os, int indent = 0 ) const;
    412273        void printList( std::ostream &os, int indent = 0 ) const;
     
    417278        bool get_hasEllipsis() const;
    418279        const std::string &get_name() const { return name; }
    419         LinkageSpec::Type get_linkage() const { return linkage; }
     280        LinkageSpec::Spec get_linkage() const { return linkage; }
    420281        DeclarationNode *extractAggregate() const;
    421282        ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
     
    423284        bool get_extension() const { return extension; }
    424285        DeclarationNode *set_extension( bool exten ) { extension = exten; return this; }
    425 
    426         DeclarationNode();
    427         ~DeclarationNode();
    428286  private:
    429         StorageClass buildStorageClass() const;
    430         bool buildFuncSpecifier( StorageClass key ) const;
     287        // StorageClass buildStorageClass() const;
     288        // bool buildFuncSpecifier( StorageClass key ) const;
    431289
    432290        TypeData *type;
    433291        std::string name;
    434         std::list< StorageClass > storageClasses;
     292        // std::list< StorageClass > storageClasses;
     293        StorageClass storageClass;
     294        bool isInline, isNoreturn;
    435295        std::list< std::string > attributes;
    436296        ExpressionNode *bitfieldWidth;
     
    438298        InitializerNode *initializer;
    439299        bool hasEllipsis;
    440         LinkageSpec::Type linkage;
     300        LinkageSpec::Spec linkage;
    441301        bool extension = false;
     302        std::string error;
    442303
    443304        static UniqueName anonymous;
    444305}; // DeclarationNode
    445306
    446 //##############################################################################
    447 
    448 class StatementNode : public ParseNode {
     307Type *buildType( TypeData *type );
     308
     309//##############################################################################
     310
     311class StatementNode final : public ParseNode {
    449312  public:
    450         enum Type { Exp,   If,        Switch,  Case,    Default,  Choose,   Fallthru,
    451                                 While, Do,        For,
    452                                 Goto,  Continue,  Break,   Return,  Throw,
    453                                 Try,   Catch,     Finally, Asm,
    454                                 Decl
    455         };
    456 
    457         StatementNode();
    458         StatementNode( const std::string *name );
    459         StatementNode( Type t, ExpressionNode *control = 0, StatementNode *block = 0 );
    460         StatementNode( Type t, std::string *target );
     313        StatementNode() { stmt = nullptr; }
     314        StatementNode( Statement *stmt ) : stmt( stmt ) {}
    461315        StatementNode( DeclarationNode *decl );
    462 
    463         ~StatementNode();
    464 
    465         static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
    466 
    467         StatementNode *set_block( StatementNode *b ) {  block = b; return this; }
    468         StatementNode *get_block() const { return block; }
    469 
    470         void set_control( ExpressionNode *c ) { control = c; }
    471         ExpressionNode *get_control() const { return control; }
    472 
    473         StatementNode::Type get_type() const { return type; }
    474 
    475         StatementNode *add_label( const std::string * );
    476         const std::list<std::string> &get_labels() const { return labels; }
    477 
    478         void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
    479         void setCatchRest( bool newVal ) { isCatchRest = newVal; }
    480 
    481         std::string get_target() const;
    482 
    483         // StatementNode *add_controlexp( ExpressionNode * );
    484         StatementNode *append_block( StatementNode * );
    485         StatementNode *append_last_case( StatementNode * );
    486 
    487         void print( std::ostream &os, int indent = 0) const;
    488         virtual StatementNode *clone() const;
    489         virtual Statement *build() const;
     316        virtual ~StatementNode() {}
     317
     318        virtual StatementNode *clone() const final { assert( false ); return nullptr; }
     319        Statement *build() const { return const_cast<StatementNode*>(this)->stmt.release(); }
     320
     321        virtual StatementNode *add_label( const std::string * name ) {
     322                stmt->get_labels().emplace_back( *name );
     323                delete name;
     324                return this;
     325        }
     326
     327        virtual StatementNode *append_last_case( StatementNode * );
     328
     329        virtual void print( std::ostream &os, int indent = 0 ) {}
     330        virtual void printList( std::ostream &os, int indent = 0 ) {}
    490331  private:
    491         static const char *StType[];
    492         Type type;
    493         ExpressionNode *control;
    494         StatementNode *block;
    495         std::list<std::string> labels;
    496         std::string *target;                            // target label for jump statements
    497         DeclarationNode *decl;
    498         bool isCatchRest;
     332        std::unique_ptr<Statement> stmt;
    499333}; // StatementNode
    500334
    501 //##############################################################################
    502 
    503 class CompoundStmtNode : public StatementNode {
    504   public:
    505         CompoundStmtNode();
    506         CompoundStmtNode( const std::string * );
    507         CompoundStmtNode( StatementNode * );
    508         ~CompoundStmtNode();
    509 
    510         void add_statement( StatementNode * );
    511 
    512         void print( std::ostream &os, int indent = 0 ) const;
    513         virtual Statement *build() const;
    514   private:
    515         StatementNode *first, *last;
    516 };
    517 
    518 //##############################################################################
    519 
    520 class AsmStmtNode : public StatementNode {
    521   public:
    522         AsmStmtNode( Type, bool voltile, ConstantNode *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ConstantNode *clobber = 0, LabelNode *gotolabels = 0 );
    523         ~AsmStmtNode();
    524 
    525         void print( std::ostream &os, int indent = 0 ) const;
    526         Statement *build() const;
    527   private:
    528         bool voltile;
    529         ConstantNode *instruction;
    530         ExpressionNode *output, *input;
    531         ConstantNode *clobber;
    532         std::list< Label > gotolabels;
    533 };
    534 
    535 //##############################################################################
    536 
    537 class InitializerNode : public ParseNode {
    538   public:
    539         InitializerNode( ExpressionNode *, bool aggrp = false,  ExpressionNode *des = 0 );
    540         InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
    541         ~InitializerNode();
    542 
    543         ExpressionNode *get_expression() const { return expr; }
    544 
    545         InitializerNode *set_designators( ExpressionNode *des ) { designator = des; return this; }
    546         ExpressionNode *get_designators() const { return designator; }
    547 
    548         InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
    549         bool get_maybeConstructed() const { return maybeConstructed; }
    550 
    551         InitializerNode *next_init() const { return kids; }
    552 
    553         void print( std::ostream &os, int indent = 0 ) const;
    554         void printOneLine( std::ostream & ) const;
    555 
    556         virtual Initializer *build() const;
    557   private:
    558         ExpressionNode *expr;
    559         bool aggregate;
    560         ExpressionNode *designator; // may be list
    561         InitializerNode *kids;
    562         bool maybeConstructed;
    563 };
    564 
    565 //##############################################################################
    566 
    567 class CompoundLiteralNode : public ExpressionNode {
    568   public:
    569         CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids );
    570         CompoundLiteralNode( const CompoundLiteralNode &type );
    571         ~CompoundLiteralNode();
    572 
    573         virtual CompoundLiteralNode *clone() const;
    574 
    575         DeclarationNode *get_type() const { return type; }
    576         CompoundLiteralNode *set_type( DeclarationNode *t ) { type = t; return this; }
    577 
    578         InitializerNode *get_initializer() const { return kids; }
    579         CompoundLiteralNode *set_initializer( InitializerNode *k ) { kids = k; return this; }
    580 
    581         void print( std::ostream &os, int indent = 0 ) const;
    582         void printOneLine( std::ostream &os, int indent = 0 ) const;
    583 
    584         virtual Expression *build() const;
    585   private:
    586         DeclarationNode *type;
    587         InitializerNode *kids;
    588 };
     335Statement *build_expr( ExpressionNode *ctl );
     336
     337struct ForCtl {
     338        ForCtl( ExpressionNode *expr, ExpressionNode *condition, ExpressionNode *change ) :
     339                init( new StatementNode( build_expr( expr ) ) ), condition( condition ), change( change ) {}
     340        ForCtl( DeclarationNode *decl, ExpressionNode *condition, ExpressionNode *change ) :
     341                init( new StatementNode( decl ) ), condition( condition ), change( change ) {}
     342
     343        StatementNode *init;
     344        ExpressionNode *condition;
     345        ExpressionNode *change;
     346};
     347
     348Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt );
     349Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt );
     350Statement *build_case( ExpressionNode *ctl );
     351Statement *build_default();
     352Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind = false );
     353Statement *build_for( ForCtl *forctl, StatementNode *stmt );
     354Statement *build_branch( std::string identifier, BranchStmt::Type kind );
     355Statement *build_computedgoto( ExpressionNode *ctl );
     356Statement *build_return( ExpressionNode *ctl );
     357Statement *build_throw( ExpressionNode *ctl );
     358Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt );
     359Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny = false );
     360Statement *build_finally( StatementNode *stmt );
     361Statement *build_compound( StatementNode *first );
     362Statement *build_asmstmt( bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
     363
     364//##############################################################################
    589365
    590366template< typename SynTreeType, typename NodeType >
    591 void buildList( const NodeType *firstNode, std::list< SynTreeType *> &outputList ) {
     367void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
    592368        SemanticError errors;
    593         std::back_insert_iterator< std::list< SynTreeType *> > out( outputList );
     369        std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );
    594370        const NodeType *cur = firstNode;
    595371
    596372        while ( cur ) {
    597373                try {
    598 //                      SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::result_of<decltype(&NodeType::build)(NodeType)>::type>( cur ) );
    599                         SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::pointer_traits<decltype(cur->build())>::element_type>( cur ) );
     374//                      SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::result_of< decltype(&NodeType::build)(NodeType)>::type >( cur ) );
     375                        SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::pointer_traits< decltype(cur->build())>::element_type >( cur ) );
    600376                        if ( result ) {
    601377                                *out++ = result;
     
    605381                        errors.append( e );
    606382                } // try
    607                 cur = dynamic_cast< NodeType *>( cur->get_link() );
     383                cur = dynamic_cast< NodeType * >( cur->get_next() );
    608384        } // while
    609385        if ( ! errors.isEmpty() ) {
     
    614390// in DeclarationNode.cc
    615391void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList );
    616 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList );
     392void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList );
    617393void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
     394
     395template< typename SynTreeType, typename NodeType >
     396void buildMoveList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
     397        buildList(firstNode, outputList);
     398        delete firstNode;
     399}
     400
    618401
    619402#endif // PARSENODE_H
  • src/Parser/StatementNode.cc

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 06:42:38 2016
    13 // Update Count     : 135
     12// Last Modified On : Mon Aug 15 20:47:11 2016
     13// Update Count     : 322
    1414//
    1515
     
    2626using namespace std;
    2727
    28 const char *StatementNode::StType[] = {
    29         "Exp",   "If",       "Switch", "Case",    "Default",  "Choose",   "Fallthru",
    30         "While", "Do",       "For",
    31         "Goto",  "Continue", "Break",  "Return",  "Throw",
    32         "Try",   "Catch",    "Finally", "Asm",
    33         "Decl"
    34 };
    35 
    36 StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    37 
    38 StatementNode::StatementNode( const string *name ) : ParseNode( name ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    39 
    40 StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), isCatchRest ( false ) {
     28
     29StatementNode::StatementNode( DeclarationNode *decl ) {
    4130        if ( decl ) {
    42                 if ( DeclarationNode *agg = decl->extractAggregate() ) {
    43                         this->decl = agg;
    44                         StatementNode *nextStmt = new StatementNode;
    45                         nextStmt->type = Decl;
    46                         nextStmt->decl = decl;
    47                         next = nextStmt;
    48                         if ( decl->get_link() ) {
    49                                 next->set_next( new StatementNode( dynamic_cast< DeclarationNode* >( decl->get_link() ) ) );
     31                DeclarationNode *agg = decl->extractAggregate();
     32                if ( agg ) {
     33                        StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
     34                        set_next( nextStmt );
     35                        if ( decl->get_next() ) {
     36                                get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) );
    5037                                decl->set_next( 0 );
    5138                        } // if
    5239                } else {
    53                         if ( decl->get_link() ) {
    54                                 next = new StatementNode( dynamic_cast< DeclarationNode* >( decl->get_link() ) );
     40                        if ( decl->get_next() ) {
     41                                set_next(new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) );
    5542                                decl->set_next( 0 );
    5643                        } // if
    57                         this->decl = decl;
     44                        agg = decl;
    5845                } // if
     46                stmt.reset( new DeclStmt( noLabels, maybeBuild< Declaration >(agg) ) );
     47        } else {
     48                assert( false );
    5949        } // if
    6050}
    6151
    62 StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block ) : type( t ), control( ctrl_label ), block( block ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {
    63         this->control = ( t == Default ) ? 0 : control;
    64 }
    65 
    66 StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), isCatchRest ( false ) {}
    67 
    68 StatementNode::~StatementNode() {
    69         delete control;
    70         delete block;
    71         delete target;
    72         delete decl;
    73 }
    74 
    75 StatementNode * StatementNode::newCatchStmt( DeclarationNode *d, StatementNode *s, bool catchRestP ) {
    76         StatementNode *ret = new StatementNode( StatementNode::Catch, 0, s );
    77         ret->addDeclaration( d );
    78         ret->setCatchRest( catchRestP );
    79 
    80         return ret;
    81 }
    82 
    83 std::string StatementNode::get_target() const{
    84         if ( target )
    85                 return *target;
    86 
    87         return string("");
    88 }
    89 
    90 StatementNode * StatementNode::clone() const {
    91         StatementNode *newnode = new StatementNode( type, maybeClone( control ), maybeClone( block ) );
    92         if ( target ) {
    93                 newnode->target = new string( *target );
    94         } else {
    95                 newnode->target = 0;
     52StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
     53        StatementNode *prev = this;
     54        // find end of list and maintain previous pointer
     55        for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_next() ) {
     56                StatementNode *node = dynamic_cast< StatementNode * >(curr);
     57                assert( node );
     58                assert( dynamic_cast< CaseStmt * >(node->stmt.get()) );
     59                prev = curr;
     60        } // for
     61        // convert from StatementNode list to Statement list
     62        StatementNode *node = dynamic_cast< StatementNode * >(prev);
     63        std::list< Statement * > stmts;
     64        buildMoveList( stmt, stmts );
     65        // splice any new Statements to end of current Statements
     66        CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt.get());
     67        caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts );
     68        return this;
     69}
     70
     71Statement *build_expr( ExpressionNode *ctl ) {
     72        Expression *e = maybeMoveBuild< Expression >( ctl );
     73
     74        if ( e )
     75                return new ExprStmt( noLabels, e );
     76        else
     77                return new NullStmt( noLabels );
     78}
     79
     80Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) {
     81        Statement *thenb, *elseb = 0;
     82        std::list< Statement * > branches;
     83        buildMoveList< Statement, StatementNode >( then_stmt, branches );
     84        assert( branches.size() == 1 );
     85        thenb = branches.front();
     86
     87        if ( else_stmt ) {
     88                std::list< Statement * > branches;
     89                buildMoveList< Statement, StatementNode >( else_stmt, branches );
     90                assert( branches.size() == 1 );
     91                elseb = branches.front();
    9692        } // if
    97         newnode->decl = maybeClone( decl );
    98         return newnode;
    99 }
    100 
    101 StatementNode *StatementNode::add_label( const std::string *l ) {
    102         if ( l != 0 ) {
    103                 labels.push_front( *l );
    104                 delete l;
     93        return new IfStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), thenb, elseb );
     94}
     95
     96Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) {
     97        std::list< Statement * > branches;
     98        buildMoveList< Statement, StatementNode >( stmt, branches );
     99        assert( branches.size() >= 0 );                                         // size == 0 for switch (...) {}, i.e., no declaration or statements
     100        return new SwitchStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
     101}
     102Statement *build_case( ExpressionNode *ctl ) {
     103        std::list< Statement * > branches;
     104        return new CaseStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
     105}
     106Statement *build_default() {
     107        std::list< Statement * > branches;
     108        return new CaseStmt( noLabels, nullptr, branches, true );
     109}
     110
     111Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) {
     112        std::list< Statement * > branches;
     113        buildMoveList< Statement, StatementNode >( stmt, branches );
     114        assert( branches.size() == 1 );
     115        return new WhileStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), branches.front(), kind );
     116}
     117
     118Statement *build_for( ForCtl *forctl, StatementNode *stmt ) {
     119        std::list< Statement * > branches;
     120        buildMoveList< Statement, StatementNode >( stmt, branches );
     121        assert( branches.size() == 1 );
     122
     123        std::list< Statement * > init;
     124        if ( forctl->init != 0 ) {
     125                buildMoveList( forctl->init, init );
    105126        } // if
    106         return this;
    107 }
    108 
    109 StatementNode *StatementNode::append_block( StatementNode *stmt ) {
    110         if ( stmt != 0 ) {
    111                 if ( block == 0 )
    112                         block = stmt;
    113                 else
    114                         block->set_link( stmt );
    115         } // if
    116         return this;
    117 }
    118 
    119 StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
    120         if ( stmt != 0 ) {
    121                 StatementNode *next = ( StatementNode *)get_link();
    122                 if ( next && ( next->get_type() == StatementNode::Case || next->get_type() == StatementNode::Default ) )
    123                         next->append_last_case ( stmt );
    124                 else
    125                         if ( block == 0 )
    126                                 block = stmt;
    127                         else
    128                                 block->set_link( stmt );
    129         } // if
    130         return this;
    131 }
    132 
    133 void StatementNode::print( std::ostream &os, int indent ) const {
    134         if ( ! labels.empty() ) {
    135                 std::list<std::string>::const_iterator i;
    136 
    137                 os << string( indent, ' ' );
    138                 for ( i = labels.begin(); i != labels.end(); i++ )
    139                         os << *i << ":";
    140                 os << endl;
    141         } // if
    142 
    143         switch ( type ) {
    144           case Decl:
    145                 decl->print( os, indent );
    146                 break;
    147           case Exp:
    148                 if ( control ) {
    149                         os << string( indent, ' ' );
    150                         control->print( os, indent );
    151                         os << endl;
    152                 } else
    153                         os << string( indent, ' ' ) << "Null Statement" << endl;
    154                 break;
    155           default:
    156                 os << string( indent, ' ' ) << StatementNode::StType[type] << endl;
    157                 if ( type == Catch ) {
    158                         if ( decl ) {
    159                                 os << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;
    160                                 decl->print( os, indent + 2 * ParseNode::indent_by );
    161                         } else if ( isCatchRest ) {
    162                                 os << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;
    163                         } else {
    164                                 ; // should never reach here
    165                         } // if
    166                 } // if
    167                 if ( control ) {
    168                         os << string( indent + ParseNode::indent_by, ' ' ) << "Control: " << endl;
    169                         control->printList( os, indent + 2 * ParseNode::indent_by );
    170                 } // if
    171                 if ( block ) {
    172                         os << string( indent + ParseNode::indent_by, ' ' ) << "Cases: " << endl;
    173                         block->printList( os, indent + 2 * ParseNode::indent_by );
    174                 } // if
    175                 if ( target ) {
    176                         os << string( indent + ParseNode::indent_by, ' ' ) << "Target: " << get_target() << endl;
    177                 } // if
    178                 break;
    179         } // switch
    180 }
    181 
    182 Statement *StatementNode::build() const {
    183         std::list<Statement *> branches;
    184         std::list<Expression *> exps;
    185         std::list<Label> labs;
    186 
    187         if ( ! labels.empty() ) {
    188                 std::back_insert_iterator< std::list<Label> > lab_it( labs );
    189                 copy( labels.begin(), labels.end(), lab_it );
    190         } // if
    191 
    192         // try {
    193         buildList<Statement, StatementNode>( get_block(), branches );
    194 
    195         switch ( type ) {
    196           case Decl:
    197                 return new DeclStmt( labs, maybeBuild< Declaration >( decl ) );
    198           case Exp:
    199                 {
    200                         Expression *e = maybeBuild< Expression >( get_control() );
    201 
    202                         if ( e )
    203                                 return new ExprStmt( labs, e );
    204                         else
    205                                 return new NullStmt( labs );
    206                 }
    207           case If:
    208                 {
    209                         Statement *thenb = 0, *elseb = 0;
    210                         assert( branches.size() >= 1 );
    211 
    212                         thenb = branches.front();
    213                         branches.pop_front();
    214                         if ( ! branches.empty() ) {
    215                                 elseb = branches.front();
    216                                 branches.pop_front();
    217                         } // if
    218                         return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );
    219                 }
    220           case While:
    221                 assert( branches.size() == 1 );
    222                 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
    223           case Do:
    224                 assert( branches.size() == 1 );
    225                 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
    226           case For:
    227                 {
    228                         assert( branches.size() == 1 );
    229 
    230                         ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() );
    231                         assert( ctl != 0 );
    232 
    233                         std::list<Statement *> init;
    234                         if ( ctl->get_init() != 0 ) {
    235                                 buildList( ctl->get_init(), init );
    236                         } // if
    237 
    238                         Expression *cond = 0;
    239                         if ( ctl->get_condition() != 0 )
    240                                 cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
    241 
    242                         Expression *incr = 0;
    243                         if ( ctl->get_change() != 0 )
    244                                 incr = maybeBuild<Expression>(ctl->get_change());
    245 
    246                         return new ForStmt( labs, init, cond, incr, branches.front() );
    247                 }
    248           case Switch:
    249                 return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
    250           case Case:
    251                 return new CaseStmt( labs, maybeBuild<Expression>(get_control()), branches );
    252           case Default:
    253                 return new CaseStmt( labs, 0, branches, true );
    254           case Goto:
    255                 {
    256                         if ( get_target() == "" ) {                                     // computed goto
    257                                 assert( get_control() != 0 );
    258                                 return new BranchStmt( labs, maybeBuild<Expression>(get_control()), BranchStmt::Goto );
    259                         } // if
    260 
    261                         return new BranchStmt( labs, get_target(), BranchStmt::Goto );
    262                 }
    263           case Break:
    264                 return new BranchStmt( labs, get_target(), BranchStmt::Break );
    265           case Continue:
    266                 return new BranchStmt( labs, get_target(), BranchStmt::Continue );
    267           case Return:
    268           case Throw :
    269                 buildList( get_control(), exps );
    270                 if ( exps.size() ==0 )
    271                         return new ReturnStmt( labs, 0, type == Throw );
    272                 if ( exps.size() > 0 )
    273                         return new ReturnStmt( labs, exps.back(), type == Throw );
    274           case Try:
    275                 {
    276                         assert( branches.size() >= 0 );
    277                         CompoundStmt *tryBlock = dynamic_cast<CompoundStmt *>( branches.front());
    278                         branches.pop_front();
    279                         FinallyStmt *finallyBlock = 0;
    280                         if ( ( finallyBlock = dynamic_cast<FinallyStmt *>( branches.back())) ) {
    281                                 branches.pop_back();
    282                         } // if
    283                         return new TryStmt( labs, tryBlock, branches, finallyBlock );
    284                 }
    285           case Catch:
    286                 {
    287                         assert( branches.size() == 1 );
    288 
    289                         return new CatchStmt( labs, maybeBuild< Declaration >( decl ), branches.front(), isCatchRest );
    290                 }
    291           case Finally:
    292                 {
    293                         assert( branches.size() == 1 );
    294                         CompoundStmt *block = dynamic_cast<CompoundStmt *>( branches.front() );
    295                         assert( block != 0 );
    296 
    297                         return new FinallyStmt( labs, block );
    298                 }
    299           case Asm:
    300                 assert( false );
    301           default:
    302                 // shouldn't be here
    303                 return 0;
    304         } // switch
    305 }
    306 
    307 
    308 CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {}
    309 
    310 CompoundStmtNode::CompoundStmtNode( const string *name_ ) : StatementNode( name_ ), first( 0 ), last( 0 ) {}
    311 
    312 CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ) : first( stmt ) {
    313         if ( first ) {
    314                 last = ( StatementNode *)( stmt->get_last());
    315         } else {
    316                 last = 0;
    317         } // if
    318 }
    319 
    320 CompoundStmtNode::~CompoundStmtNode() {
    321         delete first;
    322 }
    323 
    324 void CompoundStmtNode::add_statement( StatementNode *stmt ) {
    325         if ( stmt != 0 ) {
    326                 last->set_link( stmt );
    327                 last = ( StatementNode *)( stmt->get_link());
    328         } // if
    329 }
    330 
    331 void CompoundStmtNode::print( ostream &os, int indent ) const {
    332         if ( first ) {
    333                 first->printList( os, indent+2 );
    334         } // if
    335 }
    336 
    337 Statement *CompoundStmtNode::build() const {
    338         std::list<Label> labs;
    339         const std::list<std::string> &labels = get_labels();
    340 
    341         if ( ! labels.empty() ) {
    342                 std::back_insert_iterator< std::list<Label> > lab_it( labs );
    343                 copy( labels.begin(), labels.end(), lab_it );
    344         } // if
    345 
    346         CompoundStmt *cs = new CompoundStmt( labs );
    347         buildList( first, cs->get_kids() );
     127
     128        Expression *cond = 0;
     129        if ( forctl->condition != 0 )
     130                cond = notZeroExpr( maybeMoveBuild< Expression >(forctl->condition) );
     131
     132        Expression *incr = 0;
     133        if ( forctl->change != 0 )
     134                incr = maybeMoveBuild< Expression >(forctl->change);
     135
     136        delete forctl;
     137        return new ForStmt( noLabels, init, cond, incr, branches.front() );
     138}
     139
     140Statement *build_branch( std::string identifier, BranchStmt::Type kind ) {
     141        return new BranchStmt( noLabels, identifier, kind );
     142}
     143Statement *build_computedgoto( ExpressionNode *ctl ) {
     144        return new BranchStmt( noLabels, maybeMoveBuild< Expression >(ctl), BranchStmt::Goto );
     145}
     146
     147Statement *build_return( ExpressionNode *ctl ) {
     148        std::list< Expression * > exps;
     149        buildMoveList( ctl, exps );
     150        return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr );
     151}
     152Statement *build_throw( ExpressionNode *ctl ) {
     153        std::list< Expression * > exps;
     154        buildMoveList( ctl, exps );
     155        assertf( exps.size() < 2, "This means we are leaking memory");
     156        return new ReturnStmt( noLabels, !exps.empty() ? exps.back() : nullptr, true );
     157}
     158
     159Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) {
     160        std::list< Statement * > branches;
     161        buildMoveList< Statement, StatementNode >( catch_stmt, branches );
     162        CompoundStmt *tryBlock = dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt));
     163        assert( tryBlock );
     164        FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) );
     165        return new TryStmt( noLabels, tryBlock, branches, finallyBlock );
     166}
     167Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny ) {
     168        std::list< Statement * > branches;
     169        buildMoveList< Statement, StatementNode >( stmt, branches );
     170        assert( branches.size() == 1 );
     171        return new CatchStmt( noLabels, maybeMoveBuild< Declaration >(decl), branches.front(), catchAny );
     172}
     173Statement *build_finally( StatementNode *stmt ) {
     174        std::list< Statement * > branches;
     175        buildMoveList< Statement, StatementNode >( stmt, branches );
     176        assert( branches.size() == 1 );
     177        return new FinallyStmt( noLabels, dynamic_cast< CompoundStmt * >( branches.front() ) );
     178}
     179
     180Statement *build_compound( StatementNode *first ) {
     181        CompoundStmt *cs = new CompoundStmt( noLabels );
     182        buildMoveList( first, cs->get_kids() );
    348183        return cs;
    349184}
    350185
    351 
    352 AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantNode *instruction, ExpressionNode *output, ExpressionNode *input, ConstantNode *clobber, LabelNode *gotolabels ) :
    353         StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
    354         if ( gotolabels ) {
    355                 this->gotolabels = gotolabels->get_labels();
    356                 delete gotolabels;
    357         } // if
    358 }
    359 
    360 AsmStmtNode::~AsmStmtNode() {
    361         delete instruction; delete output; delete input; delete clobber;
    362 }
    363 
    364 void AsmStmtNode::print( std::ostream &os, int indent ) const {
    365         StatementNode::print( os, indent );                                     // print statement labels
    366         os << string( indent + ParseNode::indent_by, ' ' ) << "volatile:" << voltile << endl;
    367         if ( instruction ) {
    368                 os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl;
    369                 instruction->printList( os, indent + 2 * ParseNode::indent_by );
    370         } // if
    371         if ( output ) {
    372                 os << string( indent + ParseNode::indent_by, ' ' ) << "Output:" << endl;
    373                 output->printList( os, indent + 2 * ParseNode::indent_by );
    374         } // if
    375         if ( input ) {
    376                 os << string( indent + ParseNode::indent_by, ' ' ) << "Input:" << endl;
    377                 input->printList( os, indent + 2 * ParseNode::indent_by );
    378         } // if
    379         if ( clobber ) {
    380                 os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl;
    381                 clobber->printList( os, indent + 2 * ParseNode::indent_by );
    382         } // if
    383         if ( ! gotolabels.empty() ) {
    384                 os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
    385                 os << string( indent + 2 * ParseNode::indent_by, ' ' );
    386                 for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) {
    387                         os << *i;
    388                         i++;
    389                   if ( i == gotolabels.end() ) break;
    390                         os << ", ";
    391                 }
    392                 os << endl;
    393         } // if
    394 }
    395 
    396 Statement *AsmStmtNode::build() const {
    397         std::list<Label> labs;
    398 
    399         if ( ! get_labels().empty() ) {
    400                 std::back_insert_iterator< std::list<Label> > lab_it( labs );
    401                 copy( get_labels().begin(), get_labels().end(), lab_it );
    402         } // if
    403 
     186Statement *build_asmstmt( bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) {
    404187        std::list< Expression * > out, in;
    405188        std::list< ConstantExpr * > clob;
    406         buildList( output, out );
    407         buildList( input, in );
    408         buildList( clobber, clob );
    409         std::list< Label > gotolabs = gotolabels;
    410         return new AsmStmt( labs, voltile, (ConstantExpr *)maybeBuild< Expression >( instruction ), out, in, clob, gotolabs );
     189
     190        buildMoveList( output, out );
     191        buildMoveList( input, in );
     192        buildMoveList( clobber, clob );
     193        return new AsmStmt( noLabels, voltile, instruction, out, in, clob, gotolabels ? gotolabels->labels : noLabels );
    411194}
    412195
  • src/Parser/TypeData.cc

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 07:51:48 2016
    13 // Update Count     : 58
     12// Last Modified On : Thu Aug 18 23:48:44 2016
     13// Update Count     : 64
    1414//
    1515
     
    182182                break;
    183183          case Array:
    184 //PAB           newtype->array->dimension = maybeClone( array->dimension );
    185184                newtype->array->dimension = array->dimension;
    186185                newtype->array->isVarLen = array->isVarLen;
     
    479478}
    480479
    481 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init ) const {
     480Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer *init ) const {
    482481        if ( kind == TypeData::Function ) {
    483482                FunctionDecl *decl;
     
    489488                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn );
    490489                        } else {
    491                                 // std::list<Label> ls;
    492                                 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn );
     490                                // std::list< Label > ls;
     491                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn );
    493492                        } // if
    494493                } else {
    495494                        decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline, isNoreturn );
    496495                } // if
    497                 for ( DeclarationNode *cur = function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_link() ) ) {
     496                for ( DeclarationNode *cur = function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_next() ) ) {
    498497                        if ( cur->get_name() != "" ) {
    499498                                decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() );
     
    909908        buildList( enumeration->constants, ret->get_members() );
    910909        std::list< Declaration * >::iterator members = ret->get_members().begin();
    911         for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_link() ), ++members ) {
    912                 if ( cur->get_enumeratorValue() != NULL ) {
    913                         ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
     910        for ( const DeclarationNode *cur = enumeration->constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) {
     911                if ( cur->get_enumeratorValue() != nullptr ) {
     912                        ObjectDecl *member = dynamic_cast< ObjectDecl * >(*members);
    914913                        member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
    915914                } // if
  • src/Parser/TypeData.h

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 20:52:02 2016
    13 // Update Count     : 20
     12// Last Modified On : Thu Aug 18 23:48:52 2016
     13// Update Count     : 22
    1414//
    1515
     
    126126        TypeData * extractAggregate( bool toplevel = true ) const;
    127127        // helper function for DeclNodeImpl::build
    128         Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer * init = 0 ) const;
     128        Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init = 0 ) const;
    129129        // helper functions for build()
    130130        Type::Qualifiers buildQualifiers() const;
  • src/Parser/TypedefTable.cc

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:57:30 2016
    13 // Update Count     : 24
     12// Last Modified On : Mon Aug 15 18:24:42 2016
     13// Update Count     : 25
    1414//
    1515
     
    6464                tableType::iterator curPos = table.find( identifier );
    6565                if ( curPos == table.end()) {
    66                         list<Entry> newList;
     66                        list< Entry > newList;
    6767                        newList.push_front( newEntry );
    6868                        table[identifier] = newList;
    6969                } else {
    70                         list<Entry>::iterator listPos = (*curPos ).second.begin();
     70                        list< Entry >::iterator listPos = (*curPos ).second.begin();
    7171                        while ( listPos != (*curPos ).second.end() && listPos->scope > scope ) {
    7272                                listPos++;
     
    127127        debugPrint( "Leaving scope " << currentScope << endl );
    128128        for ( tableType::iterator i = table.begin(); i != table.end(); ) {
    129                 list<Entry> &declList = (*i).second;
     129                list< Entry > &declList = (*i).second;
    130130                while ( ! declList.empty() && declList.front().scope == currentScope ) {
    131131                        declList.pop_front();
     
    157157        for ( tableType::const_iterator i = table.begin(); i != table.end(); i++) {
    158158                debugPrint( (*i ).first << ": " );
    159                 list<Entry> declList = (*i).second;
    160                 for ( list<Entry>::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
     159                list< Entry > declList = (*i).second;
     160                for ( list< Entry >::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
    161161                        debugPrint( "(" << (*j).scope << " " << (*j).kind << ") " );
    162162                }
  • src/Parser/TypedefTable.h

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:59:56 2016
    13 // Update Count     : 27
     12// Last Modified On : Mon Aug 15 18:25:04 2016
     13// Update Count     : 28
    1414//
    1515
     
    3939        };
    4040
    41         typedef std::map<std::string, std::list<Entry> > tableType;
     41        typedef std::map< std::string, std::list< Entry > > tableType;
    4242        tableType table;
    4343
  • src/Parser/lex.cc

    r03da511 r04cdd9b  
    14681468 * Author           : Peter A. Buhr
    14691469 * Created On       : Sat Sep 22 08:58:10 2001
    1470  * Last Modified By :
    1471  * Last Modified On : Sun Jul 31 07:19:36 2016
    1472  * Update Count     : 459
     1470 * Last Modified By : Peter A. Buhr
     1471 * Last Modified On : Thu Aug 18 22:17:30 2016
     1472 * Update Count     : 472
    14731473 */
    14741474#line 20 "lex.ll"
     
    14801480
    14811481#include <string>
     1482#include <cstdio>                                                                               // FILENAME_MAX
    14821483
    14831484#include "lex.h"
     
    14911492#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
    14921493#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
    1493 #define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN( x )
     1494#define RETURN_CHAR(x)          yylval.tok.str = nullptr; RETURN_LOCN( x )
    14941495#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN( x )
    14951496
    1496 #define WHITE_RETURN(x)                                                                 // do nothing
     1497#define WHITE_RETURN(x)         // do nothing
    14971498#define NEWLINE_RETURN()        WHITE_RETURN( '\n' )
    14981499#define ASCIIOP_RETURN()        RETURN_CHAR( (int)yytext[0] ) // single character operator
    1499 #define NAMEDOP_RETURN(x)       RETURN_VAL( x )                         // multichar operator, with a name
     1500#define NAMEDOP_RETURN(x)       RETURN_CHAR( x )                        // multichar operator, with a name
    15001501#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    15011502#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
     
    15311532
    15321533
    1533 #line 1534 "Parser/lex.cc"
     1534#line 1535 "Parser/lex.cc"
    15341535
    15351536#define INITIAL 0
     
    17231724        register int yy_act;
    17241725   
    1725 #line 138 "lex.ll"
     1726#line 139 "lex.ll"
    17261727
    17271728                                   /* line directives */
    1728 #line 1729 "Parser/lex.cc"
     1729#line 1730 "Parser/lex.cc"
    17291730
    17301731        if ( !(yy_init) )
     
    18231824/* rule 1 can match eol */
    18241825YY_RULE_SETUP
    1825 #line 140 "lex.ll"
     1826#line 141 "lex.ll"
    18261827{
    18271828        /* " stop highlighting */
     1829        static char *filename[FILENAME_MAX];                            // temporarily store current source-file name
    18281830        char *end_num;
    18291831        char *begin_string, *end_string;
    1830         char *filename;
    18311832        long lineno, length;
    18321833        lineno = strtol( yytext + 1, &end_num, 0 );
    18331834        begin_string = strchr( end_num, '"' );
    1834         if ( begin_string ) {
    1835                 end_string = strchr( begin_string + 1, '"' );
    1836                 if ( end_string ) {
    1837                         length = end_string - begin_string - 1;
    1838                         filename = new char[ length + 1 ];
    1839                         memcpy( filename, begin_string + 1, length );
    1840                         filename[ length ] = '\0';
    1841                         //std::cout << "file " << filename << " line " << lineno << std::endl;
    1842                         yylineno = lineno;
    1843                         yyfilename = filename;
    1844                 } // if
     1835        if ( begin_string ) {                                                           // file name ?
     1836                end_string = strchr( begin_string + 1, '"' );   // look for ending delimiter
     1837                assert( end_string );                                                   // closing quote ?
     1838                length = end_string - begin_string - 1;                 // file-name length without quotes or sentinel
     1839                assert( length < FILENAME_MAX );                                // room for sentinel ?
     1840                memcpy( &filename, begin_string + 1, length );  // copy file name from yytext
     1841                filename[ length ] = '\0';                                              // terminate string with sentinel
     1842                //std::cout << "file " << filename << " line " << lineno << std::endl;
     1843                yylineno = lineno;
     1844                yyfilename = filename[0];
    18451845        } // if
    18461846}
  • src/Parser/lex.ll

    r03da511 r04cdd9b  
    99 * Author           : Peter A. Buhr
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    11  * Last Modified By :
    12  * Last Modified On : Sun Jul 31 07:19:36 2016
    13  * Update Count     : 459
     11 * Last Modified By : Peter A. Buhr
     12 * Last Modified On : Thu Aug 18 22:17:30 2016
     13 * Update Count     : 472
    1414 */
    1515
     
    2525
    2626#include <string>
     27#include <cstdio>                                                                               // FILENAME_MAX
    2728
    2829#include "lex.h"
     
    3637#define RETURN_LOCN(x)          yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
    3738#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
    38 #define RETURN_CHAR(x)          yylval.tok.str = NULL; RETURN_LOCN( x )
     39#define RETURN_CHAR(x)          yylval.tok.str = nullptr; RETURN_LOCN( x )
    3940#define RETURN_STR(x)           yylval.tok.str = strtext; RETURN_LOCN( x )
    4041
    41 #define WHITE_RETURN(x)                                                                 // do nothing
     42#define WHITE_RETURN(x)         // do nothing
    4243#define NEWLINE_RETURN()        WHITE_RETURN( '\n' )
    4344#define ASCIIOP_RETURN()        RETURN_CHAR( (int)yytext[0] ) // single character operator
    44 #define NAMEDOP_RETURN(x)       RETURN_VAL( x )                         // multichar operator, with a name
     45#define NAMEDOP_RETURN(x)       RETURN_CHAR( x )                        // multichar operator, with a name
    4546#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    4647#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
     
    140141^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" {
    141142        /* " stop highlighting */
     143        static char *filename[FILENAME_MAX];                            // temporarily store current source-file name
    142144        char *end_num;
    143145        char *begin_string, *end_string;
    144         char *filename;
    145146        long lineno, length;
    146147        lineno = strtol( yytext + 1, &end_num, 0 );
    147148        begin_string = strchr( end_num, '"' );
    148         if ( begin_string ) {
    149                 end_string = strchr( begin_string + 1, '"' );
    150                 if ( end_string ) {
    151                         length = end_string - begin_string - 1;
    152                         filename = new char[ length + 1 ];
    153                         memcpy( filename, begin_string + 1, length );
    154                         filename[ length ] = '\0';
    155                         //std::cout << "file " << filename << " line " << lineno << std::endl;
    156                         yylineno = lineno;
    157                         yyfilename = filename;
    158                 } // if
     149        if ( begin_string ) {                                                           // file name ?
     150                end_string = strchr( begin_string + 1, '"' );   // look for ending delimiter
     151                assert( end_string );                                                   // closing quote ?
     152                length = end_string - begin_string - 1;                 // file-name length without quotes or sentinel
     153                assert( length < FILENAME_MAX );                                // room for sentinel ?
     154                memcpy( &filename, begin_string + 1, length );  // copy file name from yytext
     155                filename[ length ] = '\0';                                              // terminate string with sentinel
     156                //std::cout << "file " << filename << " line " << lineno << std::endl;
     157                yylineno = lineno;
     158                yyfilename = filename[0];
    159159        } // if
    160160}
  • src/Parser/module.mk

    r03da511 r04cdd9b  
    1111## Created On       : Sat May 16 15:29:09 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Thu Jan 28 11:57:23 2016
    14 ## Update Count     : 100
     13## Last Modified On : Tue Aug 16 17:28:34 2016
     14## Update Count     : 101
    1515###############################################################################
    1616
     
    2929       Parser/TypeData.cc \
    3030       Parser/LinkageSpec.cc \
    31        Parser/parseutility.cc \
    32        Parser/Parser.cc
     31       Parser/parseutility.cc
    3332
    3433MAINTAINERCLEANFILES += Parser/parser.output
  • src/Parser/parser.cc

    r03da511 r04cdd9b  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 3.0.2.  */
    22
    33/* Bison implementation for Yacc-like parsers in C
    4    
    5       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    6    
     4
     5   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
     6
    77   This program is free software: you can redistribute it and/or modify
    88   it under the terms of the GNU General Public License as published by
    99   the Free Software Foundation, either version 3 of the License, or
    1010   (at your option) any later version.
    11    
     11
    1212   This program is distributed in the hope that it will be useful,
    1313   but WITHOUT ANY WARRANTY; without even the implied warranty of
    1414   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1515   GNU General Public License for more details.
    16    
     16
    1717   You should have received a copy of the GNU General Public License
    1818   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     
    2727   Bison output files to be licensed under the GNU General Public
    2828   License without this special exception.
    29    
     29
    3030   This special exception was added by the Free Software Foundation in
    3131   version 2.2 of Bison.  */
     
    4545
    4646/* Bison version.  */
    47 #define YYBISON_VERSION "2.5"
     47#define YYBISON_VERSION "3.0.2"
    4848
    4949/* Skeleton name.  */
     
    5959#define YYPULL 1
    6060
    61 /* Using locations.  */
    62 #define YYLSP_NEEDED 0
    6361
    6462
    6563
    6664/* Copy the first part of user declarations.  */
    67 
    68 /* Line 268 of yacc.c  */
    69 #line 42 "parser.yy"
     65#line 42 "parser.yy" /* yacc.c:339  */
    7066
    7167#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
    7268#define YYDEBUG 1                                                                               // get the pretty debugging code to compile
    73 extern char *yytext;
    7469
    7570#undef __GNUC_MINOR__
     
    8479#include "LinkageSpec.h"
    8580
    86 DeclarationNode *theTree = 0;                                                   // the resulting parse tree
    87 LinkageSpec::Type linkage = LinkageSpec::Cforall;
    88 std::stack< LinkageSpec::Type > linkageStack;
    89 TypedefTable typedefTable;
     81extern DeclarationNode * parseTree;
     82extern LinkageSpec::Spec linkage;
     83extern TypedefTable typedefTable;
     84
     85std::stack< LinkageSpec::Spec > linkageStack;
    9086
    9187void appendStr( std::string &to, std::string *from ) {
     
    9490} // appendStr
    9591
    96 
    97 /* Line 268 of yacc.c  */
    98 #line 99 "Parser/parser.cc"
    99 
    100 /* Enabling traces.  */
    101 #ifndef YYDEBUG
    102 # define YYDEBUG 1
    103 #endif
     92#line 93 "Parser/parser.cc" /* yacc.c:339  */
     93
     94# ifndef YY_NULLPTR
     95#  if defined __cplusplus && 201103L <= __cplusplus
     96#   define YY_NULLPTR nullptr
     97#  else
     98#   define YY_NULLPTR 0
     99#  endif
     100# endif
    104101
    105102/* Enabling verbose error messages.  */
     
    111108#endif
    112109
    113 /* Enabling the token table.  */
    114 #ifndef YYTOKEN_TABLE
    115 # define YYTOKEN_TABLE 0
     110/* In a future release of Bison, this section will be replaced
     111   by #include "y.tab.h".  */
     112#ifndef YY_YY_Y_TAB_H_INCLUDED
     113# define YY_YY_Y_TAB_H_INCLUDED
     114/* Debug traces.  */
     115#ifndef YYDEBUG
     116# define YYDEBUG 1
    116117#endif
    117 
    118 
    119 /* Tokens.  */
     118#if YYDEBUG
     119extern int yydebug;
     120#endif
     121
     122/* Token type.  */
    120123#ifndef YYTOKENTYPE
    121124# define YYTOKENTYPE
    122    /* Put the tokens into the symbol table, so that GDB and other debuggers
    123       know about them.  */
    124    enum yytokentype {
    125      TYPEDEF = 258,
    126      AUTO = 259,
    127      EXTERN = 260,
    128      REGISTER = 261,
    129      STATIC = 262,
    130      INLINE = 263,
    131      FORTRAN = 264,
    132      CONST = 265,
    133      VOLATILE = 266,
    134      RESTRICT = 267,
    135      FORALL = 268,
    136      LVALUE = 269,
    137      VOID = 270,
    138      CHAR = 271,
    139      SHORT = 272,
    140      INT = 273,
    141      LONG = 274,
    142      FLOAT = 275,
    143      DOUBLE = 276,
    144      SIGNED = 277,
    145      UNSIGNED = 278,
    146      VALIST = 279,
    147      BOOL = 280,
    148      COMPLEX = 281,
    149      IMAGINARY = 282,
    150      TYPEOF = 283,
    151      LABEL = 284,
    152      ENUM = 285,
    153      STRUCT = 286,
    154      UNION = 287,
    155      OTYPE = 288,
    156      FTYPE = 289,
    157      DTYPE = 290,
    158      TRAIT = 291,
    159      SIZEOF = 292,
    160      OFFSETOF = 293,
    161      ATTRIBUTE = 294,
    162      EXTENSION = 295,
    163      IF = 296,
    164      ELSE = 297,
    165      SWITCH = 298,
    166      CASE = 299,
    167      DEFAULT = 300,
    168      DO = 301,
    169      WHILE = 302,
    170      FOR = 303,
    171      BREAK = 304,
    172      CONTINUE = 305,
    173      GOTO = 306,
    174      RETURN = 307,
    175      CHOOSE = 308,
    176      DISABLE = 309,
    177      ENABLE = 310,
    178      FALLTHRU = 311,
    179      TRY = 312,
    180      CATCH = 313,
    181      CATCHRESUME = 314,
    182      FINALLY = 315,
    183      THROW = 316,
    184      THROWRESUME = 317,
    185      AT = 318,
    186      ASM = 319,
    187      ALIGNAS = 320,
    188      ALIGNOF = 321,
    189      ATOMIC = 322,
    190      GENERIC = 323,
    191      NORETURN = 324,
    192      STATICASSERT = 325,
    193      THREADLOCAL = 326,
    194      IDENTIFIER = 327,
    195      QUOTED_IDENTIFIER = 328,
    196      TYPEDEFname = 329,
    197      TYPEGENname = 330,
    198      ATTR_IDENTIFIER = 331,
    199      ATTR_TYPEDEFname = 332,
    200      ATTR_TYPEGENname = 333,
    201      INTEGERconstant = 334,
    202      FLOATINGconstant = 335,
    203      CHARACTERconstant = 336,
    204      STRINGliteral = 337,
    205      ZERO = 338,
    206      ONE = 339,
    207      ARROW = 340,
    208      ICR = 341,
    209      DECR = 342,
    210      LS = 343,
    211      RS = 344,
    212      LE = 345,
    213      GE = 346,
    214      EQ = 347,
    215      NE = 348,
    216      ANDAND = 349,
    217      OROR = 350,
    218      ELLIPSIS = 351,
    219      MULTassign = 352,
    220      DIVassign = 353,
    221      MODassign = 354,
    222      PLUSassign = 355,
    223      MINUSassign = 356,
    224      LSassign = 357,
    225      RSassign = 358,
    226      ANDassign = 359,
    227      ERassign = 360,
    228      ORassign = 361,
    229      ATassign = 362,
    230      THEN = 363
    231    };
     125  enum yytokentype
     126  {
     127    TYPEDEF = 258,
     128    AUTO = 259,
     129    EXTERN = 260,
     130    REGISTER = 261,
     131    STATIC = 262,
     132    INLINE = 263,
     133    FORTRAN = 264,
     134    CONST = 265,
     135    VOLATILE = 266,
     136    RESTRICT = 267,
     137    FORALL = 268,
     138    LVALUE = 269,
     139    VOID = 270,
     140    CHAR = 271,
     141    SHORT = 272,
     142    INT = 273,
     143    LONG = 274,
     144    FLOAT = 275,
     145    DOUBLE = 276,
     146    SIGNED = 277,
     147    UNSIGNED = 278,
     148    VALIST = 279,
     149    BOOL = 280,
     150    COMPLEX = 281,
     151    IMAGINARY = 282,
     152    TYPEOF = 283,
     153    LABEL = 284,
     154    ENUM = 285,
     155    STRUCT = 286,
     156    UNION = 287,
     157    OTYPE = 288,
     158    FTYPE = 289,
     159    DTYPE = 290,
     160    TRAIT = 291,
     161    SIZEOF = 292,
     162    OFFSETOF = 293,
     163    ATTRIBUTE = 294,
     164    EXTENSION = 295,
     165    IF = 296,
     166    ELSE = 297,
     167    SWITCH = 298,
     168    CASE = 299,
     169    DEFAULT = 300,
     170    DO = 301,
     171    WHILE = 302,
     172    FOR = 303,
     173    BREAK = 304,
     174    CONTINUE = 305,
     175    GOTO = 306,
     176    RETURN = 307,
     177    CHOOSE = 308,
     178    DISABLE = 309,
     179    ENABLE = 310,
     180    FALLTHRU = 311,
     181    TRY = 312,
     182    CATCH = 313,
     183    CATCHRESUME = 314,
     184    FINALLY = 315,
     185    THROW = 316,
     186    THROWRESUME = 317,
     187    AT = 318,
     188    ASM = 319,
     189    ALIGNAS = 320,
     190    ALIGNOF = 321,
     191    ATOMIC = 322,
     192    GENERIC = 323,
     193    NORETURN = 324,
     194    STATICASSERT = 325,
     195    THREADLOCAL = 326,
     196    IDENTIFIER = 327,
     197    QUOTED_IDENTIFIER = 328,
     198    TYPEDEFname = 329,
     199    TYPEGENname = 330,
     200    ATTR_IDENTIFIER = 331,
     201    ATTR_TYPEDEFname = 332,
     202    ATTR_TYPEGENname = 333,
     203    INTEGERconstant = 334,
     204    FLOATINGconstant = 335,
     205    CHARACTERconstant = 336,
     206    STRINGliteral = 337,
     207    ZERO = 338,
     208    ONE = 339,
     209    ARROW = 340,
     210    ICR = 341,
     211    DECR = 342,
     212    LS = 343,
     213    RS = 344,
     214    LE = 345,
     215    GE = 346,
     216    EQ = 347,
     217    NE = 348,
     218    ANDAND = 349,
     219    OROR = 350,
     220    ELLIPSIS = 351,
     221    MULTassign = 352,
     222    DIVassign = 353,
     223    MODassign = 354,
     224    PLUSassign = 355,
     225    MINUSassign = 356,
     226    LSassign = 357,
     227    RSassign = 358,
     228    ANDassign = 359,
     229    ERassign = 360,
     230    ORassign = 361,
     231    ATassign = 362,
     232    THEN = 363
     233  };
    232234#endif
    233235/* Tokens.  */
     
    339341#define THEN 363
    340342
    341 
    342 
    343 
     343/* Value type.  */
    344344#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    345 typedef union YYSTYPE
     345typedef union YYSTYPE YYSTYPE;
     346union YYSTYPE
    346347{
    347 
    348 /* Line 293 of yacc.c  */
    349 #line 115 "parser.yy"
     348#line 115 "parser.yy" /* yacc.c:355  */
    350349
    351350        Token tok;
     
    356355        DeclarationNode::TypeClass tclass;
    357356        StatementNode *sn;
    358         ConstantNode *constant;
     357        ConstantExpr *constant;
     358        ForCtl *fctl;
    359359        LabelNode *label;
    360360        InitializerNode *in;
     
    362362        bool flag;
    363363
    364 
    365 
    366 /* Line 293 of yacc.c  */
    367 #line 368 "Parser/parser.cc"
    368 } YYSTYPE;
     364#line 365 "Parser/parser.cc" /* yacc.c:355  */
     365};
    369366# define YYSTYPE_IS_TRIVIAL 1
    370 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
    371367# define YYSTYPE_IS_DECLARED 1
    372368#endif
    373369
    374370
     371extern YYSTYPE yylval;
     372
     373int yyparse (void);
     374
     375#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
     376
    375377/* Copy the second part of user declarations.  */
    376378
    377 
    378 /* Line 343 of yacc.c  */
    379 #line 380 "Parser/parser.cc"
     379#line 380 "Parser/parser.cc" /* yacc.c:358  */
    380380
    381381#ifdef short
     
    391391#ifdef YYTYPE_INT8
    392392typedef YYTYPE_INT8 yytype_int8;
    393 #elif (defined __STDC__ || defined __C99__FUNC__ \
    394      || defined __cplusplus || defined _MSC_VER)
     393#else
    395394typedef signed char yytype_int8;
    396 #else
    397 typedef short int yytype_int8;
    398395#endif
    399396
     
    415412# elif defined size_t
    416413#  define YYSIZE_T size_t
    417 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
    418      || defined __cplusplus || defined _MSC_VER)
     414# elif ! defined YYSIZE_T
    419415#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    420416#  define YYSIZE_T size_t
     
    430426#  if ENABLE_NLS
    431427#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    432 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
     428#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    433429#  endif
    434430# endif
    435431# ifndef YY_
    436 #  define YY_(msgid) msgid
     432#  define YY_(Msgid) Msgid
    437433# endif
    438434#endif
    439435
     436#ifndef YY_ATTRIBUTE
     437# if (defined __GNUC__                                               \
     438      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
     439     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
     440#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
     441# else
     442#  define YY_ATTRIBUTE(Spec) /* empty */
     443# endif
     444#endif
     445
     446#ifndef YY_ATTRIBUTE_PURE
     447# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
     448#endif
     449
     450#ifndef YY_ATTRIBUTE_UNUSED
     451# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
     452#endif
     453
     454#if !defined _Noreturn \
     455     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
     456# if defined _MSC_VER && 1200 <= _MSC_VER
     457#  define _Noreturn __declspec (noreturn)
     458# else
     459#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
     460# endif
     461#endif
     462
    440463/* Suppress unused-variable warnings by "using" E.  */
    441464#if ! defined lint || defined __GNUC__
    442 # define YYUSE(e) ((void) (e))
     465# define YYUSE(E) ((void) (E))
    443466#else
    444 # define YYUSE(e) /* empty */
     467# define YYUSE(E) /* empty */
    445468#endif
    446469
    447 /* Identity function, used to suppress warnings about constant conditions.  */
    448 #ifndef lint
    449 # define YYID(n) (n)
     470#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
     471/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
     472# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     473    _Pragma ("GCC diagnostic push") \
     474    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
     475    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
     476# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
     477    _Pragma ("GCC diagnostic pop")
    450478#else
    451 #if (defined __STDC__ || defined __C99__FUNC__ \
    452      || defined __cplusplus || defined _MSC_VER)
    453 static int
    454 YYID (int yyi)
    455 #else
    456 static int
    457 YYID (yyi)
    458     int yyi;
     479# define YY_INITIAL_VALUE(Value) Value
    459480#endif
    460 {
    461   return yyi;
    462 }
     481#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     482# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     483# define YY_IGNORE_MAYBE_UNINITIALIZED_END
    463484#endif
     485#ifndef YY_INITIAL_VALUE
     486# define YY_INITIAL_VALUE(Value) /* Nothing. */
     487#endif
     488
    464489
    465490#if ! defined yyoverflow || YYERROR_VERBOSE
     
    480505#   else
    481506#    define YYSTACK_ALLOC alloca
    482 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    483      || defined __cplusplus || defined _MSC_VER)
     507#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
    484508#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     509      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    485510#     ifndef EXIT_SUCCESS
    486511#      define EXIT_SUCCESS 0
     
    492517
    493518# ifdef YYSTACK_ALLOC
    494    /* Pacify GCC's `empty if-body' warning.  */
    495 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
     519   /* Pacify GCC's 'empty if-body' warning.  */
     520#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
    496521#  ifndef YYSTACK_ALLOC_MAXIMUM
    497522    /* The OS might guarantee only one guard page at the bottom of the stack,
     
    509534#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    510535       && ! ((defined YYMALLOC || defined malloc) \
    511              && (defined YYFREE || defined free)))
     536             && (defined YYFREE || defined free)))
    512537#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    513538#   ifndef EXIT_SUCCESS
     
    517542#  ifndef YYMALLOC
    518543#   define YYMALLOC malloc
    519 #   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    520      || defined __cplusplus || defined _MSC_VER)
     544#   if ! defined malloc && ! defined EXIT_SUCCESS
    521545void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    522546#   endif
     
    524548#  ifndef YYFREE
    525549#   define YYFREE free
    526 #   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
    527      || defined __cplusplus || defined _MSC_VER)
     550#   if ! defined free && ! defined EXIT_SUCCESS
    528551void free (void *); /* INFRINGES ON USER NAME SPACE */
    529552#   endif
     
    535558#if (! defined yyoverflow \
    536559     && (! defined __cplusplus \
    537         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     560        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    538561
    539562/* A type that is properly aligned for any stack member.  */
     
    560583   stack.  Advance YYPTR to a properly aligned location for the next
    561584   stack.  */
    562 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    563     do                                                                  \
    564       {                                                                 \
    565         YYSIZE_T yynewbytes;                                            \
    566         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
    567         Stack = &yyptr->Stack_alloc;                                    \
    568         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    569         yyptr += yynewbytes / sizeof (*yyptr);                          \
    570       }                                                                 \
    571     while (YYID (0))
     585# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     586    do                                                                  \
     587      {                                                                 \
     588        YYSIZE_T yynewbytes;                                            \
     589        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
     590        Stack = &yyptr->Stack_alloc;                                    \
     591        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
     592        yyptr += yynewbytes / sizeof (*yyptr);                          \
     593      }                                                                 \
     594    while (0)
    572595
    573596#endif
    574597
    575598#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    576 /* Copy COUNT objects from FROM to TO.  The source and destination do
     599/* Copy COUNT objects from SRC to DST.  The source and destination do
    577600   not overlap.  */
    578601# ifndef YYCOPY
    579602#  if defined __GNUC__ && 1 < __GNUC__
    580 #   define YYCOPY(To, From, Count) \
    581       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
     603#   define YYCOPY(Dst, Src, Count) \
     604      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
    582605#  else
    583 #   define YYCOPY(To, From, Count)              \
    584       do                                        \
    585         {                                       \
    586           YYSIZE_T yyi;                         \
    587           for (yyi = 0; yyi < (Count); yyi++)   \
    588             (To)[yyi] = (From)[yyi];            \
    589         }                                       \
    590       while (YYID (0))
     606#   define YYCOPY(Dst, Src, Count)              \
     607      do                                        \
     608        {                                       \
     609          YYSIZE_T yyi;                         \
     610          for (yyi = 0; yyi < (Count); yyi++)   \
     611            (Dst)[yyi] = (Src)[yyi];            \
     612        }                                       \
     613      while (0)
    591614#  endif
    592615# endif
     
    594617
    595618/* YYFINAL -- State number of the termination state.  */
    596 #define YYFINAL  251
     619#define YYFINAL  250
    597620/* YYLAST -- Last index in YYTABLE.  */
    598 #define YYLAST   10969
     621#define YYLAST   10977
    599622
    600623/* YYNTOKENS -- Number of terminals.  */
    601624#define YYNTOKENS  133
    602625/* YYNNTS -- Number of nonterminals.  */
    603 #define YYNNTS  241
     626#define YYNNTS  240
    604627/* YYNRULES -- Number of rules.  */
    605 #define YYNRULES  754
    606 /* YYNRULES -- Number of states.  */
    607 #define YYNSTATES  1577
    608 
    609 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     628#define YYNRULES  749
     629/* YYNSTATES -- Number of states.  */
     630#define YYNSTATES  1553
     631
     632/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
     633   by yylex, with out-of-bounds checking.  */
    610634#define YYUNDEFTOK  2
    611635#define YYMAXUTOK   363
    612636
    613 #define YYTRANSLATE(YYX)                                                \
     637#define YYTRANSLATE(YYX)                                                \
    614638  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    615639
    616 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
     640/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
     641   as returned by yylex, without out-of-bounds checking.  */
    617642static const yytype_uint8 yytranslate[] =
    618643{
     
    620645       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    621646       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    622        2,     2,     2,   122,     2,     2,     2,   125,   119,     2,
    623      109,   110,   118,   120,   116,   121,   113,   124,     2,     2,
    624        2,     2,     2,     2,     2,     2,     2,     2,   117,   132,
    625      126,   131,   127,   130,     2,     2,     2,     2,     2,     2,
     647       2,     2,     2,   121,     2,     2,     2,   124,   118,     2,
     648     109,   110,   117,   119,   116,   120,   113,   123,     2,     2,
     649       2,     2,     2,     2,     2,     2,     2,     2,   130,   132,
     650     125,   131,   126,   129,     2,     2,     2,     2,     2,     2,
    626651       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    627652       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    628        2,   111,     2,   112,   128,     2,     2,     2,     2,     2,
     653       2,   111,     2,   112,   127,     2,     2,     2,     2,     2,
    629654       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    630655       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    631        2,     2,     2,   114,   129,   115,   123,     2,     2,     2,
     656       2,     2,     2,   114,   128,   115,   122,     2,     2,     2,
    632657       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    633658       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    657682
    658683#if YYDEBUG
    659 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    660    YYRHS.  */
    661 static const yytype_uint16 yyprhs[] =
    662 {
    663        0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    664       17,    19,    21,    23,    25,    27,    29,    31,    34,    36,
    665       38,    42,    46,    48,    55,    60,    64,    72,    76,    84,
    666       87,    90,    98,   103,   105,   109,   110,   112,   116,   124,
    667      134,   136,   140,   142,   146,   154,   158,   166,   168,   170,
    668      172,   175,   178,   181,   184,   187,   190,   195,   202,   204,
    669      209,   214,   217,   222,   224,   226,   228,   230,   232,   234,
    670      236,   241,   246,   248,   252,   256,   260,   262,   266,   270,
    671      272,   276,   280,   282,   286,   290,   294,   298,   300,   304,
    672      308,   310,   314,   316,   320,   322,   326,   328,   332,   334,
    673      338,   340,   346,   351,   357,   359,   361,   365,   368,   369,
    674      371,   373,   375,   377,   379,   381,   383,   385,   387,   389,
    675      391,   393,   396,   402,   409,   417,   419,   423,   425,   429,
    676      430,   432,   434,   436,   438,   440,   442,   444,   446,   448,
    677      455,   460,   463,   471,   473,   477,   479,   482,   484,   487,
    678      489,   492,   495,   501,   509,   515,   525,   531,   541,   543,
    679      547,   549,   551,   555,   559,   562,   564,   567,   570,   571,
    680      573,   576,   580,   581,   583,   586,   590,   594,   599,   600,
    681      602,   604,   607,   613,   621,   628,   635,   640,   644,   649,
    682      652,   656,   659,   663,   667,   671,   675,   681,   685,   689,
    683      694,   696,   702,   709,   715,   722,   732,   743,   753,   764,
    684      767,   769,   772,   775,   778,   780,   787,   796,   807,   820,
    685      835,   836,   838,   839,   841,   843,   847,   852,   860,   861,
    686      863,   867,   869,   873,   875,   877,   879,   883,   885,   887,
    687      889,   893,   894,   896,   900,   905,   907,   911,   913,   915,
    688      919,   923,   927,   931,   935,   938,   942,   949,   953,   957,
    689      962,   964,   967,   970,   974,   980,   989,   997,  1005,  1011,
    690     1021,  1024,  1027,  1033,  1037,  1043,  1048,  1052,  1057,  1062,
    691     1070,  1074,  1078,  1082,  1086,  1091,  1098,  1100,  1102,  1104,
    692     1106,  1108,  1110,  1112,  1114,  1115,  1117,  1119,  1122,  1124,
    693     1126,  1128,  1130,  1132,  1134,  1136,  1137,  1143,  1145,  1148,
    694     1152,  1154,  1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,
    695     1173,  1175,  1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,
    696     1193,  1195,  1197,  1199,  1201,  1203,  1206,  1209,  1213,  1217,
    697     1219,  1223,  1225,  1228,  1231,  1234,  1239,  1244,  1249,  1254,
    698     1256,  1259,  1262,  1266,  1268,  1271,  1274,  1276,  1279,  1282,
    699     1286,  1288,  1291,  1294,  1296,  1298,  1303,  1306,  1307,  1314,
    700     1322,  1325,  1328,  1331,  1332,  1335,  1338,  1342,  1345,  1349,
    701     1351,  1354,  1358,  1361,  1364,  1369,  1370,  1372,  1375,  1378,
    702     1380,  1381,  1383,  1386,  1389,  1395,  1398,  1399,  1407,  1410,
    703     1415,  1416,  1419,  1420,  1422,  1424,  1426,  1432,  1438,  1444,
    704     1446,  1452,  1458,  1468,  1470,  1476,  1477,  1479,  1481,  1487,
    705     1489,  1491,  1497,  1503,  1505,  1509,  1513,  1518,  1520,  1522,
    706     1524,  1526,  1529,  1531,  1535,  1539,  1541,  1544,  1546,  1550,
    707     1552,  1554,  1556,  1558,  1560,  1562,  1564,  1566,  1568,  1570,
    708     1572,  1575,  1577,  1579,  1581,  1584,  1585,  1588,  1591,  1593,
    709     1598,  1599,  1601,  1604,  1608,  1613,  1616,  1619,  1621,  1624,
    710     1626,  1629,  1635,  1641,  1649,  1656,  1658,  1661,  1664,  1668,
    711     1670,  1673,  1676,  1681,  1684,  1689,  1690,  1695,  1698,  1700,
    712     1702,  1704,  1705,  1708,  1714,  1720,  1734,  1736,  1738,  1742,
    713     1746,  1749,  1753,  1757,  1760,  1765,  1767,  1774,  1784,  1785,
    714     1797,  1799,  1803,  1807,  1811,  1813,  1815,  1821,  1824,  1830,
    715     1831,  1833,  1835,  1839,  1840,  1842,  1844,  1846,  1848,  1849,
    716     1856,  1859,  1861,  1864,  1869,  1872,  1876,  1880,  1884,  1889,
    717     1895,  1901,  1907,  1914,  1916,  1918,  1920,  1924,  1925,  1931,
    718     1932,  1934,  1936,  1939,  1946,  1948,  1952,  1953,  1955,  1960,
    719     1962,  1964,  1966,  1968,  1971,  1973,  1976,  1979,  1981,  1985,
    720     1988,  1992,  1996,  1999,  2004,  2009,  2013,  2022,  2026,  2029,
    721     2031,  2034,  2041,  2050,  2054,  2057,  2061,  2065,  2070,  2075,
    722     2079,  2081,  2083,  2085,  2090,  2097,  2101,  2104,  2108,  2112,
    723     2117,  2122,  2126,  2129,  2131,  2134,  2137,  2139,  2143,  2146,
    724     2150,  2154,  2157,  2162,  2167,  2171,  2178,  2187,  2191,  2194,
    725     2196,  2199,  2202,  2205,  2209,  2213,  2216,  2221,  2226,  2230,
    726     2237,  2246,  2250,  2253,  2255,  2258,  2261,  2263,  2265,  2268,
    727     2272,  2276,  2279,  2284,  2291,  2300,  2302,  2305,  2308,  2310,
    728     2313,  2316,  2320,  2324,  2326,  2331,  2336,  2340,  2346,  2355,
    729     2359,  2362,  2366,  2368,  2374,  2380,  2387,  2394,  2396,  2399,
    730     2402,  2404,  2407,  2410,  2414,  2418,  2420,  2425,  2430,  2434,
    731     2440,  2449,  2453,  2455,  2458,  2460,  2463,  2470,  2476,  2483,
    732     2491,  2499,  2501,  2504,  2507,  2509,  2512,  2515,  2519,  2523,
    733     2525,  2530,  2535,  2539,  2548,  2552,  2554,  2556,  2559,  2561,
    734     2563,  2566,  2570,  2573,  2577,  2580,  2584,  2588,  2591,  2596,
    735     2600,  2603,  2607,  2610,  2615,  2619,  2622,  2629,  2636,  2643,
    736     2651,  2653,  2656,  2658,  2660,  2662,  2665,  2669,  2672,  2676,
    737     2679,  2683,  2687,  2692,  2695,  2699,  2704,  2707,  2713,  2719,
    738     2726,  2733,  2734,  2736,  2737
    739 };
    740 
    741 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
    742 static const yytype_int16 yyrhs[] =
    743 {
    744      302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
    745       -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
    746       -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,    82,
    747       -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   169,
    748      110,    -1,   109,   173,   110,    -1,   142,    -1,   143,   111,
    749      134,   164,   135,   112,    -1,   143,   109,   144,   110,    -1,
    750      143,   113,   139,    -1,   143,   113,   111,   134,   146,   135,
    751      112,    -1,   143,    85,   139,    -1,   143,    85,   111,   134,
    752      146,   135,   112,    -1,   143,    86,    -1,   143,    87,    -1,
    753      109,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
    754      144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
    755      164,    -1,   139,   117,   164,    -1,   111,   134,   164,   135,
    756      112,   117,   164,    -1,   111,   134,   164,   116,   168,   135,
    757      112,   117,   164,    -1,   147,    -1,   146,   116,   147,    -1,
    758      139,    -1,   139,   113,   147,    -1,   139,   113,   111,   134,
    759      146,   135,   112,    -1,   139,    85,   147,    -1,   139,    85,
    760      111,   134,   146,   135,   112,    -1,   143,    -1,   136,    -1,
    761      141,    -1,    40,   151,    -1,   149,   151,    -1,   150,   151,
    762       -1,    86,   148,    -1,    87,   148,    -1,    37,   148,    -1,
    763       37,   109,   275,   110,    -1,    38,   109,   275,   116,   139,
    764      110,    -1,    76,    -1,    76,   109,   276,   110,    -1,    76,
    765      109,   145,   110,    -1,    66,   148,    -1,    66,   109,   275,
    766      110,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
    767      122,    -1,   123,    -1,   148,    -1,   109,   275,   110,   151,
    768       -1,   109,   275,   110,   167,    -1,   151,    -1,   152,   118,
    769      151,    -1,   152,   124,   151,    -1,   152,   125,   151,    -1,
    770      152,    -1,   153,   120,   152,    -1,   153,   121,   152,    -1,
    771      153,    -1,   154,    88,   153,    -1,   154,    89,   153,    -1,
    772      154,    -1,   155,   126,   154,    -1,   155,   127,   154,    -1,
    773      155,    90,   154,    -1,   155,    91,   154,    -1,   155,    -1,
    774      156,    92,   155,    -1,   156,    93,   155,    -1,   156,    -1,
    775      157,   119,   156,    -1,   157,    -1,   158,   128,   157,    -1,
    776      158,    -1,   159,   129,   158,    -1,   159,    -1,   160,    94,
    777      159,    -1,   160,    -1,   161,    95,   160,    -1,   161,    -1,
    778      161,   130,   169,   117,   162,    -1,   161,   130,   117,   162,
    779       -1,   161,   130,   169,   117,   167,    -1,   162,    -1,   162,
    780       -1,   148,   166,   164,    -1,   167,   373,    -1,    -1,   164,
    781       -1,   131,    -1,    97,    -1,    98,    -1,    99,    -1,   100,
    782       -1,   101,    -1,   102,    -1,   103,    -1,   104,    -1,   105,
    783       -1,   106,    -1,   111,   112,    -1,   111,   134,   164,   135,
    784      112,    -1,   111,   134,   116,   168,   135,   112,    -1,   111,
    785      134,   164,   116,   168,   135,   112,    -1,   165,    -1,   168,
    786      116,   165,    -1,   164,    -1,   169,   116,   164,    -1,    -1,
    787      169,    -1,   172,    -1,   173,    -1,   177,    -1,   178,    -1,
    788      190,    -1,   192,    -1,   193,    -1,   198,    -1,   128,   143,
    789      114,   144,   115,   132,    -1,    72,   117,   312,   171,    -1,
    790      114,   115,    -1,   114,   134,   134,   209,   174,   135,   115,
    791       -1,   175,    -1,   174,   134,   175,    -1,   212,    -1,    40,
    792      212,    -1,   308,    -1,   171,   135,    -1,   171,    -1,   176,
    793      171,    -1,   170,   132,    -1,    41,   109,   169,   110,   171,
    794       -1,    41,   109,   169,   110,   171,    42,   171,    -1,    43,
    795      109,   169,   110,   183,    -1,    43,   109,   169,   110,   114,
    796      134,   205,   184,   115,    -1,    53,   109,   169,   110,   183,
    797       -1,    53,   109,   169,   110,   114,   134,   205,   186,   115,
    798       -1,   163,    -1,   163,    96,   163,    -1,   310,    -1,   179,
    799       -1,   180,   116,   179,    -1,    44,   180,   117,    -1,    45,
    800      117,    -1,   181,    -1,   182,   181,    -1,   182,   171,    -1,
    801       -1,   185,    -1,   182,   176,    -1,   185,   182,   176,    -1,
    802       -1,   187,    -1,   182,   189,    -1,   182,   176,   188,    -1,
    803      187,   182,   189,    -1,   187,   182,   176,   188,    -1,    -1,
    804      189,    -1,    56,    -1,    56,   132,    -1,    47,   109,   169,
    805      110,   171,    -1,    46,   171,    47,   109,   169,   110,   132,
    806       -1,    48,   109,   134,   191,   110,   171,    -1,   170,   135,
    807      132,   170,   132,   170,    -1,   212,   170,   132,   170,    -1,
    808       51,    72,   132,    -1,    51,   118,   169,   132,    -1,    50,
    809      132,    -1,    50,    72,   132,    -1,    49,   132,    -1,    49,
    810       72,   132,    -1,    52,   170,   132,    -1,    61,   165,   132,
    811       -1,    62,   165,   132,    -1,    62,   165,    63,   164,   132,
    812       -1,    57,   173,   194,    -1,    57,   173,   196,    -1,    57,
    813      173,   194,   196,    -1,   195,    -1,    58,   109,    96,   110,
    814      173,    -1,   195,    58,   109,    96,   110,   173,    -1,    59,
    815      109,    96,   110,   173,    -1,   195,    59,   109,    96,   110,
    816      173,    -1,    58,   109,   134,   134,   197,   135,   110,   173,
    817      135,    -1,   195,    58,   109,   134,   134,   197,   135,   110,
    818      173,   135,    -1,    59,   109,   134,   134,   197,   135,   110,
    819      173,   135,    -1,   195,    59,   109,   134,   134,   197,   135,
    820      110,   173,   135,    -1,    60,   173,    -1,   225,    -1,   225,
    821      309,    -1,   225,   357,    -1,   366,   139,    -1,   366,    -1,
    822       64,   199,   109,   141,   110,   132,    -1,    64,   199,   109,
    823      141,   117,   200,   110,   132,    -1,    64,   199,   109,   141,
    824      117,   200,   117,   200,   110,   132,    -1,    64,   199,   109,
    825      141,   117,   200,   117,   200,   117,   203,   110,   132,    -1,
    826       64,   199,    51,   109,   141,   117,   117,   200,   117,   203,
    827      117,   204,   110,   132,    -1,    -1,    11,    -1,    -1,   201,
    828       -1,   202,    -1,   201,   116,   202,    -1,   141,   109,   163,
    829      110,    -1,   111,   163,   112,   141,   109,   163,   110,    -1,
    830       -1,   141,    -1,   203,   116,   141,    -1,   139,    -1,   204,
    831      116,   139,    -1,   135,    -1,   206,    -1,   212,    -1,   206,
    832      134,   212,    -1,   135,    -1,   208,    -1,   222,    -1,   208,
    833      134,   222,    -1,    -1,   210,    -1,    29,   211,   132,    -1,
    834      210,    29,   211,   132,    -1,   274,    -1,   211,   116,   274,
    835       -1,   213,    -1,   222,    -1,   214,   135,   132,    -1,   219,
    836      135,   132,    -1,   216,   135,   132,    -1,   293,   135,   132,
    837       -1,   296,   135,   132,    -1,   215,   277,    -1,   231,   215,
    838      277,    -1,   214,   135,   116,   134,   272,   277,    -1,   367,
    839      272,   311,    -1,   370,   272,   311,    -1,   227,   370,   272,
    840      311,    -1,   217,    -1,   227,   217,    -1,   231,   217,    -1,
    841      231,   227,   217,    -1,   216,   135,   116,   134,   272,    -1,
    842      111,   112,   272,   109,   134,   260,   135,   110,    -1,   370,
    843      272,   109,   134,   260,   135,   110,    -1,   218,   272,   109,
    844      134,   260,   135,   110,    -1,   111,   134,   262,   135,   112,
    845       -1,   111,   134,   262,   135,   116,   134,   263,   135,   112,
    846       -1,     3,   215,    -1,     3,   217,    -1,   219,   135,   116,
    847      134,   139,    -1,     3,   225,   309,    -1,   220,   135,   116,
    848      134,   309,    -1,   227,     3,   225,   309,    -1,   225,     3,
    849      309,    -1,   225,     3,   227,   309,    -1,     3,   139,   131,
    850      164,    -1,   221,   135,   116,   134,   139,   131,   164,    -1,
    851      223,   135,   132,    -1,   220,   135,   132,    -1,   221,   135,
    852      132,    -1,   240,   135,   132,    -1,   224,   309,   311,   277,
    853       -1,   223,   116,   312,   309,   311,   277,    -1,   236,    -1,
    854      240,    -1,   242,    -1,   283,    -1,   237,    -1,   241,    -1,
    855      243,    -1,   284,    -1,    -1,   227,    -1,   228,    -1,   227,
    856      228,    -1,   229,    -1,   314,    -1,    10,    -1,    12,    -1,
    857       11,    -1,    14,    -1,    67,    -1,    -1,    13,   109,   230,
    858      286,   110,    -1,   232,    -1,   227,   232,    -1,   231,   227,
    859      232,    -1,   233,    -1,   232,   233,    -1,   234,    -1,     5,
    860       -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    861       -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
    862       -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    863       -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
    864       -1,   237,    -1,   231,   237,    -1,   236,   233,    -1,   236,
    865      233,   227,    -1,   236,   233,   237,    -1,   238,    -1,   226,
    866      239,   226,    -1,   235,    -1,   227,   235,    -1,   238,   228,
    867       -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
    868      109,   169,   110,    -1,    78,   109,   276,   110,    -1,    78,
    869      109,   169,   110,    -1,   241,    -1,   231,   241,    -1,   240,
    870      233,    -1,   240,   233,   227,    -1,   244,    -1,   227,   244,
    871       -1,   241,   228,    -1,   243,    -1,   231,   243,    -1,   242,
    872      233,    -1,   242,   233,   227,    -1,    74,    -1,   227,    74,
    873       -1,   243,   228,    -1,   245,    -1,   256,    -1,   247,   114,
    874      248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
    875      114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
    876      115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
    877       -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
    878      132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
    879       -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
    880       -1,   225,   252,    -1,   251,   116,   312,   252,    -1,    -1,
    881      254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
    882       -1,   254,    -1,   117,   163,    -1,    30,   312,    -1,   255,
    883      114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
    884      274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
    885      258,   116,   274,   259,    -1,    -1,   131,   163,    -1,    -1,
    886      261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
    887      263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
    888      116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
    889      267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
    890      116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
    891      263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
    892       -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
    893       -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
    894      134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
    895      272,   373,    -1,   227,   370,   272,   373,    -1,   217,    -1,
    896      270,    -1,   362,    -1,   370,    -1,   227,   370,    -1,   371,
    897       -1,   224,   336,   373,    -1,   224,   340,   373,    -1,   224,
    898       -1,   224,   351,    -1,   139,    -1,   271,   116,   139,    -1,
    899      137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
    900       75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
    901      225,    -1,   225,   357,    -1,   366,    -1,   371,    -1,   225,
    902       -1,   225,   345,    -1,    -1,   131,   278,    -1,   107,   278,
    903       -1,   164,    -1,   114,   279,   372,   115,    -1,    -1,   278,
    904       -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
    905      280,   278,    -1,   281,   117,    -1,   274,   117,    -1,   282,
    906       -1,   281,   282,    -1,    80,    -1,   113,   274,    -1,   111,
    907      134,   164,   135,   112,    -1,   111,   134,   310,   135,   112,
    908       -1,   111,   134,   163,    96,   163,   135,   112,    -1,   113,
    909      111,   134,   146,   135,   112,    -1,   284,    -1,   231,   284,
    910       -1,   283,   233,    -1,   283,   233,   227,    -1,   285,    -1,
    911      227,   285,    -1,   284,   228,    -1,    75,   109,   292,   110,
    912       -1,   287,   373,    -1,   286,   116,   287,   373,    -1,    -1,
    913      289,   274,   288,   290,    -1,   225,   336,    -1,    33,    -1,
    914       35,    -1,    34,    -1,    -1,   290,   291,    -1,   129,   274,
    915      109,   292,   110,    -1,   129,   114,   134,   298,   115,    -1,
    916      129,   109,   134,   286,   135,   110,   114,   134,   298,   115,
    917      109,   292,   110,    -1,   276,    -1,   164,    -1,   292,   116,
    918      276,    -1,   292,   116,   164,    -1,    33,   294,    -1,   232,
    919       33,   294,    -1,   293,   116,   294,    -1,   295,   290,    -1,
    920      295,   290,   131,   276,    -1,   274,    -1,   273,   109,   134,
    921      286,   135,   110,    -1,    36,   274,   109,   134,   286,   135,
    922      110,   114,   115,    -1,    -1,    36,   274,   109,   134,   286,
    923      135,   110,   114,   297,   298,   115,    -1,   299,    -1,   298,
    924      134,   299,    -1,   300,   135,   132,    -1,   301,   135,   132,
    925       -1,   215,    -1,   217,    -1,   300,   135,   116,   134,   272,
    926       -1,   225,   309,    -1,   301,   135,   116,   134,   309,    -1,
    927       -1,   303,    -1,   305,    -1,   303,   134,   305,    -1,    -1,
    928      303,    -1,   212,    -1,   307,    -1,   198,    -1,    -1,     5,
    929       82,   306,   114,   304,   115,    -1,    40,   305,    -1,   308,
    930       -1,   323,   173,    -1,   327,   134,   207,   173,    -1,   216,
    931      173,    -1,   224,   323,   173,    -1,   227,   323,   173,    -1,
    932      231,   323,   173,    -1,   231,   227,   323,   173,    -1,   224,
    933      327,   134,   207,   173,    -1,   227,   327,   134,   207,   173,
    934       -1,   231,   327,   134,   207,   173,    -1,   231,   227,   327,
    935      134,   207,   173,    -1,   318,    -1,   331,    -1,   323,    -1,
    936      163,   123,   163,    -1,    -1,    64,   109,   141,   110,   312,
    937       -1,    -1,   313,    -1,   314,    -1,   313,   314,    -1,    39,
    938      109,   109,   315,   110,   110,    -1,   316,    -1,   315,   116,
    939      316,    -1,    -1,   317,    -1,   317,   109,   170,   110,    -1,
    940      272,    -1,   234,    -1,   235,    -1,   228,    -1,   319,   312,
    941       -1,   320,    -1,   321,   312,    -1,   322,   312,    -1,   137,
    942       -1,   109,   319,   110,    -1,   149,   318,    -1,   149,   227,
    943      318,    -1,   109,   320,   110,    -1,   319,   349,    -1,   109,
    944      320,   110,   349,    -1,   109,   321,   110,   350,    -1,   109,
    945      321,   110,    -1,   109,   320,   110,   109,   134,   264,   135,
    946      110,    -1,   109,   322,   110,    -1,   324,   312,    -1,   325,
    947       -1,   326,   312,    -1,   319,   109,   134,   264,   135,   110,
    948       -1,   109,   325,   110,   109,   134,   264,   135,   110,    -1,
    949      109,   324,   110,    -1,   149,   323,    -1,   149,   227,   323,
    950       -1,   109,   325,   110,    -1,   109,   325,   110,   349,    -1,
    951      109,   326,   110,   350,    -1,   109,   326,   110,    -1,   328,
    952       -1,   329,    -1,   330,    -1,   319,   109,   271,   110,    -1,
    953      109,   329,   110,   109,   271,   110,    -1,   109,   328,   110,
    954       -1,   149,   327,    -1,   149,   227,   327,    -1,   109,   329,
    955      110,    -1,   109,   329,   110,   349,    -1,   109,   330,   110,
    956      350,    -1,   109,   330,   110,    -1,   332,   312,    -1,   333,
    957       -1,   334,   312,    -1,   335,   312,    -1,   341,    -1,   109,
    958      332,   110,    -1,   149,   331,    -1,   149,   227,   331,    -1,
    959      109,   333,   110,    -1,   332,   349,    -1,   109,   333,   110,
    960      349,    -1,   109,   334,   110,   350,    -1,   109,   334,   110,
    961       -1,   332,   109,   134,   264,   135,   110,    -1,   109,   333,
    962      110,   109,   134,   264,   135,   110,    -1,   109,   335,   110,
    963       -1,   319,   312,    -1,   337,    -1,   338,   312,    -1,   339,
    964      312,    -1,   149,   336,    -1,   149,   227,   336,    -1,   109,
    965      337,   110,    -1,   319,   355,    -1,   109,   337,   110,   349,
    966       -1,   109,   338,   110,   350,    -1,   109,   338,   110,    -1,
    967      319,   109,   134,   264,   135,   110,    -1,   109,   337,   110,
    968      109,   134,   264,   135,   110,    -1,   109,   339,   110,    -1,
    969      341,   312,    -1,   342,    -1,   343,   312,    -1,   344,   312,
    970       -1,    74,    -1,    75,    -1,   149,   340,    -1,   149,   227,
    971      340,    -1,   109,   342,   110,    -1,   341,   355,    -1,   109,
    972      342,   110,   355,    -1,   341,   109,   134,   264,   135,   110,
    973       -1,   109,   342,   110,   109,   134,   264,   135,   110,    -1,
    974      346,    -1,   347,   312,    -1,   348,   312,    -1,   149,    -1,
    975      149,   227,    -1,   149,   345,    -1,   149,   227,   345,    -1,
    976      109,   346,   110,    -1,   349,    -1,   109,   346,   110,   349,
    977       -1,   109,   347,   110,   350,    -1,   109,   347,   110,    -1,
    978      109,   134,   264,   135,   110,    -1,   109,   346,   110,   109,
    979      134,   264,   135,   110,    -1,   109,   348,   110,    -1,   111,
    980      112,    -1,   111,   112,   350,    -1,   350,    -1,   111,   134,
    981      164,   135,   112,    -1,   111,   134,   118,   135,   112,    -1,
    982      350,   111,   134,   164,   135,   112,    -1,   350,   111,   134,
    983      118,   135,   112,    -1,   352,    -1,   353,   312,    -1,   354,
    984      312,    -1,   149,    -1,   149,   227,    -1,   149,   351,    -1,
    985      149,   227,   351,    -1,   109,   352,   110,    -1,   355,    -1,
    986      109,   352,   110,   355,    -1,   109,   353,   110,   350,    -1,
    987      109,   353,   110,    -1,   109,   134,   264,   135,   110,    -1,
    988      109,   352,   110,   109,   134,   264,   135,   110,    -1,   109,
    989      354,   110,    -1,   356,    -1,   356,   350,    -1,   350,    -1,
    990      111,   112,    -1,   111,   134,   227,   118,   135,   112,    -1,
    991      111,   134,   227,   135,   112,    -1,   111,   134,   227,   164,
    992      135,   112,    -1,   111,   134,     7,   226,   164,   135,   112,
    993       -1,   111,   134,   227,     7,   164,   135,   112,    -1,   358,
    994       -1,   359,   312,    -1,   360,   312,    -1,   149,    -1,   149,
    995      227,    -1,   149,   357,    -1,   149,   227,   357,    -1,   109,
    996      358,   110,    -1,   349,    -1,   109,   358,   110,   349,    -1,
    997      109,   359,   110,   350,    -1,   109,   359,   110,    -1,   109,
    998      358,   110,   109,   134,   264,   135,   110,    -1,   109,   360,
    999      110,    -1,   362,    -1,   370,    -1,   227,   370,    -1,   363,
    1000       -1,   364,    -1,   149,   225,    -1,   227,   149,   225,    -1,
    1001      149,   371,    -1,   227,   149,   371,    -1,   149,   361,    -1,
    1002      227,   149,   361,    -1,   111,   112,   225,    -1,   365,   225,
    1003       -1,   111,   112,   350,   225,    -1,   365,   350,   225,    -1,
    1004      350,   225,    -1,   111,   112,   363,    -1,   365,   363,    -1,
    1005      111,   112,   350,   363,    -1,   365,   350,   363,    -1,   350,
    1006      363,    -1,   111,   134,   227,   118,   135,   112,    -1,   111,
    1007      134,   227,   164,   135,   112,    -1,   111,   134,   231,   164,
    1008      135,   112,    -1,   111,   134,   231,   227,   164,   135,   112,
    1009       -1,   370,    -1,   227,   370,    -1,   367,    -1,   368,    -1,
    1010      369,    -1,   149,   225,    -1,   227,   149,   225,    -1,   149,
    1011      371,    -1,   227,   149,   371,    -1,   149,   366,    -1,   227,
    1012      149,   366,    -1,   111,   112,   225,    -1,   111,   112,   350,
    1013      225,    -1,   350,   225,    -1,   111,   112,   368,    -1,   111,
    1014      112,   350,   368,    -1,   350,   368,    -1,   111,   134,   263,
    1015      135,   112,    -1,   111,   112,   109,   260,   110,    -1,   370,
    1016      109,   134,   260,   135,   110,    -1,   218,   109,   134,   260,
    1017      135,   110,    -1,    -1,   116,    -1,    -1,   131,   164,    -1
    1018 };
    1019 
    1020 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
     684  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
    1021685static const yytype_uint16 yyrline[] =
    1022686{
    1023        0,   296,   296,   302,   311,   312,   313,   317,   318,   319,
    1024      323,   324,   328,   329,   333,   334,   338,   339,   350,   352,
    1025      354,   356,   361,   362,   368,   372,   374,   375,   377,   378,
    1026      380,   382,   384,   393,   394,   400,   401,   402,   407,   409,
    1027      414,   415,   419,   423,   425,   427,   429,   434,   437,   439,
    1028      441,   446,   459,   461,   463,   465,   467,   469,   471,   473,
    1029      475,   477,   479,   486,   487,   493,   494,   495,   496,   500,
    1030      501,   503,   508,   509,   511,   513,   518,   519,   521,   526,
    1031      527,   529,   534,   535,   537,   539,   541,   546,   547,   549,
    1032      554,   555,   560,   561,   566,   567,   572,   573,   578,   579,
    1033      584,   585,   588,   590,   595,   600,   601,   603,   609,   610,
    1034      614,   615,   616,   617,   618,   619,   620,   621,   622,   623,
    1035      624,   630,   632,   634,   636,   641,   642,   647,   648,   654,
    1036      655,   661,   662,   663,   664,   665,   666,   667,   668,   669,
    1037      679,   686,   688,   698,   699,   704,   706,   712,   714,   718,
    1038      719,   724,   729,   732,   734,   736,   746,   748,   759,   760,
    1039      762,   766,   768,   772,   773,   778,   779,   783,   788,   789,
    1040      793,   795,   801,   802,   806,   808,   810,   812,   818,   819,
    1041      823,   825,   830,   832,   834,   839,   841,   846,   848,   852,
    1042      855,   859,   862,   866,   868,   872,   874,   881,   883,   885,
    1043      894,   896,   898,   900,   902,   907,   909,   911,   913,   918,
    1044      931,   932,   937,   939,   944,   948,   950,   952,   954,   956,
    1045      962,   963,   969,   970,   974,   975,   980,   982,   988,   989,
    1046      991,   996,   998,  1005,  1007,  1011,  1012,  1017,  1019,  1023,
    1047     1024,  1028,  1030,  1034,  1035,  1039,  1040,  1044,  1045,  1060,
    1048     1061,  1062,  1063,  1064,  1068,  1073,  1080,  1090,  1095,  1100,
    1049     1108,  1113,  1118,  1123,  1128,  1136,  1158,  1163,  1170,  1172,
    1050     1179,  1184,  1189,  1200,  1205,  1210,  1215,  1220,  1229,  1234,
    1051     1242,  1243,  1244,  1245,  1251,  1256,  1264,  1265,  1266,  1267,
    1052     1271,  1272,  1273,  1274,  1279,  1280,  1289,  1290,  1295,  1296,
    1053     1301,  1303,  1305,  1307,  1309,  1312,  1311,  1323,  1324,  1326,
    1054     1336,  1337,  1342,  1346,  1348,  1350,  1352,  1354,  1356,  1358,
    1055     1360,  1365,  1367,  1369,  1371,  1373,  1375,  1377,  1379,  1381,
    1056     1383,  1385,  1387,  1389,  1395,  1396,  1398,  1400,  1402,  1407,
    1057     1408,  1414,  1415,  1417,  1419,  1424,  1426,  1428,  1430,  1435,
    1058     1436,  1438,  1440,  1445,  1446,  1448,  1453,  1454,  1456,  1458,
    1059     1463,  1465,  1467,  1472,  1473,  1477,  1479,  1485,  1484,  1488,
    1060     1490,  1495,  1497,  1503,  1504,  1509,  1510,  1512,  1513,  1522,
    1061     1523,  1525,  1527,  1532,  1534,  1540,  1541,  1543,  1546,  1549,
    1062     1554,  1555,  1560,  1565,  1569,  1571,  1577,  1576,  1583,  1585,
    1063     1591,  1592,  1600,  1601,  1605,  1606,  1607,  1609,  1611,  1618,
    1064     1619,  1621,  1623,  1628,  1629,  1635,  1636,  1640,  1641,  1646,
    1065     1647,  1648,  1650,  1658,  1659,  1661,  1664,  1666,  1670,  1671,
    1066     1672,  1674,  1676,  1680,  1685,  1693,  1694,  1703,  1705,  1710,
    1067     1711,  1712,  1716,  1717,  1718,  1722,  1723,  1724,  1728,  1729,
    1068     1730,  1735,  1736,  1737,  1738,  1744,  1745,  1747,  1752,  1753,
    1069     1758,  1759,  1760,  1761,  1762,  1777,  1778,  1783,  1784,  1792,
    1070     1794,  1796,  1799,  1801,  1803,  1826,  1827,  1829,  1831,  1836,
    1071     1837,  1839,  1844,  1849,  1850,  1856,  1855,  1859,  1863,  1865,
    1072     1867,  1873,  1874,  1879,  1884,  1886,  1891,  1893,  1894,  1896,
    1073     1901,  1903,  1905,  1910,  1912,  1917,  1922,  1930,  1936,  1935,
    1074     1949,  1950,  1955,  1956,  1960,  1965,  1970,  1978,  1983,  1994,
    1075     1995,  2006,  2007,  2013,  2014,  2018,  2019,  2020,  2023,  2022,
    1076     2033,  2042,  2048,  2054,  2063,  2069,  2075,  2081,  2087,  2095,
    1077     2101,  2109,  2115,  2124,  2125,  2126,  2130,  2134,  2136,  2141,
    1078     2142,  2146,  2147,  2152,  2158,  2159,  2162,  2164,  2165,  2169,
    1079     2170,  2171,  2172,  2206,  2208,  2209,  2211,  2216,  2221,  2226,
    1080     2228,  2230,  2235,  2237,  2239,  2241,  2246,  2248,  2257,  2259,
    1081     2260,  2265,  2267,  2269,  2274,  2276,  2278,  2283,  2285,  2287,
    1082     2296,  2297,  2298,  2302,  2304,  2306,  2311,  2313,  2315,  2320,
    1083     2322,  2324,  2339,  2341,  2342,  2344,  2349,  2350,  2355,  2357,
    1084     2359,  2364,  2366,  2368,  2370,  2375,  2377,  2379,  2389,  2391,
    1085     2392,  2394,  2399,  2401,  2403,  2408,  2410,  2412,  2414,  2419,
    1086     2421,  2423,  2454,  2456,  2457,  2459,  2464,  2469,  2477,  2479,
    1087     2481,  2486,  2488,  2493,  2495,  2509,  2510,  2512,  2517,  2519,
    1088     2521,  2523,  2525,  2530,  2531,  2533,  2535,  2540,  2542,  2544,
    1089     2550,  2552,  2554,  2558,  2560,  2562,  2564,  2578,  2579,  2581,
    1090     2586,  2588,  2590,  2592,  2594,  2599,  2600,  2602,  2604,  2609,
    1091     2611,  2613,  2619,  2620,  2622,  2631,  2634,  2636,  2639,  2641,
    1092     2643,  2656,  2657,  2659,  2664,  2666,  2668,  2670,  2672,  2677,
    1093     2678,  2680,  2682,  2687,  2689,  2697,  2698,  2699,  2704,  2705,
    1094     2709,  2711,  2713,  2715,  2717,  2719,  2726,  2728,  2730,  2732,
    1095     2734,  2736,  2738,  2740,  2742,  2744,  2749,  2751,  2753,  2758,
    1096     2784,  2785,  2787,  2791,  2792,  2796,  2798,  2800,  2802,  2804,
    1097     2806,  2813,  2815,  2817,  2819,  2821,  2823,  2828,  2833,  2835,
    1098     2837,  2855,  2857,  2862,  2863
     687       0,   298,   298,   304,   313,   314,   315,   319,   320,   321,
     688     325,   326,   330,   331,   335,   336,   340,   341,   352,   354,
     689     356,   358,   363,   364,   370,   374,   376,   377,   379,   380,
     690     382,   384,   386,   395,   396,   402,   403,   407,   408,   412,
     691     416,   418,   420,   422,   427,   430,   432,   434,   439,   452,
     692     454,   456,   458,   460,   462,   464,   466,   468,   470,   472,
     693     479,   480,   486,   487,   488,   489,   493,   494,   496,   501,
     694     502,   504,   506,   511,   512,   514,   519,   520,   522,   527,
     695     528,   530,   532,   534,   539,   540,   542,   547,   548,   553,
     696     554,   559,   560,   565,   566,   571,   572,   577,   578,   581,
     697     583,   588,   593,   594,   596,   602,   603,   607,   608,   609,
     698     610,   611,   612,   613,   614,   615,   616,   617,   623,   625,
     699     627,   629,   634,   635,   640,   641,   647,   648,   654,   655,
     700     656,   657,   658,   659,   660,   661,   662,   672,   679,   681,
     701     691,   692,   697,   699,   705,   707,   711,   712,   717,   722,
     702     725,   727,   729,   739,   741,   752,   753,   755,   759,   761,
     703     765,   766,   771,   772,   776,   781,   782,   786,   788,   794,
     704     795,   799,   801,   803,   805,   811,   812,   816,   818,   823,
     705     825,   827,   832,   834,   839,   841,   845,   848,   852,   855,
     706     859,   861,   863,   865,   870,   872,   874,   879,   881,   883,
     707     885,   887,   892,   894,   896,   898,   903,   915,   916,   921,
     708     923,   928,   932,   934,   936,   938,   940,   946,   947,   953,
     709     954,   958,   959,   964,   966,   972,   973,   975,   980,   982,
     710     989,   991,   995,   996,  1001,  1003,  1007,  1008,  1012,  1014,
     711    1018,  1019,  1023,  1024,  1028,  1029,  1044,  1045,  1046,  1047,
     712    1048,  1052,  1057,  1064,  1074,  1079,  1084,  1092,  1097,  1102,
     713    1107,  1112,  1120,  1142,  1147,  1154,  1156,  1163,  1168,  1173,
     714    1184,  1189,  1194,  1199,  1204,  1213,  1218,  1226,  1227,  1228,
     715    1229,  1235,  1240,  1248,  1249,  1250,  1251,  1255,  1256,  1257,
     716    1258,  1263,  1264,  1273,  1274,  1279,  1280,  1285,  1287,  1289,
     717    1291,  1293,  1296,  1295,  1307,  1308,  1310,  1320,  1321,  1326,
     718    1328,  1330,  1332,  1334,  1336,  1338,  1340,  1345,  1347,  1349,
     719    1351,  1353,  1355,  1357,  1359,  1361,  1363,  1365,  1367,  1369,
     720    1375,  1376,  1378,  1380,  1382,  1387,  1388,  1394,  1395,  1397,
     721    1399,  1404,  1406,  1408,  1410,  1415,  1416,  1418,  1420,  1425,
     722    1426,  1428,  1433,  1434,  1436,  1438,  1443,  1445,  1447,  1452,
     723    1453,  1457,  1459,  1465,  1464,  1468,  1470,  1475,  1477,  1483,
     724    1484,  1489,  1490,  1492,  1493,  1502,  1503,  1505,  1507,  1512,
     725    1514,  1520,  1521,  1523,  1526,  1529,  1534,  1535,  1540,  1545,
     726    1549,  1551,  1557,  1556,  1563,  1565,  1571,  1572,  1580,  1581,
     727    1585,  1586,  1587,  1589,  1591,  1598,  1599,  1601,  1603,  1608,
     728    1609,  1615,  1616,  1620,  1621,  1626,  1627,  1628,  1630,  1638,
     729    1639,  1641,  1644,  1646,  1650,  1651,  1652,  1654,  1656,  1660,
     730    1665,  1673,  1674,  1683,  1685,  1690,  1691,  1692,  1696,  1697,
     731    1698,  1702,  1703,  1704,  1708,  1709,  1710,  1715,  1716,  1717,
     732    1718,  1724,  1725,  1727,  1732,  1733,  1738,  1739,  1740,  1741,
     733    1742,  1757,  1758,  1763,  1764,  1770,  1772,  1775,  1777,  1779,
     734    1802,  1803,  1805,  1807,  1812,  1813,  1815,  1820,  1825,  1826,
     735    1832,  1831,  1835,  1839,  1841,  1843,  1849,  1850,  1855,  1860,
     736    1862,  1867,  1869,  1870,  1872,  1877,  1879,  1881,  1886,  1888,
     737    1893,  1898,  1906,  1912,  1911,  1925,  1926,  1931,  1932,  1936,
     738    1941,  1946,  1954,  1959,  1970,  1971,  1976,  1977,  1983,  1984,
     739    1988,  1989,  1990,  1993,  1992,  2003,  2012,  2018,  2024,  2033,
     740    2039,  2045,  2051,  2057,  2065,  2071,  2079,  2085,  2094,  2095,
     741    2096,  2100,  2104,  2106,  2111,  2112,  2116,  2117,  2122,  2128,
     742    2129,  2132,  2134,  2135,  2139,  2140,  2141,  2142,  2176,  2178,
     743    2179,  2181,  2186,  2191,  2196,  2198,  2200,  2205,  2207,  2209,
     744    2211,  2216,  2218,  2227,  2229,  2230,  2235,  2237,  2239,  2244,
     745    2246,  2248,  2253,  2255,  2257,  2266,  2267,  2268,  2272,  2274,
     746    2276,  2281,  2283,  2285,  2290,  2292,  2294,  2309,  2311,  2312,
     747    2314,  2319,  2320,  2325,  2327,  2329,  2334,  2336,  2338,  2340,
     748    2345,  2347,  2349,  2359,  2361,  2362,  2364,  2369,  2371,  2373,
     749    2378,  2380,  2382,  2384,  2389,  2391,  2393,  2424,  2426,  2427,
     750    2429,  2434,  2439,  2447,  2449,  2451,  2456,  2458,  2463,  2465,
     751    2479,  2480,  2482,  2487,  2489,  2491,  2493,  2495,  2500,  2501,
     752    2503,  2505,  2510,  2512,  2514,  2520,  2522,  2524,  2528,  2530,
     753    2532,  2534,  2548,  2549,  2551,  2556,  2558,  2560,  2562,  2564,
     754    2569,  2570,  2572,  2574,  2579,  2581,  2583,  2589,  2590,  2592,
     755    2601,  2604,  2606,  2609,  2611,  2613,  2626,  2627,  2629,  2634,
     756    2636,  2638,  2640,  2642,  2647,  2648,  2650,  2652,  2657,  2659,
     757    2667,  2668,  2669,  2674,  2675,  2679,  2681,  2683,  2685,  2687,
     758    2689,  2696,  2698,  2700,  2702,  2704,  2706,  2708,  2710,  2712,
     759    2714,  2719,  2721,  2723,  2728,  2754,  2755,  2757,  2761,  2762,
     760    2766,  2768,  2770,  2772,  2774,  2776,  2783,  2785,  2787,  2789,
     761    2791,  2793,  2798,  2803,  2805,  2807,  2825,  2827,  2832,  2833
    1099762};
    1100763#endif
    1101764
    1102 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     765#if YYDEBUG || YYERROR_VERBOSE || 0
    1103766/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    1104767   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     
    1122785  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    1123786  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
    1124   "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'*'",
    1125   "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
    1126   "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
     787  "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'",
     788  "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'",
     789  "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant",
    1127790  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    1128791  "string_literal_list", "primary_expression", "postfix_expression",
     
    1157820  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
    1158821  "declaration_qualifier_list", "storage_class_list", "storage_class",
    1159   "storage_class_name", "basic_type_name", "basic_declaration_specifier",
    1160   "basic_type_specifier", "direct_type_name", "indirect_type_name",
    1161   "sue_declaration_specifier", "sue_type_specifier",
    1162   "typedef_declaration_specifier", "typedef_type_specifier",
    1163   "elaborated_type_name", "aggregate_name", "$@2", "aggregate_key",
    1164   "field_declaration_list", "field_declaration",
     822  "basic_type_name", "basic_declaration_specifier", "basic_type_specifier",
     823  "direct_type_name", "indirect_type_name", "sue_declaration_specifier",
     824  "sue_type_specifier", "typedef_declaration_specifier",
     825  "typedef_type_specifier", "elaborated_type_name", "aggregate_name",
     826  "$@2", "aggregate_key", "field_declaration_list", "field_declaration",
    1165827  "new_field_declaring_list", "field_declaring_list", "field_declarator",
    1166828  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
     
    1209871  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
    1210872  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
    1211   "comma_opt", "assignment_opt", 0
     873  "comma_opt", "assignment_opt", YY_NULLPTR
    1212874};
    1213875#endif
    1214876
    1215877# ifdef YYPRINT
    1216 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    1217    token YYLEX-NUM.  */
     878/* YYTOKNUM[NUM] -- (External) token number corresponding to the
     879   (internal) symbol number NUM (which must be that of a token).  */
    1218880static const yytype_uint16 yytoknum[] =
    1219881{
     
    1229891     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    1230892     355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
    1231       41,    91,    93,    46,   123,   125,    44,    58,    42,    38,
    1232       43,    45,    33,   126,    47,    37,    60,    62,    94,   124,
    1233       63,    61,    59
     893      41,    91,    93,    46,   123,   125,    44,    42,    38,    43,
     894      45,    33,   126,    47,    37,    60,    62,    94,   124,    63,
     895      58,    61,    59
    1234896};
    1235897# endif
    1236898
    1237 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
    1238 static const yytype_uint16 yyr1[] =
     899#define YYPACT_NINF -1317
     900
     901#define yypact_value_is_default(Yystate) \
     902  (!!((Yystate) == (-1317)))
     903
     904#define YYTABLE_NINF -520
     905
     906#define yytable_value_is_error(Yytable_value) \
     907  0
     908
     909  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     910     STATE-NUM.  */
     911static const yytype_int16 yypact[] =
    1239912{
    1240        0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
    1241      138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
    1242      142,   142,   143,   143,   143,   143,   143,   143,   143,   143,
    1243      143,   143,   143,   144,   144,   145,   145,   145,   145,   145,
    1244      146,   146,   147,   147,   147,   147,   147,   148,   148,   148,
    1245      148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
    1246      148,   148,   148,   149,   149,   150,   150,   150,   150,   151,
    1247      151,   151,   152,   152,   152,   152,   153,   153,   153,   154,
    1248      154,   154,   155,   155,   155,   155,   155,   156,   156,   156,
    1249      157,   157,   158,   158,   159,   159,   160,   160,   161,   161,
    1250      162,   162,   162,   162,   163,   164,   164,   164,   165,   165,
    1251      166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
    1252      166,   167,   167,   167,   167,   168,   168,   169,   169,   170,
    1253      170,   171,   171,   171,   171,   171,   171,   171,   171,   171,
    1254      172,   173,   173,   174,   174,   175,   175,   175,   175,   176,
    1255      176,   177,   178,   178,   178,   178,   178,   178,   179,   179,
    1256      179,   180,   180,   181,   181,   182,   182,   183,   184,   184,
    1257      185,   185,   186,   186,   187,   187,   187,   187,   188,   188,
    1258      189,   189,   190,   190,   190,   191,   191,   192,   192,   192,
    1259      192,   192,   192,   192,   192,   192,   192,   193,   193,   193,
    1260      194,   194,   194,   194,   194,   195,   195,   195,   195,   196,
    1261      197,   197,   197,   197,   197,   198,   198,   198,   198,   198,
    1262      199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
    1263      203,   204,   204,   205,   205,   206,   206,   207,   207,   208,
    1264      208,   209,   209,   210,   210,   211,   211,   212,   212,   213,
    1265      213,   213,   213,   213,   214,   214,   214,   215,   215,   215,
    1266      216,   216,   216,   216,   216,   217,   217,   217,   218,   218,
    1267      219,   219,   219,   220,   220,   220,   220,   220,   221,   221,
    1268      222,   222,   222,   222,   223,   223,   224,   224,   224,   224,
    1269      225,   225,   225,   225,   226,   226,   227,   227,   228,   228,
    1270      229,   229,   229,   229,   229,   230,   229,   231,   231,   231,
    1271      232,   232,   233,   234,   234,   234,   234,   234,   234,   234,
    1272      234,   235,   235,   235,   235,   235,   235,   235,   235,   235,
    1273      235,   235,   235,   235,   236,   236,   236,   236,   236,   237,
    1274      237,   238,   238,   238,   238,   239,   239,   239,   239,   240,
    1275      240,   240,   240,   241,   241,   241,   242,   242,   242,   242,
    1276      243,   243,   243,   244,   244,   245,   245,   246,   245,   245,
    1277      245,   247,   247,   248,   248,   249,   249,   249,   249,   250,
    1278      250,   250,   250,   251,   251,   252,   252,   252,   252,   252,
    1279      253,   253,   254,   255,   256,   256,   257,   256,   258,   258,
    1280      259,   259,   260,   260,   261,   261,   261,   261,   261,   262,
    1281      262,   262,   262,   263,   263,   264,   264,   265,   265,   266,
    1282      266,   266,   266,   267,   267,   267,   267,   267,   268,   268,
    1283      268,   268,   268,   269,   269,   270,   270,   271,   271,   272,
    1284      272,   272,   273,   273,   273,   274,   274,   274,   275,   275,
    1285      275,   276,   276,   276,   276,   277,   277,   277,   278,   278,
    1286      279,   279,   279,   279,   279,   280,   280,   281,   281,   282,
    1287      282,   282,   282,   282,   282,   283,   283,   283,   283,   284,
    1288      284,   284,   285,   286,   286,   288,   287,   287,   289,   289,
    1289      289,   290,   290,   291,   291,   291,   292,   292,   292,   292,
    1290      293,   293,   293,   294,   294,   295,   295,   296,   297,   296,
    1291      298,   298,   299,   299,   300,   300,   300,   301,   301,   302,
    1292      302,   303,   303,   304,   304,   305,   305,   305,   306,   305,
    1293      305,   307,   307,   307,   308,   308,   308,   308,   308,   308,
    1294      308,   308,   308,   309,   309,   309,   310,   311,   311,   312,
    1295      312,   313,   313,   314,   315,   315,   316,   316,   316,   317,
    1296      317,   317,   317,   318,   318,   318,   318,   319,   319,   320,
    1297      320,   320,   321,   321,   321,   321,   322,   322,   323,   323,
    1298      323,   324,   324,   324,   325,   325,   325,   326,   326,   326,
    1299      327,   327,   327,   328,   328,   328,   329,   329,   329,   330,
    1300      330,   330,   331,   331,   331,   331,   332,   332,   333,   333,
    1301      333,   334,   334,   334,   334,   335,   335,   335,   336,   336,
    1302      336,   336,   337,   337,   337,   338,   338,   338,   338,   339,
    1303      339,   339,   340,   340,   340,   340,   341,   341,   342,   342,
    1304      342,   343,   343,   344,   344,   345,   345,   345,   346,   346,
    1305      346,   346,   346,   347,   347,   347,   347,   348,   348,   348,
    1306      349,   349,   349,   350,   350,   350,   350,   351,   351,   351,
    1307      352,   352,   352,   352,   352,   353,   353,   353,   353,   354,
    1308      354,   354,   355,   355,   355,   356,   356,   356,   356,   356,
    1309      356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
    1310      359,   359,   359,   360,   360,   361,   361,   361,   362,   362,
    1311      363,   363,   363,   363,   363,   363,   364,   364,   364,   364,
    1312      364,   364,   364,   364,   364,   364,   365,   365,   365,   365,
    1313      366,   366,   366,   367,   367,   368,   368,   368,   368,   368,
    1314      368,   369,   369,   369,   369,   369,   369,   370,   371,   371,
    1315      371,   372,   372,   373,   373
     913    7252,  8635, -1317,    -3, -1317, -1317, -1317, -1317, -1317, -1317,
     914   -1317,    23, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     915   -1317, -1317, -1317, -1317, -1317, -1317,    81,    81,    81,  1277,
     916     970,   104,  7368,   277, -1317, -1317, -1317, -1317, -1317,   201,
     917   -1317, -1317, -1317,  1047,   187, -1317, -1317, -1317, -1317,  5370,
     918   -1317, -1317, -1317, -1317,    35,    48, -1317,  1328, -1317, -1317,
     919   -1317, -1317,   235,  1663,   343,    98,  7484, -1317, -1317,  6174,
     920    1066, -1317, -1317,   536,   376,  5540,   978,  1631,   536,  1775,
     921   -1317, -1317,   477,   683, -1317,   536,  1892, -1317,   295, -1317,
     922     422,   489, -1317, -1317, -1317, -1317,   346,    48,    81, -1317,
     923      81, -1317, -1317, -1317, -1317,  9392,  1328, -1317, -1317,  1328,
     924   -1317,   321, -1317,  9431, -1317, -1317,  2250,  9501, -1317,   668,
     925     668,   668, -1317, -1317, -1317,    81, -1317, -1317, -1317,   373,
     926     399,   410, -1317, -1317, -1317,   420, -1317, -1317, -1317, -1317,
     927   -1317,   428,   450, -1317, -1317,    59,  8604,  2904,   144,   440,
     928     493,   498,   531,   544,   560,  8522,  6772,   510,   580, -1317,
     929    9114, -1317, -1317, -1317, -1317,   584, -1317,   153,  4280,  4280,
     930   -1317,   570,   283, -1317, -1317, -1317, -1317,   596,   288,   303,
     931     332,    81,   583, -1317, -1317,  1663,  2232,   648, -1317,    73,
     932   -1317,    81,    81,    48, -1317, -1317,    80, -1317,    81,    81,
     933   -1317,  3694,   599,   613,   668,  6565, -1317, -1317,   661,  5370,
     934   -1317, -1317,   536, -1317, -1317, -1317,    48, -1317,  1328,    35,
     935   -1317,  7675, -1317,   668,   668,   668,    48, -1317,  1277, -1317,
     936    5446, -1317, -1317,   620,   668, -1317,   668, -1317,   201,  8604,
     937   -1317,   673, -1317,   970,   692,   668, -1317,  1277,   697,   707,
     938   -1317,  7368,   576, -1317, -1317, -1317,  4822, -1317, -1317,  9720,
     939   -1317,   648,   165, 10347,  9501,  2250,  3694, -1317,   109, -1317,
     940   -1317,  9431,  1328,   743,  7515, -1317, -1317,   306, -1317, 10675,
     941     770,   800,  2676,   801, 10480, 10499, -1317,   813, -1317, -1317,
     942   -1317, -1317, 10556, 10556,  8378,   795, -1317, -1317, -1317, -1317,
     943   -1317, -1317,   842, -1317,   685,  1919,  8717, 10480, -1317,   652,
     944     325,   507,   317,   581,   826,   820,   823,   861,   111, -1317,
     945   -1317,   827,   703, -1317,   452, -1317, -1317,  2904, -1317, -1317,
     946     278,   856, -1317,   636,   856,   866,   201, -1317, -1317,   872,
     947    9392, -1317,   876,   887,  8830, -1317, -1317,  1020,  2049,  8093,
     948    6565,   536, -1317,   536,   668,   668, -1317, -1317, -1317, -1317,
     949   -1317, -1317,   668,  9392,  1328, -1317, -1317,  9540,  1233, -1317,
     950    7824, -1317, -1317, -1317, -1317, -1317, -1317, -1317,   891,  4627,
     951   10480, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     952   -1317, -1317, -1317, -1317, -1317,  2250, -1317,   552,   901,   904,
     953     912,   862,   920,   922,   924,  2232, -1317, -1317,   932,    35,
     954     936, -1317, -1317,   939, -1317, -1317, -1317,  4822, -1317, -1317,
     955   -1317, -1317, -1317,  3694, -1317,  8604,  8604, -1317,   668,  2250,
     956    6684,  1328,  8166, -1317, -1317, -1317, -1317,  4822,   165, -1317,
     957   -1317,   536,    48, -1317, -1317,  4822, -1317,  6449, -1317, -1317,
     958     668,   668,   484,  8011,   938,   941,   931,   952,   668, -1317,
     959   -1317, -1317, -1317,  9797, -1317,   578,  6327, -1317,    48,   955,
     960   -1317,  2250, 10757, 10404, -1317, -1317, -1317, -1317,   881,  3694,
     961   -1317,  8239,   648,  3545, -1317, -1317, -1317,  1641,   586,   827,
     962     970,  7515,   592,  9431, -1317,  7515, -1317, -1317, -1317, -1317,
     963     603, -1317,   967,   800,   215,  8378, -1317,  9570, -1317, -1317,
     964    8378, -1317,  8491,  8378, -1317, -1317,   966, -1317,   617,   973,
     965     839,   983, -1317, -1317,  9253,  6415, -1317,   247, -1317, -1317,
     966   10347, -1317,   330, 10347, -1317, -1317, -1317, -1317, -1317, -1317,
     967   -1317, -1317, -1317, -1317, -1317, 10347, -1317, -1317, 10480, 10480,
     968   10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480,
     969   10480, 10480, 10480, 10480, 10480, 10480,  4526, 10347, -1317,   703,
     970     751, -1317, -1317,    81,    81, -1317, -1317,  8604, -1317, -1317,
     971     939,   576, -1317,   939, 10423, -1317, -1317, -1317,  8975,  6415,
     972     968,   976, -1317,  9501, -1317, -1317,   584, -1317,   990,   769,
     973     999,  3014,   124,   827, -1317,    81,    81,   827,   125, -1317,
     974      81,    81,   939, -1317, -1317,    81,    81, -1317,   856,  9652,
     975    1328, 10902,   151,   358,  9652, -1317,  9720, -1317,   827, -1317,
     976    9392, -1317,   147,  7790,  7790,  7790,  1328, -1317,  5708,   982,
     977     891,  1167,   995,   996, -1317,  1011,  4280,   230, -1317,  1103,
     978    1328,  7790,   576,  2250,   576,   648,   671,   856, -1317, -1317,
     979     694,   856, -1317, -1317, -1317,   800, -1317,   856,    48,  9797,
     980   -1317,   621,  1024,   640,  1026, -1317,  1030,    48, -1317, -1317,
     981    4822,    48,  1032,  9570,  1037, -1317,  1585, -1317,   335,   390,
     982     970, -1317,   970,  1023, 10480, -1317,   970, 10902, -1317, -1317,
     983    1034, -1317, -1317, -1317,   576, -1317, 10830,   887, -1317,  7790,
     984     859,  8093, -1317, -1317,   584,  1025,  1036,  1641,  3247, -1317,
     985   -1317,  7515, -1317, -1317,  1039, -1317, -1317,  1043, -1317,  1039,
     986    1048, 10675, 10347,    67,  1027,   133,  1053,  1061,  1068,  1069,
     987   -1317,  1072,  1074,  9362,  6534, -1317, 10347, -1317,   839,  2140,
     988   -1317, -1317, -1317,    81,    81, 10290, 10347,  1070, -1317, -1317,
     989     675, -1317, 10347, -1317, -1317,   644, -1317, -1317, -1317, -1317,
     990     652,   652,   325,   325,   507,   507,   507,   507,   317,   317,
     991     581,   826,   820,   823,   861, 10480,   333, -1317,  9797,  1079,
     992    1080,  1081,   751, -1317, -1317, -1317, -1317, -1317,  9797,   700,
     993    7790, -1317,  9392, -1317,  6891,  8943, -1317,  7824,  6772, -1317,
     994   -1317,   769,  9797,   917,  1082,  1083,  1084,  1087,  1088,  1089,
     995    1091, -1317,  4955,  3014, -1317, -1317, -1317, -1317, -1317, -1317,
     996   -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     997   -1317,   939, -1317, -1317, -1317,   827, -1317, -1317, -1317, -1317,
     998   -1317, -1317, -1317, -1317,  1098, -1317,  1099,  1101, -1317, -1317,
     999      35,  1070,  5708, -1317, -1317, -1317,  4627,  1102, -1317, -1317,
     1000   -1317, -1317,   970,  5944,  1191, -1317, -1317, -1317, -1317,  1094,
     1001      35, -1317, -1317,   939, -1317, -1317,   939,    24,   939, -1317,
     1002   -1317, -1317, -1317, -1317, -1317,  9223, -1317,    48, -1317, -1317,
     1003     432,   441,  9540,  7010,  2348, 10480,  3377, -1317, -1317,  1092,
     1004      94,  1092, -1317,   970, -1317,    81, -1317, -1317,  8748,   931,
     1005   -1317, -1317, -1317,   941,  1116,  1111, -1317, -1317,  1118,  1119,
     1006   -1317,   859,  2430, -1317,   455, -1317,  3247,   827, -1317,  1122,
     1007    7515,  9682,  8604,  1125, -1317, -1317,  1130,  1135,  1124, -1317,
     1008   10480,   166,   222,  1132, -1317,  1138,   576,  1138, -1317, -1317,
     1009    1138,  1137, -1317,  1145,  1147,  1148,  2140, -1317, -1317, -1317,
     1010    4627, -1317, -1317, -1317, -1317,  1143, 10347,  1149,   576, -1317,
     1011   10347, -1317,   576, -1317, -1317, 10347, -1317,   721,   856, -1317,
     1012   -1317, -1317, -1317, -1317, -1317, -1317,   891,   887,  8830, -1317,
     1013   -1317,  7129,  1152, -1317,   731,   856, -1317,   745,   763,   856,
     1014   -1317,   668,  5561, -1317, -1317, -1317,  9797,  9797, -1317,  8166,
     1015    8166, -1317,  1154,  1156,  1153,  1155, -1317,  1168,   460,   196,
     1016    1070, -1317,   576, -1317,  4280, -1317, 10347,   474, -1317,  6296,
     1017    1159,  1170, 10233,  1172,  1175,   -14,     3,    11, 10347,  1179,
     1018      48, 10347, 10347,  1160,  1177,   282,  1161, -1317, -1317, -1317,
     1019    1180, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     1020     970,  1184, 10347, -1317,  9797,  9797,    81,  1188, -1317,  8861,
     1021   -1317, -1317,   809, -1317,  3377, -1317, -1317, -1317, -1317,  1585,
     1022   -1317, -1317,  1185, -1317, -1317, -1317, -1317,  1193,  2430, -1317,
     1023   -1317,  1176, -1317,  1039, -1317, -1317,  2250,  1196, -1317, -1317,
     1024   -1317,   709,  1198, -1317,   133,  1202, 10480,  1186,   133,   133,
     1025    1211,  9253,   789,   856, -1317, -1317,  1011, 10347,  1214,  1143,
     1026     505,   224,  1217, -1317, -1317,  1218,  1217, -1317, -1317,  1226,
     1027   -1317, -1317,   939,  1228,  1230,  6653,  1231,  1232,  1243, -1317,
     1028   -1317,  1246, -1317, -1317,   939, -1317, -1317, -1317, -1317,   939,
     1029   10347, 10347,   887,  1245, -1317, -1317, -1317, -1317, -1317, -1317,
     1030   -1317, -1317, -1317, -1317, -1317, -1317, 10480, 10480,  1247,  1251,
     1031    1217, -1317, -1317,   970, -1317, -1317, -1317,  4468,  9682, 10347,
     1032   10347,  1311, 10347, -1317,  1234, -1317,  1237, -1317,  1239, 10347,
     1033    1241, 10347,  1049,  1244,    26,    81,  9084,   750, -1317, -1317,
     1034    5944,  1267,   481, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     1035   -1317, -1317, 10053, -1317,  8239,  1274, -1317, -1317,  9682,   482,
     1036     512, -1317,  1272,  1259,   800,  1280, -1317,   245, -1317, -1317,
     1037   -1317, -1317,   939,  1279, -1317, -1317,  1287,   385,   444,   576,
     1038    1293, -1317,  1294, -1317,  9797, -1317, -1317, -1317, -1317, -1317,
     1039    1295, -1317,  9797,  9797,  9797, -1317, -1317,  1297, -1317,  1298,
     1040    1282,  1305,   511,  7863,  7978, -1317, -1317,   348, -1317,  1304,
     1041    1310, -1317,  8312,   712,   734,  1308,   739,  6143, -1317, -1317,
     1042   -1317,   515, -1317,   765,  1318,  1320,    48,  1371,   879, -1317,
     1043   -1317, 10347, -1317, 10233, 10347, -1317, -1317, -1317,  1322,  1329,
     1044   -1317, -1317, -1317,  1324, -1317, -1317, -1317, -1317, -1317, -1317,
     1045    9682,   800,   265, -1317,  1309,   800,  9797, -1317, -1317, -1317,
     1046   -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     1047   -1317,  1330,  1331, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
     1048    1334, -1317,  1333, -1317, -1317, 10233,   143, 10347, 10233, -1317,
     1049    1338, 10347, -1317,   259,  1354,  1356, -1317, -1317,  1346,  1347,
     1050    1326, -1317,   880, -1317, -1317, -1317,  1328,  2250,  1345,   842,
     1051     364, 10480, -1317,   774, -1317,   576,   576,  1352,  1355,  1357,
     1052    1360, -1317, -1317,  8166,  1358, -1317,  1436, 10480,  1349, -1317,
     1053   -1317, 10145, -1317,   783, -1317,  1350, 10233,  1359, -1317, -1317,
     1054    1378, -1317,  1379, -1317,  1394,  1396, -1317,  1361,  9682, -1317,
     1055   -1317, -1317,   800,   576,  1386,  1367,  1392,  1217,  1217, -1317,
     1056   -1317, -1317, -1317, -1317, 10233,   275, -1317,   384, -1317, -1317,
     1057    7600, -1317, -1317,  1375, 10347, -1317, 10347,  7600,    48,  9570,
     1058      48,  9570,  1393, -1317,  1398, -1317, -1317,  1395,   842, -1317,
     1059     798, -1317, -1317, -1317,  1399,  1401, -1317, 10480, 10480, -1317,
     1060   -1317,   964,   167, -1317, -1317,  1388, -1317,   964, -1317, -1317,
     1061    2461,   576, -1317, -1317,    48,  9570,    48,  9570,  1409,  1390,
     1062     576, -1317, -1317, -1317, -1317, 10145,  1410,   964,  5861, 10347,
     1063   10057,  1412,   964,  1414,  2461,  3613, -1317, -1317, -1317,  1420,
     1064   -1317, -1317, -1317, -1317,  8604, -1317, -1317, -1317,  9924, -1317,
     1065   10145, -1317, -1317,  1402,  9836, -1317, -1317, 10057,    48,  3613,
     1066      48,  1421,  1429,   817, -1317,  9924, -1317, -1317, -1317,  9836,
     1067   -1317, -1317, -1317,    48,    48, -1317, -1317, -1317, -1317, -1317,
     1068   -1317, -1317, -1317
    13161069};
    13171070
    1318 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
    1319 static const yytype_uint8 yyr2[] =
    1320 {
    1321        0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    1322        1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
    1323        3,     3,     1,     6,     4,     3,     7,     3,     7,     2,
    1324        2,     7,     4,     1,     3,     0,     1,     3,     7,     9,
    1325        1,     3,     1,     3,     7,     3,     7,     1,     1,     1,
    1326        2,     2,     2,     2,     2,     2,     4,     6,     1,     4,
    1327        4,     2,     4,     1,     1,     1,     1,     1,     1,     1,
    1328        4,     4,     1,     3,     3,     3,     1,     3,     3,     1,
    1329        3,     3,     1,     3,     3,     3,     3,     1,     3,     3,
    1330        1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
    1331        1,     5,     4,     5,     1,     1,     3,     2,     0,     1,
    1332        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1333        1,     2,     5,     6,     7,     1,     3,     1,     3,     0,
    1334        1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
    1335        4,     2,     7,     1,     3,     1,     2,     1,     2,     1,
    1336        2,     2,     5,     7,     5,     9,     5,     9,     1,     3,
    1337        1,     1,     3,     3,     2,     1,     2,     2,     0,     1,
    1338        2,     3,     0,     1,     2,     3,     3,     4,     0,     1,
    1339        1,     2,     5,     7,     6,     6,     4,     3,     4,     2,
    1340        3,     2,     3,     3,     3,     3,     5,     3,     3,     4,
    1341        1,     5,     6,     5,     6,     9,    10,     9,    10,     2,
    1342        1,     2,     2,     2,     1,     6,     8,    10,    12,    14,
    1343        0,     1,     0,     1,     1,     3,     4,     7,     0,     1,
    1344        3,     1,     3,     1,     1,     1,     3,     1,     1,     1,
    1345        3,     0,     1,     3,     4,     1,     3,     1,     1,     3,
    1346        3,     3,     3,     3,     2,     3,     6,     3,     3,     4,
    1347        1,     2,     2,     3,     5,     8,     7,     7,     5,     9,
    1348        2,     2,     5,     3,     5,     4,     3,     4,     4,     7,
    1349        3,     3,     3,     3,     4,     6,     1,     1,     1,     1,
    1350        1,     1,     1,     1,     0,     1,     1,     2,     1,     1,
    1351        1,     1,     1,     1,     1,     0,     5,     1,     2,     3,
    1352        1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
    1353        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1354        1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
    1355        3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
    1356        2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
    1357        1,     2,     2,     1,     1,     4,     2,     0,     6,     7,
    1358        2,     2,     2,     0,     2,     2,     3,     2,     3,     1,
    1359        2,     3,     2,     2,     4,     0,     1,     2,     2,     1,
    1360        0,     1,     2,     2,     5,     2,     0,     7,     2,     4,
    1361        0,     2,     0,     1,     1,     1,     5,     5,     5,     1,
    1362        5,     5,     9,     1,     5,     0,     1,     1,     5,     1,
    1363        1,     5,     5,     1,     3,     3,     4,     1,     1,     1,
    1364        1,     2,     1,     3,     3,     1,     2,     1,     3,     1,
    1365        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1366        2,     1,     1,     1,     2,     0,     2,     2,     1,     4,
    1367        0,     1,     2,     3,     4,     2,     2,     1,     2,     1,
    1368        2,     5,     5,     7,     6,     1,     2,     2,     3,     1,
    1369        2,     2,     4,     2,     4,     0,     4,     2,     1,     1,
    1370        1,     0,     2,     5,     5,    13,     1,     1,     3,     3,
    1371        2,     3,     3,     2,     4,     1,     6,     9,     0,    11,
    1372        1,     3,     3,     3,     1,     1,     5,     2,     5,     0,
    1373        1,     1,     3,     0,     1,     1,     1,     1,     0,     6,
    1374        2,     1,     2,     4,     2,     3,     3,     3,     4,     5,
    1375        5,     5,     6,     1,     1,     1,     3,     0,     5,     0,
    1376        1,     1,     2,     6,     1,     3,     0,     1,     4,     1,
    1377        1,     1,     1,     2,     1,     2,     2,     1,     3,     2,
    1378        3,     3,     2,     4,     4,     3,     8,     3,     2,     1,
    1379        2,     6,     8,     3,     2,     3,     3,     4,     4,     3,
    1380        1,     1,     1,     4,     6,     3,     2,     3,     3,     4,
    1381        4,     3,     2,     1,     2,     2,     1,     3,     2,     3,
    1382        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1383        2,     2,     2,     3,     3,     2,     4,     4,     3,     6,
    1384        8,     3,     2,     1,     2,     2,     1,     1,     2,     3,
    1385        3,     2,     4,     6,     8,     1,     2,     2,     1,     2,
    1386        2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
    1387        2,     3,     1,     5,     5,     6,     6,     1,     2,     2,
    1388        1,     2,     2,     3,     3,     1,     4,     4,     3,     5,
    1389        8,     3,     1,     2,     1,     2,     6,     5,     6,     7,
    1390        7,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1391        4,     4,     3,     8,     3,     1,     1,     2,     1,     1,
    1392        2,     3,     2,     3,     2,     3,     3,     2,     4,     3,
    1393        2,     3,     2,     4,     3,     2,     6,     6,     6,     7,
    1394        1,     2,     1,     1,     1,     2,     3,     2,     3,     2,
    1395        3,     3,     4,     2,     3,     4,     2,     5,     5,     6,
    1396        6,     0,     1,     0,     2
    1397 };
    1398 
    1399 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
    1400    Performed when YYTABLE doesn't specify something else to do.  Zero
    1401    means the default is an error.  */
     1071  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
     1072     Performed when YYTABLE does not specify something else to do.  Zero
     1073     means the default is an error.  */
    14021074static const yytype_uint16 yydefact[] =
    14031075{
    1404      294,   294,   315,   313,   316,   314,   317,   318,   300,   302,
    1405      301,     0,   303,   329,   321,   326,   324,   325,   323,   322,
    1406      327,   328,   333,   330,   331,   332,   549,   549,   549,     0,
    1407        0,     0,   294,   220,   304,   319,   320,     7,   360,     0,
    1408        8,    14,    15,     0,     2,    63,    64,   567,     9,   294,
    1409      527,   525,   247,     3,   455,     3,   260,     0,     3,     3,
    1410        3,   248,     3,     0,     0,     0,   295,   296,   298,   294,
    1411      307,   310,   312,   341,   286,   334,   339,   287,   349,   288,
    1412      356,   353,   363,     0,     0,   364,   289,   475,   479,     3,
    1413        3,     0,     2,   521,   526,   531,   299,     0,     0,   549,
    1414      579,   549,     2,   590,   591,   592,   294,     0,   733,   734,
    1415        0,    12,     0,    13,   294,   270,   271,     0,   295,   290,
    1416      291,   292,   293,   528,   305,   393,   550,   551,   371,   372,
    1417       12,   446,   447,    11,   442,   445,     0,   505,   500,   491,
    1418      446,   447,     0,     0,   530,   221,     0,   294,     0,     0,
    1419        0,     0,     0,     0,     0,     0,   294,   294,     2,     0,
    1420      735,   295,   584,   596,   739,   732,   730,   737,     0,     0,
    1421        0,   254,     2,     0,   534,   440,   441,   439,     0,     0,
    1422        0,     0,   549,     0,   636,   637,     0,     0,   547,   543,
    1423      549,   564,   549,   549,   545,     2,   544,   549,   603,   549,
    1424      549,   606,     0,     0,     0,   294,   294,   313,   361,     2,
    1425      294,   261,   297,   308,   342,   354,   480,     0,     2,     0,
    1426      455,   262,   295,   335,   350,   357,   476,     0,     2,     0,
    1427      311,   336,   343,   344,     0,   351,   355,   358,   362,   447,
    1428      294,   373,   366,   370,     0,   395,   477,   481,     0,     0,
    1429        0,     1,   294,     2,   532,   578,   580,   294,     2,   743,
    1430      295,   746,   547,   547,     0,   295,     0,     0,   273,   549,
    1431      545,     2,   294,     0,     0,   294,   552,     2,   503,     2,
    1432      556,     0,     0,     0,     0,     0,     0,    18,    58,     4,
    1433        5,     6,    16,     0,     0,   294,     2,    65,    66,    67,
    1434       68,    48,    19,    49,    22,    47,    69,   294,     0,    72,
    1435       76,    79,    82,    87,    90,    92,    94,    96,    98,   100,
    1436      105,   497,   753,   453,   496,     0,   451,   452,     0,   568,
    1437      583,   586,   589,   595,   598,   601,   360,     0,     2,   741,
    1438        0,   294,   744,     2,    63,   294,     3,   427,     0,   435,
    1439      295,   294,   307,   334,   287,   349,   356,     3,     3,   409,
    1440      413,   423,   428,   475,   294,   429,   708,   709,   294,   430,
    1441      432,   294,     2,   585,   597,   731,     2,     2,   249,     2,
    1442      460,     0,   458,   457,   456,   141,     2,     2,   251,     2,
    1443        2,   250,     2,   281,     2,   282,     0,   280,     0,     0,
    1444        0,     0,     0,     0,     0,     0,     0,   569,   608,     0,
    1445      455,     2,   563,   572,   662,   565,   566,   535,   294,     2,
    1446      602,   611,   604,   605,     0,   276,   294,   294,   340,   295,
    1447        0,   295,     0,   294,   736,   740,   738,   536,   294,   547,
    1448      255,   263,   309,     0,     2,   537,   294,   501,   337,   338,
    1449      283,   352,   359,     0,   294,     0,   751,   400,     0,   478,
    1450      502,   252,   253,   522,   294,   437,     0,   294,   237,     0,
    1451        2,   239,     0,   295,     0,   257,     2,   258,   278,     0,
    1452        0,     2,   294,   547,   294,   488,   490,   489,     0,     0,
    1453      753,     0,   294,     0,   294,   492,   294,   562,   560,   561,
    1454      559,     0,   554,   557,     0,     0,   294,    55,   294,    69,
    1455       50,   294,    61,   294,   294,    53,    54,     2,   127,     0,
    1456        0,   449,     0,   448,   730,   121,   294,    17,     0,    29,
    1457       30,    35,     2,     0,    35,   111,   112,   113,   114,   115,
    1458      116,   117,   118,   119,   120,   110,     0,    51,    52,     0,
     1076     291,   291,   311,   309,   312,   310,   313,   314,   297,   299,
     1077     298,     0,   300,   325,   317,   322,   320,   321,   319,   318,
     1078     323,   324,   329,   326,   327,   328,   544,   544,   544,     0,
     1079       0,     0,   291,   217,   301,   315,   316,     7,   356,     0,
     1080       8,    14,    15,     0,     2,    60,    61,   562,     9,   291,
     1081     522,   520,   244,     3,   451,     3,   257,     0,     3,     3,
     1082       3,   245,     3,     0,     0,     0,   292,   293,   295,   291,
     1083     304,   307,   337,   283,   330,   335,   284,   345,   285,   352,
     1084     349,   359,     0,     0,   360,   286,   470,   474,     3,     3,
     1085       0,     2,   516,   521,   526,   296,     0,     0,   544,   574,
     1086     544,     2,   585,   586,   587,   291,     0,   728,   729,     0,
     1087      12,     0,    13,   291,   267,   268,     0,   292,   287,   288,
     1088     289,   290,   523,   302,   389,   545,   546,   367,   368,    12,
     1089     442,   443,    11,   438,   441,     0,   500,   495,   486,   442,
     1090     443,     0,     0,   525,   218,     0,   291,     0,     0,     0,
     1091       0,     0,     0,     0,     0,   291,   291,     2,     0,   730,
     1092     292,   579,   591,   734,   727,   725,   732,     0,     0,     0,
     1093     251,     2,     0,   529,   436,   437,   435,     0,     0,     0,
     1094       0,   544,     0,   631,   632,     0,     0,   542,   538,   544,
     1095     559,   544,   544,   540,     2,   539,   544,   598,   544,   544,
     1096     601,     0,     0,     0,   291,   291,   309,   357,     2,   291,
     1097     258,   294,   305,   338,   350,   475,     0,     2,     0,   451,
     1098     259,   292,   331,   346,   353,   471,     0,     2,     0,   308,
     1099     332,   339,   340,     0,   347,   351,   354,   358,   443,   291,
     1100     369,   362,   366,     0,   391,   472,   476,     0,     0,     0,
     1101       1,   291,     2,   527,   573,   575,   291,     2,   738,   292,
     1102     741,   542,   542,     0,   292,     0,     0,   270,   544,   540,
     1103       2,   291,     0,     0,   291,   547,     2,   498,     2,   551,
     1104       0,     0,     0,     0,     0,     0,    18,    57,     4,     5,
     1105       6,    16,     0,     0,   291,     2,    62,    63,    64,    65,
     1106      45,    19,    46,    22,    44,    66,   291,     0,    69,    73,
     1107      76,    79,    84,    87,    89,    91,    93,    95,    97,   102,
     1108     492,   748,   449,   491,     0,   447,   448,     0,   563,   578,
     1109     581,   584,   590,   593,   596,   356,     0,     2,   736,     0,
     1110     291,   739,     2,    60,   291,     3,   423,     0,   431,   292,
     1111     291,   304,   330,   284,   345,   352,     3,     3,   405,   409,
     1112     419,   424,   470,   291,   425,   703,   704,   291,   426,   428,
     1113     291,     2,   580,   592,   726,     2,     2,   246,     2,   456,
     1114       0,   454,   453,   452,   138,     2,     2,   248,     2,     2,
     1115     247,     2,   278,     2,   279,     0,   277,     0,     0,     0,
     1116       0,     0,     0,     0,     0,     0,   564,   603,     0,   451,
     1117       2,   558,   567,   657,   560,   561,   530,   291,     2,   597,
     1118     606,   599,   600,     0,   273,   291,   291,   336,   292,     0,
     1119     292,     0,   291,   731,   735,   733,   531,   291,   542,   252,
     1120     260,   306,     0,     2,   532,   291,   496,   333,   334,   280,
     1121     348,   355,     0,   291,     0,   746,   396,     0,   473,   497,
     1122     249,   250,   517,   291,   433,     0,   291,   234,     0,     2,
     1123     236,     0,   292,     0,   254,     2,   255,   275,     0,     0,
     1124       2,   291,   542,   291,   483,   485,   484,     0,     0,   748,
     1125       0,   291,     0,   291,   487,   291,   557,   555,   556,   554,
     1126       0,   549,   552,     0,     0,   291,    52,   291,    66,    47,
     1127     291,    54,   291,   291,    50,    51,     2,   124,     0,     0,
     1128     445,     0,   444,   725,   118,   291,    17,     0,    29,    30,
     1129      35,     2,     0,    35,   108,   109,   110,   111,   112,   113,
     1130     114,   115,   116,   117,   107,     0,    48,    49,     0,     0,
    14591131       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1460        0,     0,     0,     0,     0,     0,     0,     0,     0,   107,
    1461        2,   648,   454,   645,   549,   549,   653,   482,   294,     2,
    1462      587,   588,     0,   599,   600,     0,     2,   742,   745,   121,
    1463      294,     0,     2,   710,   295,   714,   705,   706,   712,     0,
    1464        2,     2,   670,   549,   753,   619,   549,   549,   753,   549,
    1465      633,   549,   549,   684,   436,   667,   549,   549,   675,   682,
    1466      294,   431,   295,     0,     0,   294,   720,   295,   725,   753,
    1467      717,   294,   722,   753,   294,   294,   294,     0,   121,     0,
    1468       18,     5,     2,     0,    19,     0,   461,   751,     0,     0,
    1469      467,   241,     0,   294,     0,     0,     0,   547,   571,   575,
    1470      577,   607,   610,   614,   617,   570,   609,     0,   284,   660,
    1471        0,   294,   277,     0,     0,     0,     0,   275,     2,     0,
    1472      259,   538,   294,     0,     0,   294,     2,   365,   385,   374,
    1473        0,     0,   379,   373,   752,     0,     0,   398,     0,   295,
    1474        3,   416,     3,   420,   419,   593,     0,   533,   294,    63,
    1475        3,   294,   435,   295,     3,   429,   430,     2,     0,     0,
    1476        0,   487,   306,   294,   483,   485,     3,     2,     2,     0,
    1477      504,     3,     0,   556,   129,     0,     0,   222,     0,     0,
    1478        0,     2,     0,     0,    36,     0,     0,   121,   294,    20,
    1479        0,    21,     0,   694,   699,   450,   691,   549,   549,     0,
    1480      108,     3,     2,    27,     2,     0,    33,     0,     2,    25,
    1481        0,   106,    73,    74,    75,    77,    78,    80,    81,    85,
    1482       86,    83,    84,    88,    89,    91,    93,    95,    97,    99,
    1483        0,     0,   754,   294,     0,     0,     0,   649,   650,   646,
    1484      647,   499,   498,   294,     0,   294,   716,   294,   721,   295,
    1485      294,   664,   294,   294,   707,   663,     2,   294,     0,     0,
    1486        0,     0,     0,     0,     0,     0,   685,     0,   671,   622,
    1487      638,   672,     2,   618,   625,   433,   620,   621,   434,     2,
    1488      632,   641,   634,   635,   668,   669,   683,   711,   715,   713,
    1489      753,   268,     2,   747,     2,   424,   719,   724,   425,     0,
    1490      403,     3,     3,     3,     3,   455,     3,     0,     2,   470,
    1491      466,   752,     0,   462,   469,     2,   465,   468,     0,   294,
    1492      242,   264,     3,   272,   274,     0,   455,     2,   573,   574,
    1493        2,   612,   613,     0,   661,   539,     3,   346,   345,   348,
    1494      347,   294,   540,     0,   541,   373,     0,     0,   294,   294,
    1495        0,     0,   694,   383,   386,   390,   549,   390,   389,   382,
    1496      375,   549,   377,   380,   294,   400,   394,   104,   401,   751,
    1497        0,     0,   438,   240,     0,     0,     3,     2,   670,   431,
    1498        0,   529,     0,   753,   491,     0,   294,   294,   294,     0,
    1499      553,   555,   130,     0,     0,   215,     0,     0,     0,   223,
    1500      224,    56,     0,    62,   294,     0,    60,    59,     0,     2,
    1501      128,     0,     0,     0,   695,   696,   692,   693,   460,    70,
    1502       71,   109,   125,     3,   108,     0,     0,     0,    24,    35,
    1503        3,     0,    32,   102,     0,     3,   652,   656,   659,   651,
    1504        3,   594,     3,   718,   723,     2,    63,   294,     3,     3,
    1505      295,     0,     3,   624,   628,   631,   640,   674,   678,   681,
    1506      294,     3,   623,   639,   673,   294,   294,   426,   294,   294,
    1507      748,     0,     0,     0,     0,   256,     0,   104,     0,     3,
    1508        3,     0,   463,     0,   459,     0,     0,   245,   294,     0,
    1509        0,   129,     0,     0,     0,     0,     0,   129,     0,     0,
    1510      108,   108,    18,     2,     0,     0,     3,   131,   132,     2,
    1511      143,   133,   134,   135,   136,   137,   138,   145,   147,     0,
    1512        0,     0,   285,   294,   294,   549,     0,   542,   294,   376,
    1513      378,     0,   392,   695,   387,   391,   388,   381,   385,   368,
    1514      399,     0,   581,     2,   666,   665,     0,   671,     2,   484,
    1515      486,   506,     3,   514,   515,     0,     2,   510,     3,     3,
    1516        0,     0,   558,   222,     0,     0,     0,   222,     0,     0,
    1517        3,    37,   121,   698,   702,   704,   697,   751,   108,     0,
    1518        3,   663,    42,     3,    40,     3,    34,     0,     3,   101,
    1519      103,     0,     2,   654,   655,     0,     0,   294,     0,     0,
    1520        0,     3,   640,     0,     2,   626,   627,     2,   642,     2,
    1521      676,   677,     0,     0,    63,     0,     3,     3,     3,     3,
    1522      411,   410,   414,     2,     2,   750,   749,   122,     0,     0,
    1523        0,     0,     3,   464,     3,     0,   243,   146,     3,   295,
    1524      294,     0,     0,     0,     0,     2,     0,   191,     0,   189,
    1525        0,     0,     0,     0,     0,     0,     0,   549,   121,     0,
    1526      151,   148,   294,     0,     0,   267,   279,     3,     3,   548,
    1527      615,   369,   384,   397,   294,   266,   294,     0,   517,   494,
    1528      294,     0,     0,   493,   508,     0,     0,     0,   216,     0,
    1529      225,    57,   108,     0,     2,   700,   701,     0,   126,   123,
    1530        0,     0,     0,     0,     0,     0,    23,     0,   657,   294,
    1531      582,   265,   726,   727,   728,     0,   679,   294,   294,   294,
    1532        3,     3,     0,   687,     0,     0,     0,     0,   294,   294,
    1533        3,   546,   471,   472,     0,     0,   246,   295,     0,     0,
    1534        0,     0,   294,   192,   190,   187,     0,   193,     0,     0,
    1535        0,     0,   197,   200,   198,   194,     0,   195,   129,    35,
    1536      144,   142,   244,     0,     0,   418,   422,   421,     0,   511,
    1537        2,   512,     2,   513,   507,   294,   228,     0,   226,     0,
    1538      228,     3,   663,   294,    31,   124,     2,    45,     2,    43,
    1539       41,    28,   122,    26,     3,   729,     3,     3,     3,     0,
    1540        0,   686,   688,   629,   643,   269,     2,   408,     3,   407,
    1541        0,   474,   471,   129,     0,     0,   129,     3,     0,   129,
    1542      188,     0,     2,     2,   209,   199,     0,     0,     0,   140,
    1543        0,   576,   616,     2,     0,     0,     2,   229,     0,     0,
    1544      217,     0,     0,     0,     3,     0,     0,     0,     0,     0,
    1545        0,   689,   690,   294,     0,   473,   152,     0,     0,     2,
    1546      165,   129,   154,     0,   182,     0,   129,     0,     2,   156,
    1547        0,     2,     0,     2,     2,     2,   196,    32,   294,   516,
    1548      518,   509,     0,     0,     0,     0,   124,    38,     0,     3,
    1549        3,   658,   630,   644,   680,   412,   129,   158,   161,     0,
    1550      160,   164,     3,   167,   166,     0,   129,   184,   129,     3,
    1551        0,   294,     0,   294,     0,     2,     0,     2,   139,     2,
    1552      230,   231,     0,   227,   218,     0,   703,     0,     0,   153,
    1553        0,     0,   163,   233,   168,     2,   235,   183,     0,   186,
    1554      172,   201,     3,   210,   214,   203,     3,     0,   294,     0,
    1555      294,     0,     0,     0,    39,    46,    44,   159,   162,   129,
    1556        0,   169,   294,   129,   129,     0,   173,     0,     0,   694,
    1557      211,   212,   213,     0,   202,     3,   204,     3,   294,   219,
    1558      232,   149,   170,   155,   129,   236,   185,   180,   178,   174,
    1559      157,   129,     0,   695,     0,     0,     0,     0,   150,   171,
    1560      181,   175,   179,   178,   176,     3,     3,     0,     0,   495,
    1561      177,   205,   207,     3,     3,   206,   208
     1132       0,     0,     0,     0,     0,     0,     0,     0,   104,     2,
     1133     643,   450,   640,   544,   544,   648,   477,   291,     2,   582,
     1134     583,     0,   594,   595,     0,     2,   737,   740,   118,   291,
     1135       0,     2,   705,   292,   709,   700,   701,   707,     0,     2,
     1136       2,   665,   544,   748,   614,   544,   544,   748,   544,   628,
     1137     544,   544,   679,   432,   662,   544,   544,   670,   677,   291,
     1138     427,   292,     0,     0,   291,   715,   292,   720,   748,   712,
     1139     291,   717,   748,   291,   291,   291,     0,   118,     0,    18,
     1140       2,     0,    19,     0,   457,   746,     0,     0,   463,   238,
     1141       0,   291,     0,     0,     0,   542,   566,   570,   572,   602,
     1142     605,   609,   612,   565,   604,     0,   281,   655,     0,   291,
     1143     274,     0,     0,     0,     0,   272,     2,     0,   256,   533,
     1144     291,     0,     0,   291,     2,   361,   381,   370,     0,     0,
     1145     375,   369,   747,     0,     0,   394,     0,   292,     3,   412,
     1146       3,   416,   415,   588,     0,   528,   291,    60,     3,   291,
     1147     431,   292,     3,   425,   426,     2,     0,     0,     0,   482,
     1148     303,   291,   478,   480,     3,     2,     2,     0,   499,     3,
     1149       0,   551,   126,     0,     0,   219,     0,     0,     0,     0,
     1150      36,     0,     0,   118,   291,    20,     0,    21,     0,   689,
     1151     694,   446,   686,   544,   544,     0,   105,     3,     2,    27,
     1152       0,    33,     0,     2,    25,     0,   103,    70,    71,    72,
     1153      74,    75,    77,    78,    82,    83,    80,    81,    85,    86,
     1154      88,    90,    92,    94,    96,     0,     0,   749,   291,     0,
     1155       0,     0,   644,   645,   641,   642,   494,   493,   291,     0,
     1156     291,   711,   291,   716,   292,   291,   659,   291,   291,   702,
     1157     658,     2,   291,     0,     0,     0,     0,     0,     0,     0,
     1158       0,   680,     0,   666,   617,   633,   667,     2,   613,   620,
     1159     429,   615,   616,   430,     2,   627,   636,   629,   630,   663,
     1160     664,   678,   706,   710,   708,   748,   265,     2,   742,     2,
     1161     420,   714,   719,   421,     0,   399,     3,     3,     3,     3,
     1162     451,     3,     0,     2,   465,   462,   747,     0,   458,     2,
     1163     461,   464,     0,   291,   239,   261,     3,   269,   271,     0,
     1164     451,     2,   568,   569,     2,   607,   608,     0,   656,   534,
     1165       3,   342,   341,   344,   343,   291,   535,     0,   536,   369,
     1166       0,     0,   291,   291,     0,     0,   689,   379,   382,   386,
     1167     544,   386,   385,   378,   371,   544,   373,   376,   291,   396,
     1168     390,   101,   397,   746,     0,     0,   434,   237,     0,     0,
     1169       3,     2,   665,   427,     0,   524,     0,   748,   486,     0,
     1170     291,   291,   291,     0,   548,   550,   127,     0,     0,   212,
     1171       0,     0,     0,   220,   221,    53,     0,    55,    58,    59,
     1172       0,     2,   125,     0,     0,     0,   690,   691,   687,   688,
     1173     456,    67,    68,   106,   122,     3,   105,     0,     0,    24,
     1174      35,     3,     0,    32,    99,     0,     3,   647,   651,   654,
     1175     646,     3,   589,     3,   713,   718,     2,    60,   291,     3,
     1176       3,   292,     0,     3,   619,   623,   626,   635,   669,   673,
     1177     676,   291,     3,   618,   634,   668,   291,   291,   422,   291,
     1178     291,   743,     0,     0,     0,     0,   253,     0,   101,     0,
     1179       3,     3,     0,   459,     0,   455,     0,     0,   242,   291,
     1180       0,     0,   126,     0,     0,     0,     0,     0,   126,     0,
     1181       0,   105,   105,    18,     2,     0,     0,     3,   128,   129,
     1182       2,   140,   130,   131,   132,   133,   134,   135,   142,   144,
     1183       0,     0,     0,   282,   291,   291,   544,     0,   537,   291,
     1184     372,   374,     0,   388,   690,   383,   387,   384,   377,   381,
     1185     364,   395,     0,   576,     2,   661,   660,     0,   666,     2,
     1186     479,   481,   501,     3,   509,   510,     0,     2,   505,     3,
     1187       3,     0,     0,   553,   219,     0,     0,     0,   219,     0,
     1188       0,   118,   693,   697,   699,   692,   746,   105,     0,     3,
     1189     658,    39,     3,    37,    34,     0,     3,    98,   100,     0,
     1190       2,   649,   650,     0,     0,   291,     0,     0,     0,     3,
     1191     635,     0,     2,   621,   622,     2,   637,     2,   671,   672,
     1192       0,     0,    60,     0,     3,     3,     3,     3,   407,   406,
     1193     410,     2,     2,   745,   744,   119,     0,     0,     0,     0,
     1194       3,   460,     3,     0,   240,   143,     3,   292,   291,     0,
     1195       0,     0,     0,     2,     0,   188,     0,   186,     0,     0,
     1196       0,     0,     0,     0,     0,   544,   118,     0,   148,   145,
     1197     291,     0,     0,   264,   276,     3,     3,   543,   610,   365,
     1198     380,   393,   291,   263,   291,     0,   512,   489,   291,     0,
     1199       0,   488,   503,     0,     0,     0,   213,     0,   222,    56,
     1200       2,   695,   696,     0,   123,   120,     0,     0,     0,     0,
     1201       0,    23,     0,   652,   291,   577,   262,   721,   722,   723,
     1202       0,   674,   291,   291,   291,     3,     3,     0,   682,     0,
     1203       0,     0,     0,   291,   291,     3,   541,   119,   467,     0,
     1204       0,   243,   292,     0,     0,     0,     0,   291,   189,   187,
     1205     184,     0,   190,     0,     0,     0,     0,   194,   197,   195,
     1206     191,     0,   192,   126,    35,   141,   139,   241,     0,     0,
     1207     414,   418,   417,     0,   506,     2,   507,     2,   508,   502,
     1208     291,   225,     0,   223,     0,   225,   291,    31,   121,     2,
     1209      42,     2,    40,    38,    28,    26,     3,   724,     3,     3,
     1210       3,     0,     0,   681,   683,   624,   638,   266,     2,   404,
     1211       3,   403,     0,   469,   466,   126,     0,     0,   126,     3,
     1212       0,   126,   185,     0,     2,     2,   206,   196,     0,     0,
     1213       0,   137,     0,   571,   611,     2,     0,     0,     2,   226,
     1214       0,     0,   214,     0,     3,     0,     0,     0,     0,     0,
     1215       0,   684,   685,   291,     0,   468,   149,     0,     0,     2,
     1216     162,   126,   151,     0,   179,     0,   126,     0,     2,   153,
     1217       0,     2,     0,     2,     2,     2,   193,    32,   291,   511,
     1218     513,   504,     0,     0,     0,     0,     0,     3,     3,   653,
     1219     625,   639,   675,   408,   126,   155,   158,     0,   157,   161,
     1220       3,   164,   163,     0,   126,   181,   126,     3,     0,   291,
     1221       0,   291,     0,     2,     0,     2,   136,     2,   227,   228,
     1222       0,   224,   215,   698,     0,     0,   150,     0,     0,   160,
     1223     230,   165,     2,   232,   180,     0,   183,   169,   198,     3,
     1224     207,   211,   200,     3,     0,   291,     0,   291,     0,     0,
     1225       0,    43,    41,   156,   159,   126,     0,   166,   291,   126,
     1226     126,     0,   170,     0,     0,   689,   208,   209,   210,     0,
     1227     199,     3,   201,     3,   291,   216,   229,   146,   167,   152,
     1228     126,   233,   182,   177,   175,   171,   154,   126,     0,   690,
     1229       0,     0,     0,     0,   147,   168,   178,   172,   176,   175,
     1230     173,     3,     3,     0,     0,   490,   174,   202,   204,     3,
     1231       3,   203,   205
    15621232};
    15631233
    1564 /* YYDEFGOTO[NTERM-NUM].  */
     1234  /* YYPGOTO[NTERM-NUM].  */
     1235static const yytype_int16 yypgoto[] =
     1236{
     1237   -1317,  4344,  3244, -1317,   633, -1317,   172,   896,  -203, -1317,
     1238     487,  -518,  -482,  -910,  -211,  1511,     0, -1317,  1129,   534,
     1239     537,   615,   556,   984,   981,   988,   980,   989, -1317,     4,
     1240    -451,  4784,  -913, -1317,  -702,   571,    13,  -706,   419, -1317,
     1241     190, -1317,   345,  -964, -1317, -1317,    85, -1317, -1099, -1138,
     1242     197, -1317, -1317, -1317, -1317,    20, -1281, -1317, -1317, -1317,
     1243   -1317, -1317, -1317,   266, -1095,    50, -1317,  -472, -1317,   443,
     1244     239, -1317,   118, -1317,  -294, -1317, -1317, -1317,   496,  -829,
     1245   -1317, -1317,     8,  -952,    28,  2894, -1317, -1317, -1317,  -214,
     1246   -1317,   121,  1028,  -198,  1848,  3592, -1317, -1317,   127,   296,
     1247    1545,  1505, -1317,  1929, -1317, -1317,   137,  2139, -1317,  2574,
     1248     804, -1317, -1317, -1317,  -637, -1317,   886,   889,   490,   670,
     1249      52, -1317, -1317, -1317,   893,   666,  -510, -1317,  -116,    40,
     1250    1073, -1317, -1317,  -889,  -983,   933,  1377,  1006,   -11, -1317,
     1251    1351,   508,  -322,  -183,  -145,   623,   724, -1317,   944, -1317,
     1252    2701,   574,  -443,   875, -1317, -1317,   659, -1317,  -228, -1317,
     1253     -45, -1317, -1317, -1317, -1253,   370, -1317, -1317, -1317,  1120,
     1254   -1317,    33, -1317, -1317,  -828,  -100, -1316,  -170,  2264, -1317,
     1255    1914, -1317,   868, -1317,  -155,   129,  -181,  -180,  -175,     7,
     1256     -41,   -40,   -35,  1507,    37,    53,    57,   -29,  -172,  -163,
     1257    -158,  -150,  -293,  -500,  -490,  -485,  -542,  -284,  -525, -1317,
     1258   -1317,  -499,  1035,  1038,  1040,  1486,  4616,  -563,  -531,  -513,
     1259    -491,  -561, -1317,  -506,  -730,  -727,  -723,  -562,  -311,  -227,
     1260   -1317, -1317,   378,    19,   -93, -1317,  3633,   159,  -611,  -428
     1261};
     1262
     1263  /* YYDEFGOTO[NTERM-NUM].  */
    15651264static const yytype_int16 yydefgoto[] =
    15661265{
    1567       -1,   817,   468,   301,    47,   134,   135,   302,   303,   304,
    1568      305,   765,   766,  1143,  1144,   306,   381,   308,   309,   310,
    1569      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
    1570     1038,   518,   982,   546,   322,   983,   952,  1065,  1541,  1067,
    1571     1068,  1069,  1070,  1542,  1071,  1072,  1458,  1459,  1420,  1421,
    1572     1422,  1520,  1521,  1525,  1526,  1561,  1562,  1073,  1378,  1074,
    1573     1075,  1312,  1313,  1314,  1502,  1076,   146,   958,   959,   960,
    1574     1398,  1482,  1494,  1495,   469,   470,   879,   880,  1046,    51,
    1575       52,    53,    54,    55,   347,   159,    58,    59,    60,    61,
    1576       62,   349,    64,    65,   265,    67,    68,   275,   351,   352,
    1577       71,    72,    73,    74,   119,    76,   205,   354,   120,    79,
    1578      121,    81,    82,   455,    83,   454,   689,   690,   691,   913,
    1579     1094,   914,    84,    85,   458,   456,   697,   859,   860,   357,
    1580      358,   700,   701,   702,   359,   360,   361,   362,   466,   340,
    1581      136,   137,   522,   324,   171,   646,   647,   648,   649,   650,
    1582       86,   122,    88,   489,   490,   944,   491,   278,   495,   325,
    1583       89,   138,   139,    90,  1335,  1116,  1117,  1118,  1119,    91,
    1584       92,   718,    93,   274,    94,    95,   188,  1040,   680,   412,
    1585      126,    96,   501,   502,   503,   189,   269,   191,   192,   193,
    1586      270,    99,   100,   101,   102,   103,   104,   105,   196,   197,
    1587      198,   199,   200,   829,   605,   606,   607,   608,   201,   610,
    1588      611,   612,   572,   573,   574,   575,   754,   106,   614,   615,
    1589      616,   617,   618,   619,   975,   756,   757,   758,   595,   365,
    1590      366,   367,   368,   326,   165,   108,   109,   110,   370,   695,
    1591      569
     1266      -1,   812,   467,   300,    47,   133,   134,   301,   302,   303,
     1267     304,   760,   761,  1132,  1133,   305,   380,   307,   308,   309,
     1268     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
     1269    1029,   517,   974,   545,   321,   975,   946,  1056,  1517,  1058,
     1270    1059,  1060,  1061,  1518,  1062,  1063,  1436,  1437,  1400,  1401,
     1271    1402,  1496,  1497,  1501,  1502,  1537,  1538,  1064,  1360,  1065,
     1272    1066,  1297,  1298,  1299,  1479,  1067,   145,   952,   953,   954,
     1273    1380,  1460,  1471,  1472,   468,   469,   873,   874,  1037,    51,
     1274      52,    53,    54,    55,   346,   158,    58,    59,    60,    61,
     1275      62,   348,    64,    65,   264,    67,    68,   274,   350,   351,
     1276      71,    72,    73,   118,    75,   204,   353,   119,    78,   120,
     1277      80,    81,   454,    82,   453,   687,   688,   689,   907,  1085,
     1278     908,    83,    84,   457,   455,   695,   854,   855,   856,   857,
     1279     698,   699,   700,   358,   359,   360,   361,   465,   339,   135,
     1280     136,   521,   323,   170,   644,   645,   646,   647,   648,    85,
     1281     121,    87,   488,   489,   938,   490,   277,   494,   324,    88,
     1282     137,   138,    89,  1320,  1107,  1108,  1109,  1110,    90,    91,
     1283     716,    92,   273,    93,    94,   187,  1031,   678,   411,   125,
     1284      95,   500,   501,   502,   188,   268,   190,   191,   192,   269,
     1285      98,    99,   100,   101,   102,   103,   104,   195,   196,   197,
     1286     198,   199,   824,   604,   605,   606,   607,   200,   609,   610,
     1287     611,   571,   572,   573,   574,   750,   105,   613,   614,   615,
     1288     616,   617,   618,   967,   752,   753,   754,   594,   364,   365,
     1289     366,   367,   325,   164,   107,   108,   109,   369,   693,   568
    15921290};
    15931291
    1594 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    1595    STATE-NUM.  */
    1596 #define YYPACT_NINF -1315
    1597 static const yytype_int16 yypact[] =
    1598 {
    1599     5006,  8237, -1315,    89, -1315, -1315, -1315, -1315, -1315, -1315,
    1600    -1315,   194, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
    1601    -1315, -1315, -1315, -1315, -1315, -1315,   314,   314,   314,   792,
    1602      787,   234,  7780,   219, -1315, -1315, -1315, -1315, -1315,   257,
    1603    -1315, -1315, -1315,   912,   264, -1315, -1315, -1315, -1315,  6920,
    1604    -1315, -1315, -1315, -1315,   120,   272, -1315,   823, -1315, -1315,
    1605    -1315, -1315,   302,  1619,   420,   112,  3706, -1315, -1315,  9405,
    1606     1262, -1315, -1315, -1315,   675,   440,  7333,  1133,  1444,   675,
    1607     1669, -1315, -1315,   482,   771, -1315,   675,  1807, -1315,   386,
    1608    -1315,   507,   517, -1315, -1315, -1315, -1315,   426,   272,   314,
    1609    -1315,   314, -1315, -1315, -1315, -1315,  8871,   823, -1315, -1315,
    1610      823, -1315,   415, -1315,  8985, -1315, -1315,  1777,  9099, -1315,
    1611      428,   428,   428, -1315, -1315, -1315,   314, -1315, -1315, -1315,
    1612      454,   468,   490, -1315, -1315, -1315,   500, -1315, -1315, -1315,
    1613    -1315, -1315,   504,   509, -1315, -1315,    76,  8833,  2235,   669,
    1614      439,   450,   519,   522,   537,   567,  8121,  7182,   529,   581,
    1615    -1315,  9443, -1315, -1315, -1315, -1315,   595, -1315,   216,  3771,
    1616     3771, -1315,   603,   313, -1315, -1315, -1315, -1315,   605,   316,
    1617      320,   345,   314,   589, -1315, -1315,  1619,  2809,   664, -1315,
    1618       49, -1315,   314,   314,   272, -1315, -1315,    87, -1315,   314,
    1619      314, -1315,  3249,   632,   636,   428,  7093, -1315, -1315,   646,
    1620     6920, -1315, -1315,   675, -1315, -1315, -1315,   272, -1315,   823,
    1621      120, -1315,  7972, -1315,   428,   428,   428,   272, -1315,   792,
    1622    -1315,  5155, -1315, -1315,   635,   428, -1315,   428, -1315,   257,
    1623     8833, -1315,   657, -1315,   787,   660,   428, -1315,   792,   679,
    1624      704, -1315,  7780,   574, -1315, -1315, -1315,  9296, -1315, -1315,
    1625     6389, -1315,   664,    74,  5169,  9099,  1777,  3249, -1315,    97,
    1626    -1315, -1315,  8985,   823,   708,  9849, -1315, -1315,   539, -1315,
    1627    10667,   680,   762, 10451,   751, 10470, 10528, -1315,   764, -1315,
    1628    -1315, -1315, -1315, 10547, 10547,  8605,   778, -1315, -1315, -1315,
    1629    -1315, -1315, -1315,   801, -1315,   969,  2181,  8947, 10470, -1315,
    1630      339,   731,   846,   265,   890,   795,   797,   810,   836,    33,
    1631    -1315, -1315,   812,   497, -1315,    59, -1315, -1315,  2235, -1315,
    1632    -1315,   588,   835, -1315,   622,   835,   847,   257, -1315, -1315,
    1633      863,  8871, -1315,   854,   878,  9061, -1315, -1315,   765,  1714,
    1634     8320,  7093,   675, -1315,   675,   428,   428, -1315, -1315, -1315,
    1635    -1315, -1315, -1315,   428,  8871,   823, -1315, -1315,  9213,   843,
    1636    -1315,  8757, -1315, -1315, -1315, -1315, -1315, -1315, -1315,   886,
    1637     3575, 10470, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
    1638    -1315, -1315, -1315, -1315, -1315, -1315,  1777, -1315,   793,   865,
    1639      884,   894,   869,   902,   905,   909,  2809, -1315, -1315,   918,
    1640      120,   935, -1315, -1315,   927, -1315, -1315, -1315,  9296, -1315,
    1641    -1315, -1315, -1315, -1315,  3249, -1315,  8833,  8833, -1315,   428,
    1642     1777,  7213,   823,  8393, -1315, -1315, -1315, -1315,  9296,    74,
    1643    -1315, -1315,   675,   272, -1315, -1315,  9296, -1315,  6557, -1315,
    1644    -1315,   428,   428,   295,  9519,   937,   942,   934,   955,   428,
    1645    -1315, -1315, -1315, -1315,  9927, -1315,   540,  6680, -1315,   272,
    1646      963, -1315,  1777, 10749,  5888, -1315, -1315, -1315, -1315,   899,
    1647     3249, -1315,  8466,   664,  7663, -1315, -1315, -1315,  1232,   551,
    1648      812,   787,  9849,   591,  8985, -1315,  9849, -1315, -1315, -1315,
    1649    -1315,   576, -1315,   980,   762,   283,  8605, -1315,  9699, -1315,
    1650    -1315,  8605, -1315,  8719,  8605, -1315, -1315,   987, -1315,   599,
    1651      996,   706,   999, -1315, -1315,  6048,  6769, -1315,   137, -1315,
    1652    -1315,  6053, -1315,   286,  6053, -1315, -1315, -1315, -1315, -1315,
    1653    -1315, -1315, -1315, -1315, -1315, -1315,  5169, -1315, -1315, 10470,
    1654    10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470,
    1655    10470, 10470, 10470, 10470, 10470, 10470, 10470,  4672,  5169, -1315,
    1656      497,  1307, -1315, -1315,   314,   314, -1315, -1315,  8833, -1315,
    1657    -1315,   927,   574, -1315,   927, 10393, -1315, -1315, -1315,  9329,
    1658     6769,  1002,  1007, -1315,  9099, -1315, -1315,   595, -1315,  1019,
    1659      941,  1024,  1647,   103,   812, -1315,   314,   314,   812,   133,
    1660    -1315,   314,   314,   927, -1315, -1315,   314,   314, -1315,   835,
    1661     9781,   823, 10894,   412,   469,  9781, -1315,  6389, -1315,   812,
    1662    -1315,  8871, -1315,   191,  5383,  5383,  5383,   823, -1315,  4873,
    1663      979,   513,   886,   151,  1028,  1030, -1315,  1036,  3771,   531,
    1664    -1315,  1124,   823,  5383,   574,  1777,   574,   664,   782,   835,
    1665    -1315, -1315,   802,   835, -1315, -1315, -1315,   762, -1315,   835,
    1666      272,  9927, -1315,   606,  1050,   616,  1051, -1315,  1052,   272,
    1667    -1315, -1315,  9296,   272,  1054,  9699,  1053, -1315,  1508, -1315,
    1668      360,   367,   787, -1315,   787,  1056, 10470, -1315,   787, 10894,
    1669    -1315, -1315,  1059, -1315, -1315, -1315,   574, -1315, 10822,   878,
    1670    -1315,  5383,   769,  8320, -1315, -1315,   595,  1057,  1058,  1232,
    1671     3288, -1315, -1315,  9849, -1315, -1315,  1065, -1315, -1315,  1066,
    1672    -1315,  1065,  1064, 10667,  5169,   121,  1034,   100,  1074,  1071,
    1673     1075,   778,  1072,  1078, -1315,  1080,  1082,  9557,  6889, -1315,
    1674     5169, -1315,   706,  2222, -1315, -1315, -1315,   314,   314,  5021,
    1675     5169,  1079, -1315, -1315,   886,   619, -1315,  5169, -1315, -1315,
    1676      971, -1315, -1315, -1315, -1315,   339,   339,   731,   731,   846,
    1677      846,   846,   846,   265,   265,   890,   795,   797,   810,   836,
    1678    10470,   975, -1315,  9927,  1084,  1086,  1087,  1307, -1315, -1315,
    1679    -1315, -1315, -1315,  9927,   639,  5383, -1315,  8871, -1315,  7302,
    1680     9175, -1315,  8757,  7182, -1315, -1315,   941,  9927,   923,  1093,
    1681     1097,  1098,  1101,  1104,  1109,  1110, -1315,  3448,  1647, -1315,
    1682    -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,
    1683    -1315, -1315, -1315, -1315, -1315, -1315,   927, -1315, -1315, -1315,
    1684      812, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,  1111,
    1685    -1315,  1115,  1116, -1315, -1315,   120,  1079,  4873, -1315, -1315,
    1686    -1315,  3575,  1113, -1315, -1315, -1315, -1315, -1315,   787,  6479,
    1687     1200, -1315, -1315, -1315, -1315,  1100,   120, -1315, -1315,   927,
    1688    -1315, -1315,   927,   146,   927, -1315, -1315, -1315, -1315, -1315,
    1689    -1315,  9481, -1315,   272, -1315, -1315,   380,   387,  9213,  7422,
    1690     1947, 10470,  2081, -1315, -1315,  1121,    77,  1121, -1315,   787,
    1691    -1315,   314, -1315, -1315,  9630,   934, -1315, -1315, -1315,   942,
    1692     1122,  1117, -1315, -1315,  1129,  1130, -1315,   769,  2444, -1315,
    1693      476, -1315,  3288,   812, -1315,  1135,  9849,  9811,  8833,  1136,
    1694    -1315, -1315,  1127,  1137,  1131, -1315, 10470,   134,   293,  1138,
    1695    -1315,  1142,   574,  1142,  6769,  5169, -1315, -1315,  1142,  1139,
    1696    -1315,  1150,  1152,  1153,  2222, -1315, -1315, -1315,  3575, -1315,
    1697    -1315, -1315, -1315,  1156,  5169,  1140,   574,  4873, -1315,  6053,
    1698    -1315,   574, -1315, -1315,  5169, -1315,   842,   835, -1315, -1315,
    1699    -1315, -1315, -1315, -1315, -1315,   886,   878,  9061, -1315, -1315,
    1700     7542,  1163, -1315,   882,   835, -1315,   892,   926,   835, -1315,
    1701      428,  4553, -1315, -1315, -1315,  9927,  9927, -1315,  8393,  8393,
    1702    -1315,  1161,  1164,  1169,  1172, -1315,  1171,   527,    41,  1079,
    1703    -1315,   574, -1315,  3771, -1315,  5169,   423, -1315,  6649,  1175,
    1704     1177, 10335,  1178,  1181,     9,    73,    48,  5169,  1182,   272,
    1705     5169,  5169,  1132,  1180,   489,  1162, -1315, -1315, -1315,  1184,
    1706    -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315,   787,
    1707     1183,  5169, -1315,  9927,  9927,   314,  1186, -1315,  9668, -1315,
    1708    -1315,   984, -1315,  2081, -1315, -1315, -1315, -1315,  1508, -1315,
    1709    -1315,  1188, -1315, -1315, -1315, -1315,  1191,  2444, -1315, -1315,
    1710     1185, -1315,  1065, -1315, -1315,  1777,  1194, -1315, -1315, -1315,
    1711      640,  1198, -1315,   100,  1201, 10470,  1195,   100,   100,  1213,
    1712     1214, -1315,  6048,   959,   835, -1315, -1315,  1036,  5169,  1217,
    1713     1156,   654,    46,  1216, -1315,  1214, -1315,  1222,  1216, -1315,
    1714    -1315,  1226, -1315, -1315,   927,  1229,  1230,  7062,  1231,  1235,
    1715     1237, -1315, -1315,  1242, -1315, -1315,   927, -1315, -1315, -1315,
    1716    -1315,   927,  5169,  5169,   878,  1244, -1315, -1315, -1315, -1315,
    1717    -1315, -1315, -1315, -1315, -1315, -1315, -1315, -1315, 10470, 10470,
    1718     1246,  1253,  1216, -1315, -1315,   787, -1315, -1315, -1315,  4813,
    1719     9811,  5169,  5169,  1321,  5169, -1315,  1239, -1315,  1247, -1315,
    1720     1248,  5169,  1250,  5169,   986,  1252,    81,   314,  9367,  1069,
    1721    -1315, -1315,  6479,  1261,   436, -1315, -1315, -1315, -1315, -1315,
    1722    -1315, -1315, -1315, -1315, 10153, -1315,  8466,  1268, -1315, -1315,
    1723     9811,   437,   451, -1315,  1270,  1271,   762,  1280, -1315,   352,
    1724    -1315, -1315,  5169,  1281, -1315, -1315,   927,  1277, -1315, -1315,
    1725     1284,   301,   375,   574,  1285,  1288, -1315,  1290, -1315,  9927,
    1726    -1315, -1315, -1315, -1315, -1315,  1291, -1315,  9927,  9927,  9927,
    1727    -1315, -1315,  1293, -1315,  1295,  1298,  1299,   590,  8088,  8204,
    1728    -1315, -1315,   304, -1315,  1302,  1303, -1315,  8539,   652,   671,
    1729     1308,   690,  6255, -1315, -1315, -1315,   471, -1315,   711,  1310,
    1730     1311,   272,  1363,  1043, -1315, -1315,  5169, -1315, 10335,  6053,
    1731    -1315, -1315, -1315,  1317,  1318, -1315, -1315, -1315,  1316, -1315,
    1732    -1315, -1315, -1315, -1315, -1315,  9811,   762,   155, -1315,  1300,
    1733      762,  1156,   297,  9927, -1315, -1315, -1315, -1315, -1315, -1315,
    1734    -1315, -1315,  1314, -1315, -1315, -1315, -1315, -1315, -1315,  1323,
    1735     1324, -1315, -1315, -1315, -1315, -1315, -1315, -1315,  1329, -1315,
    1736     1330, -1315, -1315, 10335,   135,  5169, 10335, -1315,  1333,  5169,
    1737    -1315,   281,  1344,  1348, -1315, -1315,  1340,  1343,  1331, -1315,
    1738      988, -1315, -1315, -1315,   823,  1777,  1338,   801,   995, 10470,
    1739    -1315,   713,  1349,  5169, -1315,   574,   574,  1350,  1355,  1356,
    1740     1358, -1315, -1315,  8393,  1359, -1315,  1430, 10470,  1360, -1315,
    1741    -1315, 10246, -1315,   722, -1315,  1347, 10335,  1352, -1315, -1315,
    1742     1366, -1315,  1370, -1315,  1385,  1386, -1315,  1354,  9811, -1315,
    1743    -1315, -1315,   762,   574,  1382,  1364,  1381, -1315,  1389,  1216,
    1744     1216, -1315, -1315, -1315, -1315, -1315, 10335,   197, -1315,  1000,
    1745    -1315, -1315,  7897, -1315, -1315,  1368,  5169, -1315,  5169,  7897,
    1746      272,  9699,   272,  9699,  1391, -1315,  1392, -1315, -1315,  1390,
    1747      801, -1315,   776, -1315, -1315,  5169, -1315,  1394,  1395, -1315,
    1748    10470, 10470, -1315, -1315,  1077,    85, -1315, -1315,  1372, -1315,
    1749     1077, -1315, -1315,  2494,   574, -1315, -1315,   272,  9699,   272,
    1750     9699,  1403,  1383,   574, -1315, -1315, -1315, -1315, -1315, 10246,
    1751     1401,  1077,  5739,  5169, 10157,  1402,  1077,  1408,  2494,  2404,
    1752    -1315, -1315, -1315,  1409, -1315, -1315, -1315, -1315,  8833, -1315,
    1753    -1315, -1315, 10024, -1315, 10246, -1315, -1315,  1388,  9931, -1315,
    1754    -1315, 10157,   272,  2404,   272,  1413,  1414,   857, -1315, 10024,
    1755    -1315, -1315, -1315,  9931, -1315, -1315, -1315,   272,   272, -1315,
    1756    -1315, -1315, -1315, -1315, -1315, -1315, -1315
    1757 };
    1758 
    1759 /* YYPGOTO[NTERM-NUM].  */
    1760 static const yytype_int16 yypgoto[] =
    1761 {
    1762    -1315,  4470,  3041, -1315,    39, -1315,  2507,   957,  -207, -1315,
    1763      461,  -523,  -489,  -955,  -200,  5636,     0, -1315,    72,   572,
    1764      580,   245,   566,   964,   967,   968,   966,   976, -1315,  1601,
    1765     -609,  5067,  -949, -1315,  -712,  -938,   430,  -728,   512, -1315,
    1766     1697, -1315,   311, -1200, -1315, -1315,    43, -1315, -1142, -1154,
    1767      154, -1315, -1315, -1315, -1315,   -26, -1161, -1315, -1315, -1315,
    1768    -1315, -1315, -1315,   231, -1202,    53, -1315,  -908, -1315,   416,
    1769      205, -1315,    78, -1315,  -367, -1315, -1315, -1315,   470,  -824,
    1770    -1315, -1315,    13,  -940,   465,  2639, -1315, -1315, -1315,  -107,
    1771    -1315,   102,   269,  -201,  1635,  4179, -1315, -1315,     5,   449,
    1772      756,  -259,  1489, -1315,  1725, -1315, -1315,    52,  2057, -1315,
    1773     2147,   612, -1315, -1315, -1315,  -616, -1315,   866,   867,   456,
    1774      631,   158, -1315, -1315, -1315,   858,   633,  -514, -1315,  -544,
    1775     -359,  1913, -1315, -1315,  -928,  -991,  1380,  1398,   990,   324,
    1776    -1315,   171,   457,  -332,  -192,  -147,   584,   695, -1315,   919,
    1777    -1315,  2794,  1328,  -442,   850, -1315, -1315,   625, -1315,  -238,
    1778    -1315,   -94, -1315, -1315, -1315, -1246,   330, -1315, -1315, -1315,
    1779     1091, -1315,    35, -1315, -1315,  -834,   -97, -1314,  -130,  1985,
    1780    -1315,  3026, -1315,   844, -1315,  -170,  1212,  -183,  -173,  -167,
    1781        7,   -35,   -34,   -33,   936,    18,    55,    61,  -143,  -159,
    1782     -156,  -153,  -151,  -323,  -535,  -528,  -526,  -542,  -318,  -520,
    1783    -1315, -1315,  -512,  1006,  1009,  1011,  2067,  4895,  -560,  -543,
    1784     -538,  -536,  -484, -1315,  -481,  -740,  -737,  -736,  -586,  -304,
    1785     -339, -1315, -1315,   856,   707,   -88, -1315,  3848,    29,  -599,
    1786     -291
    1787 };
    1788 
    1789 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    1790    positive, shift that token.  If negative, reduce the rule which
    1791    number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1792 #define YYTABLE_NINF -525
     1292  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     1293     positive, shift that token.  If negative, reduce the rule whose
     1294     number is the opposite.  If YYTABLE_NINF, syntax error.  */
    17931295static const yytype_int16 yytable[] =
    17941296{
    1795       49,   114,   453,   399,   428,    69,   953,    98,   150,   151,
    1796      152,   770,   971,   400,   115,   972,   973,   407,   261,   401,
    1797      268,   498,   383,   384,   743,   628,   604,   402,   440,   632,
    1798      403,   609,    49,   404,   848,   405,  1148,    69,  1182,    98,
    1799      755,   596,   831,   148,   408,  1078,  1140,   980,   872,    49,
    1800      726,   670,    77,    50,   731,  1077,   162,   823,   410,   798,
    1801      830,   153,   824,   187,   825,   819,   210,   144,   342,    49,
    1802      194,   679,   820,   217,   821,   505,   227,   924,   167,   683,
    1803      822,  1206,   220,   399,    77,    50,  1192,   928,    31,  1396,
    1804      861,   861,   861,   400,   674,   676,   177,   407,   154,   401,
    1805     1180,  1181,    63,  1460,   155,   425,   114,   402,  1198,   861,
    1806      403,  1215,  1216,   404,   114,   405,    31,   267,   272,   834,
    1807     1210,   863,   864,   714,   408,   841,    31,   281,   566,  -234,
    1808     -234,  1261,   475,   477,    63,   447,    31,  1188,   409,   882,
    1809      203,  1207,    31,   167,  1316,  1208,   177,   307,   148,   177,
    1810      471,   150,   151,   152,   460,   162,   114,   345,   253,  1262,
    1811      411,   210,   730,   567,  1189,   721,  1211,   861,   373,   577,
    1812      971,   123,    31,   972,   973,   578,   327,  1460,   715,  1417,
    1813     1418,   745,   292,   476,   819,   282,   187,   187,   411,  1258,
    1814      204,   820,  1479,   821,   162,   177,   419,   936,   411,   724,
    1815     -234,   142,   267,   527,   153,  1209,   481,   918,   411,   111,
    1816       49,   956,   832,  1317,   601,  1245,   527,   162,   668,  1249,
    1817       41,    42,   210,   111,  1197,   140,   141,   169,   527,   443,
    1818      145,   150,   151,   152,    41,    42,   665,   527,   954,   436,
    1819      307,   154,   839,  1125,   601,  1182,   802,   155,   762,  1419,
    1820      808,   170,    49,   588,   242,   245,  1085,    69,   177,    98,
    1821      272,   861,   868,   666,  1399,   272,   267,   267,  1024,   327,
    1822      117,  1506,   114,   823,   162,   862,   862,   862,   824,  1464,
    1823      825,   819,  1150,   342,   609,   999,  1023,   463,   820,  1088,
    1824      821,  1002,   857,  1490,   862,   307,  1011,   735,  1182,   657,
    1825      476,   436,  1092,   124,    77,    50,  1535,   307,  1537,    77,
    1826      665,   471,   177,   835,  1341,   903,   596,   838,   160,   177,
    1827     1189,   596,   568,   571,  1548,  1417,  1418,   672,   148,  1212,
    1828     1101,   471,   377,   677,   834,   373,   167,   666,   855,   471,
    1829     1519,   114,   858,   143,  1559,   345,  1524,  1124,   378,   602,
    1830      620,  1563,   862,    31,    63,   556,   557,   510,   111,   472,
    1831     1180,  1181,  1198,  1549,   625,   527,   147,  1544,   625,    41,
    1832       42,   114,  1551,   111,   598,   259,   156,  1464,   831,   547,
    1833      548,   178,  1464,   160,    41,    42,   172,   177,  1078,   714,
    1834     1564,   558,   559,   736,   823,  1428,   267,   768,  1077,   824,
    1835      737,   825,  1464,  1126,   177,   684,   187,  -122,   177,  1464,
    1836     1127,   578,  1346,   373,  1403,   457,   323,   547,   182,  -122,
    1837     -122,   848,  1182,   202,   267,   339,   307,   307,  -122,   387,
    1838      267,   262,   390,   625,   263,  -122,   392,   342,     8,     9,
    1839       10,    11,    12,  -290,   715,   388,   862,   111,   391,    70,
    1840     1449,  1450,   393,   547,   114,   327,   327,   549,    41,    42,
    1841      893,   394,  1339,   550,   551,    56,   116,    31,  1004,  1340,
    1842       77,   177,   267,   808,   498,   430,   919,   395,  1379,   434,
    1843      267,    70,   625,   921,    49,  1455,  1348,   373,   720,    69,
    1844       77,    98,   920,  1136,   114,    34,   919,    56,    77,   922,
    1845     1146,   873,   248,   921,  1112,  1022,   307,   251,   114,   323,
    1846      609,   307,  1089,   307,   307,   213,  1247,  -520,   915,  1090,
    1847      472,   753,  1198,   327,   851,   114,   345,   886,   852,  1198,
    1848      957,   211,  1168,  1170,   221,   253,    77,    50,  1257,  1195,
    1849      472,   434,   327,   439,   488,   917,   264,  1024,   472,   330,
    1850      714,   645,  1195,  1330,   111,  1196,   140,   239,   884,  1027,
    1851      331,   287,   808,   -10,   521,    41,    42,  1332,  1322,  1331,
    1852      571,   571,    41,    42,  1377,   471,   160,  -443,   307,  1290,
    1853     1291,   853,  1198,  1333,   712,   854,    63,   750,   853,   625,
    1854      345,   240,  1108,  -469,   620,   810,   241,   483,   514,  -444,
    1855      602,   933,   602,  1380,   500,   715,   570,   327,   411,   277,
    1856      587,   874,  1136,   279,   593,    45,    46,   918,   280,  1022,
    1857      625,   772,   773,   774,  -469,   625,  -469,   620,   177,   332,
    1858     -469,   625,   333,   626,   625,   625,   625,   630,  1496,  -105,
    1859      339,   371,   875,  -105,   643,  1496,   111,   334,   876,   849,
    1860      705,  1427,  1109,   625,   598,   267,   706,    41,    42,   342,
    1861      177,   722,   725,   111,   729,   140,   141,   723,   493,  1179,
    1862      494,   442,   178,  1035,    41,    42,   177,   335,   215,     2,
    1863      207,     4,     5,     6,     7,   114,   732,   441,   912,   629,
    1864      372,   177,   733,   633,  1082,   323,   323,   579,  1545,   411,
    1865      727,    70,  1365,   596,   376,   728,  1366,   107,   107,   749,
    1866     1120,   625,   938,   620,   389,   750,   897,    56,   385,   720,
    1867      720,   397,   750,   688,  1042,   519,   899,   399,   409,   988,
    1868      215,   582,   750,   411,    77,   989,   117,   400,  1498,   107,
    1869     1499,   426,   407,   401,    35,   427,    36,   114,   345,  1001,
    1870     1243,   402,   753,   753,   403,   706,   578,   404,   432,   405,
    1871       77,   488,  1373,   323,  -122,   488,  -122,   450,   750,   408,
    1872     -122,  -367,   177,   215,  -396,   521,   107,   521,   253,   329,
    1873      521,  1374,   323,   521,   472,  -122,  -122,   750,   971,   504,
    1874     1444,   972,   973,   808,   339,  1546,  1390,   571,   714,   213,
    1875     1376,   779,   780,   781,   782,   625,   750,   625,  1457,  1007,
    1876      472,   461,   625,   345,   869,   752,   602,   411,   810,  1172,
    1877      342,  1381,   484,  1445,    45,    46,   230,   750,   602,  1442,
    1878      231,   979,  1465,   235,   215,   237,   462,    37,   750,   175,
    1879      176,    40,   246,   111,   292,   140,   141,   323,    41,    42,
    1880      712,   552,   553,   715,    41,    42,   673,   675,   806,   111,
    1881      508,   140,   141,   923,   130,   925,   131,   132,   133,   457,
    1882       41,    42,   215,   513,   372,    41,    42,   215,   937,   307,
    1883      601,  1517,  1457,   527,    69,   244,  1512,    45,    46,   847,
    1884      525,   887,  1513,   411,   593,    37,  1193,   175,   176,    40,
    1885      856,   625,   253,   329,   411,   164,    41,    42,   114,   345,
    1886      912,   890,   912,   411,   562,    37,   957,   175,   176,    40,
    1887      957,   957,   213,   665,   114,   563,    41,    42,   915,  1368,
    1888      565,    77,   715,    70,   554,   555,   519,   938,   938,   564,
    1889      177,   519,   720,   568,   519,   850,   338,   114,   307,    56,
    1890      666,  1152,   376,   411,   688,   917,  -440,    48,   113,   107,
    1891     1113,   865,   215,   738,   345,   739,   589,  1569,   740,   230,
    1892      164,   746,   586,   578,   753,   658,   881,   327,   419,   661,
    1893      411,    63,   560,   561,    37,   163,   113,   113,    40,    48,
    1894       -3,  1164,   488,   411,   659,    41,    42,   791,   638,   195,
    1895       48,  1167,   218,   601,   660,   228,    48,   345,   481,   329,
    1896      411,   712,   662,    37,    48,   663,   339,    40,  1238,   664,
    1897       48,    43,  1531,    48,    41,    42,    48,   667,   625,   625,
    1898       45,    46,   832,   329,   601,  1169,   849,   601,   258,  1337,
    1899      113,   113,   645,   215,  1309,  1310,  1311,   669,   307,  1047,
    1900      816,   693,   601,  1200,   528,   529,   530,   500,   694,    45,
    1901       46,  1347,  1349,  1350,    48,   696,   435,    48,  1254,   698,
    1902      411,   442,  1136,  1095,    48,  1095,  1003,  -238,   531,   547,
    1903      532,   806,   533,   534,   163,   215,   992,   989,   114,   734,
    1904     1097,   750,   994,   912,   329,   411,   -12,   374,   912,   747,
    1905       77,  1386,  1387,  1437,   989,    48,   751,   938,   230,   759,
    1906      235,  1442,  1443,    48,   811,   267,  1491,  1492,    48,   812,
    1907      510,  1417,  1418,   163,   775,   776,   783,   784,   435,  1397,
    1908      342,   815,   625,  1397,   777,   778,   826,     2,   207,     4,
    1909        5,     6,     7,    48,    48,   -13,   163,   870,   213,   645,
    1910      472,   523,   871,   878,   528,   529,   530,   345,   444,    48,
    1911      898,   900,   213,   164,   901,   908,   955,    48,   905,  -417,
    1912      806,   926,  -524,   941,   950,   948,    48,   339,   531,    48,
    1913      532,   723,   533,  1319,   961,   963,   113,   962,   966,   965,
    1914      967,   107,   968,   688,   996,   984,   997,   998,   230,   272,
    1915      114,   113,    35,  1013,    36,   113,   215,  1014,  1015,    48,
    1916      113,  1016,    97,   220,  1017,   488,  1115,   323,   114,  1018,
    1917     1019,  1030,   307,    48,    48,  -405,  -404,    69,  1044,  1079,
    1918       48,  1081,  1102,  1103,   215,  1480,   625,    48,   911,   215,
    1919      114,  1104,  1105,   750,    97,  1111,  1121,  1122,  1123,  1217,
    1920     1047,  1132,  1141,  1113,  1128,   149,   978,   177,   213,   712,
    1921     1133,    97,  1134,  1135,   374,    -3,     2,   207,     4,     5,
    1922        6,     7,  1138,  1162,    77,   190,   847,  1183,    97,  1185,
    1923     1184,    97,  1186,  1187,  1201,    48,  1202,  1204,   625,   625,
    1924     1205,  1213,  1218,  1225,  1220,   229,  1230,   272,  1440,    -3,
    1925     1557,  1235,   307,  1233,    37,    48,    48,  1200,    40,  1239,
    1926      692,   215,  1244,  1246,   493,    41,    42,     8,     9,    10,
    1927       11,    12,    48,  1251,    63,   215,    48,  1248,    70,  1259,
    1928     1252,    35,  1263,    36,  1266,   114,  1268,   644,   712,  1270,
    1929     1271,   719,   374,  1272,    56,   399,    31,  1273,  1113,  1274,
    1930       45,    46,  1276,    48,    77,   400,  1283,   688,  1292,   407,
    1931       97,   401,   523,    48,   523,  1293,  1296,   523,  1300,   402,
    1932      523,  1303,   403,    97,    34,   404,  1321,   405,  1328,  1304,
    1933     1305,    48,  1307,   665,  1315,  1334,   408,    48,  1336,    48,
    1934     1338,  1066,  1344,  1342,   216,   267,  1345,  1351,   398,   190,
    1935     1352,   806,  1353,  1355,   472,  1361,  1530,  1362,  1363,  1364,
    1936      666,   243,  1114,   625,  1371,  1372,   570,  1375,   411,  1382,
    1937     1383,   215,    97,  1311,   113,    45,    46,  1391,  1392,    48,
    1938     1393,  1403,  1400,   177,    97,  1411,  1412,    48,   114,  -406,
    1939     1430,    48,  1415,  1426,  1432,    48,   216,  -291,   113,  1434,
    1940      113,  1113,  1435,  1441,     8,     9,    10,    11,    12,   442,
    1941     1451,  1446,   114,  1436,    97,  1452,  1453,  1200,  1454,   114,
    1942      644,   114,  1456,   114,  1200,  1366,  1470,  1461,   479,  1466,
    1943     1472,  1474,  1476,    31,  1468,   113,  1478,   339,   644,   216,
    1944      113,   644,  1483,   150,   151,   152,  1484,    70,  1485,  1486,
    1945     1497,  1507,  1509,  1529,  1523,  1511,  1515,  1516,   114,  1115,
    1946      114,    34,  1538,    56,    77,  1539,  1543,  1550,  1552,  1554,
    1947     1560,    77,   114,  1567,  1568,  1219,   785,  1200,  1529,  1529,
    1948      786,   788,   787,  1320,  1518,  1429,   162,  1570,   307,   113,
    1949       97,   692,   789,  1385,  1250,  1401,    48,  1500,  1096,  1224,
    1950      216,   906,   907,  1529,  1232,   214,   929,    48,  1100,    48,
    1951      373,   603,  1137,  1203,   472,   233,  1043,   327,   877,  1110,
    1952     1329,   472,   804,   943,    77,   717,   794,   951,    48,   795,
    1953       37,   796,   184,   185,    40,     0,   107,     0,   216,     0,
    1954        0,    41,    42,   216,    48,     0,     0,     0,     0,     0,
    1955      113,     0,     0,     0,  1115,     0,     0,   214,     0,    48,
    1956        0,   113,    48,   113,     0,     0,     0,   910,   190,   411,
    1957        0,     0,   215,     0,   472,   911,    45,    46,     0,     0,
    1958        0,  1298,  1299,     0,  1301,    66,   118,     0,     0,     0,
    1959        0,  1306,     0,  1308,     0,    48,     0,     0,   213,   113,
    1960      214,   113,     0,     0,   107,   113,     0,     8,     9,    10,
    1961       11,    12,     0,   113,   211,   221,     0,    66,     0,     0,
    1962        0,    70,  -292,     0,     0,     0,    48,    48,   216,     8,
    1963        9,    10,    11,    12,   161,     0,    31,    56,     0,     0,
    1964       48,    37,     0,   184,   185,    40,    97,     0,     0,     0,
    1965      603,     0,    41,    42,   222,  1114,     0,  1115,    31,     0,
    1966        0,   214,     0,     0,    34,     0,     0,     0,  1439,    37,
    1967        0,   184,   185,    40,     0,    75,     0,     0,   186,     0,
    1968       41,    42,     0,     0,  1066,     0,    34,    45,    46,     0,
    1969     1503,   260,  1503,     0,     0,     0,   442,     0,     0,   214,
    1970        0,    70,   174,     0,   214,   107,   600,    75,   601,   216,
    1971        0,     0,   441,     0,     0,    45,    46,    56,     0,   499,
    1972        0,     0,     0,    48,     0,     0,     0,  1503,     0,  1503,
    1973      692,     0,     0,   328,     0,    48,    37,     0,   184,   185,
    1974       40,   260,   350,     0,   223,   254,     0,    41,    42,     0,
    1975     1114,   216,     0,     0,     0,  1423,     0,   323,     0,     0,
    1976     -293,   215,   818,     0,   603,     0,     0,     8,     9,    10,
    1977       11,    12,   406,   600,     0,   601,     0,     0,   644,     0,
    1978     1389,     0,    45,    46,     0,   113,     0,   424,     0,   214,
    1979      429,   431,     0,     0,   703,   161,    31,     0,     0,    37,
    1980        0,   184,   185,    40,     0,     0,     0,     0,    48,     0,
    1981       41,    42,   704,     0,     0,     0,   448,    48,     0,    48,
    1982      451,     0,   452,     0,    34,     0,   113,     0,     0,     0,
    1983        0,   459,   353,     0,     0,  1416,   266,    66,  1424,     0,
    1984        0,   417,   473,     0,     0,    45,    46,     0,     0,    48,
    1985      916,     0,   480,  1114,     0,     0,     0,   107,     0,   215,
    1986      431,    70,     0,     0,   437,     0,     0,     0,    70,   113,
    1987      214,     0,   216,     0,   445,     0,     0,    56,     0,   107,
    1988        0,   818,   603,  1463,    56,   644,     0,   214,  1467,     0,
    1989        0,     0,     0,   113,   692,     0,   644,   107,   113,     0,
    1990      216,     0,     0,     0,     0,   216,   449,     0,     0,     0,
    1991        0,     0,   214,     0,     0,     0,     0,     0,  1489,     0,
    1992        0,    70,     0,     0,     0,     0,   260,    75,     0,     0,
    1993      594,     0,    75,     0,     0,     0,   622,    56,     0,     0,
    1994        0,     0,   520,     0,     0,     0,     0,     0,   113,   627,
    1995        0,     0,     0,   627,     0,     0,   260,     0,     0,   107,
    1996        0,   125,   128,   129,     0,     0,     0,     0,     0,    37,
    1997        0,   184,   185,    40,     0,     0,     0,   216,   818,     0,
    1998       41,    42,     0,     0,     0,     0,   113,     0,     0,     0,
    1999      603,   216,   107,     0,     0,     0,     0,     0,     0,     0,
    2000       48,   703,     0,   473,  1558,    48,   910,    78,   411,     0,
    2001     1558,     0,     0,     0,     0,    45,    46,     0,   350,   704,
    2002        0,  1558,    48,   473,     0,  1558,   223,     0,     0,     0,
    2003        0,   473,     0,   214,   255,     0,   256,     0,     0,    78,
    2004        0,     8,     9,    10,    11,    12,     0,     0,     0,   699,
    2005        0,     0,   431,     0,     0,     0,     0,     0,     0,     0,
    2006        0,   214,     0,     0,     0,     0,   214,   713,     0,    66,
    2007       31,     0,  1091,     0,   916,     0,   224,   431,     0,     0,
    2008        0,   431,     0,     0,     0,     0,     0,   216,     0,     0,
    2009      681,     0,     0,    75,     0,   107,     0,    80,    34,     0,
    2010        0,     0,   113,    37,   603,   184,   185,    40,   353,     0,
    2011      260,   350,     0,    75,    41,    42,   707,   396,     0,   107,
    2012        0,    75,     0,   703,     0,    48,   107,   415,   416,    80,
    2013        0,     0,   420,   703,   422,   423,     0,     0,   214,   353,
    2014      910,   704,   411,     0,     0,     0,     0,   703,     0,    45,
    2015       46,   704,   214,   520,     0,     0,   797,   353,   520,    75,
    2016        0,   520,     0,     0,   355,   704,   225,     0,   113,   113,
    2017      113,     0,   499,     0,   627,   809,     0,     0,     0,   107,
    2018        0,     0,     8,     9,    10,    11,    12,   828,     0,     0,
    2019        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2020        0,   353,     0,     0,     0,   594,     0,   413,     0,     0,
    2021      594,    31,     0,     0,   421,     0,   627,     0,     0,   350,
    2022      350,   350,     0,     0,    31,     0,   644,     0,   535,   536,
    2023      537,   538,   539,   540,   541,   542,   543,   544,   350,    34,
    2024        0,     0,     0,     0,     0,     0,     0,   927,   214,     0,
    2025        0,     0,    34,     0,   356,   916,   699,    37,     0,    78,
    2026      916,    40,   545,     0,    78,   353,     0,   473,    41,    42,
    2027        0,     0,     0,     0,     0,     0,     0,  1504,     0,  1504,
    2028        0,   752,     0,   411,     0,     0,   413,     0,   216,     0,
    2029       45,    46,     0,   473,    43,     0,   350,     0,     0,     0,
    2030        0,    48,    48,    45,    46,   942,     0,     0,   431,   353,
    2031      353,   353,   113,   113,  1504,     0,  1504,   895,     0,     0,
    2032        0,     0,     0,     0,     0,     0,   902,     0,   353,     0,
    2033      904,     0,   260,   713,     0,     0,     0,     0,   974,     0,
    2034      576,   993,     0,     0,     0,     0,   353,     0,   580,    80,
    2035      113,   583,     0,     0,    80,   703,   703,    75,   224,     0,
     1297      49,   113,   149,   150,   398,   399,   427,    97,   151,   114,
     1298     400,   452,   260,   401,   751,   765,   267,   409,   963,   106,
     1299     106,   964,   402,   382,   383,   965,   947,   403,    56,   115,
     1300     739,   406,    49,   595,   867,   404,   439,  1170,   826,    97,
     1301     356,   829,   470,   147,  1068,  1069,   177,   836,   724,    49,
     1302      50,   106,   729,   972,   918,   603,   161,   843,  1194,   825,
     1303      56,   722,   341,   186,   608,   143,   209,  1378,   818,    49,
     1304     193,   793,  1136,   216,   817,  1196,   226,   219,   504,   122,
     1305     152,  1438,    50,  1198,   398,   399,   819,  1186,   106,  1301,
     1306     400,   474,   476,   401,   210,   261,   153,   220,   262,   814,
     1307     154,   424,   402,   672,   674,   113,   526,   403,   820,   815,
     1308     280,   406,    31,   113,   816,   404,   266,   271,  1195,    31,
     1309      31,    63,  1180,   668,   858,   859,   202,    69,  1199,    96,
     1310    1168,  1169,   123,    31,  1076,  1197,   627,    76,  1203,  1204,
     1311     631,   876,   168,   677,   149,   150,   306,   147,    31,   526,
     1312     151,   681,  1438,    63,   161,   113,   344,   407,  1302,    69,
     1313     209,    96,   171,    31,    31,  1457,   169,   372,   281,    76,
     1314     713,   728,   148,   111,   963,   830,   203,   964,    96,   833,
     1315     912,   965,   252,   446,   410,   186,   186,  1397,  1398,   418,
     1316     741,   410,   189,   161,   719,    96,   357,   948,    96,   930,
     1317     850,   266,   459,   470,   853,   410,   565,   438,   166,    49,
     1318    1185,  -231,  -231,   142,  1244,   291,   161,   814,   480,  1525,
     1319     410,   209,   152,   470,   149,   150,   666,   815,   442,   408,
     1320     151,   470,   816,   827,   834,   600,   600,   407,   153,   306,
     1321     566,  1170,   154,   922,   950,   173,  1540,   587,   526,   440,
     1322     663,    49,   829,   252,   328,   797,   475,  1399,    97,   271,
     1323    1015,   482,  1079,   846,   271,   266,   266,   847,   499,   376,
     1324     106,   113,   166,   161,   475,  1116,    96,   341,   567,    56,
     1325     818,  1014,  -231,  1138,   462,   377,  1002,   253,   144,    96,
     1326     993,  1170,  1176,   990,   306,   655,    70,   526,   819,   155,
     1327     733,    50,  1442,  1397,  1398,   326,   306,   518,   595,  1247,
     1328     146,   814,  1092,   595,   397,   189,   356,   608,  1177,   110,
     1329     820,   815,   570,   670,   663,   734,   816,   147,    70,   675,
     1330      41,    42,  1117,  1495,   372,  1186,   177,  1248,    96,  1500,
     1331     113,   869,  1200,   641,   344,   735,   201,   526,   601,   619,
     1332      96,   181,  1118,   628,   286,  1324,  1483,   632,   758,  1520,
     1333     870,   803,   212,   624,  1527,    41,    42,   624,   435,   826,
     1334     113,  1467,    63,  1408,  1381,  1325,   664,   471,    69,  -287,
     1335      96,  1068,  1069,   416,  1168,  1169,   897,   578,    76,   410,
     1336    1511,   513,  1513,    76,   478,   266,  1442,  1177,   326,   386,
     1337     818,  1442,   110,   852,   389,   186,   436,   555,   556,   356,
     1338    1170,   247,   372,    41,    42,   387,   444,  1018,   819,   391,
     1339     390,  1442,   250,   266,   464,   306,   306,   163,  1442,   266,
     1340     435,   341,   624,   713,   492,   392,   843,   493,   671,   673,
     1341     820,   763,   557,   558,   551,   552,  1156,  1158,   393,   746,
     1342     664,   913,   263,   113,  1083,   252,    96,   110,  1361,  -466,
     1343    1125,  -466,   887,   985,   394,   166,   470,   914,    41,    42,
     1344     848,   266,   357,   356,   849,  1427,  1428,   602,  -466,   266,
     1345    1422,   624,   -10,    49,   519,   880,   372,   718,  1186,  -515,
     1346      97,   163,   927,   113,  1423,  1186,  1329,  1103,  1134,  1115,
     1347    1468,   868,   106,   597,  1433,   306,   915,   113,  -439,  1100,
     1348     306,    56,   306,   306,  1469,  1243,   110,   441,   518,  -440,
     1349     749,   712,   916,   518,   113,   344,   518,    41,    42,   276,
     1350    1013,   909,   951,    50,   189,  1015,  1524,   278,   471,   608,
     1351       2,   206,     4,     5,     6,     7,  1186,    70,   913,   110,
     1352     329,   139,   238,   878,    76,  1331,  1535,   915,   471,   279,
     1353      41,    42,   576,  1539,  1080,   357,   471,   848,   577,   570,
     1354     570,  1099,  -102,  1081,    76,   995,  -102,   306,  1125,   786,
     1355     803,  1359,    76,   912,   326,   326,   239,   434,   624,   344,
     1356    1183,   240,   713,   619,   682,   553,   554,  1183,  1315,   601,
     1357     577,   601,   710,   330,    63,    35,  1184,    36,   331,   845,
     1358      69,  1473,    96,  1307,  1316,  -119,   602,  -119,  1473,   624,
     1359      76,  -119,   370,  1347,   624,   860,   619,  1348,  1317,   357,
     1360     624,   746,   679,   624,   624,   624,  -119,  -119,   111,   875,
     1361     215,   332,  1233,  1013,  1318,   212,  1237,  1362,   110,   434,
     1362     341,   624,   326,   266,   333,  1407,   242,   911,   705,    41,
     1363      42,   252,   328,   410,   110,  1235,   139,   140,   803,  1521,
     1364     334,   326,   522,   559,   560,    41,    42,  1026,     8,     9,
     1365      10,    11,    12,   113,   163,   384,   906,   595,   703,   371,
     1366     176,   215,   356,   375,   704,   519,   720,  1073,   921,   759,
     1367     519,   725,   721,   519,   764,   388,   726,    31,   425,   624,
     1368     932,   619,   408,   730,  1111,   396,   805,   718,   718,   731,
     1369     499,  1033,   426,   398,   399,  1275,  1276,   745,   813,   400,
     1370     602,   891,   401,   746,   215,    34,   326,   746,  1475,   176,
     1371    1476,   402,   176,   113,   344,   581,   403,   410,   749,   749,
     1372     893,   406,   449,   464,   404,   110,   746,   139,   140,   983,
     1373     980,     8,     9,    10,    11,    12,    41,    42,   212,   548,
     1374     527,   528,   529,   431,   963,   549,   550,   964,   844,    70,
     1375     881,   965,   410,   597,   712,   979,  1372,  -363,   176,   984,
     1376      31,   980,   570,  1522,   530,   215,   531,   243,   532,   533,
     1377     624,   471,   624,   884,   998,   410,  -392,   624,   344,   341,
     1378     992,   601,   569,  1160,   410,   910,   704,    76,    34,  1231,
     1379      45,    46,  1355,   601,   877,   577,   879,   471,   746,   460,
     1380    1140,   690,   410,   215,   713,   527,   528,   529,   215,   461,
     1381    1152,    37,   410,    76,  1356,    40,   813,   602,   357,  1358,
     1382     746,   176,    41,    42,  1155,   746,   600,   483,   889,   530,
     1383     569,   531,   410,   532,  1304,   710,  1028,   896,    45,    46,
     1384     214,   898,  1157,   306,   600,  1363,   926,   407,   811,   503,
     1385     600,   746,   291,   522,  1425,   522,    45,    46,   522,  1181,
     1386    1422,   522,   106,  1443,   803,   624,    48,   112,  1240,   746,
     1387     410,    56,   113,   344,   906,   176,   906,   524,  1489,   921,
     1388     507,   951,   176,   713,  1490,   951,   951,   441,   113,   328,
     1389     410,   214,   512,   215,   526,   112,   112,  1545,    48,   663,
     1390    1424,   932,   932,   577,   909,   805,   718,  1368,  1369,    48,
     1391     813,   113,   306,   712,   561,    48,  1435,   562,   748,  1104,
     1392     410,   563,   602,    48,   921,   564,    45,    46,   567,    48,
     1393     106,  1086,    48,  1086,   214,    48,   749,   337,   931,  1105,
     1394     600,   418,   659,   410,  1507,  -436,    45,    46,   112,   112,
     1395     176,   585,     2,   206,     4,     5,     6,     7,   588,  1137,
     1396     480,   328,   410,   212,    63,  1417,   980,   176,   344,    -3,
     1397      69,   176,    48,   637,   215,    48,  1226,   212,  1397,  1398,
     1398      76,   656,    48,   736,   657,   737,  1493,  1435,   738,   624,
     1399     624,   742,   658,  1125,   710,   214,   827,   328,   600,   116,
     1400     660,  1322,   661,  1082,   662,   910,  1330,  1332,  1333,   306,
     1401    1028,   665,   110,    48,   139,   140,   215,    35,   667,    36,
     1402     257,    48,   691,    41,    42,   664,    48,   692,   106,  1167,
     1403     911,   690,   694,   214,   176,   602,   696,    56,   214,  -235,
     1404       2,   206,     4,     5,     6,     7,   732,   159,   743,   113,
     1405     806,    48,    48,   747,   906,   770,   771,  1078,   807,   906,
     1406     772,   773,    37,   755,   174,   175,    40,    48,   932,   228,
     1407     212,   326,   810,    41,    42,    48,   266,  1294,  1295,  1296,
     1408      -3,   821,   -12,   341,    48,   778,   779,    48,  1379,    37,
     1409     921,   624,  1379,    40,   112,   -13,   865,   866,  1120,   371,
     1410      41,    42,   872,   258,   892,    35,   894,    36,   920,   112,
     1411    -519,   159,   895,   112,  -413,   344,   899,    48,   112,   902,
     1412    1131,   935,   942,   214,  1131,   721,    43,   844,   944,   949,
     1413     471,    48,    48,   955,    45,    46,  1188,   215,    48,    70,
     1414     774,   775,   776,   777,   322,    48,    76,   956,   957,   958,
     1415     921,   921,   959,   338,   960,   712,   976,   271,   113,   987,
     1416     988,   989,  1004,  1005,  1006,   215,   219,  1007,  1008,  1009,
     1417     215,  1010,  1283,  1284,  1131,  1286,   113,   106,  1021,  -401,
     1418     306,  -400,  1291,   910,  1293,   210,   220,  1035,   910,  1458,
     1419    1070,   176,   905,    48,   624,  1072,  1093,  1094,   113,   106,
     1420    1095,  1096,  1102,   429,   214,  1112,  1104,   433,    56,   110,
     1421    1202,   139,   140,    48,    48,  1113,   746,   106,  1119,  1121,
     1422      41,    42,   970,   176,  1114,  1122,  1105,  1123,  1124,  1127,
     1423      48,  1130,  1150,  1173,    48,  1174,   710,   322,  1189,   176,
     1424    1171,   215,  1172,   624,   624,   642,   214,  1420,   863,  1190,
     1425    1175,  1192,   271,   176,  1193,   215,  1533,   306,  1201,  1206,
     1426    1205,    48,  1057,  1208,  1213,    -3,   690,   441,  1218,   433,
     1427    1221,    48,   487,  1223,   492,    37,   106,   174,   175,    40,
     1428     440,  1227,  1232,  1350,  1234,    56,    41,    42,  1236,    48,
     1429     113,  1239,   520,   398,   399,    48,  1245,    48,  1104,   400,
     1430    1251,    63,   401,  1249,   159,    70,  1253,    69,  1255,   106,
     1431    1256,   402,   375,  1257,  1258,   710,   403,    76,  1105,   129,
     1432     406,   130,   131,   132,   404,  1259,  1261,  1268,  1285,  1277,
     1433      41,    42,   112,  1278,   176,  1419,  1288,    48,   586,  1289,
     1434    1403,  1290,   592,  1292,   663,    48,  1300,   266,   215,    48,
     1435    1506,   141,  1306,    48,  1313,   921,   112,  1319,   112,  1321,
     1436    1323,   625,  1345,   624,  1327,   629,   701,   214,   338,  1328,
     1437      37,   921,   174,   175,    40,  1334,  1335,  1337,   471,  1343,
     1438    1344,    41,    42,   509,  1188,  1346,  1353,  1357,   113,  1131,
     1439    1131,  1131,  1354,   112,    76,   214,  1104,  1364,   112,  1365,
     1440     214,  1296,  1373,   241,   244,   546,   547,   106,  1375,  1374,
     1441     113,  1382,  1391,  1392,  -402,  1395,  1105,   113,  1406,   113,
     1442    1410,   113,  1412,   322,   322,  1414,  1415,   690,  1416,   106,
     1443    1421,  1191,  1429,   149,   150,  1430,   106,  1431,    56,   151,
     1444    1432,   921,   921,   546,  1348,    56,   407,   112,  1434,  1439,
     1445    1505,   686,  1444,   212,    48,   113,  1366,   113,  1448,  1450,
     1446    1452,  1446,  1454,  1456,   116,    48,  1461,    48,   113,  1462,
     1447     664,   214,  1463,  1484,  1505,  1505,    70,  1474,  1486,   546,
     1448    1488,  1491,   161,  1492,   306,   214,    48,   106,  1514,   487,
     1449    1499,   322,  1515,   487,  1528,  1519,    56,  1526,   176,  1505,
     1450    1530,  1543,    48,   520,  1536,   520,   372,   112,   520,  1544,
     1451     322,   520,  1207,   781,   783,   780,    48,  1129,   112,    48,
     1452     112,   782,   338,  1494,   784,  1305,   162,  1131,  1131,  1546,
     1453    1409,   471,  1238,  1367,  1383,  1477,  1212,  1188,   471,   900,
     1454     194,   213,   901,   217,  1188,   215,   227,    76,   441,  1220,
     1455     232,  1087,    48,    70,    76,  1091,   112,   799,   112,   923,
     1456    1034,   871,   112,  1126,   456,  1459,   937,  1101,  1314,   945,
     1457     112,     0,   701,   715,   789,   322,     0,   790,   214,   791,
     1458       0,     0,     0,    48,    48,   229,   801,     0,   230,   471,
     1459       0,   234,   213,   236,     0,  1188,     0,    48,     0,  1057,
     1460     245,     0,     0,   478,  -288,    76,     0,     0,  1478,     0,
     1461    1482,     8,     9,    10,    11,    12,     0,   842,     0,     0,
     1462       0,     0,   592,  1508,   162,     0,     0,    37,   851,   183,
     1463     184,    40,  1516,     0,     0,   213,     0,   373,    41,    42,
     1464      31,     0,     0,   326,  1510,   412,  1512,   767,   768,   769,
     1465       0,     0,   420,     0,     0,     0,     0,     0,     0,     0,
     1466       0,     0,     0,   162,   904,     0,   410,     0,    34,     0,
     1467       0,     0,    45,    46,     0,     0,     0,    48,     0,     0,
     1468       0,   686,     0,    37,     0,   905,   162,    40,  1541,    48,
     1469    1542,   701,  1371,     0,    41,    42,   213,     0,   443,     0,
     1470     643,   701,     0,  1549,  1550,    37,    70,   183,   184,    40,
     1471       0,     0,   890,    70,     0,   701,    41,    42,     0,   487,
     1472     717,     0,     0,     0,   412,     0,     0,   229,    45,    46,
     1473       0,   215,   642,     0,   213,     0,     0,     0,   112,   213,
     1474       0,   338,   185,     0,  1396,     0,     0,  1404,  -289,     0,
     1475      45,    46,     0,     0,   498,     8,     9,    10,    11,    12,
     1476       0,    48,     0,   506,    70,   508,   511,     0,     0,     0,
     1477      48,     0,    48,   514,   515,   214,     0,     0,   575,   112,
     1478       0,     0,     0,     0,    31,     0,   579,   508,   508,   582,
     1479    1441,     0,     0,     0,   497,  1445,     0,  1481,     0,  1481,
     1480     994,     0,    48,     0,   373,   801,     0,     0,     0,   176,
     1481     702,   723,    34,   727,     0,     0,     0,     0,    66,   117,
     1482       0,     0,   112,  1466,   213,   508,   215,     0,     0,     0,
     1483       0,   986,     0,  1481,     0,  1481,   642,     0,     0,     0,
     1484       0,   991,     0,     0,   112,     0,     0,     0,   112,     0,
     1485      66,     0,     0,   412,   971,  1003,     0,   420,     0,     0,
     1486       0,   508,     0,     0,     0,  -290,   229,   160,   234,     0,
     1487       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     1488       0,     0,   373,     0,     0,     0,     0,   221,     0,     0,
     1489       0,     0,     0,   801,     0,     0,     0,     0,   112,    74,
     1490     338,    31,     0,     0,     0,   213,     0,  1534,     0,     0,
     1491     126,   126,   126,  1534,     0,     0,   686,     0,     0,   701,
     1492     701,     0,   213,   259,  1534,     0,     0,     0,  1534,    34,
     1493       0,    74,     0,     0,   412,     0,   112,     0,   487,  1106,
     1494     322,     0,     0,     0,     0,     0,     0,   213,     0,     0,
     1495      48,     0,     0,     0,     0,    48,   229,     0,     0,     0,
     1496       0,   214,   864,     0,     0,   327,     0,     0,   222,     0,
     1497       0,     0,    48,   259,   349,     0,     0,   701,   701,   176,
     1498       0,     0,   126,     0,   126,     0,   534,   535,   536,   537,
     1499     538,   539,   540,   541,   542,   543,   842,     0,     0,     0,
     1500       0,     0,     0,     0,   405,     0,     0,     0,     0,   275,
     1501       0,   917,     0,   919,     0,     0,   702,   456,     0,   423,
     1502     544,     0,   428,   430,     0,   575,   575,   160,     0,   508,
     1503     508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
     1504     508,   508,   508,   508,   508,   508,   508,     0,   447,   112,
     1505       0,     0,   450,     0,   451,   352,   214,     0,     0,  1165,
     1506    1166,     0,     0,   458,     0,   126,     0,     0,   213,    66,
     1507       0,     0,    48,   126,   472,   126,   126,   686,     0,     0,
     1508     126,     0,   126,   126,   479,     0,     0,     0,     0,     0,
     1509       0,    37,   430,   183,   184,    40,   213,   546,     0,     0,
     1510       0,   213,    41,    42,     0,     0,     0,     0,     0,    77,
     1511       0,     0,   882,   112,   112,   112,   885,  1215,  1216,   801,
     1512       8,     9,    10,    11,    12,  1311,     0,     0,   599,   448,
     1513     600,     0,     0,     0,     0,   702,    45,    46,   509,     0,
     1514       0,    77,     0,     0,     0,   702,     0,     0,     0,    31,
     1515      74,     0,   126,     0,     0,    74,     0,   701,   259,   702,
     1516       0,     0,   593,     0,     0,   701,   701,   701,   621,     0,
     1517       0,     0,   213,     0,     0,   508,     0,    34,   223,     0,
     1518       0,   626,     0,     0,     0,   626,   213,   643,   259,     0,
     1519       0,     0,     0,  1038,     0,     0,     0,     0,     0,     0,
     1520       0,     0,     0,     0,   338,     0,   498,     0,     0,     0,
     1521       0,     0,     8,     9,    10,    11,    12,     0,     0,   748,
     1522       0,   410,     0,     0,     0,     0,  1106,    45,    46,   701,
     1523       0,     0,     0,     0,  1088,   472,   508,     0,     0,     0,
     1524       0,    31,    48,    48,     0,     0,   497,     0,   575,   222,
     1525     349,   112,   112,     0,     0,   472,     0,     0,     0,     0,
     1526     124,   127,   128,   472,     0,   354,   508,     0,     0,    34,
     1527       0,     0,     0,     0,    37,     0,   183,   184,    40,   213,
     1528       0,   697,     0,     0,   430,    41,    42,     0,     0,   112,
     1529       0,   643,    37,     0,   183,   184,    40,  1336,     0,   711,
     1530       0,    66,     0,    41,    42,  1338,  1339,  1340,     0,   430,
     1531       0,   185,     0,   430,     0,     0,    74,     0,  1106,    45,
     1532      46,     0,     0,     0,     0,     0,     0,     0,     0,   265,
     1533       0,   352,   254,     0,   255,     0,    74,    45,    46,     0,
     1534       0,     0,   259,   349,    74,     0,    48,   112,     0,     0,
     1535       0,     0,     0,     0,     0,     0,   112,     0,     0,     0,
     1536      77,     0,   352,   702,   702,    77,   412,     0,     0,  1384,
     1537      48,    48,     0,     0,     0,     0,     0,     0,     0,     0,
     1538     352,     0,    74,     0,     0,     0,   508,     0,   792,     0,
     1539      37,  1038,   183,   184,    40,    48,     0,     0,     0,     0,
     1540       0,    41,    42,     0,     0,     0,   626,   804,     0,     0,
     1541       8,     9,    10,    11,    12,   395,  1106,     0,     0,   823,
     1542       0,   702,   702,     0,   352,   414,   415,   904,     0,   410,
     1543     419,   508,   421,   422,     0,    45,    46,   593,     0,    31,
     1544       0,     0,   593,  1141,     0,     0,     0,  1480,   626,  1480,
     1545       0,   349,   349,   349,     0,     0,     0,   126,   126,   223,
     1546    1153,     0,     0,     0,     0,     0,   508,    34,     0,   349,
     1547       0,     0,     0,     0,     0,     0,   213,     0,     0,   508,
     1548       0,     0,     0,  1480,     0,  1480,   126,   697,   352,   126,
     1549     126,     0,   126,     0,   126,   126,     0,     0,   472,   126,
     1550     126,     0,     0,    37,  1281,   183,   184,    40,     0,   931,
     1551       0,   600,   322,     0,    41,    42,     0,    45,    46,     0,
     1552     508,     0,     0,     0,   472,     0,    77,   349,     0,     0,
     1553       0,     0,   352,   352,   352,     0,   936,     0,   412,   430,
     1554    1504,   354,   410,     0,    79,     0,    77,     0,    45,    46,
     1555     352,     0,     0,     0,    77,     0,     0,     0,     0,     0,
     1556       0,   259,   711,     0,     0,     0,     0,   966,   352,  1312,
     1557       0,     0,   354,     0,     0,     0,    79,     0,  1241,    74,
     1558       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1559     354,     0,    77,     0,     0,     0,     0,   508,     0,     0,
     1560       0,   702,     0,     0,     0,    74,   697,     0,   352,   702,
     1561     702,   702,     0,   224,     0,     0,   697,     0,   349,     0,
     1562     626,     0,     0,  1001,     0,   626,   804,     0,     0,     0,
     1563     697,     0,     0,     0,   354,     0,     0,   126,   126,     0,
     1564    1012,     0,     0,   352,     0,     0,     0,     0,     0,     0,
     1565       0,     0,     0,     0,     0,     0,     0,   508,   508,     0,
     1566       0,     0,   213,     0,     0,     0,     0,     0,     0,     0,
     1567       0,    86,     0,   702,     0,     0,     0,     0,     0,     0,
     1568       0,     0,     0,   282,   283,     0,   284,   352,     0,     0,
     1569       0,    66,     0,     0,     0,     0,     0,   352,   354,   352,
     1570     355,     0,     0,    86,   222,     0,     0,   352,     0,     0,
     1571       0,   352,   285,   626,     0,     0,     0,     0,   286,     0,
     1572     259,   711,   287,     0,  1084,   288,   289,   290,   291,    41,
     1573      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     1574     225,     0,   354,   354,   354,     0,     0,     0,     0,     0,
     1575    1098,     0,     0,     0,     0,   505,     0,   213,   430,   117,
     1576     354,     0,     0,    45,    46,   296,   297,   298,   299,     0,
     1577       0,     0,    74,     0,     0,     0,     0,     0,   354,     0,
     1578       0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
     1579       0,     0,     0,     0,   126,    79,     0,     0,     0,   126,
     1580      79,     0,   352,     0,     0,     0,     0,   794,   795,     0,
     1581       0,     0,     0,     0,     0,    77,   593,     0,   354,     0,
     1582       0,     0,     0,     0,     0,     0,     0,   362,     0,   428,
     1583       0,     0,     0,     0,   697,   697,   828,   349,   349,   831,
     1584     832,     0,   835,     0,   837,   838,     0,     0,     0,   839,
     1585     840,     0,     0,   354,     0,     0,     0,  1187,     0,     0,
     1586       0,     0,   508,     0,    57,    57,     0,     0,     0,     0,
     1587       0,     0,     0,     0,     0,     0,     0,     0,   508,     0,
    20361588       0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
    2037        0,     0,     0,   704,   704,     0,     0,     0,   699,     0,
    2038        0,     0,     0,    75,     0,     0,   353,     0,   699,     0,
    2039      350,     0,   627,    31,     0,  1010,     0,   627,   809,     0,
    2040        0,     0,   699,     0,     8,     9,    10,    11,    12,     0,
    2041       48,   113,  1021,   703,   703,   413,     0,     0,  1037,   421,
    2042      113,    34,     0,   353,     0,    78,    37,     0,   184,   185,
    2043       40,   704,   704,    31,     0,    48,    48,    41,    42,     0,
    2044      355,     0,     0,     0,     0,    78,     0,     0,   225,   214,
    2045        0,     0,     0,    78,     0,     0,     0,     0,   112,     0,
    2046       48,    34,   927,  1528,    66,   411,     0,     0,   353,     0,
    2047        0,   355,    45,    46,     0,     0,     0,   216,   353,     0,
    2048      353,     0,     0,     0,     0,   223,   627,     0,   353,   355,
    2049        0,    78,   353,   260,   713,     0,   413,  1093,     0,     0,
    2050        0,     0,     0,   937,     0,   601,     0,   927,     0,   799,
    2051      800,     0,    45,    46,     0,    80,    37,     0,   184,   185,
    2052       40,     0,     0,  1107,     0,     0,     0,    41,    42,     0,
    2053      356,   431,   118,   355,   896,    80,     0,     0,   833,     0,
    2054        0,   836,   837,    80,   840,  1149,   842,   843,     0,   350,
    2055     1087,   844,   845,  1528,    75,   411,     0,     0,     0,     0,
    2056        0,   356,    45,    46,  1326,     0,     0,     0,     0,     0,
    2057        0,     0,     0,     0,     0,   216,     0,     0,     0,   356,
    2058        0,    80,  1327,     0,   353,     0,     0,   576,   576,    57,
    2059       57,     0,   594,     0,     0,     0,  1037,   355,     0,   703,
    2060        0,     0,     0,     0,     0,   429,     0,   703,   703,   703,
    2061      699,   699,     0,   350,   350,     0,     0,   704,     0,     0,
    2062        0,    57,     0,   356,     0,   704,   704,   704,     0,     0,
    2063        0,     0,     0,  1199,     0,     0,     0,     0,   214,   353,
    2064        0,   355,   355,   355,     0,     0,     0,     0,     0,     0,
    2065        0,     0,     0,     0,     0,    57,   995,     0,    57,     0,
    2066      355,     0,     0,     0,     0,     0,  1000,     0,   699,   699,
    2067        0,     0,     0,   703,     0,   888,   927,     0,   355,   891,
    2068     1012,     0,     0,     0,     0,     0,     0,   356,     0,    78,
    2069      479,   704,   976,   977,     0,     0,     0,     0,     0,     0,
    2070      353,   353,     0,   353,   353,     0,  1214,     0,     0,     0,
    2071      465,     0,     0,     0,     0,    78,     0,   627,   355,     0,
    2072        0,     0,     0,    75,     0,     0,     0,     0,     0,     0,
    2073        0,   356,   356,   356,     0,     0,   214,     0,     0,   927,
    2074      927,     0,   713,     0,    87,     0,   348,     0,     0,     0,
    2075      356,     0,     0,     0,     0,   355,     0,     0,   353,   353,
    2076        0,     0,     0,     0,     0,     0,     0,     0,   356,     8,
    2077        9,    10,    11,    12,     0,     0,    87,     0,     0,    80,
    2078        0,     0,     0,     0,     0,  1297,     0,     0,     0,     0,
    2079        0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
    2080      355,     0,     0,   260,     0,    80,     0,    66,   356,     0,
    2081      355,    57,   355,   226,   576,     0,     0,   224,     0,   699,
    2082      355,   713,     0,     0,   355,   118,    34,     0,     0,     0,
    2083        0,    37,   353,   184,   185,    40,     0,     0,     0,     0,
    2084        0,    57,    41,    42,     0,   356,     0,     0,     0,     0,
    2085        0,     0,     0,     0,   699,     0,  1098,     0,     0,     0,
    2086        0,     0,   699,   699,   699,     0,     0,     0,   186,     0,
    2087        0,     0,     0,   350,   350,   223,     0,    45,    46,     0,
    2088        0,     0,     0,     0,     0,     0,    78,  1199,  1177,  1178,
    2089      356,     0,     0,     0,     0,     0,     0,    75,     0,     0,
    2090      356,   363,   356,     0,     0,     0,     0,   225,     0,   353,
    2091      356,   353,     0,     0,   356,     0,   355,     0,     0,     0,
    2092      118,     0,     0,     0,   112,     0,     0,     0,   699,     0,
    2093        0,     0,     0,   413,     0,     0,     0,     0,     0,     0,
    2094        0,     0,     0,     0,   353,     0,  1227,  1228,     0,     0,
    2095      927,     0,   353,   353,   353,     0,     0,     0,  1384,     0,
    2096        0,     0,     0,   353,   353,     0,     0,     0,   927,     0,
    2097      742,   355,     0,     0,     0,     0,    80,    75,     0,     0,
    2098        0,     0,     0,     0,     0,   763,     0,     0,   742,     0,
    2099      769,   742,     0,     0,     0,     0,    87,     0,   350,     0,
    2100        0,    87,   127,   127,   127,     0,   356,     0,     0,     0,
    2101        0,     0,     0,  1153,     0,     0,     0,     0,   353,     0,
    2102     1229,     0,   348,   118,     0,     0,     0,     0,     0,     0,
    2103     1165,     0,   355,   355,     0,   355,   355,     0,     0,   465,
    2104        0,   927,   927,     0,   168,     0,   173,  1199,     0,   179,
    2105      180,   181,     0,   183,  1199,    78,     0,     0,     0,     0,
    2106        0,   356,     0,     0,     0,     0,     0,     0,   234,     0,
    2107        0,     0,     0,    57,     0,   127,     0,   127,     0,     0,
    2108      249,   250,     0,     0,     0,     0,     0,     0,   353,     0,
    2109      355,   355,     0,     0,     0,   226,     0,     0,     0,     0,
    2110        0,     0,   276,     0,     0,     0,     0,  1199,   413,     0,
    2111        0,   883,     0,   885,  1553,   348,     0,  1501,     0,  1505,
    2112        0,     0,   356,   356,     0,   356,   356,     0,     0,     0,
    2113        0,     0,  1354,     0,     0,     0,     0,    75,     0,     0,
    2114     1356,  1357,  1358,     0,    75,    80,     0,     0,     0,     0,
    2115     1255,     0,  1318,     0,  1534,     0,  1536,     0,   127,     0,
    2116        0,     0,    87,   932,   355,     0,   127,     0,   127,   127,
    2117        0,     0,     0,   127,     0,   127,   127,   363,     0,   348,
    2118      356,   356,    87,     0,     0,     0,     0,     0,     0,     0,
    2119       87,     0,     0,     0,     0,     0,     0,    75,     0,  1565,
    2120        0,  1566,     0,     0,     0,     0,  1404,   224,   363,     8,
    2121        9,    10,    11,    12,  1573,  1574,     0,     0,     0,     0,
    2122        0,     0,     0,   348,   348,   348,   363,     0,    87,    78,
    2123        0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
    2124        0,   355,   348,   355,     0,   127,     0,     0,     8,     9,
    2125       10,    11,    12,     0,   356,     0,     0,     0,     0,     0,
    2126        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2127      363,    37,     0,   184,   185,    40,   355,    31,     0,     0,
    2128        0,     0,    41,    42,   355,   355,   355,     0,     0,     0,
    2129        0,     0,     0,     0,     0,   355,   355,   225,     0,     0,
    2130      348,     0,     0,     0,     0,    34,     0,     0,   266,    78,
    2131       37,     0,     0,     0,    40,     0,     0,    45,    46,    80,
    2132        0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
    2133        0,   356,     0,   356,   363,   591,     0,   599,     0,     0,
    2134        0,     0,     0,     0,     0,     0,     0,   719,   623,   624,
    2135      355,     0,     0,     0,     0,     0,    45,    46,     0,     0,
    2136        0,     0,     0,     0,     0,     0,   356,     0,     0,     0,
    2137        0,     0,     0,     0,   356,   356,   356,     0,   363,   363,
    2138      363,     0,     0,     0,     0,   356,   356,     0,     0,     0,
    2139        0,     0,     0,     0,   348,     0,     0,   363,     0,    80,
    2140        0,     0,   348,     0,     0,  1020,     0,     0,     8,     9,
    2141       10,    11,    12,     0,     0,   363,     0,     0,     0,  1129,
    2142      355,     0,     0,     0,     0,     0,    87,     0,     0,     0,
    2143        0,     0,     0,     0,     0,   283,   284,    31,   285,     0,
    2144      356,     0,     0,  1142,     0,     0,   742,     0,  1142,     0,
    2145        0,     0,    87,     0,     0,   363,     0,     0,     0,     0,
    2146        0,     0,     0,     0,   286,    34,     0,     0,    57,    78,
    2147      287,     0,     0,     0,   288,     0,    78,   289,   290,   291,
    2148      292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
    2149        0,     0,   363,     0,     0,     0,     0,     0,  1142,     0,
    2150        0,     0,     0,     0,     0,     0,     0,   295,     0,   379,
    2151      356,     0,     0,     0,     0,     0,   344,    46,   297,   298,
    2152      299,   300,     0,     0,     0,     0,     0,     0,     0,    78,
    2153        0,     0,     0,     0,     0,     0,    57,   363,     0,     0,
    2154        0,     0,     0,     0,     0,     0,     0,   363,     0,   363,
    2155      127,   127,     0,   348,   226,     0,     0,   363,     0,    80,
    2156        0,   363,   283,   284,     0,   285,    80,     0,     0,     0,
    2157        0,     0,     0,     0,     0,     0,     0,     0,     0,   127,
    2158        0,     0,   127,   127,     0,   127,     0,   127,   127,     0,
    2159        0,   286,   127,   127,     0,     0,     0,   640,     0,   140,
    2160      141,   288,     0,     0,   289,   641,   291,   292,    41,    42,
    2161        0,   293,   294,     0,     0,     0,     0,   348,   348,    80,
    2162        0,     0,     0,    87,     0,     0,     0,     0,     0,     0,
    2163        0,     0,     0,     0,   295,     0,   642,    57,   643,   380,
    2164        0,     0,     0,    45,    46,   297,   298,   299,   300,     0,
    2165        0,     0,     0,   363,     0,     0,     0,     0,     0,   206,
    2166        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2167       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2168       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2169        0,   930,     0,   931,     0,    31,     0,     0,     0,     0,
    2170      934,   935,     0,     0,     0,   940,     0,     0,   363,     0,
    2171        0,     0,     0,     0,     0,     0,     0,   945,  1142,  1142,
    2172     1142,     0,   949,    34,     0,    35,     0,    36,    37,     0,
    2173      208,    39,    40,   127,   127,     0,     0,     0,     0,    41,
    2174       42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2175        0,     0,   985,     0,     0,     0,     0,     0,   283,   284,
    2176        0,   285,     0,     0,     0,    43,     0,   209,     0,   363,
    2177      363,     0,   363,   363,    45,    46,   742,     0,     0,     0,
    2178        0,     0,     0,     0,     0,     0,     0,   286,    57,    57,
    2179        0,     0,    87,   287,     0,     0,     0,   288,     0,     0,
    2180      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2181        0,    57,     0,     0,     0,     0,     0,     0,     0,     0,
    2182        0,     0,     0,     0,     0,     0,     0,   363,   363,    57,
    2183      295,     0,   379,     0,     0,   380,     0,     0,     0,    45,
    2184       46,   297,   298,   299,   300,     0,     0,   166,     0,     0,
    2185        0,     0,  1031,  1032,  1033,  1034,     0,  1036,     0,     0,
    2186        0,     0,  1142,  1142,   219,     0,     0,     0,     0,     0,
    2187        0,     0,     0,  1080,     0,     0,     0,   348,   348,     0,
    2188        0,     0,     0,     0,     0,     0,    57,  1086,     0,     0,
    2189        0,    57,   127,     0,     0,     0,     0,   127,     0,     0,
    2190     1481,   363,     0,     0,     0,     0,     0,     0,     0,     0,
    2191        0,     0,   166,     0,     0,     0,   273,     0,     0,     0,
    2192        0,     0,     0,     0,    57,     0,     0,  1106,     0,     0,
     1589       0,     0,   697,   697,   224,     0,    57,   354,     0,     0,
     1590       0,     0,     0,     0,     0,     0,     0,   354,     0,   354,
     1591       0,     0,     0,    31,   223,   352,   352,   354,   352,   352,
     1592       0,   354,    86,     0,     0,     0,     0,    86,     0,     0,
     1593      57,     0,     0,    57,     0,     0,     0,     0,    74,   626,
     1594       0,    34,     0,     0,     0,     0,    37,     0,   508,   508,
     1595      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     1596     126,    79,     0,   711,     0,     0,     0,     0,     0,     0,
     1597       0,     0,     0,   352,   352,     0,   355,     0,     0,     0,
     1598       0,    79,    77,    43,     0,     0,     0,   968,   969,    79,
     1599       0,    45,    46,     0,     8,     9,    10,    11,    12,     0,
     1600       0,     0,     0,     0,     0,     0,  1282,   355,     0,     0,
     1601       0,     0,   354,     0,     0,     0,     0,     0,     0,     0,
     1602     347,   225,     0,    31,   259,   355,     0,    79,    66,     0,
    21931603       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2194        0,     0,     0,     0,   226,   166,     0,     0,     0,     0,
    2195        0,     0,     0,     0,     0,   369,     0,     0,     0,   375,
    2196        0,  1532,     0,     0,     0,     0,    87,     0,     0,     0,
    2197     1540,     0,     0,     0,  1139,     0,     0,     0,   363,     0,
    2198      363,  1147,     0,     0,     0,     0,  1151,     0,     0,     0,
    2199        0,  1155,     0,  1156,     0,     0,     0,  1158,     0,  1159,
    2200     1160,     0,   348,  1163,     0,     0,     0,     0,   166,     0,
    2201        0,     0,  1175,   363,     0,     0,     0,     0,     0,     0,
    2202      219,   363,   363,   363,     0,     0,     0,    57,     0,     0,
    2203     1190,  1191,   363,   363,     0,     0,     0,     0,   166,     0,
    2204        0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
    2205        0,    57,     0,     0,     0,     0,     0,  1221,    57,     0,
    2206     1223,   127,     0,   375,     0,     0,     0,     0,     0,     0,
    2207      166,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2208        0,     0,     0,     0,     0,     0,     0,   363,     0,     0,
    2209        0,     0,     0,   524,     0,     0,     0,     0,     0,     0,
    2210        0,     0,     0,  1237,     0,   166,     0,     0,     0,  1241,
    2211     1242,    57,     0,     0,     0,     0,     0,     0,     0,     0,
    2212        0,  1253,     0,     0,     0,     0,     0,     0,     0,     0,
    2213        0,  1260,     0,     0,  1264,     0,  1265,     0,     0,  1267,
    2214        0,     0,     0,   597,     0,     0,     0,     0,   621,     0,
    2215        0,     0,  1275,     0,     0,     0,     0,   363,     0,     0,
    2216        0,     0,     0,     0,     0,  1282,     0,  1284,  1285,  1286,
    2217     1287,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2218        0,     0,     0,  1294,     0,  1295,     0,     0,     0,   173,
    2219        0,     0,     0,   127,     0,   212,     0,     0,     0,     0,
    2220        0,     0,     0,     0,     0,   232,    87,   236,     0,   238,
    2221        0,     0,     0,    87,     0,     0,   247,     0,  1323,  1324,
    2222        0,     0,     0,     0,   166,   166,     0,     0,     0,     0,
    2223        0,   369,     0,     0,     0,     0,     0,     0,     0,     0,
    2224        0,     0,     0,     0,     0,     0,     0,   212,     0,   236,
    2225      238,   247,   524,     0,     0,     0,     0,     0,     0,     0,
    2226        0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
    2227        0,  1359,  1360,     0,     0,     0,     0,     0,     0,     0,
    2228      716,  1370,     0,     0,     0,     0,     0,     0,     0,     0,
    2229      212,     0,   166,     0,     0,     0,     0,     0,     0,     0,
    2230        0,     0,     0,     0,   524,     0,   524,     0,     0,   524,
    2231        0,   166,   524,     0,     0,     0,     0,     0,     0,     0,
    2232        0,     0,     0,     0,   369,     0,     0,     0,     0,     0,
    2233        0,     0,  1402,     0,     0,     0,     0,     0,     0,     0,
    2234        0,     0,     0,     0,     0,  1407,     0,  1408,  1409,  1410,
    2235        0,   212,     0,   236,   238,   247,     0,     0,     0,  1414,
    2236        0,     0,     0,     0,     0,     0,     0,     0,  1425,     0,
    2237        0,     0,     0,     0,     0,     0,   166,     0,     0,     0,
    2238        0,     0,     0,     0,     0,     0,     0,     0,   369,   212,
    2239        0,     0,   814,     0,   212,  1448,     0,     0,     0,     0,
    2240        0,     0,     0,     0,     0,     0,     0,     0,     0,   497,
    2241        0,     0,     0,     0,     0,     0,     0,     0,   597,     0,
    2242        0,     0,     0,   597,     0,     0,     0,     0,     0,     0,
    2243        0,     0,   369,   369,   369,     0,     0,     0,     0,     0,
    2244     1487,  1488,     0,     0,     0,     0,     0,     0,     0,     0,
    2245        0,   369,     0,  1493,     0,     0,     0,   212,     0,     0,
    2246     1493,     0,     0,     0,   157,     0,     0,     0,     0,     0,
    2247        0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
    2248        0,     0,     0,   524,   236,   238,     0,     0,     0,     0,
    2249        0,     0,   247,  1527,     0,     0,     0,  1533,     0,     0,
    2250        0,     0,     0,     0,     0,     0,     0,     0,     0,   369,
    2251     1173,   939,   252,     8,     9,    10,    11,    12,     0,     0,
    2252        0,     0,   257,     0,     0,     0,  1555,     0,  1556,     0,
    2253        0,     0,     0,     0,     0,   212,     0,     0,     0,     0,
    2254      283,   284,    31,   285,     0,     0,   716,     0,     0,     0,
    2255        0,     0,     0,   212,     0,     0,  1571,  1572,   212,     0,
    2256      212,     0,     0,     0,  1575,  1576,     0,     0,     0,   286,
    2257       34,     0,     0,     0,     0,   287,     0,   212,   157,   288,
    2258      212,   212,   289,   290,   291,   292,    41,    42,   212,   293,
    2259      294,     0,   386,     0,     0,     0,     0,     0,     0,     0,
    2260        0,     0,   212,   369,     0,     0,     0,   621,     0,   212,
    2261        0,   369,   295,     0,   379,   418,     0,     0,     0,     0,
    2262        0,  1174,    46,   297,   298,   299,   300,     0,     0,   433,
    2263        0,     0,     0,     0,     0,     0,     0,     0,   438,     0,
    2264        0,     0,     0,     0,     0,     0,     0,     0,   446,     0,
    2265        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2266      284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
    2267        0,     0,     0,   464,     0,     0,     0,     0,   474,     0,
    2268        0,     0,     0,     0,     0,     0,     0,     0,   286,     0,
    2269        0,   482,     0,     0,   287,     0,     0,   492,   288,   496,
    2270        0,   289,   290,   291,   292,    41,    42,   716,   293,   294,
    2271        0,     0,     0,     0,     0,     0,   526,     0,     0,     0,
    2272        0,     0,   524,   212,     0,     0,     0,     0,     0,     0,
    2273        0,   295,     0,   379,     0,     0,     0,     0,     0,   790,
    2274       45,    46,   297,   298,   299,   300,   166,     0,     0,     0,
    2275        0,   212,     0,     0,     0,     0,   212,     0,   585,     0,
    2276        0,     0,   369,   590,     0,     0,   206,     2,   207,     4,
    2277        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2278       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2279       25,     0,   635,    26,    27,    28,   636,   637,     0,   639,
    2280        0,     0,    31,     0,     0,   597,   651,   652,     0,   653,
    2281      654,     0,   655,     0,   656,     0,     0,     0,     0,     0,
    2282        0,     0,     0,     0,     0,     0,   369,   369,   212,     0,
    2283       34,   585,    35,     0,    36,     0,     0,   208,    39,   671,
    2284        0,     0,   212,     0,     0,     0,     0,     0,     0,     0,
     1604     697,     0,   711,     0,   352,     0,   117,     0,     0,     0,
     1605       0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
     1606      40,     0,     0,     0,     0,     0,     0,    41,    42,   355,
     1607       0,     0,   697,     0,     0,     0,     0,     0,     0,     0,
     1608     697,   697,   697,     0,     0,    57,     0,   222,    86,   126,
     1609       0,   349,   349,   599,     0,   600,     0,     0,     0,     0,
     1610       0,    45,    46,   362,     0,  1187,     0,     0,    86,    74,
     1611       0,     0,     0,     0,     0,    57,    86,     0,     0,     0,
     1612       0,   352,     0,   352,     0,   354,   354,     0,   354,   354,
     1613       0,     0,     0,   355,   362,     0,     0,     0,   117,     0,
     1614       0,     0,     0,     0,   697,     0,     0,     0,    77,  1089,
     1615       0,     0,   362,   352,    86,     0,     0,     0,     0,     0,
     1616       0,   352,   352,   352,     0,     0,     0,     0,     0,     0,
     1617       0,     0,   352,   352,     0,     0,     0,   355,   355,   355,
     1618       0,     0,     0,   354,   354,     0,    74,     0,     0,     0,
     1619       0,     0,     0,     0,     0,   355,   362,     0,     0,     0,
    22851620       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2286      283,   284,   497,   285,   682,     0,     0,     0,     0,     0,
    2287        0,     0,     0,     0,   209,     0,     0,     0,     0,     0,
    2288        0,    45,    46,     0,     0,     0,   524,     0,     0,   286,
    2289      708,     0,     0,     0,     0,   287,   711,     0,     0,   288,
    2290        0,   464,   289,   290,   291,   292,    41,    42,     0,   293,
    2291      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2292        0,     0,     0,     0,     0,     0,   212,     0,     0,     0,
    2293        0,     0,   295,     0,   379,     0,     0,   748,   212,   760,
    2294        0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
    2295        0,     0,   767,     0,     0,   716,  -519,   212,     0,     1,
    2296        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    2297       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2298       22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
    2299      793,     0,    30,     0,     0,    31,    32,   219,     0,   803,
    2300        0,   341,   364,     0,     0,     0,   805,     0,   283,   284,
    2301        0,   285,   813,     0,     0,     0,     0,     0,     0,     0,
    2302       33,   827,     0,    34,     0,    35,     0,    36,    37,     0,
    2303       38,    39,    40,     0,   716,   414,     0,   286,     0,    41,
    2304       42,     0,   414,   287,     0,     0,     0,   288,     0,     0,
    2305      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2306        0,     0,   867,     0,     0,    43,     0,    44,     0,     0,
    2307        0,   212,     0,     0,    45,    46,     0,     0,     0,     0,
    2308      295,     0,   379,     0,     0,   978,   369,   369,     0,    45,
    2309       46,   297,   298,   299,   300,   219,     0,     0,   813,     0,
    2310        0,     0,     0,   212,     0,     0,   909,     0,     0,     0,
    2311        0,     0,     0,     0,   414,     8,     9,    10,    11,    12,
     1621       0,   349,     0,   355,     0,     0,     0,     0,     0,     0,
     1622       0,     0,     0,     0,    79,   352,     0,     8,     9,    10,
     1623      11,    12,     0,     0,     0,     0,   117,     0,     0,     0,
     1624       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1625      79,     0,     0,   355,   354,     0,    31,     0,  1187,     0,
     1626     362,     0,     0,     0,     0,  1187,     0,   167,     0,   172,
     1627       0,     0,   178,   179,   180,     0,   182,     0,     0,     0,
     1628       0,     0,     0,     0,    34,     0,     0,     0,   355,    37,
     1629     233,     0,   352,    40,     0,     0,   347,   223,     0,     0,
     1630      41,    42,   248,   249,   362,   362,   362,     0,     0,     0,
     1631    1217,     0,     0,     0,     0,     0,  1187,     0,     0,    77,
     1632       0,     0,   362,  1529,     0,     0,   717,     0,     0,     0,
     1633       0,   354,   355,   354,    45,    46,     0,     0,     0,    74,
     1634     362,     0,   355,     0,   355,     0,    74,    57,     0,   224,
     1635       0,    86,   355,     0,     0,     0,   355,     8,     9,    10,
     1636      11,    12,     0,   354,     0,     0,     0,     0,     0,     0,
     1637       0,   354,   354,   354,     0,     0,     0,    86,     0,     0,
     1638     362,     0,   354,   354,     0,     0,    31,     0,     0,   347,
     1639       0,     0,     0,     0,     0,     0,    77,    74,     0,     0,
     1640       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1641       0,     0,     0,     0,    34,   362,     0,    79,     0,    37,
     1642       0,   183,   184,    40,     0,     0,     0,     0,     0,     0,
     1643      41,    42,     0,     0,     0,   354,     0,     0,     0,  1303,
     1644       0,     0,     0,     0,     0,     0,     0,   355,     0,     0,
     1645       0,     0,     0,   347,     0,     0,   904,     0,   410,   362,
     1646       0,     0,     0,     0,    45,    46,     0,     0,     0,   362,
     1647       0,   362,     0,     0,     0,     0,   225,     0,     0,   362,
     1648       0,     0,     0,   362,     0,     0,     0,     0,     0,     0,
     1649       0,     0,     0,     0,     0,     0,     0,   347,   347,   347,
     1650       0,     0,   354,     0,     0,     0,     0,     0,     0,     0,
     1651       0,     0,     0,     0,     0,   347,     0,     0,     1,     2,
     1652       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    23121653      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2313       23,    24,    25,  -294,     0,     0,     0,   252,     0,   212,
    2314        0,     0,     0,     0,    31,     0,     0,   946,   947,     0,
    2315      212,     0,     0,     0,     0,     0,   283,   284,     0,   285,
    2316        0,   964,     0,     0,   321,     0,     0,     0,   414,     0,
    2317        0,     0,    34,     0,   346,     0,   414,   581,     0,   414,
    2318      584,     0,   986,  -294,   987,   286,   382,   382,   991,     0,
    2319      364,   287,     0,     0,   613,   288,     0,     0,   289,   290,
    2320      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2321        0,   369,     0,   631,     0,     0,   341,     0,     0,     0,
    2322        0,     0,   212,     0,     0,     0,     0,     0,   295,     0,
    2323      379,     0,     0,     0,     0,     0,   212,    45,    46,   297,
    2324      298,   299,   300,   414,     0,     0,     0,   414,     0,     0,
    2325        0,     0,  1025,     0,     0,     0,     0,   321,     0,  1026,
    2326        0,     0,     0,     0,     0,     0,     0,     0,     0,   524,
    2327        0,   524,  1028,     0,  1029,     0,     0,     0,   364,     0,
    2328        0,   478,     0,     0,     0,     0,     0,     0,  1041,     0,
    2329        0,     0,     0,     0,     0,  1045,     0,     0,     0,     0,
    2330        0,     0,     0,     0,     0,     0,   524,  1083,   524,     0,
    2331     1084,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2332        0,     0,     0,     0,   414,     0,     0,   364,   212,     0,
    2333        0,     0,     0,     0,     0,     0,   166,     2,   207,     4,
    2334        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2335       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2336       25,     0,     0,    26,    27,    28,   414,     0,     0,     0,
    2337      341,   364,    31,     0,     0,     0,     0,     0,     0,     0,
    2338        0,     0,     0,     0,     0,     0,     0,     0,     0,   590,
    2339        0,     0,     0,     0,     0,     0,     0,   382,     0,     0,
    2340       34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2341        0,     0,     0,     0,     0,   414,   414,     0,     0,     0,
    2342        0,     0,     0,     0,     0,  1157,   212,     0,     0,     0,
    2343        0,     0,     0,     0,   807,   364,     0,     0,     0,     0,
    2344        0,     0,     0,  -402,   678,   613,     0,   613,   613,     0,
    2345        0,    45,    46,     0,   613,     0,     0,     0,     0,     0,
    2346        0,     0,     0,     0,   846,   364,     0,     0,     0,     0,
    2347      364,     0,     0,     0,     0,     0,     0,     0,     0,   364,
    2348      364,   364,     0,   526,     0,     0,     0,     0,     0,  1222,
    2349        0,   710,     0,     0,     0,     0,     0,     0,   364,     0,
    2350        0,     0,     0,   414,   889,     0,     0,   414,   892,     0,
    2351        0,     0,     0,     0,   894,     0,     0,     0,     0,     0,
    2352        0,     0,     0,  1234,     0,     0,     0,     0,  1236,     0,
    2353      744,     0,     0,   414,     0,     0,  1240,     0,     0,     0,
    2354        0,     0,     0,   761,     0,     0,     0,     0,   744,     0,
    2355        0,   744,     0,     0,     0,     0,   364,   613,     0,     0,
    2356        0,     0,     0,   771,     0,     0,     0,     0,     0,     0,
    2357        0,     0,  1269,     0,     0,     0,     0,     0,     0,     0,
    2358        0,     0,     0,     0,  1277,   792,     0,  1278,     0,  1279,
    2359        0,     0,   341,   364,     0,   801,     0,   414,   414,     0,
    2360        0,     0,   346,  1288,  1289,     0,     0,   761,     0,     0,
     1654      23,    24,    25,     0,    86,    26,    27,    28,    29,    77,
     1655       0,    30,     0,     0,    31,    32,    77,   590,     0,   598,
     1656     355,   355,     0,   355,   355,     0,     0,     0,     0,     0,
     1657     622,   623,     0,   347,   362,     0,     0,     0,     0,    33,
     1658       0,     0,    34,    79,    35,     0,    36,    37,     0,    38,
     1659      39,    40,     0,     8,     9,    10,    11,    12,    41,    42,
     1660       0,     0,     0,     0,     0,     0,     0,    77,     0,     0,
     1661       0,     0,     0,     0,     0,     0,     0,     0,   355,   355,
     1662       0,     0,    31,     0,    43,     0,    44,     0,   211,     0,
     1663    -518,     0,    45,    46,     0,     0,     0,   231,     0,   235,
     1664       0,   237,     0,     0,     0,     0,     0,     0,   246,     0,
     1665      34,     0,   165,     0,     0,    37,     0,   183,   184,    40,
     1666       0,     0,     0,     0,   347,     0,    41,    42,     0,   218,
     1667       0,     0,   347,     0,     8,     9,    10,    11,    12,   211,
     1668       0,   235,   237,   246,     0,     0,     0,   362,   362,   355,
     1669     362,   362,  1504,     0,   410,     0,     0,     0,     0,     0,
     1670      45,    46,     0,    31,     0,     0,     0,     0,     0,     0,
     1671      86,     0,     0,     0,     0,     0,   165,     0,     0,     0,
     1672     272,     0,   211,     0,     0,     0,     0,     0,     0,     0,
     1673       0,    34,   224,     0,     0,     0,    37,    57,   183,   184,
     1674      40,     0,     0,     0,     0,   362,   362,    41,    42,   165,
     1675       0,     0,     0,     0,    79,     0,     0,     0,     0,   368,
     1676       0,     0,     0,   374,     0,     0,   355,     0,   355,     0,
     1677       0,     0,     0,   265,     0,     0,     0,     0,     0,     0,
     1678       0,    45,    46,   211,     0,   235,   237,   246,     0,     0,
     1679       0,     0,     0,     0,     0,     0,     0,     0,   355,     0,
     1680       0,     0,     0,     0,     0,    57,   355,   355,   355,     0,
     1681       0,     0,   165,     0,     0,     0,   362,   355,   355,     0,
     1682       0,   211,     0,     0,   218,     0,   211,     0,     0,     0,
     1683       0,    79,     0,     0,     0,     0,     0,     0,     0,     0,
     1684       0,   496,   165,     0,     0,     0,     0,     0,     0,     0,
     1685       0,     0,     0,     0,     0,     0,     0,     0,     0,   225,
     1686       0,     0,     0,     0,     0,     0,     0,   374,     0,     0,
     1687     355,     0,     0,     0,   165,     0,     0,     0,     0,     0,
     1688       0,    86,     0,   347,   347,     0,     0,     0,     0,   211,
     1689       0,     0,     0,   362,     0,   362,     0,   523,     0,     0,
     1690       0,     0,     0,    57,     0,     0,     0,     0,     0,   165,
     1691       0,   211,   924,     0,   925,     0,   235,   237,     0,     0,
     1692       0,   928,   929,     0,   246,   362,   934,     0,     0,     0,
     1693       0,     0,     0,   362,   362,   362,     0,   355,   939,     0,
     1694       0,     0,     0,   943,   362,   362,     0,   596,     0,     0,
     1695       0,     0,   620,     0,     0,     0,     0,     0,    86,     0,
     1696       0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
     1697       0,   977,     0,     0,     0,     0,     0,     0,     0,     0,
     1698       0,     0,     0,     0,    79,   211,     0,     0,     0,     0,
     1699     211,    79,   211,     0,     0,     0,     0,   362,     0,     0,
     1700       0,     0,     0,     0,     0,     0,     0,     0,     0,   211,
     1701       0,     0,   211,   211,     0,     0,     0,     0,     0,     0,
     1702     211,     0,     0,     0,     0,     0,     0,     0,   165,   165,
     1703       0,     0,     0,     0,   211,   368,     0,     0,     0,     0,
     1704       0,   211,    79,     0,     0,     0,     0,     0,     0,     0,
     1705       0,    57,    57,     0,     0,     0,   523,     0,     0,     0,
     1706       0,     0,     0,     0,   362,     0,     0,     0,     0,     0,
     1707    1022,  1023,  1024,  1025,    57,  1027,     0,     0,     0,     0,
     1708       0,     0,     0,     0,   714,     0,     0,     0,     0,     0,
     1709    1071,     0,    57,     0,     0,     0,   165,     0,     0,     0,
     1710       0,     0,     0,     0,  1077,     0,     0,     0,   523,     0,
     1711     523,    86,     0,   523,     0,   165,   523,     0,    86,     0,
     1712       0,     0,     0,     0,     0,     0,     0,     0,   368,     0,
     1713       0,     0,     0,     0,     0,     0,     0,   347,   347,     0,
     1714       0,     0,     0,     0,  1097,     0,    57,     0,     0,     0,
     1715       0,    57,     0,     0,     0,   211,     0,     0,     0,     0,
     1716       0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
    23611717       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2362        0,     0,     0,     0,     0,  1302,     0,     0,     0,     0,
     1718     165,     0,     0,   211,    57,     0,     0,     0,   211,  1128,
     1719       0,     0,   368,     0,     0,  1135,   809,     0,     0,     0,
     1720    1139,     0,     0,     0,     0,  1143,     0,  1144,     0,     0,
     1721       0,  1146,     0,  1147,  1148,     0,     0,  1151,     0,     0,
     1722       0,     0,   596,     0,     0,     0,  1163,   596,     0,     0,
     1723       0,     0,     0,     0,     0,     0,   368,   368,   368,     0,
     1724       0,     0,     0,     0,  1178,  1179,     0,     0,     0,     0,
     1725       0,     0,     0,     0,   368,     0,     0,   347,     0,   211,
    23631726       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2364        0,     0,   414,     0,     0,     0,     0,     0,     0,     0,
    2365      364,     0,     0,     0,     0,     0,   866,   807,   364,     0,
    2366        0,   613,     0,   613,     0,   382,     0,     0,     0,     0,
    2367        0,     0,     0,   613,  1343,     0,     0,     0,     0,     0,
    2368        0,     0,   212,     0,     0,     0,     0,     0,     0,     0,
    2369        0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
    2370        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2371       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2372       27,    28,    29,     0,     0,    30,     0,     0,    31,     0,
    2373        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2374        0,     0,     0,     0,     0,     0,   807,     0,     0,     0,
    2375     1394,     0,  1395,   341,   364,   414,    34,   414,    35,     0,
    2376       36,   414,     0,    38,    39,   761,  1405,   970,  1406,     0,
    2377        0,     0,     0,     0,     0,     0,     0,   981,     0,     0,
    2378        0,     0,   613,   613,   990,     0,  1413,     0,     0,     0,
    2379        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2380       44,     0,  1431,  1433,     0,     0,     0,    45,    46,   364,
    2381        0,     0,     0,  1438,     0,     0,  1240,     0,     0,   414,
    2382        0,     0,     0,     0,     0,     0,  1008,  1009,     0,     0,
    2383      346,     0,     0,     0,     0,     0,     0,     0,     0,  1462,
    2384        0,   414,  1154,     0,   346,     0,     0,     0,  1469,     0,
    2385        0,  1471,   364,  1473,  1475,  1477,     0,     0,   414,  1166,
    2386        0,   613,   613,  1171,     0,     0,     0,     0,     0,   507,
    2387        0,   509,   512,   364,   364,   283,   284,     0,   285,   515,
    2388      516,     0,     0,     0,  1039,     0,     0,     0,   382,     0,
    2389        0,     0,     0,   509,   509,  1508,     0,  1510,     0,  1240,
    2390        0,     0,     0,     0,   286,     0,     0,     0,     0,     0,
    2391      287,     0,     0,     0,   288,  1522,     0,   289,   290,   291,
    2392      292,    41,    42,     0,   293,   294,   346,     0,     0,     0,
    2393        0,   509,     0,     0,     0,     0,   414,     0,   414,     0,
    2394        0,     0,     0,   414,     0,     0,     0,   295,     0,   379,
    2395        0,     0,   613,     0,     0,     0,   709,    46,   297,   298,
    2396      299,   300,     0,     0,     0,   321,     0,   509,     0,     0,
    2397        0,     0,     0,     0,     0,     0,     0,   807,   414,  1256,
    2398        0,  1130,  1131,     0,     0,     0,     0,     0,     0,     0,
    2399        0,     0,     0,     0,     0,   382,     0,     0,     0,     0,
    2400        0,   981,   364,     0,  1145,     0,   744,     0,     8,     9,
     1727       0,  1209,     0,   211,  1211,     0,     0,     0,     0,     0,
     1728       0,     0,    57,     0,     0,     0,   523,   282,   283,     0,
     1729     284,     0,     0,   496,     0,     0,     0,     0,     0,     0,
     1730       0,     0,     0,     0,    57,     0,     0,     0,     0,     0,
     1731       0,    57,   368,     0,   933,     0,   285,  1225,     0,     0,
     1732       0,     0,   286,  1229,  1230,     0,   287,     0,     0,   288,
     1733     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     1734       0,     0,     0,  1246,     0,     0,  1250,   714,     0,     0,
     1735    1252,     0,     0,     0,   211,     0,     0,     0,   156,   294,
     1736       0,   378,    57,  1260,   379,     0,   211,    45,    46,   296,
     1737     297,   298,   299,     0,     0,     0,  1267,     0,  1269,  1270,
     1738    1271,  1272,     0,     0,     0,   211,     0,     0,     0,     0,
     1739       0,     0,     0,     0,  1279,     0,  1280,     0,     0,     0,
     1740     172,     0,     0,   368,     0,   251,     0,   620,     0,     0,
     1741       0,   368,     0,     0,     0,   256,     0,     0,     0,     0,
     1742       0,     0,     0,     0,     0,     0,     0,     0,     0,  1308,
     1743    1309,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1744       0,   205,     2,   206,     4,     5,     6,     7,     8,     9,
    24011745      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2402       20,    21,    22,    23,    24,    25,  -294,  1161,    26,    27,
    2403       28,     0,     0,     0,     0,     0,     0,    31,  1176,     0,
    2404      283,   284,     0,   285,     0,     0,     0,     0,     0,     0,
    2405        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2406      382,     0,  1194,   341,     0,    34,     0,     0,     0,   286,
    2407        0,     0,    38,    39,     0,   640,  -294,   981,   981,   288,
    2408        0,   364,   289,   290,   291,   292,    41,    42,     0,   293,
    2409      294,     0,     0,     0,     0,     0,     0,     0,  1226,     0,
    2410        0,     0,     0,     0,     0,     0,     0,   634,     0,   338,
    2411        0,     0,   295,     0,   764,     0,    45,    46,     0,     0,
    2412        0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
    2413        0,     0,     0,   364,   364,   509,   509,   509,   509,   509,
    2414      509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
    2415      509,   509,   509,     0,     0,   981,     0,     0,     0,     0,
    2416        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2417        0,     0,     0,     0,   866,     0,     0,     0,     0,     0,
    2418        0,     0,     0,     0,     0,     0,     0,     0,     0,  1280,
    2419     1281,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2420        0,     0,     0,     0,     0,     0,     0,     0,     1,     2,
    2421      207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2422       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2423       23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
    2424        0,    30,   283,   284,    31,   285,     0,     0,     0,     0,
    2425        0,     0,     0,     0,     0,     0,     0,     0,   364,     0,
    2426        0,     0,     0,     0,     0,     0,     0,     0,     0,   981,
    2427        0,   286,    34,     0,    35,     0,    36,   287,     0,    38,
    2428       39,   288,   509,     0,   289,   290,   291,   292,    41,    42,
    2429        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2430        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2431        0,     0,     0,     0,   295,     0,  1063,     0,     0,     0,
    2432        0,     0,     0,    45,    46,   297,   298,   299,   300,     0,
    2433        0,     0,     0,  1388,     0,     0,   744,  -129,     0,     0,
    2434        0,     0,     0,     0,     0,   509,     0,     0,   414,     8,
    2435        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2436       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2437       27,    28,     0,   414,   414,     0,   509,     0,    31,     0,
    2438        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2439        0,     0,     0,     0,     0,     0,     0,     0,   414,     0,
    2440        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2441        0,     0,     0,   208,    39,     0,     0,     0,     0,     0,
    2442     1447,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2443        0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
    2444        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2445       19,    20,    21,    22,    23,    24,    25,    45,    46,    26,
    2446       27,    28,    29,     0,     0,    30,   283,   284,    31,  1048,
    2447     1049,     0,  1050,     0,     0,  1051,  1052,  1053,  1054,  1055,
    2448     1056,  1057,  1058,     0,     0,     0,  1059,     0,     0,     0,
    2449     1060,  1061,     0,    33,     0,   286,    34,   509,    35,     0,
    2450       36,  1062,  1514,    38,    39,   288,     0,     0,   289,   290,
    2451      291,   292,    41,    42,     0,   293,   294,     8,     9,    10,
    2452       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2453       21,    22,    23,    24,    25,  -295,     0,     0,   295,     0,
    2454     1063,     0,   509,   172,     0,     0,    31,    45,    46,   297,
    2455      298,   299,   300,     0,     0,   321,     0,  1064,     0,     0,
    2456        0,  -129,     0,     0,     0,     0,     0,     0,     0,     0,
    2457        0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
    2458      509,     0,     0,     0,     0,  -295,     0,     0,     0,     0,
    2459        0,     0,     0,   509,     0,     0,     0,     0,     0,     0,
    2460        0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
    2461        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2462       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2463       27,    28,    29,     0,   509,    30,   283,   284,    31,   285,
    2464        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2465       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2466       26,    27,    28,     0,     0,   286,    34,     0,    35,    31,
    2467       36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2468      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2469        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2470        0,     0,   111,     0,    38,    39,     0,     0,   295,     0,
    2471       44,   509,     0,    41,    42,     0,     0,    45,    46,   297,
    2472      298,   299,   300,     2,   207,     4,     5,     6,     7,     8,
    2473        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2474       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2475       27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
    2476        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2477        0,     0,     0,     0,   509,   509,     0,     0,     0,     0,
    2478        0,     0,     0,     0,     0,   286,    34,     0,    35,     0,
    2479       36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2480      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2481        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2482        0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
    2483      343,     0,     0,     0,     0,   760,     0,   344,    46,   297,
    2484      298,   299,   300,     2,   207,     4,     5,     6,     7,     8,
    2485        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2486       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2487       27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
    2488        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2489       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2490       26,    27,    28,     0,     0,   286,    34,     0,    35,    31,
    2491       36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
    2492      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2493        0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
    2494        0,     0,    37,     0,    38,    39,    40,     0,   295,     0,
    2495      969,     0,     0,    41,    42,   760,     0,   344,    46,   297,
    2496      298,   299,   300,     0,     0,     0,     0,     0,     0,     0,
    2497        0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
    2498        0,   158,     0,     0,     0,   509,     0,     0,    45,    46,
    2499        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2500        0,     0,     0,   509,     0,     0,     0,     0,     0,     0,
    2501        0,     0,     0,     0,     0,     0,     2,   207,     4,     5,
     1746      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     1747      28,   156,     0,     0,     0,     0,     0,    31,     0,  1341,
     1748    1342,     0,     0,     0,     0,   385,     0,     0,     0,  1352,
     1749       0,     0,     0,     0,     0,     0,     0,     0,   211,     0,
     1750       0,     0,     0,     0,     0,    34,   714,    35,   417,    36,
     1751       0,     0,   207,    39,     0,     0,     0,     0,     0,     0,
     1752       0,   523,   432,     0,     0,     0,     0,     0,   211,     0,
     1753       0,   437,     0,   282,   283,     0,   284,     0,     0,     0,
     1754       0,   445,     0,     0,     0,   165,     0,     0,     0,   208,
     1755    1387,     0,  1388,  1389,  1390,    45,    46,     0,     0,     0,
     1756       0,     0,   285,   211,  1394,     0,   463,     0,   286,     0,
     1757       0,   473,   287,  1405,   211,   288,   289,   290,   291,    41,
     1758      42,     0,   292,   293,   481,     0,     0,     0,     0,     0,
     1759     491,     0,   495,     0,     0,     0,     0,     0,  1426,     0,
     1760       0,   596,     0,     0,     0,   294,     0,   378,     0,   525,
     1761       0,     0,     0,    45,    46,   296,   297,   298,   299,     0,
     1762       0,     0,   368,   368,     0,     0,   785,     0,     0,     0,
     1763       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
     1764       0,  1464,  1465,     0,     0,     0,   211,     0,     0,     0,
     1765       0,   584,     0,     0,  1470,     0,   589,     0,     0,     0,
     1766     211,  1470,     0,   285,     0,     0,     0,     0,     0,   639,
     1767       0,   139,   140,   287,     0,     0,   288,   289,   290,   291,
     1768      41,    42,   523,   292,   293,   634,     0,     0,     0,   635,
     1769     636,     0,   638,  1503,     0,     0,     0,  1509,     0,   649,
     1770     650,     0,   651,   652,     0,   653,   294,   654,   640,     0,
     1771     641,   379,     0,     0,    45,    46,   296,   297,   298,   299,
     1772       0,     0,     0,     0,   584,  1531,     0,  1532,     0,     0,
     1773       0,     0,   669,     0,     0,     0,     0,     0,     0,     0,
     1774       0,   340,   363,     0,     0,     0,     0,     0,   714,   211,
     1775       0,     0,     0,     0,     0,  1547,  1548,   680,     0,     0,
     1776       0,     0,     0,  1551,  1552,     0,     0,     0,     0,     0,
     1777       0,     0,     0,     0,     0,   413,     0,     0,     0,     0,
     1778       0,     0,   413,   706,     0,     0,     0,     0,     0,   709,
     1779     218,     0,     0,     0,   463,   466,     2,   206,     4,     5,
    25021780       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25031781      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2504        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2505      284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
    2506       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2507       25,     0,     0,    26,    27,    28,   509,   509,   286,    34,
    2508        0,    35,    31,    36,   287,     0,    38,    39,   288,     0,
    2509        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     1782       0,     0,    26,    27,    28,     0,     0,   714,     0,     0,
     1783     744,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     1784       0,     0,     0,     0,   211,   762,     0,     0,     0,     0,
     1785       0,     0,     0,     0,   413,     0,     0,     0,     0,    34,
     1786       0,    35,     0,    36,     0,     0,    38,    39,     0,     0,
     1787       0,     0,     0,     0,     0,     0,   368,   368,     0,     0,
     1788       0,     0,     0,   788,     0,   218,     0,     0,     0,     0,
     1789       0,     0,   798,     0,     0,     0,     0,     0,     0,   800,
     1790     320,     0,     0,     0,     0,   808,    -3,     0,   413,     0,
     1791     345,     0,     0,     0,   822,     0,   413,   580,     0,   413,
     1792     583,     0,   381,   381,     0,     0,     0,     0,     0,     0,
     1793     363,     0,  1011,     0,   612,     8,     9,    10,    11,    12,
    25101794       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2511       34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
    2512        0,   295,     0,   969,     0,     0,     0,     0,   760,     0,
    2513       45,    46,   297,   298,   299,   300,     2,   207,     4,     5,
    2514        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2515       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2516        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2517      284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
    2518       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2519       25,     0,     0,    26,    27,    28,     0,     0,   286,    34,
    2520        0,    35,    31,    36,   287,     0,    38,    39,   288,     0,
    2521        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     1795       0,     0,     0,   630,   862,     0,   340,     0,     0,     0,
     1796       0,     0,   282,   283,    31,   284,     0,     0,     0,     0,
    25221797       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2523       34,     0,     0,     0,     0,     0,     0,   208,    39,     0,
    2524        0,   295,     0,   343,     0,     0,     0,     0,     0,     0,
    2525      344,    46,   297,   298,   299,   300,     2,   207,     4,     5,
    2526        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2527       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2528        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2529      284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
    2530       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2531       25,     0,     0,     0,     0,     0,     0,     0,   286,    34,
    2532        0,    35,    31,    36,   287,     0,   208,    39,   288,     0,
    2533        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     1798       0,     0,     0,   413,     0,     0,     0,   413,     0,     0,
     1799     808,   285,    34,   320,     0,     0,   368,   286,   903,     0,
     1800       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     1801       0,   292,   293,     0,     0,     0,     0,   477,   363,     0,
     1802       0,     0,     0,     0,     0,     0,     0,     0,     0,   251,
     1803       0,     0,     0,     0,   294,     0,   378,     0,     0,   940,
     1804     941,     0,   343,    46,   296,   297,   298,   299,     0,     0,
     1805       0,     0,   523,     0,   523,     0,     0,     0,     0,     0,
     1806       0,     0,     0,     0,   413,     0,     0,   363,     0,     0,
     1807       0,     0,   978,     0,     0,     0,     0,   982,     0,     0,
     1808       0,     0,     0,     0,     0,     0,     0,     0,   523,     0,
     1809     523,   211,     0,     0,     0,     0,     0,     0,     0,     0,
     1810       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
     1811     340,   363,     0,     0,     0,     0,     0,   165,     0,     0,
    25341812       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2535       34,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2536        0,   295,     0,  1005,     0,     0,     0,     0,     0,     0,
    2537     1006,    46,   297,   298,   299,   300,     2,   207,     4,     5,
    2538        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2539       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2540        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2541      284,    31,   285,     0,     0,     0,     0,     0,     0,     0,
     1813       0,     0,     0,   381,     0,     0,     0,     0,     0,     0,
     1814       0,  1016,     0,     0,     0,     0,     0,     0,  1017,     0,
     1815       0,     0,     0,     0,     0,   413,   413,     0,     0,     0,
     1816       0,  1019,     0,  1020,     0,     0,     0,     0,     0,     0,
     1817       0,     0,     0,     0,   802,   363,     0,  1032,     0,     0,
     1818       0,     0,     0,  1036,     0,   612,     0,   612,   612,     0,
     1819       0,     0,     0,     0,   612,  1074,     0,     0,  1075,     0,
     1820       0,     0,     0,     0,   841,   363,     0,     0,     0,     0,
     1821     363,     0,     0,     0,     0,     0,     0,     0,     0,   363,
     1822     363,   363,     0,     0,     0,     0,     0,   708,     0,     0,
     1823       0,     0,     0,     0,     0,     0,     0,   363,     0,     0,
     1824       0,     0,   413,   883,     0,     0,   413,   886,     0,     0,
     1825       0,     0,     0,   888,     0,     0,     0,     0,     0,     0,
     1826       0,     0,     0,     0,     0,     0,   740,     0,     0,     0,
     1827       0,     0,   413,     0,     0,   589,     0,     0,     0,   757,
     1828       0,     0,     0,     0,   740,     0,     0,   740,     0,     0,
     1829       0,     0,     0,     0,     0,   363,   612,     0,     0,   766,
    25421830       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,     0,     0,     0,   286,    34,
    2544        0,    35,     0,    36,   287,     0,    38,    39,   288,     0,
    2545        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
     1831    1145,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1832       0,   787,     0,     0,     0,     0,     0,     0,     0,   340,
     1833     363,   796,     0,     0,   413,   413,     0,     0,   345,     0,
     1834       0,     0,     0,   757,     0,     0,     0,     0,     0,     0,
     1835       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     1836      18,    19,    20,    21,    22,    23,    24,    25,   525,     0,
     1837      26,    27,    28,     0,  1210,     0,     0,     0,   413,    31,
     1838       0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
     1839       0,     0,   861,   802,   363,     0,     0,   612,     0,   612,
     1840     381,     0,     0,     0,     0,     0,     0,    34,  1222,   612,
     1841       0,     0,    37,  1224,    38,    39,    40,     0,     0,     0,
     1842       0,  1228,     0,    41,    42,     0,     8,     9,    10,    11,
     1843      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     1844      22,    23,    24,    25,  -291,     0,     0,     0,     0,    43,
     1845       0,   157,     0,     0,  1254,    31,     0,    45,    46,     0,
     1846       0,     0,     0,     0,     0,     0,  1262,     0,     0,  1263,
     1847       0,  1264,     0,     0,     0,     0,     0,     0,     0,     0,
     1848       0,   802,     0,    34,     0,  1273,  1274,     0,   340,   363,
     1849     413,     0,   413,     0,  -291,     0,   413,     0,   757,     0,
     1850     962,     0,     0,     0,     0,     0,     0,  1287,     0,     0,
     1851     973,     0,     0,     0,     0,     0,   981,   612,   612,     0,
     1852       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     1853      18,    19,    20,    21,    22,    23,    24,    25,  1161,     0,
     1854       0,     8,     9,    10,    11,    12,     0,     0,     0,    31,
     1855       0,     0,   413,     0,  1326,     0,     0,     0,   999,  1000,
     1856       0,     0,   345,     0,     0,     0,     0,     0,   282,   283,
     1857      31,   284,     0,   413,  1142,     0,   345,    34,     0,     0,
     1858       0,     0,     0,     0,   363,     0,     0,     0,     0,     0,
     1859     413,  1154,     0,   612,   612,  1159,     0,   285,    34,     0,
     1860       0,     0,     0,   286,     0,   363,   363,   287,     0,     0,
     1861     288,   289,   290,   291,    41,    42,  1030,   292,   293,     0,
     1862     381,     0,     0,     0,     0,     0,     0,     0,     0,  1376,
     1863       0,  1377,     0,     0,     0,     0,     0,     0,     0,     0,
     1864     294,     0,   378,  1385,     0,  1386,     0,     0,  1162,    46,
     1865     296,   297,   298,   299,     0,     0,     0,   345,     0,     0,
     1866       0,     0,  1393,     0,     0,     0,     0,     0,   413,     0,
     1867     413,     0,     0,     0,     0,   413,     0,     0,  1411,  1413,
     1868       0,     0,     0,     0,   612,     0,     0,     0,     0,  1418,
     1869       0,     0,  1228,     0,     0,     0,   320,     0,     0,     0,
     1870       0,     0,     0,     0,     0,     0,     0,   802,   413,  1242,
     1871       0,     0,     0,  1440,     0,   282,   283,     0,   284,     0,
     1872       0,     0,  1447,     0,   381,  1449,     0,  1451,  1453,  1455,
     1873     973,   363,     0,     0,   740,     0,     0,     0,     0,     0,
     1874       0,     0,     0,     0,   285,     0,     0,     0,     0,     0,
     1875     286,     0,     0,     0,   287,  1149,     0,   288,   289,   290,
     1876     291,    41,    42,     0,   292,   293,  1164,  1485,     0,  1487,
     1877       0,  1228,     0,     0,     0,     0,     0,     0,     0,     0,
     1878       0,     0,     0,     0,     0,     0,  1498,   294,   381,   378,
     1879    1182,     0,   340,     0,   756,    45,    46,   296,   297,   298,
     1880     299,     0,     0,     0,     0,   973,   973,     0,     0,     0,
     1881     363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1882       0,     0,     0,     0,     0,     0,  1214,     0,     0,     0,
     1883       0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
     1884       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     1885      17,    18,    19,    20,    21,    22,    23,    24,    25,   363,
     1886     363,    26,    27,    28,    29,     0,     0,    30,     0,     0,
     1887      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1888       0,   973,     0,     0,     0,     0,     0,     0,     0,     0,
     1889       0,     0,     0,     0,     0,     0,     0,     0,    34,   861,
     1890      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
     1891       0,     0,     0,     0,  1265,  1266,     0,     1,     2,   206,
     1892       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     1893      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     1894      24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
     1895      30,   282,   283,    31,  1039,  1040,     0,  1041,     0,     0,
     1896    1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,
     1897       0,  1050,     0,     0,     0,  1051,  1052,     0,    33,   363,
     1898     285,    34,     0,    35,     0,    36,  1053,     0,    38,    39,
     1899     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     1900     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     1901       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1902       0,     0,     0,   294,     0,  1054,     0,     0,   171,     0,
     1903       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
     1904       0,  1055,     0,     0,     0,     0,  -126,     0,     0,     0,
     1905       0,     0,     0,     0,     0,  1370,     0,     0,   740,     0,
     1906       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
    25461907       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25471908       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2548        0,   295,     0,   969,     0,     0,     0,     0,     0,     0,
    2549      344,    46,   297,   298,   299,   300,     2,   207,     4,     5,
    2550        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2551       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2552        0,     0,    26,    27,    28,     0,     0,     0,     0,   283,
    2553      284,    31,   285,     0,     0,     0,     0,     0,     0,     0,
     1909     413,   413,     0,     0,     0,     0,     0,     0,     0,     0,
    25541910       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2555        0,     0,     0,     0,     0,     0,     0,     0,   286,    34,
    2556        0,    35,     0,    36,   287,     0,   208,    39,   288,     0,
    2557        0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
    2558        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2559        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2560        0,   295,     0,   379,     0,     0,     0,     0,     0,     0,
    2561       45,    46,   297,   298,   299,   300,     1,     2,     3,     4,
     1911       0,     0,     0,     0,     0,   413,     1,     2,   206,     4,
    25621912       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25631913      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    25641914      25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
    2565        0,     0,    31,    32,     0,     0,     0,     0,     0,     0,
     1915     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
     1916      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     1917      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
     1918      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
     1919       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     1920     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1921       0,    34,     0,     0,     0,     0,    37,     0,    38,    39,
     1922      40,     0,   294,     0,  1054,     0,     0,    41,    42,     0,
     1923      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
     1924       0,     0,     0,     0,     0,  -126,     0,     0,     0,     0,
     1925       0,     0,     0,    43,     0,    44,     0,     0,     0,     0,
     1926       0,    45,    46,     0,     0,     0,     0,     0,   320,     1,
     1927       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     1928      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     1929      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
     1930       0,     0,    30,   282,   283,    31,   284,     8,     9,    10,
     1931      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     1932      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     1933       0,     0,   285,    34,     0,    35,    31,    36,   286,     0,
     1934      38,    39,   287,     0,     0,   288,   289,   290,   291,    41,
     1935      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     1936       0,     0,     0,     0,    34,     0,     0,     0,     0,   110,
     1937       0,    38,    39,     0,     0,   294,     0,    44,     0,     0,
     1938      41,    42,     0,    45,    46,   296,   297,   298,   299,     2,
     1939     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     1940      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     1941      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     1942       0,     0,   282,   283,    31,   284,     0,     0,     0,     8,
     1943       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     1944      19,    20,    21,    22,    23,    24,    25,  -292,     0,     0,
     1945       0,   285,    34,     0,    35,     0,    36,   286,    31,    38,
     1946      39,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     1947       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     1948       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     1949       0,     0,     0,     0,   294,     0,   342,  -292,     0,     0,
     1950       0,   756,   343,    46,   296,   297,   298,   299,     2,   206,
     1951       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     1952      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     1953      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     1954       0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
     1955      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     1956      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     1957     285,    34,     0,    35,    31,    36,   286,     0,    38,    39,
     1958     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     1959     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     1960       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     1961      39,     0,     0,   294,     0,   961,     0,     0,     0,     0,
     1962     756,   343,    46,   296,   297,   298,   299,     2,   206,     4,
     1963       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     1964      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     1965      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     1966     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
     1967      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     1968      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
     1969      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
     1970       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     1971     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1972       0,    34,     0,     0,     0,     0,     0,     0,   207,    39,
     1973       0,     0,   294,     0,   961,     0,     0,     0,     0,   756,
     1974      45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
     1975       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     1976      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     1977       0,     0,    26,    27,    28,     0,     0,     0,     0,   282,
     1978     283,    31,   284,     0,     0,     0,     0,     0,     0,     0,
    25661979       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2567        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2568       34,     0,    35,     0,    36,    37,     0,    38,    39,    40,
    2569        0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     1980       0,     0,     0,     0,     0,     0,     0,     0,   285,    34,
     1981       0,    35,     0,    36,   286,     0,    38,    39,   287,     0,
     1982       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
    25701983       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25711984       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2572        0,     0,    43,     0,    44,     0,     0,     0,  -523,     0,
    2573        0,    45,    46,     1,     2,     3,     4,     5,     6,     7,
     1985       0,   294,     0,   342,     0,     0,     0,     0,     0,   343,
     1986      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
     1987       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     1988      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     1989       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
     1990      31,   284,     0,     0,     0,     0,     0,     0,     0,     0,
     1991       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1992       0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
     1993      35,     0,    36,   286,     0,   207,    39,   287,     0,     0,
     1994     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     1995       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1996       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1997     294,     0,   996,     0,     0,     0,     0,     0,   997,    46,
     1998     296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
    25741999       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    25752000      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2576       26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
    2577       32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2001      26,    27,    28,     0,     0,     0,     0,   282,   283,    31,
     2002     284,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25782003       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2579        0,     0,     0,     0,    33,     0,     0,    34,     0,    35,
    2580        0,    36,    37,     0,    38,    39,    40,     0,     0,     0,
    2581        0,     0,     0,    41,    42,     0,     0,     0,     0,     0,
     2004       0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
     2005       0,    36,   286,     0,    38,    39,   287,     0,     0,   288,
     2006     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
    25822007       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2583        0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
    2584        0,    44,     0,     0,     0,     0,     0,     0,    45,    46,
    2585        1,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2586       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2587       21,    22,    23,    24,    25,  -294,     0,    26,    27,    28,
    2588       29,     0,     0,    30,     0,     0,    31,     0,     0,     0,
     2008       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2009       0,   961,     0,     0,     0,     0,     0,   343,    46,   296,
     2010     297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
     2011       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2012      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2013      27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
    25892014       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25902015       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2591        0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
    2592        0,    38,    39,     0,     0,  -294,     2,   207,     4,     5,
     2016       0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
     2017      36,   286,     0,   207,    39,   287,     0,     0,   288,   289,
     2018     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
     2019       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2020       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
     2021     378,     0,     0,     0,     0,     0,    45,    46,   296,   297,
     2022     298,   299,  -514,     0,     0,     1,     2,     3,     4,     5,
    25932023       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25942024      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2595        0,     0,    26,    27,    28,     0,     0,     0,    44,     0,
    2596        0,    31,     0,     0,     0,    45,    46,     0,     0,     0,
     2025       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
     2026       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
    25972027       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2598        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2599        0,    35,     0,    36,    37,     0,   208,    39,    40,     0,
     2028       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
     2029       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
    26002030       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
    26012031       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26022032       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2603        0,    43,     0,   209,     0,     0,     0,     0,     0,     0,
    2604       45,    46,     2,   207,     4,     5,     6,     7,     8,     9,
     2033       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
     2034      46,     1,     2,     3,     4,     5,     6,     7,     8,     9,
     2035      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2036      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2037      28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
     2038       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2039       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2040       0,     0,    33,     0,     0,    34,     0,    35,     0,    36,
     2041      37,     0,    38,    39,    40,     0,     0,     0,     0,     0,
     2042       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
     2043       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2044       0,     0,     0,     0,     0,     0,     0,    43,     0,    44,
     2045       0,     0,     0,     0,     0,    45,    46,   205,     2,   206,
     2046       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2047      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2048      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2049       0,     0,     0,    31,     0,     8,     9,    10,    11,    12,
     2050      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2051      23,    24,    25,     0,     0,    26,    27,    28,   484,   485,
     2052     486,    34,     0,    35,    31,    36,    37,     0,   207,    39,
     2053      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
     2054       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2055       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
     2056      39,     0,     0,    43,     0,   208,     0,     0,     0,     0,
     2057       0,    45,    46,     1,     2,   206,     4,     5,     6,     7,
     2058       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2059      18,    19,    20,    21,    22,    23,    24,    25,  -291,     0,
     2060      26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
     2061       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2062       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2063       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2064       0,    36,     0,     0,    38,    39,     0,     0,  -291,     2,
     2065     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2066      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2067      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2068       0,    44,     0,     0,    31,     0,     0,    45,    46,     0,
     2069       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2070       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2071       0,     0,    34,     0,    35,     0,    36,    37,     0,   207,
     2072      39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
     2073       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2074       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2075       0,     0,     0,     0,    43,     0,   208,     0,     0,     0,
     2076       0,     0,    45,    46,     2,   206,     4,     5,     6,     7,
     2077       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2078      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2079      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2080       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2081      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2082      24,    25,     0,     0,    26,    27,    28,    34,     0,    35,
     2083       0,    36,     0,    31,    38,    39,     0,     2,   206,     4,
     2084       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2085      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2086      25,    34,     0,    26,    27,    28,     0,     0,    38,    39,
     2087    -398,   676,    31,     0,     0,     0,     0,    45,    46,     0,
     2088       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2089       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2090      34,     0,    35,   633,    36,   337,     0,    38,    39,     0,
     2091       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
     2092       0,     0,     0,     0,     0,     0,     0,     0,     0,  1349,
     2093       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2094       0,     0,     0,     0,   676,     0,     0,     0,     0,     0,
     2095      45,    46,     2,   206,     4,     5,     6,     7,     8,     9,
    26052096      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    26062097      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     
    26092100      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    26102101       0,    26,    27,    28,     0,    34,     0,    35,     0,    36,
    2611       31,     0,    38,    39,     0,     0,     0,     0,     0,     0,
     2102      31,   683,    38,    39,     0,     0,     0,     0,     0,     0,
    26122103       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2613        0,     0,     0,     0,  1367,     0,     0,     0,    34,     0,
    2614        0,     0,     0,    37,     0,   336,   337,    40,     0,   678,
    2615        0,     0,     0,     0,    41,    42,    45,    46,     2,   207,
    2616        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2104       0,     0,     0,     0,  1351,     0,     0,     0,    34,     0,
     2105       0,     0,     0,     0,     0,    38,    39,     0,     0,   676,
     2106       0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
     2107       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2108      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2109      25,     0,   684,    26,    27,    28,   685,     0,    45,    46,
     2110       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2111       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2112       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2113      34,     0,    35,     0,    36,     0,     0,   207,    39,     0,
     2114       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
     2115      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2116      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2117       0,     0,     0,     0,   270,    31,     0,     0,     0,     0,
     2118      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2119       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2120       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
     2121      38,    39,     0,     2,   206,     4,     5,     6,     7,     8,
     2122       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2123      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2124      27,    28,     0,     0,     0,     0,     0,   676,    31,     0,
     2125       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
     2126       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2127       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2128      36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
     2129       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2130      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2131       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2132     591,    31,     0,     0,     0,     0,    45,    46,     0,     0,
     2133       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2134       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2135       0,    35,     0,    36,     0,     0,   207,    39,     8,     9,
     2136      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2137      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2138      28,     0,     0,     0,     0,   282,   283,    31,   284,     0,
     2139       0,     0,     0,   208,     0,     0,     0,     0,     0,    45,
     2140      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2141       0,     0,     0,     0,   285,    34,     0,     0,     0,     0,
     2142     286,     0,    38,    39,   287,     0,     0,   288,   289,   290,
     2143     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
     2144       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2145       0,     0,     0,     0,     0,     0,     0,   294,     0,   516,
     2146       0,     0,   171,     0,     0,    45,    46,   296,   297,   298,
     2147     299,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2148      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2149       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
     2150      31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
     2151      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2152       0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
     2153       0,    31,     0,   286,     0,    38,    39,   287,     0,     0,
     2154     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
     2155       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
     2156       0,     0,     0,     0,    37,     0,   335,   336,    40,     0,
     2157     294,   -35,   295,     0,     0,    41,    42,     0,    45,    46,
     2158     296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
    26172159      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2618       24,    25,   338,     0,    26,    27,    28,     0,     0,    45,
    2619       46,     0,     0,    31,     0,     0,     0,     8,     9,    10,
     2160      24,    25,     0,   337,    26,    27,    28,     0,     0,    45,
     2161      46,   282,   283,    31,   284,     8,     9,    10,    11,    12,
     2162      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2163      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2164     285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
     2165     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2166     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2167       0,     0,    34,     0,     0,     0,     0,   110,     0,    38,
     2168      39,     0,     0,   294,     0,   295,     0,     0,    41,    42,
     2169       0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
     2170      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2171      21,    22,    23,    24,    25,     0,    44,    26,    27,    28,
     2172       0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
     2173      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2174      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
     2175      28,     0,     0,   285,    34,     0,     0,    31,   683,   286,
     2176       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
     2177      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2178       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
     2179       0,     0,    38,    39,     0,     0,   294,     0,   157,     0,
     2180       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
     2181       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2182      18,    19,    20,    21,    22,    23,    24,    25,     0,   684,
     2183      26,    27,    28,  1090,     0,    45,    46,   282,   283,    31,
     2184     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2185      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2186       0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
     2187      31,   683,   286,     0,    38,    39,   287,     0,     0,   288,
     2188     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2189       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2190       0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
     2191       0,   591,     0,     0,     0,     0,     0,    45,    46,   296,
     2192     297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
     2193      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2194      25,     0,   684,    26,    27,    28,  1219,     0,    45,    46,
     2195     282,   283,    31,   284,     0,     8,     9,    10,    11,    12,
     2196      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2197      23,    24,    25,  -291,     0,    26,    27,    28,     0,   285,
     2198      34,     0,     0,     0,    31,   286,     0,    38,    39,   287,
     2199       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2200     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2201       0,     0,    34,     0,     0,     0,     0,    37,     0,   335,
     2202     336,    40,   294,  -291,   378,     0,     0,     0,    41,    42,
     2203      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
     2204       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2205       0,     0,     0,     0,   633,     0,   337,     0,     0,     0,
     2206       0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
     2207      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2208      24,    25,  -291,     0,    26,    27,    28,     0,     0,     0,
     2209       0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
     2210      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2211      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2212       0,    34,     0,    31,     0,     0,    37,     0,   335,   336,
     2213      40,     0,  -291,     0,     0,     0,     0,    41,    42,     0,
     2214       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2215       0,    34,     0,     0,     0,     0,    37,     0,   207,    39,
     2216      40,     0,     0,     0,     0,   337,     0,    41,    42,     0,
     2217       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
     2218       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2219       0,     0,     0,    43,     0,   270,     0,     0,     0,     0,
     2220       0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
     2221      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2222      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2223       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2224      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2225      25,  -291,     0,    26,    27,    28,     0,     0,     0,     0,
     2226      34,     0,    31,     0,     0,    37,     0,   335,   336,    40,
     2227       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2228       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2229      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2230       0,  -291,   633,     0,   337,     0,     0,     0,     0,     0,
     2231      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
     2232       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2233       0,     0,   633,     0,   337,     0,     0,     0,     0,     0,
     2234      45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
     2235      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2236    -291,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2237       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
     2238      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2239       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
     2240       0,    31,     0,     0,     0,     0,    38,    39,     0,     0,
     2241    -291,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2242      17,    18,    19,    20,    21,    22,    23,    24,    25,    34,
     2243       0,    26,    27,    28,     0,     0,    38,    39,     0,     0,
     2244      31,     0,     0,   337,     0,     0,     0,     0,     0,    45,
     2245      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2246       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2247       0,     0,     0,   257,     0,    38,    39,     0,     0,    45,
     2248      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2249      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2250       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2251      31,     0,   157,     0,     0,     0,     0,     0,    45,    46,
     2252       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2253      18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
     2254      26,    27,    28,     0,     0,   207,    39,     0,     0,    31,
     2255       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2256      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2257      26,    27,    28,     0,     0,     0,     0,    34,     0,    31,
     2258       0,     0,   270,     0,    38,    39,     0,     0,    45,    46,
     2259       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2260       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2261       0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
     2262       0,   337,     0,     0,     0,     0,     0,    45,    46,     0,
     2263       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2264      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2265       0,   684,    26,    27,    28,     0,     0,    45,    46,     0,
     2266       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
     2267      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2268       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
     2269       0,    31,     0,     0,     0,     0,    38,    39,     0,     0,
     2270       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2271      18,    19,    20,    21,    22,    23,    24,    25,     0,    34,
     2272      26,    27,    28,     0,     0,     0,    38,    39,     0,    31,
     2273       0,     0,     0,   591,     0,     0,     0,     0,     0,    45,
     2274      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2275       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
     2276       0,     0,     0,    44,   207,    39,     0,     0,     0,    45,
     2277      46,     2,   206,     4,     5,     6,     7,     8,     9,    10,
    26202278      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    26212279      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2622        0,    34,     0,    35,     0,    36,    31,     0,    38,    39,
     2280       0,     0,     0,     0,     0,     0,    31,    45,    46,     0,
    26232281       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26242282       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2625     1369,     0,     0,     0,    34,     0,     0,     0,     0,   111,
    2626        0,    38,    39,     0,     0,   678,     0,     0,     0,     0,
    2627       41,    42,    45,    46,     2,   207,     4,     5,     6,     7,
     2283       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
     2284       0,    38,    39,   282,   283,     0,   284,  1040,     0,  1041,
     2285       0,     0,  1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,
     2286       0,     0,  1523,  1050,     0,     0,     0,  1051,  1052,     0,
     2287      33,     0,   285,     0,     0,     0,     0,  -411,  1053,     0,
     2288       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
     2289      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     2290       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2291       0,     0,     0,     0,     0,   294,     0,   378,     0,     0,
     2292     171,     0,     0,    45,    46,   296,   297,   298,   299,     0,
     2293       0,   282,   283,  1055,   284,  1040,     0,  1041,  -126,     0,
     2294    1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,
     2295       0,  1050,     0,     0,     0,  1051,  1052,     0,    33,     0,
     2296     285,     0,     0,     0,     0,     0,  1053,     0,     0,     0,
     2297     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
     2298     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
     2299       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2300       0,     0,     0,   294,     0,   378,     0,     0,   171,     0,
     2301       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
     2302       0,  1055,     0,     0,     0,     0,  -126,     2,   206,     4,
     2303       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2304      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2305      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2306       0,     0,    31,     0,   282,   283,     0,   284,  1040,     0,
     2307    1041,  1397,  1398,  1042,  1043,  1044,  1045,  1046,  1047,  1048,
     2308    1049,     0,     0,  1523,  1050,     0,     0,     0,  1051,  1052,
     2309      34,    33,    35,   285,    36,     0,     0,    38,    39,  1053,
     2310       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2311      41,    42,     0,   292,   293,     0,     0,     0,     0,  1310,
     2312       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2313       0,     0,     0,     0,     0,     0,   294,     0,   378,     0,
     2314       0,   171,     0,     0,    45,    46,   296,   297,   298,   299,
     2315       0,     0,   282,   283,  1055,   284,  1040,     0,  1041,  1397,
     2316    1398,  1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,
     2317       0,     0,  1050,     0,     0,     0,  1051,  1052,     0,    33,
     2318       0,   285,     0,     0,     0,     0,     0,  1053,     0,     0,
     2319       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
     2320       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     2321       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2322       0,     0,     0,     0,   294,     0,   378,     0,     0,   171,
     2323       0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
     2324     282,   283,  1055,   284,  1040,     0,  1041,     0,     0,  1042,
     2325    1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,     0,
     2326    1050,     0,     0,     0,  1051,  1052,     0,    33,     0,   285,
     2327       0,     0,     0,     0,     0,  1053,     0,     0,     0,   287,
     2328       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2329     293,     0,     0,     0,     0,     0,     0,   282,   283,     0,
     2330     284,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2331       0,     0,   294,     0,   378,     0,     0,   171,     0,     0,
     2332      45,    46,   296,   297,   298,   299,   285,     0,     0,     0,
     2333    1055,     0,   286,     0,     0,     0,   287,     0,     0,   288,
     2334     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
     2335       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
     2336       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
     2337       0,   378,     0,     0,   970,     0,     0,    45,    46,   296,
     2338     297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
     2339       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
     2340      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
     2341       0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
     2342       0,     0,     0,     0,     0,     0,   294,     0,   378,     0,
     2343     282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
     2344     285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
     2345     287,     0,     0,   288,   289,   290,   291,    41,    42,   285,
     2346     292,   293,     0,     0,     0,   286,     0,     0,     0,   287,
     2347       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
     2348     293,     0,     0,   294,     0,   378,     0,   282,   283,     0,
     2349     284,   707,    46,   296,   297,   298,   299,     0,     0,     0,
     2350       0,     0,   294,     0,   378,     0,   282,   283,     0,   284,
     2351     343,    46,   296,   297,   298,   299,   285,     0,     0,     0,
     2352       0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
     2353     289,   290,   291,    41,    42,   285,   292,   293,     0,     0,
     2354       0,   286,     0,     0,     0,   287,     0,     0,   288,   289,
     2355     290,   291,    41,    42,     0,   292,   293,     0,     0,   294,
     2356       0,     0,     0,   282,   283,     0,   284,    45,    46,   296,
     2357     297,   298,   299,     0,     0,     0,     0,     0,   510,     0,
     2358       0,     0,     0,     0,     0,     0,    45,    46,   296,   297,
     2359     298,   299,   285,     0,     0,     0,     0,     0,   286,     0,
     2360       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
     2361      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
     2362       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2363       0,     0,     0,     0,     0,   513,     0,     0,     0,     0,
     2364       0,     0,     0,    45,    46,   296,   297,   298,   299,     2,
     2365     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2366      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2367      23,    24,    25,     0,     0,     0,     0,     0,     0,     0,
     2368       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
     2369       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2370       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2371       0,     0,    34,     0,    35,     0,    36,    37,     0,   174,
     2372     175,    40,     0,     0,     0,     0,     0,     0,    41,    42,
     2373     205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
     2374      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2375      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2376       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
     2377       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2378       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2379       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
     2380       0,   207,    39,   466,     2,   206,     4,     5,     6,     7,
    26282381       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2629       18,    19,    20,    21,    22,    23,    24,    25,    44,     0,
    2630       26,    27,    28,     0,     0,    45,    46,     0,     0,    31,
     2382      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2383      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
    26312384       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26322385       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    26332386       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
    2634        0,    36,     0,     0,   208,    39,     0,     2,   207,     4,
    2635        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2636       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2637       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2638        0,   271,    31,     0,     0,     0,     0,     0,    45,    46,
    2639        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2640        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2641       34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
    2642        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2643       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2644       22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
    2645        0,     0,     0,     0,   678,    31,     0,     0,     0,     0,
    2646        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
    2647        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2648        0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
    2649       38,    39,     0,     2,   207,     4,     5,     6,     7,     8,
    2650        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2651       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2652       27,    28,     0,     0,     0,     0,     0,   592,    31,     0,
    2653        0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
    2654        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2655        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2656       36,     0,     0,   208,    39,     8,     9,    10,    11,    12,
    2657       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2658       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2659        0,     0,   283,   284,    31,   285,     0,     0,     0,     0,
    2660      209,     0,     0,     0,     0,     0,     0,    45,    46,     0,
    2661        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2662        0,   286,    34,     0,     0,     0,     0,   287,     0,    38,
    2663       39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2664        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2665        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2666        0,     0,     0,     0,   295,     0,   517,     0,     0,   172,
    2667        0,     0,     0,    45,    46,   297,   298,   299,   300,     8,
    2668        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2669       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2670       27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
    2671        0,     0,     0,     0,     0,     0,     0,     8,     9,    10,
    2672       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2673       21,    22,    23,    24,    25,   286,    34,    26,    27,    28,
    2674        0,   640,     0,    38,    39,   288,    31,     0,   289,   290,
    2675      291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
    2676        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2677        0,     0,     0,     0,    34,     0,     0,     0,   295,   -35,
    2678      741,    38,    39,     0,     0,     0,     0,    45,    46,   297,
    2679      298,   299,   300,     8,     9,    10,    11,    12,    13,    14,
    2680       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2681       25,     0,     0,    26,    27,    28,   634,     0,   338,     0,
    2682      283,   284,    31,   285,     0,    45,    46,     0,     0,     0,
    2683        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2684       17,    18,    19,    20,    21,    22,    23,    24,    25,   286,
    2685       34,    26,    27,    28,     0,   287,     0,    38,    39,   288,
    2686       31,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2687      294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2688        0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
    2689        0,     0,   295,     0,   296,    38,    39,     0,     0,     0,
    2690        0,    45,    46,   297,   298,   299,   300,     8,     9,    10,
    2691       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2692       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2693        0,     0,   258,     0,   283,   284,    31,   285,     0,    45,
    2694       46,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2695       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2696       23,    24,    25,   286,    34,    26,    27,    28,     0,   287,
    2697        0,    38,    39,   288,    31,     0,   289,   290,   291,   292,
    2698       41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
    2699        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2700        0,     0,    34,     0,     0,     0,   295,     0,   158,    38,
    2701       39,     0,     0,     0,     0,    45,    46,   297,   298,   299,
    2702      300,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2703       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2704        0,    26,    27,    28,     0,     0,   158,     0,   283,   284,
    2705       31,   285,     0,    45,    46,     0,     0,     0,     0,     8,
    2706        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2707       19,    20,    21,    22,    23,    24,    25,   286,    34,    26,
    2708       27,    28,     0,   287,     0,    38,    39,   288,    31,     0,
    2709      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2710        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2711        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2712      295,     0,   592,   208,    39,     0,     0,     0,     0,    45,
    2713       46,   297,   298,   299,   300,     8,     9,    10,    11,    12,
    2714       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2715       23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
    2716      271,     0,   283,   284,    31,   285,     0,    45,    46,     0,
    2717        0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
    2718       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2719       25,   286,    34,    26,    27,    28,     0,   287,     0,    38,
    2720       39,   288,    31,     0,   289,   290,   291,   292,    41,    42,
    2721        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2722        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2723       34,     0,     0,     0,   295,     0,   379,    38,    39,     0,
    2724        0,     0,     0,    45,    46,   297,   298,   299,   300,   467,
    2725        2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
    2726       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2727       22,    23,    24,    25,   338,     0,    26,    27,    28,     0,
    2728        0,    45,    46,     0,     0,    31,     0,     0,     0,     8,
    2729        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2730       19,    20,    21,    22,    23,    24,    25,  -294,     0,    26,
    2731       27,    28,     0,    34,     0,    35,     0,    36,    31,     0,
    2732       38,    39,     0,     0,     0,     0,     0,     8,     9,    10,
    2733       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2734       21,    22,    23,    24,    25,  -294,    34,    26,    27,    28,
    2735        0,    37,     0,   336,   337,    40,    31,  -294,     0,     0,
    2736       -3,     0,    41,    42,     0,     8,     9,    10,    11,    12,
    2737       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2738       23,    24,    25,     0,    34,    26,    27,    28,   634,    37,
    2739      338,   336,   337,    40,    31,  -294,     0,    45,    46,     0,
    2740       41,    42,     0,     8,     9,    10,    11,    12,    13,    14,
    2741       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2742       25,     0,    34,    26,    27,    28,     0,    37,   338,    38,
    2743       39,    40,    31,     0,     0,    45,    46,     0,    41,    42,
    2744        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2745       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2746       34,    26,    27,    28,    43,    37,    44,   208,    39,    40,
    2747       31,     0,     0,    45,    46,     0,    41,    42,     0,     8,
    2748        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2749       19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
    2750       27,    28,    43,    37,   271,   336,   337,    40,    31,   685,
    2751        0,    45,    46,     0,    41,    42,     0,     8,     9,    10,
    2752       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2753       21,    22,    23,    24,    25,  -294,    34,    26,    27,    28,
    2754      634,     0,   338,    38,    39,     0,    31,     0,     0,    45,
    2755       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2756        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2757        0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
    2758      686,    38,    39,     0,   687,  -294,     0,    45,    46,     0,
    2759        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2760       18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
    2761       26,    27,    28,     0,     0,     0,     0,     0,   338,    31,
    2762      685,     0,     0,     0,     0,    45,    46,     0,     8,     9,
    2763       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2764       20,    21,    22,    23,    24,    25,     0,    34,    26,    27,
    2765       28,     0,     0,     0,    38,    39,     0,    31,   685,     8,
    2766        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2767       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2768       27,    28,     0,     0,     0,    34,     0,     0,    31,     0,
    2769        0,   686,    38,    39,     0,  1099,     0,     0,    45,    46,
    2770        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2771        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2772        0,     0,     0,    38,    39,     0,     0,     0,     0,   686,
    2773        0,     0,     0,  1231,     0,     0,    45,    46,     0,     0,
    2774        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2775       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2776      686,    26,    27,    28,     0,     0,     0,    45,    46,     0,
    2777       31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2778       17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
    2779        0,    26,    27,    28,     0,     0,     0,     0,    34,     0,
    2780       31,     0,     0,     0,     0,    38,    39,     0,     0,     8,
    2781        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2782       19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
    2783       27,    28,   485,   486,   487,    38,    39,     0,    31,     0,
    2784        0,     0,   592,     0,     0,     0,     0,     0,     0,    45,
    2785       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2786        0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
    2787        0,     0,    44,    38,    39,     0,     0,     0,     0,    45,
    2788       46,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2789       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2790       21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
    2791        0,     0,     0,     0,     0,     0,    31,     0,   283,   284,
    2792        0,   285,  1049,     0,  1050,     0,     0,  1051,  1052,  1053,
    2793     1054,  1055,  1056,  1057,  1058,     0,     0,  1547,  1059,     0,
    2794        0,     0,  1060,  1061,    34,    33,    35,   286,    36,     0,
    2795        0,    38,    39,  1062,     0,     0,     0,   288,     0,     0,
    2796      289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
    2797        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2798        0,     0,     0,     0,     0,     0,     0,  -415,     0,     0,
    2799      295,     0,   379,     0,     0,   172,     0,     0,     0,    45,
    2800       46,   297,   298,   299,   300,     0,     0,     0,     0,  1064,
    2801        0,   283,   284,  -129,   285,  1049,     0,  1050,     0,     0,
    2802     1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,     0,     0,
    2803        0,  1059,     0,     0,     0,  1060,  1061,     0,    33,     0,
    2804      286,     0,     0,     0,     0,     0,  1062,     0,     0,     0,
    2805      288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
    2806      293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
    2807        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2808        0,     0,     0,   295,     0,   379,     0,     0,   172,     0,
    2809        0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
    2810        0,     0,  1064,     0,     0,     0,  -129,     2,   207,     4,
    2811        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2812       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2813       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2814        0,     0,    31,     0,   283,   284,     0,   285,  1049,     0,
    2815     1050,  1417,  1418,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2816     1058,     0,     0,  1547,  1059,     0,     0,     0,  1060,  1061,
    2817       34,    33,    35,   286,    36,     0,     0,    38,    39,  1062,
    2818        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2819       41,    42,     0,   293,   294,     0,     0,     0,     0,  1325,
    2820        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2821        0,     0,     0,     0,     0,     0,   295,     0,   379,     0,
    2822        0,   172,     0,     0,     0,    45,    46,   297,   298,   299,
    2823      300,     0,     0,   283,   284,  1064,   285,  1049,     0,  1050,
    2824     1417,  1418,  1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,
    2825        0,     0,     0,  1059,     0,     0,     0,  1060,  1061,     0,
    2826       33,     0,   286,     0,     0,     0,     0,     0,  1062,     0,
    2827        0,     0,   288,     0,     0,   289,   290,   291,   292,    41,
    2828       42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
    2829        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2830        0,     0,     0,     0,     0,   295,     0,   379,     0,     0,
    2831      172,     0,     0,     0,    45,    46,   297,   298,   299,   300,
    2832        0,     0,   283,   284,  1064,   285,  1049,     0,  1050,     0,
    2833        0,  1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,     0,
    2834        0,     0,  1059,     0,     0,     0,  1060,  1061,     0,    33,
    2835        0,   286,     0,     0,     0,     0,     0,  1062,     0,     0,
    2836        0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
    2837        0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
    2838      283,   284,     0,   285,     0,     0,     0,     0,     0,     0,
    2839        0,     0,     0,     0,   295,     0,   379,     0,     0,   172,
    2840        0,     0,     0,    45,    46,   297,   298,   299,   300,   286,
    2841        0,     0,     0,  1064,     0,   287,     0,     0,     0,   288,
    2842        0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
    2843      294,     0,     0,     0,     0,     0,     0,     0,   283,   284,
    2844        0,   285,     0,     0,     0,     0,     0,     0,     0,     0,
    2845        0,     0,   295,     0,   379,     0,     0,   283,   284,     0,
    2846      285,   344,    46,   297,   298,   299,   300,   286,     0,     0,
    2847        0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
    2848      289,   290,   291,   292,    41,    42,   286,   293,   294,     0,
    2849        0,     0,   287,     0,     0,     0,   288,     0,     0,   289,
    2850      290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
    2851      506,     0,     0,     0,     0,   283,   284,     0,   285,    45,
    2852       46,   297,   298,   299,   300,     0,     0,     0,     0,   295,
    2853        0,     0,     0,     0,   283,   284,     0,   285,    45,    46,
    2854      297,   298,   299,   300,   286,     0,     0,     0,     0,     0,
    2855      287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
    2856      292,    41,    42,   286,   293,   294,     0,     0,     0,   287,
    2857        0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
    2858       41,    42,     0,   293,   294,     0,     0,   511,     0,     0,
    2859        0,     0,     0,     0,     0,     0,    45,    46,   297,   298,
    2860      299,   300,     0,     0,     0,     0,   514,     0,     0,     0,
    2861        0,     0,     0,     0,     0,    45,    46,   297,   298,   299,
    2862      300,     2,   207,     4,     5,     6,     7,     8,     9,    10,
    2863       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2864       21,    22,    23,    24,    25,     0,     0,     0,     0,     0,
    2865        0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
    2866        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2867        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2868        0,     0,     0,     0,    34,     0,    35,     0,    36,    37,
    2869        0,   175,   176,    40,     0,     0,     0,     0,     0,     0,
    2870       41,    42,   206,     2,   207,     4,     5,     6,     7,     8,
    2871        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2872       19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
    2873       27,    28,     0,     0,     0,     0,     0,     0,    31,     0,
    2874        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2875        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2876        0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
    2877       36,     0,     0,   208,    39,   467,     2,   207,     4,     5,
     2387       0,    36,     0,     0,    38,    39,     2,   206,     4,     5,
    28782388       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    28792389      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     
    28822392       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28832393       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
    2884        0,    35,     0,    36,     0,     0,    38,    39,     2,   207,
    2885        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2886       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2887       24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
    2888        0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
    2889        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2890        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2891        0,    34,     0,    35,     0,    36,     0,     0,   208,    39
     2394       0,    35,     0,    36,     0,     0,   207,    39
    28922395};
    2893 
    2894 #define yypact_value_is_default(yystate) \
    2895   ((yystate) == (-1315))
    2896 
    2897 #define yytable_value_is_error(yytable_value) \
    2898   YYID (0)
    28992396
    29002397static const yytype_int16 yycheck[] =
    29012398{
    2902        0,     1,   240,   186,   205,     0,   734,     0,    43,    43,
    2903       43,   534,   752,   186,     1,   752,   752,   187,   106,   186,
    2904      117,   280,   169,   170,   513,   364,   349,   186,   220,   368,
    2905      186,   349,    32,   186,   620,   186,   991,    32,  1029,    32,
    2906      521,   345,   602,    43,   187,   879,   984,   759,   647,    49,
    2907      492,   418,     0,     0,   496,   879,    49,   600,   188,   571,
    2908      602,    43,   600,    63,   600,   600,    66,    32,   156,    69,
    2909       63,   438,   600,    66,   600,   282,    69,   693,    49,   446,
    2910      600,    72,    69,   266,    32,    32,  1041,   696,    39,  1335,
    2911      634,   635,   636,   266,   426,   427,    57,   267,    43,   266,
    2912     1028,  1029,     0,  1417,    43,   202,   106,   266,  1048,   653,
    2913      266,  1060,  1061,   266,   114,   266,    39,   117,   118,   603,
    2914       72,   635,   636,   482,   267,   609,    39,    51,    95,    44,
    2915       45,    85,   262,   263,    32,   229,    39,    96,    64,   653,
    2916       28,   132,    39,   114,    63,    72,   107,   147,   148,   110,
    2917      257,   186,   186,   186,   248,   148,   156,   157,   109,   113,
    2918      111,   161,   494,   130,   123,   488,   118,   711,   161,   110,
    2919      910,    82,    39,   910,   910,   116,   147,  1491,   482,    44,
    2920       45,   513,    82,   109,   719,   109,   186,   187,   111,  1138,
    2921       78,   719,  1438,   719,   187,   156,   109,   711,   111,   490,
    2922      115,    30,   202,    82,   186,   132,   109,   688,   111,    72,
    2923      210,   111,   109,   132,   111,  1123,    82,   210,   410,  1127,
    2924       83,    84,   222,    72,  1048,    74,    75,   107,    82,   222,
    2925       11,   266,   266,   266,    83,    84,   406,    82,   117,   210,
    2926      240,   186,   109,   109,   111,  1236,   578,   186,   111,   114,
    2927      589,   131,   252,   341,    83,    84,   110,   252,   219,   252,
    2928      260,   805,   111,   406,   109,   265,   266,   267,   828,   240,
    2929        1,  1473,   272,   816,   267,   634,   635,   636,   816,  1421,
    2930      816,   816,   994,   371,   602,   797,   828,   252,   816,   905,
    2931      816,   805,   631,    96,   653,   295,   816,   504,  1289,   396,
    2932      109,   272,   911,   109,   252,   252,  1508,   307,  1510,   257,
    2933      480,   418,   273,   604,  1252,   682,   620,   608,    49,   280,
    2934      123,   625,   131,   323,  1524,    44,    45,   424,   328,  1057,
    2935      929,   438,   116,   430,   818,   328,   307,   480,   629,   446,
    2936     1494,   341,   633,   109,  1544,   345,  1500,   956,   132,   349,
    2937      350,  1551,   711,    39,   252,    90,    91,   285,    72,   257,
    2938     1288,  1289,  1302,  1524,   364,    82,   109,  1521,   368,    83,
    2939       84,   371,  1526,    72,   345,   106,   112,  1519,   938,   307,
    2940      308,    57,  1524,   114,    83,    84,   114,   348,  1222,   748,
    2941     1551,   126,   127,   110,   937,   114,   396,   111,  1222,   937,
    2942      117,   937,  1544,   110,   365,   110,   406,   110,   369,  1551,
    2943      117,   116,   111,   406,   117,   244,   147,   345,   116,   115,
    2944      116,  1007,  1413,     3,   424,   156,   426,   427,   131,   116,
    2945      430,   107,   116,   433,   110,   131,   116,   525,    10,    11,
    2946       12,    13,    14,     3,   748,   132,   805,    72,   132,     0,
    2947     1405,  1406,   132,   381,   454,   426,   427,   118,    83,    84,
    2948      667,   116,   110,   124,   125,     0,     1,    39,   807,   117,
    2949      418,   432,   472,   812,   733,   206,   116,   132,  1302,   210,
    2950      480,    32,   482,   116,   484,  1413,   111,   480,   488,   484,
    2951      438,   484,   132,   974,   494,    67,   116,    32,   446,   132,
    2952      989,   648,   116,   116,   946,   828,   506,     0,   508,   240,
    2953      828,   511,   132,   513,   514,    66,  1125,     0,   688,   132,
    2954      418,   521,  1462,   494,   112,   525,   526,   657,   116,  1469,
    2955      737,    66,  1016,  1017,    69,   109,   484,   484,  1137,   116,
    2956      438,   272,   513,   219,   275,   688,   131,  1107,   446,   110,
    2957      909,   380,   116,   116,    72,   132,    74,    75,   655,   850,
    2958      110,    72,   901,   109,   295,    83,    84,   116,   132,   132,
    2959      570,   571,    83,    84,  1302,   682,   307,   109,   578,  1188,
    2960     1189,   112,  1522,   132,   482,   116,   484,   116,   112,   589,
    2961      590,   109,   116,    80,   594,   590,   114,   273,   109,   109,
    2962      600,   708,   602,   132,   280,   909,   109,   578,   111,   109,
    2963      341,    80,  1093,   109,   345,   118,   119,  1098,   109,   942,
    2964      620,   549,   550,   551,   111,   625,   113,   627,   589,   110,
    2965      117,   631,   110,   364,   634,   635,   636,   368,  1462,   112,
    2966      371,   112,   111,   116,   113,  1469,    72,   110,   117,   620,
    2967      110,  1379,   943,   653,   625,   655,   116,    83,    84,   747,
    2968      621,   110,   491,    72,   493,    74,    75,   116,   129,  1028,
    2969      131,   222,   348,   865,    83,    84,   637,   110,    66,     4,
    2970        5,     6,     7,     8,     9,   685,   110,   222,   688,   365,
    2971      109,   652,   116,   369,   886,   426,   427,   109,  1522,   111,
    2972      109,   252,   112,  1007,   109,   114,   116,     0,     1,   110,
    2973      948,   711,   712,   713,   109,   116,   110,   252,   115,   719,
    2974      720,   132,   116,   454,   871,   295,   110,   910,    64,   110,
    2975      118,   109,   116,   111,   682,   116,   467,   910,  1466,    32,
    2976     1468,   109,   912,   910,    69,   109,    71,   747,   748,   110,
    2977      110,   910,   752,   753,   910,   116,   116,   910,   112,   910,
    2978      708,   492,   110,   494,   110,   496,   112,   132,   116,   912,
    2979      116,   114,   733,   161,   114,   506,    69,   508,   109,   110,
    2980      511,   110,   513,   514,   682,   131,   132,   116,  1528,   109,
    2981     1399,  1528,  1528,  1132,   525,  1523,  1319,   797,  1157,   350,
    2982      110,   556,   557,   558,   559,   805,   116,   807,  1417,   809,
    2983      708,   132,   812,   813,   643,   109,   816,   111,   813,  1020,
    2984      908,   110,   114,   110,   118,   119,    70,   116,   828,   116,
    2985       74,   759,   110,    77,   222,    79,   132,    72,   116,    74,
    2986       75,    76,    86,    72,    82,    74,    75,   578,    83,    84,
    2987      748,   120,   121,  1157,    83,    84,   426,   427,   589,    72,
    2988      109,    74,    75,   692,    72,   694,    74,    75,    76,   698,
    2989       83,    84,   260,   109,   109,    83,    84,   265,   109,   879,
    2990      111,  1490,  1491,    82,   879,   114,   110,   118,   119,   620,
    2991      112,   109,   116,   111,   625,    72,  1043,    74,    75,    76,
    2992      631,   901,   109,   110,   111,    49,    83,    84,   908,   909,
    2993      910,   109,   912,   111,   119,    72,  1123,    74,    75,    76,
    2994     1127,  1128,   473,  1093,   924,   128,    83,    84,  1098,  1288,
    2995       94,   879,  1236,   484,    88,    89,   506,   937,   938,   129,
    2996      901,   511,   942,   131,   514,   621,   111,   947,   948,   484,
    2997     1093,   109,   109,   111,   685,  1098,   109,     0,     1,   252,
    2998      947,   637,   350,   506,   964,   508,   112,   110,   511,   213,
    2999      114,   514,   109,   116,   974,   110,   652,   948,   109,   110,
    3000      111,   879,    92,    93,    72,    49,    29,    30,    76,    32,
    3001      112,   109,   723,   111,   110,    83,    84,   567,   112,    63,
    3002       43,   109,    66,   111,   110,    69,    49,  1007,   109,   110,
    3003      111,   909,   110,    72,    57,   110,   747,    76,  1115,   110,
    3004       63,   109,  1503,    66,    83,    84,    69,   109,  1028,  1029,
    3005      118,   119,   109,   110,   111,   109,  1007,   111,   111,  1246,
    3006       83,    84,   871,   431,    58,    59,    60,   112,  1048,   878,
    3007      109,   114,   111,  1048,    85,    86,    87,   733,   116,   118,
    3008      119,  1261,  1262,  1263,   107,   131,   210,   110,   109,   114,
    3009      111,   622,  1553,   915,   117,   917,   807,   114,   109,  1007,
    3010      111,   812,   113,   114,   148,   473,   115,   116,  1088,   109,
    3011      919,   116,   117,  1093,   110,   111,   117,   161,  1098,   112,
    3012     1048,    58,    59,   115,   116,   148,   110,  1107,   352,   110,
    3013      354,   116,   117,   156,   112,  1115,   116,   117,   161,   112,
    3014     1048,    44,    45,   187,   552,   553,   560,   561,   272,  1336,
    3015     1218,   112,  1132,  1340,   554,   555,   112,     4,     5,     6,
    3016        7,     8,     9,   186,   187,   117,   210,   117,   699,   978,
    3017     1048,   295,   116,    29,    85,    86,    87,  1157,   222,   202,
    3018      110,   110,   713,   307,   112,   112,   132,   210,   114,   110,
    3019      901,   115,   115,   115,   110,   109,   219,   908,   109,   222,
    3020      111,   116,   113,   114,   110,   110,   229,   116,   110,   117,
    3021      110,   484,   110,   924,   110,   116,   110,   110,   442,  1199,
    3022     1200,   244,    69,   110,    71,   248,   594,   110,   110,   252,
    3023      253,   110,     0,  1200,   110,   946,   947,   948,  1218,   110,
    3024      110,   110,  1222,   266,   267,   110,   110,  1222,   115,    29,
    3025      273,   131,   110,   116,   622,  1442,  1236,   280,   117,   627,
    3026     1240,   112,   112,   116,    32,   110,   110,   110,   117,   117,
    3027     1079,   112,   112,  1240,   116,    43,   114,  1218,   809,  1157,
    3028      110,    49,   110,   110,   328,   132,     4,     5,     6,     7,
    3029        8,     9,   116,   110,  1222,    63,  1007,   116,    66,   110,
    3030      116,    69,   110,   112,   109,   328,   109,   109,  1288,  1289,
    3031      109,   109,   112,   110,   132,    33,   110,  1297,  1395,   115,
    3032     1538,   110,  1302,   115,    72,   348,   349,  1302,    76,   115,
    3033      454,   699,   114,   112,   129,    83,    84,    10,    11,    12,
    3034       13,    14,   365,   110,  1222,   713,   369,   132,   879,   112,
    3035      116,    69,   116,    71,   112,  1335,   110,   380,  1236,   110,
    3036      110,   109,   406,   112,   879,  1528,    39,   112,  1335,   112,
    3037      118,   119,   110,   396,  1302,  1528,   112,  1088,   112,  1529,
    3038      148,  1528,   506,   406,   508,   112,  1195,   511,    47,  1528,
    3039      514,   132,  1528,   161,    67,  1528,   115,  1528,   110,   132,
    3040      132,   424,   132,  1553,   132,   115,  1529,   430,   117,   432,
    3041      110,   879,   115,   112,    66,  1395,   112,   112,   186,   187,
    3042      112,  1132,   112,   112,  1302,   112,  1503,   112,   110,   110,
    3043     1553,    83,   947,  1413,   112,   112,   109,   109,   111,   109,
    3044      109,   809,   210,    60,   467,   118,   119,   110,   110,   472,
    3045      114,   117,   132,  1394,   222,   112,   112,   480,  1438,   110,
    3046       96,   484,   112,   110,    96,   488,   118,     3,   491,   109,
    3047      493,  1438,   109,   115,    10,    11,    12,    13,    14,  1010,
    3048      110,   112,  1462,   132,   252,   110,   110,  1462,   110,  1469,
    3049      513,  1471,    42,  1473,  1469,   116,   110,   117,   266,   132,
    3050      110,    96,    96,    39,   132,   528,   132,  1218,   531,   161,
    3051      533,   534,   110,  1528,  1528,  1528,   132,  1048,   117,   110,
    3052      132,   110,   110,  1503,   132,   115,   112,   112,  1508,  1240,
    3053     1510,    67,   109,  1048,  1462,   132,   115,   115,   110,   110,
    3054      132,  1469,  1522,   110,   110,  1064,   562,  1522,  1528,  1529,
    3055      563,   565,   564,  1222,  1491,  1381,  1529,  1563,  1538,   582,
    3056      328,   685,   566,  1312,  1128,  1340,   589,  1469,   917,  1079,
    3057      222,   685,   685,  1553,  1098,    66,   698,   600,   925,   602,
    3058     1553,   349,   978,  1051,  1462,    76,   871,  1538,   649,   944,
    3059     1240,  1469,   582,   723,  1522,   484,   570,   733,   621,   570,
    3060       72,   570,    74,    75,    76,    -1,   879,    -1,   260,    -1,
    3061       -1,    83,    84,   265,   637,    -1,    -1,    -1,    -1,    -1,
    3062      643,    -1,    -1,    -1,  1335,    -1,    -1,   118,    -1,   652,
    3063       -1,   654,   655,   656,    -1,    -1,    -1,   109,   406,   111,
    3064       -1,    -1,  1010,    -1,  1522,   117,   118,   119,    -1,    -1,
    3065       -1,  1201,  1202,    -1,  1204,     0,     1,    -1,    -1,    -1,
    3066       -1,  1211,    -1,  1213,    -1,   688,    -1,    -1,  1199,   692,
    3067      161,   694,    -1,    -1,   947,   698,    -1,    10,    11,    12,
    3068       13,    14,    -1,   706,  1199,  1200,    -1,    32,    -1,    -1,
    3069       -1,  1222,     3,    -1,    -1,    -1,   719,   720,   350,    10,
    3070       11,    12,    13,    14,    49,    -1,    39,  1222,    -1,    -1,
    3071      733,    72,    -1,    74,    75,    76,   484,    -1,    -1,    -1,
    3072      488,    -1,    83,    84,    69,  1240,    -1,  1438,    39,    -1,
    3073       -1,   222,    -1,    -1,    67,    -1,    -1,    -1,  1394,    72,
    3074       -1,    74,    75,    76,    -1,     0,    -1,    -1,   109,    -1,
    3075       83,    84,    -1,    -1,  1222,    -1,    67,   118,   119,    -1,
    3076     1471,   106,  1473,    -1,    -1,    -1,  1297,    -1,    -1,   260,
    3077       -1,  1302,    55,    -1,   265,  1048,   109,    32,   111,   431,
    3078       -1,    -1,  1297,    -1,    -1,   118,   119,  1302,    -1,   280,
    3079       -1,    -1,    -1,   816,    -1,    -1,    -1,  1508,    -1,  1510,
    3080      924,    -1,    -1,   148,    -1,   828,    72,    -1,    74,    75,
    3081       76,   156,   157,    -1,    69,    98,    -1,    83,    84,    -1,
    3082     1335,   473,    -1,    -1,    -1,  1375,    -1,  1538,    -1,    -1,
    3083        3,  1199,   600,    -1,   602,    -1,    -1,    10,    11,    12,
    3084       13,    14,   187,   109,    -1,   111,    -1,    -1,   871,    -1,
    3085     1318,    -1,   118,   119,    -1,   878,    -1,   202,    -1,   350,
    3086      205,   206,    -1,    -1,   464,   210,    39,    -1,    -1,    72,
    3087       -1,    74,    75,    76,    -1,    -1,    -1,    -1,   901,    -1,
    3088       83,    84,   464,    -1,    -1,    -1,   231,   910,    -1,   912,
    3089      235,    -1,   237,    -1,    67,    -1,   919,    -1,    -1,    -1,
    3090       -1,   246,   157,    -1,    -1,  1373,   109,   252,  1376,    -1,
    3091       -1,   194,   257,    -1,    -1,   118,   119,    -1,    -1,   942,
    3092      688,    -1,   267,  1438,    -1,    -1,    -1,  1200,    -1,  1297,
    3093      275,  1462,    -1,    -1,   217,    -1,    -1,    -1,  1469,   962,
    3094      431,    -1,   594,    -1,   227,    -1,    -1,  1462,    -1,  1222,
    3095       -1,   719,   720,  1421,  1469,   978,    -1,   448,  1426,    -1,
    3096       -1,    -1,    -1,   986,  1088,    -1,   989,  1240,   991,    -1,
    3097      622,    -1,    -1,    -1,    -1,   627,   231,    -1,    -1,    -1,
    3098       -1,    -1,   473,    -1,    -1,    -1,    -1,    -1,  1456,    -1,
    3099       -1,  1522,    -1,    -1,    -1,    -1,   341,   252,    -1,    -1,
    3100      345,    -1,   257,    -1,    -1,    -1,   351,  1522,    -1,    -1,
    3101       -1,    -1,   295,    -1,    -1,    -1,    -1,    -1,  1041,   364,
    3102       -1,    -1,    -1,   368,    -1,    -1,   371,    -1,    -1,  1302,
    3103       -1,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,    72,
    3104       -1,    74,    75,    76,    -1,    -1,    -1,   699,   816,    -1,
    3105       83,    84,    -1,    -1,    -1,    -1,  1079,    -1,    -1,    -1,
    3106      828,   713,  1335,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3107     1093,   671,    -1,   418,  1542,  1098,   109,     0,   111,    -1,
    3108     1548,    -1,    -1,    -1,    -1,   118,   119,    -1,   433,   671,
    3109       -1,  1559,  1115,   438,    -1,  1563,   351,    -1,    -1,    -1,
    3110       -1,   446,    -1,   594,    99,    -1,   101,    -1,    -1,    32,
    3111       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,   464,
    3112       -1,    -1,   467,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3113       -1,   622,    -1,    -1,    -1,    -1,   627,   482,    -1,   484,
    3114       39,    -1,   910,    -1,   912,    -1,    69,   492,    -1,    -1,
    3115       -1,   496,    -1,    -1,    -1,    -1,    -1,   809,    -1,    -1,
    3116      443,    -1,    -1,   418,    -1,  1438,    -1,     0,    67,    -1,
    3117       -1,    -1,  1195,    72,   942,    74,    75,    76,   433,    -1,
    3118      525,   526,    -1,   438,    83,    84,   469,   182,    -1,  1462,
    3119       -1,   446,    -1,   793,    -1,  1218,  1469,   192,   193,    32,
    3120       -1,    -1,   197,   803,   199,   200,    -1,    -1,   699,   464,
    3121      109,   793,   111,    -1,    -1,    -1,    -1,   817,    -1,   118,
    3122      119,   803,   713,   506,    -1,    -1,   571,   482,   511,   484,
    3123       -1,   514,    -1,    -1,   157,   817,    69,    -1,  1261,  1262,
    3124     1263,    -1,   733,    -1,   589,   590,    -1,    -1,    -1,  1522,
    3125       -1,    -1,    10,    11,    12,    13,    14,   602,    -1,    -1,
    3126       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3127       -1,   526,    -1,    -1,    -1,   620,    -1,   190,    -1,    -1,
    3128      625,    39,    -1,    -1,   197,    -1,   631,    -1,    -1,   634,
    3129      635,   636,    -1,    -1,    39,    -1,  1319,    -1,    97,    98,
    3130       99,   100,   101,   102,   103,   104,   105,   106,   653,    67,
    3131       -1,    -1,    -1,    -1,    -1,    -1,    -1,   696,   809,    -1,
    3132       -1,    -1,    67,    -1,   157,  1093,   671,    72,    -1,   252,
    3133     1098,    76,   131,    -1,   257,   590,    -1,   682,    83,    84,
    3134       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1471,    -1,  1473,
    3135       -1,   109,    -1,   111,    -1,    -1,   269,    -1,  1010,    -1,
    3136      118,   119,    -1,   708,   109,    -1,   711,    -1,    -1,    -1,
    3137       -1,  1394,  1395,   118,   119,   720,    -1,    -1,   723,   634,
    3138      635,   636,  1405,  1406,  1508,    -1,  1510,   670,    -1,    -1,
    3139       -1,    -1,    -1,    -1,    -1,    -1,   679,    -1,   653,    -1,
    3140      683,    -1,   747,   748,    -1,    -1,    -1,    -1,   753,    -1,
    3141      323,   790,    -1,    -1,    -1,    -1,   671,    -1,   331,   252,
    3142     1443,   334,    -1,    -1,   257,  1025,  1026,   682,   351,    -1,
     2399       0,     1,    43,    43,   185,   185,   204,     0,    43,     1,
     2400     185,   239,   105,   185,   520,   533,   116,   187,   748,     0,
     2401       1,   748,   185,   168,   169,   748,   732,   185,     0,     1,
     2402     512,   186,    32,   344,   645,   185,   219,  1020,   601,    32,
     2403     156,   602,   256,    43,   873,   873,    57,   608,   491,    49,
     2404       0,    32,   495,   755,   691,   348,    49,   619,    72,   601,
     2405      32,   489,   155,    63,   348,    32,    66,  1320,   599,    69,
     2406      63,   570,   982,    66,   599,    72,    69,    69,   281,    82,
     2407      43,  1397,    32,    72,   265,   265,   599,  1039,    69,    63,
     2408     265,   261,   262,   265,    66,   106,    43,    69,   109,   599,
     2409      43,   201,   265,   425,   426,   105,    82,   265,   599,   599,
     2410      51,   266,    39,   113,   599,   265,   116,   117,   132,    39,
     2411      39,     0,  1032,   417,   634,   635,    28,     0,   117,     0,
     2412    1019,  1020,   109,    39,   110,   132,   363,     0,  1051,  1052,
     2413     367,   651,   107,   437,   185,   185,   146,   147,    39,    82,
     2414     185,   445,  1468,    32,   147,   155,   156,   186,   132,    32,
     2415     160,    32,   114,    39,    39,  1418,   131,   160,   109,    32,
     2416     481,   493,    43,     1,   904,   603,    78,   904,    49,   607,
     2417     686,   904,   109,   228,   111,   185,   186,    44,    45,   109,
     2418     512,   111,    63,   186,   487,    66,   156,   130,    69,   709,
     2419     628,   201,   247,   417,   632,   111,    95,   218,    49,   209,
     2420    1039,    44,    45,   109,  1127,    82,   209,   717,   109,  1500,
     2421     111,   221,   185,   437,   265,   265,   409,   717,   221,    64,
     2422     265,   445,   717,   109,   109,   111,   111,   266,   185,   239,
     2423     129,  1224,   185,   694,   111,    55,  1527,   340,    82,   221,
     2424     405,   251,   813,   109,   110,   577,   109,   114,   251,   259,
     2425     823,   272,   899,   112,   264,   265,   266,   116,   279,   116,
     2426     251,   271,   113,   266,   109,   109,   147,   370,   131,   251,
     2427     811,   823,   115,   985,   251,   132,   811,    97,    11,   160,
     2428     800,  1274,    96,   792,   294,   395,     0,    82,   811,   112,
     2429     503,   251,  1401,    44,    45,   146,   306,   294,   619,    85,
     2430     109,   811,   923,   624,   185,   186,   432,   601,   122,    72,
     2431     811,   811,   322,   423,   479,   110,   811,   327,    32,   429,
     2432      83,    84,   110,  1471,   327,  1287,   347,   113,   209,  1477,
     2433     340,   111,  1048,   113,   344,   130,     3,    82,   348,   349,
     2434     221,   116,   130,   364,    72,   110,  1451,   368,   111,  1497,
     2435     130,   588,    66,   363,  1502,    83,    84,   367,   209,   932,
     2436     370,    96,   251,   114,   109,   130,   405,   256,   251,     3,
     2437     251,  1210,  1210,   193,  1273,  1274,   680,   109,   251,   111,
     2438    1485,   109,  1487,   256,   265,   395,  1495,   122,   239,   116,
     2439     931,  1500,    72,   630,   116,   405,   216,    90,    91,   525,
     2440    1393,   116,   405,    83,    84,   132,   226,   845,   931,   116,
     2441     132,  1520,     0,   423,   252,   425,   426,    49,  1527,   429,
     2442     271,   524,   432,   744,   128,   132,   998,   131,   425,   426,
     2443     931,   111,   125,   126,   119,   120,  1007,  1008,   116,   116,
     2444     479,   116,   131,   453,   905,   109,   327,    72,  1287,   111,
     2445     966,   113,   665,   130,   132,   306,   680,   132,    83,    84,
     2446     112,   471,   432,   589,   116,  1385,  1386,   348,   130,   479,
     2447     116,   481,   109,   483,   294,   655,   479,   487,  1440,     0,
     2448     483,   113,   706,   493,   130,  1447,   111,   940,   980,   950,
     2449     116,   646,   483,   344,  1393,   505,   116,   507,   109,   937,
     2450     510,   483,   512,   513,   130,  1126,    72,   221,   505,   109,
     2451     520,   481,   132,   510,   524,   525,   513,    83,    84,   109,
     2452     823,   686,   735,   483,   405,  1098,  1500,   109,   417,   823,
     2453       4,     5,     6,     7,     8,     9,  1498,   251,   116,    72,
     2454     110,    74,    75,   653,   417,   111,  1520,   116,   437,   109,
     2455      83,    84,   110,  1527,   132,   525,   445,   112,   116,   569,
     2456     570,   116,   112,   132,   437,   802,   116,   577,  1084,   566,
     2457     807,  1287,   445,  1089,   425,   426,   109,   209,   588,   589,
     2458     116,   114,   903,   593,   110,    88,    89,   116,   116,   599,
     2459     116,   601,   481,   110,   483,    69,   132,    71,   110,   620,
     2460     483,  1440,   483,   132,   132,   110,   487,   112,  1447,   619,
     2461     483,   116,   112,   112,   624,   636,   626,   116,   116,   589,
     2462     630,   116,   442,   633,   634,   635,   131,   132,   466,   650,
     2463      66,   110,  1114,   936,   132,   349,  1118,   132,    72,   271,
     2464     743,   651,   493,   653,   110,  1361,    82,   686,   468,    83,
     2465      84,   109,   110,   111,    72,  1116,    74,    75,   895,  1498,
     2466     110,   512,   294,    92,    93,    83,    84,   860,    10,    11,
     2467      12,    13,    14,   683,   306,   115,   686,   998,   110,   109,
     2468      57,   117,   808,   109,   116,   505,   110,   880,   694,   527,
     2469     510,   109,   116,   513,   532,   109,   114,    39,   109,   709,
     2470     710,   711,    64,   110,   942,   132,   589,   717,   718,   116,
     2471     731,   866,   109,   904,   904,  1176,  1177,   110,   599,   904,
     2472     601,   110,   904,   116,   160,    67,   577,   116,  1444,   106,
     2473    1446,   904,   109,   743,   744,   109,   904,   111,   748,   749,
     2474     110,   906,   132,   581,   904,    72,   116,    74,    75,   115,
     2475     116,    10,    11,    12,    13,    14,    83,    84,   472,   117,
     2476      85,    86,    87,   112,  1504,   123,   124,  1504,   619,   483,
     2477     109,  1504,   111,   624,   744,   110,  1304,   114,   155,   785,
     2478      39,   116,   792,  1499,   109,   221,   111,   114,   113,   114,
     2479     800,   680,   802,   109,   804,   111,   114,   807,   808,   902,
     2480     110,   811,   109,  1011,   111,   686,   116,   680,    67,   110,
     2481     117,   118,   110,   823,   652,   116,   654,   706,   116,   132,
     2482     109,   453,   111,   259,  1145,    85,    86,    87,   264,   132,
     2483     109,    72,   111,   706,   110,    76,   717,   718,   808,   110,
     2484     116,   218,    83,    84,   109,   116,   111,   114,   668,   109,
     2485     109,   111,   111,   113,   114,   744,   862,   677,   117,   118,
     2486      66,   681,   109,   873,   111,   110,   704,   906,   109,   109,
     2487     111,   116,    82,   505,   110,   507,   117,   118,   510,  1034,
     2488     116,   513,   873,   110,  1121,   895,     0,     1,   109,   116,
     2489     111,   873,   902,   903,   904,   272,   906,   112,   110,   905,
     2490     109,  1114,   279,  1224,   116,  1118,  1119,   621,   918,   110,
     2491     111,   117,   109,   349,    82,    29,    30,   110,    32,  1084,
     2492    1381,   931,   932,   116,  1089,   808,   936,    58,    59,    43,
     2493     811,   941,   942,   903,   118,    49,  1397,   127,   109,   941,
     2494     111,   128,   823,    57,   950,    94,   117,   118,   131,    63,
     2495     941,   909,    66,   911,   160,    69,   966,   111,   109,   941,
     2496     111,   109,   110,   111,  1480,   109,   117,   118,    82,    83,
     2497     347,   109,     4,     5,     6,     7,     8,     9,   112,   985,
     2498     109,   110,   111,   697,   873,   115,   116,   364,   998,   112,
     2499     873,   368,   106,   112,   430,   109,  1106,   711,    44,    45,
     2500     873,   110,   116,   505,   110,   507,  1467,  1468,   510,  1019,
     2501    1020,   513,   110,  1529,   903,   221,   109,   110,   111,     1,
     2502     110,  1234,   110,   904,   110,   906,  1247,  1248,  1249,  1039,
     2503    1036,   109,    72,   147,    74,    75,   472,    69,   112,    71,
     2504     111,   155,   114,    83,    84,  1084,   160,   116,  1039,  1019,
     2505    1089,   683,   131,   259,   431,   936,   114,  1039,   264,   114,
     2506       4,     5,     6,     7,     8,     9,   109,    49,   112,  1079,
     2507     112,   185,   186,   110,  1084,   551,   552,   897,   112,  1089,
     2508     553,   554,    72,   110,    74,    75,    76,   201,  1098,    33,
     2509     804,   942,   112,    83,    84,   209,  1106,    58,    59,    60,
     2510     132,   112,   130,  1206,   218,   559,   560,   221,  1321,    72,
     2511    1116,  1121,  1325,    76,   228,   130,   130,   116,   956,   109,
     2512      83,    84,    29,   105,   110,    69,   110,    71,   115,   243,
     2513     115,   113,   112,   247,   110,  1145,   114,   251,   252,   112,
     2514     978,   115,   109,   349,   982,   116,   109,   998,   110,   132,
     2515    1039,   265,   266,   110,   117,   118,  1039,   593,   272,   873,
     2516     555,   556,   557,   558,   146,   279,  1039,   116,   110,   110,
     2517    1176,  1177,   110,   155,   110,  1145,   116,  1187,  1188,   110,
     2518     110,   110,   110,   110,   110,   621,  1188,   110,   110,   110,
     2519     626,   110,  1189,  1190,  1032,  1192,  1206,  1188,   110,   110,
     2520    1210,   110,  1199,  1084,  1201,  1187,  1188,   115,  1089,  1422,
     2521      29,   588,   130,   327,  1224,   131,   110,   116,  1228,  1210,
     2522     112,   112,   110,   205,   430,   110,  1228,   209,  1210,    72,
     2523    1050,    74,    75,   347,   348,   110,   116,  1228,   116,   112,
     2524      83,    84,   114,   620,   130,   110,  1228,   110,   110,   116,
     2525     364,   112,   110,   110,   368,   110,  1145,   239,   109,   636,
     2526     116,   697,   116,  1273,  1274,   379,   472,  1377,   111,   109,
     2527     112,   109,  1282,   650,   109,   711,  1514,  1287,   109,   112,
     2528     130,   395,   873,   132,   110,   115,   918,  1001,   110,   271,
     2529     115,   405,   274,   110,   128,    72,  1287,    74,    75,    76,
     2530    1282,   115,   114,  1273,   112,  1287,    83,    84,   132,   423,
     2531    1320,   110,   294,  1504,  1504,   429,   112,   431,  1320,  1504,
     2532     112,  1210,  1504,   116,   306,  1039,   110,  1210,   110,  1320,
     2533     110,  1504,   109,   112,   112,  1224,  1504,  1210,  1320,    72,
     2534    1505,    74,    75,    76,  1504,   112,   110,   112,    47,   112,
     2535      83,    84,   466,   112,   731,  1376,   132,   471,   340,   132,
     2536    1357,   132,   344,   132,  1529,   479,   132,  1377,   804,   483,
     2537    1480,    30,   115,   487,   110,  1381,   490,   115,   492,   130,
     2538     110,   363,   110,  1393,   115,   367,   463,   593,   370,   112,
     2539      72,  1397,    74,    75,    76,   112,   112,   112,  1287,   112,
     2540     112,    83,    84,   284,  1287,   110,   112,   109,  1418,  1247,
     2541    1248,  1249,   112,   527,  1287,   621,  1418,   109,   532,   109,
     2542     626,    60,   110,    82,    83,   306,   307,  1418,   114,   110,
     2543    1440,   132,   112,   112,   110,   112,  1418,  1447,   110,  1449,
     2544      96,  1451,    96,   425,   426,   109,   109,  1079,   132,  1440,
     2545     115,  1042,   110,  1504,  1504,   110,  1447,   110,  1440,  1504,
     2546     110,  1467,  1468,   344,   116,  1447,  1505,   581,    42,   130,
     2547    1480,   453,   132,  1187,   588,  1485,  1296,  1487,   110,   110,
     2548      96,   132,    96,   132,   466,   599,   110,   601,  1498,   132,
     2549    1529,   697,   110,   110,  1504,  1505,  1210,   132,   110,   380,
     2550     115,   112,  1505,   112,  1514,   711,   620,  1498,   109,   491,
     2551     132,   493,   132,   495,   110,   115,  1498,   115,   895,  1529,
     2552     110,   110,   636,   505,   132,   507,  1529,   641,   510,   110,
     2553     512,   513,  1055,   562,   564,   561,   650,   976,   652,   653,
     2554     654,   563,   524,  1468,   565,  1210,    49,  1385,  1386,  1539,
     2555    1363,  1440,  1119,  1297,  1325,  1447,  1070,  1440,  1447,   683,
     2556      63,    66,   683,    66,  1447,  1001,    69,  1440,  1282,  1089,
     2557      75,   911,   686,  1287,  1447,   919,   690,   581,   692,   696,
     2558     866,   647,   696,   970,   243,  1423,   721,   938,  1228,   731,
     2559     704,    -1,   669,   483,   569,   577,    -1,   569,   804,   569,
     2560      -1,    -1,    -1,   717,   718,    70,   588,    -1,    73,  1498,
     2561      -1,    76,   117,    78,    -1,  1498,    -1,   731,    -1,  1210,
     2562      85,    -1,    -1,  1504,     3,  1498,    -1,    -1,  1448,    -1,
     2563    1450,    10,    11,    12,    13,    14,    -1,   619,    -1,    -1,
     2564      -1,    -1,   624,  1481,   147,    -1,    -1,    72,   630,    74,
     2565      75,    76,  1490,    -1,    -1,   160,    -1,   160,    83,    84,
     2566      39,    -1,    -1,  1514,  1484,   189,  1486,   548,   549,   550,
     2567      -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2568      -1,    -1,    -1,   186,   109,    -1,   111,    -1,    67,    -1,
     2569      -1,    -1,   117,   118,    -1,    -1,    -1,   811,    -1,    -1,
     2570      -1,   683,    -1,    72,    -1,   130,   209,    76,  1528,   823,
     2571    1530,   788,  1303,    -1,    83,    84,   221,    -1,   221,    -1,
     2572     379,   798,    -1,  1543,  1544,    72,  1440,    74,    75,    76,
     2573      -1,    -1,   669,  1447,    -1,   812,    83,    84,    -1,   721,
     2574     109,    -1,    -1,    -1,   268,    -1,    -1,   212,   117,   118,
     2575      -1,  1187,   866,    -1,   259,    -1,    -1,    -1,   872,   264,
     2576      -1,   743,   109,    -1,  1355,    -1,    -1,  1358,     3,    -1,
     2577     117,   118,    -1,    -1,   279,    10,    11,    12,    13,    14,
     2578      -1,   895,    -1,   282,  1498,   284,   285,    -1,    -1,    -1,
     2579     904,    -1,   906,   292,   293,  1001,    -1,    -1,   322,   913,
     2580      -1,    -1,    -1,    -1,    39,    -1,   330,   306,   307,   333,
     2581    1401,    -1,    -1,    -1,   279,  1406,    -1,  1449,    -1,  1451,
     2582     802,    -1,   936,    -1,   327,   807,    -1,    -1,    -1,  1206,
     2583     463,   490,    67,   492,    -1,    -1,    -1,    -1,     0,     1,
     2584      -1,    -1,   956,  1434,   349,   344,  1282,    -1,    -1,    -1,
     2585      -1,   788,    -1,  1485,    -1,  1487,   970,    -1,    -1,    -1,
     2586      -1,   798,    -1,    -1,   978,    -1,    -1,    -1,   982,    -1,
     2587      32,    -1,    -1,   397,   755,   812,    -1,   401,    -1,    -1,
     2588      -1,   380,    -1,    -1,    -1,     3,   351,    49,   353,    -1,
     2589      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     2590      -1,    -1,   405,    -1,    -1,    -1,    -1,    69,    -1,    -1,
     2591      -1,    -1,    -1,   895,    -1,    -1,    -1,    -1,  1032,     0,
     2592     902,    39,    -1,    -1,    -1,   430,    -1,  1518,    -1,    -1,
     2593      26,    27,    28,  1524,    -1,    -1,   918,    -1,    -1,  1016,
     2594    1017,    -1,   447,   105,  1535,    -1,    -1,    -1,  1539,    67,
     2595      -1,    32,    -1,    -1,   478,    -1,  1070,    -1,   940,   941,
     2596     942,    -1,    -1,    -1,    -1,    -1,    -1,   472,    -1,    -1,
     2597    1084,    -1,    -1,    -1,    -1,  1089,   441,    -1,    -1,    -1,
     2598      -1,  1187,   641,    -1,    -1,   147,    -1,    -1,    69,    -1,
     2599      -1,    -1,  1106,   155,   156,    -1,    -1,  1074,  1075,  1376,
     2600      -1,    -1,    98,    -1,   100,    -1,    97,    98,    99,   100,
     2601     101,   102,   103,   104,   105,   106,   998,    -1,    -1,    -1,
     2602      -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,    -1,   125,
     2603      -1,   690,    -1,   692,    -1,    -1,   669,   696,    -1,   201,
     2604     131,    -1,   204,   205,    -1,   569,   570,   209,    -1,   548,
     2605     549,   550,   551,   552,   553,   554,   555,   556,   557,   558,
     2606     559,   560,   561,   562,   563,   564,   565,    -1,   230,  1183,
     2607      -1,    -1,   234,    -1,   236,   156,  1282,    -1,    -1,  1016,
     2608    1017,    -1,    -1,   245,    -1,   181,    -1,    -1,   593,   251,
     2609      -1,    -1,  1206,   189,   256,   191,   192,  1079,    -1,    -1,
     2610     196,    -1,   198,   199,   266,    -1,    -1,    -1,    -1,    -1,
     2611      -1,    72,   274,    74,    75,    76,   621,   998,    -1,    -1,
     2612      -1,   626,    83,    84,    -1,    -1,    -1,    -1,    -1,     0,
     2613      -1,    -1,   656,  1247,  1248,  1249,   660,  1074,  1075,  1121,
     2614      10,    11,    12,    13,    14,  1222,    -1,    -1,   109,   230,
     2615     111,    -1,    -1,    -1,    -1,   788,   117,   118,  1039,    -1,
     2616      -1,    32,    -1,    -1,    -1,   798,    -1,    -1,    -1,    39,
     2617     251,    -1,   268,    -1,    -1,   256,    -1,  1254,   340,   812,
     2618      -1,    -1,   344,    -1,    -1,  1262,  1263,  1264,   350,    -1,
     2619      -1,    -1,   697,    -1,    -1,   694,    -1,    67,    69,    -1,
     2620      -1,   363,    -1,    -1,    -1,   367,   711,   866,   370,    -1,
     2621      -1,    -1,    -1,   872,    -1,    -1,    -1,    -1,    -1,    -1,
     2622      -1,    -1,    -1,    -1,  1206,    -1,   731,    -1,    -1,    -1,
     2623      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,   109,
     2624      -1,   111,    -1,    -1,    -1,    -1,  1228,   117,   118,  1326,
     2625      -1,    -1,    -1,    -1,   913,   417,   755,    -1,    -1,    -1,
     2626      -1,    39,  1376,  1377,    -1,    -1,   731,    -1,   792,   350,
     2627     432,  1385,  1386,    -1,    -1,   437,    -1,    -1,    -1,    -1,
     2628      26,    27,    28,   445,    -1,   156,   785,    -1,    -1,    67,
     2629      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,   804,
     2630      -1,   463,    -1,    -1,   466,    83,    84,    -1,    -1,  1423,
     2631      -1,   970,    72,    -1,    74,    75,    76,  1254,    -1,   481,
     2632      -1,   483,    -1,    83,    84,  1262,  1263,  1264,    -1,   491,
     2633      -1,   109,    -1,   495,    -1,    -1,   417,    -1,  1320,   117,
     2634     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     2635      -1,   432,    98,    -1,   100,    -1,   437,   117,   118,    -1,
     2636      -1,    -1,   524,   525,   445,    -1,  1480,  1481,    -1,    -1,
     2637      -1,    -1,    -1,    -1,    -1,    -1,  1490,    -1,    -1,    -1,
     2638     251,    -1,   463,  1016,  1017,   256,   910,    -1,    -1,  1326,
     2639    1504,  1505,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2640     481,    -1,   483,    -1,    -1,    -1,   905,    -1,   570,    -1,
     2641      72,  1070,    74,    75,    76,  1529,    -1,    -1,    -1,    -1,
     2642      -1,    83,    84,    -1,    -1,    -1,   588,   589,    -1,    -1,
     2643      10,    11,    12,    13,    14,   181,  1418,    -1,    -1,   601,
     2644      -1,  1074,  1075,    -1,   525,   191,   192,   109,    -1,   111,
     2645     196,   950,   198,   199,    -1,   117,   118,   619,    -1,    39,
     2646      -1,    -1,   624,   987,    -1,    -1,    -1,  1449,   630,  1451,
     2647      -1,   633,   634,   635,    -1,    -1,    -1,   573,   574,   350,
     2648    1004,    -1,    -1,    -1,    -1,    -1,   985,    67,    -1,   651,
     2649      -1,    -1,    -1,    -1,    -1,    -1,  1001,    -1,    -1,   998,
     2650      -1,    -1,    -1,  1485,    -1,  1487,   602,   669,   589,   605,
     2651     606,    -1,   608,    -1,   610,   611,    -1,    -1,   680,   615,
     2652     616,    -1,    -1,    72,  1183,    74,    75,    76,    -1,   109,
     2653      -1,   111,  1514,    -1,    83,    84,    -1,   117,   118,    -1,
     2654    1039,    -1,    -1,    -1,   706,    -1,   417,   709,    -1,    -1,
     2655      -1,    -1,   633,   634,   635,    -1,   718,    -1,  1082,   721,
     2656     109,   432,   111,    -1,     0,    -1,   437,    -1,   117,   118,
     2657     651,    -1,    -1,    -1,   445,    -1,    -1,    -1,    -1,    -1,
     2658      -1,   743,   744,    -1,    -1,    -1,    -1,   749,   669,  1222,
     2659      -1,    -1,   463,    -1,    -1,    -1,    32,    -1,  1122,   680,
     2660      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2661     481,    -1,   483,    -1,    -1,    -1,    -1,  1116,    -1,    -1,
     2662      -1,  1254,    -1,    -1,    -1,   706,   788,    -1,   709,  1262,
     2663    1263,  1264,    -1,    69,    -1,    -1,   798,    -1,   800,    -1,
     2664     802,    -1,    -1,   805,    -1,   807,   808,    -1,    -1,    -1,
     2665     812,    -1,    -1,    -1,   525,    -1,    -1,   753,   754,    -1,
     2666     822,    -1,    -1,   744,    -1,    -1,    -1,    -1,    -1,    -1,
     2667      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1176,  1177,    -1,
     2668      -1,    -1,  1187,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2669      -1,     0,    -1,  1326,    -1,    -1,    -1,    -1,    -1,    -1,
     2670      -1,    -1,    -1,    37,    38,    -1,    40,   788,    -1,    -1,
     2671      -1,   873,    -1,    -1,    -1,    -1,    -1,   798,   589,   800,
     2672     156,    -1,    -1,    32,   805,    -1,    -1,   808,    -1,    -1,
     2673      -1,   812,    66,   895,    -1,    -1,    -1,    -1,    72,    -1,
     2674     902,   903,    76,    -1,   906,    79,    80,    81,    82,    83,
     2675      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     2676      69,    -1,   633,   634,   635,    -1,    -1,    -1,    -1,    -1,
     2677     932,    -1,    -1,    -1,    -1,   109,    -1,  1282,   940,   941,
     2678     651,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     2679      -1,    -1,   873,    -1,    -1,    -1,    -1,    -1,   669,    -1,
     2680      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   680,
     2681      -1,    -1,    -1,    -1,   910,   251,    -1,    -1,    -1,   915,
     2682     256,    -1,   903,    -1,    -1,    -1,    -1,   573,   574,    -1,
     2683      -1,    -1,    -1,    -1,    -1,   706,   998,    -1,   709,    -1,
     2684      -1,    -1,    -1,    -1,    -1,    -1,    -1,   156,    -1,  1011,
     2685      -1,    -1,    -1,    -1,  1016,  1017,   602,  1019,  1020,   605,
     2686     606,    -1,   608,    -1,   610,   611,    -1,    -1,    -1,   615,
     2687     616,    -1,    -1,   744,    -1,    -1,    -1,  1039,    -1,    -1,
     2688      -1,    -1,  1381,    -1,     0,     1,    -1,    -1,    -1,    -1,
     2689      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1397,    -1,
    31432690      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
    3144       -1,    -1,    -1,  1025,  1026,    -1,    -1,    -1,   793,    -1,
    3145       -1,    -1,    -1,   708,    -1,    -1,   711,    -1,   803,    -1,
    3146      805,    -1,   807,    39,    -1,   810,    -1,   812,   813,    -1,
    3147       -1,    -1,   817,    -1,    10,    11,    12,    13,    14,    -1,
    3148     1503,  1504,   827,  1083,  1084,   398,    -1,    -1,   867,   402,
    3149     1513,    67,    -1,   748,    -1,   418,    72,    -1,    74,    75,
    3150       76,  1083,  1084,    39,    -1,  1528,  1529,    83,    84,    -1,
    3151      433,    -1,    -1,    -1,    -1,   438,    -1,    -1,   351,  1010,
    3152       -1,    -1,    -1,   446,    -1,    -1,    -1,    -1,     1,    -1,
    3153     1553,    67,   911,   109,   879,   111,    -1,    -1,   793,    -1,
    3154       -1,   464,   118,   119,    -1,    -1,    -1,  1199,   803,    -1,
    3155      805,    -1,    -1,    -1,    -1,   810,   901,    -1,   813,   482,
    3156       -1,   484,   817,   908,   909,    -1,   479,   912,    -1,    -1,
    3157       -1,    -1,    -1,   109,    -1,   111,    -1,   956,    -1,   574,
    3158      575,    -1,   118,   119,    -1,   418,    72,    -1,    74,    75,
    3159       76,    -1,    -1,   938,    -1,    -1,    -1,    83,    84,    -1,
    3160      433,   946,   947,   526,   671,   438,    -1,    -1,   603,    -1,
    3161       -1,   606,   607,   446,   609,   994,   611,   612,    -1,   964,
    3162      903,   616,   617,   109,   879,   111,    -1,    -1,    -1,    -1,
    3163       -1,   464,   118,   119,  1234,    -1,    -1,    -1,    -1,    -1,
    3164       -1,    -1,    -1,    -1,    -1,  1297,    -1,    -1,    -1,   482,
    3165       -1,   484,  1234,    -1,   909,    -1,    -1,   570,   571,     0,
    3166        1,    -1,  1007,    -1,    -1,    -1,  1045,   590,    -1,  1269,
    3167       -1,    -1,    -1,    -1,    -1,  1020,    -1,  1277,  1278,  1279,
    3168     1025,  1026,    -1,  1028,  1029,    -1,    -1,  1269,    -1,    -1,
    3169       -1,    32,    -1,   526,    -1,  1277,  1278,  1279,    -1,    -1,
    3170       -1,    -1,    -1,  1048,    -1,    -1,    -1,    -1,  1199,   964,
    3171       -1,   634,   635,   636,    -1,    -1,    -1,    -1,    -1,    -1,
    3172       -1,    -1,    -1,    -1,    -1,    66,   793,    -1,    69,    -1,
    3173      653,    -1,    -1,    -1,    -1,    -1,   803,    -1,  1083,  1084,
    3174       -1,    -1,    -1,  1343,    -1,   658,  1125,    -1,   671,   662,
    3175      817,    -1,    -1,    -1,    -1,    -1,    -1,   590,    -1,   682,
    3176     1528,  1343,   757,   758,    -1,    -1,    -1,    -1,    -1,    -1,
    3177     1025,  1026,    -1,  1028,  1029,    -1,  1059,    -1,    -1,    -1,
    3178      253,    -1,    -1,    -1,    -1,   708,    -1,  1132,   711,    -1,
    3179       -1,    -1,    -1,  1048,    -1,    -1,    -1,    -1,    -1,    -1,
    3180       -1,   634,   635,   636,    -1,    -1,  1297,    -1,    -1,  1188,
    3181     1189,    -1,  1157,    -1,     0,    -1,   157,    -1,    -1,    -1,
    3182      653,    -1,    -1,    -1,    -1,   748,    -1,    -1,  1083,  1084,
    3183       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   671,    10,
    3184       11,    12,    13,    14,    -1,    -1,    32,    -1,    -1,   682,
    3185       -1,    -1,    -1,    -1,    -1,  1200,    -1,    -1,    -1,    -1,
    3186       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
    3187      793,    -1,    -1,  1218,    -1,   708,    -1,  1222,   711,    -1,
    3188      803,   222,   805,    69,   797,    -1,    -1,   810,    -1,  1234,
    3189      813,  1236,    -1,    -1,   817,  1240,    67,    -1,    -1,    -1,
    3190       -1,    72,  1157,    74,    75,    76,    -1,    -1,    -1,    -1,
    3191       -1,   252,    83,    84,    -1,   748,    -1,    -1,    -1,    -1,
    3192       -1,    -1,    -1,    -1,  1269,    -1,   921,    -1,    -1,    -1,
    3193       -1,    -1,  1277,  1278,  1279,    -1,    -1,    -1,   109,    -1,
    3194       -1,    -1,    -1,  1288,  1289,  1200,    -1,   118,   119,    -1,
    3195       -1,    -1,    -1,    -1,    -1,    -1,   879,  1302,  1025,  1026,
    3196      793,    -1,    -1,    -1,    -1,    -1,    -1,  1222,    -1,    -1,
    3197      803,   157,   805,    -1,    -1,    -1,    -1,   810,    -1,  1234,
    3198      813,  1236,    -1,    -1,   817,    -1,   909,    -1,    -1,    -1,
    3199     1335,    -1,    -1,    -1,   467,    -1,    -1,    -1,  1343,    -1,
    3200       -1,    -1,    -1,   916,    -1,    -1,    -1,    -1,    -1,    -1,
    3201       -1,    -1,    -1,    -1,  1269,    -1,  1083,  1084,    -1,    -1,
    3202     1399,    -1,  1277,  1278,  1279,    -1,    -1,    -1,  1311,    -1,
    3203       -1,    -1,    -1,  1288,  1289,    -1,    -1,    -1,  1417,    -1,
    3204      513,   964,    -1,    -1,    -1,    -1,   879,  1302,    -1,    -1,
    3205       -1,    -1,    -1,    -1,    -1,   528,    -1,    -1,   531,    -1,
    3206      533,   534,    -1,    -1,    -1,    -1,   252,    -1,  1413,    -1,
    3207       -1,   257,    26,    27,    28,    -1,   909,    -1,    -1,    -1,
    3208       -1,    -1,    -1,   996,    -1,    -1,    -1,    -1,  1343,    -1,
    3209     1085,    -1,   433,  1438,    -1,    -1,    -1,    -1,    -1,    -1,
    3210     1013,    -1,  1025,  1026,    -1,  1028,  1029,    -1,    -1,   582,
    3211       -1,  1490,  1491,    -1,    53,    -1,    55,  1462,    -1,    58,
    3212       59,    60,    -1,    62,  1469,  1048,    -1,    -1,    -1,    -1,
    3213       -1,   964,    -1,    -1,    -1,    -1,    -1,    -1,    77,    -1,
    3214       -1,    -1,    -1,   484,    -1,    99,    -1,   101,    -1,    -1,
    3215       89,    90,    -1,    -1,    -1,    -1,    -1,    -1,  1413,    -1,
    3216     1083,  1084,    -1,    -1,    -1,   351,    -1,    -1,    -1,    -1,
    3217       -1,    -1,   126,    -1,    -1,    -1,    -1,  1522,  1091,    -1,
    3218       -1,   654,    -1,   656,  1529,   526,    -1,  1470,    -1,  1472,
    3219       -1,    -1,  1025,  1026,    -1,  1028,  1029,    -1,    -1,    -1,
    3220       -1,    -1,  1269,    -1,    -1,    -1,    -1,  1462,    -1,    -1,
    3221     1277,  1278,  1279,    -1,  1469,  1048,    -1,    -1,    -1,    -1,
    3222     1133,    -1,  1217,    -1,  1507,    -1,  1509,    -1,   182,    -1,
    3223       -1,    -1,   418,   706,  1157,    -1,   190,    -1,   192,   193,
    3224       -1,    -1,    -1,   197,    -1,   199,   200,   433,    -1,   590,
    3225     1083,  1084,   438,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3226      446,    -1,    -1,    -1,    -1,    -1,    -1,  1522,    -1,  1552,
    3227       -1,  1554,    -1,    -1,    -1,    -1,  1343,  1200,   464,    10,
    3228       11,    12,    13,    14,  1567,  1568,    -1,    -1,    -1,    -1,
    3229       -1,    -1,    -1,   634,   635,   636,   482,    -1,   484,  1222,
    3230       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
    3231       -1,  1234,   653,  1236,    -1,   269,    -1,    -1,    10,    11,
    3232       12,    13,    14,    -1,  1157,    -1,    -1,    -1,    -1,    -1,
    3233       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3234      526,    72,    -1,    74,    75,    76,  1269,    39,    -1,    -1,
    3235       -1,    -1,    83,    84,  1277,  1278,  1279,    -1,    -1,    -1,
    3236       -1,    -1,    -1,    -1,    -1,  1288,  1289,  1200,    -1,    -1,
    3237      711,    -1,    -1,    -1,    -1,    67,    -1,    -1,   109,  1302,
    3238       72,    -1,    -1,    -1,    76,    -1,    -1,   118,   119,  1222,
    3239       -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3240       -1,  1234,    -1,  1236,   590,   344,    -1,   346,    -1,    -1,
    3241       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   357,   358,
    3242     1343,    -1,    -1,    -1,    -1,    -1,   118,   119,    -1,    -1,
    3243       -1,    -1,    -1,    -1,    -1,    -1,  1269,    -1,    -1,    -1,
    3244       -1,    -1,    -1,    -1,  1277,  1278,  1279,    -1,   634,   635,
    3245      636,    -1,    -1,    -1,    -1,  1288,  1289,    -1,    -1,    -1,
    3246       -1,    -1,    -1,    -1,   805,    -1,    -1,   653,    -1,  1302,
    3247       -1,    -1,   813,    -1,    -1,     7,    -1,    -1,    10,    11,
    3248       12,    13,    14,    -1,    -1,   671,    -1,    -1,    -1,   962,
    3249     1413,    -1,    -1,    -1,    -1,    -1,   682,    -1,    -1,    -1,
    3250       -1,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
    3251     1343,    -1,    -1,   986,    -1,    -1,   989,    -1,   991,    -1,
    3252       -1,    -1,   708,    -1,    -1,   711,    -1,    -1,    -1,    -1,
    3253       -1,    -1,    -1,    -1,    66,    67,    -1,    -1,   879,  1462,
    3254       72,    -1,    -1,    -1,    76,    -1,  1469,    79,    80,    81,
    3255       82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
    3256       -1,    -1,   748,    -1,    -1,    -1,    -1,    -1,  1041,    -1,
    3257       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3258     1413,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
    3259      122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1522,
    3260       -1,    -1,    -1,    -1,    -1,    -1,   947,   793,    -1,    -1,
    3261       -1,    -1,    -1,    -1,    -1,    -1,    -1,   803,    -1,   805,
    3262      574,   575,    -1,   964,   810,    -1,    -1,   813,    -1,  1462,
    3263       -1,   817,    37,    38,    -1,    40,  1469,    -1,    -1,    -1,
    3264       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   603,
    3265       -1,    -1,   606,   607,    -1,   609,    -1,   611,   612,    -1,
    3266       -1,    66,   616,   617,    -1,    -1,    -1,    72,    -1,    74,
    3267       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3268       -1,    86,    87,    -1,    -1,    -1,    -1,  1028,  1029,  1522,
    3269       -1,    -1,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,
    3270       -1,    -1,    -1,    -1,   109,    -1,   111,  1048,   113,   114,
    3271       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
    3272       -1,    -1,    -1,   909,    -1,    -1,    -1,    -1,    -1,     3,
    3273        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2691      -1,    -1,  1074,  1075,   350,    -1,    32,   788,    -1,    -1,
     2692      -1,    -1,    -1,    -1,    -1,    -1,    -1,   798,    -1,   800,
     2693      -1,    -1,    -1,    39,   805,  1016,  1017,   808,  1019,  1020,
     2694      -1,   812,   251,    -1,    -1,    -1,    -1,   256,    -1,    -1,
     2695      66,    -1,    -1,    69,    -1,    -1,    -1,    -1,  1039,  1121,
     2696      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,  1467,  1468,
     2697      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
     2698    1076,   417,    -1,  1145,    -1,    -1,    -1,    -1,    -1,    -1,
     2699      -1,    -1,    -1,  1074,  1075,    -1,   432,    -1,    -1,    -1,
     2700      -1,   437,   873,   109,    -1,    -1,    -1,   753,   754,   445,
     2701      -1,   117,   118,    -1,    10,    11,    12,    13,    14,    -1,
     2702      -1,    -1,    -1,    -1,    -1,    -1,  1188,   463,    -1,    -1,
     2703      -1,    -1,   903,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2704     156,   350,    -1,    39,  1206,   481,    -1,   483,  1210,    -1,
     2705      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2706    1222,    -1,  1224,    -1,  1145,    -1,  1228,    -1,    -1,    -1,
     2707      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     2708      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,   525,
     2709      -1,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2710    1262,  1263,  1264,    -1,    -1,   221,    -1,  1188,   417,  1205,
     2711      -1,  1273,  1274,   109,    -1,   111,    -1,    -1,    -1,    -1,
     2712      -1,   117,   118,   432,    -1,  1287,    -1,    -1,   437,  1210,
     2713      -1,    -1,    -1,    -1,    -1,   251,   445,    -1,    -1,    -1,
     2714      -1,  1222,    -1,  1224,    -1,  1016,  1017,    -1,  1019,  1020,
     2715      -1,    -1,    -1,   589,   463,    -1,    -1,    -1,  1320,    -1,
     2716      -1,    -1,    -1,    -1,  1326,    -1,    -1,    -1,  1039,   915,
     2717      -1,    -1,   481,  1254,   483,    -1,    -1,    -1,    -1,    -1,
     2718      -1,  1262,  1263,  1264,    -1,    -1,    -1,    -1,    -1,    -1,
     2719      -1,    -1,  1273,  1274,    -1,    -1,    -1,   633,   634,   635,
     2720      -1,    -1,    -1,  1074,  1075,    -1,  1287,    -1,    -1,    -1,
     2721      -1,    -1,    -1,    -1,    -1,   651,   525,    -1,    -1,    -1,
     2722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2723      -1,  1393,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
     2724      -1,    -1,    -1,    -1,   680,  1326,    -1,    10,    11,    12,
     2725      13,    14,    -1,    -1,    -1,    -1,  1418,    -1,    -1,    -1,
     2726      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2727     706,    -1,    -1,   709,  1145,    -1,    39,    -1,  1440,    -1,
     2728     589,    -1,    -1,    -1,    -1,  1447,    -1,    53,    -1,    55,
     2729      -1,    -1,    58,    59,    60,    -1,    62,    -1,    -1,    -1,
     2730      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,   744,    72,
     2731      76,    -1,  1393,    76,    -1,    -1,   432,  1188,    -1,    -1,
     2732      83,    84,    88,    89,   633,   634,   635,    -1,    -1,    -1,
     2733    1076,    -1,    -1,    -1,    -1,    -1,  1498,    -1,    -1,  1210,
     2734      -1,    -1,   651,  1505,    -1,    -1,   109,    -1,    -1,    -1,
     2735      -1,  1222,   788,  1224,   117,   118,    -1,    -1,    -1,  1440,
     2736     669,    -1,   798,    -1,   800,    -1,  1447,   483,    -1,   805,
     2737      -1,   680,   808,    -1,    -1,    -1,   812,    10,    11,    12,
     2738      13,    14,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,
     2739      -1,  1262,  1263,  1264,    -1,    -1,    -1,   706,    -1,    -1,
     2740     709,    -1,  1273,  1274,    -1,    -1,    39,    -1,    -1,   525,
     2741      -1,    -1,    -1,    -1,    -1,    -1,  1287,  1498,    -1,    -1,
     2742      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2743      -1,    -1,    -1,    -1,    67,   744,    -1,   873,    -1,    72,
     2744      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
     2745      83,    84,    -1,    -1,    -1,  1326,    -1,    -1,    -1,  1205,
     2746      -1,    -1,    -1,    -1,    -1,    -1,    -1,   903,    -1,    -1,
     2747      -1,    -1,    -1,   589,    -1,    -1,   109,    -1,   111,   788,
     2748      -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,   798,
     2749      -1,   800,    -1,    -1,    -1,    -1,   805,    -1,    -1,   808,
     2750      -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,    -1,    -1,
     2751      -1,    -1,    -1,    -1,    -1,    -1,    -1,   633,   634,   635,
     2752      -1,    -1,  1393,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2753      -1,    -1,    -1,    -1,    -1,   651,    -1,    -1,     3,     4,
     2754       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2755      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2756      25,    26,    27,    -1,   873,    30,    31,    32,    33,  1440,
     2757      -1,    36,    -1,    -1,    39,    40,  1447,   343,    -1,   345,
     2758    1016,  1017,    -1,  1019,  1020,    -1,    -1,    -1,    -1,    -1,
     2759     356,   357,    -1,   709,   903,    -1,    -1,    -1,    -1,    64,
     2760      -1,    -1,    67,  1039,    69,    -1,    71,    72,    -1,    74,
     2761      75,    76,    -1,    10,    11,    12,    13,    14,    83,    84,
     2762      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1498,    -1,    -1,
     2763      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1074,  1075,
     2764      -1,    -1,    39,    -1,   109,    -1,   111,    -1,    66,    -1,
     2765     115,    -1,   117,   118,    -1,    -1,    -1,    75,    -1,    77,
     2766      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    -1,
     2767      67,    -1,    49,    -1,    -1,    72,    -1,    74,    75,    76,
     2768      -1,    -1,    -1,    -1,   800,    -1,    83,    84,    -1,    66,
     2769      -1,    -1,   808,    -1,    10,    11,    12,    13,    14,   117,
     2770      -1,   119,   120,   121,    -1,    -1,    -1,  1016,  1017,  1145,
     2771    1019,  1020,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     2772     117,   118,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     2773    1039,    -1,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
     2774     117,    -1,   160,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2775      -1,    67,  1188,    -1,    -1,    -1,    72,   873,    74,    75,
     2776      76,    -1,    -1,    -1,    -1,  1074,  1075,    83,    84,   146,
     2777      -1,    -1,    -1,    -1,  1210,    -1,    -1,    -1,    -1,   156,
     2778      -1,    -1,    -1,   160,    -1,    -1,  1222,    -1,  1224,    -1,
     2779      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
     2780      -1,   117,   118,   221,    -1,   223,   224,   225,    -1,    -1,
     2781      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1254,    -1,
     2782      -1,    -1,    -1,    -1,    -1,   941,  1262,  1263,  1264,    -1,
     2783      -1,    -1,   209,    -1,    -1,    -1,  1145,  1273,  1274,    -1,
     2784      -1,   259,    -1,    -1,   221,    -1,   264,    -1,    -1,    -1,
     2785      -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2786      -1,   279,   239,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2787      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1188,
     2788      -1,    -1,    -1,    -1,    -1,    -1,    -1,   264,    -1,    -1,
     2789    1326,    -1,    -1,    -1,   271,    -1,    -1,    -1,    -1,    -1,
     2790      -1,  1210,    -1,  1019,  1020,    -1,    -1,    -1,    -1,   327,
     2791      -1,    -1,    -1,  1222,    -1,  1224,    -1,   294,    -1,    -1,
     2792      -1,    -1,    -1,  1039,    -1,    -1,    -1,    -1,    -1,   306,
     2793      -1,   349,   698,    -1,   700,    -1,   354,   355,    -1,    -1,
     2794      -1,   707,   708,    -1,   362,  1254,   712,    -1,    -1,    -1,
     2795      -1,    -1,    -1,  1262,  1263,  1264,    -1,  1393,   724,    -1,
     2796      -1,    -1,    -1,   729,  1273,  1274,    -1,   344,    -1,    -1,
     2797      -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1287,    -1,
     2798      -1,    -1,    -1,    -1,    -1,    -1,    -1,   405,    -1,    -1,
     2799      -1,   757,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2800      -1,    -1,    -1,    -1,  1440,   423,    -1,    -1,    -1,    -1,
     2801     428,  1447,   430,    -1,    -1,    -1,    -1,  1326,    -1,    -1,
     2802      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   447,
     2803      -1,    -1,   450,   451,    -1,    -1,    -1,    -1,    -1,    -1,
     2804     458,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   425,   426,
     2805      -1,    -1,    -1,    -1,   472,   432,    -1,    -1,    -1,    -1,
     2806      -1,   479,  1498,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2807      -1,  1187,  1188,    -1,    -1,    -1,   453,    -1,    -1,    -1,
     2808      -1,    -1,    -1,    -1,  1393,    -1,    -1,    -1,    -1,    -1,
     2809     856,   857,   858,   859,  1210,   861,    -1,    -1,    -1,    -1,
     2810      -1,    -1,    -1,    -1,   481,    -1,    -1,    -1,    -1,    -1,
     2811     876,    -1,  1228,    -1,    -1,    -1,   493,    -1,    -1,    -1,
     2812      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,   505,    -1,
     2813     507,  1440,    -1,   510,    -1,   512,   513,    -1,  1447,    -1,
     2814      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,    -1,
     2815      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,    -1,
     2816      -1,    -1,    -1,    -1,   930,    -1,  1282,    -1,    -1,    -1,
     2817      -1,  1287,    -1,    -1,    -1,   593,    -1,    -1,    -1,    -1,
     2818      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1498,
     2819      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2820     577,    -1,    -1,   621,  1320,    -1,    -1,    -1,   626,   975,
     2821      -1,    -1,   589,    -1,    -1,   981,   593,    -1,    -1,    -1,
     2822     986,    -1,    -1,    -1,    -1,   991,    -1,   993,    -1,    -1,
     2823      -1,   997,    -1,   999,  1000,    -1,    -1,  1003,    -1,    -1,
     2824      -1,    -1,   619,    -1,    -1,    -1,  1012,   624,    -1,    -1,
     2825      -1,    -1,    -1,    -1,    -1,    -1,   633,   634,   635,    -1,
     2826      -1,    -1,    -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,
     2827      -1,    -1,    -1,    -1,   651,    -1,    -1,  1393,    -1,   697,
     2828      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2829      -1,  1057,    -1,   711,  1060,    -1,    -1,    -1,    -1,    -1,
     2830      -1,    -1,  1418,    -1,    -1,    -1,   683,    37,    38,    -1,
     2831      40,    -1,    -1,   731,    -1,    -1,    -1,    -1,    -1,    -1,
     2832      -1,    -1,    -1,    -1,  1440,    -1,    -1,    -1,    -1,    -1,
     2833      -1,  1447,   709,    -1,   711,    -1,    66,  1103,    -1,    -1,
     2834      -1,    -1,    72,  1109,  1110,    -1,    76,    -1,    -1,    79,
     2835      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     2836      -1,    -1,    -1,  1129,    -1,    -1,  1132,   744,    -1,    -1,
     2837    1136,    -1,    -1,    -1,   792,    -1,    -1,    -1,    44,   109,
     2838      -1,   111,  1498,  1149,   114,    -1,   804,   117,   118,   119,
     2839     120,   121,   122,    -1,    -1,    -1,  1162,    -1,  1164,  1165,
     2840    1166,  1167,    -1,    -1,    -1,   823,    -1,    -1,    -1,    -1,
     2841      -1,    -1,    -1,    -1,  1180,    -1,  1182,    -1,    -1,    -1,
     2842    1186,    -1,    -1,   800,    -1,    91,    -1,   804,    -1,    -1,
     2843      -1,   808,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,
     2844      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,
     2845    1216,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2846      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2847      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2848      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     2849      32,   157,    -1,    -1,    -1,    -1,    -1,    39,    -1,  1265,
     2850    1266,    -1,    -1,    -1,    -1,   171,    -1,    -1,    -1,  1275,
     2851      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   936,    -1,
     2852      -1,    -1,    -1,    -1,    -1,    67,   903,    69,   194,    71,
     2853      -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
     2854      -1,   918,   208,    -1,    -1,    -1,    -1,    -1,   966,    -1,
     2855      -1,   217,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
     2856      -1,   227,    -1,    -1,    -1,   942,    -1,    -1,    -1,   111,
     2857    1336,    -1,  1338,  1339,  1340,   117,   118,    -1,    -1,    -1,
     2858      -1,    -1,    66,  1001,  1350,    -1,   252,    -1,    72,    -1,
     2859      -1,   257,    76,  1359,  1012,    79,    80,    81,    82,    83,
     2860      84,    -1,    86,    87,   270,    -1,    -1,    -1,    -1,    -1,
     2861     276,    -1,   278,    -1,    -1,    -1,    -1,    -1,  1384,    -1,
     2862      -1,   998,    -1,    -1,    -1,   109,    -1,   111,    -1,   295,
     2863      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     2864      -1,    -1,  1019,  1020,    -1,    -1,   130,    -1,    -1,    -1,
     2865      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     2866      -1,  1427,  1428,    -1,    -1,    -1,  1084,    -1,    -1,    -1,
     2867      -1,   337,    -1,    -1,  1440,    -1,   342,    -1,    -1,    -1,
     2868    1098,  1447,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,
     2869      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     2870      83,    84,  1079,    86,    87,   371,    -1,    -1,    -1,   375,
     2871     376,    -1,   378,  1479,    -1,    -1,    -1,  1483,    -1,   385,
     2872     386,    -1,   388,   389,    -1,   391,   109,   393,   111,    -1,
     2873     113,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
     2874      -1,    -1,    -1,    -1,   410,  1511,    -1,  1513,    -1,    -1,
     2875      -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2876      -1,   155,   156,    -1,    -1,    -1,    -1,    -1,  1145,  1187,
     2877      -1,    -1,    -1,    -1,    -1,  1541,  1542,   443,    -1,    -1,
     2878      -1,    -1,    -1,  1549,  1550,    -1,    -1,    -1,    -1,    -1,
     2879      -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,    -1,    -1,
     2880      -1,    -1,   196,   469,    -1,    -1,    -1,    -1,    -1,   475,
     2881    1187,    -1,    -1,    -1,   480,     3,     4,     5,     6,     7,
     2882       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2883      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2884      -1,    -1,    30,    31,    32,    -1,    -1,  1224,    -1,    -1,
     2885     516,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2886      -1,    -1,    -1,    -1,  1282,   531,    -1,    -1,    -1,    -1,
     2887      -1,    -1,    -1,    -1,   268,    -1,    -1,    -1,    -1,    67,
     2888      -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,
     2889      -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,    -1,    -1,
     2890      -1,    -1,    -1,   569,    -1,  1282,    -1,    -1,    -1,    -1,
     2891      -1,    -1,   578,    -1,    -1,    -1,    -1,    -1,    -1,   585,
     2892     146,    -1,    -1,    -1,    -1,   591,   114,    -1,   322,    -1,
     2893     156,    -1,    -1,    -1,   600,    -1,   330,   331,    -1,   333,
     2894     334,    -1,   168,   169,    -1,    -1,    -1,    -1,    -1,    -1,
     2895     344,    -1,     7,    -1,   348,    10,    11,    12,    13,    14,
     2896      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2897      -1,    -1,    -1,   367,   640,    -1,   370,    -1,    -1,    -1,
     2898      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     2899      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2900      -1,    -1,    -1,   397,    -1,    -1,    -1,   401,    -1,    -1,
     2901     676,    66,    67,   239,    -1,    -1,  1393,    72,   684,    -1,
     2902      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     2903      -1,    86,    87,    -1,    -1,    -1,    -1,   263,   432,    -1,
     2904      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   715,
     2905      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   725,
     2906     726,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     2907      -1,    -1,  1449,    -1,  1451,    -1,    -1,    -1,    -1,    -1,
     2908      -1,    -1,    -1,    -1,   478,    -1,    -1,   481,    -1,    -1,
     2909      -1,    -1,   758,    -1,    -1,    -1,    -1,   763,    -1,    -1,
     2910      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1485,    -1,
     2911    1487,  1529,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2912      -1,    -1,    -1,    -1,    -1,    -1,   520,    -1,    -1,    -1,
     2913     524,   525,    -1,    -1,    -1,    -1,    -1,  1514,    -1,    -1,
     2914      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2915      -1,    -1,    -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,
     2916      -1,   827,    -1,    -1,    -1,    -1,    -1,    -1,   834,    -1,
     2917      -1,    -1,    -1,    -1,    -1,   569,   570,    -1,    -1,    -1,
     2918      -1,   847,    -1,   849,    -1,    -1,    -1,    -1,    -1,    -1,
     2919      -1,    -1,    -1,    -1,   588,   589,    -1,   863,    -1,    -1,
     2920      -1,    -1,    -1,   869,    -1,   599,    -1,   601,   602,    -1,
     2921      -1,    -1,    -1,    -1,   608,   881,    -1,    -1,   884,    -1,
     2922      -1,    -1,    -1,    -1,   618,   619,    -1,    -1,    -1,    -1,
     2923     624,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   633,
     2924     634,   635,    -1,    -1,    -1,    -1,    -1,   473,    -1,    -1,
     2925      -1,    -1,    -1,    -1,    -1,    -1,    -1,   651,    -1,    -1,
     2926      -1,    -1,   656,   657,    -1,    -1,   660,   661,    -1,    -1,
     2927      -1,    -1,    -1,   667,    -1,    -1,    -1,    -1,    -1,    -1,
     2928      -1,    -1,    -1,    -1,    -1,    -1,   512,    -1,    -1,    -1,
     2929      -1,    -1,   686,    -1,    -1,   961,    -1,    -1,    -1,   525,
     2930      -1,    -1,    -1,    -1,   530,    -1,    -1,   533,    -1,    -1,
     2931      -1,    -1,    -1,    -1,    -1,   709,   710,    -1,    -1,   545,
     2932      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2933     996,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2934      -1,   567,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   743,
     2935     744,   577,    -1,    -1,   748,   749,    -1,    -1,   584,    -1,
     2936      -1,    -1,    -1,   589,    -1,    -1,    -1,    -1,    -1,    -1,
     2937      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2938      20,    21,    22,    23,    24,    25,    26,    27,  1054,    -1,
     2939      30,    31,    32,    -1,  1060,    -1,    -1,    -1,   792,    39,
     2940      -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,    -1,    -1,
     2941      -1,    -1,   638,   807,   808,    -1,    -1,   811,    -1,   813,
     2942     646,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1094,   823,
     2943      -1,    -1,    72,  1099,    74,    75,    76,    -1,    -1,    -1,
     2944      -1,  1107,    -1,    83,    84,    -1,    10,    11,    12,    13,
    32742945      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3275       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    3276       -1,   700,    -1,   702,    -1,    39,    -1,    -1,    -1,    -1,
    3277      709,   710,    -1,    -1,    -1,   714,    -1,    -1,   964,    -1,
    3278       -1,    -1,    -1,    -1,    -1,    -1,    -1,   726,  1261,  1262,
    3279     1263,    -1,   731,    67,    -1,    69,    -1,    71,    72,    -1,
    3280       74,    75,    76,   757,   758,    -1,    -1,    -1,    -1,    83,
    3281       84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3282       -1,    -1,   761,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3283       -1,    40,    -1,    -1,    -1,   109,    -1,   111,    -1,  1025,
    3284     1026,    -1,  1028,  1029,   118,   119,  1319,    -1,    -1,    -1,
    3285       -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,  1199,  1200,
    3286       -1,    -1,  1048,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3287       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3288       -1,  1222,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3289       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1083,  1084,  1240,
    3290      109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,
    3291      119,   120,   121,   122,   123,    -1,    -1,    49,    -1,    -1,
    3292       -1,    -1,   861,   862,   863,   864,    -1,   866,    -1,    -1,
    3293       -1,    -1,  1405,  1406,    66,    -1,    -1,    -1,    -1,    -1,
    3294       -1,    -1,    -1,   882,    -1,    -1,    -1,  1288,  1289,    -1,
    3295       -1,    -1,    -1,    -1,    -1,    -1,  1297,   896,    -1,    -1,
    3296       -1,  1302,   916,    -1,    -1,    -1,    -1,   921,    -1,    -1,
    3297     1443,  1157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3298       -1,    -1,   114,    -1,    -1,    -1,   118,    -1,    -1,    -1,
    3299       -1,    -1,    -1,    -1,  1335,    -1,    -1,   936,    -1,    -1,
     2946      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
     2947      -1,   111,    -1,    -1,  1140,    39,    -1,   117,   118,    -1,
     2948      -1,    -1,    -1,    -1,    -1,    -1,  1152,    -1,    -1,  1155,
     2949      -1,  1157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2950      -1,   895,    -1,    67,    -1,  1171,  1172,    -1,   902,   903,
     2951     904,    -1,   906,    -1,    78,    -1,   910,    -1,   744,    -1,
     2952     746,    -1,    -1,    -1,    -1,    -1,    -1,  1193,    -1,    -1,
     2953     756,    -1,    -1,    -1,    -1,    -1,   762,   931,   932,    -1,
     2954      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2955      20,    21,    22,    23,    24,    25,    26,    27,     7,    -1,
     2956      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    39,
     2957      -1,    -1,   966,    -1,  1240,    -1,    -1,    -1,   804,   805,
     2958      -1,    -1,   808,    -1,    -1,    -1,    -1,    -1,    37,    38,
     2959      39,    40,    -1,   987,   988,    -1,   822,    67,    -1,    -1,
     2960      -1,    -1,    -1,    -1,   998,    -1,    -1,    -1,    -1,    -1,
     2961    1004,  1005,    -1,  1007,  1008,  1009,    -1,    66,    67,    -1,
     2962      -1,    -1,    -1,    72,    -1,  1019,  1020,    76,    -1,    -1,
     2963      79,    80,    81,    82,    83,    84,   862,    86,    87,    -1,
     2964     866,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1315,
     2965      -1,  1317,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2966     109,    -1,   111,  1329,    -1,  1331,    -1,    -1,   117,   118,
     2967     119,   120,   121,   122,    -1,    -1,    -1,   903,    -1,    -1,
     2968      -1,    -1,  1348,    -1,    -1,    -1,    -1,    -1,  1082,    -1,
     2969    1084,    -1,    -1,    -1,    -1,  1089,    -1,    -1,  1364,  1365,
     2970      -1,    -1,    -1,    -1,  1098,    -1,    -1,    -1,    -1,  1375,
     2971      -1,    -1,  1378,    -1,    -1,    -1,   942,    -1,    -1,    -1,
     2972      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1121,  1122,  1123,
     2973      -1,    -1,    -1,  1399,    -1,    37,    38,    -1,    40,    -1,
     2974      -1,    -1,  1408,    -1,   970,  1411,    -1,  1413,  1414,  1415,
     2975     976,  1145,    -1,    -1,   980,    -1,    -1,    -1,    -1,    -1,
     2976      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
     2977      72,    -1,    -1,    -1,    76,  1001,    -1,    79,    80,    81,
     2978      82,    83,    84,    -1,    86,    87,  1012,  1453,    -1,  1455,
     2979      -1,  1457,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2980      -1,    -1,    -1,    -1,    -1,    -1,  1472,   109,  1034,   111,
     2981    1036,    -1,  1206,    -1,   116,   117,   118,   119,   120,   121,
     2982     122,    -1,    -1,    -1,    -1,  1051,  1052,    -1,    -1,    -1,
     2983    1224,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2984      -1,    -1,    -1,    -1,    -1,    -1,  1072,    -1,    -1,    -1,
     2985      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
     2986       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2987      19,    20,    21,    22,    23,    24,    25,    26,    27,  1273,
     2988    1274,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
     2989      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2990      -1,  1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     2991      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1145,
     2992      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
     2993      -1,    -1,    -1,    -1,  1160,  1161,    -1,     3,     4,     5,
     2994       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2995      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2996      26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
     2997      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
     2998      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
     2999      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1393,
     3000      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
     3001      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3002      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    33003003      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3301       -1,    -1,    -1,    -1,  1200,   147,    -1,    -1,    -1,    -1,
    3302       -1,    -1,    -1,    -1,    -1,   157,    -1,    -1,    -1,   161,
    3303       -1,  1504,    -1,    -1,    -1,    -1,  1222,    -1,    -1,    -1,
    3304     1513,    -1,    -1,    -1,   983,    -1,    -1,    -1,  1234,    -1,
    3305     1236,   990,    -1,    -1,    -1,    -1,   995,    -1,    -1,    -1,
    3306       -1,  1000,    -1,  1002,    -1,    -1,    -1,  1006,    -1,  1008,
    3307     1009,    -1,  1413,  1012,    -1,    -1,    -1,    -1,   210,    -1,
    3308       -1,    -1,  1021,  1269,    -1,    -1,    -1,    -1,    -1,    -1,
    3309      222,  1277,  1278,  1279,    -1,    -1,    -1,  1438,    -1,    -1,
    3310     1039,  1040,  1288,  1289,    -1,    -1,    -1,    -1,   240,    -1,
    3311       -1,    -1,    -1,    -1,    -1,    -1,  1302,    -1,    -1,    -1,
    3312       -1,  1462,    -1,    -1,    -1,    -1,    -1,  1066,  1469,    -1,
    3313     1069,  1085,    -1,   265,    -1,    -1,    -1,    -1,    -1,    -1,
    3314      272,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3315       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1343,    -1,    -1,
    3316       -1,    -1,    -1,   295,    -1,    -1,    -1,    -1,    -1,    -1,
    3317       -1,    -1,    -1,  1112,    -1,   307,    -1,    -1,    -1,  1118,
    3318     1119,  1522,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3319       -1,  1130,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,  1140,    -1,    -1,  1143,    -1,  1145,    -1,    -1,  1148,
    3321       -1,    -1,    -1,   345,    -1,    -1,    -1,    -1,   350,    -1,
    3322       -1,    -1,  1161,    -1,    -1,    -1,    -1,  1413,    -1,    -1,
    3323       -1,    -1,    -1,    -1,    -1,  1174,    -1,  1176,  1177,  1178,
    3324     1179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3325       -1,    -1,    -1,  1192,    -1,  1194,    -1,    -1,    -1,  1198,
    3326       -1,    -1,    -1,  1217,    -1,    66,    -1,    -1,    -1,    -1,
    3327       -1,    -1,    -1,    -1,    -1,    76,  1462,    78,    -1,    80,
    3328       -1,    -1,    -1,  1469,    -1,    -1,    87,    -1,  1227,  1228,
    3329       -1,    -1,    -1,    -1,   426,   427,    -1,    -1,    -1,    -1,
    3330       -1,   433,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3331       -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,    -1,   120,
    3332      121,   122,   454,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3333       -1,    -1,    -1,    -1,    -1,    -1,  1522,    -1,    -1,    -1,
    3334       -1,  1280,  1281,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3335      482,  1290,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3336      161,    -1,   494,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3337       -1,    -1,    -1,    -1,   506,    -1,   508,    -1,    -1,   511,
    3338       -1,   513,   514,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3339       -1,    -1,    -1,    -1,   526,    -1,    -1,    -1,    -1,    -1,
    3340       -1,    -1,  1341,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3341       -1,    -1,    -1,    -1,    -1,  1354,    -1,  1356,  1357,  1358,
    3342       -1,   222,    -1,   224,   225,   226,    -1,    -1,    -1,  1368,
    3343       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1377,    -1,
    3344       -1,    -1,    -1,    -1,    -1,    -1,   578,    -1,    -1,    -1,
    3345       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   590,   260,
    3346       -1,    -1,   594,    -1,   265,  1404,    -1,    -1,    -1,    -1,
    3347       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   280,
    3348       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   620,    -1,
    3349       -1,    -1,    -1,   625,    -1,    -1,    -1,    -1,    -1,    -1,
    3350       -1,    -1,   634,   635,   636,    -1,    -1,    -1,    -1,    -1,
    3351     1449,  1450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3352       -1,   653,    -1,  1462,    -1,    -1,    -1,   328,    -1,    -1,
    3353     1469,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,
    3354       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   350,
    3355       -1,    -1,    -1,   685,   355,   356,    -1,    -1,    -1,    -1,
    3356       -1,    -1,   363,  1502,    -1,    -1,    -1,  1506,    -1,    -1,
    3357       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   711,
    3358        7,   713,    92,    10,    11,    12,    13,    14,    -1,    -1,
    3359       -1,    -1,   102,    -1,    -1,    -1,  1535,    -1,  1537,    -1,
    3360       -1,    -1,    -1,    -1,    -1,   406,    -1,    -1,    -1,    -1,
    3361       37,    38,    39,    40,    -1,    -1,   748,    -1,    -1,    -1,
    3362       -1,    -1,    -1,   424,    -1,    -1,  1565,  1566,   429,    -1,
    3363      431,    -1,    -1,    -1,  1573,  1574,    -1,    -1,    -1,    66,
    3364       67,    -1,    -1,    -1,    -1,    72,    -1,   448,   158,    76,
    3365      451,   452,    79,    80,    81,    82,    83,    84,   459,    86,
    3366       87,    -1,   172,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3367       -1,    -1,   473,   805,    -1,    -1,    -1,   809,    -1,   480,
    3368       -1,   813,   109,    -1,   111,   195,    -1,    -1,    -1,    -1,
    3369       -1,   118,   119,   120,   121,   122,   123,    -1,    -1,   209,
    3370       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   218,    -1,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   228,    -1,
    3372       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3373       38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3374       -1,    -1,    -1,   253,    -1,    -1,    -1,    -1,   258,    -1,
    3375       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
    3376       -1,   271,    -1,    -1,    72,    -1,    -1,   277,    76,   279,
    3377       -1,    79,    80,    81,    82,    83,    84,   909,    86,    87,
    3378       -1,    -1,    -1,    -1,    -1,    -1,   296,    -1,    -1,    -1,
    3379       -1,    -1,   924,   594,    -1,    -1,    -1,    -1,    -1,    -1,
    3380       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
    3381      118,   119,   120,   121,   122,   123,   948,    -1,    -1,    -1,
    3382       -1,   622,    -1,    -1,    -1,    -1,   627,    -1,   338,    -1,
    3383       -1,    -1,   964,   343,    -1,    -1,     3,     4,     5,     6,
     3004      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
     3005      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3006      -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
     3007      -1,    -1,    -1,    -1,    -1,  1301,    -1,    -1,  1304,    -1,
     3008      -1,    -1,    -1,    -1,    -1,    -1,  1480,    -1,    -1,    -1,
     3009      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3010      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3011    1504,  1505,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3012      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3013      -1,    -1,    -1,    -1,    -1,  1529,     3,     4,     5,     6,
    33843014       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    33853015      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3386       27,    -1,   372,    30,    31,    32,   376,   377,    -1,   379,
    3387       -1,    -1,    39,    -1,    -1,  1007,   386,   387,    -1,   389,
    3388      390,    -1,   392,    -1,   394,    -1,    -1,    -1,    -1,    -1,
    3389       -1,    -1,    -1,    -1,    -1,    -1,  1028,  1029,   699,    -1,
    3390       67,   411,    69,    -1,    71,    -1,    -1,    74,    75,   419,
    3391       -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3392       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3393       37,    38,   733,    40,   444,    -1,    -1,    -1,    -1,    -1,
    3394       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3395       -1,   118,   119,    -1,    -1,    -1,  1088,    -1,    -1,    66,
    3396      470,    -1,    -1,    -1,    -1,    72,   476,    -1,    -1,    76,
    3397       -1,   481,    79,    80,    81,    82,    83,    84,    -1,    86,
     3016      27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
     3017      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3018      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3019      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3020      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
     3021      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    33983022      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3399       -1,    -1,    -1,    -1,    -1,    -1,   797,    -1,    -1,    -1,
    3400       -1,    -1,   109,    -1,   111,    -1,    -1,   517,   809,   116,
    3401       -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
    3402       -1,    -1,   532,    -1,    -1,  1157,     0,   828,    -1,     3,
     3023      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3024      76,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
     3025     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
     3026      -1,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,    -1,
     3027      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3028      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,  1514,     3,
    34033029       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    34043030      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    34053031      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
    3406      570,    -1,    36,    -1,    -1,    39,    40,  1199,    -1,   579,
    3407       -1,   156,   157,    -1,    -1,    -1,   586,    -1,    37,    38,
    3408       -1,    40,   592,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3409       64,   601,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
    3410       74,    75,    76,    -1,  1236,   190,    -1,    66,    -1,    83,
    3411       84,    -1,   197,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3412       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3413       -1,    -1,   642,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3414       -1,   942,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,
    3415      109,    -1,   111,    -1,    -1,   114,  1288,  1289,    -1,   118,
    3416      119,   120,   121,   122,   123,  1297,    -1,    -1,   678,    -1,
    3417       -1,    -1,    -1,   974,    -1,    -1,   686,    -1,    -1,    -1,
    3418       -1,    -1,    -1,    -1,   269,    10,    11,    12,    13,    14,
     3032      -1,    -1,    36,    37,    38,    39,    40,    10,    11,    12,
     3033      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3034      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3035      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
     3036      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3037      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3038      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
     3039      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3040      83,    84,    -1,   117,   118,   119,   120,   121,   122,     4,
     3041       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    34193042      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3420       25,    26,    27,    28,    -1,    -1,    -1,   717,    -1,  1010,
    3421       -1,    -1,    -1,    -1,    39,    -1,    -1,   727,   728,    -1,
    3422     1021,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
    3423       -1,   741,    -1,    -1,   147,    -1,    -1,    -1,   323,    -1,
    3424       -1,    -1,    67,    -1,   157,    -1,   331,   332,    -1,   334,
    3425      335,    -1,   762,    78,   764,    66,   169,   170,   768,    -1,
    3426      345,    72,    -1,    -1,   349,    76,    -1,    -1,    79,    80,
    3427       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3428       -1,  1413,    -1,   368,    -1,    -1,   371,    -1,    -1,    -1,
    3429       -1,    -1,  1093,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3430      111,    -1,    -1,    -1,    -1,    -1,  1107,   118,   119,   120,
    3431      121,   122,   123,   398,    -1,    -1,    -1,   402,    -1,    -1,
    3432       -1,    -1,   832,    -1,    -1,    -1,    -1,   240,    -1,   839,
    3433       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1471,
    3434       -1,  1473,   852,    -1,   854,    -1,    -1,    -1,   433,    -1,
    3435       -1,   264,    -1,    -1,    -1,    -1,    -1,    -1,   868,    -1,
    3436       -1,    -1,    -1,    -1,    -1,   875,    -1,    -1,    -1,    -1,
    3437       -1,    -1,    -1,    -1,    -1,    -1,  1508,   887,  1510,    -1,
    3438      890,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3439       -1,    -1,    -1,    -1,   479,    -1,    -1,   482,  1199,    -1,
    3440       -1,    -1,    -1,    -1,    -1,    -1,  1538,     4,     5,     6,
     3043      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3044      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    10,
     3045      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3046      21,    22,    23,    24,    25,    26,    27,    28,    -1,    -1,
     3047      -1,    66,    67,    -1,    69,    -1,    71,    72,    39,    74,
     3048      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3049      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3050      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3051      -1,    -1,    -1,    -1,   109,    -1,   111,    78,    -1,    -1,
     3052      -1,   116,   117,   118,   119,   120,   121,   122,     4,     5,
     3053       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3054      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3055      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3056      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
     3057      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3058      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3059      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3060      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3061      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3062      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3063      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3064     116,   117,   118,   119,   120,   121,   122,     4,     5,     6,
    34413065       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    34423066      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3443       27,    -1,    -1,    30,    31,    32,   521,    -1,    -1,    -1,
    3444      525,   526,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3445       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   969,
    3446       -1,    -1,    -1,    -1,    -1,    -1,    -1,   380,    -1,    -1,
    3447       67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
    3448       -1,    -1,    -1,    -1,    -1,   570,   571,    -1,    -1,    -1,
    3449       -1,    -1,    -1,    -1,    -1,  1005,  1297,    -1,    -1,    -1,
    3450       -1,    -1,    -1,    -1,   589,   590,    -1,    -1,    -1,    -1,
    3451       -1,    -1,    -1,   110,   111,   600,    -1,   602,   603,    -1,
    3452       -1,   118,   119,    -1,   609,    -1,    -1,    -1,    -1,    -1,
    3453       -1,    -1,    -1,    -1,   619,   620,    -1,    -1,    -1,    -1,
    3454      625,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   634,
    3455      635,   636,    -1,  1063,    -1,    -1,    -1,    -1,    -1,  1069,
    3456       -1,   474,    -1,    -1,    -1,    -1,    -1,    -1,   653,    -1,
    3457       -1,    -1,    -1,   658,   659,    -1,    -1,   662,   663,    -1,
    3458       -1,    -1,    -1,    -1,   669,    -1,    -1,    -1,    -1,    -1,
    3459       -1,    -1,    -1,  1103,    -1,    -1,    -1,    -1,  1108,    -1,
    3460      513,    -1,    -1,   688,    -1,    -1,  1116,    -1,    -1,    -1,
    3461       -1,    -1,    -1,   526,    -1,    -1,    -1,    -1,   531,    -1,
    3462       -1,   534,    -1,    -1,    -1,    -1,   711,   712,    -1,    -1,
    3463       -1,    -1,    -1,   546,    -1,    -1,    -1,    -1,    -1,    -1,
    3464       -1,    -1,  1152,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3465       -1,    -1,    -1,    -1,  1164,   568,    -1,  1167,    -1,  1169,
    3466       -1,    -1,   747,   748,    -1,   578,    -1,   752,   753,    -1,
    3467       -1,    -1,   585,  1183,  1184,    -1,    -1,   590,    -1,    -1,
    3468       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3469       -1,    -1,    -1,    -1,    -1,  1205,    -1,    -1,    -1,    -1,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3471       -1,    -1,   797,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3472      805,    -1,    -1,    -1,    -1,    -1,   639,   812,   813,    -1,
    3473       -1,   816,    -1,   818,    -1,   648,    -1,    -1,    -1,    -1,
    3474       -1,    -1,    -1,   828,  1254,    -1,    -1,    -1,    -1,    -1,
    3475       -1,    -1,  1553,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3476       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3477       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3478       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3479       31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,    -1,
    3480       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3481       -1,    -1,    -1,    -1,    -1,    -1,   901,    -1,    -1,    -1,
    3482     1330,    -1,  1332,   908,   909,   910,    67,   912,    69,    -1,
    3483       71,   916,    -1,    74,    75,   748,  1346,   750,  1348,    -1,
    3484       -1,    -1,    -1,    -1,    -1,    -1,    -1,   760,    -1,    -1,
    3485       -1,    -1,   937,   938,   767,    -1,  1366,    -1,    -1,    -1,
    3486       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3487      111,    -1,  1382,  1383,    -1,    -1,    -1,   118,   119,   964,
    3488       -1,    -1,    -1,  1393,    -1,    -1,  1396,    -1,    -1,   974,
    3489       -1,    -1,    -1,    -1,    -1,    -1,   809,   810,    -1,    -1,
    3490      813,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1419,
    3491       -1,   996,   997,    -1,   827,    -1,    -1,    -1,  1428,    -1,
    3492       -1,  1431,  1007,  1433,  1434,  1435,    -1,    -1,  1013,  1014,
    3493       -1,  1016,  1017,  1018,    -1,    -1,    -1,    -1,    -1,   283,
    3494       -1,   285,   286,  1028,  1029,    37,    38,    -1,    40,   293,
    3495      294,    -1,    -1,    -1,   867,    -1,    -1,    -1,   871,    -1,
    3496       -1,    -1,    -1,   307,   308,  1475,    -1,  1477,    -1,  1479,
    3497       -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
    3498       72,    -1,    -1,    -1,    76,  1495,    -1,    79,    80,    81,
    3499       82,    83,    84,    -1,    86,    87,   909,    -1,    -1,    -1,
    3500       -1,   345,    -1,    -1,    -1,    -1,  1091,    -1,  1093,    -1,
    3501       -1,    -1,    -1,  1098,    -1,    -1,    -1,   109,    -1,   111,
    3502       -1,    -1,  1107,    -1,    -1,    -1,   118,   119,   120,   121,
    3503      122,   123,    -1,    -1,    -1,   948,    -1,   381,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1132,  1133,  1134,
    3505       -1,   964,   965,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3506       -1,    -1,    -1,    -1,    -1,   978,    -1,    -1,    -1,    -1,
    3507       -1,   984,  1157,    -1,   987,    -1,   989,    -1,    10,    11,
    3508       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3509       22,    23,    24,    25,    26,    27,    28,  1010,    30,    31,
    3510       32,    -1,    -1,    -1,    -1,    -1,    -1,    39,  1021,    -1,
    3511       37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3512       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3513     1043,    -1,  1045,  1218,    -1,    67,    -1,    -1,    -1,    66,
    3514       -1,    -1,    74,    75,    -1,    72,    78,  1060,  1061,    76,
    3515       -1,  1236,    79,    80,    81,    82,    83,    84,    -1,    86,
    3516       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1081,    -1,
    3517       -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
    3518       -1,    -1,   109,    -1,   111,    -1,   118,   119,    -1,    -1,
    3519       -1,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
    3520       -1,    -1,    -1,  1288,  1289,   549,   550,   551,   552,   553,
    3521      554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
    3522      564,   565,   566,    -1,    -1,  1138,    -1,    -1,    -1,    -1,
    3523       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3524       -1,    -1,    -1,    -1,  1157,    -1,    -1,    -1,    -1,    -1,
    3525       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1172,
    3526     1173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
    3528        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3529       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3530       25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
    3531       -1,    36,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3532       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1413,    -1,
    3533       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1252,
    3534       -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
    3535       75,    76,   696,    -1,    79,    80,    81,    82,    83,    84,
    3536       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3537       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3538       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
    3539       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
    3540       -1,    -1,    -1,  1316,    -1,    -1,  1319,   132,    -1,    -1,
    3541       -1,    -1,    -1,    -1,    -1,   759,    -1,    -1,  1503,    10,
    3542       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3543       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3544       31,    32,    -1,  1528,  1529,    -1,   790,    -1,    39,    -1,
    3545       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3546       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1553,    -1,
    3547       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3548       -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
    3549     1403,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3550       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3551       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3552       21,    22,    23,    24,    25,    26,    27,   118,   119,    30,
    3553       31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
    3554       41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
    3555       51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
    3556       61,    62,    -1,    64,    -1,    66,    67,   911,    69,    -1,
    3557       71,    72,  1485,    74,    75,    76,    -1,    -1,    79,    80,
    3558       81,    82,    83,    84,    -1,    86,    87,    10,    11,    12,
    3559       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3560       23,    24,    25,    26,    27,    28,    -1,    -1,   109,    -1,
    3561      111,    -1,   956,   114,    -1,    -1,    39,   118,   119,   120,
    3562      121,   122,   123,    -1,    -1,  1538,    -1,   128,    -1,    -1,
    3563       -1,   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
    3565      994,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,
    3566       -1,    -1,    -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,
    3567       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3568       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3569       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3570       31,    32,    33,    -1,  1048,    36,    37,    38,    39,    40,
    3571       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3572       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3573       30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
    3574       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3575       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3577       -1,    -1,    72,    -1,    74,    75,    -1,    -1,   109,    -1,
    3578      111,  1125,    -1,    83,    84,    -1,    -1,   118,   119,   120,
    3579      121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
    3580       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3581       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3582       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,    -1,    -1,    -1,  1188,  1189,    -1,    -1,    -1,    -1,
    3585       -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
    3586       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3587       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3588       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3589       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
    3590      111,    -1,    -1,    -1,    -1,   116,    -1,   118,   119,   120,
    3591      121,   122,   123,     4,     5,     6,     7,     8,     9,    10,
    3592       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3593       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3594       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3595       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3596       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3597       30,    31,    32,    -1,    -1,    66,    67,    -1,    69,    39,
    3598       71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
    3599       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
    3600       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
    3601       -1,    -1,    72,    -1,    74,    75,    76,    -1,   109,    -1,
    3602      111,    -1,    -1,    83,    84,   116,    -1,   118,   119,   120,
    3603      121,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3604       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3605       -1,   111,    -1,    -1,    -1,  1399,    -1,    -1,   118,   119,
    3606       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,  1417,    -1,    -1,    -1,    -1,    -1,    -1,
    3608       -1,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,
    3609        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3610       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3611       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3612       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3613       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3614       27,    -1,    -1,    30,    31,    32,  1490,  1491,    66,    67,
    3615       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3616       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3617       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3618       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3619       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,    -1,
    3620      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3621        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3622       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3623       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3624       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3625       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3626       27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
    3627       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3628       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3629       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3630       67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
    3631       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3632      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
    3633        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3634       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3635       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3636       38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
    3637       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3638       27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3639       -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
    3640       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3641       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3642       67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3644      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
     3067      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3068      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
     3069      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3070      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
     3071      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
     3072      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3073      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3074      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     3075      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,
     3076     117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
    36453077       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    36463078      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     
    36533085      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36543086      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3656      118,   119,   120,   121,   122,   123,     4,     5,     6,     7,
     3087      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3088     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
     3089       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3090      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3091      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3092      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3093      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3094      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
     3095      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
     3096      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3097      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3098      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3099     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3100     119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
     3101      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3102      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3103      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
     3104      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3105      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3106      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
     3107      -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3108      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3109      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3110      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3111      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
     3112     120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
     3113      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3114      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3115      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3116      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3117      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3118      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
     3119      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3120      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3121      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3122      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3123     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3124     121,   122,     0,    -1,    -1,     3,     4,     5,     6,     7,
    36573125       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    36583126      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3659       -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
    3660       38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3127      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
     3128      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36613129      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3662       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
    3663       -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    3664       -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
    3665       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3666       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3667       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3668      118,   119,   120,   121,   122,   123,     3,     4,     5,     6,
    3669        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3670       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3671       27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
    3672       -1,    -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
    3673       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3674       -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
    3675       67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
    3676       -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
    3677       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3678       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3679       -1,    -1,   109,    -1,   111,    -1,    -1,    -1,   115,    -1,
    3680       -1,   118,   119,     3,     4,     5,     6,     7,     8,     9,
    3681       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3682       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3683       30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
    3684       40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3685       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3686       -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,
    3687       -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,
    3688       -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,
    3689       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3690       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
    3691       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
    3692        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3693       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3694       23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
    3695       33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,    -1,
    3696       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3697       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3698       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
    3699       -1,    74,    75,    -1,    -1,    78,     4,     5,     6,     7,
    3700        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3701       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3702       -1,    -1,    30,    31,    32,    -1,    -1,    -1,   111,    -1,
    3703       -1,    39,    -1,    -1,    -1,   118,   119,    -1,    -1,    -1,
    3704       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3705       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3130      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
    37063131      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
    37073132      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
    37083133      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37093134      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3710       -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3711      118,   119,     4,     5,     6,     7,     8,     9,    10,    11,
     3135      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3136     118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3137      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3138      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3139      32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
     3140      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3141      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3142      -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
     3143      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
     3144      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3145      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3146      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3147      -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,
     3148       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3149      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3150      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3151      -1,    -1,    -1,    39,    -1,    10,    11,    12,    13,    14,
     3152      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3153      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    34,
     3154      35,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
     3155      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
     3156      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3157      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
     3158      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3159      -1,   117,   118,     3,     4,     5,     6,     7,     8,     9,
     3160      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3161      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3162      30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
     3163      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3164      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3165      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3166      -1,    71,    -1,    -1,    74,    75,    -1,    -1,    78,     4,
     3167       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3168      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3169      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3170      -1,   111,    -1,    -1,    39,    -1,    -1,   117,   118,    -1,
     3171      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3172      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3173      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3174      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
     3175      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3176      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3177      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3178      -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
     3179      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3180      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3181      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     3182      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3183      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3184      26,    27,    -1,    -1,    30,    31,    32,    67,    -1,    69,
     3185      -1,    71,    -1,    39,    74,    75,    -1,     4,     5,     6,
     3186       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3187      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3188      27,    67,    -1,    30,    31,    32,    -1,    -1,    74,    75,
     3189     110,   111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,
     3190      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3191      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3192      67,    -1,    69,   109,    71,   111,    -1,    74,    75,    -1,
     3193      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3194      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,
     3195      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3196      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3197     117,   118,     4,     5,     6,     7,     8,     9,    10,    11,
    37123198      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    37133199      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     
    37163202      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    37173203      -1,    30,    31,    32,    -1,    67,    -1,    69,    -1,    71,
    3718       39,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
     3204      39,    40,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
    37193205      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37203206      -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,    67,    -1,
    3721       -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,   111,
    3722       -1,    -1,    -1,    -1,    83,    84,   118,   119,     4,     5,
    3723        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3724       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3725       26,    27,   111,    -1,    30,    31,    32,    -1,    -1,   118,
    3726      119,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,    12,
    3727       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3728       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3729       -1,    67,    -1,    69,    -1,    71,    39,    -1,    74,    75,
    3730       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3732       96,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
    3733       -1,    74,    75,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3734       83,    84,   118,   119,     4,     5,     6,     7,     8,     9,
    3735       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3736       20,    21,    22,    23,    24,    25,    26,    27,   111,    -1,
    3737       30,    31,    32,    -1,    -1,   118,   119,    -1,    -1,    39,
    3738       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3739       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3740       -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
    3741       -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,     6,
     3207      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   111,
     3208      -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
    37423209       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    37433210      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3744       27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
    3745       -1,   111,    39,    -1,    -1,    -1,    -1,    -1,   118,   119,
     3211      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
     3212      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37463213      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37473214      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     
    37513218      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
    37523219      -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
    3753       -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3220     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37543221      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37553222      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
     
    37583225      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    37593226      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
    3760       -1,    -1,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,
     3227      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
    37613228      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37623229      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3763       71,    -1,    -1,    74,    75,    10,    11,    12,    13,    14,
     3230      71,    -1,    -1,    74,    75,    -1,     4,     5,     6,     7,
     3231       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3232      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3233      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3234     111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
     3235      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3236      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3237      -1,    69,    -1,    71,    -1,    -1,    74,    75,    10,    11,
     3238      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3239      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3240      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
     3241      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3242     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3243      -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,    -1,
     3244      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
     3245      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     3246      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3247      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     3248      -1,    -1,   114,    -1,    -1,   117,   118,   119,   120,   121,
     3249     122,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3250      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3251      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3252      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
     3253      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3254      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
     3255      -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3256      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3257      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3258      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
     3259     109,   110,   111,    -1,    -1,    83,    84,    -1,   117,   118,
     3260     119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
     3261      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3262      26,    27,    -1,   111,    30,    31,    32,    -1,    -1,   117,
     3263     118,    37,    38,    39,    40,    10,    11,    12,    13,    14,
    37643264      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    37653265      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3766       -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
    3767      111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,    -1,
     3266      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
     3267      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3268      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3269      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3270      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,
     3271      -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
     3272      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3273      23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
     3274      -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
     3275      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3276      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
     3277      32,    -1,    -1,    66,    67,    -1,    -1,    39,    40,    72,
     3278      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3279      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3280      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
     3281      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
     3282      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3283      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3284      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
     3285      30,    31,    32,   115,    -1,   117,   118,    37,    38,    39,
     3286      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3287      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3288      -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
     3289      39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
     3290      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3291      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3292      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
     3293      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
     3294     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
     3295      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3296      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
     3297      37,    38,    39,    40,    -1,    10,    11,    12,    13,    14,
     3298      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3299      25,    26,    27,    28,    -1,    30,    31,    32,    -1,    66,
     3300      67,    -1,    -1,    -1,    39,    72,    -1,    74,    75,    76,
     3301      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3302      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3303      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3304      75,    76,   109,    78,   111,    -1,    -1,    -1,    83,    84,
     3305     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
    37683306      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3769       -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
    3770       75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    3771       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3307      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3308      -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
     3309      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3310      26,    27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,
     3311      -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
     3312      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3313      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     3314      -1,    67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,
     3315      76,    -1,    78,    -1,    -1,    -1,    -1,    83,    84,    -1,
    37723316      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3773       -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3774       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    10,
    3775       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3776       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3777       31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
    3778       -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3779       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3780       23,    24,    25,    26,    27,    66,    67,    30,    31,    32,
    3781       -1,    72,    -1,    74,    75,    76,    39,    -1,    79,    80,
    3782       81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3317      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3318      76,    -1,    -1,    -1,    -1,   111,    -1,    83,    84,    -1,
     3319      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37833320      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3784       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,   109,   110,
    3785      111,    74,    75,    -1,    -1,    -1,    -1,   118,   119,   120,
    3786      121,   122,   123,    10,    11,    12,    13,    14,    15,    16,
     3321      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3322      -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
    37873323      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3788       27,    -1,    -1,    30,    31,    32,   109,    -1,   111,    -1,
    3789       37,    38,    39,    40,    -1,   118,   119,    -1,    -1,    -1,
    3790       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3791       19,    20,    21,    22,    23,    24,    25,    26,    27,    66,
    3792       67,    30,    31,    32,    -1,    72,    -1,    74,    75,    76,
    3793       39,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3794       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3324      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3325      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     3326      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3327      27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3328      67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,
     3329      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
     3330      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3331      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     3332      -1,    78,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3333     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3334      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3335      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3336     117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
     3337      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3338      28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3339      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
     3340      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3341      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
     3342      -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
     3343      78,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3344      19,    20,    21,    22,    23,    24,    25,    26,    27,    67,
     3345      -1,    30,    31,    32,    -1,    -1,    74,    75,    -1,    -1,
     3346      39,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3347     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37953348      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
    3796       -1,    -1,   109,    -1,   111,    74,    75,    -1,    -1,    -1,
    3797       -1,   118,   119,   120,   121,   122,   123,    10,    11,    12,
     3349      -1,    -1,    -1,   111,    -1,    74,    75,    -1,    -1,   117,
     3350     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3351      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3352      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3353      39,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
     3354      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3355      20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
     3356      30,    31,    32,    -1,    -1,    74,    75,    -1,    -1,    39,
     3357      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3358      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3359      30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,
     3360      -1,    -1,   111,    -1,    74,    75,    -1,    -1,   117,   118,
     3361      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3362      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3363      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
     3364      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,    -1,
     3365      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3366      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3367      -1,   111,    30,    31,    32,    -1,    -1,   117,   118,    -1,
     3368      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
     3369      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3370      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
     3371      -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
     3372      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3373      20,    21,    22,    23,    24,    25,    26,    27,    -1,    67,
     3374      30,    31,    32,    -1,    -1,    -1,    74,    75,    -1,    39,
     3375      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
     3376     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3377      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
     3378      -1,    -1,    -1,   111,    74,    75,    -1,    -1,    -1,   117,
     3379     118,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    37983380      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    37993381      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3800       -1,    -1,   111,    -1,    37,    38,    39,    40,    -1,   118,
    3801      119,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3802       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3803       25,    26,    27,    66,    67,    30,    31,    32,    -1,    72,
    3804       -1,    74,    75,    76,    39,    -1,    79,    80,    81,    82,
    3805       83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3382      -1,    -1,    -1,    -1,    -1,    -1,    39,   117,   118,    -1,
    38063383      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3807       -1,    -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,
    3808       75,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    3809      123,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3810       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3811       -1,    30,    31,    32,    -1,    -1,   111,    -1,    37,    38,
    3812       39,    40,    -1,   118,   119,    -1,    -1,    -1,    -1,    10,
    3813       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3814       21,    22,    23,    24,    25,    26,    27,    66,    67,    30,
    3815       31,    32,    -1,    72,    -1,    74,    75,    76,    39,    -1,
    3816       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    38173384      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3818       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3819      109,    -1,   111,    74,    75,    -1,    -1,    -1,    -1,   118,
    3820      119,   120,   121,   122,   123,    10,    11,    12,    13,    14,
    3821       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3822       25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
    3823      111,    -1,    37,    38,    39,    40,    -1,   118,   119,    -1,
    3824       -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
    3825       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3826       27,    66,    67,    30,    31,    32,    -1,    72,    -1,    74,
    3827       75,    76,    39,    -1,    79,    80,    81,    82,    83,    84,
    3828       -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3385      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
     3386      -1,    74,    75,    37,    38,    -1,    40,    41,    -1,    43,
     3387      -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
     3388      -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
     3389      64,    -1,    66,    -1,    -1,    -1,    -1,   110,    72,    -1,
     3390      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3391      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    38293392      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3830       67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,    -1,
    3831       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     3,
    3832        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3833       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3834       24,    25,    26,    27,   111,    -1,    30,    31,    32,    -1,
    3835       -1,   118,   119,    -1,    -1,    39,    -1,    -1,    -1,    10,
    3836       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3837       21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
    3838       31,    32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,
    3839       74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3840       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3841       23,    24,    25,    26,    27,    28,    67,    30,    31,    32,
    3842       -1,    72,    -1,    74,    75,    76,    39,    78,    -1,    -1,
    3843      114,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
    3844       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3845       25,    26,    27,    -1,    67,    30,    31,    32,   109,    72,
    3846      111,    74,    75,    76,    39,    78,    -1,   118,   119,    -1,
    3847       83,    84,    -1,    10,    11,    12,    13,    14,    15,    16,
    3848       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3849       27,    -1,    67,    30,    31,    32,    -1,    72,   111,    74,
    3850       75,    76,    39,    -1,    -1,   118,   119,    -1,    83,    84,
    3851       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3852       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3853       67,    30,    31,    32,   109,    72,   111,    74,    75,    76,
    3854       39,    -1,    -1,   118,   119,    -1,    83,    84,    -1,    10,
    3855       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3856       21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
    3857       31,    32,   109,    72,   111,    74,    75,    76,    39,    40,
    3858       -1,   118,   119,    -1,    83,    84,    -1,    10,    11,    12,
    3859       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3860       23,    24,    25,    26,    27,    28,    67,    30,    31,    32,
    3861      109,    -1,   111,    74,    75,    -1,    39,    -1,    -1,   118,
    3862      119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3863       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3864       -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
    3865      111,    74,    75,    -1,   115,    78,    -1,   118,   119,    -1,
    3866       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3867       20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
    3868       30,    31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,
    3869       40,    -1,    -1,    -1,    -1,   118,   119,    -1,    10,    11,
    3870       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3871       22,    23,    24,    25,    26,    27,    -1,    67,    30,    31,
    3872       32,    -1,    -1,    -1,    74,    75,    -1,    39,    40,    10,
    3873       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3874       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3875       31,    32,    -1,    -1,    -1,    67,    -1,    -1,    39,    -1,
    3876       -1,   111,    74,    75,    -1,   115,    -1,    -1,   118,   119,
    3877       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3878       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3879       -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,   111,
    3880       -1,    -1,    -1,   115,    -1,    -1,   118,   119,    -1,    -1,
    3881       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3882       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3883      111,    30,    31,    32,    -1,    -1,    -1,   118,   119,    -1,
    3884       39,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3885       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3886       -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,
    3887       39,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    10,
    3888       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3889       21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
    3890       31,    32,    33,    34,    35,    74,    75,    -1,    39,    -1,
    3891       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,
    3892      119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3893       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
    3894       -1,    -1,   111,    74,    75,    -1,    -1,    -1,    -1,   118,
    3895      119,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3896       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3897       23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    3898       -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    37,    38,
    3899       -1,    40,    41,    -1,    43,    -1,    -1,    46,    47,    48,
    3900       49,    50,    51,    52,    53,    -1,    -1,    56,    57,    -1,
    3901       -1,    -1,    61,    62,    67,    64,    69,    66,    71,    -1,
    3902       -1,    74,    75,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3903       79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
    3904       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3905       -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,
    3906      109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,
    3907      119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,   128,
    3908       -1,    37,    38,   132,    40,    41,    -1,    43,    -1,    -1,
     3393      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3394     114,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
     3395      -1,    37,    38,   127,    40,    41,    -1,    43,   132,    -1,
    39093396      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
    39103397      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
     
    39143401      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39153402      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
    3916       -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
    3917       -1,    -1,   128,    -1,    -1,    -1,   132,     4,     5,     6,
     3403      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3404      -1,   127,    -1,    -1,    -1,    -1,   132,     4,     5,     6,
    39183405       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    39193406      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     
    39273414      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39283415      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
    3929       -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    3930      123,    -1,    -1,    37,    38,   128,    40,    41,    -1,    43,
    3931       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    3932       -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,
    3933       64,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
    3934       -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
    3935       84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3936       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3937       -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
    3938      114,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
    3939       -1,    -1,    37,    38,   128,    40,    41,    -1,    43,    -1,
    3940       -1,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
     3416      -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
     3417      -1,    -1,    37,    38,   127,    40,    41,    -1,    43,    44,
     3418      45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    39413419      -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
    39423420      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
    39433421      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
    39443422      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3945       37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
     3423      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39463424      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
    3947       -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    66,
    3948       -1,    -1,    -1,   128,    -1,    72,    -1,    -1,    -1,    76,
     3425      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
     3426      37,    38,   127,    40,    41,    -1,    43,    -1,    -1,    46,
     3427      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
     3428      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
     3429      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
    39493430      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
    3950       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
    3951       -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3952       -1,    -1,   109,    -1,   111,    -1,    -1,    37,    38,    -1,
    3953       40,   118,   119,   120,   121,   122,   123,    66,    -1,    -1,
    3954       -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
    3955       79,    80,    81,    82,    83,    84,    66,    86,    87,    -1,
     3431      87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
     3432      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3433      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
     3434     117,   118,   119,   120,   121,   122,    66,    -1,    -1,    -1,
     3435     127,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     3436      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     3437      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     3438      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     3439      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
     3440     120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
     3441      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3442      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3443      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
     3444      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3445      37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
     3446      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3447      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    66,
     3448      86,    87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
     3449      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3450      87,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
     3451      40,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
     3452      -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,    40,
     3453     117,   118,   119,   120,   121,   122,    66,    -1,    -1,    -1,
    39563454      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
    3957       80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
    3958      109,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,   118,
    3959      119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,   109,
    3960       -1,    -1,    -1,    -1,    37,    38,    -1,    40,   118,   119,
    3961      120,   121,   122,   123,    66,    -1,    -1,    -1,    -1,    -1,
    3962       72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
    3963       82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
    3964       -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
    3965       83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
    3966       -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
    3967      122,   123,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
    3968       -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
    3969      123,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3455      80,    81,    82,    83,    84,    66,    86,    87,    -1,    -1,
     3456      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     3457      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,   109,
     3458      -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,   119,
     3459     120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3460      -1,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
     3461     121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
     3462      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
     3463      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3464      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3465      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,
     3466      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
     3467       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3468      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3469      25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3470      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
     3471      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3472      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3473      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3474      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
     3475       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    39703476      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3971       23,    24,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
     3477      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
    39723478      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
    39733479      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39743480      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3975       -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,
    3976       -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
    3977       83,    84,     3,     4,     5,     6,     7,     8,     9,    10,
    3978       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3979       21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
    3980       31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
     3481      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
     3482      -1,    74,    75,     3,     4,     5,     6,     7,     8,     9,
     3483      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3484      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     3485      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
    39813486      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39823487      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3983       -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
    3984       71,    -1,    -1,    74,    75,     3,     4,     5,     6,     7,
     3488      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3489      -1,    71,    -1,    -1,    74,    75,     4,     5,     6,     7,
    39853490       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    39863491      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     
    39893494      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39903495      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3991       -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,     5,
    3992        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3993       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3994       26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
    3995       -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
    3996       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3997       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3998       -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75
     3496      -1,    69,    -1,    71,    -1,    -1,    74,    75
    39993497};
    40003498
    4001 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    4002    symbol of state STATE-NUM.  */
     3499  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     3500     symbol of state STATE-NUM.  */
    40033501static const yytype_uint16 yystos[] =
    40043502{
     
    40073505      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
    40083506      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
    4009       76,    83,    84,   109,   111,   118,   119,   137,   140,   149,
     3507      76,    83,    84,   109,   111,   117,   118,   137,   140,   149,
    40103508     198,   212,   213,   214,   215,   216,   217,   218,   219,   220,
    40113509     221,   222,   223,   224,   225,   226,   227,   228,   229,   231,
    4012      232,   233,   234,   235,   236,   237,   238,   240,   241,   242,
    4013      243,   244,   245,   247,   255,   256,   283,   284,   285,   293,
    4014      296,   302,   303,   305,   307,   308,   314,   319,   323,   324,
    4015      325,   326,   327,   328,   329,   330,   350,   367,   368,   369,
    4016      370,    72,   139,   140,   149,   215,   217,   225,   227,   237,
    4017      241,   243,   284,    82,   109,   312,   313,   314,   312,   312,
    4018       72,    74,    75,    76,   138,   139,   273,   274,   294,   295,
    4019       74,    75,   274,   109,   305,    11,   199,   109,   149,   319,
    4020      324,   325,   326,   328,   329,   330,   112,   134,   111,   218,
    4021      225,   227,   323,   327,   366,   367,   370,   371,   135,   107,
    4022      131,   277,   114,   135,   173,    74,    75,   137,   272,   135,
    4023      135,   135,   116,   135,    74,    75,   109,   149,   309,   318,
    4024      319,   320,   321,   322,   323,   327,   331,   332,   333,   334,
    4025      335,   341,     3,    28,    78,   239,     3,     5,    74,   111,
    4026      149,   217,   228,   232,   235,   244,   285,   323,   327,   370,
    4027      215,   217,   227,   237,   241,   243,   284,   323,   327,    33,
    4028      233,   233,   228,   235,   135,   233,   228,   233,   228,    75,
    4029      109,   114,   274,   285,   114,   274,   233,   228,   116,   135,
    4030      135,     0,   134,   109,   173,   312,   312,   134,   111,   225,
    4031      227,   368,   272,   272,   131,   227,   109,   149,   309,   319,
    4032      323,   111,   149,   370,   306,   230,   314,   109,   290,   109,
    4033      109,    51,   109,    37,    38,    40,    66,    72,    76,    79,
    4034       80,    81,    82,    86,    87,   109,   111,   120,   121,   122,
    4035      123,   136,   140,   141,   142,   143,   148,   149,   150,   151,
    4036      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
    4037      162,   164,   167,   225,   276,   292,   366,   371,   227,   110,
    4038      110,   110,   110,   110,   110,   110,    74,    75,   111,   225,
    4039      272,   350,   368,   111,   118,   149,   164,   217,   218,   224,
    4040      227,   231,   232,   237,   240,   241,   243,   262,   263,   267,
    4041      268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
    4042      371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
    4043      114,   149,   164,   278,   278,   115,   134,   116,   132,   109,
    4044      116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
    4045      321,   322,   332,   333,   334,   335,   227,   318,   331,    64,
    4046      311,   111,   312,   349,   350,   312,   312,   173,   134,   109,
    4047      312,   349,   312,   312,   227,   309,   109,   109,   226,   227,
    4048      225,   227,   112,   134,   225,   366,   371,   173,   134,   272,
    4049      277,   217,   232,   323,   327,   173,   134,   294,   227,   237,
    4050      132,   227,   227,   292,   248,   246,   258,   274,   257,   227,
    4051      294,   132,   132,   305,   134,   139,   271,     3,   135,   207,
    4052      208,   222,   224,   227,   134,   311,   109,   311,   164,   319,
    4053      227,   109,   134,   272,   114,    33,    34,    35,   225,   286,
    4054      287,   289,   134,   129,   131,   291,   134,   228,   234,   235,
    4055      272,   315,   316,   317,   109,   141,   109,   148,   109,   148,
    4056      151,   109,   148,   109,   109,   148,   148,   111,   164,   169,
    4057      173,   225,   275,   366,   370,   112,   134,    82,    85,    86,
    4058       87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
    4059      102,   103,   104,   105,   106,   131,   166,   151,   151,   118,
    4060      124,   125,   120,   121,    88,    89,    90,    91,   126,   127,
    4061       92,    93,   119,   128,   129,    94,    95,   130,   131,   373,
    4062      109,   149,   345,   346,   347,   348,   349,   110,   116,   109,
    4063      349,   350,   109,   349,   350,   134,   109,   225,   368,   112,
    4064      134,   135,   111,   225,   227,   361,   362,   370,   371,   135,
    4065      109,   111,   149,   319,   336,   337,   338,   339,   340,   341,
    4066      342,   343,   344,   350,   351,   352,   353,   354,   355,   356,
    4067      149,   370,   227,   135,   135,   149,   225,   227,   363,   272,
    4068      225,   350,   363,   272,   109,   134,   134,   134,   112,   134,
    4069       72,    80,   111,   113,   140,   274,   278,   279,   280,   281,
    4070      282,   134,   134,   134,   134,   134,   134,   309,   110,   110,
    4071      110,   110,   110,   110,   110,   318,   331,   109,   277,   112,
    4072      207,   134,   309,   169,   276,   169,   276,   309,   111,   207,
    4073      311,   173,   134,   207,   110,    40,   111,   115,   225,   249,
    4074      250,   251,   366,   114,   116,   372,   131,   259,   114,   227,
    4075      264,   265,   266,   269,   270,   110,   116,   173,   134,   118,
    4076      164,   134,   224,   227,   263,   362,   370,   303,   304,   109,
    4077      149,   336,   110,   116,   373,   274,   286,   109,   114,   274,
    4078      276,   286,   110,   116,   109,   141,   110,   117,   275,   275,
    4079      275,   111,   139,   145,   164,   276,   275,   112,   134,   110,
    4080      116,   110,   109,   149,   349,   357,   358,   359,   360,   110,
    4081      116,   164,   111,   139,   111,   144,   145,   134,   111,   139,
    4082      144,   164,   151,   151,   151,   152,   152,   153,   153,   154,
    4083      154,   154,   154,   155,   155,   156,   157,   158,   159,   160,
    4084      117,   169,   164,   134,   346,   347,   348,   227,   345,   312,
    4085      312,   164,   276,   134,   271,   134,   225,   350,   363,   227,
    4086      231,   112,   112,   134,   370,   112,   109,   134,   319,   337,
    4087      338,   339,   342,   352,   353,   354,   112,   134,   227,   336,
    4088      340,   351,   109,   312,   355,   373,   312,   312,   373,   109,
    4089      312,   355,   312,   312,   312,   312,   350,   225,   361,   371,
    4090      272,   112,   116,   112,   116,   373,   225,   363,   373,   260,
    4091      261,   262,   263,   260,   260,   272,   164,   134,   111,   274,
    4092      117,   116,   372,   278,    80,   111,   117,   282,    29,   209,
    4093      210,   272,   260,   139,   309,   139,   311,   109,   349,   350,
    4094      109,   349,   350,   141,   350,   173,   264,   110,   110,   110,
    4095      110,   112,   173,   207,   173,   114,   250,   251,   112,   134,
    4096      109,   117,   149,   252,   254,   318,   319,   331,   357,   116,
    4097      132,   116,   132,   274,   248,   274,   115,   162,   163,   258,
    4098      135,   135,   139,   222,   135,   135,   260,   109,   149,   370,
    4099      135,   115,   227,   287,   288,   135,   134,   134,   109,   135,
    4100      110,   316,   169,   170,   117,   132,   111,   141,   200,   201,
    4101      202,   110,   116,   110,   134,   117,   110,   110,   110,   111,
    4102      164,   358,   359,   360,   227,   357,   312,   312,   114,   151,
    4103      167,   164,   165,   168,   116,   135,   134,   134,   110,   116,
    4104      164,   134,   115,   162,   117,   264,   110,   110,   110,   345,
    4105      264,   110,   260,   225,   363,   111,   118,   149,   164,   164,
    4106      227,   342,   264,   110,   110,   110,   110,   110,   110,   110,
    4107        7,   227,   336,   340,   351,   134,   134,   373,   134,   134,
    4108      110,   135,   135,   135,   135,   277,   135,   162,   163,   164,
    4109      310,   134,   278,   280,   115,   134,   211,   274,    40,    41,
    4110       43,    46,    47,    48,    49,    50,    51,    52,    53,    57,
    4111       61,    62,    72,   111,   128,   170,   171,   172,   173,   174,
    4112      175,   177,   178,   190,   192,   193,   198,   212,   308,    29,
    4113      135,   131,   277,   134,   134,   110,   135,   173,   248,   132,
    4114      132,   319,   163,   227,   253,   254,   253,   274,   312,   115,
    4115      259,   372,   110,   116,   112,   112,   135,   227,   116,   373,
    4116      290,   110,   286,   215,   217,   225,   298,   299,   300,   301,
    4117      292,   110,   110,   117,   163,   109,   110,   117,   116,   139,
    4118      164,   164,   112,   110,   110,   110,   357,   279,   116,   135,
    4119      168,   112,   139,   146,   147,   164,   145,   135,   146,   162,
    4120      167,   135,   109,   349,   350,   135,   135,   134,   135,   135,
    4121      135,   164,   110,   135,   109,   349,   350,   109,   355,   109,
    4122      355,   350,   226,     7,   118,   135,   164,   264,   264,   263,
    4123      267,   267,   268,   116,   116,   110,   110,   112,    96,   123,
    4124      135,   135,   146,   278,   164,   116,   132,   212,   216,   227,
    4125      231,   109,   109,   171,   109,   109,    72,   132,    72,   132,
    4126       72,   118,   170,   109,   173,   165,   165,   117,   112,   143,
    4127      132,   135,   134,   135,   211,   110,   164,   264,   264,   312,
    4128      110,   115,   252,   115,   134,   110,   134,   135,   309,   115,
    4129      134,   135,   135,   110,   114,   200,   112,   163,   132,   200,
    4130      202,   110,   116,   135,   109,   349,   350,   372,   165,   112,
    4131      135,    85,   113,   116,   135,   135,   112,   135,   110,   134,
    4132      110,   110,   112,   112,   112,   135,   110,   134,   134,   134,
    4133      164,   164,   135,   112,   135,   135,   135,   135,   134,   134,
    4134      163,   163,   112,   112,   135,   135,   274,   227,   169,   169,
    4135       47,   169,   134,   132,   132,   132,   169,   132,   169,    58,
    4136       59,    60,   194,   195,   196,   132,    63,   132,   312,   114,
    4137      175,   115,   132,   135,   135,    96,   269,   270,   110,   299,
    4138      116,   132,   116,   132,   115,   297,   117,   141,   110,   110,
    4139      117,   168,   112,   134,   115,   112,   111,   147,   111,   147,
    4140      147,   112,   112,   112,   264,   112,   264,   264,   264,   135,
    4141      135,   112,   112,   110,   110,   112,   116,    96,   263,    96,
    4142      135,   112,   112,   110,   110,   109,   110,   170,   191,   212,
    4143      132,   110,   109,   109,   173,   196,    58,    59,   164,   171,
    4144      144,   110,   110,   114,   134,   134,   298,   141,   203,   109,
    4145      132,   203,   135,   117,   264,   134,   134,   135,   135,   135,
     3510     232,   233,   234,   235,   236,   237,   239,   240,   241,   242,
     3511     243,   244,   246,   254,   255,   282,   283,   284,   292,   295,
     3512     301,   302,   304,   306,   307,   313,   318,   322,   323,   324,
     3513     325,   326,   327,   328,   329,   349,   366,   367,   368,   369,
     3514      72,   139,   140,   149,   215,   217,   225,   227,   236,   240,
     3515     242,   283,    82,   109,   311,   312,   313,   311,   311,    72,
     3516      74,    75,    76,   138,   139,   272,   273,   293,   294,    74,
     3517      75,   273,   109,   304,    11,   199,   109,   149,   318,   323,
     3518     324,   325,   327,   328,   329,   112,   134,   111,   218,   225,
     3519     227,   322,   326,   365,   366,   369,   370,   135,   107,   131,
     3520     276,   114,   135,   173,    74,    75,   137,   271,   135,   135,
     3521     135,   116,   135,    74,    75,   109,   149,   308,   317,   318,
     3522     319,   320,   321,   322,   326,   330,   331,   332,   333,   334,
     3523     340,     3,    28,    78,   238,     3,     5,    74,   111,   149,
     3524     217,   228,   232,   234,   243,   284,   322,   326,   369,   215,
     3525     217,   227,   236,   240,   242,   283,   322,   326,    33,   233,
     3526     233,   228,   234,   135,   233,   228,   233,   228,    75,   109,
     3527     114,   273,   284,   114,   273,   233,   228,   116,   135,   135,
     3528       0,   134,   109,   173,   311,   311,   134,   111,   225,   227,
     3529     367,   271,   271,   131,   227,   109,   149,   308,   318,   322,
     3530     111,   149,   369,   305,   230,   313,   109,   289,   109,   109,
     3531      51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
     3532      81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
     3533     136,   140,   141,   142,   143,   148,   149,   150,   151,   152,
     3534     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
     3535     164,   167,   225,   275,   291,   365,   370,   227,   110,   110,
     3536     110,   110,   110,   110,   110,    74,    75,   111,   225,   271,
     3537     349,   367,   111,   117,   149,   164,   217,   218,   224,   227,
     3538     231,   232,   236,   239,   240,   242,   261,   262,   266,   267,
     3539     268,   269,   283,   349,   361,   362,   363,   364,   369,   370,
     3540     112,   109,   322,   326,   369,   109,   116,   132,   111,   114,
     3541     149,   164,   277,   277,   115,   134,   116,   132,   109,   116,
     3542     132,   116,   132,   116,   132,   311,   132,   318,   319,   320,
     3543     321,   331,   332,   333,   334,   227,   317,   330,    64,   310,
     3544     111,   311,   348,   349,   311,   311,   173,   134,   109,   311,
     3545     348,   311,   311,   227,   308,   109,   109,   226,   227,   225,
     3546     227,   112,   134,   225,   365,   370,   173,   134,   271,   276,
     3547     217,   232,   322,   326,   173,   134,   293,   227,   236,   132,
     3548     227,   227,   291,   247,   245,   257,   273,   256,   227,   293,
     3549     132,   132,   304,   134,   139,   270,     3,   135,   207,   208,
     3550     222,   224,   227,   134,   310,   109,   310,   164,   318,   227,
     3551     109,   134,   271,   114,    33,    34,    35,   225,   285,   286,
     3552     288,   134,   128,   131,   290,   134,   228,   233,   234,   271,
     3553     314,   315,   316,   109,   141,   109,   148,   109,   148,   151,
     3554     109,   148,   109,   109,   148,   148,   111,   164,   169,   173,
     3555     225,   274,   365,   369,   112,   134,    82,    85,    86,    87,
     3556     109,   111,   113,   114,    97,    98,    99,   100,   101,   102,
     3557     103,   104,   105,   106,   131,   166,   151,   151,   117,   123,
     3558     124,   119,   120,    88,    89,    90,    91,   125,   126,    92,
     3559      93,   118,   127,   128,    94,    95,   129,   131,   372,   109,
     3560     149,   344,   345,   346,   347,   348,   110,   116,   109,   348,
     3561     349,   109,   348,   349,   134,   109,   225,   367,   112,   134,
     3562     135,   111,   225,   227,   360,   361,   369,   370,   135,   109,
     3563     111,   149,   318,   335,   336,   337,   338,   339,   340,   341,
     3564     342,   343,   349,   350,   351,   352,   353,   354,   355,   149,
     3565     369,   227,   135,   135,   149,   225,   227,   362,   271,   225,
     3566     349,   362,   271,   109,   134,   134,   134,   112,   134,    72,
     3567     111,   113,   140,   273,   277,   278,   279,   280,   281,   134,
     3568     134,   134,   134,   134,   134,   308,   110,   110,   110,   110,
     3569     110,   110,   110,   317,   330,   109,   276,   112,   207,   134,
     3570     308,   169,   275,   169,   275,   308,   111,   207,   310,   173,
     3571     134,   207,   110,    40,   111,   115,   225,   248,   249,   250,
     3572     365,   114,   116,   371,   131,   258,   114,   227,   263,   264,
     3573     265,   268,   269,   110,   116,   173,   134,   117,   164,   134,
     3574     224,   227,   262,   361,   369,   302,   303,   109,   149,   335,
     3575     110,   116,   372,   273,   285,   109,   114,   273,   275,   285,
     3576     110,   116,   109,   141,   110,   130,   274,   274,   274,   145,
     3577     164,   275,   274,   112,   134,   110,   116,   110,   109,   149,
     3578     348,   356,   357,   358,   359,   110,   116,   164,   111,   139,
     3579     144,   145,   134,   111,   139,   144,   164,   151,   151,   151,
     3580     152,   152,   153,   153,   154,   154,   154,   154,   155,   155,
     3581     156,   157,   158,   159,   160,   130,   169,   164,   134,   345,
     3582     346,   347,   227,   344,   311,   311,   164,   275,   134,   270,
     3583     134,   225,   349,   362,   227,   231,   112,   112,   134,   369,
     3584     112,   109,   134,   318,   336,   337,   338,   341,   351,   352,
     3585     353,   112,   134,   227,   335,   339,   350,   109,   311,   354,
     3586     372,   311,   311,   372,   109,   311,   354,   311,   311,   311,
     3587     311,   349,   225,   360,   370,   271,   112,   116,   112,   116,
     3588     372,   225,   362,   372,   259,   260,   261,   262,   259,   259,
     3589     271,   164,   134,   111,   273,   130,   116,   371,   277,   111,
     3590     130,   281,    29,   209,   210,   271,   259,   139,   308,   139,
     3591     310,   109,   348,   349,   109,   348,   349,   141,   349,   173,
     3592     263,   110,   110,   110,   110,   112,   173,   207,   173,   114,
     3593     249,   250,   112,   134,   109,   130,   149,   251,   253,   317,
     3594     318,   330,   356,   116,   132,   116,   132,   273,   247,   273,
     3595     115,   162,   163,   257,   135,   135,   139,   222,   135,   135,
     3596     259,   109,   149,   369,   135,   115,   227,   286,   287,   135,
     3597     134,   134,   109,   135,   110,   315,   169,   170,   130,   132,
     3598     111,   141,   200,   201,   202,   110,   116,   110,   110,   110,
     3599     110,   111,   164,   357,   358,   359,   227,   356,   311,   311,
     3600     114,   151,   167,   164,   165,   168,   116,   135,   134,   110,
     3601     116,   164,   134,   115,   162,   130,   263,   110,   110,   110,
     3602     344,   263,   110,   259,   225,   362,   111,   117,   149,   164,
     3603     164,   227,   341,   263,   110,   110,   110,   110,   110,   110,
     3604     110,     7,   227,   335,   339,   350,   134,   134,   372,   134,
     3605     134,   110,   135,   135,   135,   135,   276,   135,   162,   163,
     3606     164,   309,   134,   277,   279,   115,   134,   211,   273,    40,
     3607      41,    43,    46,    47,    48,    49,    50,    51,    52,    53,
     3608      57,    61,    62,    72,   111,   127,   170,   171,   172,   173,
     3609     174,   175,   177,   178,   190,   192,   193,   198,   212,   307,
     3610      29,   135,   131,   276,   134,   134,   110,   135,   173,   247,
     3611     132,   132,   318,   163,   227,   252,   253,   252,   273,   311,
     3612     115,   258,   371,   110,   116,   112,   112,   135,   227,   116,
     3613     372,   289,   110,   285,   215,   217,   225,   297,   298,   299,
     3614     300,   291,   110,   110,   130,   163,   109,   110,   130,   116,
     3615     139,   112,   110,   110,   110,   356,   278,   116,   135,   168,
     3616     112,   139,   146,   147,   145,   135,   146,   162,   167,   135,
     3617     109,   348,   349,   135,   135,   134,   135,   135,   135,   164,
     3618     110,   135,   109,   348,   349,   109,   354,   109,   354,   349,
     3619     226,     7,   117,   135,   164,   263,   263,   262,   266,   266,
     3620     267,   116,   116,   110,   110,   112,    96,   122,   135,   135,
     3621     146,   277,   164,   116,   132,   212,   216,   227,   231,   109,
     3622     109,   171,   109,   109,    72,   132,    72,   132,    72,   117,
     3623     170,   109,   173,   165,   165,   130,   112,   143,   132,   135,
     3624     134,   135,   211,   110,   164,   263,   263,   311,   110,   115,
     3625     251,   115,   134,   110,   134,   135,   308,   115,   134,   135,
     3626     135,   110,   114,   200,   112,   163,   132,   200,   202,   110,
     3627     109,   348,   349,   371,   165,   112,   135,    85,   113,   116,
     3628     135,   112,   135,   110,   134,   110,   110,   112,   112,   112,
     3629     135,   110,   134,   134,   134,   164,   164,   135,   112,   135,
     3630     135,   135,   135,   134,   134,   163,   163,   112,   112,   135,
     3631     135,   273,   227,   169,   169,    47,   169,   134,   132,   132,
     3632     132,   169,   132,   169,    58,    59,    60,   194,   195,   196,
     3633     132,    63,   132,   311,   114,   175,   115,   132,   135,   135,
     3634      96,   268,   269,   110,   298,   116,   132,   116,   132,   115,
     3635     296,   130,   141,   110,   110,   130,   134,   115,   112,   111,
     3636     147,   111,   147,   147,   112,   112,   263,   112,   263,   263,
     3637     263,   135,   135,   112,   112,   110,   110,   112,   116,    96,
     3638     262,    96,   135,   112,   112,   110,   110,   109,   110,   170,
     3639     191,   212,   132,   110,   109,   109,   173,   196,    58,    59,
     3640     164,   171,   144,   110,   110,   114,   134,   134,   297,   141,
     3641     203,   109,   132,   203,   263,   134,   134,   135,   135,   135,
    41463642     135,   112,   112,   134,   135,   112,   171,    44,    45,   114,
    41473643     181,   182,   183,   169,   171,   135,   110,   170,   114,   183,
    4148       96,   134,    96,   134,   109,   109,   132,   115,   134,   272,
    4149      309,   115,   116,   117,   163,   110,   112,   164,   135,   146,
    4150      146,   110,   110,   110,   110,   267,    42,   163,   179,   180,
    4151      310,   117,   134,   171,   181,   110,   132,   171,   132,   134,
    4152      110,   134,   110,   134,    96,   134,    96,   134,   132,   298,
    4153      141,   139,   204,   110,   132,   117,   110,   135,   135,   171,
    4154       96,   116,   117,   135,   205,   206,   212,   132,   170,   170,
    4155      205,   173,   197,   225,   366,   173,   197,   110,   134,   110,
    4156      134,   115,   110,   116,   164,   112,   112,   163,   179,   182,
    4157      184,   185,   134,   132,   182,   186,   187,   135,   109,   149,
    4158      309,   357,   139,   135,   173,   197,   173,   197,   109,   132,
    4159      139,   171,   176,   115,   182,   212,   170,    56,   176,   189,
    4160      115,   182,   110,   227,   110,   135,   135,   292,   171,   176,
    4161      132,   188,   189,   176,   189,   173,   173,   110,   110,   110,
    4162      188,   135,   135,   173,   173,   135,   135
     3644      96,   134,    96,   134,   109,   109,   132,   115,   134,   271,
     3645     308,   115,   116,   130,   163,   110,   135,   146,   146,   110,
     3646     110,   110,   110,   266,    42,   163,   179,   180,   309,   130,
     3647     134,   171,   181,   110,   132,   171,   132,   134,   110,   134,
     3648     110,   134,    96,   134,    96,   134,   132,   297,   141,   139,
     3649     204,   110,   132,   110,   135,   135,   171,    96,   116,   130,
     3650     135,   205,   206,   212,   132,   170,   170,   205,   173,   197,
     3651     225,   365,   173,   197,   110,   134,   110,   134,   115,   110,
     3652     116,   112,   112,   163,   179,   182,   184,   185,   134,   132,
     3653     182,   186,   187,   135,   109,   149,   308,   356,   139,   135,
     3654     173,   197,   173,   197,   109,   132,   139,   171,   176,   115,
     3655     182,   212,   170,    56,   176,   189,   115,   182,   110,   227,
     3656     110,   135,   135,   291,   171,   176,   132,   188,   189,   176,
     3657     189,   173,   173,   110,   110,   110,   188,   135,   135,   173,
     3658     173,   135,   135
    41633659};
    41643660
    4165 #define yyerrok         (yyerrstatus = 0)
    4166 #define yyclearin       (yychar = YYEMPTY)
    4167 #define YYEMPTY         (-2)
    4168 #define YYEOF           0
    4169 
    4170 #define YYACCEPT        goto yyacceptlab
    4171 #define YYABORT         goto yyabortlab
    4172 #define YYERROR         goto yyerrorlab
    4173 
    4174 
    4175 /* Like YYERROR except do call yyerror.  This remains here temporarily
    4176    to ease the transition to the new meaning of YYERROR, for GCC.
    4177    Once GCC version 2 has supplanted version 1, this can go.  However,
    4178    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
    4179    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
    4180    discussed.  */
    4181 
    4182 #define YYFAIL          goto yyerrlab
    4183 #if defined YYFAIL
    4184   /* This is here to suppress warnings from the GCC cpp's
    4185      -Wunused-macros.  Normally we don't worry about that warning, but
    4186      some users do, and we want to make it easy for users to remove
    4187      YYFAIL uses, which will produce warnings from Bison 2.5.  */
    4188 #endif
     3661  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
     3662static const yytype_uint16 yyr1[] =
     3663{
     3664       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
     3665     138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
     3666     142,   142,   143,   143,   143,   143,   143,   143,   143,   143,
     3667     143,   143,   143,   144,   144,   145,   145,   146,   146,   147,
     3668     147,   147,   147,   147,   148,   148,   148,   148,   148,   148,
     3669     148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
     3670     149,   149,   150,   150,   150,   150,   151,   151,   151,   152,
     3671     152,   152,   152,   153,   153,   153,   154,   154,   154,   155,
     3672     155,   155,   155,   155,   156,   156,   156,   157,   157,   158,
     3673     158,   159,   159,   160,   160,   161,   161,   162,   162,   162,
     3674     162,   163,   164,   164,   164,   165,   165,   166,   166,   166,
     3675     166,   166,   166,   166,   166,   166,   166,   166,   167,   167,
     3676     167,   167,   168,   168,   169,   169,   170,   170,   171,   171,
     3677     171,   171,   171,   171,   171,   171,   171,   172,   173,   173,
     3678     174,   174,   175,   175,   175,   175,   176,   176,   177,   178,
     3679     178,   178,   178,   178,   178,   179,   179,   179,   180,   180,
     3680     181,   181,   182,   182,   183,   184,   184,   185,   185,   186,
     3681     186,   187,   187,   187,   187,   188,   188,   189,   189,   190,
     3682     190,   190,   191,   191,   192,   192,   192,   192,   192,   192,
     3683     192,   192,   192,   192,   193,   193,   193,   194,   194,   194,
     3684     194,   194,   195,   195,   195,   195,   196,   197,   197,   197,
     3685     197,   197,   198,   198,   198,   198,   198,   199,   199,   200,
     3686     200,   201,   201,   202,   202,   203,   203,   203,   204,   204,
     3687     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
     3688     210,   210,   211,   211,   212,   212,   213,   213,   213,   213,
     3689     213,   214,   214,   214,   215,   215,   215,   216,   216,   216,
     3690     216,   216,   217,   217,   217,   218,   218,   219,   219,   219,
     3691     220,   220,   220,   220,   220,   221,   221,   222,   222,   222,
     3692     222,   223,   223,   224,   224,   224,   224,   225,   225,   225,
     3693     225,   226,   226,   227,   227,   228,   228,   229,   229,   229,
     3694     229,   229,   230,   229,   231,   231,   231,   232,   232,   233,
     3695     233,   233,   233,   233,   233,   233,   233,   234,   234,   234,
     3696     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
     3697     235,   235,   235,   235,   235,   236,   236,   237,   237,   237,
     3698     237,   238,   238,   238,   238,   239,   239,   239,   239,   240,
     3699     240,   240,   241,   241,   241,   241,   242,   242,   242,   243,
     3700     243,   244,   244,   245,   244,   244,   244,   246,   246,   247,
     3701     247,   248,   248,   248,   248,   249,   249,   249,   249,   250,
     3702     250,   251,   251,   251,   251,   251,   252,   252,   253,   254,
     3703     255,   255,   256,   255,   257,   257,   258,   258,   259,   259,
     3704     260,   260,   260,   260,   260,   261,   261,   261,   261,   262,
     3705     262,   263,   263,   264,   264,   265,   265,   265,   265,   266,
     3706     266,   266,   266,   266,   267,   267,   267,   267,   267,   268,
     3707     268,   269,   269,   270,   270,   271,   271,   271,   272,   272,
     3708     272,   273,   273,   273,   274,   274,   274,   275,   275,   275,
     3709     275,   276,   276,   276,   277,   277,   278,   278,   278,   278,
     3710     278,   279,   279,   280,   280,   281,   281,   281,   281,   281,
     3711     282,   282,   282,   282,   283,   283,   283,   284,   285,   285,
     3712     287,   286,   286,   288,   288,   288,   289,   289,   290,   290,
     3713     290,   291,   291,   291,   291,   292,   292,   292,   293,   293,
     3714     294,   294,   295,   296,   295,   297,   297,   298,   298,   299,
     3715     299,   299,   300,   300,   301,   301,   302,   302,   303,   303,
     3716     304,   304,   304,   305,   304,   304,   306,   306,   306,   307,
     3717     307,   307,   307,   307,   307,   307,   307,   307,   308,   308,
     3718     308,   309,   310,   310,   311,   311,   312,   312,   313,   314,
     3719     314,   315,   315,   315,   316,   316,   316,   316,   317,   317,
     3720     317,   317,   318,   318,   319,   319,   319,   320,   320,   320,
     3721     320,   321,   321,   322,   322,   322,   323,   323,   323,   324,
     3722     324,   324,   325,   325,   325,   326,   326,   326,   327,   327,
     3723     327,   328,   328,   328,   329,   329,   329,   330,   330,   330,
     3724     330,   331,   331,   332,   332,   332,   333,   333,   333,   333,
     3725     334,   334,   334,   335,   335,   335,   335,   336,   336,   336,
     3726     337,   337,   337,   337,   338,   338,   338,   339,   339,   339,
     3727     339,   340,   340,   341,   341,   341,   342,   342,   343,   343,
     3728     344,   344,   344,   345,   345,   345,   345,   345,   346,   346,
     3729     346,   346,   347,   347,   347,   348,   348,   348,   349,   349,
     3730     349,   349,   350,   350,   350,   351,   351,   351,   351,   351,
     3731     352,   352,   352,   352,   353,   353,   353,   354,   354,   354,
     3732     355,   355,   355,   355,   355,   355,   356,   356,   356,   357,
     3733     357,   357,   357,   357,   358,   358,   358,   358,   359,   359,
     3734     360,   360,   360,   361,   361,   362,   362,   362,   362,   362,
     3735     362,   363,   363,   363,   363,   363,   363,   363,   363,   363,
     3736     363,   364,   364,   364,   364,   365,   365,   365,   366,   366,
     3737     367,   367,   367,   367,   367,   367,   368,   368,   368,   368,
     3738     368,   368,   369,   370,   370,   370,   371,   371,   372,   372
     3739};
     3740
     3741  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
     3742static const yytype_uint8 yyr2[] =
     3743{
     3744       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
     3745       1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
     3746       3,     3,     1,     6,     4,     3,     7,     3,     7,     2,
     3747       2,     7,     4,     1,     3,     0,     1,     1,     3,     1,
     3748       3,     7,     3,     7,     1,     1,     1,     2,     2,     2,
     3749       2,     2,     2,     4,     2,     4,     6,     1,     4,     4,
     3750       1,     1,     1,     1,     1,     1,     1,     4,     4,     1,
     3751       3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
     3752       3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
     3753       3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
     3754       5,     1,     1,     3,     2,     0,     1,     1,     1,     1,
     3755       1,     1,     1,     1,     1,     1,     1,     1,     2,     5,
     3756       6,     7,     1,     3,     1,     3,     0,     1,     1,     1,
     3757       1,     1,     1,     1,     1,     1,     6,     4,     2,     7,
     3758       1,     3,     1,     2,     1,     2,     1,     2,     2,     5,
     3759       7,     5,     9,     5,     9,     1,     3,     1,     1,     3,
     3760       3,     2,     1,     2,     2,     0,     1,     2,     3,     0,
     3761       1,     2,     3,     3,     4,     0,     1,     1,     2,     5,
     3762       7,     6,     6,     4,     3,     4,     2,     3,     2,     3,
     3763       3,     3,     3,     5,     3,     3,     4,     1,     5,     6,
     3764       5,     6,     9,    10,     9,    10,     2,     1,     2,     2,
     3765       2,     1,     6,     8,    10,    12,    14,     0,     1,     0,
     3766       1,     1,     3,     4,     7,     0,     1,     3,     1,     3,
     3767       1,     1,     1,     3,     1,     1,     1,     3,     0,     1,
     3768       3,     4,     1,     3,     1,     1,     3,     3,     3,     3,
     3769       3,     2,     3,     6,     3,     3,     4,     1,     2,     2,
     3770       3,     5,     8,     7,     7,     5,     9,     2,     2,     5,
     3771       3,     5,     4,     3,     4,     4,     7,     3,     3,     3,
     3772       3,     4,     6,     1,     1,     1,     1,     1,     1,     1,
     3773       1,     0,     1,     1,     2,     1,     1,     1,     1,     1,
     3774       1,     1,     0,     5,     1,     2,     3,     1,     2,     1,
     3775       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     3776       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     3777       1,     2,     2,     3,     3,     1,     3,     1,     2,     2,
     3778       2,     4,     4,     4,     4,     1,     2,     2,     3,     1,
     3779       2,     2,     1,     2,     2,     3,     1,     2,     2,     1,
     3780       1,     4,     2,     0,     6,     7,     2,     2,     2,     0,
     3781       2,     2,     3,     2,     3,     1,     2,     3,     2,     2,
     3782       4,     0,     1,     2,     2,     1,     0,     1,     2,     2,
     3783       5,     2,     0,     7,     2,     4,     0,     2,     0,     1,
     3784       1,     1,     5,     5,     5,     1,     5,     5,     9,     1,
     3785       5,     0,     1,     1,     5,     1,     1,     5,     5,     1,
     3786       3,     3,     4,     1,     1,     1,     1,     2,     1,     3,
     3787       3,     1,     2,     1,     3,     1,     1,     1,     1,     1,
     3788       1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
     3789       2,     0,     2,     2,     1,     4,     0,     1,     2,     3,
     3790       4,     2,     2,     1,     2,     2,     5,     5,     7,     6,
     3791       1,     2,     2,     3,     1,     2,     2,     4,     2,     4,
     3792       0,     4,     2,     1,     1,     1,     0,     2,     5,     5,
     3793      13,     1,     1,     3,     3,     2,     3,     3,     2,     4,
     3794       1,     6,     9,     0,    11,     1,     3,     3,     3,     1,
     3795       1,     5,     2,     5,     0,     1,     1,     3,     0,     1,
     3796       1,     1,     1,     0,     6,     2,     1,     2,     4,     2,
     3797       3,     3,     3,     4,     5,     5,     5,     6,     1,     1,
     3798       1,     3,     0,     5,     0,     1,     1,     2,     6,     1,
     3799       3,     0,     1,     4,     1,     1,     1,     1,     2,     1,
     3800       2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
     3801       3,     8,     3,     2,     1,     2,     6,     8,     3,     2,
     3802       3,     3,     4,     4,     3,     1,     1,     1,     4,     6,
     3803       3,     2,     3,     3,     4,     4,     3,     2,     1,     2,
     3804       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
     3805       6,     8,     3,     2,     1,     2,     2,     2,     3,     3,
     3806       2,     4,     4,     3,     6,     8,     3,     2,     1,     2,
     3807       2,     1,     1,     2,     3,     3,     2,     4,     6,     8,
     3808       1,     2,     2,     1,     2,     2,     3,     3,     1,     4,
     3809       4,     3,     5,     8,     3,     2,     3,     1,     5,     5,
     3810       6,     6,     1,     2,     2,     1,     2,     2,     3,     3,
     3811       1,     4,     4,     3,     5,     8,     3,     1,     2,     1,
     3812       2,     6,     5,     6,     7,     7,     1,     2,     2,     1,
     3813       2,     2,     3,     3,     1,     4,     4,     3,     8,     3,
     3814       1,     1,     2,     1,     1,     2,     3,     2,     3,     2,
     3815       3,     3,     2,     4,     3,     2,     3,     2,     4,     3,
     3816       2,     6,     6,     6,     7,     1,     2,     1,     1,     1,
     3817       2,     3,     2,     3,     2,     3,     3,     4,     2,     3,
     3818       4,     2,     5,     5,     6,     6,     0,     1,     0,     2
     3819};
     3820
     3821
     3822#define yyerrok         (yyerrstatus = 0)
     3823#define yyclearin       (yychar = YYEMPTY)
     3824#define YYEMPTY         (-2)
     3825#define YYEOF           0
     3826
     3827#define YYACCEPT        goto yyacceptlab
     3828#define YYABORT         goto yyabortlab
     3829#define YYERROR         goto yyerrorlab
     3830
    41893831
    41903832#define YYRECOVERING()  (!!yyerrstatus)
    41913833
    4192 #define YYBACKUP(Token, Value)                                  \
    4193 do                                                              \
    4194   if (yychar == YYEMPTY && yylen == 1)                          \
    4195     {                                                           \
    4196       yychar = (Token);                                         \
    4197       yylval = (Value);                                         \
    4198       YYPOPSTACK (1);                                           \
    4199       goto yybackup;                                            \
    4200     }                                                           \
    4201   else                                                          \
    4202     {                                                           \
     3834#define YYBACKUP(Token, Value)                                  \
     3835do                                                              \
     3836  if (yychar == YYEMPTY)                                        \
     3837    {                                                           \
     3838      yychar = (Token);                                         \
     3839      yylval = (Value);                                         \
     3840      YYPOPSTACK (yylen);                                       \
     3841      yystate = *yyssp;                                         \
     3842      goto yybackup;                                            \
     3843    }                                                           \
     3844  else                                                          \
     3845    {                                                           \
    42033846      yyerror (YY_("syntax error: cannot back up")); \
    4204       YYERROR;                                                  \
    4205     }                                                           \
    4206 while (YYID (0))
    4207 
    4208 
    4209 #define YYTERROR        1
    4210 #define YYERRCODE       256
    4211 
    4212 
    4213 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    4214    If N is 0, then set CURRENT to the empty location which ends
    4215    the previous symbol: RHS[0] (always defined).  */
    4216 
    4217 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
    4218 #ifndef YYLLOC_DEFAULT
    4219 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
    4220     do                                                                  \
    4221       if (YYID (N))                                                    \
    4222         {                                                               \
    4223           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
    4224           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
    4225           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
    4226           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
    4227         }                                                               \
    4228       else                                                              \
    4229         {                                                               \
    4230           (Current).first_line   = (Current).last_line   =              \
    4231             YYRHSLOC (Rhs, 0).last_line;                                \
    4232           (Current).first_column = (Current).last_column =              \
    4233             YYRHSLOC (Rhs, 0).last_column;                              \
    4234         }                                                               \
    4235     while (YYID (0))
    4236 #endif
    4237 
    4238 
    4239 /* This macro is provided for backward compatibility. */
    4240 
    4241 #ifndef YY_LOCATION_PRINT
    4242 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
    4243 #endif
    4244 
    4245 
    4246 /* YYLEX -- calling `yylex' with the right arguments.  */
    4247 
    4248 #ifdef YYLEX_PARAM
    4249 # define YYLEX yylex (YYLEX_PARAM)
    4250 #else
    4251 # define YYLEX yylex ()
    4252 #endif
     3847      YYERROR;                                                  \
     3848    }                                                           \
     3849while (0)
     3850
     3851/* Error token number */
     3852#define YYTERROR        1
     3853#define YYERRCODE       256
     3854
     3855
    42533856
    42543857/* Enable debugging if requested.  */
     
    42603863# endif
    42613864
    4262 # define YYDPRINTF(Args)                        \
    4263 do {                                            \
    4264   if (yydebug)                                  \
    4265     YYFPRINTF Args;                             \
    4266 } while (YYID (0))
    4267 
    4268 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
    4269 do {                                                                      \
    4270   if (yydebug)                                                            \
    4271     {                                                                     \
    4272       YYFPRINTF (stderr, "%s ", Title);                                   \
    4273       yy_symbol_print (stderr,                                            \
    4274                   Type, Value); \
    4275       YYFPRINTF (stderr, "\n");                                           \
    4276     }                                                                     \
    4277 } while (YYID (0))
    4278 
    4279 
    4280 /*--------------------------------.
    4281 | Print this symbol on YYOUTPUT.  |
    4282 `--------------------------------*/
    4283 
    4284 /*ARGSUSED*/
    4285 #if (defined __STDC__ || defined __C99__FUNC__ \
    4286      || defined __cplusplus || defined _MSC_VER)
     3865# define YYDPRINTF(Args)                        \
     3866do {                                            \
     3867  if (yydebug)                                  \
     3868    YYFPRINTF Args;                             \
     3869} while (0)
     3870
     3871/* This macro is provided for backward compatibility. */
     3872#ifndef YY_LOCATION_PRINT
     3873# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
     3874#endif
     3875
     3876
     3877# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
     3878do {                                                                      \
     3879  if (yydebug)                                                            \
     3880    {                                                                     \
     3881      YYFPRINTF (stderr, "%s ", Title);                                   \
     3882      yy_symbol_print (stderr,                                            \
     3883                  Type, Value); \
     3884      YYFPRINTF (stderr, "\n");                                           \
     3885    }                                                                     \
     3886} while (0)
     3887
     3888
     3889/*----------------------------------------.
     3890| Print this symbol's value on YYOUTPUT.  |
     3891`----------------------------------------*/
     3892
    42873893static void
    42883894yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
    4289 #else
    4290 static void
    4291 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
    4292     FILE *yyoutput;
    4293     int yytype;
    4294     YYSTYPE const * const yyvaluep;
    4295 #endif
    42963895{
     3896  FILE *yyo = yyoutput;
     3897  YYUSE (yyo);
    42973898  if (!yyvaluep)
    42983899    return;
     
    43003901  if (yytype < YYNTOKENS)
    43013902    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
    4302 # else
    4303   YYUSE (yyoutput);
    43043903# endif
    4305   switch (yytype)
    4306     {
    4307       default:
    4308         break;
    4309     }
     3904  YYUSE (yytype);
    43103905}
    43113906
     
    43153910`--------------------------------*/
    43163911
    4317 #if (defined __STDC__ || defined __C99__FUNC__ \
    4318      || defined __cplusplus || defined _MSC_VER)
    43193912static void
    43203913yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
    4321 #else
    4322 static void
    4323 yy_symbol_print (yyoutput, yytype, yyvaluep)
    4324     FILE *yyoutput;
    4325     int yytype;
    4326     YYSTYPE const * const yyvaluep;
    4327 #endif
    43283914{
    4329   if (yytype < YYNTOKENS)
    4330     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
    4331   else
    4332     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
     3915  YYFPRINTF (yyoutput, "%s %s (",
     3916             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
    43333917
    43343918  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
     
    43413925`------------------------------------------------------------------*/
    43423926
    4343 #if (defined __STDC__ || defined __C99__FUNC__ \
    4344      || defined __cplusplus || defined _MSC_VER)
    43453927static void
    43463928yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
    4347 #else
    4348 static void
    4349 yy_stack_print (yybottom, yytop)
    4350     yytype_int16 *yybottom;
    4351     yytype_int16 *yytop;
    4352 #endif
    43533929{
    43543930  YYFPRINTF (stderr, "Stack now");
     
    43613937}
    43623938
    4363 # define YY_STACK_PRINT(Bottom, Top)                            \
    4364 do {                                                            \
    4365   if (yydebug)                                                  \
    4366     yy_stack_print ((Bottom), (Top));                           \
    4367 } while (YYID (0))
     3939# define YY_STACK_PRINT(Bottom, Top)                            \
     3940do {                                                            \
     3941  if (yydebug)                                                  \
     3942    yy_stack_print ((Bottom), (Top));                           \
     3943} while (0)
    43683944
    43693945
     
    43723948`------------------------------------------------*/
    43733949
    4374 #if (defined __STDC__ || defined __C99__FUNC__ \
    4375      || defined __cplusplus || defined _MSC_VER)
    43763950static void
    4377 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
    4378 #else
    4379 static void
    4380 yy_reduce_print (yyvsp, yyrule)
    4381     YYSTYPE *yyvsp;
    4382     int yyrule;
    4383 #endif
     3951yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
    43843952{
     3953  unsigned long int yylno = yyrline[yyrule];
    43853954  int yynrhs = yyr2[yyrule];
    43863955  int yyi;
    4387   unsigned long int yylno = yyrline[yyrule];
    43883956  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
    4389              yyrule - 1, yylno);
     3957             yyrule - 1, yylno);
    43903958  /* The symbols being reduced.  */
    43913959  for (yyi = 0; yyi < yynrhs; yyi++)
    43923960    {
    43933961      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
    4394       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
    4395                        &(yyvsp[(yyi + 1) - (yynrhs)])
    4396                                        );
     3962      yy_symbol_print (stderr,
     3963                       yystos[yyssp[yyi + 1 - yynrhs]],
     3964                       &(yyvsp[(yyi + 1) - (yynrhs)])
     3965                                              );
    43973966      YYFPRINTF (stderr, "\n");
    43983967    }
    43993968}
    44003969
    4401 # define YY_REDUCE_PRINT(Rule)          \
    4402 do {                                    \
    4403   if (yydebug)                          \
    4404     yy_reduce_print (yyvsp, Rule); \
    4405 } while (YYID (0))
     3970# define YY_REDUCE_PRINT(Rule)          \
     3971do {                                    \
     3972  if (yydebug)                          \
     3973    yy_reduce_print (yyssp, yyvsp, Rule); \
     3974} while (0)
    44063975
    44073976/* Nonzero means print parse trace.  It is left uninitialized so that
     
    44173986
    44183987/* YYINITDEPTH -- initial size of the parser's stacks.  */
    4419 #ifndef YYINITDEPTH
     3988#ifndef YYINITDEPTH
    44203989# define YYINITDEPTH 200
    44213990#endif
     
    44404009#  else
    44414010/* Return the length of YYSTR.  */
    4442 #if (defined __STDC__ || defined __C99__FUNC__ \
    4443      || defined __cplusplus || defined _MSC_VER)
    44444011static YYSIZE_T
    44454012yystrlen (const char *yystr)
    4446 #else
    4447 static YYSIZE_T
    4448 yystrlen (yystr)
    4449     const char *yystr;
    4450 #endif
    44514013{
    44524014  YYSIZE_T yylen;
     
    44644026/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    44654027   YYDEST.  */
    4466 #if (defined __STDC__ || defined __C99__FUNC__ \
    4467      || defined __cplusplus || defined _MSC_VER)
    44684028static char *
    44694029yystpcpy (char *yydest, const char *yysrc)
    4470 #else
    4471 static char *
    4472 yystpcpy (yydest, yysrc)
    4473     char *yydest;
    4474     const char *yysrc;
    4475 #endif
    44764030{
    44774031  char *yyd = yydest;
     
    45034057
    45044058      for (;;)
    4505         switch (*++yyp)
    4506           {
    4507           case '\'':
    4508           case ',':
    4509             goto do_not_strip_quotes;
    4510 
    4511           case '\\':
    4512             if (*++yyp != '\\')
    4513               goto do_not_strip_quotes;
    4514             /* Fall through.  */
    4515           default:
    4516             if (yyres)
    4517               yyres[yyn] = *yyp;
    4518             yyn++;
    4519             break;
    4520 
    4521           case '"':
    4522             if (yyres)
    4523               yyres[yyn] = '\0';
    4524             return yyn;
    4525           }
     4059        switch (*++yyp)
     4060          {
     4061          case '\'':
     4062          case ',':
     4063            goto do_not_strip_quotes;
     4064
     4065          case '\\':
     4066            if (*++yyp != '\\')
     4067              goto do_not_strip_quotes;
     4068            /* Fall through.  */
     4069          default:
     4070            if (yyres)
     4071              yyres[yyn] = *yyp;
     4072            yyn++;
     4073            break;
     4074
     4075          case '"':
     4076            if (yyres)
     4077              yyres[yyn] = '\0';
     4078            return yyn;
     4079          }
    45264080    do_not_strip_quotes: ;
    45274081    }
     
    45464100                yytype_int16 *yyssp, int yytoken)
    45474101{
    4548   YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
     4102  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
    45494103  YYSIZE_T yysize = yysize0;
    4550   YYSIZE_T yysize1;
    45514104  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
    45524105  /* Internationalized format string. */
    4553   const char *yyformat = 0;
     4106  const char *yyformat = YY_NULLPTR;
    45544107  /* Arguments of yyformat. */
    45554108  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
     
    45594112
    45604113  /* There are many possibilities here to consider:
    4561      - Assume YYFAIL is not used.  It's too flawed to consider.  See
    4562        <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
    4563        for details.  YYERROR is fine as it does not invoke this
    4564        function.
    45654114     - If this state is a consistent state with a default action, then
    45664115       the only way this function was invoked is if the default action
     
    46114160                  }
    46124161                yyarg[yycount++] = yytname[yyx];
    4613                 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
    4614                 if (! (yysize <= yysize1
    4615                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4616                   return 2;
    4617                 yysize = yysize1;
     4162                {
     4163                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
     4164                  if (! (yysize <= yysize1
     4165                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4166                    return 2;
     4167                  yysize = yysize1;
     4168                }
    46184169              }
    46194170        }
     
    46354186    }
    46364187
    4637   yysize1 = yysize + yystrlen (yyformat);
    4638   if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    4639     return 2;
    4640   yysize = yysize1;
     4188  {
     4189    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
     4190    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
     4191      return 2;
     4192    yysize = yysize1;
     4193  }
    46414194
    46424195  if (*yymsg_alloc < yysize)
     
    46754228`-----------------------------------------------*/
    46764229
    4677 /*ARGSUSED*/
    4678 #if (defined __STDC__ || defined __C99__FUNC__ \
    4679      || defined __cplusplus || defined _MSC_VER)
    46804230static void
    46814231yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
    4682 #else
    4683 static void
    4684 yydestruct (yymsg, yytype, yyvaluep)
    4685     const char *yymsg;
    4686     int yytype;
    4687     YYSTYPE *yyvaluep;
    4688 #endif
    46894232{
    46904233  YYUSE (yyvaluep);
    4691 
    46924234  if (!yymsg)
    46934235    yymsg = "Deleting";
    46944236  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    46954237
    4696   switch (yytype)
    4697     {
    4698 
    4699       default:
    4700         break;
    4701     }
     4238  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
     4239  YYUSE (yytype);
     4240  YY_IGNORE_MAYBE_UNINITIALIZED_END
    47024241}
    47034242
    47044243
    4705 /* Prevent warnings from -Wmissing-prototypes.  */
    4706 #ifdef YYPARSE_PARAM
    4707 #if defined __STDC__ || defined __cplusplus
    4708 int yyparse (void *YYPARSE_PARAM);
    4709 #else
    4710 int yyparse ();
    4711 #endif
    4712 #else /* ! YYPARSE_PARAM */
    4713 #if defined __STDC__ || defined __cplusplus
    4714 int yyparse (void);
    4715 #else
    4716 int yyparse ();
    4717 #endif
    4718 #endif /* ! YYPARSE_PARAM */
    47194244
    47204245
     
    47244249/* The semantic value of the lookahead symbol.  */
    47254250YYSTYPE yylval;
    4726 
    47274251/* Number of syntax errors so far.  */
    47284252int yynerrs;
     
    47334257`----------*/
    47344258
    4735 #ifdef YYPARSE_PARAM
    4736 #if (defined __STDC__ || defined __C99__FUNC__ \
    4737      || defined __cplusplus || defined _MSC_VER)
    4738 int
    4739 yyparse (void *YYPARSE_PARAM)
    4740 #else
    4741 int
    4742 yyparse (YYPARSE_PARAM)
    4743     void *YYPARSE_PARAM;
    4744 #endif
    4745 #else /* ! YYPARSE_PARAM */
    4746 #if (defined __STDC__ || defined __C99__FUNC__ \
    4747      || defined __cplusplus || defined _MSC_VER)
    47484259int
    47494260yyparse (void)
    4750 #else
    4751 int
    4752 yyparse ()
    4753 
    4754 #endif
    4755 #endif
    47564261{
    47574262    int yystate;
     
    47604265
    47614266    /* The stacks and their tools:
    4762        `yyss': related to states.
    4763        `yyvs': related to semantic values.
    4764 
    4765        Refer to the stacks thru separate pointers, to allow yyoverflow
     4267       'yyss': related to states.
     4268       'yyvs': related to semantic values.
     4269
     4270       Refer to the stacks through separate pointers, to allow yyoverflow
    47664271       to reallocate them elsewhere.  */
    47674272
     
    47814286  int yyresult;
    47824287  /* Lookahead token as an internal (translated) token number.  */
    4783   int yytoken;
     4288  int yytoken = 0;
    47844289  /* The variables used to return semantic value and location from the
    47854290     action routines.  */
     
    47994304  int yylen = 0;
    48004305
    4801   yytoken = 0;
    4802   yyss = yyssa;
    4803   yyvs = yyvsa;
     4306  yyssp = yyss = yyssa;
     4307  yyvsp = yyvs = yyvsa;
    48044308  yystacksize = YYINITDEPTH;
    48054309
     
    48104314  yynerrs = 0;
    48114315  yychar = YYEMPTY; /* Cause a token to be read.  */
    4812 
    4813   /* Initialize stack pointers.
    4814      Waste one element of value and location stack
    4815      so that they stay on the same level as the state stack.
    4816      The wasted elements are never initialized.  */
    4817   yyssp = yyss;
    4818   yyvsp = yyvs;
    4819 
    48204316  goto yysetstate;
    48214317
     
    48384334#ifdef yyoverflow
    48394335      {
    4840         /* Give user a chance to reallocate the stack.  Use copies of
    4841            these so that the &'s don't force the real ones into
    4842            memory.  */
    4843         YYSTYPE *yyvs1 = yyvs;
    4844         yytype_int16 *yyss1 = yyss;
    4845 
    4846         /* Each stack pointer address is followed by the size of the
    4847            data in use in that stack, in bytes.  This used to be a
    4848            conditional around just the two extra args, but that might
    4849            be undefined if yyoverflow is a macro.  */
    4850         yyoverflow (YY_("memory exhausted"),
    4851                     &yyss1, yysize * sizeof (*yyssp),
    4852                     &yyvs1, yysize * sizeof (*yyvsp),
    4853                     &yystacksize);
    4854 
    4855         yyss = yyss1;
    4856         yyvs = yyvs1;
     4336        /* Give user a chance to reallocate the stack.  Use copies of
     4337           these so that the &'s don't force the real ones into
     4338           memory.  */
     4339        YYSTYPE *yyvs1 = yyvs;
     4340        yytype_int16 *yyss1 = yyss;
     4341
     4342        /* Each stack pointer address is followed by the size of the
     4343           data in use in that stack, in bytes.  This used to be a
     4344           conditional around just the two extra args, but that might
     4345           be undefined if yyoverflow is a macro.  */
     4346        yyoverflow (YY_("memory exhausted"),
     4347                    &yyss1, yysize * sizeof (*yyssp),
     4348                    &yyvs1, yysize * sizeof (*yyvsp),
     4349                    &yystacksize);
     4350
     4351        yyss = yyss1;
     4352        yyvs = yyvs1;
    48574353      }
    48584354#else /* no yyoverflow */
     
    48624358      /* Extend the stack our own way.  */
    48634359      if (YYMAXDEPTH <= yystacksize)
    4864         goto yyexhaustedlab;
     4360        goto yyexhaustedlab;
    48654361      yystacksize *= 2;
    48664362      if (YYMAXDEPTH < yystacksize)
    4867         yystacksize = YYMAXDEPTH;
     4363        yystacksize = YYMAXDEPTH;
    48684364
    48694365      {
    4870         yytype_int16 *yyss1 = yyss;
    4871         union yyalloc *yyptr =
    4872           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
    4873         if (! yyptr)
    4874           goto yyexhaustedlab;
    4875         YYSTACK_RELOCATE (yyss_alloc, yyss);
    4876         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
     4366        yytype_int16 *yyss1 = yyss;
     4367        union yyalloc *yyptr =
     4368          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
     4369        if (! yyptr)
     4370          goto yyexhaustedlab;
     4371        YYSTACK_RELOCATE (yyss_alloc, yyss);
     4372        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
    48774373#  undef YYSTACK_RELOCATE
    4878         if (yyss1 != yyssa)
    4879           YYSTACK_FREE (yyss1);
     4374        if (yyss1 != yyssa)
     4375          YYSTACK_FREE (yyss1);
    48804376      }
    48814377# endif
     
    48864382
    48874383      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
    4888                   (unsigned long int) yystacksize));
     4384                  (unsigned long int) yystacksize));
    48894385
    48904386      if (yyss + yystacksize - 1 <= yyssp)
    4891         YYABORT;
     4387        YYABORT;
    48924388    }
    48934389
     
    49184414    {
    49194415      YYDPRINTF ((stderr, "Reading a token: "));
    4920       yychar = YYLEX;
     4416      yychar = yylex ();
    49214417    }
    49224418
     
    49584454
    49594455  yystate = yyn;
     4456  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    49604457  *++yyvsp = yylval;
     4458  YY_IGNORE_MAYBE_UNINITIALIZED_END
    49614459
    49624460  goto yynewstate;
     
    49814479
    49824480  /* If YYLEN is nonzero, implement the default value of the action:
    4983      `$$ = $1'.
     4481     '$$ = $1'.
    49844482
    49854483     Otherwise, the following line sets YYVAL to garbage.
     
    49954493    {
    49964494        case 2:
    4997 
    4998 /* Line 1806 of yacc.c  */
    4999 #line 296 "parser.yy"
     4495#line 298 "parser.yy" /* yacc.c:1646  */
    50004496    {
    50014497                        typedefTable.enterScope();
    50024498                }
     4499#line 4500 "Parser/parser.cc" /* yacc.c:1646  */
    50034500    break;
    50044501
    50054502  case 3:
    5006 
    5007 /* Line 1806 of yacc.c  */
    5008 #line 302 "parser.yy"
     4503#line 304 "parser.yy" /* yacc.c:1646  */
    50094504    {
    50104505                        typedefTable.leaveScope();
    50114506                }
     4507#line 4508 "Parser/parser.cc" /* yacc.c:1646  */
    50124508    break;
    50134509
    50144510  case 4:
    5015 
    5016 /* Line 1806 of yacc.c  */
    5017 #line 311 "parser.yy"
    5018     { (yyval.constant) = build_constantInteger( *(yyvsp[(1) - (1)].tok) ); }
     4511#line 313 "parser.yy" /* yacc.c:1646  */
     4512    { (yyval.en) = new ExpressionNode( build_constantInteger( assign_strptr((yyvsp[0].tok)) ) ); }
     4513#line 4514 "Parser/parser.cc" /* yacc.c:1646  */
    50194514    break;
    50204515
    50214516  case 5:
    5022 
    5023 /* Line 1806 of yacc.c  */
    5024 #line 312 "parser.yy"
    5025     { (yyval.constant) = build_constantFloat( *(yyvsp[(1) - (1)].tok) ); }
     4517#line 314 "parser.yy" /* yacc.c:1646  */
     4518    { (yyval.en) = new ExpressionNode( build_constantFloat( assign_strptr((yyvsp[0].tok)) ) ); }
     4519#line 4520 "Parser/parser.cc" /* yacc.c:1646  */
    50264520    break;
    50274521
    50284522  case 6:
    5029 
    5030 /* Line 1806 of yacc.c  */
    5031 #line 313 "parser.yy"
    5032     { (yyval.constant) = build_constantChar( *(yyvsp[(1) - (1)].tok) ); }
     4523#line 315 "parser.yy" /* yacc.c:1646  */
     4524    { (yyval.en) = new ExpressionNode( build_constantChar( assign_strptr((yyvsp[0].tok)) ) ); }
     4525#line 4526 "Parser/parser.cc" /* yacc.c:1646  */
    50334526    break;
    50344527
    50354528  case 16:
    5036 
    5037 /* Line 1806 of yacc.c  */
    5038 #line 338 "parser.yy"
    5039     { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); }
     4529#line 340 "parser.yy" /* yacc.c:1646  */
     4530    { (yyval.constant) = build_constantStr( assign_strptr((yyvsp[0].tok)) ); }
     4531#line 4532 "Parser/parser.cc" /* yacc.c:1646  */
    50404532    break;
    50414533
    50424534  case 17:
    5043 
    5044 /* Line 1806 of yacc.c  */
    5045 #line 340 "parser.yy"
    5046     {
    5047                         appendStr( (yyvsp[(1) - (2)].constant)->get_expr()->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
    5048                         delete (yyvsp[(2) - (2)].tok);                                                                  // allocated by lexer
    5049                         (yyval.constant) = (yyvsp[(1) - (2)].constant);
     4535#line 342 "parser.yy" /* yacc.c:1646  */
     4536    {
     4537                        appendStr( (yyvsp[-1].constant)->get_constant()->get_value(), (yyvsp[0].tok) );
     4538                        delete (yyvsp[0].tok);                                                                  // allocated by lexer
     4539                        (yyval.constant) = (yyvsp[-1].constant);
    50504540                }
     4541#line 4542 "Parser/parser.cc" /* yacc.c:1646  */
    50514542    break;
    50524543
    50534544  case 18:
    5054 
    5055 /* Line 1806 of yacc.c  */
    5056 #line 351 "parser.yy"
    5057     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     4545#line 353 "parser.yy" /* yacc.c:1646  */
     4546    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4547#line 4548 "Parser/parser.cc" /* yacc.c:1646  */
    50584548    break;
    50594549
    50604550  case 19:
    5061 
    5062 /* Line 1806 of yacc.c  */
    5063 #line 353 "parser.yy"
    5064     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     4551#line 355 "parser.yy" /* yacc.c:1646  */
     4552    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4553#line 4554 "Parser/parser.cc" /* yacc.c:1646  */
    50654554    break;
    50664555
    50674556  case 20:
    5068 
    5069 /* Line 1806 of yacc.c  */
    5070 #line 355 "parser.yy"
    5071     { (yyval.en) = (yyvsp[(2) - (3)].en); }
     4557#line 357 "parser.yy" /* yacc.c:1646  */
     4558    { (yyval.en) = (yyvsp[-1].en); }
     4559#line 4560 "Parser/parser.cc" /* yacc.c:1646  */
    50724560    break;
    50734561
    50744562  case 21:
    5075 
    5076 /* Line 1806 of yacc.c  */
    5077 #line 357 "parser.yy"
    5078     { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
     4563#line 359 "parser.yy" /* yacc.c:1646  */
     4564    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); }
     4565#line 4566 "Parser/parser.cc" /* yacc.c:1646  */
    50794566    break;
    50804567
    50814568  case 23:
    5082 
    5083 /* Line 1806 of yacc.c  */
    5084 #line 367 "parser.yy"
    5085     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     4569#line 369 "parser.yy" /* yacc.c:1646  */
     4570    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); }
     4571#line 4572 "Parser/parser.cc" /* yacc.c:1646  */
    50864572    break;
    50874573
    50884574  case 24:
    5089 
    5090 /* Line 1806 of yacc.c  */
    5091 #line 369 "parser.yy"
    5092     { (yyval.en) = new CompositeExprNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
     4575#line 371 "parser.yy" /* yacc.c:1646  */
     4576    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); }
     4577#line 4578 "Parser/parser.cc" /* yacc.c:1646  */
    50934578    break;
    50944579
    50954580  case 25:
    5096 
    5097 /* Line 1806 of yacc.c  */
    5098 #line 373 "parser.yy"
    5099     { (yyval.en) = new CompositeExprNode( build_fieldSel( (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) ) ) ); }
     4581#line 375 "parser.yy" /* yacc.c:1646  */
     4582    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
     4583#line 4584 "Parser/parser.cc" /* yacc.c:1646  */
    51004584    break;
    51014585
    51024586  case 27:
    5103 
    5104 /* Line 1806 of yacc.c  */
    5105 #line 376 "parser.yy"
    5106     { (yyval.en) = new CompositeExprNode( build_pfieldSel( (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) ) ) ); }
     4587#line 378 "parser.yy" /* yacc.c:1646  */
     4588    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
     4589#line 4590 "Parser/parser.cc" /* yacc.c:1646  */
    51074590    break;
    51084591
    51094592  case 29:
    5110 
    5111 /* Line 1806 of yacc.c  */
    5112 #line 379 "parser.yy"
    5113     { (yyval.en) = new CompositeExprNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     4593#line 381 "parser.yy" /* yacc.c:1646  */
     4594    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); }
     4595#line 4596 "Parser/parser.cc" /* yacc.c:1646  */
    51144596    break;
    51154597
    51164598  case 30:
    5117 
    5118 /* Line 1806 of yacc.c  */
    5119 #line 381 "parser.yy"
    5120     { (yyval.en) = new CompositeExprNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     4599#line 383 "parser.yy" /* yacc.c:1646  */
     4600    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); }
     4601#line 4602 "Parser/parser.cc" /* yacc.c:1646  */
    51214602    break;
    51224603
    51234604  case 31:
    5124 
    5125 /* Line 1806 of yacc.c  */
    5126 #line 383 "parser.yy"
    5127     { (yyval.en) = new CompoundLiteralNode( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ); }
     4605#line 385 "parser.yy" /* yacc.c:1646  */
     4606    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); }
     4607#line 4608 "Parser/parser.cc" /* yacc.c:1646  */
    51284608    break;
    51294609
    51304610  case 32:
    5131 
    5132 /* Line 1806 of yacc.c  */
    5133 #line 385 "parser.yy"
     4611#line 387 "parser.yy" /* yacc.c:1646  */
    51344612    {
    51354613                        Token fn;
    51364614                        fn.str = new std::string( "?{}" ); // location undefined
    5137                         (yyval.en) = new CompositeExprNode( build_func( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) ) );
     4615                        (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) );
    51384616                }
     4617#line 4618 "Parser/parser.cc" /* yacc.c:1646  */
    51394618    break;
    51404619
    51414620  case 34:
    5142 
    5143 /* Line 1806 of yacc.c  */
    5144 #line 395 "parser.yy"
    5145     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     4621#line 397 "parser.yy" /* yacc.c:1646  */
     4622    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
     4623#line 4624 "Parser/parser.cc" /* yacc.c:1646  */
    51464624    break;
    51474625
    51484626  case 35:
    5149 
    5150 /* Line 1806 of yacc.c  */
    5151 #line 400 "parser.yy"
     4627#line 402 "parser.yy" /* yacc.c:1646  */
    51524628    { (yyval.en) = 0; }
    5153     break;
    5154 
    5155   case 37:
    5156 
    5157 /* Line 1806 of yacc.c  */
    5158 #line 403 "parser.yy"
    5159     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
     4629#line 4630 "Parser/parser.cc" /* yacc.c:1646  */
    51604630    break;
    51614631
    51624632  case 38:
    5163 
    5164 /* Line 1806 of yacc.c  */
    5165 #line 408 "parser.yy"
    5166     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     4633#line 408 "parser.yy" /* yacc.c:1646  */
     4634    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     4635#line 4636 "Parser/parser.cc" /* yacc.c:1646  */
    51674636    break;
    51684637
    51694638  case 39:
    5170 
    5171 /* Line 1806 of yacc.c  */
    5172 #line 410 "parser.yy"
    5173     { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( (yyvsp[(5) - (9)].en) ) ) ) ); }
     4639#line 413 "parser.yy" /* yacc.c:1646  */
     4640    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4641#line 4642 "Parser/parser.cc" /* yacc.c:1646  */
     4642    break;
     4643
     4644  case 40:
     4645#line 417 "parser.yy" /* yacc.c:1646  */
     4646    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
     4647#line 4648 "Parser/parser.cc" /* yacc.c:1646  */
    51744648    break;
    51754649
    51764650  case 41:
    5177 
    5178 /* Line 1806 of yacc.c  */
    5179 #line 415 "parser.yy"
    5180     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     4651#line 419 "parser.yy" /* yacc.c:1646  */
     4652    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
     4653#line 4654 "Parser/parser.cc" /* yacc.c:1646  */
    51814654    break;
    51824655
    51834656  case 42:
    5184 
    5185 /* Line 1806 of yacc.c  */
    5186 #line 420 "parser.yy"
    5187     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     4657#line 421 "parser.yy" /* yacc.c:1646  */
     4658    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
     4659#line 4660 "Parser/parser.cc" /* yacc.c:1646  */
    51884660    break;
    51894661
    51904662  case 43:
    5191 
    5192 /* Line 1806 of yacc.c  */
    5193 #line 424 "parser.yy"
    5194     { (yyval.en) = new CompositeExprNode( build_fieldSel( (yyvsp[(3) - (3)].en), new VarRefNode( (yyvsp[(1) - (3)].tok) ) ) ); }
    5195     break;
    5196 
    5197   case 44:
    5198 
    5199 /* Line 1806 of yacc.c  */
    5200 #line 426 "parser.yy"
    5201     { (yyval.en) = new CompositeExprNode( build_fieldSel( (yyvsp[(5) - (7)].en), new VarRefNode( (yyvsp[(1) - (7)].tok) ) ) ); }
     4663#line 423 "parser.yy" /* yacc.c:1646  */
     4664    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
     4665#line 4666 "Parser/parser.cc" /* yacc.c:1646  */
    52024666    break;
    52034667
    52044668  case 45:
    5205 
    5206 /* Line 1806 of yacc.c  */
    5207 #line 428 "parser.yy"
    5208     { (yyval.en) = new CompositeExprNode( build_pfieldSel( (yyvsp[(3) - (3)].en), new VarRefNode( (yyvsp[(1) - (3)].tok) ) ) ); }
     4669#line 431 "parser.yy" /* yacc.c:1646  */
     4670    { (yyval.en) = (yyvsp[0].en); }
     4671#line 4672 "Parser/parser.cc" /* yacc.c:1646  */
    52094672    break;
    52104673
    52114674  case 46:
    5212 
    5213 /* Line 1806 of yacc.c  */
    5214 #line 430 "parser.yy"
    5215     { (yyval.en) = new CompositeExprNode( build_pfieldSel( (yyvsp[(5) - (7)].en), new VarRefNode( (yyvsp[(1) - (7)].tok) ) ) ); }
     4675#line 433 "parser.yy" /* yacc.c:1646  */
     4676    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
     4677#line 4678 "Parser/parser.cc" /* yacc.c:1646  */
     4678    break;
     4679
     4680  case 47:
     4681#line 435 "parser.yy" /* yacc.c:1646  */
     4682    { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
     4683#line 4684 "Parser/parser.cc" /* yacc.c:1646  */
    52164684    break;
    52174685
    52184686  case 48:
    5219 
    5220 /* Line 1806 of yacc.c  */
    5221 #line 438 "parser.yy"
    5222     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5223     break;
    5224 
    5225   case 49:
    5226 
    5227 /* Line 1806 of yacc.c  */
    5228 #line 440 "parser.yy"
    5229     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5230     break;
    5231 
    5232   case 50:
    5233 
    5234 /* Line 1806 of yacc.c  */
    5235 #line 442 "parser.yy"
    5236     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    5237     break;
    5238 
    5239   case 51:
    5240 
    5241 /* Line 1806 of yacc.c  */
    5242 #line 447 "parser.yy"
    5243     {
    5244                         switch ( (yyvsp[(1) - (2)].op) ) {
     4687#line 440 "parser.yy" /* yacc.c:1646  */
     4688    {
     4689                        switch ( (yyvsp[-1].op) ) {
    52454690                          case OperKinds::AddressOf:
    5246                                 (yyval.en) = new CompositeExprNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
     4691                                (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) );
    52474692                                break;
    52484693                          case OperKinds::PointTo:
    5249                                 (yyval.en) = new CompositeExprNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
     4694                                (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) );
    52504695                                break;
    52514696                          default:
     
    52534698                        }
    52544699                }
     4700#line 4701 "Parser/parser.cc" /* yacc.c:1646  */
     4701    break;
     4702
     4703  case 49:
     4704#line 453 "parser.yy" /* yacc.c:1646  */
     4705    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
     4706#line 4707 "Parser/parser.cc" /* yacc.c:1646  */
     4707    break;
     4708
     4709  case 50:
     4710#line 455 "parser.yy" /* yacc.c:1646  */
     4711    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
     4712#line 4713 "Parser/parser.cc" /* yacc.c:1646  */
     4713    break;
     4714
     4715  case 51:
     4716#line 457 "parser.yy" /* yacc.c:1646  */
     4717    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
     4718#line 4719 "Parser/parser.cc" /* yacc.c:1646  */
    52554719    break;
    52564720
    52574721  case 52:
    5258 
    5259 /* Line 1806 of yacc.c  */
    5260 #line 460 "parser.yy"
    5261     { (yyval.en) = new CompositeExprNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     4722#line 459 "parser.yy" /* yacc.c:1646  */
     4723    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
     4724#line 4725 "Parser/parser.cc" /* yacc.c:1646  */
    52624725    break;
    52634726
    52644727  case 53:
    5265 
    5266 /* Line 1806 of yacc.c  */
    5267 #line 462 "parser.yy"
    5268     { (yyval.en) = new CompositeExprNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     4728#line 461 "parser.yy" /* yacc.c:1646  */
     4729    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
     4730#line 4731 "Parser/parser.cc" /* yacc.c:1646  */
    52694731    break;
    52704732
    52714733  case 54:
    5272 
    5273 /* Line 1806 of yacc.c  */
    5274 #line 464 "parser.yy"
    5275     { (yyval.en) = new CompositeExprNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     4734#line 463 "parser.yy" /* yacc.c:1646  */
     4735    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
     4736#line 4737 "Parser/parser.cc" /* yacc.c:1646  */
    52764737    break;
    52774738
    52784739  case 55:
    5279 
    5280 /* Line 1806 of yacc.c  */
    5281 #line 466 "parser.yy"
    5282     { (yyval.en) = new CompositeExprNode( build_sizeOf( (yyvsp[(2) - (2)].en) ) ); }
     4740#line 465 "parser.yy" /* yacc.c:1646  */
     4741    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
     4742#line 4743 "Parser/parser.cc" /* yacc.c:1646  */
    52834743    break;
    52844744
    52854745  case 56:
    5286 
    5287 /* Line 1806 of yacc.c  */
    5288 #line 468 "parser.yy"
    5289     { (yyval.en) = new CompositeExprNode( build_sizeOf( new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
     4746#line 467 "parser.yy" /* yacc.c:1646  */
     4747    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
     4748#line 4749 "Parser/parser.cc" /* yacc.c:1646  */
    52904749    break;
    52914750
    52924751  case 57:
    5293 
    5294 /* Line 1806 of yacc.c  */
    5295 #line 470 "parser.yy"
    5296     { (yyval.en) = new CompositeExprNode( build_offsetOf( new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) ) ) ); }
     4752#line 469 "parser.yy" /* yacc.c:1646  */
     4753    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
     4754#line 4755 "Parser/parser.cc" /* yacc.c:1646  */
    52974755    break;
    52984756
    52994757  case 58:
    5300 
    5301 /* Line 1806 of yacc.c  */
    5302 #line 472 "parser.yy"
    5303     { (yyval.en) = new CompositeExprNode( build_attr( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ) ); }
     4758#line 471 "parser.yy" /* yacc.c:1646  */
     4759    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
     4760#line 4761 "Parser/parser.cc" /* yacc.c:1646  */
    53044761    break;
    53054762
    53064763  case 59:
    5307 
    5308 /* Line 1806 of yacc.c  */
    5309 #line 474 "parser.yy"
    5310     { (yyval.en) = new CompositeExprNode( build_attr( new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
     4764#line 473 "parser.yy" /* yacc.c:1646  */
     4765    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
     4766#line 4767 "Parser/parser.cc" /* yacc.c:1646  */
    53114767    break;
    53124768
    53134769  case 60:
    5314 
    5315 /* Line 1806 of yacc.c  */
    5316 #line 476 "parser.yy"
    5317     { (yyval.en) = new CompositeExprNode( build_attr( new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     4770#line 479 "parser.yy" /* yacc.c:1646  */
     4771    { (yyval.op) = OperKinds::PointTo; }
     4772#line 4773 "Parser/parser.cc" /* yacc.c:1646  */
    53184773    break;
    53194774
    53204775  case 61:
    5321 
    5322 /* Line 1806 of yacc.c  */
    5323 #line 478 "parser.yy"
    5324     { (yyval.en) = new CompositeExprNode( build_alignOf( (yyvsp[(2) - (2)].en) ) ); }
     4776#line 480 "parser.yy" /* yacc.c:1646  */
     4777    { (yyval.op) = OperKinds::AddressOf; }
     4778#line 4779 "Parser/parser.cc" /* yacc.c:1646  */
    53254779    break;
    53264780
    53274781  case 62:
    5328 
    5329 /* Line 1806 of yacc.c  */
    5330 #line 480 "parser.yy"
    5331     { (yyval.en) = new CompositeExprNode( build_alignOf( new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
     4782#line 486 "parser.yy" /* yacc.c:1646  */
     4783    { (yyval.op) = OperKinds::UnPlus; }
     4784#line 4785 "Parser/parser.cc" /* yacc.c:1646  */
    53324785    break;
    53334786
    53344787  case 63:
    5335 
    5336 /* Line 1806 of yacc.c  */
    5337 #line 486 "parser.yy"
    5338     { (yyval.op) = OperKinds::PointTo; }
     4788#line 487 "parser.yy" /* yacc.c:1646  */
     4789    { (yyval.op) = OperKinds::UnMinus; }
     4790#line 4791 "Parser/parser.cc" /* yacc.c:1646  */
    53394791    break;
    53404792
    53414793  case 64:
    5342 
    5343 /* Line 1806 of yacc.c  */
    5344 #line 487 "parser.yy"
    5345     { (yyval.op) = OperKinds::AddressOf; }
     4794#line 488 "parser.yy" /* yacc.c:1646  */
     4795    { (yyval.op) = OperKinds::Neg; }
     4796#line 4797 "Parser/parser.cc" /* yacc.c:1646  */
    53464797    break;
    53474798
    53484799  case 65:
    5349 
    5350 /* Line 1806 of yacc.c  */
    5351 #line 493 "parser.yy"
    5352     { (yyval.op) = OperKinds::UnPlus; }
    5353     break;
    5354 
    5355   case 66:
    5356 
    5357 /* Line 1806 of yacc.c  */
    5358 #line 494 "parser.yy"
    5359     { (yyval.op) = OperKinds::UnMinus; }
     4800#line 489 "parser.yy" /* yacc.c:1646  */
     4801    { (yyval.op) = OperKinds::BitNeg; }
     4802#line 4803 "Parser/parser.cc" /* yacc.c:1646  */
    53604803    break;
    53614804
    53624805  case 67:
    5363 
    5364 /* Line 1806 of yacc.c  */
    5365 #line 495 "parser.yy"
    5366     { (yyval.op) = OperKinds::Neg; }
     4806#line 495 "parser.yy" /* yacc.c:1646  */
     4807    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
     4808#line 4809 "Parser/parser.cc" /* yacc.c:1646  */
    53674809    break;
    53684810
    53694811  case 68:
    5370 
    5371 /* Line 1806 of yacc.c  */
    5372 #line 496 "parser.yy"
    5373     { (yyval.op) = OperKinds::BitNeg; }
     4812#line 497 "parser.yy" /* yacc.c:1646  */
     4813    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
     4814#line 4815 "Parser/parser.cc" /* yacc.c:1646  */
    53744815    break;
    53754816
    53764817  case 70:
    5377 
    5378 /* Line 1806 of yacc.c  */
    5379 #line 502 "parser.yy"
    5380     { (yyval.en) = new CompositeExprNode( build_cast( new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ) ); }
     4818#line 503 "parser.yy" /* yacc.c:1646  */
     4819    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4820#line 4821 "Parser/parser.cc" /* yacc.c:1646  */
    53814821    break;
    53824822
    53834823  case 71:
    5384 
    5385 /* Line 1806 of yacc.c  */
    5386 #line 504 "parser.yy"
    5387     { (yyval.en) = new CompositeExprNode( build_cast( new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ) ); }
    5388     break;
    5389 
    5390   case 73:
    5391 
    5392 /* Line 1806 of yacc.c  */
    5393 #line 510 "parser.yy"
    5394     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4824#line 505 "parser.yy" /* yacc.c:1646  */
     4825    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4826#line 4827 "Parser/parser.cc" /* yacc.c:1646  */
     4827    break;
     4828
     4829  case 72:
     4830#line 507 "parser.yy" /* yacc.c:1646  */
     4831    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4832#line 4833 "Parser/parser.cc" /* yacc.c:1646  */
    53954833    break;
    53964834
    53974835  case 74:
    5398 
    5399 /* Line 1806 of yacc.c  */
    5400 #line 512 "parser.yy"
    5401     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4836#line 513 "parser.yy" /* yacc.c:1646  */
     4837    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4838#line 4839 "Parser/parser.cc" /* yacc.c:1646  */
    54024839    break;
    54034840
    54044841  case 75:
    5405 
    5406 /* Line 1806 of yacc.c  */
    5407 #line 514 "parser.yy"
    5408     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4842#line 515 "parser.yy" /* yacc.c:1646  */
     4843    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4844#line 4845 "Parser/parser.cc" /* yacc.c:1646  */
    54094845    break;
    54104846
    54114847  case 77:
    5412 
    5413 /* Line 1806 of yacc.c  */
    5414 #line 520 "parser.yy"
    5415     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4848#line 521 "parser.yy" /* yacc.c:1646  */
     4849    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4850#line 4851 "Parser/parser.cc" /* yacc.c:1646  */
    54164851    break;
    54174852
    54184853  case 78:
    5419 
    5420 /* Line 1806 of yacc.c  */
    5421 #line 522 "parser.yy"
    5422     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4854#line 523 "parser.yy" /* yacc.c:1646  */
     4855    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4856#line 4857 "Parser/parser.cc" /* yacc.c:1646  */
    54234857    break;
    54244858
    54254859  case 80:
    5426 
    5427 /* Line 1806 of yacc.c  */
    5428 #line 528 "parser.yy"
    5429     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4860#line 529 "parser.yy" /* yacc.c:1646  */
     4861    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4862#line 4863 "Parser/parser.cc" /* yacc.c:1646  */
    54304863    break;
    54314864
    54324865  case 81:
    5433 
    5434 /* Line 1806 of yacc.c  */
    5435 #line 530 "parser.yy"
    5436     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4866#line 531 "parser.yy" /* yacc.c:1646  */
     4867    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4868#line 4869 "Parser/parser.cc" /* yacc.c:1646  */
     4869    break;
     4870
     4871  case 82:
     4872#line 533 "parser.yy" /* yacc.c:1646  */
     4873    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4874#line 4875 "Parser/parser.cc" /* yacc.c:1646  */
    54374875    break;
    54384876
    54394877  case 83:
    5440 
    5441 /* Line 1806 of yacc.c  */
    5442 #line 536 "parser.yy"
    5443     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5444     break;
    5445 
    5446   case 84:
    5447 
    5448 /* Line 1806 of yacc.c  */
    5449 #line 538 "parser.yy"
    5450     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4878#line 535 "parser.yy" /* yacc.c:1646  */
     4879    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4880#line 4881 "Parser/parser.cc" /* yacc.c:1646  */
    54514881    break;
    54524882
    54534883  case 85:
    5454 
    5455 /* Line 1806 of yacc.c  */
    5456 #line 540 "parser.yy"
    5457     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4884#line 541 "parser.yy" /* yacc.c:1646  */
     4885    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4886#line 4887 "Parser/parser.cc" /* yacc.c:1646  */
    54584887    break;
    54594888
    54604889  case 86:
    5461 
    5462 /* Line 1806 of yacc.c  */
    5463 #line 542 "parser.yy"
    5464     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4890#line 543 "parser.yy" /* yacc.c:1646  */
     4891    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4892#line 4893 "Parser/parser.cc" /* yacc.c:1646  */
    54654893    break;
    54664894
    54674895  case 88:
    5468 
    5469 /* Line 1806 of yacc.c  */
    5470 #line 548 "parser.yy"
    5471     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5472     break;
    5473 
    5474   case 89:
    5475 
    5476 /* Line 1806 of yacc.c  */
    5477 #line 550 "parser.yy"
    5478     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5479     break;
    5480 
    5481   case 91:
    5482 
    5483 /* Line 1806 of yacc.c  */
    5484 #line 556 "parser.yy"
    5485     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5486     break;
    5487 
    5488   case 93:
    5489 
    5490 /* Line 1806 of yacc.c  */
    5491 #line 562 "parser.yy"
    5492     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5493     break;
    5494 
    5495   case 95:
    5496 
    5497 /* Line 1806 of yacc.c  */
    5498 #line 568 "parser.yy"
    5499     { (yyval.en) = new CompositeExprNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5500     break;
    5501 
    5502   case 97:
    5503 
    5504 /* Line 1806 of yacc.c  */
    5505 #line 574 "parser.yy"
    5506     { (yyval.en) = new CompositeExprNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     4896#line 549 "parser.yy" /* yacc.c:1646  */
     4897    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4898#line 4899 "Parser/parser.cc" /* yacc.c:1646  */
     4899    break;
     4900
     4901  case 90:
     4902#line 555 "parser.yy" /* yacc.c:1646  */
     4903    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4904#line 4905 "Parser/parser.cc" /* yacc.c:1646  */
     4905    break;
     4906
     4907  case 92:
     4908#line 561 "parser.yy" /* yacc.c:1646  */
     4909    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4910#line 4911 "Parser/parser.cc" /* yacc.c:1646  */
     4911    break;
     4912
     4913  case 94:
     4914#line 567 "parser.yy" /* yacc.c:1646  */
     4915    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
     4916#line 4917 "Parser/parser.cc" /* yacc.c:1646  */
     4917    break;
     4918
     4919  case 96:
     4920#line 573 "parser.yy" /* yacc.c:1646  */
     4921    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
     4922#line 4923 "Parser/parser.cc" /* yacc.c:1646  */
     4923    break;
     4924
     4925  case 98:
     4926#line 579 "parser.yy" /* yacc.c:1646  */
     4927    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4928#line 4929 "Parser/parser.cc" /* yacc.c:1646  */
    55074929    break;
    55084930
    55094931  case 99:
    5510 
    5511 /* Line 1806 of yacc.c  */
    5512 #line 580 "parser.yy"
    5513     { (yyval.en) = new CompositeExprNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    5514     break;
    5515 
    5516   case 101:
    5517 
    5518 /* Line 1806 of yacc.c  */
    5519 #line 586 "parser.yy"
    5520     { (yyval.en) = new CompositeExprNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    5521     break;
    5522 
    5523   case 102:
    5524 
    5525 /* Line 1806 of yacc.c  */
    5526 #line 589 "parser.yy"
    5527     { (yyval.en) = new CompositeExprNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     4932#line 582 "parser.yy" /* yacc.c:1646  */
     4933    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
     4934#line 4935 "Parser/parser.cc" /* yacc.c:1646  */
     4935    break;
     4936
     4937  case 100:
     4938#line 584 "parser.yy" /* yacc.c:1646  */
     4939    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4940#line 4941 "Parser/parser.cc" /* yacc.c:1646  */
    55284941    break;
    55294942
    55304943  case 103:
    5531 
    5532 /* Line 1806 of yacc.c  */
    5533 #line 591 "parser.yy"
    5534     { (yyval.en) = new CompositeExprNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    5535     break;
    5536 
    5537   case 106:
    5538 
    5539 /* Line 1806 of yacc.c  */
    5540 #line 602 "parser.yy"
    5541     { (yyval.en) = new CompositeExprNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     4944#line 595 "parser.yy" /* yacc.c:1646  */
     4945    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     4946#line 4947 "Parser/parser.cc" /* yacc.c:1646  */
     4947    break;
     4948
     4949  case 104:
     4950#line 597 "parser.yy" /* yacc.c:1646  */
     4951    { (yyval.en) = ( (yyvsp[0].en) == 0 ) ? (yyvsp[-1].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[-1].en), (yyvsp[0].en) ) ); }
     4952#line 4953 "Parser/parser.cc" /* yacc.c:1646  */
     4953    break;
     4954
     4955  case 105:
     4956#line 602 "parser.yy" /* yacc.c:1646  */
     4957    { (yyval.en) = nullptr; }
     4958#line 4959 "Parser/parser.cc" /* yacc.c:1646  */
    55424959    break;
    55434960
    55444961  case 107:
    5545 
    5546 /* Line 1806 of yacc.c  */
    5547 #line 604 "parser.yy"
    5548     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
     4962#line 607 "parser.yy" /* yacc.c:1646  */
     4963    { (yyval.op) = OperKinds::Assign; }
     4964#line 4965 "Parser/parser.cc" /* yacc.c:1646  */
    55494965    break;
    55504966
    55514967  case 108:
    5552 
    5553 /* Line 1806 of yacc.c  */
    5554 #line 609 "parser.yy"
    5555     { (yyval.en) = new NullExprNode; }
     4968#line 608 "parser.yy" /* yacc.c:1646  */
     4969    { (yyval.op) = OperKinds::MulAssn; }
     4970#line 4971 "Parser/parser.cc" /* yacc.c:1646  */
     4971    break;
     4972
     4973  case 109:
     4974#line 609 "parser.yy" /* yacc.c:1646  */
     4975    { (yyval.op) = OperKinds::DivAssn; }
     4976#line 4977 "Parser/parser.cc" /* yacc.c:1646  */
    55564977    break;
    55574978
    55584979  case 110:
    5559 
    5560 /* Line 1806 of yacc.c  */
    5561 #line 614 "parser.yy"
    5562     { (yyval.op) = OperKinds::Assign; }
     4980#line 610 "parser.yy" /* yacc.c:1646  */
     4981    { (yyval.op) = OperKinds::ModAssn; }
     4982#line 4983 "Parser/parser.cc" /* yacc.c:1646  */
    55634983    break;
    55644984
    55654985  case 111:
    5566 
    5567 /* Line 1806 of yacc.c  */
    5568 #line 615 "parser.yy"
    5569     { (yyval.op) = OperKinds::MulAssn; }
     4986#line 611 "parser.yy" /* yacc.c:1646  */
     4987    { (yyval.op) = OperKinds::PlusAssn; }
     4988#line 4989 "Parser/parser.cc" /* yacc.c:1646  */
    55704989    break;
    55714990
    55724991  case 112:
    5573 
    5574 /* Line 1806 of yacc.c  */
    5575 #line 616 "parser.yy"
    5576     { (yyval.op) = OperKinds::DivAssn; }
     4992#line 612 "parser.yy" /* yacc.c:1646  */
     4993    { (yyval.op) = OperKinds::MinusAssn; }
     4994#line 4995 "Parser/parser.cc" /* yacc.c:1646  */
    55774995    break;
    55784996
    55794997  case 113:
    5580 
    5581 /* Line 1806 of yacc.c  */
    5582 #line 617 "parser.yy"
    5583     { (yyval.op) = OperKinds::ModAssn; }
     4998#line 613 "parser.yy" /* yacc.c:1646  */
     4999    { (yyval.op) = OperKinds::LSAssn; }
     5000#line 5001 "Parser/parser.cc" /* yacc.c:1646  */
    55845001    break;
    55855002
    55865003  case 114:
    5587 
    5588 /* Line 1806 of yacc.c  */
    5589 #line 618 "parser.yy"
    5590     { (yyval.op) = OperKinds::PlusAssn; }
     5004#line 614 "parser.yy" /* yacc.c:1646  */
     5005    { (yyval.op) = OperKinds::RSAssn; }
     5006#line 5007 "Parser/parser.cc" /* yacc.c:1646  */
    55915007    break;
    55925008
    55935009  case 115:
    5594 
    5595 /* Line 1806 of yacc.c  */
    5596 #line 619 "parser.yy"
    5597     { (yyval.op) = OperKinds::MinusAssn; }
     5010#line 615 "parser.yy" /* yacc.c:1646  */
     5011    { (yyval.op) = OperKinds::AndAssn; }
     5012#line 5013 "Parser/parser.cc" /* yacc.c:1646  */
    55985013    break;
    55995014
    56005015  case 116:
    5601 
    5602 /* Line 1806 of yacc.c  */
    5603 #line 620 "parser.yy"
    5604     { (yyval.op) = OperKinds::LSAssn; }
     5016#line 616 "parser.yy" /* yacc.c:1646  */
     5017    { (yyval.op) = OperKinds::ERAssn; }
     5018#line 5019 "Parser/parser.cc" /* yacc.c:1646  */
    56055019    break;
    56065020
    56075021  case 117:
    5608 
    5609 /* Line 1806 of yacc.c  */
    5610 #line 621 "parser.yy"
    5611     { (yyval.op) = OperKinds::RSAssn; }
     5022#line 617 "parser.yy" /* yacc.c:1646  */
     5023    { (yyval.op) = OperKinds::OrAssn; }
     5024#line 5025 "Parser/parser.cc" /* yacc.c:1646  */
    56125025    break;
    56135026
    56145027  case 118:
    5615 
    5616 /* Line 1806 of yacc.c  */
    5617 #line 622 "parser.yy"
    5618     { (yyval.op) = OperKinds::AndAssn; }
     5028#line 624 "parser.yy" /* yacc.c:1646  */
     5029    { (yyval.en) = new ExpressionNode( build_tuple() ); }
     5030#line 5031 "Parser/parser.cc" /* yacc.c:1646  */
    56195031    break;
    56205032
    56215033  case 119:
    5622 
    5623 /* Line 1806 of yacc.c  */
    5624 #line 623 "parser.yy"
    5625     { (yyval.op) = OperKinds::ERAssn; }
     5034#line 626 "parser.yy" /* yacc.c:1646  */
     5035    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[-2].en) ) ); }
     5036#line 5037 "Parser/parser.cc" /* yacc.c:1646  */
    56265037    break;
    56275038
    56285039  case 120:
    5629 
    5630 /* Line 1806 of yacc.c  */
    5631 #line 624 "parser.yy"
    5632     { (yyval.op) = OperKinds::OrAssn; }
     5040#line 628 "parser.yy" /* yacc.c:1646  */
     5041    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
     5042#line 5043 "Parser/parser.cc" /* yacc.c:1646  */
    56335043    break;
    56345044
    56355045  case 121:
    5636 
    5637 /* Line 1806 of yacc.c  */
    5638 #line 631 "parser.yy"
    5639     { (yyval.en) = new CompositeExprNode( build_tuple() ); }
    5640     break;
    5641 
    5642   case 122:
    5643 
    5644 /* Line 1806 of yacc.c  */
    5645 #line 633 "parser.yy"
    5646     { (yyval.en) = new CompositeExprNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     5046#line 630 "parser.yy" /* yacc.c:1646  */
     5047    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
     5048#line 5049 "Parser/parser.cc" /* yacc.c:1646  */
    56475049    break;
    56485050
    56495051  case 123:
    5650 
    5651 /* Line 1806 of yacc.c  */
    5652 #line 635 "parser.yy"
    5653     { (yyval.en) = new CompositeExprNode( build_tuple( (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ) ); }
    5654     break;
    5655 
    5656   case 124:
    5657 
    5658 /* Line 1806 of yacc.c  */
    5659 #line 637 "parser.yy"
    5660     { (yyval.en) = new CompositeExprNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( (yyvsp[(5) - (7)].en) ) ) ); }
     5052#line 636 "parser.yy" /* yacc.c:1646  */
     5053    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     5054#line 5055 "Parser/parser.cc" /* yacc.c:1646  */
     5055    break;
     5056
     5057  case 125:
     5058#line 642 "parser.yy" /* yacc.c:1646  */
     5059    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     5060#line 5061 "Parser/parser.cc" /* yacc.c:1646  */
    56615061    break;
    56625062
    56635063  case 126:
    5664 
    5665 /* Line 1806 of yacc.c  */
    5666 #line 643 "parser.yy"
    5667     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5668     break;
    5669 
    5670   case 128:
    5671 
    5672 /* Line 1806 of yacc.c  */
    5673 #line 649 "parser.yy"
    5674     { (yyval.en) = new CompositeExprNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5675     break;
    5676 
    5677   case 129:
    5678 
    5679 /* Line 1806 of yacc.c  */
    5680 #line 654 "parser.yy"
     5064#line 647 "parser.yy" /* yacc.c:1646  */
    56815065    { (yyval.en) = 0; }
    5682     break;
    5683 
    5684   case 133:
    5685 
    5686 /* Line 1806 of yacc.c  */
    5687 #line 663 "parser.yy"
    5688     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    5689     break;
    5690 
    5691   case 139:
    5692 
    5693 /* Line 1806 of yacc.c  */
    5694 #line 670 "parser.yy"
     5066#line 5067 "Parser/parser.cc" /* yacc.c:1646  */
     5067    break;
     5068
     5069  case 130:
     5070#line 656 "parser.yy" /* yacc.c:1646  */
     5071    { (yyval.sn) = (yyvsp[0].sn); }
     5072#line 5073 "Parser/parser.cc" /* yacc.c:1646  */
     5073    break;
     5074
     5075  case 136:
     5076#line 663 "parser.yy" /* yacc.c:1646  */
    56955077    {
    56965078                        Token fn;
    56975079                        fn.str = new std::string( "^?{}" ); // location undefined
    5698                         (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( build_func( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ) ), 0 );
     5080                        (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) );
    56995081                }
    5700     break;
    5701 
    5702   case 140:
    5703 
    5704 /* Line 1806 of yacc.c  */
    5705 #line 680 "parser.yy"
    5706     {
    5707                         (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     5082#line 5083 "Parser/parser.cc" /* yacc.c:1646  */
     5083    break;
     5084
     5085  case 137:
     5086#line 673 "parser.yy" /* yacc.c:1646  */
     5087    {
     5088                        (yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
    57085089                }
     5090#line 5091 "Parser/parser.cc" /* yacc.c:1646  */
     5091    break;
     5092
     5093  case 138:
     5094#line 680 "parser.yy" /* yacc.c:1646  */
     5095    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     5096#line 5097 "Parser/parser.cc" /* yacc.c:1646  */
     5097    break;
     5098
     5099  case 139:
     5100#line 687 "parser.yy" /* yacc.c:1646  */
     5101    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
     5102#line 5103 "Parser/parser.cc" /* yacc.c:1646  */
    57095103    break;
    57105104
    57115105  case 141:
    5712 
    5713 /* Line 1806 of yacc.c  */
    5714 #line 687 "parser.yy"
    5715     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     5106#line 693 "parser.yy" /* yacc.c:1646  */
     5107    { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
     5108#line 5109 "Parser/parser.cc" /* yacc.c:1646  */
    57165109    break;
    57175110
    57185111  case 142:
    5719 
    5720 /* Line 1806 of yacc.c  */
    5721 #line 694 "parser.yy"
    5722     { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
     5112#line 698 "parser.yy" /* yacc.c:1646  */
     5113    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
     5114#line 5115 "Parser/parser.cc" /* yacc.c:1646  */
     5115    break;
     5116
     5117  case 143:
     5118#line 700 "parser.yy" /* yacc.c:1646  */
     5119    {   // mark all fields in list
     5120                        for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     5121                                iter->set_extension( true );
     5122                        (yyval.sn) = new StatementNode( (yyvsp[0].decl) );
     5123                }
     5124#line 5125 "Parser/parser.cc" /* yacc.c:1646  */
    57235125    break;
    57245126
    57255127  case 144:
    5726 
    5727 /* Line 1806 of yacc.c  */
    5728 #line 700 "parser.yy"
    5729     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    5730     break;
    5731 
    5732   case 145:
    5733 
    5734 /* Line 1806 of yacc.c  */
    5735 #line 705 "parser.yy"
    5736     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    5737     break;
    5738 
    5739   case 146:
    5740 
    5741 /* Line 1806 of yacc.c  */
    5742 #line 707 "parser.yy"
    5743     {   // mark all fields in list
    5744                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
    5745                                 iter->set_extension( true );
    5746                         (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
    5747                 }
     5128#line 706 "parser.yy" /* yacc.c:1646  */
     5129    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
     5130#line 5131 "Parser/parser.cc" /* yacc.c:1646  */
    57485131    break;
    57495132
    57505133  case 147:
    5751 
    5752 /* Line 1806 of yacc.c  */
    5753 #line 713 "parser.yy"
    5754     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5134#line 713 "parser.yy" /* yacc.c:1646  */
     5135    { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
     5136#line 5137 "Parser/parser.cc" /* yacc.c:1646  */
     5137    break;
     5138
     5139  case 148:
     5140#line 718 "parser.yy" /* yacc.c:1646  */
     5141    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
     5142#line 5143 "Parser/parser.cc" /* yacc.c:1646  */
     5143    break;
     5144
     5145  case 149:
     5146#line 724 "parser.yy" /* yacc.c:1646  */
     5147    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
     5148#line 5149 "Parser/parser.cc" /* yacc.c:1646  */
    57555149    break;
    57565150
    57575151  case 150:
    5758 
    5759 /* Line 1806 of yacc.c  */
    5760 #line 720 "parser.yy"
    5761     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5152#line 726 "parser.yy" /* yacc.c:1646  */
     5153    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
     5154#line 5155 "Parser/parser.cc" /* yacc.c:1646  */
    57625155    break;
    57635156
    57645157  case 151:
    5765 
    5766 /* Line 1806 of yacc.c  */
    5767 #line 725 "parser.yy"
    5768     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5158#line 728 "parser.yy" /* yacc.c:1646  */
     5159    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5160#line 5161 "Parser/parser.cc" /* yacc.c:1646  */
    57695161    break;
    57705162
    57715163  case 152:
    5772 
    5773 /* Line 1806 of yacc.c  */
    5774 #line 731 "parser.yy"
    5775     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5776     break;
    5777 
    5778   case 153:
    5779 
    5780 /* Line 1806 of yacc.c  */
    5781 #line 733 "parser.yy"
    5782     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    5783     break;
    5784 
    5785   case 154:
    5786 
    5787 /* Line 1806 of yacc.c  */
    5788 #line 735 "parser.yy"
    5789     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5790     break;
    5791 
    5792   case 155:
    5793 
    5794 /* Line 1806 of yacc.c  */
    5795 #line 737 "parser.yy"
    5796     {
    5797                         StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
     5164#line 730 "parser.yy" /* yacc.c:1646  */
     5165    {
     5166                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
    57985167                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    57995168                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    58015170                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    58025171                        // statement.
    5803                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
     5172                        (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
    58045173                }
     5174#line 5175 "Parser/parser.cc" /* yacc.c:1646  */
     5175    break;
     5176
     5177  case 153:
     5178#line 740 "parser.yy" /* yacc.c:1646  */
     5179    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5180#line 5181 "Parser/parser.cc" /* yacc.c:1646  */
     5181    break;
     5182
     5183  case 154:
     5184#line 742 "parser.yy" /* yacc.c:1646  */
     5185    {
     5186                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
     5187                        (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
     5188                }
     5189#line 5190 "Parser/parser.cc" /* yacc.c:1646  */
     5190    break;
     5191
     5192  case 155:
     5193#line 752 "parser.yy" /* yacc.c:1646  */
     5194    { (yyval.en) = (yyvsp[0].en); }
     5195#line 5196 "Parser/parser.cc" /* yacc.c:1646  */
    58055196    break;
    58065197
    58075198  case 156:
    5808 
    5809 /* Line 1806 of yacc.c  */
    5810 #line 747 "parser.yy"
    5811     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5812     break;
    5813 
    5814   case 157:
    5815 
    5816 /* Line 1806 of yacc.c  */
    5817 #line 749 "parser.yy"
    5818     {
    5819                         StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
    5820                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
     5199#line 754 "parser.yy" /* yacc.c:1646  */
     5200    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     5201#line 5202 "Parser/parser.cc" /* yacc.c:1646  */
     5202    break;
     5203
     5204  case 158:
     5205#line 759 "parser.yy" /* yacc.c:1646  */
     5206    { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
     5207#line 5208 "Parser/parser.cc" /* yacc.c:1646  */
     5208    break;
     5209
     5210  case 159:
     5211#line 761 "parser.yy" /* yacc.c:1646  */
     5212    { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
     5213#line 5214 "Parser/parser.cc" /* yacc.c:1646  */
     5214    break;
     5215
     5216  case 160:
     5217#line 765 "parser.yy" /* yacc.c:1646  */
     5218    { (yyval.sn) = (yyvsp[-1].sn); }
     5219#line 5220 "Parser/parser.cc" /* yacc.c:1646  */
     5220    break;
     5221
     5222  case 161:
     5223#line 766 "parser.yy" /* yacc.c:1646  */
     5224    { (yyval.sn) = new StatementNode( build_default() ); }
     5225#line 5226 "Parser/parser.cc" /* yacc.c:1646  */
     5226    break;
     5227
     5228  case 163:
     5229#line 772 "parser.yy" /* yacc.c:1646  */
     5230    { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
     5231#line 5232 "Parser/parser.cc" /* yacc.c:1646  */
     5232    break;
     5233
     5234  case 164:
     5235#line 776 "parser.yy" /* yacc.c:1646  */
     5236    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
     5237#line 5238 "Parser/parser.cc" /* yacc.c:1646  */
     5238    break;
     5239
     5240  case 165:
     5241#line 781 "parser.yy" /* yacc.c:1646  */
     5242    { (yyval.sn) = 0; }
     5243#line 5244 "Parser/parser.cc" /* yacc.c:1646  */
     5244    break;
     5245
     5246  case 167:
     5247#line 787 "parser.yy" /* yacc.c:1646  */
     5248    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
     5249#line 5250 "Parser/parser.cc" /* yacc.c:1646  */
     5250    break;
     5251
     5252  case 168:
     5253#line 789 "parser.yy" /* yacc.c:1646  */
     5254    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); }
     5255#line 5256 "Parser/parser.cc" /* yacc.c:1646  */
     5256    break;
     5257
     5258  case 169:
     5259#line 794 "parser.yy" /* yacc.c:1646  */
     5260    { (yyval.sn) = 0; }
     5261#line 5262 "Parser/parser.cc" /* yacc.c:1646  */
     5262    break;
     5263
     5264  case 171:
     5265#line 800 "parser.yy" /* yacc.c:1646  */
     5266    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
     5267#line 5268 "Parser/parser.cc" /* yacc.c:1646  */
     5268    break;
     5269
     5270  case 172:
     5271#line 802 "parser.yy" /* yacc.c:1646  */
     5272    { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); }
     5273#line 5274 "Parser/parser.cc" /* yacc.c:1646  */
     5274    break;
     5275
     5276  case 173:
     5277#line 804 "parser.yy" /* yacc.c:1646  */
     5278    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
     5279#line 5280 "Parser/parser.cc" /* yacc.c:1646  */
     5280    break;
     5281
     5282  case 174:
     5283#line 806 "parser.yy" /* yacc.c:1646  */
     5284    { (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) ) ) ) ) ) ); }
     5285#line 5286 "Parser/parser.cc" /* yacc.c:1646  */
     5286    break;
     5287
     5288  case 175:
     5289#line 811 "parser.yy" /* yacc.c:1646  */
     5290    { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Break ) ); }
     5291#line 5292 "Parser/parser.cc" /* yacc.c:1646  */
     5292    break;
     5293
     5294  case 177:
     5295#line 817 "parser.yy" /* yacc.c:1646  */
     5296    { (yyval.sn) = 0; }
     5297#line 5298 "Parser/parser.cc" /* yacc.c:1646  */
     5298    break;
     5299
     5300  case 178:
     5301#line 819 "parser.yy" /* yacc.c:1646  */
     5302    { (yyval.sn) = 0; }
     5303#line 5304 "Parser/parser.cc" /* yacc.c:1646  */
     5304    break;
     5305
     5306  case 179:
     5307#line 824 "parser.yy" /* yacc.c:1646  */
     5308    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
     5309#line 5310 "Parser/parser.cc" /* yacc.c:1646  */
     5310    break;
     5311
     5312  case 180:
     5313#line 826 "parser.yy" /* yacc.c:1646  */
     5314    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn) ) ); }
     5315#line 5316 "Parser/parser.cc" /* yacc.c:1646  */
     5316    break;
     5317
     5318  case 181:
     5319#line 828 "parser.yy" /* yacc.c:1646  */
     5320    { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
     5321#line 5322 "Parser/parser.cc" /* yacc.c:1646  */
     5322    break;
     5323
     5324  case 182:
     5325#line 833 "parser.yy" /* yacc.c:1646  */
     5326    { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
     5327#line 5328 "Parser/parser.cc" /* yacc.c:1646  */
     5328    break;
     5329
     5330  case 183:
     5331#line 835 "parser.yy" /* yacc.c:1646  */
     5332    { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
     5333#line 5334 "Parser/parser.cc" /* yacc.c:1646  */
     5334    break;
     5335
     5336  case 184:
     5337#line 840 "parser.yy" /* yacc.c:1646  */
     5338    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Goto ) ); }
     5339#line 5340 "Parser/parser.cc" /* yacc.c:1646  */
     5340    break;
     5341
     5342  case 185:
     5343#line 844 "parser.yy" /* yacc.c:1646  */
     5344    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
     5345#line 5346 "Parser/parser.cc" /* yacc.c:1646  */
     5346    break;
     5347
     5348  case 186:
     5349#line 847 "parser.yy" /* yacc.c:1646  */
     5350    { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Continue ) ); }
     5351#line 5352 "Parser/parser.cc" /* yacc.c:1646  */
     5352    break;
     5353
     5354  case 187:
     5355#line 851 "parser.yy" /* yacc.c:1646  */
     5356    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Continue ) ); }
     5357#line 5358 "Parser/parser.cc" /* yacc.c:1646  */
     5358    break;
     5359
     5360  case 188:
     5361#line 854 "parser.yy" /* yacc.c:1646  */
     5362    { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Break ) ); }
     5363#line 5364 "Parser/parser.cc" /* yacc.c:1646  */
     5364    break;
     5365
     5366  case 189:
     5367#line 858 "parser.yy" /* yacc.c:1646  */
     5368    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Break ) ); }
     5369#line 5370 "Parser/parser.cc" /* yacc.c:1646  */
     5370    break;
     5371
     5372  case 190:
     5373#line 860 "parser.yy" /* yacc.c:1646  */
     5374    { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
     5375#line 5376 "Parser/parser.cc" /* yacc.c:1646  */
     5376    break;
     5377
     5378  case 191:
     5379#line 862 "parser.yy" /* yacc.c:1646  */
     5380    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
     5381#line 5382 "Parser/parser.cc" /* yacc.c:1646  */
     5382    break;
     5383
     5384  case 192:
     5385#line 864 "parser.yy" /* yacc.c:1646  */
     5386    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
     5387#line 5388 "Parser/parser.cc" /* yacc.c:1646  */
     5388    break;
     5389
     5390  case 193:
     5391#line 866 "parser.yy" /* yacc.c:1646  */
     5392    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
     5393#line 5394 "Parser/parser.cc" /* yacc.c:1646  */
     5394    break;
     5395
     5396  case 194:
     5397#line 871 "parser.yy" /* yacc.c:1646  */
     5398    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
     5399#line 5400 "Parser/parser.cc" /* yacc.c:1646  */
     5400    break;
     5401
     5402  case 195:
     5403#line 873 "parser.yy" /* yacc.c:1646  */
     5404    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
     5405#line 5406 "Parser/parser.cc" /* yacc.c:1646  */
     5406    break;
     5407
     5408  case 196:
     5409#line 875 "parser.yy" /* yacc.c:1646  */
     5410    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
     5411#line 5412 "Parser/parser.cc" /* yacc.c:1646  */
     5412    break;
     5413
     5414  case 198:
     5415#line 882 "parser.yy" /* yacc.c:1646  */
     5416    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
     5417#line 5418 "Parser/parser.cc" /* yacc.c:1646  */
     5418    break;
     5419
     5420  case 199:
     5421#line 884 "parser.yy" /* yacc.c:1646  */
     5422    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
     5423#line 5424 "Parser/parser.cc" /* yacc.c:1646  */
     5424    break;
     5425
     5426  case 200:
     5427#line 886 "parser.yy" /* yacc.c:1646  */
     5428    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
     5429#line 5430 "Parser/parser.cc" /* yacc.c:1646  */
     5430    break;
     5431
     5432  case 201:
     5433#line 888 "parser.yy" /* yacc.c:1646  */
     5434    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
     5435#line 5436 "Parser/parser.cc" /* yacc.c:1646  */
     5436    break;
     5437
     5438  case 202:
     5439#line 893 "parser.yy" /* yacc.c:1646  */
     5440    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
     5441#line 5442 "Parser/parser.cc" /* yacc.c:1646  */
     5442    break;
     5443
     5444  case 203:
     5445#line 895 "parser.yy" /* yacc.c:1646  */
     5446    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
     5447#line 5448 "Parser/parser.cc" /* yacc.c:1646  */
     5448    break;
     5449
     5450  case 204:
     5451#line 897 "parser.yy" /* yacc.c:1646  */
     5452    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
     5453#line 5454 "Parser/parser.cc" /* yacc.c:1646  */
     5454    break;
     5455
     5456  case 205:
     5457#line 899 "parser.yy" /* yacc.c:1646  */
     5458    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
     5459#line 5460 "Parser/parser.cc" /* yacc.c:1646  */
     5460    break;
     5461
     5462  case 206:
     5463#line 904 "parser.yy" /* yacc.c:1646  */
     5464    {
     5465                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
    58215466                }
    5822     break;
    5823 
    5824   case 158:
    5825 
    5826 /* Line 1806 of yacc.c  */
    5827 #line 759 "parser.yy"
    5828     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    5829     break;
    5830 
    5831   case 159:
    5832 
    5833 /* Line 1806 of yacc.c  */
    5834 #line 761 "parser.yy"
    5835     { (yyval.en) = new CompositeExprNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    5836     break;
    5837 
    5838   case 161:
    5839 
    5840 /* Line 1806 of yacc.c  */
    5841 #line 766 "parser.yy"
    5842     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); }
    5843     break;
    5844 
    5845   case 162:
    5846 
    5847 /* Line 1806 of yacc.c  */
    5848 #line 768 "parser.yy"
    5849     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); }
    5850     break;
    5851 
    5852   case 163:
    5853 
    5854 /* Line 1806 of yacc.c  */
    5855 #line 772 "parser.yy"
    5856     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    5857     break;
    5858 
    5859   case 164:
    5860 
    5861 /* Line 1806 of yacc.c  */
    5862 #line 773 "parser.yy"
    5863     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    5864     break;
    5865 
    5866   case 166:
    5867 
    5868 /* Line 1806 of yacc.c  */
    5869 #line 779 "parser.yy"
    5870     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    5871     break;
    5872 
    5873   case 167:
    5874 
    5875 /* Line 1806 of yacc.c  */
    5876 #line 783 "parser.yy"
    5877     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    5878     break;
    5879 
    5880   case 168:
    5881 
    5882 /* Line 1806 of yacc.c  */
    5883 #line 788 "parser.yy"
    5884     { (yyval.sn) = 0; }
    5885     break;
    5886 
    5887   case 170:
    5888 
    5889 /* Line 1806 of yacc.c  */
    5890 #line 794 "parser.yy"
    5891     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
    5892     break;
    5893 
    5894   case 171:
    5895 
    5896 /* Line 1806 of yacc.c  */
    5897 #line 796 "parser.yy"
    5898     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    5899     break;
    5900 
    5901   case 172:
    5902 
    5903 /* Line 1806 of yacc.c  */
    5904 #line 801 "parser.yy"
    5905     { (yyval.sn) = 0; }
    5906     break;
    5907 
    5908   case 174:
    5909 
    5910 /* Line 1806 of yacc.c  */
    5911 #line 807 "parser.yy"
    5912     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5913     break;
    5914 
    5915   case 175:
    5916 
    5917 /* Line 1806 of yacc.c  */
    5918 #line 809 "parser.yy"
    5919     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
    5920     break;
    5921 
    5922   case 176:
    5923 
    5924 /* Line 1806 of yacc.c  */
    5925 #line 811 "parser.yy"
    5926     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5927     break;
    5928 
    5929   case 177:
    5930 
    5931 /* Line 1806 of yacc.c  */
    5932 #line 813 "parser.yy"
    5933     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    5934     break;
    5935 
    5936   case 178:
    5937 
    5938 /* Line 1806 of yacc.c  */
    5939 #line 818 "parser.yy"
    5940     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    5941     break;
    5942 
    5943   case 180:
    5944 
    5945 /* Line 1806 of yacc.c  */
    5946 #line 824 "parser.yy"
    5947     { (yyval.sn) = 0; }
    5948     break;
    5949 
    5950   case 181:
    5951 
    5952 /* Line 1806 of yacc.c  */
    5953 #line 826 "parser.yy"
    5954     { (yyval.sn) = 0; }
    5955     break;
    5956 
    5957   case 182:
    5958 
    5959 /* Line 1806 of yacc.c  */
    5960 #line 831 "parser.yy"
    5961     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5962     break;
    5963 
    5964   case 183:
    5965 
    5966 /* Line 1806 of yacc.c  */
    5967 #line 833 "parser.yy"
    5968     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    5969     break;
    5970 
    5971   case 184:
    5972 
    5973 /* Line 1806 of yacc.c  */
    5974 #line 835 "parser.yy"
    5975     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    5976     break;
    5977 
    5978   case 185:
    5979 
    5980 /* Line 1806 of yacc.c  */
    5981 #line 840 "parser.yy"
    5982     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    5983     break;
    5984 
    5985   case 186:
    5986 
    5987 /* Line 1806 of yacc.c  */
    5988 #line 842 "parser.yy"
    5989     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5990     break;
    5991 
    5992   case 187:
    5993 
    5994 /* Line 1806 of yacc.c  */
    5995 #line 847 "parser.yy"
    5996     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    5997     break;
    5998 
    5999   case 188:
    6000 
    6001 /* Line 1806 of yacc.c  */
    6002 #line 851 "parser.yy"
    6003     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    6004     break;
    6005 
    6006   case 189:
    6007 
    6008 /* Line 1806 of yacc.c  */
    6009 #line 854 "parser.yy"
    6010     { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    6011     break;
    6012 
    6013   case 190:
    6014 
    6015 /* Line 1806 of yacc.c  */
    6016 #line 858 "parser.yy"
    6017     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    6018     break;
    6019 
    6020   case 191:
    6021 
    6022 /* Line 1806 of yacc.c  */
    6023 #line 861 "parser.yy"
    6024     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    6025     break;
    6026 
    6027   case 192:
    6028 
    6029 /* Line 1806 of yacc.c  */
    6030 #line 865 "parser.yy"
    6031     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    6032     break;
    6033 
    6034   case 193:
    6035 
    6036 /* Line 1806 of yacc.c  */
    6037 #line 867 "parser.yy"
    6038     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    6039     break;
    6040 
    6041   case 194:
    6042 
    6043 /* Line 1806 of yacc.c  */
    6044 #line 869 "parser.yy"
    6045     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    6046     break;
    6047 
    6048   case 195:
    6049 
    6050 /* Line 1806 of yacc.c  */
    6051 #line 873 "parser.yy"
    6052     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    6053     break;
    6054 
    6055   case 196:
    6056 
    6057 /* Line 1806 of yacc.c  */
    6058 #line 875 "parser.yy"
    6059     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    6060     break;
    6061 
    6062   case 197:
    6063 
    6064 /* Line 1806 of yacc.c  */
    6065 #line 882 "parser.yy"
    6066     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6067     break;
    6068 
    6069   case 198:
    6070 
    6071 /* Line 1806 of yacc.c  */
    6072 #line 884 "parser.yy"
    6073     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6074     break;
    6075 
    6076   case 199:
    6077 
    6078 /* Line 1806 of yacc.c  */
    6079 #line 886 "parser.yy"
    6080     {
    6081                         (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
    6082                         (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (4)].sn),*(yyvsp[(3) - (4)].pn) ))));
     5467#line 5468 "Parser/parser.cc" /* yacc.c:1646  */
     5468    break;
     5469
     5470  case 208:
     5471#line 917 "parser.yy" /* yacc.c:1646  */
     5472    {
     5473                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     5474                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
    60835475                }
    6084     break;
    6085 
    6086   case 201:
    6087 
    6088 /* Line 1806 of yacc.c  */
    6089 #line 897 "parser.yy"
    6090     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    6091     break;
    6092 
    6093   case 202:
    6094 
    6095 /* Line 1806 of yacc.c  */
    6096 #line 899 "parser.yy"
    6097     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    6098     break;
    6099 
    6100   case 203:
    6101 
    6102 /* Line 1806 of yacc.c  */
    6103 #line 901 "parser.yy"
    6104     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    6105     break;
    6106 
    6107   case 204:
    6108 
    6109 /* Line 1806 of yacc.c  */
    6110 #line 903 "parser.yy"
    6111     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    6112     break;
    6113 
    6114   case 205:
    6115 
    6116 /* Line 1806 of yacc.c  */
    6117 #line 908 "parser.yy"
    6118     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6119     break;
    6120 
    6121   case 206:
    6122 
    6123 /* Line 1806 of yacc.c  */
    6124 #line 910 "parser.yy"
    6125     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    6126     break;
    6127 
    6128   case 207:
    6129 
    6130 /* Line 1806 of yacc.c  */
    6131 #line 912 "parser.yy"
    6132     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    6133     break;
    6134 
    6135   case 208:
    6136 
    6137 /* Line 1806 of yacc.c  */
    6138 #line 914 "parser.yy"
    6139     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     5476#line 5477 "Parser/parser.cc" /* yacc.c:1646  */
    61405477    break;
    61415478
    61425479  case 209:
    6143 
    6144 /* Line 1806 of yacc.c  */
    6145 #line 919 "parser.yy"
    6146     {
    6147                         (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
    6148                         std::cout << "Just created a finally node" << std::endl;
     5480#line 922 "parser.yy" /* yacc.c:1646  */
     5481    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     5482#line 5483 "Parser/parser.cc" /* yacc.c:1646  */
     5483    break;
     5484
     5485  case 210:
     5486#line 924 "parser.yy" /* yacc.c:1646  */
     5487    {
     5488                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     5489                        (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
    61495490                }
    6150     break;
    6151 
    6152   case 211:
    6153 
    6154 /* Line 1806 of yacc.c  */
    6155 #line 933 "parser.yy"
     5491#line 5492 "Parser/parser.cc" /* yacc.c:1646  */
     5492    break;
     5493
     5494  case 212:
     5495#line 933 "parser.yy" /* yacc.c:1646  */
     5496    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
     5497#line 5498 "Parser/parser.cc" /* yacc.c:1646  */
     5498    break;
     5499
     5500  case 213:
     5501#line 935 "parser.yy" /* yacc.c:1646  */
     5502    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
     5503#line 5504 "Parser/parser.cc" /* yacc.c:1646  */
     5504    break;
     5505
     5506  case 214:
     5507#line 937 "parser.yy" /* yacc.c:1646  */
     5508    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     5509#line 5510 "Parser/parser.cc" /* yacc.c:1646  */
     5510    break;
     5511
     5512  case 215:
     5513#line 939 "parser.yy" /* yacc.c:1646  */
     5514    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     5515#line 5516 "Parser/parser.cc" /* yacc.c:1646  */
     5516    break;
     5517
     5518  case 216:
     5519#line 941 "parser.yy" /* yacc.c:1646  */
     5520    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); }
     5521#line 5522 "Parser/parser.cc" /* yacc.c:1646  */
     5522    break;
     5523
     5524  case 217:
     5525#line 946 "parser.yy" /* yacc.c:1646  */
     5526    { (yyval.flag) = false; }
     5527#line 5528 "Parser/parser.cc" /* yacc.c:1646  */
     5528    break;
     5529
     5530  case 218:
     5531#line 948 "parser.yy" /* yacc.c:1646  */
     5532    { (yyval.flag) = true; }
     5533#line 5534 "Parser/parser.cc" /* yacc.c:1646  */
     5534    break;
     5535
     5536  case 219:
     5537#line 953 "parser.yy" /* yacc.c:1646  */
     5538    { (yyval.en) = 0; }
     5539#line 5540 "Parser/parser.cc" /* yacc.c:1646  */
     5540    break;
     5541
     5542  case 222:
     5543#line 960 "parser.yy" /* yacc.c:1646  */
     5544    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
     5545#line 5546 "Parser/parser.cc" /* yacc.c:1646  */
     5546    break;
     5547
     5548  case 223:
     5549#line 965 "parser.yy" /* yacc.c:1646  */
     5550    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
     5551#line 5552 "Parser/parser.cc" /* yacc.c:1646  */
     5552    break;
     5553
     5554  case 224:
     5555#line 967 "parser.yy" /* yacc.c:1646  */
     5556    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
     5557#line 5558 "Parser/parser.cc" /* yacc.c:1646  */
     5558    break;
     5559
     5560  case 225:
     5561#line 972 "parser.yy" /* yacc.c:1646  */
     5562    { (yyval.en) = 0; }
     5563#line 5564 "Parser/parser.cc" /* yacc.c:1646  */
     5564    break;
     5565
     5566  case 226:
     5567#line 974 "parser.yy" /* yacc.c:1646  */
     5568    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
     5569#line 5570 "Parser/parser.cc" /* yacc.c:1646  */
     5570    break;
     5571
     5572  case 227:
     5573#line 976 "parser.yy" /* yacc.c:1646  */
     5574    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
     5575#line 5576 "Parser/parser.cc" /* yacc.c:1646  */
     5576    break;
     5577
     5578  case 228:
     5579#line 981 "parser.yy" /* yacc.c:1646  */
     5580    { (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( assign_strptr((yyvsp[0].tok)) ); }
     5581#line 5582 "Parser/parser.cc" /* yacc.c:1646  */
     5582    break;
     5583
     5584  case 229:
     5585#line 983 "parser.yy" /* yacc.c:1646  */
     5586    { (yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( assign_strptr((yyvsp[0].tok)) ); }
     5587#line 5588 "Parser/parser.cc" /* yacc.c:1646  */
     5588    break;
     5589
     5590  case 230:
     5591#line 990 "parser.yy" /* yacc.c:1646  */
     5592    { (yyval.decl) = 0; }
     5593#line 5594 "Parser/parser.cc" /* yacc.c:1646  */
     5594    break;
     5595
     5596  case 233:
     5597#line 997 "parser.yy" /* yacc.c:1646  */
     5598    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     5599#line 5600 "Parser/parser.cc" /* yacc.c:1646  */
     5600    break;
     5601
     5602  case 234:
     5603#line 1002 "parser.yy" /* yacc.c:1646  */
     5604    { (yyval.decl) = 0; }
     5605#line 5606 "Parser/parser.cc" /* yacc.c:1646  */
     5606    break;
     5607
     5608  case 237:
     5609#line 1009 "parser.yy" /* yacc.c:1646  */
     5610    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     5611#line 5612 "Parser/parser.cc" /* yacc.c:1646  */
     5612    break;
     5613
     5614  case 242:
     5615#line 1023 "parser.yy" /* yacc.c:1646  */
     5616    {}
     5617#line 5618 "Parser/parser.cc" /* yacc.c:1646  */
     5618    break;
     5619
     5620  case 243:
     5621#line 1024 "parser.yy" /* yacc.c:1646  */
     5622    {}
     5623#line 5624 "Parser/parser.cc" /* yacc.c:1646  */
     5624    break;
     5625
     5626  case 251:
     5627#line 1053 "parser.yy" /* yacc.c:1646  */
    61565628    {
    61575629                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6158                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
     5630                        (yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
    61595631                }
    6160     break;
    6161 
    6162   case 212:
    6163 
    6164 /* Line 1806 of yacc.c  */
    6165 #line 938 "parser.yy"
    6166     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    6167     break;
    6168 
    6169   case 213:
    6170 
    6171 /* Line 1806 of yacc.c  */
    6172 #line 940 "parser.yy"
     5632#line 5633 "Parser/parser.cc" /* yacc.c:1646  */
     5633    break;
     5634
     5635  case 252:
     5636#line 1060 "parser.yy" /* yacc.c:1646  */
    61735637    {
    61745638                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6175                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
     5639                        (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
    61765640                }
    6177     break;
    6178 
    6179   case 215:
    6180 
    6181 /* Line 1806 of yacc.c  */
    6182 #line 949 "parser.yy"
    6183     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    6184     break;
    6185 
    6186   case 216:
    6187 
    6188 /* Line 1806 of yacc.c  */
    6189 #line 951 "parser.yy"
    6190     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    6191     break;
    6192 
    6193   case 217:
    6194 
    6195 /* Line 1806 of yacc.c  */
    6196 #line 953 "parser.yy"
    6197     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    6198     break;
    6199 
    6200   case 218:
    6201 
    6202 /* Line 1806 of yacc.c  */
    6203 #line 955 "parser.yy"
    6204     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
    6205     break;
    6206 
    6207   case 219:
    6208 
    6209 /* Line 1806 of yacc.c  */
    6210 #line 957 "parser.yy"
    6211     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
    6212     break;
    6213 
    6214   case 220:
    6215 
    6216 /* Line 1806 of yacc.c  */
    6217 #line 962 "parser.yy"
    6218     { (yyval.flag) = false; }
    6219     break;
    6220 
    6221   case 221:
    6222 
    6223 /* Line 1806 of yacc.c  */
    6224 #line 964 "parser.yy"
    6225     { (yyval.flag) = true; }
    6226     break;
    6227 
    6228   case 222:
    6229 
    6230 /* Line 1806 of yacc.c  */
    6231 #line 969 "parser.yy"
    6232     { (yyval.en) = 0; }
    6233     break;
    6234 
    6235   case 225:
    6236 
    6237 /* Line 1806 of yacc.c  */
    6238 #line 976 "parser.yy"
    6239     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    6240     break;
    6241 
    6242   case 226:
    6243 
    6244 /* Line 1806 of yacc.c  */
    6245 #line 981 "parser.yy"
    6246     { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    6247     break;
    6248 
    6249   case 227:
    6250 
    6251 /* Line 1806 of yacc.c  */
    6252 #line 983 "parser.yy"
    6253     { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    6254     break;
    6255 
    6256   case 228:
    6257 
    6258 /* Line 1806 of yacc.c  */
    6259 #line 988 "parser.yy"
    6260     { (yyval.constant) = 0; }
    6261     break;
    6262 
    6263   case 229:
    6264 
    6265 /* Line 1806 of yacc.c  */
    6266 #line 990 "parser.yy"
    6267     { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    6268     break;
    6269 
    6270   case 230:
    6271 
    6272 /* Line 1806 of yacc.c  */
    6273 #line 992 "parser.yy"
    6274     { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    6275     break;
    6276 
    6277   case 231:
    6278 
    6279 /* Line 1806 of yacc.c  */
    6280 #line 997 "parser.yy"
    6281     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    6282     break;
    6283 
    6284   case 232:
    6285 
    6286 /* Line 1806 of yacc.c  */
    6287 #line 999 "parser.yy"
    6288     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    6289     break;
    6290 
    6291   case 233:
    6292 
    6293 /* Line 1806 of yacc.c  */
    6294 #line 1006 "parser.yy"
    6295     { (yyval.decl) = 0; }
    6296     break;
    6297 
    6298   case 236:
    6299 
    6300 /* Line 1806 of yacc.c  */
    6301 #line 1013 "parser.yy"
    6302     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6303     break;
    6304 
    6305   case 237:
    6306 
    6307 /* Line 1806 of yacc.c  */
    6308 #line 1018 "parser.yy"
    6309     { (yyval.decl) = 0; }
    6310     break;
    6311 
    6312   case 240:
    6313 
    6314 /* Line 1806 of yacc.c  */
    6315 #line 1025 "parser.yy"
    6316     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6317     break;
    6318 
    6319   case 245:
    6320 
    6321 /* Line 1806 of yacc.c  */
    6322 #line 1039 "parser.yy"
    6323     {}
    6324     break;
    6325 
    6326   case 246:
    6327 
    6328 /* Line 1806 of yacc.c  */
    6329 #line 1040 "parser.yy"
    6330     {}
     5641#line 5642 "Parser/parser.cc" /* yacc.c:1646  */
     5642    break;
     5643
     5644  case 253:
     5645#line 1065 "parser.yy" /* yacc.c:1646  */
     5646    {
     5647                        typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID );
     5648                        (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) );
     5649                }
     5650#line 5651 "Parser/parser.cc" /* yacc.c:1646  */
    63315651    break;
    63325652
    63335653  case 254:
    6334 
    6335 /* Line 1806 of yacc.c  */
    6336 #line 1069 "parser.yy"
     5654#line 1075 "parser.yy" /* yacc.c:1646  */
     5655    {
     5656                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5657                        (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
     5658                }
     5659#line 5660 "Parser/parser.cc" /* yacc.c:1646  */
     5660    break;
     5661
     5662  case 255:
     5663#line 1080 "parser.yy" /* yacc.c:1646  */
     5664    {
     5665                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5666                        (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
     5667                }
     5668#line 5669 "Parser/parser.cc" /* yacc.c:1646  */
     5669    break;
     5670
     5671  case 256:
     5672#line 1085 "parser.yy" /* yacc.c:1646  */
     5673    {
     5674                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
     5675                        (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
     5676                }
     5677#line 5678 "Parser/parser.cc" /* yacc.c:1646  */
     5678    break;
     5679
     5680  case 257:
     5681#line 1093 "parser.yy" /* yacc.c:1646  */
    63375682    {
    63385683                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6339                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
     5684                        (yyval.decl) = (yyvsp[0].decl);
    63405685                }
    6341     break;
    6342 
    6343   case 255:
    6344 
    6345 /* Line 1806 of yacc.c  */
    6346 #line 1076 "parser.yy"
     5686#line 5687 "Parser/parser.cc" /* yacc.c:1646  */
     5687    break;
     5688
     5689  case 258:
     5690#line 1098 "parser.yy" /* yacc.c:1646  */
    63475691    {
    63485692                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6349                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
     5693                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
    63505694                }
    6351     break;
    6352 
    6353   case 256:
    6354 
    6355 /* Line 1806 of yacc.c  */
    6356 #line 1081 "parser.yy"
    6357     {
    6358                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
    6359                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
     5695#line 5696 "Parser/parser.cc" /* yacc.c:1646  */
     5696    break;
     5697
     5698  case 259:
     5699#line 1103 "parser.yy" /* yacc.c:1646  */
     5700    {
     5701                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     5702                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
    63605703                }
    6361     break;
    6362 
    6363   case 257:
    6364 
    6365 /* Line 1806 of yacc.c  */
    6366 #line 1091 "parser.yy"
    6367     {
    6368                         typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6369                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     5704#line 5705 "Parser/parser.cc" /* yacc.c:1646  */
     5705    break;
     5706
     5707  case 260:
     5708#line 1108 "parser.yy" /* yacc.c:1646  */
     5709    {
     5710                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     5711                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
    63705712                }
    6371     break;
    6372 
    6373   case 258:
    6374 
    6375 /* Line 1806 of yacc.c  */
    6376 #line 1096 "parser.yy"
    6377     {
    6378                         typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
    6379                         (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
     5713#line 5714 "Parser/parser.cc" /* yacc.c:1646  */
     5714    break;
     5715
     5716  case 261:
     5717#line 1113 "parser.yy" /* yacc.c:1646  */
     5718    {
     5719                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
     5720                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    63805721                }
    6381     break;
    6382 
    6383   case 259:
    6384 
    6385 /* Line 1806 of yacc.c  */
    6386 #line 1101 "parser.yy"
    6387     {
    6388                         typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
    6389                         (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
     5722#line 5723 "Parser/parser.cc" /* yacc.c:1646  */
     5723    break;
     5724
     5725  case 262:
     5726#line 1121 "parser.yy" /* yacc.c:1646  */
     5727    {
     5728                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), DeclarationNode::newTuple( 0 ), (yyvsp[-2].decl), 0, true );
    63905729                }
    6391     break;
    6392 
    6393   case 260:
    6394 
    6395 /* Line 1806 of yacc.c  */
    6396 #line 1109 "parser.yy"
    6397     {
    6398                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    6399                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
     5730#line 5731 "Parser/parser.cc" /* yacc.c:1646  */
     5731    break;
     5732
     5733  case 263:
     5734#line 1144 "parser.yy" /* yacc.c:1646  */
     5735    {
     5736                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
    64005737                }
    6401     break;
    6402 
    6403   case 261:
    6404 
    6405 /* Line 1806 of yacc.c  */
    6406 #line 1114 "parser.yy"
    6407     {
    6408                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    6409                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
     5738#line 5739 "Parser/parser.cc" /* yacc.c:1646  */
     5739    break;
     5740
     5741  case 264:
     5742#line 1148 "parser.yy" /* yacc.c:1646  */
     5743    {
     5744                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
    64105745                }
    6411     break;
    6412 
    6413   case 262:
    6414 
    6415 /* Line 1806 of yacc.c  */
    6416 #line 1119 "parser.yy"
    6417     {
    6418                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    6419                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
     5746#line 5747 "Parser/parser.cc" /* yacc.c:1646  */
     5747    break;
     5748
     5749  case 265:
     5750#line 1155 "parser.yy" /* yacc.c:1646  */
     5751    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
     5752#line 5753 "Parser/parser.cc" /* yacc.c:1646  */
     5753    break;
     5754
     5755  case 266:
     5756#line 1159 "parser.yy" /* yacc.c:1646  */
     5757    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
     5758#line 5759 "Parser/parser.cc" /* yacc.c:1646  */
     5759    break;
     5760
     5761  case 267:
     5762#line 1164 "parser.yy" /* yacc.c:1646  */
     5763    {
     5764                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     5765                        (yyval.decl) = (yyvsp[0].decl)->addTypedef();
    64205766                }
    6421     break;
    6422 
    6423   case 263:
    6424 
    6425 /* Line 1806 of yacc.c  */
    6426 #line 1124 "parser.yy"
    6427     {
    6428                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    6429                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
     5767#line 5768 "Parser/parser.cc" /* yacc.c:1646  */
     5768    break;
     5769
     5770  case 268:
     5771#line 1169 "parser.yy" /* yacc.c:1646  */
     5772    {
     5773                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     5774                        (yyval.decl) = (yyvsp[0].decl)->addTypedef();
    64305775                }
    6431     break;
    6432 
    6433   case 264:
    6434 
    6435 /* Line 1806 of yacc.c  */
    6436 #line 1129 "parser.yy"
    6437     {
    6438                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
    6439                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
     5776#line 5777 "Parser/parser.cc" /* yacc.c:1646  */
     5777    break;
     5778
     5779  case 269:
     5780#line 1174 "parser.yy" /* yacc.c:1646  */
     5781    {
     5782                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
     5783                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    64405784                }
    6441     break;
    6442 
    6443   case 265:
    6444 
    6445 /* Line 1806 of yacc.c  */
    6446 #line 1137 "parser.yy"
    6447     {
    6448                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     5785#line 5786 "Parser/parser.cc" /* yacc.c:1646  */
     5786    break;
     5787
     5788  case 270:
     5789#line 1185 "parser.yy" /* yacc.c:1646  */
     5790    {
     5791                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     5792                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
    64495793                }
    6450     break;
    6451 
    6452   case 266:
    6453 
    6454 /* Line 1806 of yacc.c  */
    6455 #line 1160 "parser.yy"
    6456     {
    6457                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     5794#line 5795 "Parser/parser.cc" /* yacc.c:1646  */
     5795    break;
     5796
     5797  case 271:
     5798#line 1190 "parser.yy" /* yacc.c:1646  */
     5799    {
     5800                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     5801                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
    64585802                }
    6459     break;
    6460 
    6461   case 267:
    6462 
    6463 /* Line 1806 of yacc.c  */
    6464 #line 1164 "parser.yy"
    6465     {
    6466                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     5803#line 5804 "Parser/parser.cc" /* yacc.c:1646  */
     5804    break;
     5805
     5806  case 272:
     5807#line 1195 "parser.yy" /* yacc.c:1646  */
     5808    {
     5809                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     5810                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
    64675811                }
    6468     break;
    6469 
    6470   case 268:
    6471 
    6472 /* Line 1806 of yacc.c  */
    6473 #line 1171 "parser.yy"
    6474     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    6475     break;
    6476 
    6477   case 269:
    6478 
    6479 /* Line 1806 of yacc.c  */
    6480 #line 1175 "parser.yy"
    6481     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    6482     break;
    6483 
    6484   case 270:
    6485 
    6486 /* Line 1806 of yacc.c  */
    6487 #line 1180 "parser.yy"
     5812#line 5813 "Parser/parser.cc" /* yacc.c:1646  */
     5813    break;
     5814
     5815  case 273:
     5816#line 1200 "parser.yy" /* yacc.c:1646  */
    64885817    {
    64895818                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6490                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
     5819                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
    64915820                }
    6492     break;
    6493 
    6494   case 271:
    6495 
    6496 /* Line 1806 of yacc.c  */
    6497 #line 1185 "parser.yy"
     5821#line 5822 "Parser/parser.cc" /* yacc.c:1646  */
     5822    break;
     5823
     5824  case 274:
     5825#line 1205 "parser.yy" /* yacc.c:1646  */
    64985826    {
    64995827                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    6500                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
     5828                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
    65015829                }
    6502     break;
    6503 
    6504   case 272:
    6505 
    6506 /* Line 1806 of yacc.c  */
    6507 #line 1190 "parser.yy"
    6508     {
    6509                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
    6510                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    6511                 }
    6512     break;
    6513 
    6514   case 273:
    6515 
    6516 /* Line 1806 of yacc.c  */
    6517 #line 1201 "parser.yy"
    6518     {
    6519                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    6520                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
    6521                 }
    6522     break;
    6523 
    6524   case 274:
    6525 
    6526 /* Line 1806 of yacc.c  */
    6527 #line 1206 "parser.yy"
    6528     {
    6529                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    6530                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
    6531                 }
     5830#line 5831 "Parser/parser.cc" /* yacc.c:1646  */
    65325831    break;
    65335832
    65345833  case 275:
    6535 
    6536 /* Line 1806 of yacc.c  */
    6537 #line 1211 "parser.yy"
    6538     {
    6539                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    6540                         (yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
    6541                 }
    6542     break;
    6543 
    6544   case 276:
    6545 
    6546 /* Line 1806 of yacc.c  */
    6547 #line 1216 "parser.yy"
    6548     {
    6549                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    6550                         (yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
    6551                 }
    6552     break;
    6553 
    6554   case 277:
    6555 
    6556 /* Line 1806 of yacc.c  */
    6557 #line 1221 "parser.yy"
    6558     {
    6559                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    6560                         (yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
    6561                 }
    6562     break;
    6563 
    6564   case 278:
    6565 
    6566 /* Line 1806 of yacc.c  */
    6567 #line 1230 "parser.yy"
    6568     {
    6569                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     5834#line 1214 "parser.yy" /* yacc.c:1646  */
     5835    {
     5836                        typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
    65705837                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    65715838                }
    6572     break;
    6573 
    6574   case 279:
    6575 
    6576 /* Line 1806 of yacc.c  */
    6577 #line 1235 "parser.yy"
    6578     {
    6579                         typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     5839#line 5840 "Parser/parser.cc" /* yacc.c:1646  */
     5840    break;
     5841
     5842  case 276:
     5843#line 1219 "parser.yy" /* yacc.c:1646  */
     5844    {
     5845                        typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
    65805846                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    65815847                }
    6582     break;
    6583 
    6584   case 284:
    6585 
    6586 /* Line 1806 of yacc.c  */
    6587 #line 1252 "parser.yy"
     5848#line 5849 "Parser/parser.cc" /* yacc.c:1646  */
     5849    break;
     5850
     5851  case 281:
     5852#line 1236 "parser.yy" /* yacc.c:1646  */
    65885853    {
    65895854                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6590                         (yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
     5855                        (yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
    65915856                }
    6592     break;
    6593 
    6594   case 285:
    6595 
    6596 /* Line 1806 of yacc.c  */
    6597 #line 1257 "parser.yy"
     5857#line 5858 "Parser/parser.cc" /* yacc.c:1646  */
     5858    break;
     5859
     5860  case 282:
     5861#line 1241 "parser.yy" /* yacc.c:1646  */
    65985862    {
    65995863                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6600                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
     5864                        (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
    66015865                }
     5866#line 5867 "Parser/parser.cc" /* yacc.c:1646  */
     5867    break;
     5868
     5869  case 291:
     5870#line 1263 "parser.yy" /* yacc.c:1646  */
     5871    { (yyval.decl) = 0; }
     5872#line 5873 "Parser/parser.cc" /* yacc.c:1646  */
    66025873    break;
    66035874
    66045875  case 294:
    6605 
    6606 /* Line 1806 of yacc.c  */
    6607 #line 1279 "parser.yy"
    6608     { (yyval.decl) = 0; }
     5876#line 1275 "parser.yy" /* yacc.c:1646  */
     5877    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5878#line 5879 "Parser/parser.cc" /* yacc.c:1646  */
    66095879    break;
    66105880
    66115881  case 297:
    6612 
    6613 /* Line 1806 of yacc.c  */
    6614 #line 1291 "parser.yy"
    6615     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     5882#line 1286 "parser.yy" /* yacc.c:1646  */
     5883    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     5884#line 5885 "Parser/parser.cc" /* yacc.c:1646  */
     5885    break;
     5886
     5887  case 298:
     5888#line 1288 "parser.yy" /* yacc.c:1646  */
     5889    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     5890#line 5891 "Parser/parser.cc" /* yacc.c:1646  */
     5891    break;
     5892
     5893  case 299:
     5894#line 1290 "parser.yy" /* yacc.c:1646  */
     5895    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     5896#line 5897 "Parser/parser.cc" /* yacc.c:1646  */
    66165897    break;
    66175898
    66185899  case 300:
    6619 
    6620 /* Line 1806 of yacc.c  */
    6621 #line 1302 "parser.yy"
    6622     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     5900#line 1292 "parser.yy" /* yacc.c:1646  */
     5901    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     5902#line 5903 "Parser/parser.cc" /* yacc.c:1646  */
    66235903    break;
    66245904
    66255905  case 301:
    6626 
    6627 /* Line 1806 of yacc.c  */
    6628 #line 1304 "parser.yy"
    6629     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     5906#line 1294 "parser.yy" /* yacc.c:1646  */
     5907    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     5908#line 5909 "Parser/parser.cc" /* yacc.c:1646  */
    66305909    break;
    66315910
    66325911  case 302:
    6633 
    6634 /* Line 1806 of yacc.c  */
    6635 #line 1306 "parser.yy"
    6636     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6637     break;
    6638 
    6639   case 303:
    6640 
    6641 /* Line 1806 of yacc.c  */
    6642 #line 1308 "parser.yy"
    6643     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6644     break;
    6645 
    6646   case 304:
    6647 
    6648 /* Line 1806 of yacc.c  */
    6649 #line 1310 "parser.yy"
    6650     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    6651     break;
    6652 
    6653   case 305:
    6654 
    6655 /* Line 1806 of yacc.c  */
    6656 #line 1312 "parser.yy"
     5912#line 1296 "parser.yy" /* yacc.c:1646  */
    66575913    {
    66585914                        typedefTable.enterScope();
    66595915                }
     5916#line 5917 "Parser/parser.cc" /* yacc.c:1646  */
     5917    break;
     5918
     5919  case 303:
     5920#line 1300 "parser.yy" /* yacc.c:1646  */
     5921    {
     5922                        typedefTable.leaveScope();
     5923                        (yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
     5924                }
     5925#line 5926 "Parser/parser.cc" /* yacc.c:1646  */
     5926    break;
     5927
     5928  case 305:
     5929#line 1309 "parser.yy" /* yacc.c:1646  */
     5930    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5931#line 5932 "Parser/parser.cc" /* yacc.c:1646  */
    66605932    break;
    66615933
    66625934  case 306:
    6663 
    6664 /* Line 1806 of yacc.c  */
    6665 #line 1316 "parser.yy"
    6666     {
    6667                         typedefTable.leaveScope();
    6668                         (yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
     5935#line 1311 "parser.yy" /* yacc.c:1646  */
     5936    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     5937#line 5938 "Parser/parser.cc" /* yacc.c:1646  */
     5938    break;
     5939
     5940  case 308:
     5941#line 1322 "parser.yy" /* yacc.c:1646  */
     5942    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     5943#line 5944 "Parser/parser.cc" /* yacc.c:1646  */
     5944    break;
     5945
     5946  case 309:
     5947#line 1327 "parser.yy" /* yacc.c:1646  */
     5948    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     5949#line 5950 "Parser/parser.cc" /* yacc.c:1646  */
     5950    break;
     5951
     5952  case 310:
     5953#line 1329 "parser.yy" /* yacc.c:1646  */
     5954    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     5955#line 5956 "Parser/parser.cc" /* yacc.c:1646  */
     5956    break;
     5957
     5958  case 311:
     5959#line 1331 "parser.yy" /* yacc.c:1646  */
     5960    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     5961#line 5962 "Parser/parser.cc" /* yacc.c:1646  */
     5962    break;
     5963
     5964  case 312:
     5965#line 1333 "parser.yy" /* yacc.c:1646  */
     5966    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     5967#line 5968 "Parser/parser.cc" /* yacc.c:1646  */
     5968    break;
     5969
     5970  case 313:
     5971#line 1335 "parser.yy" /* yacc.c:1646  */
     5972    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     5973#line 5974 "Parser/parser.cc" /* yacc.c:1646  */
     5974    break;
     5975
     5976  case 314:
     5977#line 1337 "parser.yy" /* yacc.c:1646  */
     5978    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     5979#line 5980 "Parser/parser.cc" /* yacc.c:1646  */
     5980    break;
     5981
     5982  case 315:
     5983#line 1339 "parser.yy" /* yacc.c:1646  */
     5984    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     5985#line 5986 "Parser/parser.cc" /* yacc.c:1646  */
     5986    break;
     5987
     5988  case 316:
     5989#line 1341 "parser.yy" /* yacc.c:1646  */
     5990    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     5991#line 5992 "Parser/parser.cc" /* yacc.c:1646  */
     5992    break;
     5993
     5994  case 317:
     5995#line 1346 "parser.yy" /* yacc.c:1646  */
     5996    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     5997#line 5998 "Parser/parser.cc" /* yacc.c:1646  */
     5998    break;
     5999
     6000  case 318:
     6001#line 1348 "parser.yy" /* yacc.c:1646  */
     6002    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6003#line 6004 "Parser/parser.cc" /* yacc.c:1646  */
     6004    break;
     6005
     6006  case 319:
     6007#line 1350 "parser.yy" /* yacc.c:1646  */
     6008    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6009#line 6010 "Parser/parser.cc" /* yacc.c:1646  */
     6010    break;
     6011
     6012  case 320:
     6013#line 1352 "parser.yy" /* yacc.c:1646  */
     6014    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6015#line 6016 "Parser/parser.cc" /* yacc.c:1646  */
     6016    break;
     6017
     6018  case 321:
     6019#line 1354 "parser.yy" /* yacc.c:1646  */
     6020    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6021#line 6022 "Parser/parser.cc" /* yacc.c:1646  */
     6022    break;
     6023
     6024  case 322:
     6025#line 1356 "parser.yy" /* yacc.c:1646  */
     6026    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6027#line 6028 "Parser/parser.cc" /* yacc.c:1646  */
     6028    break;
     6029
     6030  case 323:
     6031#line 1358 "parser.yy" /* yacc.c:1646  */
     6032    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6033#line 6034 "Parser/parser.cc" /* yacc.c:1646  */
     6034    break;
     6035
     6036  case 324:
     6037#line 1360 "parser.yy" /* yacc.c:1646  */
     6038    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6039#line 6040 "Parser/parser.cc" /* yacc.c:1646  */
     6040    break;
     6041
     6042  case 325:
     6043#line 1362 "parser.yy" /* yacc.c:1646  */
     6044    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6045#line 6046 "Parser/parser.cc" /* yacc.c:1646  */
     6046    break;
     6047
     6048  case 326:
     6049#line 1364 "parser.yy" /* yacc.c:1646  */
     6050    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6051#line 6052 "Parser/parser.cc" /* yacc.c:1646  */
     6052    break;
     6053
     6054  case 327:
     6055#line 1366 "parser.yy" /* yacc.c:1646  */
     6056    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6057#line 6058 "Parser/parser.cc" /* yacc.c:1646  */
     6058    break;
     6059
     6060  case 328:
     6061#line 1368 "parser.yy" /* yacc.c:1646  */
     6062    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6063#line 6064 "Parser/parser.cc" /* yacc.c:1646  */
     6064    break;
     6065
     6066  case 329:
     6067#line 1370 "parser.yy" /* yacc.c:1646  */
     6068    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     6069#line 6070 "Parser/parser.cc" /* yacc.c:1646  */
     6070    break;
     6071
     6072  case 331:
     6073#line 1377 "parser.yy" /* yacc.c:1646  */
     6074    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6075#line 6076 "Parser/parser.cc" /* yacc.c:1646  */
     6076    break;
     6077
     6078  case 332:
     6079#line 1379 "parser.yy" /* yacc.c:1646  */
     6080    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6081#line 6082 "Parser/parser.cc" /* yacc.c:1646  */
     6082    break;
     6083
     6084  case 333:
     6085#line 1381 "parser.yy" /* yacc.c:1646  */
     6086    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6087#line 6088 "Parser/parser.cc" /* yacc.c:1646  */
     6088    break;
     6089
     6090  case 334:
     6091#line 1383 "parser.yy" /* yacc.c:1646  */
     6092    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
     6093#line 6094 "Parser/parser.cc" /* yacc.c:1646  */
     6094    break;
     6095
     6096  case 336:
     6097#line 1389 "parser.yy" /* yacc.c:1646  */
     6098    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6099#line 6100 "Parser/parser.cc" /* yacc.c:1646  */
     6100    break;
     6101
     6102  case 338:
     6103#line 1396 "parser.yy" /* yacc.c:1646  */
     6104    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6105#line 6106 "Parser/parser.cc" /* yacc.c:1646  */
     6106    break;
     6107
     6108  case 339:
     6109#line 1398 "parser.yy" /* yacc.c:1646  */
     6110    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6111#line 6112 "Parser/parser.cc" /* yacc.c:1646  */
     6112    break;
     6113
     6114  case 340:
     6115#line 1400 "parser.yy" /* yacc.c:1646  */
     6116    { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
     6117#line 6118 "Parser/parser.cc" /* yacc.c:1646  */
     6118    break;
     6119
     6120  case 341:
     6121#line 1405 "parser.yy" /* yacc.c:1646  */
     6122    { (yyval.decl) = (yyvsp[-1].decl); }
     6123#line 6124 "Parser/parser.cc" /* yacc.c:1646  */
     6124    break;
     6125
     6126  case 342:
     6127#line 1407 "parser.yy" /* yacc.c:1646  */
     6128    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
     6129#line 6130 "Parser/parser.cc" /* yacc.c:1646  */
     6130    break;
     6131
     6132  case 343:
     6133#line 1409 "parser.yy" /* yacc.c:1646  */
     6134    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
     6135#line 6136 "Parser/parser.cc" /* yacc.c:1646  */
     6136    break;
     6137
     6138  case 344:
     6139#line 1411 "parser.yy" /* yacc.c:1646  */
     6140    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
     6141#line 6142 "Parser/parser.cc" /* yacc.c:1646  */
     6142    break;
     6143
     6144  case 346:
     6145#line 1417 "parser.yy" /* yacc.c:1646  */
     6146    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6147#line 6148 "Parser/parser.cc" /* yacc.c:1646  */
     6148    break;
     6149
     6150  case 347:
     6151#line 1419 "parser.yy" /* yacc.c:1646  */
     6152    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6153#line 6154 "Parser/parser.cc" /* yacc.c:1646  */
     6154    break;
     6155
     6156  case 348:
     6157#line 1421 "parser.yy" /* yacc.c:1646  */
     6158    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6159#line 6160 "Parser/parser.cc" /* yacc.c:1646  */
     6160    break;
     6161
     6162  case 350:
     6163#line 1427 "parser.yy" /* yacc.c:1646  */
     6164    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6165#line 6166 "Parser/parser.cc" /* yacc.c:1646  */
     6166    break;
     6167
     6168  case 351:
     6169#line 1429 "parser.yy" /* yacc.c:1646  */
     6170    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6171#line 6172 "Parser/parser.cc" /* yacc.c:1646  */
     6172    break;
     6173
     6174  case 353:
     6175#line 1435 "parser.yy" /* yacc.c:1646  */
     6176    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6177#line 6178 "Parser/parser.cc" /* yacc.c:1646  */
     6178    break;
     6179
     6180  case 354:
     6181#line 1437 "parser.yy" /* yacc.c:1646  */
     6182    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6183#line 6184 "Parser/parser.cc" /* yacc.c:1646  */
     6184    break;
     6185
     6186  case 355:
     6187#line 1439 "parser.yy" /* yacc.c:1646  */
     6188    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6189#line 6190 "Parser/parser.cc" /* yacc.c:1646  */
     6190    break;
     6191
     6192  case 356:
     6193#line 1444 "parser.yy" /* yacc.c:1646  */
     6194    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
     6195#line 6196 "Parser/parser.cc" /* yacc.c:1646  */
     6196    break;
     6197
     6198  case 357:
     6199#line 1446 "parser.yy" /* yacc.c:1646  */
     6200    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
     6201#line 6202 "Parser/parser.cc" /* yacc.c:1646  */
     6202    break;
     6203
     6204  case 358:
     6205#line 1448 "parser.yy" /* yacc.c:1646  */
     6206    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6207#line 6208 "Parser/parser.cc" /* yacc.c:1646  */
     6208    break;
     6209
     6210  case 361:
     6211#line 1458 "parser.yy" /* yacc.c:1646  */
     6212    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), 0, 0, (yyvsp[-1].decl), true ); }
     6213#line 6214 "Parser/parser.cc" /* yacc.c:1646  */
     6214    break;
     6215
     6216  case 362:
     6217#line 1460 "parser.yy" /* yacc.c:1646  */
     6218    {
     6219                        typedefTable.makeTypedef( *(yyvsp[0].tok) );
     6220                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), 0, 0, false );
    66696221                }
    6670     break;
    6671 
    6672   case 308:
    6673 
    6674 /* Line 1806 of yacc.c  */
    6675 #line 1325 "parser.yy"
    6676     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6677     break;
    6678 
    6679   case 309:
    6680 
    6681 /* Line 1806 of yacc.c  */
    6682 #line 1327 "parser.yy"
    6683     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6684     break;
    6685 
    6686   case 311:
    6687 
    6688 /* Line 1806 of yacc.c  */
    6689 #line 1338 "parser.yy"
    6690     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6691     break;
    6692 
    6693   case 313:
    6694 
    6695 /* Line 1806 of yacc.c  */
    6696 #line 1347 "parser.yy"
    6697     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6698     break;
    6699 
    6700   case 314:
    6701 
    6702 /* Line 1806 of yacc.c  */
    6703 #line 1349 "parser.yy"
    6704     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6705     break;
    6706 
    6707   case 315:
    6708 
    6709 /* Line 1806 of yacc.c  */
    6710 #line 1351 "parser.yy"
    6711     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6712     break;
    6713 
    6714   case 316:
    6715 
    6716 /* Line 1806 of yacc.c  */
    6717 #line 1353 "parser.yy"
    6718     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6719     break;
    6720 
    6721   case 317:
    6722 
    6723 /* Line 1806 of yacc.c  */
    6724 #line 1355 "parser.yy"
    6725     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6726     break;
    6727 
    6728   case 318:
    6729 
    6730 /* Line 1806 of yacc.c  */
    6731 #line 1357 "parser.yy"
    6732     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6733     break;
    6734 
    6735   case 319:
    6736 
    6737 /* Line 1806 of yacc.c  */
    6738 #line 1359 "parser.yy"
    6739     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6740     break;
    6741 
    6742   case 320:
    6743 
    6744 /* Line 1806 of yacc.c  */
    6745 #line 1361 "parser.yy"
    6746     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6747     break;
    6748 
    6749   case 321:
    6750 
    6751 /* Line 1806 of yacc.c  */
    6752 #line 1366 "parser.yy"
    6753     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6754     break;
    6755 
    6756   case 322:
    6757 
    6758 /* Line 1806 of yacc.c  */
    6759 #line 1368 "parser.yy"
    6760     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6761     break;
    6762 
    6763   case 323:
    6764 
    6765 /* Line 1806 of yacc.c  */
    6766 #line 1370 "parser.yy"
    6767     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6768     break;
    6769 
    6770   case 324:
    6771 
    6772 /* Line 1806 of yacc.c  */
    6773 #line 1372 "parser.yy"
    6774     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6775     break;
    6776 
    6777   case 325:
    6778 
    6779 /* Line 1806 of yacc.c  */
    6780 #line 1374 "parser.yy"
    6781     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6782     break;
    6783 
    6784   case 326:
    6785 
    6786 /* Line 1806 of yacc.c  */
    6787 #line 1376 "parser.yy"
    6788     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    6789     break;
    6790 
    6791   case 327:
    6792 
    6793 /* Line 1806 of yacc.c  */
    6794 #line 1378 "parser.yy"
    6795     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    6796     break;
    6797 
    6798   case 328:
    6799 
    6800 /* Line 1806 of yacc.c  */
    6801 #line 1380 "parser.yy"
    6802     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    6803     break;
    6804 
    6805   case 329:
    6806 
    6807 /* Line 1806 of yacc.c  */
    6808 #line 1382 "parser.yy"
    6809     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6810     break;
    6811 
    6812   case 330:
    6813 
    6814 /* Line 1806 of yacc.c  */
    6815 #line 1384 "parser.yy"
    6816     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6817     break;
    6818 
    6819   case 331:
    6820 
    6821 /* Line 1806 of yacc.c  */
    6822 #line 1386 "parser.yy"
    6823     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    6824     break;
    6825 
    6826   case 332:
    6827 
    6828 /* Line 1806 of yacc.c  */
    6829 #line 1388 "parser.yy"
    6830     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    6831     break;
    6832 
    6833   case 333:
    6834 
    6835 /* Line 1806 of yacc.c  */
    6836 #line 1390 "parser.yy"
    6837     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    6838     break;
    6839 
    6840   case 335:
    6841 
    6842 /* Line 1806 of yacc.c  */
    6843 #line 1397 "parser.yy"
    6844     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6845     break;
    6846 
    6847   case 336:
    6848 
    6849 /* Line 1806 of yacc.c  */
    6850 #line 1399 "parser.yy"
    6851     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6852     break;
    6853 
    6854   case 337:
    6855 
    6856 /* Line 1806 of yacc.c  */
    6857 #line 1401 "parser.yy"
    6858     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6859     break;
    6860 
    6861   case 338:
    6862 
    6863 /* Line 1806 of yacc.c  */
    6864 #line 1403 "parser.yy"
    6865     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6866     break;
    6867 
    6868   case 340:
    6869 
    6870 /* Line 1806 of yacc.c  */
    6871 #line 1409 "parser.yy"
    6872     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6873     break;
    6874 
    6875   case 342:
    6876 
    6877 /* Line 1806 of yacc.c  */
    6878 #line 1416 "parser.yy"
    6879     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6880     break;
    6881 
    6882   case 343:
    6883 
    6884 /* Line 1806 of yacc.c  */
    6885 #line 1418 "parser.yy"
    6886     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6887     break;
    6888 
    6889   case 344:
    6890 
    6891 /* Line 1806 of yacc.c  */
    6892 #line 1420 "parser.yy"
    6893     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    6894     break;
    6895 
    6896   case 345:
    6897 
    6898 /* Line 1806 of yacc.c  */
    6899 #line 1425 "parser.yy"
    6900     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    6901     break;
    6902 
    6903   case 346:
    6904 
    6905 /* Line 1806 of yacc.c  */
    6906 #line 1427 "parser.yy"
    6907     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    6908     break;
    6909 
    6910   case 347:
    6911 
    6912 /* Line 1806 of yacc.c  */
    6913 #line 1429 "parser.yy"
    6914     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6915     break;
    6916 
    6917   case 348:
    6918 
    6919 /* Line 1806 of yacc.c  */
    6920 #line 1431 "parser.yy"
    6921     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    6922     break;
    6923 
    6924   case 350:
    6925 
    6926 /* Line 1806 of yacc.c  */
    6927 #line 1437 "parser.yy"
    6928     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6929     break;
    6930 
    6931   case 351:
    6932 
    6933 /* Line 1806 of yacc.c  */
    6934 #line 1439 "parser.yy"
    6935     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6936     break;
    6937 
    6938   case 352:
    6939 
    6940 /* Line 1806 of yacc.c  */
    6941 #line 1441 "parser.yy"
    6942     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6943     break;
    6944 
    6945   case 354:
    6946 
    6947 /* Line 1806 of yacc.c  */
    6948 #line 1447 "parser.yy"
    6949     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6950     break;
    6951 
    6952   case 355:
    6953 
    6954 /* Line 1806 of yacc.c  */
    6955 #line 1449 "parser.yy"
    6956     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6957     break;
    6958 
    6959   case 357:
    6960 
    6961 /* Line 1806 of yacc.c  */
    6962 #line 1455 "parser.yy"
    6963     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6964     break;
    6965 
    6966   case 358:
    6967 
    6968 /* Line 1806 of yacc.c  */
    6969 #line 1457 "parser.yy"
    6970     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6971     break;
    6972 
    6973   case 359:
    6974 
    6975 /* Line 1806 of yacc.c  */
    6976 #line 1459 "parser.yy"
    6977     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6978     break;
    6979 
    6980   case 360:
    6981 
    6982 /* Line 1806 of yacc.c  */
    6983 #line 1464 "parser.yy"
    6984     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    6985     break;
    6986 
    6987   case 361:
    6988 
    6989 /* Line 1806 of yacc.c  */
    6990 #line 1466 "parser.yy"
    6991     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    6992     break;
    6993 
    6994   case 362:
    6995 
    6996 /* Line 1806 of yacc.c  */
    6997 #line 1468 "parser.yy"
    6998     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6222#line 6223 "Parser/parser.cc" /* yacc.c:1646  */
     6223    break;
     6224
     6225  case 363:
     6226#line 1465 "parser.yy" /* yacc.c:1646  */
     6227    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
     6228#line 6229 "Parser/parser.cc" /* yacc.c:1646  */
     6229    break;
     6230
     6231  case 364:
     6232#line 1467 "parser.yy" /* yacc.c:1646  */
     6233    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), 0, (yyvsp[-1].decl), true ); }
     6234#line 6235 "Parser/parser.cc" /* yacc.c:1646  */
    69996235    break;
    70006236
    70016237  case 365:
    7002 
    7003 /* Line 1806 of yacc.c  */
    7004 #line 1478 "parser.yy"
    7005     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
     6238#line 1469 "parser.yy" /* yacc.c:1646  */
     6239    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), 0, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
     6240#line 6241 "Parser/parser.cc" /* yacc.c:1646  */
    70066241    break;
    70076242
    70086243  case 366:
    7009 
    7010 /* Line 1806 of yacc.c  */
    7011 #line 1480 "parser.yy"
    7012     {
    7013                         typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    7014                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
     6244#line 1471 "parser.yy" /* yacc.c:1646  */
     6245    { (yyval.decl) = (yyvsp[0].decl); }
     6246#line 6247 "Parser/parser.cc" /* yacc.c:1646  */
     6247    break;
     6248
     6249  case 367:
     6250#line 1476 "parser.yy" /* yacc.c:1646  */
     6251    { (yyval.aggKey) = DeclarationNode::Struct; }
     6252#line 6253 "Parser/parser.cc" /* yacc.c:1646  */
     6253    break;
     6254
     6255  case 368:
     6256#line 1478 "parser.yy" /* yacc.c:1646  */
     6257    { (yyval.aggKey) = DeclarationNode::Union; }
     6258#line 6259 "Parser/parser.cc" /* yacc.c:1646  */
     6259    break;
     6260
     6261  case 369:
     6262#line 1483 "parser.yy" /* yacc.c:1646  */
     6263    { (yyval.decl) = 0; }
     6264#line 6265 "Parser/parser.cc" /* yacc.c:1646  */
     6265    break;
     6266
     6267  case 370:
     6268#line 1485 "parser.yy" /* yacc.c:1646  */
     6269    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6270#line 6271 "Parser/parser.cc" /* yacc.c:1646  */
     6271    break;
     6272
     6273  case 372:
     6274#line 1491 "parser.yy" /* yacc.c:1646  */
     6275    { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
     6276#line 6277 "Parser/parser.cc" /* yacc.c:1646  */
     6277    break;
     6278
     6279  case 374:
     6280#line 1494 "parser.yy" /* yacc.c:1646  */
     6281    {   // mark all fields in list
     6282                        for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     6283                                iter->set_extension( true );
     6284                        (yyval.decl) = (yyvsp[-1].decl);
    70156285                }
    7016     break;
    7017 
    7018   case 367:
    7019 
    7020 /* Line 1806 of yacc.c  */
    7021 #line 1485 "parser.yy"
    7022     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    7023     break;
    7024 
    7025   case 368:
    7026 
    7027 /* Line 1806 of yacc.c  */
    7028 #line 1487 "parser.yy"
    7029     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
    7030     break;
    7031 
    7032   case 369:
    7033 
    7034 /* Line 1806 of yacc.c  */
    7035 #line 1489 "parser.yy"
    7036     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    7037     break;
    7038 
    7039   case 370:
    7040 
    7041 /* Line 1806 of yacc.c  */
    7042 #line 1491 "parser.yy"
    7043     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7044     break;
    7045 
    7046   case 371:
    7047 
    7048 /* Line 1806 of yacc.c  */
    7049 #line 1496 "parser.yy"
    7050     { (yyval.aggKey) = DeclarationNode::Struct; }
    7051     break;
    7052 
    7053   case 372:
    7054 
    7055 /* Line 1806 of yacc.c  */
    7056 #line 1498 "parser.yy"
    7057     { (yyval.aggKey) = DeclarationNode::Union; }
    7058     break;
    7059 
    7060   case 373:
    7061 
    7062 /* Line 1806 of yacc.c  */
    7063 #line 1503 "parser.yy"
     6286#line 6287 "Parser/parser.cc" /* yacc.c:1646  */
     6287    break;
     6288
     6289  case 376:
     6290#line 1504 "parser.yy" /* yacc.c:1646  */
     6291    { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
     6292#line 6293 "Parser/parser.cc" /* yacc.c:1646  */
     6293    break;
     6294
     6295  case 377:
     6296#line 1506 "parser.yy" /* yacc.c:1646  */
     6297    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
     6298#line 6299 "Parser/parser.cc" /* yacc.c:1646  */
     6299    break;
     6300
     6301  case 378:
     6302#line 1508 "parser.yy" /* yacc.c:1646  */
     6303    { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
     6304#line 6305 "Parser/parser.cc" /* yacc.c:1646  */
     6305    break;
     6306
     6307  case 379:
     6308#line 1513 "parser.yy" /* yacc.c:1646  */
     6309    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6310#line 6311 "Parser/parser.cc" /* yacc.c:1646  */
     6311    break;
     6312
     6313  case 380:
     6314#line 1515 "parser.yy" /* yacc.c:1646  */
     6315    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
     6316#line 6317 "Parser/parser.cc" /* yacc.c:1646  */
     6317    break;
     6318
     6319  case 381:
     6320#line 1520 "parser.yy" /* yacc.c:1646  */
     6321    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     6322#line 6323 "Parser/parser.cc" /* yacc.c:1646  */
     6323    break;
     6324
     6325  case 382:
     6326#line 1522 "parser.yy" /* yacc.c:1646  */
     6327    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
     6328#line 6329 "Parser/parser.cc" /* yacc.c:1646  */
     6329    break;
     6330
     6331  case 383:
     6332#line 1525 "parser.yy" /* yacc.c:1646  */
     6333    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
     6334#line 6335 "Parser/parser.cc" /* yacc.c:1646  */
     6335    break;
     6336
     6337  case 384:
     6338#line 1528 "parser.yy" /* yacc.c:1646  */
     6339    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
     6340#line 6341 "Parser/parser.cc" /* yacc.c:1646  */
     6341    break;
     6342
     6343  case 386:
     6344#line 1534 "parser.yy" /* yacc.c:1646  */
     6345    { (yyval.en) = 0; }
     6346#line 6347 "Parser/parser.cc" /* yacc.c:1646  */
     6347    break;
     6348
     6349  case 387:
     6350#line 1536 "parser.yy" /* yacc.c:1646  */
     6351    { (yyval.en) = (yyvsp[0].en); }
     6352#line 6353 "Parser/parser.cc" /* yacc.c:1646  */
     6353    break;
     6354
     6355  case 388:
     6356#line 1541 "parser.yy" /* yacc.c:1646  */
     6357    { (yyval.en) = (yyvsp[0].en); }
     6358#line 6359 "Parser/parser.cc" /* yacc.c:1646  */
     6359    break;
     6360
     6361  case 390:
     6362#line 1550 "parser.yy" /* yacc.c:1646  */
     6363    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[-2].decl) ); }
     6364#line 6365 "Parser/parser.cc" /* yacc.c:1646  */
     6365    break;
     6366
     6367  case 391:
     6368#line 1552 "parser.yy" /* yacc.c:1646  */
     6369    {
     6370                        typedefTable.makeTypedef( *(yyvsp[0].tok) );
     6371                        (yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
     6372                }
     6373#line 6374 "Parser/parser.cc" /* yacc.c:1646  */
     6374    break;
     6375
     6376  case 392:
     6377#line 1557 "parser.yy" /* yacc.c:1646  */
     6378    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
     6379#line 6380 "Parser/parser.cc" /* yacc.c:1646  */
     6380    break;
     6381
     6382  case 393:
     6383#line 1559 "parser.yy" /* yacc.c:1646  */
     6384    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
     6385#line 6386 "Parser/parser.cc" /* yacc.c:1646  */
     6386    break;
     6387
     6388  case 394:
     6389#line 1564 "parser.yy" /* yacc.c:1646  */
     6390    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
     6391#line 6392 "Parser/parser.cc" /* yacc.c:1646  */
     6392    break;
     6393
     6394  case 395:
     6395#line 1566 "parser.yy" /* yacc.c:1646  */
     6396    { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
     6397#line 6398 "Parser/parser.cc" /* yacc.c:1646  */
     6398    break;
     6399
     6400  case 396:
     6401#line 1571 "parser.yy" /* yacc.c:1646  */
     6402    { (yyval.en) = 0; }
     6403#line 6404 "Parser/parser.cc" /* yacc.c:1646  */
     6404    break;
     6405
     6406  case 397:
     6407#line 1573 "parser.yy" /* yacc.c:1646  */
     6408    { (yyval.en) = (yyvsp[0].en); }
     6409#line 6410 "Parser/parser.cc" /* yacc.c:1646  */
     6410    break;
     6411
     6412  case 398:
     6413#line 1580 "parser.yy" /* yacc.c:1646  */
    70646414    { (yyval.decl) = 0; }
    7065     break;
    7066 
    7067   case 374:
    7068 
    7069 /* Line 1806 of yacc.c  */
    7070 #line 1505 "parser.yy"
    7071     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7072     break;
    7073 
    7074   case 376:
    7075 
    7076 /* Line 1806 of yacc.c  */
    7077 #line 1511 "parser.yy"
    7078     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    7079     break;
    7080 
    7081   case 378:
    7082 
    7083 /* Line 1806 of yacc.c  */
    7084 #line 1514 "parser.yy"
    7085     {   // mark all fields in list
    7086                         for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
    7087                                 iter->set_extension( true );
    7088                         (yyval.decl) = (yyvsp[(2) - (3)].decl);
     6415#line 6416 "Parser/parser.cc" /* yacc.c:1646  */
     6416    break;
     6417
     6418  case 402:
     6419#line 1588 "parser.yy" /* yacc.c:1646  */
     6420    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6421#line 6422 "Parser/parser.cc" /* yacc.c:1646  */
     6422    break;
     6423
     6424  case 403:
     6425#line 1590 "parser.yy" /* yacc.c:1646  */
     6426    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6427#line 6428 "Parser/parser.cc" /* yacc.c:1646  */
     6428    break;
     6429
     6430  case 404:
     6431#line 1592 "parser.yy" /* yacc.c:1646  */
     6432    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6433#line 6434 "Parser/parser.cc" /* yacc.c:1646  */
     6434    break;
     6435
     6436  case 406:
     6437#line 1600 "parser.yy" /* yacc.c:1646  */
     6438    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6439#line 6440 "Parser/parser.cc" /* yacc.c:1646  */
     6440    break;
     6441
     6442  case 407:
     6443#line 1602 "parser.yy" /* yacc.c:1646  */
     6444    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6445#line 6446 "Parser/parser.cc" /* yacc.c:1646  */
     6446    break;
     6447
     6448  case 408:
     6449#line 1604 "parser.yy" /* yacc.c:1646  */
     6450    { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
     6451#line 6452 "Parser/parser.cc" /* yacc.c:1646  */
     6452    break;
     6453
     6454  case 410:
     6455#line 1610 "parser.yy" /* yacc.c:1646  */
     6456    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6457#line 6458 "Parser/parser.cc" /* yacc.c:1646  */
     6458    break;
     6459
     6460  case 411:
     6461#line 1615 "parser.yy" /* yacc.c:1646  */
     6462    { (yyval.decl) = 0; }
     6463#line 6464 "Parser/parser.cc" /* yacc.c:1646  */
     6464    break;
     6465
     6466  case 414:
     6467#line 1622 "parser.yy" /* yacc.c:1646  */
     6468    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6469#line 6470 "Parser/parser.cc" /* yacc.c:1646  */
     6470    break;
     6471
     6472  case 417:
     6473#line 1629 "parser.yy" /* yacc.c:1646  */
     6474    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6475#line 6476 "Parser/parser.cc" /* yacc.c:1646  */
     6476    break;
     6477
     6478  case 418:
     6479#line 1631 "parser.yy" /* yacc.c:1646  */
     6480    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6481#line 6482 "Parser/parser.cc" /* yacc.c:1646  */
     6482    break;
     6483
     6484  case 420:
     6485#line 1640 "parser.yy" /* yacc.c:1646  */
     6486    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
     6487#line 6488 "Parser/parser.cc" /* yacc.c:1646  */
     6488    break;
     6489
     6490  case 421:
     6491#line 1643 "parser.yy" /* yacc.c:1646  */
     6492    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
     6493#line 6494 "Parser/parser.cc" /* yacc.c:1646  */
     6494    break;
     6495
     6496  case 422:
     6497#line 1645 "parser.yy" /* yacc.c:1646  */
     6498    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
     6499#line 6500 "Parser/parser.cc" /* yacc.c:1646  */
     6500    break;
     6501
     6502  case 427:
     6503#line 1655 "parser.yy" /* yacc.c:1646  */
     6504    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6505#line 6506 "Parser/parser.cc" /* yacc.c:1646  */
     6506    break;
     6507
     6508  case 429:
     6509#line 1661 "parser.yy" /* yacc.c:1646  */
     6510    {
     6511                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     6512                        (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
    70896513                }
    7090     break;
    7091 
    7092   case 380:
    7093 
    7094 /* Line 1806 of yacc.c  */
    7095 #line 1524 "parser.yy"
    7096     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    7097     break;
    7098 
    7099   case 381:
    7100 
    7101 /* Line 1806 of yacc.c  */
    7102 #line 1526 "parser.yy"
    7103     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    7104     break;
    7105 
    7106   case 382:
    7107 
    7108 /* Line 1806 of yacc.c  */
    7109 #line 1528 "parser.yy"
    7110     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    7111     break;
    7112 
    7113   case 383:
    7114 
    7115 /* Line 1806 of yacc.c  */
    7116 #line 1533 "parser.yy"
    7117     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7118     break;
    7119 
    7120   case 384:
    7121 
    7122 /* Line 1806 of yacc.c  */
    7123 #line 1535 "parser.yy"
    7124     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    7125     break;
    7126 
    7127   case 385:
    7128 
    7129 /* Line 1806 of yacc.c  */
    7130 #line 1540 "parser.yy"
    7131     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7132     break;
    7133 
    7134   case 386:
    7135 
    7136 /* Line 1806 of yacc.c  */
    7137 #line 1542 "parser.yy"
    7138     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    7139     break;
    7140 
    7141   case 387:
    7142 
    7143 /* Line 1806 of yacc.c  */
    7144 #line 1545 "parser.yy"
    7145     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7146     break;
    7147 
    7148   case 388:
    7149 
    7150 /* Line 1806 of yacc.c  */
    7151 #line 1548 "parser.yy"
    7152     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7153     break;
    7154 
    7155   case 390:
    7156 
    7157 /* Line 1806 of yacc.c  */
    7158 #line 1554 "parser.yy"
    7159     { (yyval.en) = 0; }
    7160     break;
    7161 
    7162   case 391:
    7163 
    7164 /* Line 1806 of yacc.c  */
    7165 #line 1556 "parser.yy"
    7166     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    7167     break;
    7168 
    7169   case 392:
    7170 
    7171 /* Line 1806 of yacc.c  */
    7172 #line 1561 "parser.yy"
    7173     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7174     break;
    7175 
    7176   case 394:
    7177 
    7178 /* Line 1806 of yacc.c  */
    7179 #line 1570 "parser.yy"
    7180     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7181     break;
    7182 
    7183   case 395:
    7184 
    7185 /* Line 1806 of yacc.c  */
    7186 #line 1572 "parser.yy"
    7187     {
    7188                         typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    7189                         (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
     6514#line 6515 "Parser/parser.cc" /* yacc.c:1646  */
     6515    break;
     6516
     6517  case 430:
     6518#line 1666 "parser.yy" /* yacc.c:1646  */
     6519    {
     6520                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     6521                        (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
    71906522                }
    7191     break;
    7192 
    7193   case 396:
    7194 
    7195 /* Line 1806 of yacc.c  */
    7196 #line 1577 "parser.yy"
    7197     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    7198     break;
    7199 
    7200   case 397:
    7201 
    7202 /* Line 1806 of yacc.c  */
    7203 #line 1579 "parser.yy"
    7204     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    7205     break;
    7206 
    7207   case 398:
    7208 
    7209 /* Line 1806 of yacc.c  */
    7210 #line 1584 "parser.yy"
    7211     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    7212     break;
    7213 
    7214   case 399:
    7215 
    7216 /* Line 1806 of yacc.c  */
    7217 #line 1586 "parser.yy"
    7218     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7219     break;
    7220 
    7221   case 400:
    7222 
    7223 /* Line 1806 of yacc.c  */
    7224 #line 1591 "parser.yy"
    7225     { (yyval.en) = 0; }
    7226     break;
    7227 
    7228   case 401:
    7229 
    7230 /* Line 1806 of yacc.c  */
    7231 #line 1593 "parser.yy"
    7232     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7233     break;
    7234 
    7235   case 402:
    7236 
    7237 /* Line 1806 of yacc.c  */
    7238 #line 1600 "parser.yy"
     6523#line 6524 "Parser/parser.cc" /* yacc.c:1646  */
     6524    break;
     6525
     6526  case 432:
     6527#line 1675 "parser.yy" /* yacc.c:1646  */
     6528    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6529#line 6530 "Parser/parser.cc" /* yacc.c:1646  */
     6530    break;
     6531
     6532  case 433:
     6533#line 1684 "parser.yy" /* yacc.c:1646  */
     6534    { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
     6535#line 6536 "Parser/parser.cc" /* yacc.c:1646  */
     6536    break;
     6537
     6538  case 434:
     6539#line 1686 "parser.yy" /* yacc.c:1646  */
     6540    { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
     6541#line 6542 "Parser/parser.cc" /* yacc.c:1646  */
     6542    break;
     6543
     6544  case 446:
     6545#line 1711 "parser.yy" /* yacc.c:1646  */
     6546    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6547#line 6548 "Parser/parser.cc" /* yacc.c:1646  */
     6548    break;
     6549
     6550  case 450:
     6551#line 1719 "parser.yy" /* yacc.c:1646  */
     6552    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6553#line 6554 "Parser/parser.cc" /* yacc.c:1646  */
     6554    break;
     6555
     6556  case 451:
     6557#line 1724 "parser.yy" /* yacc.c:1646  */
     6558    { (yyval.in) = 0; }
     6559#line 6560 "Parser/parser.cc" /* yacc.c:1646  */
     6560    break;
     6561
     6562  case 452:
     6563#line 1726 "parser.yy" /* yacc.c:1646  */
     6564    { (yyval.in) = (yyvsp[0].in); }
     6565#line 6566 "Parser/parser.cc" /* yacc.c:1646  */
     6566    break;
     6567
     6568  case 453:
     6569#line 1728 "parser.yy" /* yacc.c:1646  */
     6570    { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
     6571#line 6572 "Parser/parser.cc" /* yacc.c:1646  */
     6572    break;
     6573
     6574  case 454:
     6575#line 1732 "parser.yy" /* yacc.c:1646  */
     6576    { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
     6577#line 6578 "Parser/parser.cc" /* yacc.c:1646  */
     6578    break;
     6579
     6580  case 455:
     6581#line 1733 "parser.yy" /* yacc.c:1646  */
     6582    { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
     6583#line 6584 "Parser/parser.cc" /* yacc.c:1646  */
     6584    break;
     6585
     6586  case 456:
     6587#line 1738 "parser.yy" /* yacc.c:1646  */
     6588    { (yyval.in) = 0; }
     6589#line 6590 "Parser/parser.cc" /* yacc.c:1646  */
     6590    break;
     6591
     6592  case 458:
     6593#line 1740 "parser.yy" /* yacc.c:1646  */
     6594    { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
     6595#line 6596 "Parser/parser.cc" /* yacc.c:1646  */
     6596    break;
     6597
     6598  case 459:
     6599#line 1741 "parser.yy" /* yacc.c:1646  */
     6600    { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
     6601#line 6602 "Parser/parser.cc" /* yacc.c:1646  */
     6602    break;
     6603
     6604  case 460:
     6605#line 1743 "parser.yy" /* yacc.c:1646  */
     6606    { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
     6607#line 6608 "Parser/parser.cc" /* yacc.c:1646  */
     6608    break;
     6609
     6610  case 462:
     6611#line 1759 "parser.yy" /* yacc.c:1646  */
     6612    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
     6613#line 6614 "Parser/parser.cc" /* yacc.c:1646  */
     6614    break;
     6615
     6616  case 464:
     6617#line 1765 "parser.yy" /* yacc.c:1646  */
     6618    { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
     6619#line 6620 "Parser/parser.cc" /* yacc.c:1646  */
     6620    break;
     6621
     6622  case 465:
     6623#line 1771 "parser.yy" /* yacc.c:1646  */
     6624    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     6625#line 6626 "Parser/parser.cc" /* yacc.c:1646  */
     6626    break;
     6627
     6628  case 466:
     6629#line 1774 "parser.yy" /* yacc.c:1646  */
     6630    { (yyval.en) = (yyvsp[-2].en); }
     6631#line 6632 "Parser/parser.cc" /* yacc.c:1646  */
     6632    break;
     6633
     6634  case 467:
     6635#line 1776 "parser.yy" /* yacc.c:1646  */
     6636    { (yyval.en) = (yyvsp[-2].en); }
     6637#line 6638 "Parser/parser.cc" /* yacc.c:1646  */
     6638    break;
     6639
     6640  case 468:
     6641#line 1778 "parser.yy" /* yacc.c:1646  */
     6642    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
     6643#line 6644 "Parser/parser.cc" /* yacc.c:1646  */
     6644    break;
     6645
     6646  case 469:
     6647#line 1780 "parser.yy" /* yacc.c:1646  */
     6648    { (yyval.en) = (yyvsp[-2].en); }
     6649#line 6650 "Parser/parser.cc" /* yacc.c:1646  */
     6650    break;
     6651
     6652  case 471:
     6653#line 1804 "parser.yy" /* yacc.c:1646  */
     6654    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6655#line 6656 "Parser/parser.cc" /* yacc.c:1646  */
     6656    break;
     6657
     6658  case 472:
     6659#line 1806 "parser.yy" /* yacc.c:1646  */
     6660    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6661#line 6662 "Parser/parser.cc" /* yacc.c:1646  */
     6662    break;
     6663
     6664  case 473:
     6665#line 1808 "parser.yy" /* yacc.c:1646  */
     6666    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
     6667#line 6668 "Parser/parser.cc" /* yacc.c:1646  */
     6668    break;
     6669
     6670  case 475:
     6671#line 1814 "parser.yy" /* yacc.c:1646  */
     6672    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     6673#line 6674 "Parser/parser.cc" /* yacc.c:1646  */
     6674    break;
     6675
     6676  case 476:
     6677#line 1816 "parser.yy" /* yacc.c:1646  */
     6678    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     6679#line 6680 "Parser/parser.cc" /* yacc.c:1646  */
     6680    break;
     6681
     6682  case 477:
     6683#line 1821 "parser.yy" /* yacc.c:1646  */
     6684    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
     6685#line 6686 "Parser/parser.cc" /* yacc.c:1646  */
     6686    break;
     6687
     6688  case 479:
     6689#line 1827 "parser.yy" /* yacc.c:1646  */
     6690    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
     6691#line 6692 "Parser/parser.cc" /* yacc.c:1646  */
     6692    break;
     6693
     6694  case 480:
     6695#line 1832 "parser.yy" /* yacc.c:1646  */
     6696    { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
     6697#line 6698 "Parser/parser.cc" /* yacc.c:1646  */
     6698    break;
     6699
     6700  case 481:
     6701#line 1834 "parser.yy" /* yacc.c:1646  */
     6702    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
     6703#line 6704 "Parser/parser.cc" /* yacc.c:1646  */
     6704    break;
     6705
     6706  case 483:
     6707#line 1840 "parser.yy" /* yacc.c:1646  */
     6708    { (yyval.tclass) = DeclarationNode::Type; }
     6709#line 6710 "Parser/parser.cc" /* yacc.c:1646  */
     6710    break;
     6711
     6712  case 484:
     6713#line 1842 "parser.yy" /* yacc.c:1646  */
     6714    { (yyval.tclass) = DeclarationNode::Ftype; }
     6715#line 6716 "Parser/parser.cc" /* yacc.c:1646  */
     6716    break;
     6717
     6718  case 485:
     6719#line 1844 "parser.yy" /* yacc.c:1646  */
     6720    { (yyval.tclass) = DeclarationNode::Dtype; }
     6721#line 6722 "Parser/parser.cc" /* yacc.c:1646  */
     6722    break;
     6723
     6724  case 486:
     6725#line 1849 "parser.yy" /* yacc.c:1646  */
    72396726    { (yyval.decl) = 0; }
    7240     break;
    7241 
    7242   case 406:
    7243 
    7244 /* Line 1806 of yacc.c  */
    7245 #line 1608 "parser.yy"
    7246     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7247     break;
    7248 
    7249   case 407:
    7250 
    7251 /* Line 1806 of yacc.c  */
    7252 #line 1610 "parser.yy"
    7253     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7254     break;
    7255 
    7256   case 408:
    7257 
    7258 /* Line 1806 of yacc.c  */
    7259 #line 1612 "parser.yy"
    7260     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7261     break;
    7262 
    7263   case 410:
    7264 
    7265 /* Line 1806 of yacc.c  */
    7266 #line 1620 "parser.yy"
    7267     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7268     break;
    7269 
    7270   case 411:
    7271 
    7272 /* Line 1806 of yacc.c  */
    7273 #line 1622 "parser.yy"
    7274     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7275     break;
    7276 
    7277   case 412:
    7278 
    7279 /* Line 1806 of yacc.c  */
    7280 #line 1624 "parser.yy"
    7281     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7282     break;
    7283 
    7284   case 414:
    7285 
    7286 /* Line 1806 of yacc.c  */
    7287 #line 1630 "parser.yy"
    7288     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7289     break;
    7290 
    7291   case 415:
    7292 
    7293 /* Line 1806 of yacc.c  */
    7294 #line 1635 "parser.yy"
     6727#line 6728 "Parser/parser.cc" /* yacc.c:1646  */
     6728    break;
     6729
     6730  case 487:
     6731#line 1851 "parser.yy" /* yacc.c:1646  */
     6732    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6733#line 6734 "Parser/parser.cc" /* yacc.c:1646  */
     6734    break;
     6735
     6736  case 488:
     6737#line 1856 "parser.yy" /* yacc.c:1646  */
     6738    {
     6739                        typedefTable.openTrait( *(yyvsp[-3].tok) );
     6740                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
     6741                }
     6742#line 6743 "Parser/parser.cc" /* yacc.c:1646  */
     6743    break;
     6744
     6745  case 489:
     6746#line 1861 "parser.yy" /* yacc.c:1646  */
     6747    { (yyval.decl) = (yyvsp[-1].decl); }
     6748#line 6749 "Parser/parser.cc" /* yacc.c:1646  */
     6749    break;
     6750
     6751  case 490:
     6752#line 1863 "parser.yy" /* yacc.c:1646  */
    72956753    { (yyval.decl) = 0; }
    7296     break;
    7297 
    7298   case 418:
    7299 
    7300 /* Line 1806 of yacc.c  */
    7301 #line 1642 "parser.yy"
    7302     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7303     break;
    7304 
    7305   case 421:
    7306 
    7307 /* Line 1806 of yacc.c  */
    7308 #line 1649 "parser.yy"
    7309     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7310     break;
    7311 
    7312   case 422:
    7313 
    7314 /* Line 1806 of yacc.c  */
    7315 #line 1651 "parser.yy"
    7316     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7317     break;
    7318 
    7319   case 424:
    7320 
    7321 /* Line 1806 of yacc.c  */
    7322 #line 1660 "parser.yy"
    7323     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7324     break;
    7325 
    7326   case 425:
    7327 
    7328 /* Line 1806 of yacc.c  */
    7329 #line 1663 "parser.yy"
    7330     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7331     break;
    7332 
    7333   case 426:
    7334 
    7335 /* Line 1806 of yacc.c  */
    7336 #line 1665 "parser.yy"
    7337     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    7338     break;
    7339 
    7340   case 431:
    7341 
    7342 /* Line 1806 of yacc.c  */
    7343 #line 1675 "parser.yy"
    7344     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7345     break;
    7346 
    7347   case 433:
    7348 
    7349 /* Line 1806 of yacc.c  */
    7350 #line 1681 "parser.yy"
    7351     {
    7352                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7353                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     6754#line 6755 "Parser/parser.cc" /* yacc.c:1646  */
     6755    break;
     6756
     6757  case 491:
     6758#line 1868 "parser.yy" /* yacc.c:1646  */
     6759    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
     6760#line 6761 "Parser/parser.cc" /* yacc.c:1646  */
     6761    break;
     6762
     6763  case 493:
     6764#line 1871 "parser.yy" /* yacc.c:1646  */
     6765    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
     6766#line 6767 "Parser/parser.cc" /* yacc.c:1646  */
     6767    break;
     6768
     6769  case 494:
     6770#line 1873 "parser.yy" /* yacc.c:1646  */
     6771    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
     6772#line 6773 "Parser/parser.cc" /* yacc.c:1646  */
     6773    break;
     6774
     6775  case 495:
     6776#line 1878 "parser.yy" /* yacc.c:1646  */
     6777    { (yyval.decl) = (yyvsp[0].decl); }
     6778#line 6779 "Parser/parser.cc" /* yacc.c:1646  */
     6779    break;
     6780
     6781  case 496:
     6782#line 1880 "parser.yy" /* yacc.c:1646  */
     6783    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
     6784#line 6785 "Parser/parser.cc" /* yacc.c:1646  */
     6785    break;
     6786
     6787  case 497:
     6788#line 1882 "parser.yy" /* yacc.c:1646  */
     6789    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
     6790#line 6791 "Parser/parser.cc" /* yacc.c:1646  */
     6791    break;
     6792
     6793  case 498:
     6794#line 1887 "parser.yy" /* yacc.c:1646  */
     6795    { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
     6796#line 6797 "Parser/parser.cc" /* yacc.c:1646  */
     6797    break;
     6798
     6799  case 499:
     6800#line 1889 "parser.yy" /* yacc.c:1646  */
     6801    { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
     6802#line 6803 "Parser/parser.cc" /* yacc.c:1646  */
     6803    break;
     6804
     6805  case 500:
     6806#line 1894 "parser.yy" /* yacc.c:1646  */
     6807    {
     6808                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
     6809                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
    73546810                }
    7355     break;
    7356 
    7357   case 434:
    7358 
    7359 /* Line 1806 of yacc.c  */
    7360 #line 1686 "parser.yy"
    7361     {
    7362                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7363                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     6811#line 6812 "Parser/parser.cc" /* yacc.c:1646  */
     6812    break;
     6813
     6814  case 501:
     6815#line 1899 "parser.yy" /* yacc.c:1646  */
     6816    {
     6817                        typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
     6818                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
    73646819                }
    7365     break;
    7366 
    7367   case 436:
    7368 
    7369 /* Line 1806 of yacc.c  */
    7370 #line 1695 "parser.yy"
    7371     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7372     break;
    7373 
    7374   case 437:
    7375 
    7376 /* Line 1806 of yacc.c  */
    7377 #line 1704 "parser.yy"
    7378     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7379     break;
    7380 
    7381   case 438:
    7382 
    7383 /* Line 1806 of yacc.c  */
    7384 #line 1706 "parser.yy"
    7385     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7386     break;
    7387 
    7388   case 450:
    7389 
    7390 /* Line 1806 of yacc.c  */
    7391 #line 1731 "parser.yy"
    7392     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7393     break;
    7394 
    7395   case 454:
    7396 
    7397 /* Line 1806 of yacc.c  */
    7398 #line 1739 "parser.yy"
    7399     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7400     break;
    7401 
    7402   case 455:
    7403 
    7404 /* Line 1806 of yacc.c  */
    7405 #line 1744 "parser.yy"
    7406     { (yyval.in) = 0; }
    7407     break;
    7408 
    7409   case 456:
    7410 
    7411 /* Line 1806 of yacc.c  */
    7412 #line 1746 "parser.yy"
    7413     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7414     break;
    7415 
    7416   case 457:
    7417 
    7418 /* Line 1806 of yacc.c  */
    7419 #line 1748 "parser.yy"
    7420     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    7421     break;
    7422 
    7423   case 458:
    7424 
    7425 /* Line 1806 of yacc.c  */
    7426 #line 1752 "parser.yy"
    7427     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7428     break;
    7429 
    7430   case 459:
    7431 
    7432 /* Line 1806 of yacc.c  */
    7433 #line 1753 "parser.yy"
    7434     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7435     break;
    7436 
    7437   case 460:
    7438 
    7439 /* Line 1806 of yacc.c  */
    7440 #line 1758 "parser.yy"
    7441     { (yyval.in) = 0; }
    7442     break;
    7443 
    7444   case 462:
    7445 
    7446 /* Line 1806 of yacc.c  */
    7447 #line 1760 "parser.yy"
    7448     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7449     break;
    7450 
    7451   case 463:
    7452 
    7453 /* Line 1806 of yacc.c  */
    7454 #line 1761 "parser.yy"
    7455     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    7456     break;
    7457 
    7458   case 464:
    7459 
    7460 /* Line 1806 of yacc.c  */
    7461 #line 1763 "parser.yy"
    7462     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    7463     break;
    7464 
    7465   case 466:
    7466 
    7467 /* Line 1806 of yacc.c  */
    7468 #line 1779 "parser.yy"
    7469     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    7470     break;
    7471 
    7472   case 468:
    7473 
    7474 /* Line 1806 of yacc.c  */
    7475 #line 1785 "parser.yy"
    7476     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    7477     break;
    7478 
    7479   case 469:
    7480 
    7481 /* Line 1806 of yacc.c  */
    7482 #line 1793 "parser.yy"
    7483     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    7484     break;
    7485 
    7486   case 470:
    7487 
    7488 /* Line 1806 of yacc.c  */
    7489 #line 1795 "parser.yy"
    7490     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    7491     break;
    7492 
    7493   case 471:
    7494 
    7495 /* Line 1806 of yacc.c  */
    7496 #line 1798 "parser.yy"
    7497     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    7498     break;
    7499 
    7500   case 472:
    7501 
    7502 /* Line 1806 of yacc.c  */
    7503 #line 1800 "parser.yy"
    7504     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    7505     break;
    7506 
    7507   case 473:
    7508 
    7509 /* Line 1806 of yacc.c  */
    7510 #line 1802 "parser.yy"
    7511     { (yyval.en) = new DesignatorNode( new CompositeExprNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ), true ); }
    7512     break;
    7513 
    7514   case 474:
    7515 
    7516 /* Line 1806 of yacc.c  */
    7517 #line 1804 "parser.yy"
    7518     { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
    7519     break;
    7520 
    7521   case 476:
    7522 
    7523 /* Line 1806 of yacc.c  */
    7524 #line 1828 "parser.yy"
    7525     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7526     break;
    7527 
    7528   case 477:
    7529 
    7530 /* Line 1806 of yacc.c  */
    7531 #line 1830 "parser.yy"
    7532     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7533     break;
    7534 
    7535   case 478:
    7536 
    7537 /* Line 1806 of yacc.c  */
    7538 #line 1832 "parser.yy"
    7539     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7540     break;
    7541 
    7542   case 480:
    7543 
    7544 /* Line 1806 of yacc.c  */
    7545 #line 1838 "parser.yy"
    7546     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7547     break;
    7548 
    7549   case 481:
    7550 
    7551 /* Line 1806 of yacc.c  */
    7552 #line 1840 "parser.yy"
    7553     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7554     break;
    7555 
    7556   case 482:
    7557 
    7558 /* Line 1806 of yacc.c  */
    7559 #line 1845 "parser.yy"
    7560     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    7561     break;
    7562 
    7563   case 484:
    7564 
    7565 /* Line 1806 of yacc.c  */
    7566 #line 1851 "parser.yy"
    7567     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    7568     break;
    7569 
    7570   case 485:
    7571 
    7572 /* Line 1806 of yacc.c  */
    7573 #line 1856 "parser.yy"
    7574     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    7575     break;
    7576 
    7577   case 486:
    7578 
    7579 /* Line 1806 of yacc.c  */
    7580 #line 1858 "parser.yy"
    7581     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    7582     break;
    7583 
    7584   case 488:
    7585 
    7586 /* Line 1806 of yacc.c  */
    7587 #line 1864 "parser.yy"
    7588     { (yyval.tclass) = DeclarationNode::Type; }
    7589     break;
    7590 
    7591   case 489:
    7592 
    7593 /* Line 1806 of yacc.c  */
    7594 #line 1866 "parser.yy"
    7595     { (yyval.tclass) = DeclarationNode::Ftype; }
    7596     break;
    7597 
    7598   case 490:
    7599 
    7600 /* Line 1806 of yacc.c  */
    7601 #line 1868 "parser.yy"
    7602     { (yyval.tclass) = DeclarationNode::Dtype; }
    7603     break;
    7604 
    7605   case 491:
    7606 
    7607 /* Line 1806 of yacc.c  */
    7608 #line 1873 "parser.yy"
    7609     { (yyval.decl) = 0; }
    7610     break;
    7611 
    7612   case 492:
    7613 
    7614 /* Line 1806 of yacc.c  */
    7615 #line 1875 "parser.yy"
    7616     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    7617     break;
    7618 
    7619   case 493:
    7620 
    7621 /* Line 1806 of yacc.c  */
    7622 #line 1880 "parser.yy"
    7623     {
    7624                         typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
    7625                         (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
     6820#line 6821 "Parser/parser.cc" /* yacc.c:1646  */
     6821    break;
     6822
     6823  case 502:
     6824#line 1907 "parser.yy" /* yacc.c:1646  */
     6825    {
     6826                        typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
     6827                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
    76266828                }
    7627     break;
    7628 
    7629   case 494:
    7630 
    7631 /* Line 1806 of yacc.c  */
    7632 #line 1885 "parser.yy"
    7633     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    7634     break;
    7635 
    7636   case 495:
    7637 
    7638 /* Line 1806 of yacc.c  */
    7639 #line 1887 "parser.yy"
    7640     { (yyval.decl) = 0; }
    7641     break;
    7642 
    7643   case 496:
    7644 
    7645 /* Line 1806 of yacc.c  */
    7646 #line 1892 "parser.yy"
    7647     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    7648     break;
    7649 
    7650   case 498:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1895 "parser.yy"
    7654     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    7655     break;
    7656 
    7657   case 499:
    7658 
    7659 /* Line 1806 of yacc.c  */
    7660 #line 1897 "parser.yy"
    7661     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    7662     break;
    7663 
    7664   case 500:
    7665 
    7666 /* Line 1806 of yacc.c  */
    7667 #line 1902 "parser.yy"
    7668     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7669     break;
    7670 
    7671   case 501:
    7672 
    7673 /* Line 1806 of yacc.c  */
    7674 #line 1904 "parser.yy"
    7675     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    7676     break;
    7677 
    7678   case 502:
    7679 
    7680 /* Line 1806 of yacc.c  */
    7681 #line 1906 "parser.yy"
    7682     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     6829#line 6830 "Parser/parser.cc" /* yacc.c:1646  */
    76836830    break;
    76846831
    76856832  case 503:
    7686 
    7687 /* Line 1806 of yacc.c  */
    7688 #line 1911 "parser.yy"
    7689     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7690     break;
    7691 
    7692   case 504:
    7693 
    7694 /* Line 1806 of yacc.c  */
    7695 #line 1913 "parser.yy"
    7696     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7697     break;
    7698 
    7699   case 505:
    7700 
    7701 /* Line 1806 of yacc.c  */
    7702 #line 1918 "parser.yy"
    7703     {
    7704                         typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
    7705                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
    7706                 }
    7707     break;
    7708 
    7709   case 506:
    7710 
    7711 /* Line 1806 of yacc.c  */
    7712 #line 1923 "parser.yy"
    7713     {
    7714                         typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
    7715                         (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
    7716                 }
    7717     break;
    7718 
    7719   case 507:
    7720 
    7721 /* Line 1806 of yacc.c  */
    7722 #line 1931 "parser.yy"
    7723     {
    7724                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
    7725                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    7726                 }
    7727     break;
    7728 
    7729   case 508:
    7730 
    7731 /* Line 1806 of yacc.c  */
    7732 #line 1936 "parser.yy"
    7733     {
    7734                         typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     6833#line 1912 "parser.yy" /* yacc.c:1646  */
     6834    {
     6835                        typedefTable.enterTrait( *(yyvsp[-6].tok) );
    77356836                        typedefTable.enterScope();
    77366837                }
     6838#line 6839 "Parser/parser.cc" /* yacc.c:1646  */
     6839    break;
     6840
     6841  case 504:
     6842#line 1917 "parser.yy" /* yacc.c:1646  */
     6843    {
     6844                        typedefTable.leaveTrait();
     6845                        typedefTable.addToEnclosingScope( *(yyvsp[-9].tok), TypedefTable::ID );
     6846                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
     6847                }
     6848#line 6849 "Parser/parser.cc" /* yacc.c:1646  */
     6849    break;
     6850
     6851  case 506:
     6852#line 1927 "parser.yy" /* yacc.c:1646  */
     6853    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
     6854#line 6855 "Parser/parser.cc" /* yacc.c:1646  */
    77376855    break;
    77386856
    77396857  case 509:
    7740 
    7741 /* Line 1806 of yacc.c  */
    7742 #line 1941 "parser.yy"
    7743     {
    7744                         typedefTable.leaveTrait();
    7745                         typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
    7746                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
     6858#line 1937 "parser.yy" /* yacc.c:1646  */
     6859    {
     6860                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     6861                        (yyval.decl) = (yyvsp[0].decl);
    77476862                }
     6863#line 6864 "Parser/parser.cc" /* yacc.c:1646  */
     6864    break;
     6865
     6866  case 510:
     6867#line 1942 "parser.yy" /* yacc.c:1646  */
     6868    {
     6869                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     6870                        (yyval.decl) = (yyvsp[0].decl);
     6871                }
     6872#line 6873 "Parser/parser.cc" /* yacc.c:1646  */
    77486873    break;
    77496874
    77506875  case 511:
    7751 
    7752 /* Line 1806 of yacc.c  */
    7753 #line 1951 "parser.yy"
    7754     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6876#line 1947 "parser.yy" /* yacc.c:1646  */
     6877    {
     6878                        typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
     6879                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
     6880                }
     6881#line 6882 "Parser/parser.cc" /* yacc.c:1646  */
     6882    break;
     6883
     6884  case 512:
     6885#line 1955 "parser.yy" /* yacc.c:1646  */
     6886    {
     6887                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     6888                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
     6889                }
     6890#line 6891 "Parser/parser.cc" /* yacc.c:1646  */
     6891    break;
     6892
     6893  case 513:
     6894#line 1960 "parser.yy" /* yacc.c:1646  */
     6895    {
     6896                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     6897                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
     6898                }
     6899#line 6900 "Parser/parser.cc" /* yacc.c:1646  */
    77556900    break;
    77566901
    77576902  case 514:
    7758 
    7759 /* Line 1806 of yacc.c  */
    7760 #line 1961 "parser.yy"
    7761     {
    7762                         typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7763                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
     6903#line 1970 "parser.yy" /* yacc.c:1646  */
     6904    {}
     6905#line 6906 "Parser/parser.cc" /* yacc.c:1646  */
     6906    break;
     6907
     6908  case 515:
     6909#line 1972 "parser.yy" /* yacc.c:1646  */
     6910    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);    }
     6911#line 6912 "Parser/parser.cc" /* yacc.c:1646  */
     6912    break;
     6913
     6914  case 517:
     6915#line 1978 "parser.yy" /* yacc.c:1646  */
     6916    { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
     6917#line 6918 "Parser/parser.cc" /* yacc.c:1646  */
     6918    break;
     6919
     6920  case 518:
     6921#line 1983 "parser.yy" /* yacc.c:1646  */
     6922    { (yyval.decl) = 0; }
     6923#line 6924 "Parser/parser.cc" /* yacc.c:1646  */
     6924    break;
     6925
     6926  case 522:
     6927#line 1991 "parser.yy" /* yacc.c:1646  */
     6928    {}
     6929#line 6930 "Parser/parser.cc" /* yacc.c:1646  */
     6930    break;
     6931
     6932  case 523:
     6933#line 1993 "parser.yy" /* yacc.c:1646  */
     6934    {
     6935                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     6936                        linkage = LinkageSpec::fromString( assign_strptr((yyvsp[0].tok)) );
    77646937                }
    7765     break;
    7766 
    7767   case 515:
    7768 
    7769 /* Line 1806 of yacc.c  */
    7770 #line 1966 "parser.yy"
    7771     {
    7772                         typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7773                         (yyval.decl) = (yyvsp[(1) - (1)].decl);
    7774                 }
    7775     break;
    7776 
    7777   case 516:
    7778 
    7779 /* Line 1806 of yacc.c  */
    7780 #line 1971 "parser.yy"
    7781     {
    7782                         typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
    7783                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
    7784                 }
    7785     break;
    7786 
    7787   case 517:
    7788 
    7789 /* Line 1806 of yacc.c  */
    7790 #line 1979 "parser.yy"
    7791     {
    7792                         typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7793                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
    7794                 }
    7795     break;
    7796 
    7797   case 518:
    7798 
    7799 /* Line 1806 of yacc.c  */
    7800 #line 1984 "parser.yy"
    7801     {
    7802                         typedefTable.addToEnclosingScope2( TypedefTable::ID );
    7803                         (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
    7804                 }
    7805     break;
    7806 
    7807   case 519:
    7808 
    7809 /* Line 1806 of yacc.c  */
    7810 #line 1994 "parser.yy"
    7811     {}
    7812     break;
    7813 
    7814   case 520:
    7815 
    7816 /* Line 1806 of yacc.c  */
    7817 #line 1996 "parser.yy"
    7818     {
    7819                         if ( theTree ) {
    7820                                 theTree->appendList( (yyvsp[(1) - (1)].decl) );
    7821                         } else {
    7822                                 theTree = (yyvsp[(1) - (1)].decl);
    7823                         }
    7824                 }
    7825     break;
    7826 
    7827   case 522:
    7828 
    7829 /* Line 1806 of yacc.c  */
    7830 #line 2008 "parser.yy"
    7831     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    7832     break;
    7833 
    7834   case 523:
    7835 
    7836 /* Line 1806 of yacc.c  */
    7837 #line 2013 "parser.yy"
    7838     { (yyval.decl) = 0; }
    7839     break;
    7840 
    7841   case 527:
    7842 
    7843 /* Line 1806 of yacc.c  */
    7844 #line 2021 "parser.yy"
    7845     {}
    7846     break;
    7847 
    7848   case 528:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2023 "parser.yy"
    7852     {
    7853                         linkageStack.push( linkage );
    7854                         linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
    7855                 }
    7856     break;
    7857 
    7858   case 529:
    7859 
    7860 /* Line 1806 of yacc.c  */
    7861 #line 2028 "parser.yy"
     6938#line 6939 "Parser/parser.cc" /* yacc.c:1646  */
     6939    break;
     6940
     6941  case 524:
     6942#line 1998 "parser.yy" /* yacc.c:1646  */
    78626943    {
    78636944                        linkage = linkageStack.top();
    78646945                        linkageStack.pop();
    7865                         (yyval.decl) = (yyvsp[(5) - (6)].decl);
     6946                        (yyval.decl) = (yyvsp[-1].decl);
    78666947                }
    7867     break;
    7868 
    7869   case 530:
    7870 
    7871 /* Line 1806 of yacc.c  */
    7872 #line 2034 "parser.yy"
     6948#line 6949 "Parser/parser.cc" /* yacc.c:1646  */
     6949    break;
     6950
     6951  case 525:
     6952#line 2004 "parser.yy" /* yacc.c:1646  */
    78736953    {   // mark all fields in list
    7874                         for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     6954                        for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    78756955                                iter->set_extension( true );
    7876                         (yyval.decl) = (yyvsp[(2) - (2)].decl);
     6956                        (yyval.decl) = (yyvsp[0].decl);
    78776957                }
    7878     break;
    7879 
    7880   case 532:
    7881 
    7882 /* Line 1806 of yacc.c  */
    7883 #line 2049 "parser.yy"
     6958#line 6959 "Parser/parser.cc" /* yacc.c:1646  */
     6959    break;
     6960
     6961  case 527:
     6962#line 2019 "parser.yy" /* yacc.c:1646  */
    78846963    {
    78856964                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78866965                        typedefTable.leaveScope();
    7887                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
     6966                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
    78886967                }
    7889     break;
    7890 
    7891   case 533:
    7892 
    7893 /* Line 1806 of yacc.c  */
    7894 #line 2055 "parser.yy"
     6968#line 6969 "Parser/parser.cc" /* yacc.c:1646  */
     6969    break;
     6970
     6971  case 528:
     6972#line 2025 "parser.yy" /* yacc.c:1646  */
    78956973    {
    78966974                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    78976975                        typedefTable.leaveScope();
    7898                         (yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
     6976                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
    78996977                }
    7900     break;
    7901 
    7902   case 534:
    7903 
    7904 /* Line 1806 of yacc.c  */
    7905 #line 2064 "parser.yy"
     6978#line 6979 "Parser/parser.cc" /* yacc.c:1646  */
     6979    break;
     6980
     6981  case 529:
     6982#line 2034 "parser.yy" /* yacc.c:1646  */
    79066983    {
    79076984                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79086985                        typedefTable.leaveScope();
    7909                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
     6986                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
    79106987                }
    7911     break;
    7912 
    7913   case 535:
    7914 
    7915 /* Line 1806 of yacc.c  */
    7916 #line 2070 "parser.yy"
     6988#line 6989 "Parser/parser.cc" /* yacc.c:1646  */
     6989    break;
     6990
     6991  case 530:
     6992#line 2040 "parser.yy" /* yacc.c:1646  */
    79176993    {
    79186994                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79196995                        typedefTable.leaveScope();
    7920                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
     6996                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
    79216997                }
    7922     break;
    7923 
    7924   case 536:
    7925 
    7926 /* Line 1806 of yacc.c  */
    7927 #line 2076 "parser.yy"
     6998#line 6999 "Parser/parser.cc" /* yacc.c:1646  */
     6999    break;
     7000
     7001  case 531:
     7002#line 2046 "parser.yy" /* yacc.c:1646  */
    79287003    {
    79297004                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79307005                        typedefTable.leaveScope();
    7931                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
     7006                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
    79327007                }
    7933     break;
    7934 
    7935   case 537:
    7936 
    7937 /* Line 1806 of yacc.c  */
    7938 #line 2082 "parser.yy"
     7008#line 7009 "Parser/parser.cc" /* yacc.c:1646  */
     7009    break;
     7010
     7011  case 532:
     7012#line 2052 "parser.yy" /* yacc.c:1646  */
    79397013    {
    79407014                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79417015                        typedefTable.leaveScope();
    7942                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
     7016                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
    79437017                }
    7944     break;
    7945 
    7946   case 538:
    7947 
    7948 /* Line 1806 of yacc.c  */
    7949 #line 2088 "parser.yy"
     7018#line 7019 "Parser/parser.cc" /* yacc.c:1646  */
     7019    break;
     7020
     7021  case 533:
     7022#line 2058 "parser.yy" /* yacc.c:1646  */
    79507023    {
    79517024                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79527025                        typedefTable.leaveScope();
    7953                         (yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
     7026                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
    79547027                }
    7955     break;
    7956 
    7957   case 539:
    7958 
    7959 /* Line 1806 of yacc.c  */
    7960 #line 2096 "parser.yy"
     7028#line 7029 "Parser/parser.cc" /* yacc.c:1646  */
     7029    break;
     7030
     7031  case 534:
     7032#line 2066 "parser.yy" /* yacc.c:1646  */
    79617033    {
    79627034                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79637035                        typedefTable.leaveScope();
    7964                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
     7036                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
    79657037                }
    7966     break;
    7967 
    7968   case 540:
    7969 
    7970 /* Line 1806 of yacc.c  */
    7971 #line 2102 "parser.yy"
     7038#line 7039 "Parser/parser.cc" /* yacc.c:1646  */
     7039    break;
     7040
     7041  case 535:
     7042#line 2072 "parser.yy" /* yacc.c:1646  */
    79727043    {
    79737044                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79747045                        typedefTable.leaveScope();
    7975                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
     7046                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
    79767047                }
    7977     break;
    7978 
    7979   case 541:
    7980 
    7981 /* Line 1806 of yacc.c  */
    7982 #line 2110 "parser.yy"
     7048#line 7049 "Parser/parser.cc" /* yacc.c:1646  */
     7049    break;
     7050
     7051  case 536:
     7052#line 2080 "parser.yy" /* yacc.c:1646  */
    79837053    {
    79847054                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79857055                        typedefTable.leaveScope();
    7986                         (yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
     7056                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
    79877057                }
    7988     break;
    7989 
    7990   case 542:
    7991 
    7992 /* Line 1806 of yacc.c  */
    7993 #line 2116 "parser.yy"
     7058#line 7059 "Parser/parser.cc" /* yacc.c:1646  */
     7059    break;
     7060
     7061  case 537:
     7062#line 2086 "parser.yy" /* yacc.c:1646  */
    79947063    {
    79957064                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    79967065                        typedefTable.leaveScope();
    7997                         (yyval.decl) = (yyvsp[(3) - (6)].decl)->addOldDeclList( (yyvsp[(5) - (6)].decl) )->addFunctionBody( (yyvsp[(6) - (6)].sn) )->addQualifiers( (yyvsp[(2) - (6)].decl) )->addQualifiers( (yyvsp[(1) - (6)].decl) );
     7066                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
    79987067                }
    7999     break;
    8000 
    8001   case 546:
    8002 
    8003 /* Line 1806 of yacc.c  */
    8004 #line 2131 "parser.yy"
    8005     { (yyval.en) = new CompositeExprNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    8006     break;
    8007 
    8008   case 549:
    8009 
    8010 /* Line 1806 of yacc.c  */
    8011 #line 2141 "parser.yy"
     7068#line 7069 "Parser/parser.cc" /* yacc.c:1646  */
     7069    break;
     7070
     7071  case 541:
     7072#line 2101 "parser.yy" /* yacc.c:1646  */
     7073    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
     7074#line 7075 "Parser/parser.cc" /* yacc.c:1646  */
     7075    break;
     7076
     7077  case 544:
     7078#line 2111 "parser.yy" /* yacc.c:1646  */
    80127079    { (yyval.decl) = 0; }
    8013     break;
    8014 
    8015   case 552:
    8016 
    8017 /* Line 1806 of yacc.c  */
    8018 #line 2148 "parser.yy"
    8019     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8020     break;
    8021 
    8022   case 553:
    8023 
    8024 /* Line 1806 of yacc.c  */
    8025 #line 2154 "parser.yy"
     7080#line 7081 "Parser/parser.cc" /* yacc.c:1646  */
     7081    break;
     7082
     7083  case 547:
     7084#line 2118 "parser.yy" /* yacc.c:1646  */
     7085    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     7086#line 7087 "Parser/parser.cc" /* yacc.c:1646  */
     7087    break;
     7088
     7089  case 548:
     7090#line 2124 "parser.yy" /* yacc.c:1646  */
    80267091    { (yyval.decl) = 0; }
    8027     break;
    8028 
    8029   case 559:
    8030 
    8031 /* Line 1806 of yacc.c  */
    8032 #line 2169 "parser.yy"
     7092#line 7093 "Parser/parser.cc" /* yacc.c:1646  */
     7093    break;
     7094
     7095  case 554:
     7096#line 2139 "parser.yy" /* yacc.c:1646  */
    80337097    {}
     7098#line 7099 "Parser/parser.cc" /* yacc.c:1646  */
     7099    break;
     7100
     7101  case 555:
     7102#line 2140 "parser.yy" /* yacc.c:1646  */
     7103    {}
     7104#line 7105 "Parser/parser.cc" /* yacc.c:1646  */
     7105    break;
     7106
     7107  case 556:
     7108#line 2141 "parser.yy" /* yacc.c:1646  */
     7109    {}
     7110#line 7111 "Parser/parser.cc" /* yacc.c:1646  */
     7111    break;
     7112
     7113  case 557:
     7114#line 2142 "parser.yy" /* yacc.c:1646  */
     7115    {}
     7116#line 7117 "Parser/parser.cc" /* yacc.c:1646  */
     7117    break;
     7118
     7119  case 558:
     7120#line 2177 "parser.yy" /* yacc.c:1646  */
     7121    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7122#line 7123 "Parser/parser.cc" /* yacc.c:1646  */
    80347123    break;
    80357124
    80367125  case 560:
    8037 
    8038 /* Line 1806 of yacc.c  */
    8039 #line 2170 "parser.yy"
    8040     {}
     7126#line 2180 "parser.yy" /* yacc.c:1646  */
     7127    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7128#line 7129 "Parser/parser.cc" /* yacc.c:1646  */
    80417129    break;
    80427130
    80437131  case 561:
    8044 
    8045 /* Line 1806 of yacc.c  */
    8046 #line 2171 "parser.yy"
    8047     {}
     7132#line 2182 "parser.yy" /* yacc.c:1646  */
     7133    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7134#line 7135 "Parser/parser.cc" /* yacc.c:1646  */
    80487135    break;
    80497136
    80507137  case 562:
    8051 
    8052 /* Line 1806 of yacc.c  */
    8053 #line 2172 "parser.yy"
    8054     {}
     7138#line 2187 "parser.yy" /* yacc.c:1646  */
     7139    {
     7140                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7141                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     7142                }
     7143#line 7144 "Parser/parser.cc" /* yacc.c:1646  */
    80557144    break;
    80567145
    80577146  case 563:
    8058 
    8059 /* Line 1806 of yacc.c  */
    8060 #line 2207 "parser.yy"
    8061     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7147#line 2192 "parser.yy" /* yacc.c:1646  */
     7148    { (yyval.decl) = (yyvsp[-1].decl); }
     7149#line 7150 "Parser/parser.cc" /* yacc.c:1646  */
     7150    break;
     7151
     7152  case 564:
     7153#line 2197 "parser.yy" /* yacc.c:1646  */
     7154    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7155#line 7156 "Parser/parser.cc" /* yacc.c:1646  */
    80627156    break;
    80637157
    80647158  case 565:
    8065 
    8066 /* Line 1806 of yacc.c  */
    8067 #line 2210 "parser.yy"
    8068     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7159#line 2199 "parser.yy" /* yacc.c:1646  */
     7160    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7161#line 7162 "Parser/parser.cc" /* yacc.c:1646  */
    80697162    break;
    80707163
    80717164  case 566:
    8072 
    8073 /* Line 1806 of yacc.c  */
    8074 #line 2212 "parser.yy"
    8075     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7165#line 2201 "parser.yy" /* yacc.c:1646  */
     7166    { (yyval.decl) = (yyvsp[-1].decl); }
     7167#line 7168 "Parser/parser.cc" /* yacc.c:1646  */
    80767168    break;
    80777169
    80787170  case 567:
    8079 
    8080 /* Line 1806 of yacc.c  */
    8081 #line 2217 "parser.yy"
    8082     {
    8083                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8084                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
     7171#line 2206 "parser.yy" /* yacc.c:1646  */
     7172    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7173#line 7174 "Parser/parser.cc" /* yacc.c:1646  */
     7174    break;
     7175
     7176  case 568:
     7177#line 2208 "parser.yy" /* yacc.c:1646  */
     7178    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7179#line 7180 "Parser/parser.cc" /* yacc.c:1646  */
     7180    break;
     7181
     7182  case 569:
     7183#line 2210 "parser.yy" /* yacc.c:1646  */
     7184    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7185#line 7186 "Parser/parser.cc" /* yacc.c:1646  */
     7186    break;
     7187
     7188  case 570:
     7189#line 2212 "parser.yy" /* yacc.c:1646  */
     7190    { (yyval.decl) = (yyvsp[-1].decl); }
     7191#line 7192 "Parser/parser.cc" /* yacc.c:1646  */
     7192    break;
     7193
     7194  case 571:
     7195#line 2217 "parser.yy" /* yacc.c:1646  */
     7196    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7197#line 7198 "Parser/parser.cc" /* yacc.c:1646  */
     7198    break;
     7199
     7200  case 572:
     7201#line 2219 "parser.yy" /* yacc.c:1646  */
     7202    { (yyval.decl) = (yyvsp[-1].decl); }
     7203#line 7204 "Parser/parser.cc" /* yacc.c:1646  */
     7204    break;
     7205
     7206  case 573:
     7207#line 2228 "parser.yy" /* yacc.c:1646  */
     7208    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7209#line 7210 "Parser/parser.cc" /* yacc.c:1646  */
     7210    break;
     7211
     7212  case 575:
     7213#line 2231 "parser.yy" /* yacc.c:1646  */
     7214    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7215#line 7216 "Parser/parser.cc" /* yacc.c:1646  */
     7216    break;
     7217
     7218  case 576:
     7219#line 2236 "parser.yy" /* yacc.c:1646  */
     7220    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7221#line 7222 "Parser/parser.cc" /* yacc.c:1646  */
     7222    break;
     7223
     7224  case 577:
     7225#line 2238 "parser.yy" /* yacc.c:1646  */
     7226    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7227#line 7228 "Parser/parser.cc" /* yacc.c:1646  */
     7228    break;
     7229
     7230  case 578:
     7231#line 2240 "parser.yy" /* yacc.c:1646  */
     7232    { (yyval.decl) = (yyvsp[-1].decl); }
     7233#line 7234 "Parser/parser.cc" /* yacc.c:1646  */
     7234    break;
     7235
     7236  case 579:
     7237#line 2245 "parser.yy" /* yacc.c:1646  */
     7238    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7239#line 7240 "Parser/parser.cc" /* yacc.c:1646  */
     7240    break;
     7241
     7242  case 580:
     7243#line 2247 "parser.yy" /* yacc.c:1646  */
     7244    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7245#line 7246 "Parser/parser.cc" /* yacc.c:1646  */
     7246    break;
     7247
     7248  case 581:
     7249#line 2249 "parser.yy" /* yacc.c:1646  */
     7250    { (yyval.decl) = (yyvsp[-1].decl); }
     7251#line 7252 "Parser/parser.cc" /* yacc.c:1646  */
     7252    break;
     7253
     7254  case 582:
     7255#line 2254 "parser.yy" /* yacc.c:1646  */
     7256    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7257#line 7258 "Parser/parser.cc" /* yacc.c:1646  */
     7258    break;
     7259
     7260  case 583:
     7261#line 2256 "parser.yy" /* yacc.c:1646  */
     7262    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7263#line 7264 "Parser/parser.cc" /* yacc.c:1646  */
     7264    break;
     7265
     7266  case 584:
     7267#line 2258 "parser.yy" /* yacc.c:1646  */
     7268    { (yyval.decl) = (yyvsp[-1].decl); }
     7269#line 7270 "Parser/parser.cc" /* yacc.c:1646  */
     7270    break;
     7271
     7272  case 588:
     7273#line 2273 "parser.yy" /* yacc.c:1646  */
     7274    { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
     7275#line 7276 "Parser/parser.cc" /* yacc.c:1646  */
     7276    break;
     7277
     7278  case 589:
     7279#line 2275 "parser.yy" /* yacc.c:1646  */
     7280    { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
     7281#line 7282 "Parser/parser.cc" /* yacc.c:1646  */
     7282    break;
     7283
     7284  case 590:
     7285#line 2277 "parser.yy" /* yacc.c:1646  */
     7286    { (yyval.decl) = (yyvsp[-1].decl); }
     7287#line 7288 "Parser/parser.cc" /* yacc.c:1646  */
     7288    break;
     7289
     7290  case 591:
     7291#line 2282 "parser.yy" /* yacc.c:1646  */
     7292    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7293#line 7294 "Parser/parser.cc" /* yacc.c:1646  */
     7294    break;
     7295
     7296  case 592:
     7297#line 2284 "parser.yy" /* yacc.c:1646  */
     7298    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7299#line 7300 "Parser/parser.cc" /* yacc.c:1646  */
     7300    break;
     7301
     7302  case 593:
     7303#line 2286 "parser.yy" /* yacc.c:1646  */
     7304    { (yyval.decl) = (yyvsp[-1].decl); }
     7305#line 7306 "Parser/parser.cc" /* yacc.c:1646  */
     7306    break;
     7307
     7308  case 594:
     7309#line 2291 "parser.yy" /* yacc.c:1646  */
     7310    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7311#line 7312 "Parser/parser.cc" /* yacc.c:1646  */
     7312    break;
     7313
     7314  case 595:
     7315#line 2293 "parser.yy" /* yacc.c:1646  */
     7316    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7317#line 7318 "Parser/parser.cc" /* yacc.c:1646  */
     7318    break;
     7319
     7320  case 596:
     7321#line 2295 "parser.yy" /* yacc.c:1646  */
     7322    { (yyval.decl) = (yyvsp[-1].decl); }
     7323#line 7324 "Parser/parser.cc" /* yacc.c:1646  */
     7324    break;
     7325
     7326  case 597:
     7327#line 2310 "parser.yy" /* yacc.c:1646  */
     7328    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7329#line 7330 "Parser/parser.cc" /* yacc.c:1646  */
     7330    break;
     7331
     7332  case 599:
     7333#line 2313 "parser.yy" /* yacc.c:1646  */
     7334    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7335#line 7336 "Parser/parser.cc" /* yacc.c:1646  */
     7336    break;
     7337
     7338  case 600:
     7339#line 2315 "parser.yy" /* yacc.c:1646  */
     7340    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7341#line 7342 "Parser/parser.cc" /* yacc.c:1646  */
     7342    break;
     7343
     7344  case 602:
     7345#line 2321 "parser.yy" /* yacc.c:1646  */
     7346    { (yyval.decl) = (yyvsp[-1].decl); }
     7347#line 7348 "Parser/parser.cc" /* yacc.c:1646  */
     7348    break;
     7349
     7350  case 603:
     7351#line 2326 "parser.yy" /* yacc.c:1646  */
     7352    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7353#line 7354 "Parser/parser.cc" /* yacc.c:1646  */
     7354    break;
     7355
     7356  case 604:
     7357#line 2328 "parser.yy" /* yacc.c:1646  */
     7358    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7359#line 7360 "Parser/parser.cc" /* yacc.c:1646  */
     7360    break;
     7361
     7362  case 605:
     7363#line 2330 "parser.yy" /* yacc.c:1646  */
     7364    { (yyval.decl) = (yyvsp[-1].decl); }
     7365#line 7366 "Parser/parser.cc" /* yacc.c:1646  */
     7366    break;
     7367
     7368  case 606:
     7369#line 2335 "parser.yy" /* yacc.c:1646  */
     7370    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7371#line 7372 "Parser/parser.cc" /* yacc.c:1646  */
     7372    break;
     7373
     7374  case 607:
     7375#line 2337 "parser.yy" /* yacc.c:1646  */
     7376    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7377#line 7378 "Parser/parser.cc" /* yacc.c:1646  */
     7378    break;
     7379
     7380  case 608:
     7381#line 2339 "parser.yy" /* yacc.c:1646  */
     7382    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7383#line 7384 "Parser/parser.cc" /* yacc.c:1646  */
     7384    break;
     7385
     7386  case 609:
     7387#line 2341 "parser.yy" /* yacc.c:1646  */
     7388    { (yyval.decl) = (yyvsp[-1].decl); }
     7389#line 7390 "Parser/parser.cc" /* yacc.c:1646  */
     7390    break;
     7391
     7392  case 610:
     7393#line 2346 "parser.yy" /* yacc.c:1646  */
     7394    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7395#line 7396 "Parser/parser.cc" /* yacc.c:1646  */
     7396    break;
     7397
     7398  case 611:
     7399#line 2348 "parser.yy" /* yacc.c:1646  */
     7400    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7401#line 7402 "Parser/parser.cc" /* yacc.c:1646  */
     7402    break;
     7403
     7404  case 612:
     7405#line 2350 "parser.yy" /* yacc.c:1646  */
     7406    { (yyval.decl) = (yyvsp[-1].decl); }
     7407#line 7408 "Parser/parser.cc" /* yacc.c:1646  */
     7408    break;
     7409
     7410  case 613:
     7411#line 2360 "parser.yy" /* yacc.c:1646  */
     7412    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7413#line 7414 "Parser/parser.cc" /* yacc.c:1646  */
     7414    break;
     7415
     7416  case 615:
     7417#line 2363 "parser.yy" /* yacc.c:1646  */
     7418    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7419#line 7420 "Parser/parser.cc" /* yacc.c:1646  */
     7420    break;
     7421
     7422  case 616:
     7423#line 2365 "parser.yy" /* yacc.c:1646  */
     7424    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7425#line 7426 "Parser/parser.cc" /* yacc.c:1646  */
     7426    break;
     7427
     7428  case 617:
     7429#line 2370 "parser.yy" /* yacc.c:1646  */
     7430    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7431#line 7432 "Parser/parser.cc" /* yacc.c:1646  */
     7432    break;
     7433
     7434  case 618:
     7435#line 2372 "parser.yy" /* yacc.c:1646  */
     7436    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7437#line 7438 "Parser/parser.cc" /* yacc.c:1646  */
     7438    break;
     7439
     7440  case 619:
     7441#line 2374 "parser.yy" /* yacc.c:1646  */
     7442    { (yyval.decl) = (yyvsp[-1].decl); }
     7443#line 7444 "Parser/parser.cc" /* yacc.c:1646  */
     7444    break;
     7445
     7446  case 620:
     7447#line 2379 "parser.yy" /* yacc.c:1646  */
     7448    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7449#line 7450 "Parser/parser.cc" /* yacc.c:1646  */
     7450    break;
     7451
     7452  case 621:
     7453#line 2381 "parser.yy" /* yacc.c:1646  */
     7454    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7455#line 7456 "Parser/parser.cc" /* yacc.c:1646  */
     7456    break;
     7457
     7458  case 622:
     7459#line 2383 "parser.yy" /* yacc.c:1646  */
     7460    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7461#line 7462 "Parser/parser.cc" /* yacc.c:1646  */
     7462    break;
     7463
     7464  case 623:
     7465#line 2385 "parser.yy" /* yacc.c:1646  */
     7466    { (yyval.decl) = (yyvsp[-1].decl); }
     7467#line 7468 "Parser/parser.cc" /* yacc.c:1646  */
     7468    break;
     7469
     7470  case 624:
     7471#line 2390 "parser.yy" /* yacc.c:1646  */
     7472    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7473#line 7474 "Parser/parser.cc" /* yacc.c:1646  */
     7474    break;
     7475
     7476  case 625:
     7477#line 2392 "parser.yy" /* yacc.c:1646  */
     7478    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7479#line 7480 "Parser/parser.cc" /* yacc.c:1646  */
     7480    break;
     7481
     7482  case 626:
     7483#line 2394 "parser.yy" /* yacc.c:1646  */
     7484    { (yyval.decl) = (yyvsp[-1].decl); }
     7485#line 7486 "Parser/parser.cc" /* yacc.c:1646  */
     7486    break;
     7487
     7488  case 627:
     7489#line 2425 "parser.yy" /* yacc.c:1646  */
     7490    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7491#line 7492 "Parser/parser.cc" /* yacc.c:1646  */
     7492    break;
     7493
     7494  case 629:
     7495#line 2428 "parser.yy" /* yacc.c:1646  */
     7496    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7497#line 7498 "Parser/parser.cc" /* yacc.c:1646  */
     7498    break;
     7499
     7500  case 630:
     7501#line 2430 "parser.yy" /* yacc.c:1646  */
     7502    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7503#line 7504 "Parser/parser.cc" /* yacc.c:1646  */
     7504    break;
     7505
     7506  case 631:
     7507#line 2435 "parser.yy" /* yacc.c:1646  */
     7508    {
     7509                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7510                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    80857511                }
    8086     break;
    8087 
    8088   case 568:
    8089 
    8090 /* Line 1806 of yacc.c  */
    8091 #line 2222 "parser.yy"
    8092     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8093     break;
    8094 
    8095   case 569:
    8096 
    8097 /* Line 1806 of yacc.c  */
    8098 #line 2227 "parser.yy"
    8099     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8100     break;
    8101 
    8102   case 570:
    8103 
    8104 /* Line 1806 of yacc.c  */
    8105 #line 2229 "parser.yy"
    8106     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8107     break;
    8108 
    8109   case 571:
    8110 
    8111 /* Line 1806 of yacc.c  */
    8112 #line 2231 "parser.yy"
    8113     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8114     break;
    8115 
    8116   case 572:
    8117 
    8118 /* Line 1806 of yacc.c  */
    8119 #line 2236 "parser.yy"
    8120     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8121     break;
    8122 
    8123   case 573:
    8124 
    8125 /* Line 1806 of yacc.c  */
    8126 #line 2238 "parser.yy"
    8127     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8128     break;
    8129 
    8130   case 574:
    8131 
    8132 /* Line 1806 of yacc.c  */
    8133 #line 2240 "parser.yy"
    8134     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8135     break;
    8136 
    8137   case 575:
    8138 
    8139 /* Line 1806 of yacc.c  */
    8140 #line 2242 "parser.yy"
    8141     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8142     break;
    8143 
    8144   case 576:
    8145 
    8146 /* Line 1806 of yacc.c  */
    8147 #line 2247 "parser.yy"
    8148     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8149     break;
    8150 
    8151   case 577:
    8152 
    8153 /* Line 1806 of yacc.c  */
    8154 #line 2249 "parser.yy"
    8155     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8156     break;
    8157 
    8158   case 578:
    8159 
    8160 /* Line 1806 of yacc.c  */
    8161 #line 2258 "parser.yy"
    8162     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8163     break;
    8164 
    8165   case 580:
    8166 
    8167 /* Line 1806 of yacc.c  */
    8168 #line 2261 "parser.yy"
    8169     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8170     break;
    8171 
    8172   case 581:
    8173 
    8174 /* Line 1806 of yacc.c  */
    8175 #line 2266 "parser.yy"
    8176     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8177     break;
    8178 
    8179   case 582:
    8180 
    8181 /* Line 1806 of yacc.c  */
    8182 #line 2268 "parser.yy"
    8183     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8184     break;
    8185 
    8186   case 583:
    8187 
    8188 /* Line 1806 of yacc.c  */
    8189 #line 2270 "parser.yy"
    8190     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8191     break;
    8192 
    8193   case 584:
    8194 
    8195 /* Line 1806 of yacc.c  */
    8196 #line 2275 "parser.yy"
    8197     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8198     break;
    8199 
    8200   case 585:
    8201 
    8202 /* Line 1806 of yacc.c  */
    8203 #line 2277 "parser.yy"
    8204     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8205     break;
    8206 
    8207   case 586:
    8208 
    8209 /* Line 1806 of yacc.c  */
    8210 #line 2279 "parser.yy"
    8211     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8212     break;
    8213 
    8214   case 587:
    8215 
    8216 /* Line 1806 of yacc.c  */
    8217 #line 2284 "parser.yy"
    8218     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8219     break;
    8220 
    8221   case 588:
    8222 
    8223 /* Line 1806 of yacc.c  */
    8224 #line 2286 "parser.yy"
    8225     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8226     break;
    8227 
    8228   case 589:
    8229 
    8230 /* Line 1806 of yacc.c  */
    8231 #line 2288 "parser.yy"
    8232     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8233     break;
    8234 
    8235   case 593:
    8236 
    8237 /* Line 1806 of yacc.c  */
    8238 #line 2303 "parser.yy"
    8239     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8240     break;
    8241 
    8242   case 594:
    8243 
    8244 /* Line 1806 of yacc.c  */
    8245 #line 2305 "parser.yy"
    8246     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8247     break;
    8248 
    8249   case 595:
    8250 
    8251 /* Line 1806 of yacc.c  */
    8252 #line 2307 "parser.yy"
    8253     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8254     break;
    8255 
    8256   case 596:
    8257 
    8258 /* Line 1806 of yacc.c  */
    8259 #line 2312 "parser.yy"
    8260     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8261     break;
    8262 
    8263   case 597:
    8264 
    8265 /* Line 1806 of yacc.c  */
    8266 #line 2314 "parser.yy"
    8267     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8268     break;
    8269 
    8270   case 598:
    8271 
    8272 /* Line 1806 of yacc.c  */
    8273 #line 2316 "parser.yy"
    8274     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8275     break;
    8276 
    8277   case 599:
    8278 
    8279 /* Line 1806 of yacc.c  */
    8280 #line 2321 "parser.yy"
    8281     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8282     break;
    8283 
    8284   case 600:
    8285 
    8286 /* Line 1806 of yacc.c  */
    8287 #line 2323 "parser.yy"
    8288     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8289     break;
    8290 
    8291   case 601:
    8292 
    8293 /* Line 1806 of yacc.c  */
    8294 #line 2325 "parser.yy"
    8295     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8296     break;
    8297 
    8298   case 602:
    8299 
    8300 /* Line 1806 of yacc.c  */
    8301 #line 2340 "parser.yy"
    8302     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8303     break;
    8304 
    8305   case 604:
    8306 
    8307 /* Line 1806 of yacc.c  */
    8308 #line 2343 "parser.yy"
    8309     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8310     break;
    8311 
    8312   case 605:
    8313 
    8314 /* Line 1806 of yacc.c  */
    8315 #line 2345 "parser.yy"
    8316     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8317     break;
    8318 
    8319   case 607:
    8320 
    8321 /* Line 1806 of yacc.c  */
    8322 #line 2351 "parser.yy"
    8323     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8324     break;
    8325 
    8326   case 608:
    8327 
    8328 /* Line 1806 of yacc.c  */
    8329 #line 2356 "parser.yy"
    8330     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8331     break;
    8332 
    8333   case 609:
    8334 
    8335 /* Line 1806 of yacc.c  */
    8336 #line 2358 "parser.yy"
    8337     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8338     break;
    8339 
    8340   case 610:
    8341 
    8342 /* Line 1806 of yacc.c  */
    8343 #line 2360 "parser.yy"
    8344     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8345     break;
    8346 
    8347   case 611:
    8348 
    8349 /* Line 1806 of yacc.c  */
    8350 #line 2365 "parser.yy"
    8351     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8352     break;
    8353 
    8354   case 612:
    8355 
    8356 /* Line 1806 of yacc.c  */
    8357 #line 2367 "parser.yy"
    8358     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8359     break;
    8360 
    8361   case 613:
    8362 
    8363 /* Line 1806 of yacc.c  */
    8364 #line 2369 "parser.yy"
    8365     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8366     break;
    8367 
    8368   case 614:
    8369 
    8370 /* Line 1806 of yacc.c  */
    8371 #line 2371 "parser.yy"
    8372     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8373     break;
    8374 
    8375   case 615:
    8376 
    8377 /* Line 1806 of yacc.c  */
    8378 #line 2376 "parser.yy"
    8379     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8380     break;
    8381 
    8382   case 616:
    8383 
    8384 /* Line 1806 of yacc.c  */
    8385 #line 2378 "parser.yy"
    8386     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8387     break;
    8388 
    8389   case 617:
    8390 
    8391 /* Line 1806 of yacc.c  */
    8392 #line 2380 "parser.yy"
    8393     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8394     break;
    8395 
    8396   case 618:
    8397 
    8398 /* Line 1806 of yacc.c  */
    8399 #line 2390 "parser.yy"
    8400     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8401     break;
    8402 
    8403   case 620:
    8404 
    8405 /* Line 1806 of yacc.c  */
    8406 #line 2393 "parser.yy"
    8407     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8408     break;
    8409 
    8410   case 621:
    8411 
    8412 /* Line 1806 of yacc.c  */
    8413 #line 2395 "parser.yy"
    8414     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8415     break;
    8416 
    8417   case 622:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2400 "parser.yy"
    8421     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8422     break;
    8423 
    8424   case 623:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2402 "parser.yy"
    8428     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8429     break;
    8430 
    8431   case 624:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2404 "parser.yy"
    8435     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8436     break;
    8437 
    8438   case 625:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2409 "parser.yy"
    8442     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8443     break;
    8444 
    8445   case 626:
    8446 
    8447 /* Line 1806 of yacc.c  */
    8448 #line 2411 "parser.yy"
    8449     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8450     break;
    8451 
    8452   case 627:
    8453 
    8454 /* Line 1806 of yacc.c  */
    8455 #line 2413 "parser.yy"
    8456     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8457     break;
    8458 
    8459   case 628:
    8460 
    8461 /* Line 1806 of yacc.c  */
    8462 #line 2415 "parser.yy"
    8463     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8464     break;
    8465 
    8466   case 629:
    8467 
    8468 /* Line 1806 of yacc.c  */
    8469 #line 2420 "parser.yy"
    8470     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8471     break;
    8472 
    8473   case 630:
    8474 
    8475 /* Line 1806 of yacc.c  */
    8476 #line 2422 "parser.yy"
    8477     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8478     break;
    8479 
    8480   case 631:
    8481 
    8482 /* Line 1806 of yacc.c  */
    8483 #line 2424 "parser.yy"
    8484     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7512#line 7513 "Parser/parser.cc" /* yacc.c:1646  */
    84857513    break;
    84867514
    84877515  case 632:
    8488 
    8489 /* Line 1806 of yacc.c  */
    8490 #line 2455 "parser.yy"
    8491     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7516#line 2440 "parser.yy" /* yacc.c:1646  */
     7517    {
     7518                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
     7519                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
     7520                }
     7521#line 7522 "Parser/parser.cc" /* yacc.c:1646  */
     7522    break;
     7523
     7524  case 633:
     7525#line 2448 "parser.yy" /* yacc.c:1646  */
     7526    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7527#line 7528 "Parser/parser.cc" /* yacc.c:1646  */
    84927528    break;
    84937529
    84947530  case 634:
    8495 
    8496 /* Line 1806 of yacc.c  */
    8497 #line 2458 "parser.yy"
    8498     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7531#line 2450 "parser.yy" /* yacc.c:1646  */
     7532    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7533#line 7534 "Parser/parser.cc" /* yacc.c:1646  */
    84997534    break;
    85007535
    85017536  case 635:
    8502 
    8503 /* Line 1806 of yacc.c  */
    8504 #line 2460 "parser.yy"
    8505     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7537#line 2452 "parser.yy" /* yacc.c:1646  */
     7538    { (yyval.decl) = (yyvsp[-1].decl); }
     7539#line 7540 "Parser/parser.cc" /* yacc.c:1646  */
    85067540    break;
    85077541
    85087542  case 636:
    8509 
    8510 /* Line 1806 of yacc.c  */
    8511 #line 2465 "parser.yy"
    8512     {
    8513                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8514                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    8515                 }
     7543#line 2457 "parser.yy" /* yacc.c:1646  */
     7544    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7545#line 7546 "Parser/parser.cc" /* yacc.c:1646  */
    85167546    break;
    85177547
    85187548  case 637:
    8519 
    8520 /* Line 1806 of yacc.c  */
    8521 #line 2470 "parser.yy"
    8522     {
    8523                         typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
    8524                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    8525                 }
     7549#line 2459 "parser.yy" /* yacc.c:1646  */
     7550    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7551#line 7552 "Parser/parser.cc" /* yacc.c:1646  */
    85267552    break;
    85277553
    85287554  case 638:
    8529 
    8530 /* Line 1806 of yacc.c  */
    8531 #line 2478 "parser.yy"
    8532     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7555#line 2464 "parser.yy" /* yacc.c:1646  */
     7556    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
     7557#line 7558 "Parser/parser.cc" /* yacc.c:1646  */
    85337558    break;
    85347559
    85357560  case 639:
    8536 
    8537 /* Line 1806 of yacc.c  */
    8538 #line 2480 "parser.yy"
    8539     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8540     break;
    8541 
    8542   case 640:
    8543 
    8544 /* Line 1806 of yacc.c  */
    8545 #line 2482 "parser.yy"
    8546     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7561#line 2466 "parser.yy" /* yacc.c:1646  */
     7562    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7563#line 7564 "Parser/parser.cc" /* yacc.c:1646  */
    85477564    break;
    85487565
    85497566  case 641:
    8550 
    8551 /* Line 1806 of yacc.c  */
    8552 #line 2487 "parser.yy"
    8553     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7567#line 2481 "parser.yy" /* yacc.c:1646  */
     7568    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7569#line 7570 "Parser/parser.cc" /* yacc.c:1646  */
    85547570    break;
    85557571
    85567572  case 642:
    8557 
    8558 /* Line 1806 of yacc.c  */
    8559 #line 2489 "parser.yy"
    8560     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7573#line 2483 "parser.yy" /* yacc.c:1646  */
     7574    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7575#line 7576 "Parser/parser.cc" /* yacc.c:1646  */
    85617576    break;
    85627577
    85637578  case 643:
    8564 
    8565 /* Line 1806 of yacc.c  */
    8566 #line 2494 "parser.yy"
    8567     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     7579#line 2488 "parser.yy" /* yacc.c:1646  */
     7580    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     7581#line 7582 "Parser/parser.cc" /* yacc.c:1646  */
    85687582    break;
    85697583
    85707584  case 644:
    8571 
    8572 /* Line 1806 of yacc.c  */
    8573 #line 2496 "parser.yy"
    8574     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     7585#line 2490 "parser.yy" /* yacc.c:1646  */
     7586    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7587#line 7588 "Parser/parser.cc" /* yacc.c:1646  */
     7588    break;
     7589
     7590  case 645:
     7591#line 2492 "parser.yy" /* yacc.c:1646  */
     7592    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7593#line 7594 "Parser/parser.cc" /* yacc.c:1646  */
    85757594    break;
    85767595
    85777596  case 646:
    8578 
    8579 /* Line 1806 of yacc.c  */
    8580 #line 2511 "parser.yy"
    8581     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7597#line 2494 "parser.yy" /* yacc.c:1646  */
     7598    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7599#line 7600 "Parser/parser.cc" /* yacc.c:1646  */
    85827600    break;
    85837601
    85847602  case 647:
    8585 
    8586 /* Line 1806 of yacc.c  */
    8587 #line 2513 "parser.yy"
    8588     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8589     break;
    8590 
    8591   case 648:
    8592 
    8593 /* Line 1806 of yacc.c  */
    8594 #line 2518 "parser.yy"
     7603#line 2496 "parser.yy" /* yacc.c:1646  */
     7604    { (yyval.decl) = (yyvsp[-1].decl); }
     7605#line 7606 "Parser/parser.cc" /* yacc.c:1646  */
     7606    break;
     7607
     7608  case 649:
     7609#line 2502 "parser.yy" /* yacc.c:1646  */
     7610    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7611#line 7612 "Parser/parser.cc" /* yacc.c:1646  */
     7612    break;
     7613
     7614  case 650:
     7615#line 2504 "parser.yy" /* yacc.c:1646  */
     7616    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7617#line 7618 "Parser/parser.cc" /* yacc.c:1646  */
     7618    break;
     7619
     7620  case 651:
     7621#line 2506 "parser.yy" /* yacc.c:1646  */
     7622    { (yyval.decl) = (yyvsp[-1].decl); }
     7623#line 7624 "Parser/parser.cc" /* yacc.c:1646  */
     7624    break;
     7625
     7626  case 652:
     7627#line 2511 "parser.yy" /* yacc.c:1646  */
     7628    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
     7629#line 7630 "Parser/parser.cc" /* yacc.c:1646  */
     7630    break;
     7631
     7632  case 653:
     7633#line 2513 "parser.yy" /* yacc.c:1646  */
     7634    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7635#line 7636 "Parser/parser.cc" /* yacc.c:1646  */
     7636    break;
     7637
     7638  case 654:
     7639#line 2515 "parser.yy" /* yacc.c:1646  */
     7640    { (yyval.decl) = (yyvsp[-1].decl); }
     7641#line 7642 "Parser/parser.cc" /* yacc.c:1646  */
     7642    break;
     7643
     7644  case 655:
     7645#line 2521 "parser.yy" /* yacc.c:1646  */
     7646    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     7647#line 7648 "Parser/parser.cc" /* yacc.c:1646  */
     7648    break;
     7649
     7650  case 656:
     7651#line 2523 "parser.yy" /* yacc.c:1646  */
     7652    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
     7653#line 7654 "Parser/parser.cc" /* yacc.c:1646  */
     7654    break;
     7655
     7656  case 658:
     7657#line 2529 "parser.yy" /* yacc.c:1646  */
     7658    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
     7659#line 7660 "Parser/parser.cc" /* yacc.c:1646  */
     7660    break;
     7661
     7662  case 659:
     7663#line 2531 "parser.yy" /* yacc.c:1646  */
     7664    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     7665#line 7666 "Parser/parser.cc" /* yacc.c:1646  */
     7666    break;
     7667
     7668  case 660:
     7669#line 2533 "parser.yy" /* yacc.c:1646  */
     7670    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
     7671#line 7672 "Parser/parser.cc" /* yacc.c:1646  */
     7672    break;
     7673
     7674  case 661:
     7675#line 2535 "parser.yy" /* yacc.c:1646  */
     7676    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     7677#line 7678 "Parser/parser.cc" /* yacc.c:1646  */
     7678    break;
     7679
     7680  case 663:
     7681#line 2550 "parser.yy" /* yacc.c:1646  */
     7682    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7683#line 7684 "Parser/parser.cc" /* yacc.c:1646  */
     7684    break;
     7685
     7686  case 664:
     7687#line 2552 "parser.yy" /* yacc.c:1646  */
     7688    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7689#line 7690 "Parser/parser.cc" /* yacc.c:1646  */
     7690    break;
     7691
     7692  case 665:
     7693#line 2557 "parser.yy" /* yacc.c:1646  */
    85957694    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8596     break;
    8597 
    8598   case 649:
    8599 
    8600 /* Line 1806 of yacc.c  */
    8601 #line 2520 "parser.yy"
    8602     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8603     break;
    8604 
    8605   case 650:
    8606 
    8607 /* Line 1806 of yacc.c  */
    8608 #line 2522 "parser.yy"
    8609     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8610     break;
    8611 
    8612   case 651:
    8613 
    8614 /* Line 1806 of yacc.c  */
    8615 #line 2524 "parser.yy"
    8616     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8617     break;
    8618 
    8619   case 652:
    8620 
    8621 /* Line 1806 of yacc.c  */
    8622 #line 2526 "parser.yy"
    8623     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8624     break;
    8625 
    8626   case 654:
    8627 
    8628 /* Line 1806 of yacc.c  */
    8629 #line 2532 "parser.yy"
    8630     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8631     break;
    8632 
    8633   case 655:
    8634 
    8635 /* Line 1806 of yacc.c  */
    8636 #line 2534 "parser.yy"
    8637     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8638     break;
    8639 
    8640   case 656:
    8641 
    8642 /* Line 1806 of yacc.c  */
    8643 #line 2536 "parser.yy"
    8644     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8645     break;
    8646 
    8647   case 657:
    8648 
    8649 /* Line 1806 of yacc.c  */
    8650 #line 2541 "parser.yy"
    8651     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8652     break;
    8653 
    8654   case 658:
    8655 
    8656 /* Line 1806 of yacc.c  */
    8657 #line 2543 "parser.yy"
    8658     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8659     break;
    8660 
    8661   case 659:
    8662 
    8663 /* Line 1806 of yacc.c  */
    8664 #line 2545 "parser.yy"
    8665     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8666     break;
    8667 
    8668   case 660:
    8669 
    8670 /* Line 1806 of yacc.c  */
    8671 #line 2551 "parser.yy"
     7695#line 7696 "Parser/parser.cc" /* yacc.c:1646  */
     7696    break;
     7697
     7698  case 666:
     7699#line 2559 "parser.yy" /* yacc.c:1646  */
     7700    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7701#line 7702 "Parser/parser.cc" /* yacc.c:1646  */
     7702    break;
     7703
     7704  case 667:
     7705#line 2561 "parser.yy" /* yacc.c:1646  */
     7706    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7707#line 7708 "Parser/parser.cc" /* yacc.c:1646  */
     7708    break;
     7709
     7710  case 668:
     7711#line 2563 "parser.yy" /* yacc.c:1646  */
     7712    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7713#line 7714 "Parser/parser.cc" /* yacc.c:1646  */
     7714    break;
     7715
     7716  case 669:
     7717#line 2565 "parser.yy" /* yacc.c:1646  */
     7718    { (yyval.decl) = (yyvsp[-1].decl); }
     7719#line 7720 "Parser/parser.cc" /* yacc.c:1646  */
     7720    break;
     7721
     7722  case 671:
     7723#line 2571 "parser.yy" /* yacc.c:1646  */
     7724    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7725#line 7726 "Parser/parser.cc" /* yacc.c:1646  */
     7726    break;
     7727
     7728  case 672:
     7729#line 2573 "parser.yy" /* yacc.c:1646  */
     7730    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7731#line 7732 "Parser/parser.cc" /* yacc.c:1646  */
     7732    break;
     7733
     7734  case 673:
     7735#line 2575 "parser.yy" /* yacc.c:1646  */
     7736    { (yyval.decl) = (yyvsp[-1].decl); }
     7737#line 7738 "Parser/parser.cc" /* yacc.c:1646  */
     7738    break;
     7739
     7740  case 674:
     7741#line 2580 "parser.yy" /* yacc.c:1646  */
     7742    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
     7743#line 7744 "Parser/parser.cc" /* yacc.c:1646  */
     7744    break;
     7745
     7746  case 675:
     7747#line 2582 "parser.yy" /* yacc.c:1646  */
     7748    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7749#line 7750 "Parser/parser.cc" /* yacc.c:1646  */
     7750    break;
     7751
     7752  case 676:
     7753#line 2584 "parser.yy" /* yacc.c:1646  */
     7754    { (yyval.decl) = (yyvsp[-1].decl); }
     7755#line 7756 "Parser/parser.cc" /* yacc.c:1646  */
     7756    break;
     7757
     7758  case 678:
     7759#line 2591 "parser.yy" /* yacc.c:1646  */
     7760    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
     7761#line 7762 "Parser/parser.cc" /* yacc.c:1646  */
     7762    break;
     7763
     7764  case 680:
     7765#line 2602 "parser.yy" /* yacc.c:1646  */
    86727766    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8673     break;
    8674 
    8675   case 661:
    8676 
    8677 /* Line 1806 of yacc.c  */
    8678 #line 2553 "parser.yy"
    8679     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8680     break;
    8681 
    8682   case 663:
    8683 
    8684 /* Line 1806 of yacc.c  */
    8685 #line 2559 "parser.yy"
    8686     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8687     break;
    8688 
    8689   case 664:
    8690 
    8691 /* Line 1806 of yacc.c  */
    8692 #line 2561 "parser.yy"
    8693     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8694     break;
    8695 
    8696   case 665:
    8697 
    8698 /* Line 1806 of yacc.c  */
    8699 #line 2563 "parser.yy"
    8700     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8701     break;
    8702 
    8703   case 666:
    8704 
    8705 /* Line 1806 of yacc.c  */
    8706 #line 2565 "parser.yy"
    8707     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8708     break;
    8709 
    8710   case 668:
    8711 
    8712 /* Line 1806 of yacc.c  */
    8713 #line 2580 "parser.yy"
    8714     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8715     break;
    8716 
    8717   case 669:
    8718 
    8719 /* Line 1806 of yacc.c  */
    8720 #line 2582 "parser.yy"
    8721     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8722     break;
    8723 
    8724   case 670:
    8725 
    8726 /* Line 1806 of yacc.c  */
    8727 #line 2587 "parser.yy"
     7767#line 7768 "Parser/parser.cc" /* yacc.c:1646  */
     7768    break;
     7769
     7770  case 681:
     7771#line 2605 "parser.yy" /* yacc.c:1646  */
     7772    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
     7773#line 7774 "Parser/parser.cc" /* yacc.c:1646  */
     7774    break;
     7775
     7776  case 682:
     7777#line 2607 "parser.yy" /* yacc.c:1646  */
     7778    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
     7779#line 7780 "Parser/parser.cc" /* yacc.c:1646  */
     7780    break;
     7781
     7782  case 683:
     7783#line 2610 "parser.yy" /* yacc.c:1646  */
     7784    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
     7785#line 7786 "Parser/parser.cc" /* yacc.c:1646  */
     7786    break;
     7787
     7788  case 684:
     7789#line 2612 "parser.yy" /* yacc.c:1646  */
     7790    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
     7791#line 7792 "Parser/parser.cc" /* yacc.c:1646  */
     7792    break;
     7793
     7794  case 685:
     7795#line 2614 "parser.yy" /* yacc.c:1646  */
     7796    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
     7797#line 7798 "Parser/parser.cc" /* yacc.c:1646  */
     7798    break;
     7799
     7800  case 687:
     7801#line 2628 "parser.yy" /* yacc.c:1646  */
     7802    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7803#line 7804 "Parser/parser.cc" /* yacc.c:1646  */
     7804    break;
     7805
     7806  case 688:
     7807#line 2630 "parser.yy" /* yacc.c:1646  */
     7808    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7809#line 7810 "Parser/parser.cc" /* yacc.c:1646  */
     7810    break;
     7811
     7812  case 689:
     7813#line 2635 "parser.yy" /* yacc.c:1646  */
    87287814    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8729     break;
    8730 
    8731   case 671:
    8732 
    8733 /* Line 1806 of yacc.c  */
    8734 #line 2589 "parser.yy"
    8735     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8736     break;
    8737 
    8738   case 672:
    8739 
    8740 /* Line 1806 of yacc.c  */
    8741 #line 2591 "parser.yy"
    8742     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8743     break;
    8744 
    8745   case 673:
    8746 
    8747 /* Line 1806 of yacc.c  */
    8748 #line 2593 "parser.yy"
    8749     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8750     break;
    8751 
    8752   case 674:
    8753 
    8754 /* Line 1806 of yacc.c  */
    8755 #line 2595 "parser.yy"
    8756     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8757     break;
    8758 
    8759   case 676:
    8760 
    8761 /* Line 1806 of yacc.c  */
    8762 #line 2601 "parser.yy"
    8763     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8764     break;
    8765 
    8766   case 677:
    8767 
    8768 /* Line 1806 of yacc.c  */
    8769 #line 2603 "parser.yy"
    8770     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8771     break;
    8772 
    8773   case 678:
    8774 
    8775 /* Line 1806 of yacc.c  */
    8776 #line 2605 "parser.yy"
    8777     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8778     break;
    8779 
    8780   case 679:
    8781 
    8782 /* Line 1806 of yacc.c  */
    8783 #line 2610 "parser.yy"
    8784     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8785     break;
    8786 
    8787   case 680:
    8788 
    8789 /* Line 1806 of yacc.c  */
    8790 #line 2612 "parser.yy"
    8791     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8792     break;
    8793 
    8794   case 681:
    8795 
    8796 /* Line 1806 of yacc.c  */
    8797 #line 2614 "parser.yy"
    8798     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8799     break;
    8800 
    8801   case 683:
    8802 
    8803 /* Line 1806 of yacc.c  */
    8804 #line 2621 "parser.yy"
    8805     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8806     break;
    8807 
    8808   case 685:
    8809 
    8810 /* Line 1806 of yacc.c  */
    8811 #line 2632 "parser.yy"
    8812     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8813     break;
    8814 
    8815   case 686:
    8816 
    8817 /* Line 1806 of yacc.c  */
    8818 #line 2635 "parser.yy"
    8819     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8820     break;
    8821 
    8822   case 687:
    8823 
    8824 /* Line 1806 of yacc.c  */
    8825 #line 2637 "parser.yy"
    8826     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8827     break;
    8828 
    8829   case 688:
    8830 
    8831 /* Line 1806 of yacc.c  */
    8832 #line 2640 "parser.yy"
    8833     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    8834     break;
    8835 
    8836   case 689:
    8837 
    8838 /* Line 1806 of yacc.c  */
    8839 #line 2642 "parser.yy"
    8840     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     7815#line 7816 "Parser/parser.cc" /* yacc.c:1646  */
    88417816    break;
    88427817
    88437818  case 690:
    8844 
    8845 /* Line 1806 of yacc.c  */
    8846 #line 2644 "parser.yy"
    8847     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     7819#line 2637 "parser.yy" /* yacc.c:1646  */
     7820    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
     7821#line 7822 "Parser/parser.cc" /* yacc.c:1646  */
     7822    break;
     7823
     7824  case 691:
     7825#line 2639 "parser.yy" /* yacc.c:1646  */
     7826    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7827#line 7828 "Parser/parser.cc" /* yacc.c:1646  */
    88487828    break;
    88497829
    88507830  case 692:
    8851 
    8852 /* Line 1806 of yacc.c  */
    8853 #line 2658 "parser.yy"
    8854     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7831#line 2641 "parser.yy" /* yacc.c:1646  */
     7832    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
     7833#line 7834 "Parser/parser.cc" /* yacc.c:1646  */
    88557834    break;
    88567835
    88577836  case 693:
    8858 
    8859 /* Line 1806 of yacc.c  */
    8860 #line 2660 "parser.yy"
    8861     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8862     break;
    8863 
    8864   case 694:
    8865 
    8866 /* Line 1806 of yacc.c  */
    8867 #line 2665 "parser.yy"
    8868     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     7837#line 2643 "parser.yy" /* yacc.c:1646  */
     7838    { (yyval.decl) = (yyvsp[-1].decl); }
     7839#line 7840 "Parser/parser.cc" /* yacc.c:1646  */
    88697840    break;
    88707841
    88717842  case 695:
    8872 
    8873 /* Line 1806 of yacc.c  */
    8874 #line 2667 "parser.yy"
    8875     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     7843#line 2649 "parser.yy" /* yacc.c:1646  */
     7844    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7845#line 7846 "Parser/parser.cc" /* yacc.c:1646  */
    88767846    break;
    88777847
    88787848  case 696:
    8879 
    8880 /* Line 1806 of yacc.c  */
    8881 #line 2669 "parser.yy"
    8882     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7849#line 2651 "parser.yy" /* yacc.c:1646  */
     7850    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7851#line 7852 "Parser/parser.cc" /* yacc.c:1646  */
    88837852    break;
    88847853
    88857854  case 697:
    8886 
    8887 /* Line 1806 of yacc.c  */
    8888 #line 2671 "parser.yy"
    8889     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7855#line 2653 "parser.yy" /* yacc.c:1646  */
     7856    { (yyval.decl) = (yyvsp[-1].decl); }
     7857#line 7858 "Parser/parser.cc" /* yacc.c:1646  */
    88907858    break;
    88917859
    88927860  case 698:
    8893 
    8894 /* Line 1806 of yacc.c  */
    8895 #line 2673 "parser.yy"
    8896     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8897     break;
    8898 
    8899   case 700:
    8900 
    8901 /* Line 1806 of yacc.c  */
    8902 #line 2679 "parser.yy"
    8903     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8904     break;
    8905 
    8906   case 701:
    8907 
    8908 /* Line 1806 of yacc.c  */
    8909 #line 2681 "parser.yy"
    8910     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7861#line 2658 "parser.yy" /* yacc.c:1646  */
     7862    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
     7863#line 7864 "Parser/parser.cc" /* yacc.c:1646  */
     7864    break;
     7865
     7866  case 699:
     7867#line 2660 "parser.yy" /* yacc.c:1646  */
     7868    { (yyval.decl) = (yyvsp[-1].decl); }
     7869#line 7870 "Parser/parser.cc" /* yacc.c:1646  */
    89117870    break;
    89127871
    89137872  case 702:
    8914 
    8915 /* Line 1806 of yacc.c  */
    8916 #line 2683 "parser.yy"
    8917     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8918     break;
    8919 
    8920   case 703:
    8921 
    8922 /* Line 1806 of yacc.c  */
    8923 #line 2688 "parser.yy"
    8924     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8925     break;
    8926 
    8927   case 704:
    8928 
    8929 /* Line 1806 of yacc.c  */
    8930 #line 2690 "parser.yy"
    8931     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7873#line 2670 "parser.yy" /* yacc.c:1646  */
     7874    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     7875#line 7876 "Parser/parser.cc" /* yacc.c:1646  */
     7876    break;
     7877
     7878  case 705:
     7879#line 2680 "parser.yy" /* yacc.c:1646  */
     7880    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7881#line 7882 "Parser/parser.cc" /* yacc.c:1646  */
     7882    break;
     7883
     7884  case 706:
     7885#line 2682 "parser.yy" /* yacc.c:1646  */
     7886    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7887#line 7888 "Parser/parser.cc" /* yacc.c:1646  */
    89327888    break;
    89337889
    89347890  case 707:
    8935 
    8936 /* Line 1806 of yacc.c  */
    8937 #line 2700 "parser.yy"
    8938     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7891#line 2684 "parser.yy" /* yacc.c:1646  */
     7892    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7893#line 7894 "Parser/parser.cc" /* yacc.c:1646  */
     7894    break;
     7895
     7896  case 708:
     7897#line 2686 "parser.yy" /* yacc.c:1646  */
     7898    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7899#line 7900 "Parser/parser.cc" /* yacc.c:1646  */
     7900    break;
     7901
     7902  case 709:
     7903#line 2688 "parser.yy" /* yacc.c:1646  */
     7904    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7905#line 7906 "Parser/parser.cc" /* yacc.c:1646  */
    89397906    break;
    89407907
    89417908  case 710:
    8942 
    8943 /* Line 1806 of yacc.c  */
    8944 #line 2710 "parser.yy"
    8945     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7909#line 2690 "parser.yy" /* yacc.c:1646  */
     7910    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     7911#line 7912 "Parser/parser.cc" /* yacc.c:1646  */
    89467912    break;
    89477913
    89487914  case 711:
    8949 
    8950 /* Line 1806 of yacc.c  */
    8951 #line 2712 "parser.yy"
    8952     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7915#line 2697 "parser.yy" /* yacc.c:1646  */
     7916    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7917#line 7918 "Parser/parser.cc" /* yacc.c:1646  */
    89537918    break;
    89547919
    89557920  case 712:
    8956 
    8957 /* Line 1806 of yacc.c  */
    8958 #line 2714 "parser.yy"
    8959     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7921#line 2699 "parser.yy" /* yacc.c:1646  */
     7922    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7923#line 7924 "Parser/parser.cc" /* yacc.c:1646  */
    89607924    break;
    89617925
    89627926  case 713:
    8963 
    8964 /* Line 1806 of yacc.c  */
    8965 #line 2716 "parser.yy"
    8966     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7927#line 2701 "parser.yy" /* yacc.c:1646  */
     7928    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7929#line 7930 "Parser/parser.cc" /* yacc.c:1646  */
    89677930    break;
    89687931
    89697932  case 714:
    8970 
    8971 /* Line 1806 of yacc.c  */
    8972 #line 2718 "parser.yy"
    8973     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     7933#line 2703 "parser.yy" /* yacc.c:1646  */
     7934    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
     7935#line 7936 "Parser/parser.cc" /* yacc.c:1646  */
    89747936    break;
    89757937
    89767938  case 715:
    8977 
    8978 /* Line 1806 of yacc.c  */
    8979 #line 2720 "parser.yy"
    8980     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     7939#line 2705 "parser.yy" /* yacc.c:1646  */
     7940    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7941#line 7942 "Parser/parser.cc" /* yacc.c:1646  */
    89817942    break;
    89827943
    89837944  case 716:
    8984 
    8985 /* Line 1806 of yacc.c  */
    8986 #line 2727 "parser.yy"
    8987     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7945#line 2707 "parser.yy" /* yacc.c:1646  */
     7946    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7947#line 7948 "Parser/parser.cc" /* yacc.c:1646  */
    89887948    break;
    89897949
    89907950  case 717:
    8991 
    8992 /* Line 1806 of yacc.c  */
    8993 #line 2729 "parser.yy"
    8994     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7951#line 2709 "parser.yy" /* yacc.c:1646  */
     7952    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7953#line 7954 "Parser/parser.cc" /* yacc.c:1646  */
    89957954    break;
    89967955
    89977956  case 718:
    8998 
    8999 /* Line 1806 of yacc.c  */
    9000 #line 2731 "parser.yy"
    9001     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7957#line 2711 "parser.yy" /* yacc.c:1646  */
     7958    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7959#line 7960 "Parser/parser.cc" /* yacc.c:1646  */
    90027960    break;
    90037961
    90047962  case 719:
    9005 
    9006 /* Line 1806 of yacc.c  */
    9007 #line 2733 "parser.yy"
    9008     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     7963#line 2713 "parser.yy" /* yacc.c:1646  */
     7964    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
     7965#line 7966 "Parser/parser.cc" /* yacc.c:1646  */
    90097966    break;
    90107967
    90117968  case 720:
    9012 
    9013 /* Line 1806 of yacc.c  */
    9014 #line 2735 "parser.yy"
    9015     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7969#line 2715 "parser.yy" /* yacc.c:1646  */
     7970    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7971#line 7972 "Parser/parser.cc" /* yacc.c:1646  */
    90167972    break;
    90177973
    90187974  case 721:
    9019 
    9020 /* Line 1806 of yacc.c  */
    9021 #line 2737 "parser.yy"
    9022     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7975#line 2720 "parser.yy" /* yacc.c:1646  */
     7976    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
     7977#line 7978 "Parser/parser.cc" /* yacc.c:1646  */
    90237978    break;
    90247979
    90257980  case 722:
    9026 
    9027 /* Line 1806 of yacc.c  */
    9028 #line 2739 "parser.yy"
    9029     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7981#line 2722 "parser.yy" /* yacc.c:1646  */
     7982    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
     7983#line 7984 "Parser/parser.cc" /* yacc.c:1646  */
    90307984    break;
    90317985
    90327986  case 723:
    9033 
    9034 /* Line 1806 of yacc.c  */
    9035 #line 2741 "parser.yy"
    9036     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7987#line 2727 "parser.yy" /* yacc.c:1646  */
     7988    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
     7989#line 7990 "Parser/parser.cc" /* yacc.c:1646  */
    90377990    break;
    90387991
    90397992  case 724:
    9040 
    9041 /* Line 1806 of yacc.c  */
    9042 #line 2743 "parser.yy"
    9043     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9044     break;
    9045 
    9046   case 725:
    9047 
    9048 /* Line 1806 of yacc.c  */
    9049 #line 2745 "parser.yy"
    9050     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     7993#line 2729 "parser.yy" /* yacc.c:1646  */
     7994    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
     7995#line 7996 "Parser/parser.cc" /* yacc.c:1646  */
    90517996    break;
    90527997
    90537998  case 726:
    9054 
    9055 /* Line 1806 of yacc.c  */
    9056 #line 2750 "parser.yy"
    9057     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9058     break;
    9059 
    9060   case 727:
    9061 
    9062 /* Line 1806 of yacc.c  */
    9063 #line 2752 "parser.yy"
    9064     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9065     break;
    9066 
    9067   case 728:
    9068 
    9069 /* Line 1806 of yacc.c  */
    9070 #line 2757 "parser.yy"
    9071     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9072     break;
    9073 
    9074   case 729:
    9075 
    9076 /* Line 1806 of yacc.c  */
    9077 #line 2759 "parser.yy"
    9078     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     7999#line 2756 "parser.yy" /* yacc.c:1646  */
     8000    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
     8001#line 8002 "Parser/parser.cc" /* yacc.c:1646  */
     8002    break;
     8003
     8004  case 730:
     8005#line 2767 "parser.yy" /* yacc.c:1646  */
     8006    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8007#line 8008 "Parser/parser.cc" /* yacc.c:1646  */
    90798008    break;
    90808009
    90818010  case 731:
    9082 
    9083 /* Line 1806 of yacc.c  */
    9084 #line 2786 "parser.yy"
    9085     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8011#line 2769 "parser.yy" /* yacc.c:1646  */
     8012    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8013#line 8014 "Parser/parser.cc" /* yacc.c:1646  */
     8014    break;
     8015
     8016  case 732:
     8017#line 2771 "parser.yy" /* yacc.c:1646  */
     8018    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8019#line 8020 "Parser/parser.cc" /* yacc.c:1646  */
     8020    break;
     8021
     8022  case 733:
     8023#line 2773 "parser.yy" /* yacc.c:1646  */
     8024    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8025#line 8026 "Parser/parser.cc" /* yacc.c:1646  */
     8026    break;
     8027
     8028  case 734:
     8029#line 2775 "parser.yy" /* yacc.c:1646  */
     8030    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8031#line 8032 "Parser/parser.cc" /* yacc.c:1646  */
    90868032    break;
    90878033
    90888034  case 735:
    9089 
    9090 /* Line 1806 of yacc.c  */
    9091 #line 2797 "parser.yy"
    9092     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8035#line 2777 "parser.yy" /* yacc.c:1646  */
     8036    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
     8037#line 8038 "Parser/parser.cc" /* yacc.c:1646  */
    90938038    break;
    90948039
    90958040  case 736:
    9096 
    9097 /* Line 1806 of yacc.c  */
    9098 #line 2799 "parser.yy"
    9099     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8041#line 2784 "parser.yy" /* yacc.c:1646  */
     8042    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8043#line 8044 "Parser/parser.cc" /* yacc.c:1646  */
    91008044    break;
    91018045
    91028046  case 737:
    9103 
    9104 /* Line 1806 of yacc.c  */
    9105 #line 2801 "parser.yy"
    9106     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8047#line 2786 "parser.yy" /* yacc.c:1646  */
     8048    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8049#line 8050 "Parser/parser.cc" /* yacc.c:1646  */
    91078050    break;
    91088051
    91098052  case 738:
    9110 
    9111 /* Line 1806 of yacc.c  */
    9112 #line 2803 "parser.yy"
    9113     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8053#line 2788 "parser.yy" /* yacc.c:1646  */
     8054    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     8055#line 8056 "Parser/parser.cc" /* yacc.c:1646  */
    91148056    break;
    91158057
    91168058  case 739:
    9117 
    9118 /* Line 1806 of yacc.c  */
    9119 #line 2805 "parser.yy"
    9120     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8059#line 2790 "parser.yy" /* yacc.c:1646  */
     8060    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8061#line 8062 "Parser/parser.cc" /* yacc.c:1646  */
    91218062    break;
    91228063
    91238064  case 740:
    9124 
    9125 /* Line 1806 of yacc.c  */
    9126 #line 2807 "parser.yy"
    9127     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8065#line 2792 "parser.yy" /* yacc.c:1646  */
     8066    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8067#line 8068 "Parser/parser.cc" /* yacc.c:1646  */
    91288068    break;
    91298069
    91308070  case 741:
    9131 
    9132 /* Line 1806 of yacc.c  */
    9133 #line 2814 "parser.yy"
    9134     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8071#line 2794 "parser.yy" /* yacc.c:1646  */
     8072    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     8073#line 8074 "Parser/parser.cc" /* yacc.c:1646  */
    91358074    break;
    91368075
    91378076  case 742:
    9138 
    9139 /* Line 1806 of yacc.c  */
    9140 #line 2816 "parser.yy"
    9141     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8077#line 2799 "parser.yy" /* yacc.c:1646  */
     8078    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
     8079#line 8080 "Parser/parser.cc" /* yacc.c:1646  */
    91428080    break;
    91438081
    91448082  case 743:
    9145 
    9146 /* Line 1806 of yacc.c  */
    9147 #line 2818 "parser.yy"
    9148     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8083#line 2804 "parser.yy" /* yacc.c:1646  */
     8084    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[-1].decl), 0 ); }
     8085#line 8086 "Parser/parser.cc" /* yacc.c:1646  */
    91498086    break;
    91508087
    91518088  case 744:
    9152 
    9153 /* Line 1806 of yacc.c  */
    9154 #line 2820 "parser.yy"
    9155     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8089#line 2806 "parser.yy" /* yacc.c:1646  */
     8090    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
     8091#line 8092 "Parser/parser.cc" /* yacc.c:1646  */
    91568092    break;
    91578093
    91588094  case 745:
    9159 
    9160 /* Line 1806 of yacc.c  */
    9161 #line 2822 "parser.yy"
    9162     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9163     break;
    9164 
    9165   case 746:
    9166 
    9167 /* Line 1806 of yacc.c  */
    9168 #line 2824 "parser.yy"
    9169     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9170     break;
    9171 
    9172   case 747:
    9173 
    9174 /* Line 1806 of yacc.c  */
    9175 #line 2829 "parser.yy"
    9176     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     8095#line 2808 "parser.yy" /* yacc.c:1646  */
     8096    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
     8097#line 8098 "Parser/parser.cc" /* yacc.c:1646  */
    91778098    break;
    91788099
    91798100  case 748:
    9180 
    9181 /* Line 1806 of yacc.c  */
    9182 #line 2834 "parser.yy"
    9183     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     8101#line 2832 "parser.yy" /* yacc.c:1646  */
     8102    { (yyval.en) = 0; }
     8103#line 8104 "Parser/parser.cc" /* yacc.c:1646  */
    91848104    break;
    91858105
    91868106  case 749:
    9187 
    9188 /* Line 1806 of yacc.c  */
    9189 #line 2836 "parser.yy"
    9190     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9191     break;
    9192 
    9193   case 750:
    9194 
    9195 /* Line 1806 of yacc.c  */
    9196 #line 2838 "parser.yy"
    9197     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9198     break;
    9199 
    9200   case 753:
    9201 
    9202 /* Line 1806 of yacc.c  */
    9203 #line 2862 "parser.yy"
    9204     { (yyval.en) = 0; }
    9205     break;
    9206 
    9207   case 754:
    9208 
    9209 /* Line 1806 of yacc.c  */
    9210 #line 2864 "parser.yy"
    9211     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    9212     break;
    9213 
    9214 
    9215 
    9216 /* Line 1806 of yacc.c  */
    9217 #line 9218 "Parser/parser.cc"
     8107#line 2834 "parser.yy" /* yacc.c:1646  */
     8108    { (yyval.en) = (yyvsp[0].en); }
     8109#line 8110 "Parser/parser.cc" /* yacc.c:1646  */
     8110    break;
     8111
     8112
     8113#line 8114 "Parser/parser.cc" /* yacc.c:1646  */
    92188114      default: break;
    92198115    }
     
    92378133  *++yyvsp = yyval;
    92388134
    9239   /* Now `shift' the result of the reduction.  Determine what state
     8135  /* Now 'shift' the result of the reduction.  Determine what state
    92408136     that goes to, based on the state we popped back to and the rule
    92418137     number reduced by.  */
     
    92528148
    92538149
    9254 /*------------------------------------.
    9255 | yyerrlab -- here on detecting error |
    9256 `------------------------------------*/
     8150/*--------------------------------------.
     8151| yyerrlab -- here on detecting error. |
     8152`--------------------------------------*/
    92578153yyerrlab:
    92588154  /* Make sure we have latest lookahead translation.  See comments at
     
    93058201    {
    93068202      /* If just tried and failed to reuse lookahead token after an
    9307         error, discard it.  */
     8203        error, discard it.  */
    93088204
    93098205      if (yychar <= YYEOF)
    9310         {
    9311           /* Return failure if at end of input.  */
    9312           if (yychar == YYEOF)
    9313             YYABORT;
    9314         }
     8206        {
     8207          /* Return failure if at end of input.  */
     8208          if (yychar == YYEOF)
     8209            YYABORT;
     8210        }
    93158211      else
    9316         {
    9317           yydestruct ("Error: discarding",
    9318                       yytoken, &yylval);
    9319           yychar = YYEMPTY;
    9320         }
     8212        {
     8213          yydestruct ("Error: discarding",
     8214                      yytoken, &yylval);
     8215          yychar = YYEMPTY;
     8216        }
    93218217    }
    93228218
     
    93378233     goto yyerrorlab;
    93388234
    9339   /* Do not reclaim the symbols of the rule which action triggered
     8235  /* Do not reclaim the symbols of the rule whose action triggered
    93408236     this YYERROR.  */
    93418237  YYPOPSTACK (yylen);
     
    93508246`-------------------------------------------------------------*/
    93518247yyerrlab1:
    9352   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
     8248  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
    93538249
    93548250  for (;;)
     
    93568252      yyn = yypact[yystate];
    93578253      if (!yypact_value_is_default (yyn))
    9358         {
    9359           yyn += YYTERROR;
    9360           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
    9361             {
    9362               yyn = yytable[yyn];
    9363               if (0 < yyn)
    9364                 break;
    9365             }
    9366         }
     8254        {
     8255          yyn += YYTERROR;
     8256          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
     8257            {
     8258              yyn = yytable[yyn];
     8259              if (0 < yyn)
     8260                break;
     8261            }
     8262        }
    93678263
    93688264      /* Pop the current state because it cannot handle the error token.  */
    93698265      if (yyssp == yyss)
    9370         YYABORT;
     8266        YYABORT;
    93718267
    93728268
    93738269      yydestruct ("Error: popping",
    9374                   yystos[yystate], yyvsp);
     8270                  yystos[yystate], yyvsp);
    93758271      YYPOPSTACK (1);
    93768272      yystate = *yyssp;
     
    93788274    }
    93798275
     8276  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    93808277  *++yyvsp = yylval;
     8278  YY_IGNORE_MAYBE_UNINITIALIZED_END
    93818279
    93828280
     
    94028300  goto yyreturn;
    94038301
    9404 #if !defined(yyoverflow) || YYERROR_VERBOSE
     8302#if !defined yyoverflow || YYERROR_VERBOSE
    94058303/*-------------------------------------------------.
    94068304| yyexhaustedlab -- memory exhaustion comes here.  |
     
    94218319                  yytoken, &yylval);
    94228320    }
    9423   /* Do not reclaim the symbols of the rule which action triggered
     8321  /* Do not reclaim the symbols of the rule whose action triggered
    94248322     this YYABORT or YYACCEPT.  */
    94258323  YYPOPSTACK (yylen);
     
    94288326    {
    94298327      yydestruct ("Cleanup: popping",
    9430                   yystos[*yyssp], yyvsp);
     8328                  yystos[*yyssp], yyvsp);
    94318329      YYPOPSTACK (1);
    94328330    }
     
    94398337    YYSTACK_FREE (yymsg);
    94408338#endif
    9441   /* Make sure YYID is used.  */
    9442   return YYID (yyresult);
     8339  return yyresult;
    94438340}
    9444 
    9445 
    9446 
    9447 /* Line 2067 of yacc.c  */
    9448 #line 2867 "parser.yy"
     8341#line 2837 "parser.yy" /* yacc.c:1906  */
    94498342
    94508343// ----end of grammar----
     8344
     8345extern char *yytext;
    94518346
    94528347void yyerror( const char * ) {
     
    94638358// compile-command: "make install" //
    94648359// End: //
    9465 
  • src/Parser/parser.h

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

    r03da511 r04cdd9b  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug  7 09:37:48 2016
    13 // Update Count     : 1764
     12// Last Modified On : Thu Aug 18 23:49:10 2016
     13// Update Count     : 1909
    1414//
    1515
     
    4343#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
    4444#define YYDEBUG 1                                                                               // get the pretty debugging code to compile
    45 extern char *yytext;
    4645
    4746#undef __GNUC_MINOR__
     
    5655#include "LinkageSpec.h"
    5756
    58 DeclarationNode *theTree = 0;                                                   // the resulting parse tree
    59 LinkageSpec::Type linkage = LinkageSpec::Cforall;
    60 std::stack< LinkageSpec::Type > linkageStack;
    61 TypedefTable typedefTable;
     57extern DeclarationNode * parseTree;
     58extern LinkageSpec::Spec linkage;
     59extern TypedefTable typedefTable;
     60
     61std::stack< LinkageSpec::Spec > linkageStack;
    6262
    6363void appendStr( std::string &to, std::string *from ) {
     
    121121        DeclarationNode::TypeClass tclass;
    122122        StatementNode *sn;
    123         ConstantNode *constant;
     123        ConstantExpr *constant;
     124        ForCtl *fctl;
    124125        LabelNode *label;
    125126        InitializerNode *in;
     
    133134
    134135// expressions
    135 %type<constant> constant
     136%type<en> constant
    136137%type<en> tuple                                                 tuple_expression_list
    137138%type<op> ptrref_operator                               unary_operator                          assignment_operator
     
    142143%type<en> constant_expression                   assignment_expression           assignment_expression_opt
    143144%type<en> comma_expression                              comma_expression_opt
    144 %type<en> argument_expression_list              argument_expression                     for_control_expression          assignment_opt
     145%type<en> argument_expression_list              argument_expression                     assignment_opt
     146%type<fctl> for_control_expression
    145147%type<en> subrange
    146148%type<en> asm_operands_opt asm_operands_list asm_operand
    147149%type<label> label_list
    148 %type<constant> asm_clobbers_list_opt
     150%type<en> asm_clobbers_list_opt
    149151%type<flag> asm_volatile_opt
    150152
     
    159161%type<sn> case_value_list                               case_label                                      case_label_list
    160162%type<sn> switch_clause_list_opt                switch_clause_list                      choose_clause_list_opt          choose_clause_list
    161 %type<pn> handler_list                                  handler_clause                          finally_clause
     163%type<sn> handler_list                                  handler_clause                          finally_clause
    162164
    163165// declarations
     
    221223%type<decl> paren_identifier paren_type
    222224
    223 %type<decl> storage_class storage_class_name storage_class_list
     225%type<decl> storage_class storage_class_list
    224226
    225227%type<decl> sue_declaration_specifier sue_type_specifier
     
    309311constant:
    310312                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    311 INTEGERconstant                                                                 { $$ = build_constantInteger( *$1 ); }
    312         | FLOATINGconstant                                                      { $$ = build_constantFloat( *$1 ); }
    313         | CHARACTERconstant                                                     { $$ = build_constantChar( *$1 ); }
     313        INTEGERconstant                                                                 { $$ = new ExpressionNode( build_constantInteger( assign_strptr($1) ) ); }
     314        | FLOATINGconstant                                                      { $$ = new ExpressionNode( build_constantFloat( assign_strptr($1) ) ); }
     315        | CHARACTERconstant                                                     { $$ = new ExpressionNode( build_constantChar( assign_strptr($1) ) ); }
    314316        ;
    315317
     
    336338
    337339string_literal_list:                                                                    // juxtaposed strings are concatenated
    338         STRINGliteral                                                           { $$ = build_constantStr( *$1 ); }
     340        STRINGliteral                                                           { $$ = build_constantStr( assign_strptr($1) ); }
    339341        | string_literal_list STRINGliteral
    340342                {
    341                         appendStr( $1->get_expr()->get_constant()->get_value(), $2 );
     343                        appendStr( $1->get_constant()->get_value(), $2 );
    342344                        delete $2;                                                                      // allocated by lexer
    343345                        $$ = $1;
     
    349351primary_expression:
    350352        IDENTIFIER                                                                                      // typedef name cannot be used as a variable name
    351                 { $$ = new VarRefNode( $1 ); }
     353                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    352354        | zero_one
    353                 { $$ = new VarRefNode( $1 ); }
     355                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    354356        | '(' comma_expression ')'
    355357                { $$ = $2; }
    356358        | '(' compound_statement ')'                                            // GCC, lambda expression
    357                 { $$ = new ValofExprNode( $2 ); }
     359        { $$ = new ExpressionNode( build_valexpr( $2 ) ); }
    358360        ;
    359361
     
    365367                // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
    366368                // equivalent to the old x[i,j].
    367                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Index, $1, $4 ) ); }
     369                { $$ = new ExpressionNode( build_binary_val( OperKinds::Index, $1, $4 ) ); }
    368370        | postfix_expression '(' argument_expression_list ')'
    369                 { $$ = new CompositeExprNode( build_func( $1, $3 ) ); }
     371                { $$ = new ExpressionNode( build_func( $1, $3 ) ); }
    370372        // ambiguity with .0 so space required after field-selection, e.g.
    371373                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    372374        | postfix_expression '.' no_attr_identifier
    373                 { $$ = new CompositeExprNode( build_fieldSel( $1, new VarRefNode( $3 ) ) ); }
     375                { $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); }
    374376        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    375377        | postfix_expression ARROW no_attr_identifier
    376                 { $$ = new CompositeExprNode( build_pfieldSel( $1, new VarRefNode( $3 ) ) ); }
     378                { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
    377379        | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
    378380        | postfix_expression ICR
    379                 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); }
     381                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); }
    380382        | postfix_expression DECR
    381                 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); }
     383                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); }
    382384        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
    383                 { $$ = new CompoundLiteralNode( $2, new InitializerNode( $5, true ) ); }
     385                { $$ = new ExpressionNode( build_compoundLiteral( $2, new InitializerNode( $5, true ) ) ); }
    384386        | postfix_expression '{' argument_expression_list '}' // CFA
    385387                {
    386388                        Token fn;
    387389                        fn.str = new std::string( "?{}" ); // location undefined
    388                         $$ = new CompositeExprNode( build_func( new VarRefNode( fn ), (ExpressionNode *)( $1 )->set_link( $3 ) ) );
     390                        $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) );
    389391                }
    390392        ;
     
    393395        argument_expression
    394396        | argument_expression_list ',' argument_expression
    395                 { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
     397                { $$ = (ExpressionNode *)( $1->set_last( $3 )); }
    396398        ;
    397399
     
    400402                { $$ = 0; }                                                                             // use default argument
    401403        | assignment_expression
    402         | no_attr_identifier ':' assignment_expression
    403                 { $$ = $3->set_argName( $1 ); }
    404                 // Only a list of no_attr_identifier_or_type_name is allowed in this context. However, there is insufficient
    405                 // look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used
    406                 // with an appropriate semantic check.
    407         | '[' push assignment_expression pop ']' ':' assignment_expression
    408                 { $$ = $7->set_argName( $3 ); }
    409         | '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
    410                 { $$ = $9->set_argName( new CompositeExprNode( build_tuple( (ExpressionNode *)$3->set_link( $5 ) ) ) ); }
    411404        ;
    412405
    413406field_list:                                                                                             // CFA, tuple field selector
    414407        field
    415         | field_list ',' field                                          { $$ = (ExpressionNode *)$1->set_link( $3 ); }
     408        | field_list ',' field                                          { $$ = (ExpressionNode *)$1->set_last( $3 ); }
    416409        ;
    417410
    418411field:                                                                                                  // CFA, tuple field selector
    419412        no_attr_identifier
    420                 { $$ = new VarRefNode( $1 ); }
     413                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    421414        // ambiguity with .0 so space required after field-selection, e.g.
    422415                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    423416        | no_attr_identifier '.' field
    424                 { $$ = new CompositeExprNode( build_fieldSel( $3, new VarRefNode( $1 ) ) ); }
     417                { $$ = new ExpressionNode( build_fieldSel( $3, build_varref( $1 ) ) ); }
    425418        | no_attr_identifier '.' '[' push field_list pop ']'
    426                 { $$ = new CompositeExprNode( build_fieldSel( $5, new VarRefNode( $1 ) ) ); }
     419                { $$ = new ExpressionNode( build_fieldSel( $5, build_varref( $1 ) ) ); }
    427420        | no_attr_identifier ARROW field
    428                 { $$ = new CompositeExprNode( build_pfieldSel( $3, new VarRefNode( $1 ) ) ); }
     421                { $$ = new ExpressionNode( build_pfieldSel( $3, build_varref( $1 ) ) ); }
    429422        | no_attr_identifier ARROW '[' push field_list pop ']'
    430                 { $$ = new CompositeExprNode( build_pfieldSel( $5, new VarRefNode( $1 ) ) ); }
     423                { $$ = new ExpressionNode( build_pfieldSel( $5, build_varref( $1 ) ) ); }
    431424        ;
    432425
     
    438431                { $$ = $1; }
    439432        | string_literal_list
    440                 { $$ = $1; }
     433                { $$ = new ExpressionNode( $1 ); }
    441434        | EXTENSION cast_expression                                                     // GCC
    442435                { $$ = $2->set_extension( true ); }
     
    448441                        switch ( $1 ) {
    449442                          case OperKinds::AddressOf:
    450                                 $$ = new CompositeExprNode( build_addressOf( $2 ) );
     443                                $$ = new ExpressionNode( build_addressOf( $2 ) );
    451444                                break;
    452445                          case OperKinds::PointTo:
    453                                 $$ = new CompositeExprNode( build_unary_val( $1, $2 ) );
     446                                $$ = new ExpressionNode( build_unary_val( $1, $2 ) );
    454447                                break;
    455448                          default:
     
    458451                }
    459452        | unary_operator cast_expression
    460                         { $$ = new CompositeExprNode( build_unary_val( $1, $2 ) ); }
     453                { $$ = new ExpressionNode( build_unary_val( $1, $2 ) ); }
    461454        | ICR unary_expression
    462                 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::Incr, $2 ) ); }
     455                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Incr, $2 ) ); }
    463456        | DECR unary_expression
    464                 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::Decr, $2 ) ); }
     457                { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Decr, $2 ) ); }
    465458        | SIZEOF unary_expression
    466                 { $$ = new CompositeExprNode( build_sizeOf( $2 ) ); }
     459                { $$ = new ExpressionNode( build_sizeOfexpr( $2 ) ); }
    467460        | SIZEOF '(' type_name_no_function ')'
    468                 { $$ = new CompositeExprNode( build_sizeOf( new TypeValueNode( $3 ) ) ); }
     461                { $$ = new ExpressionNode( build_sizeOftype( $3 ) ); }
     462        | ALIGNOF unary_expression                                                      // GCC, variable alignment
     463                { $$ = new ExpressionNode( build_alignOfexpr( $2 ) ); }
     464        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
     465                { $$ = new ExpressionNode( build_alignOftype( $3 ) ); }
    469466        | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')'
    470                 { $$ = new CompositeExprNode( build_offsetOf( new TypeValueNode( $3 ), new VarRefNode( $5 ) ) ); }
     467                { $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) ); }
    471468        | ATTR_IDENTIFIER
    472                 { $$ = new CompositeExprNode( build_attr( new VarRefNode( $1 ) ) ); }
     469                { $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), nullptr ) ); }
     470        | ATTR_IDENTIFIER '(' argument_expression ')'
     471                { $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), $3 ) ); }
    473472        | ATTR_IDENTIFIER '(' type_name ')'
    474                 { $$ = new CompositeExprNode( build_attr( new VarRefNode( $1 ), new TypeValueNode( $3 ) ) ); }
    475         | ATTR_IDENTIFIER '(' argument_expression ')'
    476                 { $$ = new CompositeExprNode( build_attr( new VarRefNode( $1 ), $3 ) ); }
    477         | ALIGNOF unary_expression                                                      // GCC, variable alignment
    478                 { $$ = new CompositeExprNode( build_alignOf( $2 ) ); }
    479         | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    480                 { $$ = new CompositeExprNode( build_alignOf( new TypeValueNode( $3 ) ) ); }
     473                { $$ = new ExpressionNode( build_attrtype( build_varref( $1 ), $3 ) ); }
    481474//      | ANDAND IDENTIFIER                                                                     // GCC, address of label
    482 //              { $$ = new CompositeExprNode( new OperatorNode( OperKinds::LabelAddress ), new VarRefNode( $2, true ) ); }
     475//              { $$ = new ExpressionNode( new OperatorNode( OperKinds::LabelAddress ), new ExpressionNode( build_varref( $2, true ) ); }
    483476        ;
    484477
     
    500493        unary_expression
    501494        | '(' type_name_no_function ')' cast_expression
    502                 { $$ = new CompositeExprNode( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     495                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    503496        | '(' type_name_no_function ')' tuple
    504                 { $$ = new CompositeExprNode( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     497                { $$ = new ExpressionNode( build_cast( $2, $4 ) ); }
    505498        ;
    506499
     
    508501        cast_expression
    509502        | multiplicative_expression '*' cast_expression
    510                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); }
     503                { $$ = new ExpressionNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); }
    511504        | multiplicative_expression '/' cast_expression
    512                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Div, $1, $3 ) ); }
     505                { $$ = new ExpressionNode( build_binary_val( OperKinds::Div, $1, $3 ) ); }
    513506        | multiplicative_expression '%' cast_expression
    514                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); }
     507                { $$ = new ExpressionNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); }
    515508        ;
    516509
     
    518511        multiplicative_expression
    519512        | additive_expression '+' multiplicative_expression
    520                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Plus, $1, $3 ) ); }
     513                { $$ = new ExpressionNode( build_binary_val( OperKinds::Plus, $1, $3 ) ); }
    521514        | additive_expression '-' multiplicative_expression
    522                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Minus, $1, $3 ) ); }
     515                { $$ = new ExpressionNode( build_binary_val( OperKinds::Minus, $1, $3 ) ); }
    523516        ;
    524517
     
    526519        additive_expression
    527520        | shift_expression LS additive_expression
    528                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::LShift, $1, $3 ) ); }
     521                { $$ = new ExpressionNode( build_binary_val( OperKinds::LShift, $1, $3 ) ); }
    529522        | shift_expression RS additive_expression
    530                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::RShift, $1, $3 ) ); }
     523                { $$ = new ExpressionNode( build_binary_val( OperKinds::RShift, $1, $3 ) ); }
    531524        ;
    532525
     
    534527        shift_expression
    535528        | relational_expression '<' shift_expression
    536                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::LThan, $1, $3 ) ); }
     529                { $$ = new ExpressionNode( build_binary_val( OperKinds::LThan, $1, $3 ) ); }
    537530        | relational_expression '>' shift_expression
    538                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::GThan, $1, $3 ) ); }
     531                { $$ = new ExpressionNode( build_binary_val( OperKinds::GThan, $1, $3 ) ); }
    539532        | relational_expression LE shift_expression
    540                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::LEThan, $1, $3 ) ); }
     533                { $$ = new ExpressionNode( build_binary_val( OperKinds::LEThan, $1, $3 ) ); }
    541534        | relational_expression GE shift_expression
    542                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::GEThan, $1, $3 ) ); }
     535                { $$ = new ExpressionNode( build_binary_val( OperKinds::GEThan, $1, $3 ) ); }
    543536        ;
    544537
     
    546539        relational_expression
    547540        | equality_expression EQ relational_expression
    548                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Eq, $1, $3 ) ); }
     541                { $$ = new ExpressionNode( build_binary_val( OperKinds::Eq, $1, $3 ) ); }
    549542        | equality_expression NE relational_expression
    550                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Neq, $1, $3 ) ); }
     543                { $$ = new ExpressionNode( build_binary_val( OperKinds::Neq, $1, $3 ) ); }
    551544        ;
    552545
     
    554547        equality_expression
    555548        | AND_expression '&' equality_expression
    556                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::BitAnd, $1, $3 ) ); }
     549                { $$ = new ExpressionNode( build_binary_val( OperKinds::BitAnd, $1, $3 ) ); }
    557550        ;
    558551
     
    560553        AND_expression
    561554        | exclusive_OR_expression '^' AND_expression
    562                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Xor, $1, $3 ) ); }
     555                { $$ = new ExpressionNode( build_binary_val( OperKinds::Xor, $1, $3 ) ); }
    563556        ;
    564557
     
    566559        exclusive_OR_expression
    567560        | inclusive_OR_expression '|' exclusive_OR_expression
    568                 { $$ = new CompositeExprNode( build_binary_val( OperKinds::BitOr, $1, $3 ) ); }
     561                { $$ = new ExpressionNode( build_binary_val( OperKinds::BitOr, $1, $3 ) ); }
    569562        ;
    570563
     
    572565        inclusive_OR_expression
    573566        | logical_AND_expression ANDAND inclusive_OR_expression
    574                 { $$ = new CompositeExprNode( build_and_or( $1, $3, true ) ); }
     567                { $$ = new ExpressionNode( build_and_or( $1, $3, true ) ); }
    575568        ;
    576569
     
    578571        logical_AND_expression
    579572        | logical_OR_expression OROR logical_AND_expression
    580                 { $$ = new CompositeExprNode( build_and_or( $1, $3, false ) ); }
     573                { $$ = new ExpressionNode( build_and_or( $1, $3, false ) ); }
    581574        ;
    582575
     
    584577        logical_OR_expression
    585578        | logical_OR_expression '?' comma_expression ':' conditional_expression
    586                 { $$ = new CompositeExprNode( build_cond( $1, $3, $5 ) ); }
     579                { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
    587580                // FIX ME: this hack computes $1 twice
    588581        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    589                 { $$ = new CompositeExprNode( build_cond( $1, $1, $4 ) ); }
     582                { $$ = new ExpressionNode( build_cond( $1, $1, $4 ) ); }
    590583        | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    591                 { $$ = new CompositeExprNode( build_cond( $1, $3, $5 ) ); }
     584                { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); }
    592585        ;
    593586
     
    600593        conditional_expression
    601594        | unary_expression assignment_operator assignment_expression
    602                 { $$ = new CompositeExprNode( build_binary_ptr( $2, $1, $3 ) ); }
     595                { $$ = new ExpressionNode( build_binary_ptr( $2, $1, $3 ) ); }
    603596        | tuple assignment_opt                                                          // CFA, tuple expression
    604                 { $$ = ( $2 == 0 ) ? $1 : new CompositeExprNode( build_binary_ptr( OperKinds::Assign, $1, $2 ) ); }
     597                { $$ = ( $2 == 0 ) ? $1 : new ExpressionNode( build_binary_ptr( OperKinds::Assign, $1, $2 ) ); }
    605598        ;
    606599
    607600assignment_expression_opt:
    608601        // empty
    609                 { $$ = new NullExprNode; }
     602                { $$ = nullptr; }
    610603        | assignment_expression
    611604        ;
     
    629622                // comma_expression in new_identifier_parameter_array and new_abstract_array
    630623        '[' ']'
    631                 { $$ = new CompositeExprNode( build_tuple() ); }
     624                { $$ = new ExpressionNode( build_tuple() ); }
    632625        | '[' push assignment_expression pop ']'
    633                 { $$ = new CompositeExprNode( build_tuple( $3 ) ); }
     626                { $$ = new ExpressionNode( build_tuple( $3 ) ); }
    634627        | '[' push ',' tuple_expression_list pop ']'
    635                 { $$ = new CompositeExprNode( build_tuple( (ExpressionNode *)(new NullExprNode)->set_link( $4 ) ) ); }
     628                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( $4 ) ) ); }
    636629        | '[' push assignment_expression ',' tuple_expression_list pop ']'
    637                 { $$ = new CompositeExprNode( build_tuple( (ExpressionNode *)$3->set_link( $5 ) ) ); }
     630                { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)$3->set_last( $5 ) ) ); }
    638631        ;
    639632
     
    641634        assignment_expression_opt
    642635        | tuple_expression_list ',' assignment_expression_opt
    643                 { $$ = (ExpressionNode *)$1->set_link( $3 ); }
     636                { $$ = (ExpressionNode *)$1->set_last( $3 ); }
    644637        ;
    645638
     
    647640        assignment_expression
    648641        | comma_expression ',' assignment_expression
    649                 { $$ = new CompositeExprNode( build_comma( $1, $3 ) ); }
     642                { $$ = new ExpressionNode( build_comma( $1, $3 ) ); }
    650643        ;
    651644
     
    671664                        Token fn;
    672665                        fn.str = new std::string( "^?{}" ); // location undefined
    673                         $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( build_func( new VarRefNode( fn ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ), 0 );
     666                        $$ = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_last( $4 ) ) ) ) );
    674667                }
    675668        ;
     
    685678compound_statement:
    686679        '{' '}'
    687                 { $$ = new CompoundStmtNode( (StatementNode *)0 ); }
     680                { $$ = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    688681        | '{'
    689682                // Two scopes are necessary because the block itself has a scope, but every declaration within the block also
     
    692685          local_label_declaration_opt                                           // GCC, local labels
    693686          block_item_list pop '}'                                                       // C99, intermix declarations and statements
    694                 { $$ = new CompoundStmtNode( $5 ); }
     687                { $$ = new StatementNode( build_compound( $5 ) ); }
    695688        ;
    696689
     
    698691        block_item
    699692        | block_item_list push block_item
    700                 { if ( $1 != 0 ) { $1->set_link( $3 ); $$ = $1; } }
     693                { if ( $1 != 0 ) { $1->set_last( $3 ); $$ = $1; } }
    701694        ;
    702695
     
    706699        | EXTENSION declaration                                                         // GCC
    707700                {       // mark all fields in list
    708                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     701                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    709702                                iter->set_extension( true );
    710703                        $$ = new StatementNode( $2 );
     
    718711        statement
    719712        | statement_list statement
    720                 { if ( $1 != 0 ) { $1->set_link( $2 ); $$ = $1; } }
     713                { if ( $1 != 0 ) { $1->set_last( $2 ); $$ = $1; } }
    721714        ;
    722715
    723716expression_statement:
    724717        comma_expression_opt ';'
    725                 { $$ = new StatementNode( StatementNode::Exp, $1, 0 ); }
     718                { $$ = new StatementNode( build_expr( $1 ) ); }
    726719        ;
    727720
     
    729722        IF '(' comma_expression ')' statement                           %prec THEN
    730723                // explicitly deal with the shift/reduce conflict on if/else
    731                 { $$ = new StatementNode( StatementNode::If, $3, $5 ); }
     724                { $$ = new StatementNode( build_if( $3, $5, nullptr ) ); }
    732725        | IF '(' comma_expression ')' statement ELSE statement
    733                 { $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); }
     726                { $$ = new StatementNode( build_if( $3, $5, $7 ) ); }
    734727        | SWITCH '(' comma_expression ')' case_clause           // CFA
    735                 { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
     728                { $$ = new StatementNode( build_switch( $3, $5 ) ); }
    736729        | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
    737730                {
    738                         StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
     731                        StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
    739732                        // The semantics of the declaration list is changed to include associated initialization, which is performed
    740733                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     
    742735                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    743736                        // statement.
    744                         $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
     737                        $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    745738                }
    746739        | CHOOSE '(' comma_expression ')' case_clause           // CFA
    747                 { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
     740                { $$ = new StatementNode( build_switch( $3, $5 ) ); }
    748741        | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
    749742                {
    750                         StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
    751                         $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
     743                        StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
     744                        $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    752745                }
    753746        ;
     
    759752        constant_expression                                                     { $$ = $1; }
    760753        | constant_expression ELLIPSIS constant_expression      // GCC, subrange
    761                 { $$ = new CompositeExprNode( build_range( $1, $3 ) ); }
     754                { $$ = new ExpressionNode( build_range( $1, $3 ) ); }
    762755        | subrange                                                                                      // CFA, subrange
    763756        ;
    764757
    765758case_value_list:                                                                                // CFA
    766         case_value                                                                      { $$ = new StatementNode( StatementNode::Case, $1, 0 ); }
     759        case_value                                                                      { $$ = new StatementNode( build_case( $1 ) ); }
    767760                // convert case list, e.g., "case 1, 3, 5:" into "case 1: case 3: case 5"
    768         | case_value_list ',' case_value                        { $$ = (StatementNode *)($1->set_link( new StatementNode( StatementNode::Case, $3, 0 ) ) ); }
     761        | case_value_list ',' case_value                        { $$ = (StatementNode *)($1->set_last( new StatementNode( build_case( $3 ) ) ) ); }
    769762        ;
    770763
    771764case_label:                                                                                             // CFA
    772765        CASE case_value_list ':'                                        { $$ = $2; }
    773         | DEFAULT ':'                                                           { $$ = new StatementNode( StatementNode::Default ); }
     766        | DEFAULT ':'                                                           { $$ = new StatementNode( build_default() ); }
    774767                // A semantic check is required to ensure only one default clause per switch/choose statement.
    775768        ;
     
    777770case_label_list:                                                                                // CFA
    778771        case_label
    779         | case_label_list case_label                            { $$ = (StatementNode *)( $1->set_link( $2 )); }
     772        | case_label_list case_label                            { $$ = (StatementNode *)( $1->set_last( $2 )); }
    780773        ;
    781774
    782775case_clause:                                                                                    // CFA
    783         case_label_list statement                                       { $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
     776        case_label_list statement                                       { $$ = $1->append_last_case( new StatementNode( build_compound( $2 ) ) ); }
    784777        ;
    785778
     
    792785switch_clause_list:                                                                             // CFA
    793786        case_label_list statement_list
    794                 { $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
     787                { $$ = $1->append_last_case( new StatementNode( build_compound( $2 ) ) ); }
    795788        | switch_clause_list case_label_list statement_list
    796                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( $3 ) ) ) ); }
     789                { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( $3 ) ) ) ) ); }
    797790        ;
    798791
     
    807800                { $$ = $1->append_last_case( $2 ); }
    808801        | case_label_list statement_list fall_through_opt
    809                 { $$ = $1->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$2, *$3 ) ) ) ); }
     802                { $$ = $1->append_last_case( new StatementNode( build_compound( (StatementNode *)$2->set_last( $3 ) ) ) ); }
    810803        | choose_clause_list case_label_list fall_through
    811                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
     804                { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( $3 ))); }
    812805        | choose_clause_list case_label_list statement_list fall_through_opt
    813                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$3, *$4 ) ) ) ) ) ); }
     806                { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( (StatementNode *)$3->set_last( $4 ) ) ) ) ) ); }
    814807        ;
    815808
    816809fall_through_opt:                                                                               // CFA
    817810        // empty
    818                 { $$ = new StatementNode( StatementNode::Break ); }     // insert implicit break
     811                { $$ = new StatementNode( build_branch( "", BranchStmt::Break ) ); } // insert implicit break
    819812        | fall_through
    820813        ;
     
    829822iteration_statement:
    830823        WHILE '(' comma_expression ')' statement
    831                 { $$ = new StatementNode( StatementNode::While, $3, $5 ); }
     824                { $$ = new StatementNode( build_while( $3, $5 ) ); }
    832825        | DO statement WHILE '(' comma_expression ')' ';'
    833                 { $$ = new StatementNode( StatementNode::Do, $5, $2 ); }
     826                { $$ = new StatementNode( build_while( $5, $2 ) ); }
    834827        | FOR '(' push for_control_expression ')' statement
    835                 { $$ = new StatementNode( StatementNode::For, $4, $6 ); }
     828                { $$ = new StatementNode( build_for( $4, $6 ) ); }
    836829        ;
    837830
    838831for_control_expression:
    839832        comma_expression_opt pop ';' comma_expression_opt ';' comma_expression_opt
    840                 { $$ = new ForCtlExprNode( $1, $4, $6 ); }
     833                { $$ = new ForCtl( $1, $4, $6 ); }
    841834        | declaration comma_expression_opt ';' comma_expression_opt // C99
    842                 { $$ = new ForCtlExprNode( $1, $2, $4 ); }
    843         ;
     835                { $$ = new ForCtl( $1, $2, $4 ); }
     836        ;
    844837
    845838jump_statement:
    846839        GOTO IDENTIFIER ';'
    847                 { $$ = new StatementNode( StatementNode::Goto, $2 ); }
     840                { $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Goto ) ); }
    848841        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
    849842                // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3);
    850843                // whereas normal operator precedence yields goto (*i)+3;
    851                 { $$ = new StatementNode( StatementNode::Goto, $3 ); }
     844                { $$ = new StatementNode( build_computedgoto( $3 ) ); }
    852845        | CONTINUE ';'
    853846                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    854                 { $$ = new StatementNode( StatementNode::Continue ); }
     847                { $$ = new StatementNode( build_branch( "", BranchStmt::Continue ) ); }
    855848        | CONTINUE IDENTIFIER ';'                                                       // CFA, multi-level continue
    856849                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    857850                // the target of the transfer appears only at the start of an iteration statement.
    858                 { $$ = new StatementNode( StatementNode::Continue, $2 ); }
     851                { $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Continue ) ); }
    859852        | BREAK ';'
    860853                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    861                 { $$ = new StatementNode( StatementNode::Break ); }
     854                { $$ = new StatementNode( build_branch( "", BranchStmt::Break ) ); }
    862855        | BREAK IDENTIFIER ';'                                                          // CFA, multi-level exit
    863856                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    864857                // the target of the transfer appears only at the start of an iteration statement.
    865                 { $$ = new StatementNode( StatementNode::Break, $2 ); }
     858                { $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Break ) ); }
    866859        | RETURN comma_expression_opt ';'
    867                 { $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
    868         | THROW assignment_expression_opt ';'
    869                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    870 //      | THROW ';'
    871 //              { $$ = new StatementNode( StatementNode::Throw ); }
    872         | THROWRESUME assignment_expression_opt ';'
    873                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    874         | THROWRESUME assignment_expression_opt AT assignment_expression ';'
    875                 { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    876 //      | THROWRESUME ';'
    877 //              { $$ = new StatementNode( StatementNode::Throw ); }
     860                { $$ = new StatementNode( build_return( $2 ) ); }
     861        | THROW assignment_expression_opt ';'                           // handles rethrow
     862                { $$ = new StatementNode( build_throw( $2 ) ); }
     863        | THROWRESUME assignment_expression_opt ';'                     // handles reresume
     864                { $$ = new StatementNode( build_throw( $2 ) ); }
     865        | THROWRESUME assignment_expression_opt AT assignment_expression ';' // handles reresume
     866                { $$ = new StatementNode( build_throw( $2 ) ); }
    878867        ;
    879868
    880869exception_statement:
    881870        TRY compound_statement handler_list
    882                 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
     871                { $$ = new StatementNode( build_try( $2, $3, 0 ) ); }
    883872        | TRY compound_statement finally_clause
    884                 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }
     873                { $$ = new StatementNode( build_try( $2, 0, $3 ) ); }
    885874        | TRY compound_statement handler_list finally_clause
    886                 {
    887                         $3->set_link( $4 );
    888                         $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 ))));
    889                 }
     875                { $$ = new StatementNode( build_try( $2, $3, $4 ) ); }
    890876        ;
    891877
    892878handler_list:
    893                 // There must be at least one catch clause
    894879        handler_clause
    895880                // ISO/IEC 9899:1999 Section 15.3(6 ) If present, a "..." handler shall be the last handler for its try block.
    896881        | CATCH '(' ELLIPSIS ')' compound_statement
    897                 { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
     882                { $$ = new StatementNode( build_catch( 0, $5, true ) ); }
    898883        | handler_clause CATCH '(' ELLIPSIS ')' compound_statement
    899                 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
     884                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( 0, $6, true ) ) ); }
    900885        | CATCHRESUME '(' ELLIPSIS ')' compound_statement
    901                 { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
     886                { $$ = new StatementNode( build_catch( 0, $5, true ) ); }
    902887        | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement
    903                 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
     888                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( 0, $6, true ) ) ); }
    904889        ;
    905890
    906891handler_clause:
    907892        CATCH '(' push push exception_declaration pop ')' compound_statement pop
    908                 { $$ = StatementNode::newCatchStmt( $5, $8 ); }
     893                { $$ = new StatementNode( build_catch( $5, $8 ) ); }
    909894        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
    910                 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
     895        { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
    911896        | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    912                 { $$ = StatementNode::newCatchStmt( $5, $8 ); }
     897                { $$ = new StatementNode( build_catch( $5, $8 ) ); }
    913898        | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    914                 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
     899                { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
    915900        ;
    916901
     
    918903        FINALLY compound_statement
    919904                {
    920                         $$ = new StatementNode( StatementNode::Finally, 0, $2 );
    921                         std::cout << "Just created a finally node" << std::endl;
     905                        $$ = new StatementNode( build_finally( $2 ) );
    922906                }
    923907        ;
     
    947931asm_statement:
    948932        ASM asm_volatile_opt '(' string_literal_list ')' ';'
    949                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, 0 ); }
     933                { $$ = new StatementNode( build_asmstmt( $2, $4, 0 ) ); }
    950934        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ')' ';' // remaining GCC
    951                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6 ); }
     935                { $$ = new StatementNode( build_asmstmt( $2, $4, $6 ) ); }
    952936        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ')' ';'
    953                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8 ); }
     937                { $$ = new StatementNode( build_asmstmt( $2, $4, $6, $8 ) ); }
    954938        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';'
    955                 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10 ); }
     939                { $$ = new StatementNode( build_asmstmt( $2, $4, $6, $8, $10 ) ); }
    956940        | ASM asm_volatile_opt GOTO '(' string_literal_list ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'
    957         { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }
     941                { $$ = new StatementNode( build_asmstmt( $2, $5, 0, $8, $10, $12 ) ); }
    958942        ;
    959943
     
    974958        asm_operand
    975959        | asm_operands_list ',' asm_operand
    976                 { $$ = (ExpressionNode *)$1->set_link( $3 ); }
     960                { $$ = (ExpressionNode *)$1->set_last( $3 ); }
    977961        ;
    978962
    979963asm_operand:                                                                                    // GCC
    980964        string_literal_list '(' constant_expression ')'
    981                 { $$ = new AsmExprNode( 0, $1, $3 ); }
     965                { $$ = new ExpressionNode( build_asmexpr( 0, $1, $3 ) ); }
    982966        | '[' constant_expression ']' string_literal_list '(' constant_expression ')'
    983                 { $$ = new AsmExprNode( $2, $4, $6 ); }
     967        { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); }
    984968        ;
    985969
     
    988972                { $$ = 0; }                                                                             // use default argument
    989973        | string_literal_list
    990                 { $$ = $1; }
     974                { $$ = new ExpressionNode( $1 ); }
    991975        | asm_clobbers_list_opt ',' string_literal_list
    992                 { $$ = (ConstantNode *)$1->set_link( $3 ); }
     976                { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); }
    993977        ;
    994978
    995979label_list:
    996980        no_attr_identifier
    997                 { $$ = new LabelNode(); $$->append_label( $1 ); }
     981                { $$ = new LabelNode(); $$->labels.push_back( assign_strptr($1) ); }
    998982        | label_list ',' no_attr_identifier
    999                 { $$ = $1; $1->append_label( $3 ); }
     983                { $$ = $1; $1->labels.push_back( assign_strptr($3) ); }
    1000984        ;
    1001985
     
    13401324
    13411325storage_class:
    1342         storage_class_name
    1343         ;
    1344 
    1345 storage_class_name:
    13461326        EXTERN
    13471327                { $$ = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     
    15131493        | EXTENSION field_declaring_list ';'                            // GCC
    15141494                {       // mark all fields in list
    1515                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     1495                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    15161496                                iter->set_extension( true );
    15171497                        $$ = $2;
     
    17591739        | initializer
    17601740        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
    1761         | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
     1741        | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_last( $3 ) ); }
    17621742        | initializer_list ',' designation initializer
    1763                 { $$ = (InitializerNode *)( $1->set_link( $4->set_designators( $3 ) ) ); }
     1743                { $$ = (InitializerNode *)( $1->set_last( $4->set_designators( $3 ) ) ); }
    17641744        ;
    17651745
     
    17771757        designator_list ':'                                                                     // C99, CFA uses ":" instead of "="
    17781758        | no_attr_identifier_or_type_name ':'                           // GCC, field name
    1779                 { $$ = new VarRefNode( $1 ); }
     1759                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    17801760        ;
    17811761
     
    17831763        designator
    17841764        | designator_list designator
    1785                 { $$ = (ExpressionNode *)( $1->set_link( $2 )); }
    1786         //| designator_list designator                                          { $$ = new CompositeExprNode( $1, $2 ); }
     1765                { $$ = (ExpressionNode *)( $1->set_last( $2 ) ); }
     1766        //| designator_list designator                                          { $$ = new ExpressionNode( $1, $2 ); }
    17871767        ;
    17881768
    17891769designator:
    1790                 // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 only ".0" and ".1"
    1791                 // allowed => semantic check
    1792         FLOATINGconstant
    1793                 { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
    1794         | '.' no_attr_identifier_or_type_name                           // C99, field name
    1795                 { $$ = new DesignatorNode( new VarRefNode( $2 ) ); }
     1770        '.' no_attr_identifier_or_type_name                                     // C99, field name
     1771                { $$ = new ExpressionNode( build_varref( $2 ) ); }
    17961772        | '[' push assignment_expression pop ']'                        // C99, single array element
    17971773                // assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple.
    1798                 { $$ = new DesignatorNode( $3, true ); }
     1774                { $$ = $3; }
    17991775        | '[' push subrange pop ']'                                                     // CFA, multiple array elements
    1800                 { $$ = new DesignatorNode( $3, true ); }
     1776                { $$ = $3; }
    18011777        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1802                 { $$ = new DesignatorNode( new CompositeExprNode( build_range( $3, $5 ) ), true ); }
     1778                { $$ = new ExpressionNode( build_range( $3, $5 ) ); }
    18031779        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    1804                 { $$ = new DesignatorNode( $4 ); }
     1780                { $$ = $4; }
    18051781        ;
    18061782
     
    18901866type_name_list:                                                                                 // CFA
    18911867        type_name
    1892                 { $$ = new TypeValueNode( $1 ); }
     1868                { $$ = new ExpressionNode( build_typevalue( $1 ) ); }
    18931869        | assignment_expression
    18941870        | type_name_list ',' type_name
    1895                 { $$ = (ExpressionNode *)( $1->set_link( new TypeValueNode( $3 ))); }
     1871                { $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( build_typevalue( $3 ) ) ) ); }
    18961872        | type_name_list ',' assignment_expression
    1897                 { $$ = (ExpressionNode *)( $1->set_link( $3 )); }
     1873                { $$ = (ExpressionNode *)( $1->set_last( $3 )); }
    18981874        ;
    18991875
     
    19941970                {}                                                                                              // empty input file
    19951971        | external_definition_list
    1996                 {
    1997                         if ( theTree ) {
    1998                                 theTree->appendList( $1 );
    1999                         } else {
    2000                                 theTree = $1;
    2001                         }
    2002                 }
     1972                { parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;  }
    20031973        ;
    20041974
     
    20061976        external_definition
    20071977        | external_definition_list push external_definition
    2008                 { $$ = ( $1 != NULL ) ? $1->appendList( $3 ) : $3; }
     1978                { $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
    20091979        ;
    20101980
     
    20221992        | EXTERN STRINGliteral
    20231993                {
    2024                         linkageStack.push( linkage );
    2025                         linkage = LinkageSpec::fromString( *$2 );
     1994                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     1995                        linkage = LinkageSpec::fromString( assign_strptr($2) );
    20261996                }
    20271997          '{' external_definition_list_opt '}'                          // C++-style linkage specifier
     
    20332003        | EXTENSION external_definition
    20342004                {       // mark all fields in list
    2035                         for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     2005                        for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
    20362006                                iter->set_extension( true );
    20372007                        $$ = $2;
     
    21292099subrange:
    21302100        constant_expression '~' constant_expression                     // CFA, integer subrange
    2131                 { $$ = new CompositeExprNode( build_range( $1, $3 ) ); }
     2101                { $$ = new ExpressionNode( build_range( $1, $3 ) ); }
    21322102        ;
    21332103
     
    21682138any_word:                                                                                               // GCC
    21692139        identifier_or_type_name {}
    2170         | storage_class_name {}
     2140        | storage_class {}
    21712141        | basic_type_name {}
    21722142        | type_qualifier {}
     
    28682838// ----end of grammar----
    28692839
     2840extern char *yytext;
     2841
    28702842void yyerror( const char * ) {
    28712843        std::cout << "Error ";
  • src/Parser/parseutility.cc

    r03da511 r04cdd9b  
    1010// Created On       : Sat May 16 15:30:39 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 15:31:33 2015
    13 // Update Count     : 2
     12// Last Modified On : Sun Aug 14 23:45:03 2016
     13// Update Count     : 3
    1414//
    1515
     
    1717#include "SynTree/Type.h"
    1818#include "SynTree/Expression.h"
     19
     20// rewrite
     21//    if ( x ) ...
     22// as
     23//    if ( (int)(x != 0) ) ...
    1924
    2025Expression *notZeroExpr( Expression *orig ) {
  • src/SymTab/Autogen.cc

    r03da511 r04cdd9b  
    174174
    175175        void makeStructMemberOp( ObjectDecl * dstParam, Expression * src, DeclarationWithType * field, FunctionDecl * func, TypeSubstitution & genericSubs, bool isDynamicLayout, bool forward = true ) {
    176                 if ( isDynamicLayout && src ) {
    177                         genericSubs.apply( src );
    178                 }
     176//              if ( isDynamicLayout && src ) {
     177//                      genericSubs.apply( src );
     178//              }
    179179
    180180                ObjectDecl * returnVal = NULL;
  • src/SynTree/Declaration.cc

    r03da511 r04cdd9b  
    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 : Wed Dec 09 14:08:29 2015
    13 // Update Count     : 12
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug 18 23:49:57 2016
     13// Update Count     : 13
    1414//
    1515
     
    2727static IdMapType idMap;
    2828
    29 Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
     29Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage )
    3030                : name( name ), storageClass( sc ), linkage( linkage ), isInline( false ), isNoreturn( false ), uniqueId( 0 ) {
    3131}
  • src/SynTree/Declaration.h

    r03da511 r04cdd9b  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 21:03:17 2016
    13 // Update Count     : 39
     12// Last Modified On : Thu Aug 18 23:50:24 2016
     13// Update Count     : 40
    1414//
    1515
     
    2626class Declaration {
    2727  public:
    28         Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
     28        Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage );
    2929        Declaration( const Declaration &other );
    3030        virtual ~Declaration();
     
    3434        DeclarationNode::StorageClass get_storageClass() const { return storageClass; }
    3535        void set_storageClass( DeclarationNode::StorageClass newValue ) { storageClass = newValue; }
    36         LinkageSpec::Type get_linkage() const { return linkage; }
    37         void set_linkage( LinkageSpec::Type newValue ) { linkage = newValue; }
     36        LinkageSpec::Spec get_linkage() const { return linkage; }
     37        void set_linkage( LinkageSpec::Spec newValue ) { linkage = newValue; }
    3838        bool get_isInline() const { return isInline; }
    3939        void set_isInline( bool newValue ) { isInline = newValue; }
     
    5656        std::string name;
    5757        DeclarationNode::StorageClass storageClass;
    58         LinkageSpec::Type linkage;
     58        LinkageSpec::Spec linkage;
    5959        bool isInline, isNoreturn;
    6060        UniqueId uniqueId;
     
    6464class DeclarationWithType : public Declaration {
    6565  public:
    66         DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, const std::list< Attribute * > & attributes );
     66        DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes );
    6767        DeclarationWithType( const DeclarationWithType &other );
    6868        virtual ~DeclarationWithType();
     
    9797        typedef DeclarationWithType Parent;
    9898  public:
    99         ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes = std::list< Attribute * >(), bool isInline = false, bool isNoreturn = false );
     99        ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes = std::list< Attribute * >(), bool isInline = false, bool isNoreturn = false );
    100100        ObjectDecl( const ObjectDecl &other );
    101101        virtual ~ObjectDecl();
     
    123123        typedef DeclarationWithType Parent;
    124124  public:
    125         FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, const std::list< Attribute * > attributes = std::list< Attribute * >() );
     125        FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, const std::list< Attribute * > attributes = std::list< Attribute * >() );
    126126        FunctionDecl( const FunctionDecl &other );
    127127        virtual ~FunctionDecl();
  • src/SynTree/DeclarationWithType.cc

    r03da511 r04cdd9b  
    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 : Mon Apr 11 15:35:27 2016
    13 // Update Count     : 3
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug 18 23:50:41 2016
     13// Update Count     : 4
    1414//
    1515
     
    1919#include "Common/utility.h"
    2020
    21 DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, const std::list< Attribute * > & attributes )
     21DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes )
    2222                : Declaration( name, sc, linkage ), attributes( attributes ) {
    2323}
  • src/SynTree/Expression.cc

    r03da511 r04cdd9b  
    383383                Expression( _aname ), function(_function), args(_args) {}
    384384
    385 UntypedExpr::~UntypedExpr() {}
     385UntypedExpr::~UntypedExpr() {
     386        delete function;
     387}
    386388
    387389void UntypedExpr::print( std::ostream &os, int indent ) const {
  • src/SynTree/FunctionDecl.cc

    r03da511 r04cdd9b  
    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 : Fri May 06 15:59:48 2016
    13 // Update Count     : 19
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug 18 23:50:14 2016
     13// Update Count     : 20
    1414//
    1515
     
    2222#include "Common/utility.h"
    2323
    24 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes )
     24FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes )
    2525                : Parent( name, sc, linkage, attributes ), type( type ), statements( statements ) {
    2626        set_isInline( isInline );
  • src/SynTree/Label.h

    r03da511 r04cdd9b  
    99// Author           : Rob Schluntz
    1010// Created On       : Wed Jun 8 12:53:12 2016
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 8 12:53:28 2016
    13 // Update Count     : 1
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Aug  7 14:44:29 2016
     13// Update Count     : 2
    1414//
    1515
  • src/SynTree/ObjectDecl.cc

    r03da511 r04cdd9b  
    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 : Fri May 13 13:23:32 2016
    13 // Update Count     : 30
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug 18 23:50:33 2016
     13// Update Count     : 31
    1414//
    1515
     
    2222#include "Statement.h"
    2323
    24 ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, bool isInline, bool isNoreturn )
     24ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, bool isInline, bool isNoreturn )
    2525        : Parent( name, sc, linkage, attributes ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
    2626        set_isInline( isInline );
  • src/SynTree/Statement.cc

    r03da511 r04cdd9b  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 11:25:20 2016
    13 // Update Count     : 61
     12// Last Modified On : Fri Aug 12 13:58:48 2016
     13// Update Count     : 62
    1414//
    1515
     
    124124        Statement( other ), condition( maybeClone( other.condition ) ), thenPart( maybeClone( other.thenPart ) ), elsePart( maybeClone( other.elsePart ) ) {}
    125125
    126 IfStmt::~IfStmt() {}
     126IfStmt::~IfStmt() {
     127        delete condition;
     128        delete thenPart;
     129        delete elsePart;
     130}
    127131
    128132void IfStmt::print( std::ostream &os, int indent ) const {
     
    309313}
    310314
    311 CatchStmt::CatchStmt( std::list<Label> labels, Declaration *_decl, Statement *_body, bool isCatchRest ) :
    312         Statement( labels ), decl ( _decl ), body( _body ), catchRest ( isCatchRest ) {
     315CatchStmt::CatchStmt( std::list<Label> labels, Declaration *_decl, Statement *_body, bool catchAny ) :
     316        Statement( labels ), decl ( _decl ), body( _body ), catchRest ( catchAny ) {
    313317}
    314318
  • src/SynTree/Statement.h

    r03da511 r04cdd9b  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 11:26:02 2016
    13 // Update Count     : 64
     12// Last Modified On : Fri Aug 12 13:57:46 2016
     13// Update Count     : 65
    1414//
    1515
     
    314314class CatchStmt : public Statement {
    315315  public:
    316         CatchStmt( std::list<Label> labels, Declaration *decl, Statement *body, bool isCatchRest = false );
     316        CatchStmt( std::list<Label> labels, Declaration *decl, Statement *body, bool catchAny = false );
    317317        CatchStmt( const CatchStmt &other );
    318318        virtual ~CatchStmt();
  • src/examples/gc_no_raii/premake4.lua

    r03da511 r04cdd9b  
    66        "src/",
    77        "../",
     8        "containers/"
    89}
    910
     
    4849                linkoptions (linkOptionList)
    4950                includedirs (includeDirList)
    50                 files { "src/**.c" }
     51                files { "src/**.c", "containers/**.c" }
    5152
    5253        configuration "debug"
  • src/examples/gc_no_raii/src/gc.h

    r03da511 r04cdd9b  
    44#include "internal/collector.h"
    55
     6// forall(otype T)
     7// static inline gcpointer(T) gcmalloc()
     8// {
     9//     gcpointer(T) ptr = { gc_allocate(sizeof(T)) };
     10//     ptr{};
     11//     gc_conditional_collect();
     12//     return ptr;
     13// }
     14
    615forall(otype T)
    7 static inline gcpointer(T) gcmalloc()
     16static inline void gcmalloc(gcpointer(T)* ptr)
    817{
    9     gcpointer(T) ptr;
    10     void* address = gc_allocate(sizeof(T));
    11     (&ptr){ address };
    12     ctor(&ptr, address);
    13     gc_conditional_collect();
    14     return ptr;
     18        ptr { gc_allocate(sizeof(T)) };
     19        get(ptr) {};
     20      gc_conditional_collect();
    1521}
  • src/examples/gc_no_raii/src/gcpointers.c

    r03da511 r04cdd9b  
    4242}
    4343
    44 void gcpointer_ctor(gcpointer_t* this)
     44void ?{}(gcpointer_t* this)
    4545{
    4646        this->ptr = (intptr_t)NULL;
     
    4848}
    4949
    50 void gcpointer_ctor(gcpointer_t* this, void* address)
     50void ?{}(gcpointer_t* this, void* address)
    5151{
    5252        this->ptr = (intptr_t)address;
     
    5656}
    5757
    58 void gcpointer_ctor(gcpointer_t* this, gcpointer_t* other)
     58void ?{}(gcpointer_t* this, gcpointer_t other)
    5959{
    60         this->ptr = other->ptr;
     60        this->ptr = other.ptr;
    6161        this->next = NULL;
    6262
     
    6464}
    6565
    66 void gcpointer_dtor(gcpointer_t* this)
     66void ^?{}(gcpointer_t* this)
    6767{
    6868        unregister_ptr(this);
     
    9898        return this->ptr == (intptr_t)NULL;
    9999}
     100
     101forall(otype T) void ?{}(gcpointer(T)* this) {
     102        (&this->internal) {};
     103}
     104
     105forall(otype T) void ?{}(gcpointer(T)* this, void* address) {
     106        (&this->internal) { address };
     107}
     108
     109forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T)* other) {
     110        (&this->internal) { other->internal };
     111}
     112
     113forall(otype T) void ^?{}(gcpointer(T)* this) {
     114        ^?{}(&this->internal);
     115}
     116
     117// forall(otype T) gcpointer(T) ?=?(gcpointer(T) this, gcpointer(T) rhs);
     118//
     119// forall(otype T) T *?(gcpointer(T) this);
     120
     121forall(otype T) T* get(gcpointer(T)* this) {
     122        return (T*)this->internal.ptr;
     123}
     124//
     125// //Logical operators
     126// forall(otype T) int ?!=?(gcpointer(T) this, gcpointer(T) rhs);
     127// forall(otype T) int ?==?(gcpointer(T) this, gcpointer(T) rhs);
  • src/examples/gc_no_raii/src/gcpointers.h

    r03da511 r04cdd9b  
    3030forall(otype T) void ?{}(gcpointer(T)* this);
    3131forall(otype T) void ?{}(gcpointer(T)* this, void* address);
    32 forall(otype T) void ctor(gcpointer(T)* this, void* address);
    3332forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T)* other);
    3433forall(otype T) void ^?{}(gcpointer(T)* this);
     
    3736
    3837forall(otype T) T *?(gcpointer(T) this);
     38forall(otype T) T* get(gcpointer(T)* this);
    3939
    4040//Logical operators
  • src/examples/gc_no_raii/src/internal/collector.c

    r03da511 r04cdd9b  
    88}
    99#endif
     10
     11#include <fstream>
    1012
    1113#include "state.h"
     
    3638void* gc_allocate(size_t target_size)
    3739{
     40        sout | "Allocating " | target_size | " bytes" | endl;
     41
    3842        size_t size = gc_compute_size(target_size + sizeof(gc_object_header));
     43
     44        sout | "Object header size: " | sizeof(gc_object_header) | " bytes" | endl;
     45        sout | "Actual allocation size: " | size | " bytes" | endl;
    3946
    4047        check(size < POOL_SIZE_BYTES);
  • src/examples/gc_no_raii/src/internal/state.h

    r03da511 r04cdd9b  
    99}
    1010#endif
     11#include <fstream>
    1112#include <vector>
    1213
     
    3738static inline bool gc_needs_collect(gc_state* state)
    3839{
     40        sout | "Used Space: " | state->used_space | " bytes" | endl;
    3941        return state->used_space * 2 > state->total_space;
    4042}
  • src/examples/gc_no_raii/test/gctest.c

    r03da511 r04cdd9b  
    22
    33#include "gc.h"
     4#include "internal/collector.h"
    45
    56#warning default test
     
    89        sout | "Bonjour au monde!\n";
    910
    10         gcpointer(int) anInt = gcmalloc();
     11        gcpointer(int) theInt;
     12        gcmalloc(&theInt);
     13
     14        for(int i = 0; i < 10; i++) {
     15                int a;
     16                {
     17                        gcpointer(int) anInt;
     18                        gcmalloc(&anInt);
     19                }
     20                int p;
     21        }
     22
     23        gc_collect(gc_get_state());
     24        gc_conditional_collect();
    1125}
  • src/libcfa/Makefile.am

    r03da511 r04cdd9b  
    1111## Created On       : Sun May 31 08:54:01 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Aug  6 16:15:15 2016
    14 ## Update Count     : 197
     13## Last Modified On : Thu Aug 11 15:36:32 2016
     14## Update Count     : 198
    1515###############################################################################
    1616
     
    5656CC = ${abs_top_srcdir}/src/driver/cfa
    5757
    58 headers = limits stdlib math iostream fstream iterator rational containers/vector
     58headers = limits stdlib math iostream fstream iterator rational # containers/vector
    5959libobjs = ${headers:=.o}
    6060
  • src/libcfa/Makefile.in

    r03da511 r04cdd9b  
    8989libcfa_a_AR = $(AR) $(ARFLAGS)
    9090libcfa_a_LIBADD =
    91 am__dirstamp = $(am__leading_dot)dirstamp
    9291am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
    9392        iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
    94         rational.$(OBJEXT) containers/vector.$(OBJEXT)
     93        rational.$(OBJEXT)
    9594am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
    9695libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
     
    234233cfalib_DATA = builtins.cf extras.cf prelude.cf
    235234MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
    236 headers = limits stdlib math iostream fstream iterator rational containers/vector
     235headers = limits stdlib math iostream fstream iterator rational # containers/vector
    237236libobjs = ${headers:=.o}
    238237libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
     
    304303clean-libLIBRARIES:
    305304        -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
    306 containers/$(am__dirstamp):
    307         @$(MKDIR_P) containers
    308         @: > containers/$(am__dirstamp)
    309 containers/$(DEPDIR)/$(am__dirstamp):
    310         @$(MKDIR_P) containers/$(DEPDIR)
    311         @: > containers/$(DEPDIR)/$(am__dirstamp)
    312 containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
    313         containers/$(DEPDIR)/$(am__dirstamp)
    314305libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES)
    315306        $(AM_V_at)-rm -f libcfa.a
     
    319310mostlyclean-compile:
    320311        -rm -f *.$(OBJEXT)
    321         -rm -f containers/vector.$(OBJEXT)
    322312
    323313distclean-compile:
     
    332322@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@
    333323@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@
    334 @AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/vector.Po@am__quote@
    335324
    336325.c.o:
     
    505494        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
    506495        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
    507         -rm -f containers/$(DEPDIR)/$(am__dirstamp)
    508         -rm -f containers/$(am__dirstamp)
    509496
    510497maintainer-clean-generic:
     
    517504
    518505distclean: distclean-am
    519         -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
     506        -rm -rf ./$(DEPDIR)
    520507        -rm -f Makefile
    521508distclean-am: clean-am distclean-compile distclean-generic \
     
    563550
    564551maintainer-clean: maintainer-clean-am
    565         -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
     552        -rm -rf ./$(DEPDIR)
    566553        -rm -f Makefile
    567554maintainer-clean-am: distclean-am maintainer-clean-generic \
  • src/main.cc

    r03da511 r04cdd9b  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug  6 16:17:41 2016
    13 // Update Count     : 210
     12// Last Modified On : Fri Aug 19 08:31:22 2016
     13// Update Count     : 350
    1414//
    1515
    1616#include <iostream>
    1717#include <fstream>
    18 #include <cstdlib>
    19 #include <cstdio>
    2018#include <getopt.h>
    21 #include "Parser/Parser.h"
    22 #include "Parser/ParseNode.h"
    23 #include "Parser/LinkageSpec.h"
    24 #include "SynTree/Declaration.h"
    25 #include "SynTree/Visitor.h"
     19#include "Parser/lex.h"
     20#include "Parser/parser.h"
     21#include "Parser/TypedefTable.h"
    2622#include "GenPoly/Lvalue.h"
    2723#include "GenPoly/Specialize.h"
     
    3228#include "CodeGen/FixNames.h"
    3329#include "ControlStruct/Mutate.h"
    34 #include "Tuples/Mutate.h"
    35 #include "Tuples/FunctionChecker.h"
    36 #include "SymTab/Mangler.h"
    37 #include "SymTab/Indexer.h"
    3830#include "SymTab/Validate.h"
    3931#include "ResolvExpr/AlternativePrinter.h"
    4032#include "ResolvExpr/Resolver.h"
    4133#include "MakeLibCfa.h"
    42 #include "InitTweak/Mutate.h"
    4334#include "InitTweak/GenInit.h"
    4435#include "InitTweak/FixInit.h"
    45 //#include "Explain/GenProlog.h"
    46 //#include "Try/Visit.h"
    47 
    48 #include "Common/SemanticError.h"
    4936#include "Common/UnimplementedError.h"
    5037
     
    5340using namespace std;
    5441
    55 #define OPTPRINT(x) \
    56         if ( errorp ) std::cerr << x << std::endl;
    57 
    58 static void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
    59 static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout );
    60 
     42#define OPTPRINT(x) if ( errorp ) std::cerr << x << std::endl;
     43
     44
     45LinkageSpec::Spec linkage = LinkageSpec::Cforall;
     46TypedefTable typedefTable;
     47DeclarationNode * parseTree = nullptr;                                  // program parse tree
     48
     49extern int yydebug;                                                                             // set for -g flag (Grammar)
    6150bool
    6251        astp = false,
     
    6655        exprp = false,
    6756        expraltp = false,
    68         grammarp = false,
    6957        libcfap = false,
    7058        nopreludep = false,
     
    7866        codegenp = false;
    7967
    80 enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
    81 
    82 static struct option long_opts[] = {
    83         { "ast", no_argument, 0, Ast },
    84         { "before-box", no_argument, 0, Bbox },
    85         { "before-resolver", no_argument, 0, Bresolver },
    86         { "ctorinitfix", no_argument, 0, CtorInitFix },
    87         { "expr", no_argument, 0, Expr },
    88         { "expralt", no_argument, 0, ExprAlt },
    89         { "grammar", no_argument, 0, Grammar },
    90         { "libcfa", no_argument, 0, LibCFA },
    91         { "no-preamble", no_argument, 0, Nopreamble },
    92         { "parse", no_argument, 0, Parse },
    93         { "no-prototypes", no_argument, 0, Prototypes },
    94         { "resolver", no_argument, 0, Resolver },
    95         { "symbol", no_argument, 0, Symbol },
    96         { "tree", no_argument, 0, Tree },
    97         { "validate", no_argument, 0, Validate },
    98         { 0, 0, 0, 0 }
    99 };
    100 
    101 int main( int argc, char *argv[] ) {
    102         FILE *input;
    103         std::ostream *output = &std::cout;
    104         int long_index;
     68static void parse_cmdline( int argc, char *argv[], const char *& filename );
     69static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false );
     70static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout );
     71
     72int main( int argc, char * argv[] ) {
     73        FILE * input;                                                                           // use FILE rather than istream because yyin is FILE
     74        std::ostream *output = & std::cout;
    10575        std::list< Declaration * > translationUnit;
    106         const char *filename = NULL;
    107 
    108         opterr = 0;                                                                                     // prevent getopt from printing error messages
    109 
    110         int c;
    111         while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
    112                 switch ( c ) {
    113                   case Ast:
    114                   case 'a':                                                                             // dump AST
    115                         astp = true;
    116                         break;
    117                   case Bresolver:
    118                   case 'b':                                                                             // print before resolver steps
    119                         bresolvep = true;
    120                         break;
    121                   case 'B':                                                                             // print before resolver steps
    122                         bboxp = true;
    123                         break;
    124                   case CtorInitFix:
    125                   case 'c':
    126                         ctorinitp = true;
    127                         break;
    128                   case Expr:
    129                   case 'e':                                                                             // dump AST after expression analysis
    130                         exprp = true;
    131                         break;
    132                   case ExprAlt:
    133                   case 'f':                                                                             // print alternatives for expressions
    134                         expraltp = true;
    135                         break;
    136                   case Grammar:
    137                   case 'g':                                                                             // bison debugging info (grammar rules)
    138                         grammarp = true;
    139                         break;
    140                   case LibCFA:
    141                   case 'l':                                                                             // generate libcfa.c
    142                         libcfap = true;
    143                         break;
    144                   case Nopreamble:
    145                   case 'n':                                                                             // do not read preamble
    146                         nopreludep = true;
    147                         break;
    148                   case Prototypes:
    149                   case 'p':                                                                             // generate prototypes for preamble functions
    150                         noprotop = true;
    151                         break;
    152                   case Parse:
    153                   case 'q':                                                                             // dump parse tree
    154                         parsep = true;
    155                         break;
    156                   case Resolver:
    157                   case 'r':                                                                             // print resolver steps
    158                         resolvep = true;
    159                         break;
    160                   case Symbol:
    161                   case 's':                                                                             // print symbol table events
    162                         symtabp = true;
    163                         break;
    164                   case Tree:
    165                   case 't':                                                                             // build in tree
    166                         treep = true;
    167                         break;
    168                   case 'v':                                                                             // dump AST after decl validation pass
    169                         validp = true;
    170                         break;
    171                   case 'y':
    172                         errorp = true;
    173                         break;
    174                   case 'z':
    175                         codegenp = true;
    176                         break;
    177                   case 'D':                                                                             // ignore -Dxxx
    178                         break;
    179                   case 'F':                                                                             // source file-name without suffix
    180                         filename = optarg;
    181                         break;
    182                   case '?':
    183                         cout << "Unknown option: '" << (char)optopt << "'" << endl;
    184                         exit( EXIT_FAILURE );
    185                   default:
    186                         abort();
    187                 } // switch
    188         } // while
     76        const char *filename = nullptr;
     77
     78        parse_cmdline( argc, argv, filename );                          // process command-line arguments
    18979
    19080        try {
    19181                // choose to read the program from a file or stdin
    192                 if ( optind < argc ) {
     82                if ( optind < argc ) {                                                  // any commands after the flags ? => input file name
    19383                        input = fopen( argv[ optind ], "r" );
    194                         if ( ! input ) {
    195                                 std::cout << "Error: cannot open " << argv[ optind ] << std::endl;
    196                                 exit( EXIT_FAILURE );
    197                         } // if
     84                        assertf( input, "cannot open %s\n", argv[ optind ] );
    19885                        // if running cfa-cpp directly, might forget to pass -F option (and really shouldn't have to)
    199                         if ( filename == NULL ) filename = argv[ optind ];
     86                        if ( filename == nullptr ) filename = argv[ optind ];
    20087                        // prelude filename comes in differently
    20188                        if ( libcfap ) filename = "prelude.cf";
    20289                        optind += 1;
    203                 } else {
     90                } else {                                                                                // no input file name
    20491                        input = stdin;
    20592                        // if running cfa-cpp directly, might forget to pass -F option. Since this takes from stdin, pass
    20693                        // a fake name along
    207                         if ( filename == NULL ) filename = "stdin";
    208                 } // if
    209 
    210                 if ( optind < argc ) {
     94                        if ( filename == nullptr ) filename = "stdin";
     95                } // if
     96
     97                if ( optind < argc ) {                                                  // any commands after the flags and input file ? => output file name
    21198                        output = new ofstream( argv[ optind ] );
    21299                } // if
    213 
    214                 Parser::get_parser().set_debug( grammarp );
    215100
    216101                // read in the builtins, extras, and the prelude
     
    218103                        // -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here.
    219104                        FILE * builtins = fopen( libcfap | treep ? "builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
    220                         if ( builtins == NULL ) {
    221                                 std::cerr << "Error: cannot open builtins.cf" << std::endl;
    222                                 exit( EXIT_FAILURE );
    223                         } // if
     105                        assertf( builtins, "cannot open builtins.cf\n" );
    224106                        parse( builtins, LinkageSpec::Compiler );
    225107
    226108                        // read the extra prelude in, if not generating the cfa library
    227109                        FILE * extras = fopen( libcfap | treep ? "extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
    228                         if ( extras == NULL ) {
    229                                 std::cerr << "Error: cannot open extras.cf" << std::endl;
    230                                 exit( EXIT_FAILURE );
    231                         } // if
     110                        assertf( extras, "cannot open extras.cf\n" );
    232111                        parse( extras, LinkageSpec::C );
    233112
     
    235114                                // read the prelude in, if not generating the cfa library
    236115                                FILE * prelude = fopen( treep ? "prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
    237                                 if ( prelude == NULL ) {
    238                                         std::cerr << "Error: cannot open prelude.cf" << std::endl;
    239                                         exit( EXIT_FAILURE );
    240                                 } // if
    241 
     116                                assertf( prelude, "cannot open prelude.cf\n" );
    242117                                parse( prelude, LinkageSpec::Intrinsic );
    243118                        } // if
    244119                } // if
    245120
    246                 parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp );
     121                parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, yydebug );
    247122
    248123                if ( parsep ) {
    249                         Parser::get_parser().get_parseTree()->printList( std::cout );
    250                         Parser::get_parser().freeTree();
    251                         return 0;
    252                 } // if
    253 
    254                 buildList( Parser::get_parser().get_parseTree(), translationUnit );
    255 
    256                 Parser::get_parser().freeTree();
     124                        parseTree->printList( std::cout );
     125                        delete parseTree;
     126                        return 0;
     127                } // if
     128
     129                buildList( parseTree, translationUnit );
     130                delete parseTree;
     131                parseTree = nullptr;
     132
    257133                if ( astp ) {
    258134                        dump( translationUnit );
     
    300176                        dump( translationUnit );
    301177                        return 0;
    302                 }
     178                } // if
    303179
    304180                // fix ObjectDecl - replaces ConstructorInit nodes
     
    308184                        dump ( translationUnit );
    309185                        return 0;
    310                 }
     186                } // if
    311187
    312188                OPTPRINT("instantiateGenerics")
     
    322198                        dump( translationUnit );
    323199                        return 0;
    324                 }
     200                } // if
    325201                OPTPRINT( "box" )
    326202                GenPoly::box( translationUnit );
     
    342218                        dump( translationUnit, std::cerr );
    343219                        std::cerr << std::endl << "---End of AST, begin error message:---\n" << std::endl;
    344                 }
     220                } // if
    345221                e.print( std::cerr );
    346222                if ( output != &std::cout ) {
     
    367243} // main
    368244
    369 static void parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) {
    370         Parser::get_parser().set_linkage( linkage );
    371         Parser::get_parser().parse( input );
     245void parse_cmdline( int argc, char * argv[], const char *& filename ) {
     246        enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
     247
     248        static struct option long_opts[] = {
     249                { "ast", no_argument, 0, Ast },
     250                { "before-box", no_argument, 0, Bbox },
     251                { "before-resolver", no_argument, 0, Bresolver },
     252                { "ctorinitfix", no_argument, 0, CtorInitFix },
     253                { "expr", no_argument, 0, Expr },
     254                { "expralt", no_argument, 0, ExprAlt },
     255                { "grammar", no_argument, 0, Grammar },
     256                { "libcfa", no_argument, 0, LibCFA },
     257                { "no-preamble", no_argument, 0, Nopreamble },
     258                { "parse", no_argument, 0, Parse },
     259                { "no-prototypes", no_argument, 0, Prototypes },
     260                { "resolver", no_argument, 0, Resolver },
     261                { "symbol", no_argument, 0, Symbol },
     262                { "tree", no_argument, 0, Tree },
     263                { "validate", no_argument, 0, Validate },
     264                { 0, 0, 0, 0 }
     265        }; // long_opts
     266        int long_index;
     267
     268        opterr = 0;                                                                                     // (global) prevent getopt from printing error messages
     269
     270        int c;
     271        while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
     272                switch ( c ) {
     273                  case Ast:
     274                  case 'a':                                                                             // dump AST
     275                        astp = true;
     276                        break;
     277                  case Bresolver:
     278                  case 'b':                                                                             // print before resolver steps
     279                        bresolvep = true;
     280                        break;
     281                  case 'B':                                                                             // print before resolver steps
     282                        bboxp = true;
     283                        break;
     284                  case CtorInitFix:
     285                  case 'c':
     286                        ctorinitp = true;
     287                        break;
     288                  case Expr:
     289                  case 'e':                                                                             // dump AST after expression analysis
     290                        exprp = true;
     291                        break;
     292                  case ExprAlt:
     293                  case 'f':                                                                             // print alternatives for expressions
     294                        expraltp = true;
     295                        break;
     296                  case Grammar:
     297                  case 'g':                                                                             // bison debugging info (grammar rules)
     298                        yydebug = true;
     299                        break;
     300                  case LibCFA:
     301                  case 'l':                                                                             // generate libcfa.c
     302                        libcfap = true;
     303                        break;
     304                  case Nopreamble:
     305                  case 'n':                                                                             // do not read preamble
     306                        nopreludep = true;
     307                        break;
     308                  case Prototypes:
     309                  case 'p':                                                                             // generate prototypes for preamble functions
     310                        noprotop = true;
     311                        break;
     312                  case Parse:
     313                  case 'q':                                                                             // dump parse tree
     314                        parsep = true;
     315                        break;
     316                  case Resolver:
     317                  case 'r':                                                                             // print resolver steps
     318                        resolvep = true;
     319                        break;
     320                  case Symbol:
     321                  case 's':                                                                             // print symbol table events
     322                        symtabp = true;
     323                        break;
     324                  case Tree:
     325                  case 't':                                                                             // build in tree
     326                        treep = true;
     327                        break;
     328                  case 'v':                                                                             // dump AST after decl validation pass
     329                        validp = true;
     330                        break;
     331                  case 'y':
     332                        errorp = true;
     333                        break;
     334                  case 'z':
     335                        codegenp = true;
     336                        break;
     337                  case 'D':                                                                             // ignore -Dxxx
     338                        break;
     339                  case 'F':                                                                             // source file-name without suffix
     340                        filename = optarg;
     341                        break;
     342                  case '?':
     343                        assertf( false, "Unknown option: '%c'\n", (char)optopt );
     344                  default:
     345                        abort();
     346                } // switch
     347        } // while
     348} // parse_cmdline
     349
     350static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit ) {
     351        extern int yyparse( void );
     352        extern FILE * yyin;
     353        extern int yylineno;
     354
     355        ::linkage = linkage;                                                            // set globals
     356        yyin = input;
     357        yylineno = 1;
     358        typedefTable.enterScope();
     359        int parseStatus = yyparse();
    372360
    373361        fclose( input );
    374         if ( shouldExit || Parser::get_parser().get_parseStatus() != 0 ) {
    375                 exit( Parser::get_parser().get_parseStatus() );
     362        if ( shouldExit || parseStatus != 0 ) {
     363                exit( parseStatus );
    376364        } // if
    377 }
     365} // parse
    378366
    379367static bool notPrelude( Declaration * decl ) {
    380368        return ! LinkageSpec::isBuiltin( decl->get_linkage() );
    381 }
     369} // notPrelude
    382370
    383371static void dump( std::list< Declaration * > & translationUnit, std::ostream & out ) {
    384372        std::list< Declaration * > decls;
     373
    385374        if ( noprotop ) {
    386                 filter( translationUnit.begin(), translationUnit.end(),
    387                                 std::back_inserter( decls ), notPrelude );
     375                filter( translationUnit.begin(), translationUnit.end(), std::back_inserter( decls ), notPrelude );
    388376        } else {
    389377                decls = translationUnit;
    390         }
     378        } // if
    391379
    392380        printAll( decls, out );
    393381        deleteAll( translationUnit );
    394 }
    395 
     382} // dump
    396383
    397384// Local Variables: //
  • src/tests/.expect/32/gccExtensions.txt

    r03da511 r04cdd9b  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
     7extern int __x__i_1;
    78int main(int __argc__i_1, const char **__argv__PPCc_1){
    89    asm ( "nop" :  :  :  );
    910    asm ( "nop" :  :  :  );
    1011    asm ( "nop" :  :  :  );
     12    static int __y__i_2;
     13    static int *__z__Pi_2;
     14    int __src__i_2;
     15    int __dst__i_2;
     16    asm volatile ( "mov %1, %0\n\tadd $1, %0" :  :  :  );
     17    asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) :  :  );
     18    asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) : "r" ( __src__i_2 ) :  );
     19    asm ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ), "=r" ( __src__i_2 ) : [ __src__i_2 ] "r" ( __dst__i_2 ) : "r0" );
     20    L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" :  : "r" ( __src__i_2 ), "r" ( (&__dst__i_2) ) : "r5", "memory" : L1, L2 );
    1121    double _Complex __c1__Xd_2;
    1222    double _Complex __c2__Xd_2;
     
    1424    const int __i2__Ci_2;
    1525    const int __i3__Ci_2;
     26    inline int __f1__Fi___2(){
     27    }
     28    inline int __f2__Fi___2(){
     29    }
     30    int __s1__i_2;
     31    int __s2__i_2;
     32    volatile int __v1__Vi_2;
     33    volatile int __v2__Vi_2;
     34    int __t1___2;
     35    int __t2___2;
    1636    __extension__ const int __ex__Ci_2;
    1737    struct S {
     
    6484    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
    6585    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
    66     inline int __f1__Fi___2(){
    67     }
    68     inline int __f2__Fi___2(){
    69     }
    70     int __s1__i_2;
    71     int __s2__i_2;
    72     int __t1___2;
    73     int __t2___2;
    74     volatile int __v1__Vi_2;
    75     volatile int __v2__Vi_2;
    7686    int __a1__i_2;
    7787    const int __a2__Ci_2;
     
    151161    struct s4 __y2__3ss4_2;
    152162    ((void)___constructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2))));
    153     int __m1__A0i_2[((long unsigned int )10)];
    154     int __m2__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
    155     int __m3__A0A0i_2[((long unsigned int )10)][((long unsigned int )10)];
     163    int __m1__A0i_2[((unsigned int )10)];
     164    int __m2__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
     165    int __m3__A0A0i_2[((unsigned int )10)][((unsigned int )10)];
    156166    int _retVal0 = { 0 };
    157167    ((void)(_retVal0=0) /* ?{} */);
  • src/tests/.expect/64/gccExtensions.txt

    r03da511 r04cdd9b  
    55extern void exit(int __status);
    66extern int printf(const char *__restrict __format, ...);
     7extern int __x__i_1;
    78int main(int __argc__i_1, const char **__argv__PPCc_1){
    89    asm ( "nop" :  :  :  );
    910    asm ( "nop" :  :  :  );
    1011    asm ( "nop" :  :  :  );
     12    static int __y__i_2;
     13    static int *__z__Pi_2;
     14    int __src__i_2;
     15    int __dst__i_2;
     16    asm volatile ( "mov %1, %0\n\tadd $1, %0" :  :  :  );
     17    asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) :  :  );
     18    asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) : "r" ( __src__i_2 ) :  );
     19    asm ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ), "=r" ( __src__i_2 ) : [ __src__i_2 ] "r" ( __dst__i_2 ) : "r0" );
     20    L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" :  : "r" ( __src__i_2 ), "r" ( (&__dst__i_2) ) : "r5", "memory" : L1, L2 );
    1121    double _Complex __c1__Xd_2;
    1222    double _Complex __c2__Xd_2;
     
    1424    const int __i2__Ci_2;
    1525    const int __i3__Ci_2;
     26    inline int __f1__Fi___2(){
     27    }
     28    inline int __f2__Fi___2(){
     29    }
     30    int __s1__i_2;
     31    int __s2__i_2;
     32    volatile int __v1__Vi_2;
     33    volatile int __v2__Vi_2;
     34    int __t1___2;
     35    int __t2___2;
    1636    __extension__ const int __ex__Ci_2;
    1737    struct S {
     
    6484    ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
    6585    ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
    66     inline int __f1__Fi___2(){
    67     }
    68     inline int __f2__Fi___2(){
    69     }
    70     int __s1__i_2;
    71     int __s2__i_2;
    72     int __t1___2;
    73     int __t2___2;
    74     volatile int __v1__Vi_2;
    75     volatile int __v2__Vi_2;
    7686    int __a1__i_2;
    7787    const int __a2__Ci_2;
  • src/tests/.expect/declarationErrors.txt

    r03da511 r04cdd9b  
    11CFA Version 1.0.0 (debug)
    2 Error: invalid combination of storage classes in declaration of x9: static static volatile const short int
     2Error: invalid combination of storage classes in declaration of x9: static volatile const short int
    33
    4 Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous0
     4Error: invalid combination of storage classes in declaration of x18: static const volatile instance of struct __anonymous0
    55  with members
    6     i: int
    76   with body
    87
    98
    10 Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous1
     9Error: invalid combination of storage classes in declaration of x19: static const volatile volatile instance of struct __anonymous1
    1110  with members
    12     i: int
    1311   with body
    1412
    1513
    16 Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
     14Error: invalid combination of storage classes in declaration of x28: static volatile const instance of type Int
    1715
    1816make: *** [declarationErrors] Error 1
  • src/tests/Makefile.am

    r03da511 r04cdd9b  
    1111## Created On       : Sun May 31 09:08:15 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Jul  9 11:23:24 2016
    14 ## Update Count     : 35
     13## Last Modified On : Mon Aug 15 12:24:54 2016
     14## Update Count     : 39
    1515###############################################################################
    1616
     
    2727
    2828all-local :
    29         +python test.py vector_test avl_test operators numericConstants expression enum asmName array typeof cast dtor-early-exit init_once
     29        @+python test.py vector_test avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once
    3030
    3131all-tests :
    32         +python test.py --all
     32        @+python test.py --all          # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    3333
    3434clean-local :
    35         -rm -f ${EXTRA_PROGRAMS}
     35        rm -f ${EXTRA_PROGRAMS}
    3636
    3737list :
    38         +python test.py --list
     38        @+python test.py --list
    3939
    4040constant0-1DP : constant0-1.c
     
    5353        ${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
    5454
     55declarationSpecifier: declarationSpecifier.c
     56        ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
     57
    5558gccExtensions : gccExtensions.c
    5659        ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
  • src/tests/Makefile.in

    r03da511 r04cdd9b  
    635635
    636636all-local :
    637         +python test.py vector_test avl_test operators numericConstants expression enum asmName array typeof cast dtor-early-exit init_once
     637        @+python test.py vector_test avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once
    638638
    639639all-tests :
    640         +python test.py --all
     640        @+python test.py --all          # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    641641
    642642clean-local :
    643         -rm -f ${EXTRA_PROGRAMS}
     643        rm -f ${EXTRA_PROGRAMS}
    644644
    645645list :
    646         +python test.py --list
     646        @+python test.py --list
    647647
    648648constant0-1DP : constant0-1.c
     
    660660dtor-early-exit-ERR2: dtor-early-exit.c
    661661        ${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
     662
     663declarationSpecifier: declarationSpecifier.c
     664        ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
    662665
    663666gccExtensions : gccExtensions.c
  • src/tests/declarationErrors.c

    r03da511 r04cdd9b  
    1 static short int volatile static const x9;              // duplicate static
    2 struct { int i; } const static volatile static x18;     // duplicate static
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// declarationErrors.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Wed Aug 17 08:23:43 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 08:27:15 2016
     13// Update Count     : 2
     14//
     15
     16const short static int volatile x4;
     17const static volatile short int x4;
     18static short int volatile static const x9;                              // duplicate static
     19struct { int i; } const static volatile static x18;             // duplicate static
    320struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
    421typedef int Int;
    5 static Int volatile static const x28;                   // duplicate static
     22static Int volatile static const x28;                                   // duplicate static
     23
     24const static inline const volatile int f01();                   // duplicate const
     25volatile inline const volatile static int f02();                // duplicate volatile
     26const inline const volatile int static f03();                   // duplicate const
     27volatile inline static const volatile int f04();                // duplicate volatile
     28const static const inline volatile int f05();                   // duplicate const
     29volatile static const volatile inline int f06();                // duplicate volatile
     30const static const volatile int inline f07();                   // duplicate const
     31volatile static const int inline volatile f08();                // duplicate volatile
    632
    733//Dummy main
     
    1036        return 0;
    1137}
     38
     39// Local Variables: //
     40// tab-width: 4 //
     41// compile-command: "cfa declarationErrors.c" //
     42// End: //
  • src/tests/declarationSpecifier.c

    r03da511 r04cdd9b  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// declarationSpecifier.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Wed Aug 17 08:21:04 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 08:24:33 2016
     13// Update Count     : 2
     14//
     15
    116typedef short int Int;
    2 
    317
    418const short int volatile x1;
    519static const short int volatile x2;
    620const static short int volatile x3;
    7 const short static int volatile x4;
    821const static volatile short int x4;
    922const short int static volatile x5;
     
    1124const short volatile int static x7;
    1225short int volatile static const x8;
    13 static short int volatile static const x9;              // duplicate static
    1426
    1527const volatile struct { int i; } x10;
     
    2133struct { int i; } const static volatile x16;
    2234struct { int i; } const volatile static x17;
    23 struct { int i; } const static volatile static x18;     // duplicate static
    24 struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
    2535
    2636const Int volatile x20;
     
    3242const volatile Int static x26;
    3343Int volatile static const x27;
    34 static Int volatile static const x28;                   // duplicate static
    3544
    3645const volatile struct { Int i; } x29;
     
    4251struct { Int i; } const static volatile x35;
    4352struct { Int i; } const volatile static x36;
    44 
    45 
    46 const static inline const volatile int f01();           // duplicate const
    47 volatile inline const volatile static int f02();        // duplicate volatile
    48 const inline const volatile int static f03();           // duplicate const
    49 volatile inline static const volatile int f04();        // duplicate volatile
    50 const static const inline volatile int f05();           // duplicate const
    51 volatile static const volatile inline int f06();        // duplicate volatile
    52 const static const volatile int inline f07();           // duplicate const
    53 volatile static const int inline volatile f08();        // duplicate volatile
    5453
    5554static inline const volatile int f11();
     
    9493        return 0;
    9594}
     95
     96// Local Variables: //
     97// tab-width: 4 //
     98// compile-command: "cfa declarationSpecifier.c" //
     99// End: //
  • src/tests/dtor-early-exit.c

    r03da511 r04cdd9b  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// dtor-early-exit.c --
     8//
     9// Author           : Rob Schluntz
     10// Created On       : Wed Aug 17 08:26:25 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 08:29:37 2016
     13// Update Count     : 2
     14//
     15
    116#include <fstream>
    217#include <stdlib>
     
    215230        h();
    216231}
     232
     233// Local Variables: //
     234// tab-width: 4 //
     235// compile-command: "cfa dtor-early-exit" //
     236// End: //
  • src/tests/exception.c

    r03da511 r04cdd9b  
    1111        x/4;
    1212    } catch( int ) {
    13     } catch( int x ) {
     13    } catch( float x ) {
    1414    } catch( struct { int i; } ) {
    1515    } catch( struct { int i; } x ) {
     
    2121    } catch( * struct { int i; } x ) {
    2222    } catch( ... ) {
    23 //    } finally {
     23    } finally {
    2424    } // try
    2525}
  • src/tests/functions.c

    r03da511 r04cdd9b  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// functions.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Wed Aug 17 08:39:58 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 08:40:52 2016
     13// Update Count     : 1
     14//
     15
    116// ANSI function definitions
    217
     
    165180// Local Variables: //
    166181// tab-width: 4 //
     182// compile-command: "cfa functions.c" //
    167183// End: //
  • src/tests/gccExtensions.c

    r03da511 r04cdd9b  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// gccExtensions.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Sun Aug 14 17:28:17 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 09:26:50 2016
     13// Update Count     : 10
     14//
     15
     16extern int x asm( "xx" );
     17
    118int main(int argc, char const *argv[]) {
     19        // asm extensions
     20
    221        asm( "nop" );
    322        __asm( "nop" );
    423        __asm__( "nop" );
     24
     25        static int y asm( "yy" );
     26#ifdef __CFA__
     27        static * int z asm( "zz" );                                                     // CFA declaration
     28#endif // __CFA__
     29
     30        int src;
     31        int dst;
     32
     33        asm volatile ( "mov %1, %0\n\t"
     34                                   "add $1, %0" : : : );
     35
     36        asm volatile ( "mov %1, %0\n\t"
     37                                   "add $1, %0"
     38                                   : "=" "r" (dst));
     39
     40        asm volatile ( "mov %1, %0\n\t"
     41                                   "add $1, %0"
     42                                   : "=r" (dst)
     43                                   : "r" (src));
     44
     45        asm ( "mov %1, %0\n\t"
     46                  "add $1, %0"
     47                  : "=r" (dst), "=r" (src)
     48                  : [src] "r" (dst)
     49                  : "r0");
     50
     51  L1: L2:
     52        asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5"
     53                           : /* No outputs. */
     54                           : "r"(src), "r"(&dst)
     55                           : "r5", "memory"
     56                           : L1, L2 );
     57
     58        // alternative type/qualifer names
    559
    660        __complex__ c1;
     
    1064        __const int i2;
    1165        __const__ int i3;
     66
     67        __inline int f1() {}
     68        __inline__ int f2() {}
     69
     70        __signed s1;
     71        __signed s2;
     72
     73        __volatile int v1;
     74        __volatile__ int v2;
     75
     76        // symbol table attributes
     77
     78        __typeof(s1) t1;
     79        __typeof__(s1) t2;
     80
     81        // strange extension qualifier
    1282
    1383        __extension__ const int ex;
     
    2191        __extension__ a = __extension__ ( __extension__ b + __extension__ c );
    2292
    23         __inline int f1() {}
    24         __inline__ int f2() {}
    25 
    26         __signed s1;
    27         __signed s2;
    28 
    29         __typeof(s1) t1;
    30         __typeof__(s1) t2;
    31 
    32         __volatile int v1;
    33         __volatile__ int v2;
     93        // attributes
    3494
    3595        __attribute__(()) int a1;
     
    57117        return 0;
    58118}
     119
     120// Local Variables: //
     121// tab-width: 4 //
     122// compile-command: "cfa gccExtensions.c" //
     123// End: //
  • src/tests/identFuncDeclarator.c

    r03da511 r04cdd9b  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// identFuncDeclarator.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Wed Aug 17 08:36:34 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 08:37:06 2016
     13// Update Count     : 1
     14//
     15
    116int main() {
    217        int f1;
     
    97112        int (* const(* const f81)(int))();
    98113}
     114
     115// Local Variables: //
     116// tab-width: 4 //
     117// compile-command: "cfa identFuncDeclarator.c" //
     118// End: //
  • src/tests/identParamDeclarator.c

    r03da511 r04cdd9b  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// identParamDeclarator.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Wed Aug 17 08:37:56 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 08:38:42 2016
     13// Update Count     : 1
     14//
     15
    116int fred(
    217        int f1,
     
    147162        return 0;
    148163}
     164
     165// Local Variables: //
     166// tab-width: 4 //
     167// compile-command: "cfa identParamDeclarator.c" //
     168// End: //
  • src/tests/labelledExit.c

    r03da511 r04cdd9b  
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// labelledExit.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Wed Aug 10 07:29:39 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 10 07:30:15 2016
     13// Update Count     : 1
     14//
     15
    116int foo() {
    217        int i;
     
    136151        else
    137152                i += 1;
    138 
    139153}
    140154
    141 int main(int argc, char const *argv[]) {
     155int main( int argc, char const *argv[] ) {
    142156        /* code */
    143         return 0;
    144157}
    145158
    146159// Local Variables: //
    147160// tab-width: 4 //
    148 // compile-command: "cfa LabelledExit.c" //
     161// compile-command: "cfa labelledExit.c" //
    149162// End: //
  • src/tests/test.py

    r03da511 r04cdd9b  
    9999                return False
    100100
    101 # find the test data for a given test name
    102 def filterTests(testname) :
    103         found = [test for test in allTests if test.name == testname]
    104         return (found[0] if len(found) == 1 else Test(testname, testname) )
    105 
    106101################################################################################
    107102#               running test functions
     
    141136                if not dry_run and fileContainsOnly(out_file, "make: *** No rule to make target `%s'.  Stop." % test.name) :
    142137                        retcode = 1;
    143                         error = "\t\tNo make target for test %s!" % test
     138                        error = "\t\tNo make target for test %s!" % test.name
    144139                        sh("rm %s" % out_file, False)
    145140
     
    252247        # already existing tests and create new info for the new tests
    253248        if options.regenerate_expected :
    254                 tests = map(filterTests, options.tests)
     249                for testname in options.tests :
     250                        if testname.endswith(".c") or testname.endswith(".cc") or testname.endswith(".cpp") :
     251                                print('ERROR: "%s", tests are not allowed to end with a C/C++/CFA extension, ignoring it' % testname, file=sys.stderr)
     252                        else :
     253                                found = [test for test in allTests if test.name == testname]
     254                                tests.append( found[0] if len(found) == 1 else Test(testname, testname) )
    255255
    256256        else :
  • src/tests/variableDeclarator.c

    r03da511 r04cdd9b  
    1 //Variable declarations test
     1//
     2// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     3//
     4// The contents of this file are covered under the licence agreement in the
     5// file "LICENCE" distributed with Cforall.
     6//
     7// variableDeclarator.c --
     8//
     9// Author           : Peter A. Buhr
     10// Created On       : Wed Aug 17 08:41:42 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug 17 08:42:21 2016
     13// Update Count     : 1
     14//
     15
     16// Variable declarations test
    217int f1;
    318int (f2);
     
    164179        return 0;
    165180}
     181
     182// Local Variables: //
     183// tab-width: 4 //
     184// compile-command: "cfa variableDeclarator.c" //
     185// End: //
Note: See TracChangeset for help on using the changeset viewer.