- Timestamp:
- Aug 19, 2016, 2:42:04 PM (9 years ago)
- 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. - Location:
- src
- Files:
-
- 6 added
- 7 deleted
- 66 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Common/CompilerError.h
r03da511 r04cdd9b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue May 19 07:20:37 201513 // Update Count : 212 // Last Modified On : Thu Aug 18 23:41:30 2016 13 // Update Count : 3 14 14 // 15 15 … … 18 18 19 19 #include <string> 20 //#include "../config.h"21 20 22 21 class CompilerError : public std::exception { -
src/Common/module.mk
r03da511 r04cdd9b 11 11 ## Created On : Mon Jun 1 17:49:17 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Mon Jun 1 17:51:23 201514 ## Update Count : 113 ## Last Modified On : Thu Aug 18 13:29:04 2016 14 ## Update Count : 2 15 15 ############################################################################### 16 16 17 17 SRC += Common/SemanticError.cc \ 18 Common/UniqueName.cc 18 Common/UniqueName.cc \ 19 Common/Assert.cc -
src/Common/utility.h
r03da511 r04cdd9b 49 49 } 50 50 51 template< typename T, typename U > 52 static inline T * maybeMoveBuild( const U *orig ) { 53 T* ret = maybeBuild<T>(orig); 54 delete orig; 55 return ret; 56 } 57 58 51 59 template< typename Input_iterator > 52 60 void printEnums( Input_iterator begin, Input_iterator end, const char * const *name_array, std::ostream &os ) { -
src/GenPoly/Box.cc
r03da511 r04cdd9b 104 104 Type *replaceWithConcrete( ApplicationExpr *appExpr, Type *type, bool doClone = true ); 105 105 /// wraps a function application returning a polymorphic type with a new temporary for the out-parameter return value 106 Expression *add PolyRetParam( 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 ); 107 107 Expression *applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars ); 108 108 void boxParam( Type *formal, Expression *&arg, const TyVarMap &exprTyVars ); … … 661 661 // process polymorphic return value 662 662 retval = 0; 663 if ( is PolyRet( functionDecl->get_functionType() ) && functionDecl->get_linkage() == LinkageSpec::Cforall ) {663 if ( isDynRet( functionDecl->get_functionType() ) && functionDecl->get_linkage() == LinkageSpec::Cforall ) { 664 664 retval = functionDecl->get_functionType()->get_returnVals().front(); 665 665 … … 868 868 } 869 869 870 Expression *Pass1::add PolyRetParam( 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 ) { 871 871 assert( env ); 872 Type *concrete = replaceWithConcrete( appExpr, polyType );872 Type *concrete = replaceWithConcrete( appExpr, dynType ); 873 873 // add out-parameter for return value 874 874 return addRetParam( appExpr, function, concrete, arg ); … … 877 877 Expression *Pass1::applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars ) { 878 878 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 ) ) { 880 881 ret = addRetParam( appExpr, function, function->get_returnVals().front()->get_type(), arg ); 881 882 } // if … … 968 969 // actually make the adapter type 969 970 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 ) ) { 971 973 makeRetParm( adapter ); 972 974 } // if … … 1030 1032 addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars ); 1031 1033 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 ) ) { 1033 1036 // return type T 1034 1037 if ( (*param)->get_name() == "" ) { … … 1277 1280 TyVarMap exprTyVars( (TypeDecl::Kind)-1 ); 1278 1281 makeTyVarMap( function, exprTyVars ); 1279 ReferenceToType * polyRetType = isPolyRet( function);1280 1281 if ( polyRetType ) {1282 ret = add PolyRetParam( appExpr, function, polyRetType, arg );1282 ReferenceToType *dynRetType = isDynRet( function, exprTyVars ); 1283 1284 if ( dynRetType ) { 1285 ret = addDynRetParam( appExpr, function, dynRetType, arg ); 1283 1286 } else if ( needsAdapter( function, scopeTyVars ) ) { 1284 1287 // std::cerr << "needs adapter: "; … … 1290 1293 arg = appExpr->get_args().begin(); 1291 1294 1292 passTypeVars( appExpr, polyRetType, arg, exprTyVars );1295 passTypeVars( appExpr, dynRetType, arg, exprTyVars ); 1293 1296 addInferredParams( appExpr, function, arg, exprTyVars ); 1294 1297 … … 1577 1580 1578 1581 // move polymorphic return type to parameter list 1579 if ( is PolyRet( funcType ) ) {1582 if ( isDynRet( funcType ) ) { 1580 1583 DeclarationWithType *ret = funcType->get_returnVals().front(); 1581 1584 ret->set_type( new PointerType( Type::Qualifiers(), ret->get_type() ) ); -
src/GenPoly/GenPoly.cc
r03da511 r04cdd9b 23 23 24 24 namespace 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 } // if29 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 } // if33 } // for34 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 } // if43 return 0;44 }45 46 25 namespace { 47 26 /// Checks a parameter list for polymorphic parameters; will substitute according to env if present … … 64 43 return false; 65 44 } 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 } 66 55 } 67 56 … … 101 90 } 102 91 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; 103 137 } 104 138 -
src/GenPoly/GenPoly.h
r03da511 r04cdd9b 31 31 namespace GenPoly { 32 32 typedef ErasableScopedMap< std::string, TypeDecl::Kind > TyVarMap; 33 34 /// A function needs an adapter if it returns a polymorphic value or if any of its35 /// parameters have polymorphic type36 bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVarr );37 38 /// true iff function has polymorphic return type39 ReferenceToType *isPolyRet( FunctionType *function );40 33 41 34 /// Replaces a TypeInstType by its referrent in the environment, if applicable … … 47 40 /// returns polymorphic type if is polymorphic type in tyVars, NULL otherwise; will look up substitution in env if provided 48 41 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 ); 49 54 50 55 /// 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 24 24 #include "GenPoly.h" 25 25 #include "ScopedMap.h" 26 #include "ScopedSet.h" 26 27 27 28 #include "ResolvExpr/typeops.h" … … 122 123 } 123 124 }; 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 } 124 147 125 148 /// Mutator pass that replaces concrete instantiations of generic types with actual struct declarations, scoped appropriately … … 127 150 /// Map of (generic type, parameter list) pairs to concrete type instantiations 128 151 InstantiationMap< AggregateDecl, AggregateDecl > instantiations; 152 /// Set of types which are dtype-only generic (and therefore have static layout) 153 ScopedSet< AggregateDecl* > dtypeStatics; 129 154 /// Namer for concrete types 130 155 UniqueName typeNamer; 131 156 132 157 public: 133 GenericInstantiator() : DeclMutator(), instantiations(), typeNamer("_conc_") {}158 GenericInstantiator() : DeclMutator(), instantiations(), dtypeStatics(), typeNamer("_conc_") {} 134 159 135 160 virtual Type* mutate( StructInstType *inst ); … … 147 172 /// Wrap instantiation insertion for unions 148 173 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 ); 149 177 }; 150 178 … … 154 182 } 155 183 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 181 186 genericType makeSubstitutions( const std::list< TypeDecl* >& baseParams, const std::list< Expression* >& params, std::list< TypeExpr* >& out ) { 182 187 genericType gt = genericType::dtypeStatic; … … 223 228 } 224 229 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 225 254 Type* GenericInstantiator::mutate( StructInstType *inst ) { 226 255 // mutate subtypes … … 231 260 // exit early if no need for further mutation 232 261 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 233 270 assert( inst->get_baseParameters() && "Base struct has parameters" ); 234 235 // check if type can be concretely instantiated; put substitutions into typeSubs236 271 std::list< TypeExpr* > typeSubs; 237 272 genericType gt = makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs ); 238 273 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: { 242 280 // make concrete instantiation of generic type 243 281 StructDecl *concDecl = lookup( inst, typeSubs ); … … 274 312 // exit early if no need for further mutation 275 313 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 276 322 assert( inst->get_baseParameters() && "Base union has parameters" ); 277 278 // check if type can be concretely instantiated; put substitutions into typeSubs279 323 std::list< TypeExpr* > typeSubs; 280 324 genericType gt = makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs ); 281 325 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 283 331 case genericType::concrete: 284 332 { … … 311 359 DeclMutator::doBeginScope(); 312 360 instantiations.beginScope(); 361 dtypeStatics.beginScope(); 313 362 } 314 363 … … 316 365 DeclMutator::doEndScope(); 317 366 instantiations.endScope(); 367 dtypeStatics.endScope(); 318 368 } 319 369 -
src/GenPoly/ScrubTyVars.cc
r03da511 r04cdd9b 45 45 46 46 Type * ScrubTyVars::mutateAggregateType( Type *ty ) { 47 if ( isPolyType( ty, tyVars) ) {47 if ( shouldScrub( ty ) ) { 48 48 PointerType *ret = new PointerType( Type::Qualifiers(), new VoidType( ty->get_qualifiers() ) ); 49 49 delete ty; … … 63 63 Expression * ScrubTyVars::mutate( SizeofExpr *szeof ) { 64 64 // 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 ) ) ); 67 67 return expr; 68 68 } else { … … 73 73 Expression * ScrubTyVars::mutate( AlignofExpr *algnof ) { 74 74 // 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 ) ) ); 77 77 return expr; 78 78 } else { … … 82 82 83 83 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 ); 86 99 ret->get_qualifiers() += pointer->get_qualifiers(); 87 100 pointer->set_base( 0 ); -
src/GenPoly/ScrubTyVars.h
r03da511 r04cdd9b 27 27 class ScrubTyVars : public Mutator { 28 28 public: 29 ScrubTyVars( const TyVarMap &tyVars ): tyVars( tyVars) {}29 ScrubTyVars( const TyVarMap &tyVars, bool dynamicOnly = false ): tyVars( tyVars ), dynamicOnly( dynamicOnly ) {} 30 30 31 31 /// For all polymorphic types with type variables in `tyVars`, replaces generic types, dtypes, and ftypes with the appropriate void type, … … 33 33 template< typename SynTreeClass > 34 34 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 ); 35 40 36 41 virtual Type* mutate( TypeInstType *typeInst ); … … 42 47 43 48 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 44 61 /// Mutates (possibly generic) aggregate types appropriately 45 62 Type* mutateAggregateType( Type *ty ); 46 63 47 const TyVarMap &tyVars; 64 const TyVarMap &tyVars; ///< Type variables to scrub 65 bool dynamicOnly; ///< only scrub the types with dynamic layout? [false] 48 66 }; 49 67 50 /* static class method */51 68 template< typename SynTreeClass > 52 69 SynTreeClass * ScrubTyVars::scrub( SynTreeClass *target, const TyVarMap &tyVars ) { 53 70 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 ); 54 77 return static_cast< SynTreeClass * >( target->acceptMutator( scrubber ) ); 55 78 } -
src/Makefile.am
r03da511 r04cdd9b 11 11 ## Created On : Sun May 31 08:51:46 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Fri Jul 8 12:22:25201614 ## Update Count : 6013 ## Last Modified On : Thu Aug 18 17:47:06 2016 14 ## Update Count : 70 15 15 ############################################################################### 16 16 … … 42 42 cfa_cpplib_PROGRAMS = driver/cfa-cpp 43 43 driver_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 44 driver_cfa_cpp_LDADD = ${LEXLIB} # yywrap 45 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include 49 46 50 47 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}} -
src/Makefile.in
r03da511 r04cdd9b 105 105 Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \ 106 106 Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \ 107 Common/driver_cfa_cpp-Assert.$(OBJEXT) \ 107 108 ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) \ 108 109 ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT) \ … … 137 138 Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) \ 138 139 Parser/driver_cfa_cpp-parseutility.$(OBJEXT) \ 139 Parser/driver_cfa_cpp-Parser.$(OBJEXT) \140 140 ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT) \ 141 141 ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT) \ … … 370 370 CodeGen/CodeGenerator.cc CodeGen/GenType.cc \ 371 371 CodeGen/FixNames.cc CodeGen/OperatorTable.cc \ 372 Common/SemanticError.cc Common/UniqueName.cc \372 Common/SemanticError.cc Common/UniqueName.cc Common/Assert.cc \ 373 373 ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \ 374 374 ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \ … … 385 385 Parser/ExpressionNode.cc Parser/StatementNode.cc \ 386 386 Parser/InitializerNode.cc Parser/TypeData.cc \ 387 Parser/LinkageSpec.cc Parser/parseutility.cc Parser/Parser.cc\387 Parser/LinkageSpec.cc Parser/parseutility.cc \ 388 388 ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \ 389 389 ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \ … … 426 426 cfa_cpplibdir = ${libdir} 427 427 driver_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 428 driver_cfa_cpp_LDADD = ${LEXLIB} # yywrap 429 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include 432 430 all: $(BUILT_SOURCES) 433 431 $(MAKE) $(AM_MAKEFLAGS) all-am … … 528 526 Common/$(DEPDIR)/$(am__dirstamp) 529 527 Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \ 528 Common/$(DEPDIR)/$(am__dirstamp) 529 Common/driver_cfa_cpp-Assert.$(OBJEXT): Common/$(am__dirstamp) \ 530 530 Common/$(DEPDIR)/$(am__dirstamp) 531 531 ControlStruct/$(am__dirstamp): … … 632 632 Parser/$(DEPDIR)/$(am__dirstamp) 633 633 Parser/driver_cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \ 634 Parser/$(DEPDIR)/$(am__dirstamp)635 Parser/driver_cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \636 634 Parser/$(DEPDIR)/$(am__dirstamp) 637 635 ResolvExpr/$(am__dirstamp): … … 817 815 -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT) 818 816 -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) 817 -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT) 819 818 -rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT) 820 819 -rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT) … … 845 844 -rm -f Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) 846 845 -rm -f Parser/driver_cfa_cpp-ParseNode.$(OBJEXT) 847 -rm -f Parser/driver_cfa_cpp-Parser.$(OBJEXT)848 846 -rm -f Parser/driver_cfa_cpp-StatementNode.$(OBJEXT) 849 847 -rm -f Parser/driver_cfa_cpp-TypeData.$(OBJEXT) … … 927 925 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@ 928 926 @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@ 929 928 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@ 930 929 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@ … … 955 954 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po@am__quote@ 956 955 @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@958 956 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po@am__quote@ 959 957 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po@am__quote@ … … 1169 1167 @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` 1170 1168 1169 Common/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 1176 Common/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 1171 1183 ControlStruct/driver_cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc 1172 1184 @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 … … 1616 1628 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1617 1629 @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.cc1620 @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.cc1621 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po1622 @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.cc1625 1626 Parser/driver_cfa_cpp-Parser.obj: Parser/Parser.cc1627 @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.Po1629 @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`1632 1630 1633 1631 ResolvExpr/driver_cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc -
src/Parser/DeclarationNode.cc
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 08:01:55201613 // Update Count : 1 6512 // Last Modified On : Thu Aug 18 23:48:23 2016 13 // Update Count : 182 14 14 // 15 15 … … 25 25 #include "SynTree/Expression.h" 26 26 27 #include "Parser.h"28 27 #include "TypedefTable.h" 29 28 extern TypedefTable typedefTable; … … 42 41 UniqueName DeclarationNode::anonymous( "__anonymous" ); 43 42 44 extern LinkageSpec:: Typelinkage; // defined in parser.yy43 extern LinkageSpec::Spec linkage; // defined in parser.yy 45 44 46 45 DeclarationNode *DeclarationNode::clone() const { … … 48 47 newnode->type = maybeClone( type ); 49 48 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; 52 52 newnode->bitfieldWidth = bitfieldWidth; 53 53 newnode->hasEllipsis = hasEllipsis; 54 54 newnode->initializer = initializer; 55 newnode-> next = maybeClone( next);55 newnode->set_next( maybeClone( get_next() ) ); 56 56 newnode->linkage = linkage; 57 57 return newnode; 58 58 } // DeclarationNode::clone 59 59 60 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) { 60 DeclarationNode::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() { 61 71 } 62 72 … … 83 93 } // if 84 94 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] << ' '; 86 98 if ( type ) { 87 99 type->print( os, indent ); … … 144 156 DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) { 145 157 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 } 147 163 return newnode; 148 164 } // DeclarationNode::newStorageClass … … 284 300 newnode->type->array->dimension = size; 285 301 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 *>() ) { 287 303 newnode->type->array->isVarLen = false; 288 304 } else { … … 360 376 DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) { 361 377 if ( q ) { 362 storageClasses.splice( storageClasses.end(), q->storageClasses);378 copyStorageClasses(q); 363 379 if ( q->type ) { 364 380 if ( ! type ) { … … 387 403 388 404 DeclarationNode *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; 390 414 return this; 391 415 } … … 447 471 DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) { 448 472 if ( o ) { 449 storageClasses.splice( storageClasses.end(), o->storageClasses);473 copyStorageClasses( o ); 450 474 if ( o->type ) { 451 475 if ( ! type ) { … … 470 494 471 495 // there may be typedefs chained onto the type 472 if ( o->get_ link() ) {473 set_l ink( o->get_link()->clone() );496 if ( o->get_next() ) { 497 set_last( o->get_next()->clone() ); 474 498 } // if 475 499 } // if … … 694 718 } // if 695 719 newnode->type->forall = maybeClone( type->forall ); 696 newnode-> storageClasses = storageClasses;720 newnode->copyStorageClasses( this ); 697 721 newnode->name = assign_strptr( newName ); 698 722 return newnode; … … 701 725 DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) { 702 726 if ( o ) { 703 o-> storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end());727 o->copyStorageClasses( this ); 704 728 if ( type ) { 705 729 TypeData *srcType = type; … … 734 758 DeclarationNode *newnode = new DeclarationNode; 735 759 newnode->type = maybeClone( type ); 736 newnode-> storageClasses = storageClasses;760 newnode->copyStorageClasses( this ); 737 761 newnode->name = assign_strptr( newName ); 738 762 return newnode; … … 741 765 DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) { 742 766 if ( o ) { 743 o-> storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end());767 o->copyStorageClasses( this ); 744 768 if ( type ) { 745 769 TypeData *newType = type->clone(); … … 755 779 } 756 780 757 DeclarationNode *DeclarationNode::appendList( DeclarationNode *node ) {758 if ( node != 0 ) {759 set_link( node );760 } // if761 return this;762 }763 764 781 DeclarationNode *DeclarationNode::extractAggregate() const { 765 782 if ( type ) { … … 776 793 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) { 777 794 SemanticError errors; 778 std::back_insert_iterator< std::list< Declaration * > > out( outputList );795 std::back_insert_iterator< std::list< Declaration * > > out( outputList ); 779 796 const DeclarationNode *cur = firstNode; 780 797 while ( cur ) { … … 794 811 errors.append( e ); 795 812 } // try 796 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );813 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 797 814 } // while 798 815 if ( ! errors.isEmpty() ) { … … 801 818 } 802 819 803 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {820 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) { 804 821 SemanticError errors; 805 std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );822 std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList ); 806 823 const DeclarationNode *cur = firstNode; 807 824 while ( cur ) { … … 817 834 Declaration *decl = cur->build(); 818 835 if ( decl ) { 819 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {836 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) { 820 837 *out++ = dwt; 821 } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {838 } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) { 822 839 StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() ); 823 840 *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 ); 824 841 delete agg; 825 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {842 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) { 826 843 UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() ); 827 844 *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 ); … … 831 848 errors.append( e ); 832 849 } // try 833 cur = dynamic_cast< DeclarationNode * >( cur->get_link() );850 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 834 851 } // while 835 852 if ( ! errors.isEmpty() ) { … … 838 855 } 839 856 840 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {857 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) { 841 858 SemanticError errors; 842 std::back_insert_iterator< std::list< Type * > > out( outputList );859 std::back_insert_iterator< std::list< Type * > > out( outputList ); 843 860 const DeclarationNode *cur = firstNode; 844 861 while ( cur ) { … … 848 865 errors.append( e ); 849 866 } // try 850 cur = dynamic_cast< DeclarationNode * >( cur->get_link() );867 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 851 868 } // while 852 869 if ( ! errors.isEmpty() ) { … … 856 873 857 874 Declaration *DeclarationNode::build() const { 875 if( !error.empty() ) throw SemanticError( error, this ); 858 876 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 ); 863 881 } // if 864 882 throw SemanticError( "invalid function specifier in declaration of ", this ); … … 899 917 } 900 918 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 specifiers905 if ( ret != DeclarationNode::NoStorageClass ) { // already have a valid storage class ?906 throw SemanticError( "invalid combination of storage classes in declaration of ", this );907 } // if908 ret = *i;909 } // for910 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 found916 first = std::find( ++first, storageClasses.end(), key ); // found917 if ( first == storageClasses.end() ) return true; // not found again918 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 // } 920 938 921 939 // Local Variables: // -
src/Parser/ExpressionNode.cc
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 09:23:12201613 // Update Count : 4 3712 // Last Modified On : Tue Aug 16 00:09:20 2016 13 // Update Count : 495 14 14 // 15 15 … … 32 32 using namespace std; 33 33 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 } 34 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {} 86 35 87 36 //############################################################################## … … 108 57 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; } 109 58 110 ConstantNode *build_constantInteger(std::string & str ) {59 Expression *build_constantInteger( const std::string & str ) { 111 60 static const BasicType::Kind kind[2][3] = { 112 61 { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt }, … … 171 120 } // if 172 121 173 return new Constant Node( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str )) );122 return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) ); 174 123 } // build_constantInteger 175 124 176 ConstantNode *build_constantFloat(std::string & str ) {125 Expression *build_constantFloat( const std::string & str ) { 177 126 static const BasicType::Kind kind[2][3] = { 178 127 { BasicType::Float, BasicType::Double, BasicType::LongDouble }, … … 201 150 } // if 202 151 203 return new Constant Node( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str )) );152 return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) ); 204 153 } // build_constantFloat 205 154 206 ConstantNode *build_constantChar(std::string & str ) {207 return new Constant Node( new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str )) );155 Expression *build_constantChar( const std::string & str ) { 156 return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) ); 208 157 } // build_constantChar 209 158 210 Constant Node *build_constantStr(std::string & str ) {159 ConstantExpr *build_constantStr( const std::string & str ) { 211 160 // string should probably be a primitive type 212 161 ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ), … … 214 163 toString( str.size()+1-2 ) ) ), // +1 for '\0' and -2 for '"' 215 164 false, false ); 216 return new Constant Node( new ConstantExpr( Constant( at, str )) );165 return new ConstantExpr( Constant( at, str ) ); 217 166 } // build_constantStr 218 167 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 //############################################################################## 168 NameExpr * build_varref( const string *name, bool labelp ) { 169 NameExpr *expr = new NameExpr( *name, nullptr ); 170 delete name; 171 return expr; 172 } 322 173 323 174 static const char *OperName[] = { … … 331 182 }; 332 183 333 //############################################################################## 334 335 Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node ) { 336 DeclarationNode *decl_node = arg->get_decl(); 337 184 Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) { 338 185 Type *targetType = decl_node->buildType(); 339 if ( dynamic_cast< VoidType * >( targetType ) ) {186 if ( dynamic_cast< VoidType * >( targetType ) ) { 340 187 delete targetType; 341 return new CastExpr( maybe Build<Expression>(expr_node) );188 return new CastExpr( maybeMoveBuild< Expression >(expr_node) ); 342 189 } 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 194 Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) { 195 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) ); 351 196 delete member; 352 197 return ret; 353 198 } 354 199 355 Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member ) { 356 NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) ); 357 assert( memberExpr ); 200 Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) { 358 201 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) ); 359 deref->get_args().push_back( maybe Build<Expression>(expr_node) );360 UntypedMemberExpr *ret = new UntypedMemberExpr( member Expr->get_name(), deref );202 deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) ); 203 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref ); 361 204 delete member; 362 205 return ret; … … 364 207 365 208 Expression *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 } 211 Expression *build_sizeOfexpr( ExpressionNode *expr_node ) { 212 return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) ); 213 } 214 Expression *build_sizeOftype( DeclarationNode *decl_node ) { 215 Expression* ret = new SizeofExpr( decl_node->buildType() ); 216 delete decl_node; 217 return ret; 218 } 219 Expression *build_alignOfexpr( ExpressionNode *expr_node ) { 220 return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) ); 221 } 222 Expression *build_alignOftype( DeclarationNode *decl_node ) { 223 return new AlignofExpr( decl_node->buildType() ); 224 } 225 Expression *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; 386 230 } 387 231 388 232 Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) { 389 return new LogicalExpr( notZeroExpr( maybe Build<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );233 return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind ); 390 234 } 391 235 392 236 Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) { 393 std::list< Expression *> args;394 args.push_back( maybe Build<Expression>(expr_node) );237 std::list< Expression * > args; 238 args.push_back( maybeMoveBuild< Expression >(expr_node) ); 395 239 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 396 240 } 397 241 Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) { 398 std::list< Expression *> args;399 args.push_back( new AddressExpr( maybe Build<Expression>(expr_node) ) );242 std::list< Expression * > args; 243 args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) ); 400 244 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 401 245 } 402 246 Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 403 std::list< Expression *> args;404 args.push_back( maybe Build<Expression>(expr_node1) );405 args.push_back( maybe Build<Expression>(expr_node2) );247 std::list< Expression * > args; 248 args.push_back( maybeMoveBuild< Expression >(expr_node1) ); 249 args.push_back( maybeMoveBuild< Expression >(expr_node2) ); 406 250 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 407 251 } 408 252 Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 409 std::list< Expression *> args;410 args.push_back( new AddressExpr( maybe Build<Expression>(expr_node1) ) );411 args.push_back( maybe Build<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) ); 412 256 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 413 257 } 414 258 415 259 Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) { 416 return new ConditionalExpr( notZeroExpr( maybe Build<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) ); 417 261 } 418 262 419 263 Expression *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 267 Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) { 268 return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) ); 269 } 270 Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) { 271 return new AttrExpr( var, decl_node->buildType() ); 272 } 273 274 Expression *build_tuple( ExpressionNode * expr_node ) { 432 275 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 280 Expression *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 ); 442 284 } 443 285 444 286 Expression *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 290 Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) { 291 return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) ); 292 } 293 294 Expression *build_valexpr( StatementNode *s ) { 295 return new UntypedValofExpr( maybeMoveBuild< Statement >(s), nullptr ); 296 } 297 Expression *build_typevalue( DeclarationNode *decl ) { 576 298 return new TypeExpr( decl->buildType() ); 577 299 } 578 300 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 301 Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) { 302 Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type 624 303 if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type 625 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybe Build<Initializer>(kids) );304 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) ); 626 305 // these types do not have associated type information 627 306 } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl ) ) { 628 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybe Build<Initializer>(kids) );307 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 629 308 } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl ) ) { 630 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybe Build<Initializer>(kids) );309 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 631 310 } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl ) ) { 632 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybe Build<Initializer>(kids) );311 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 633 312 } else { 634 313 assert( false ); -
src/Parser/InitializerNode.cc
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 13:20:24 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 4 15:37:15201613 // Update Count : 1512 // Last Modified On : Mon Aug 15 18:27:02 2016 13 // Update Count : 20 14 14 // 15 15 … … 25 25 : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) { 26 26 if ( aggrp ) 27 kids = dynamic_cast< InitializerNode * >( get_link() );27 kids = dynamic_cast< InitializerNode * >( get_next() ); 28 28 29 29 if ( kids != 0 ) 30 set_l ink( 0 );30 set_last( 0 ); 31 31 } 32 32 … … 34 34 : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) { 35 35 if ( init != 0 ) 36 set_l ink(init);36 set_last( init ); 37 37 38 38 if ( aggrp ) 39 kids = dynamic_cast< InitializerNode * >( get_link() );39 kids = dynamic_cast< InitializerNode * >( get_next() ); 40 40 41 41 if ( kids != 0 ) … … 58 58 while ( curdes != 0) { 59 59 curdes->printOneLine(os); 60 curdes = (ExpressionNode *)(curdes->get_ link());60 curdes = (ExpressionNode *)(curdes->get_next()); 61 61 if ( curdes ) os << ", "; 62 62 } // while … … 72 72 73 73 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) ) 75 75 moreInit->printOneLine( os ); 76 76 } … … 82 82 //assert( next_init() != 0 ); 83 83 84 std::list< Initializer * > initlist;85 buildList< Initializer, InitializerNode>( next_init(), initlist );84 std::list< Initializer * > initlist; 85 buildList< Initializer, InitializerNode >( next_init(), initlist ); 86 86 87 std::list< Expression * > designlist;87 std::list< Expression * > designlist; 88 88 89 89 if ( designator != 0 ) { 90 buildList< Expression, ExpressionNode>( designator, designlist );90 buildList< Expression, ExpressionNode >( designator, designlist ); 91 91 } // if 92 92 93 93 return new ListInit( initlist, designlist, maybeConstructed ); 94 94 } else { 95 std::list< Expression * > designators;95 std::list< Expression * > designators; 96 96 97 97 if ( designator != 0 ) 98 buildList< Expression, ExpressionNode>( designator, designators );98 buildList< Expression, ExpressionNode >( designator, designators ); 99 99 100 100 if ( get_expression() != 0) 101 return new SingleInit( maybeBuild< Expression>( get_expression() ), designators, maybeConstructed );101 return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed ); 102 102 } // if 103 103 -
src/Parser/LinkageSpec.cc
r03da511 r04cdd9b 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:22:09 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 19 15:53:05 201513 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:47:14 2016 13 // Update Count : 12 14 14 // 15 15 … … 20 20 #include "Common/SemanticError.h" 21 21 22 LinkageSpec:: TypeLinkageSpec::fromString( const std::string &stringSpec ) {22 LinkageSpec::Spec LinkageSpec::fromString( const std::string &stringSpec ) { 23 23 if ( stringSpec == "\"Cforall\"" ) { 24 24 return Cforall; … … 30 30 } 31 31 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 ""; 32 std::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]; 47 37 } 48 38 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; 39 bool 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]; 61 45 } 62 46 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; 47 bool 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]; 75 53 } 76 54 77 bool LinkageSpec::isOverloadable( Typet ) {55 bool LinkageSpec::isOverloadable( Spec t ) { 78 56 return isDecoratable( t ); 79 57 } 80 58 81 59 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; 60 bool 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]; 94 66 } 95 67 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; 68 bool 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]; 108 74 } 109 75 -
src/Parser/LinkageSpec.h
r03da511 r04cdd9b 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:24:28 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : T ue Aug 18 14:11:55 201513 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:47:16 2016 13 // Update Count : 7 14 14 // 15 15 … … 20 20 21 21 struct LinkageSpec { 22 enum Type{22 enum Spec { 23 23 Intrinsic, // C built-in defined in prelude 24 24 Cforall, // ordinary 25 25 C, // not overloadable, not mangled 26 26 AutoGen, // built by translator (struct assignment) 27 Compiler // gcc internal 27 Compiler, // gcc internal 28 NoOfSpecs 28 29 }; 29 30 30 static TypefromString( const std::string & );31 static std::string toString( Type);31 static Spec fromString( const std::string & ); 32 static std::string toString( Spec ); 32 33 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 ); 38 39 }; 39 40 -
src/Parser/ParseNode.cc
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 13:26:29 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Aug 6 08:26:11201613 // Update Count : 9312 // Last Modified On : Wed Aug 17 23:14:16 2016 13 // Update Count : 126 14 14 // 15 15 … … 17 17 using namespace std; 18 18 19 // Builder20 19 int 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 } // if53 }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-looking63 // 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 }67 20 68 21 // Local Variables: // -
src/Parser/ParseNode.h
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 09:37:16201613 // Update Count : 33312 // Last Modified On : Thu Aug 18 23:48:37 2016 13 // Update Count : 542 14 14 // 15 15 … … 22 22 #include <memory> 23 23 24 #include "Common/utility.h"25 24 #include "Parser/LinkageSpec.h" 26 25 #include "SynTree/Type.h" 27 26 #include "SynTree/Expression.h" 28 //#include "SynTree/Declaration.h" 27 #include "SynTree/Statement.h" 28 #include "SynTree/Label.h" 29 #include "Common/utility.h" 29 30 #include "Common/UniqueName.h" 30 #include "SynTree/Label.h"31 31 32 32 class StatementNode; 33 33 class CompoundStmtNode; 34 34 class DeclarationNode; 35 class ExpressionNode; 35 36 class InitializerNode; 36 37 37 // Builder 38 //############################################################################## 39 38 40 class ParseNode { 39 41 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 } 51 59 52 60 const std::string &get_name() const { return name; } 53 61 void set_name( const std::string &newValue ) { name = newValue; } 54 62 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; 60 69 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 74 class InitializerNode : public ParseNode { 70 75 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 105 class 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 ) {} 73 109 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 81 113 bool get_extension() const { return extension; } 82 114 ExpressionNode *set_extension( bool exten ) { extension = exten; return this; } 83 115 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(); } 90 125 private: 91 ExpressionNode *argName = 0;92 126 bool extension = false; 127 std::unique_ptr<Expression> expr; 93 128 }; 94 129 95 130 template< typename T > 96 struct maybeBuild_t< Expression, T> {131 struct maybeBuild_t< Expression, T > { 97 132 static inline Expression * doit( const T *orig ) { 98 133 if ( orig ) { … … 101 136 return p; 102 137 } else { 103 return 0;138 return nullptr; 104 139 } // if 105 140 } 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;216 141 }; 217 142 … … 227 152 }; 228 153 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 ); 154 struct LabelNode { 155 std::list< Label > labels; 156 }; 157 158 Expression *build_constantInteger( const std::string &str ); 159 Expression *build_constantFloat( const std::string &str ); 160 Expression *build_constantChar( const std::string &str ); 161 ConstantExpr *build_constantStr( const std::string &str ); 162 163 NameExpr *build_varref( const std::string *name, bool labelp = false ); 164 Expression *build_typevalue( DeclarationNode *decl ); 165 166 Expression *build_cast( DeclarationNode * decl_node, ExpressionNode *expr_node ); 167 Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ); 168 Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ); 232 169 Expression *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 ); 170 Expression *build_sizeOfexpr( ExpressionNode *expr_node ); 171 Expression *build_sizeOftype( DeclarationNode *decl_node ); 172 Expression *build_alignOfexpr( ExpressionNode *expr_node ); 173 Expression *build_alignOftype( DeclarationNode *decl_node ); 174 Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ); 236 175 Expression *build_and( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ); 237 176 Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ); … … 242 181 Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ); 243 182 Expression *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 ); 183 Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ); 184 Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ); 185 Expression *build_tuple( ExpressionNode * expr_node = 0 ); 186 Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ); 247 187 Expression *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 }; 188 Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ); 189 Expression *build_valexpr( StatementNode *s ); 190 Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ); 335 191 336 192 //############################################################################## … … 382 238 static DeclarationNode *newBuiltinType( BuiltinType ); 383 239 240 DeclarationNode(); 241 ~DeclarationNode(); 242 DeclarationNode *clone() const; 243 384 244 DeclarationNode *addQualifiers( DeclarationNode *); 385 245 DeclarationNode *copyStorageClasses( DeclarationNode *); … … 397 257 DeclarationNode *addNewArray( DeclarationNode *array ); 398 258 DeclarationNode *addParamList( DeclarationNode *list ); 399 DeclarationNode *addIdList( DeclarationNode *list ); 259 DeclarationNode *addIdList( DeclarationNode *list ); // old-style functions 400 260 DeclarationNode *addInitializer( InitializerNode *init ); 401 261 … … 406 266 DeclarationNode *cloneBaseType( DeclarationNode *newdecl ); 407 267 408 DeclarationNode *appendList( DeclarationNode * ); 409 410 DeclarationNode *clone() const; 268 DeclarationNode *appendList( DeclarationNode *node ) { 269 return (DeclarationNode *)set_last( node ); 270 } 271 411 272 void print( std::ostream &os, int indent = 0 ) const; 412 273 void printList( std::ostream &os, int indent = 0 ) const; … … 417 278 bool get_hasEllipsis() const; 418 279 const std::string &get_name() const { return name; } 419 LinkageSpec:: Typeget_linkage() const { return linkage; }280 LinkageSpec::Spec get_linkage() const { return linkage; } 420 281 DeclarationNode *extractAggregate() const; 421 282 ExpressionNode *get_enumeratorValue() const { return enumeratorValue; } … … 423 284 bool get_extension() const { return extension; } 424 285 DeclarationNode *set_extension( bool exten ) { extension = exten; return this; } 425 426 DeclarationNode();427 ~DeclarationNode();428 286 private: 429 StorageClass buildStorageClass() const;430 bool buildFuncSpecifier( StorageClass key ) const;287 // StorageClass buildStorageClass() const; 288 // bool buildFuncSpecifier( StorageClass key ) const; 431 289 432 290 TypeData *type; 433 291 std::string name; 434 std::list< StorageClass > storageClasses; 292 // std::list< StorageClass > storageClasses; 293 StorageClass storageClass; 294 bool isInline, isNoreturn; 435 295 std::list< std::string > attributes; 436 296 ExpressionNode *bitfieldWidth; … … 438 298 InitializerNode *initializer; 439 299 bool hasEllipsis; 440 LinkageSpec:: Typelinkage;300 LinkageSpec::Spec linkage; 441 301 bool extension = false; 302 std::string error; 442 303 443 304 static UniqueName anonymous; 444 305 }; // DeclarationNode 445 306 446 //############################################################################## 447 448 class StatementNode : public ParseNode { 307 Type *buildType( TypeData *type ); 308 309 //############################################################################## 310 311 class StatementNode final : public ParseNode { 449 312 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 ) {} 461 315 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 ) {} 490 331 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; 499 333 }; // StatementNode 500 334 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 }; 335 Statement *build_expr( ExpressionNode *ctl ); 336 337 struct 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 348 Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ); 349 Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ); 350 Statement *build_case( ExpressionNode *ctl ); 351 Statement *build_default(); 352 Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind = false ); 353 Statement *build_for( ForCtl *forctl, StatementNode *stmt ); 354 Statement *build_branch( std::string identifier, BranchStmt::Type kind ); 355 Statement *build_computedgoto( ExpressionNode *ctl ); 356 Statement *build_return( ExpressionNode *ctl ); 357 Statement *build_throw( ExpressionNode *ctl ); 358 Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ); 359 Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny = false ); 360 Statement *build_finally( StatementNode *stmt ); 361 Statement *build_compound( StatementNode *first ); 362 Statement *build_asmstmt( bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 ); 363 364 //############################################################################## 589 365 590 366 template< typename SynTreeType, typename NodeType > 591 void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {367 void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) { 592 368 SemanticError errors; 593 std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );369 std::back_insert_iterator< std::list< SynTreeType * > > out( outputList ); 594 370 const NodeType *cur = firstNode; 595 371 596 372 while ( cur ) { 597 373 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 ) ); 600 376 if ( result ) { 601 377 *out++ = result; … … 605 381 errors.append( e ); 606 382 } // try 607 cur = dynamic_cast< NodeType * >( cur->get_link() );383 cur = dynamic_cast< NodeType * >( cur->get_next() ); 608 384 } // while 609 385 if ( ! errors.isEmpty() ) { … … 614 390 // in DeclarationNode.cc 615 391 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ); 616 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList );392 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ); 617 393 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ); 394 395 template< typename SynTreeType, typename NodeType > 396 void buildMoveList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) { 397 buildList(firstNode, outputList); 398 delete firstNode; 399 } 400 618 401 619 402 #endif // PARSENODE_H -
src/Parser/StatementNode.cc
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 14:59:41 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 06:42:38201613 // Update Count : 13512 // Last Modified On : Mon Aug 15 20:47:11 2016 13 // Update Count : 322 14 14 // 15 15 … … 26 26 using namespace std; 27 27 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 29 StatementNode::StatementNode( DeclarationNode *decl ) { 41 30 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()) ) ); 50 37 decl->set_next( 0 ); 51 38 } // if 52 39 } 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() ) ) ); 55 42 decl->set_next( 0 ); 56 43 } // if 57 this->decl= decl;44 agg = decl; 58 45 } // if 46 stmt.reset( new DeclStmt( noLabels, maybeBuild< Declaration >(agg) ) ); 47 } else { 48 assert( false ); 59 49 } // if 60 50 } 61 51 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; 52 StatementNode *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 71 Statement *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 80 Statement *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(); 96 92 } // 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 96 Statement *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 } 102 Statement *build_case( ExpressionNode *ctl ) { 103 std::list< Statement * > branches; 104 return new CaseStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches ); 105 } 106 Statement *build_default() { 107 std::list< Statement * > branches; 108 return new CaseStmt( noLabels, nullptr, branches, true ); 109 } 110 111 Statement *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 118 Statement *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 ); 105 126 } // 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 140 Statement *build_branch( std::string identifier, BranchStmt::Type kind ) { 141 return new BranchStmt( noLabels, identifier, kind ); 142 } 143 Statement *build_computedgoto( ExpressionNode *ctl ) { 144 return new BranchStmt( noLabels, maybeMoveBuild< Expression >(ctl), BranchStmt::Goto ); 145 } 146 147 Statement *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 } 152 Statement *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 159 Statement *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 } 167 Statement *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 } 173 Statement *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 180 Statement *build_compound( StatementNode *first ) { 181 CompoundStmt *cs = new CompoundStmt( noLabels ); 182 buildMoveList( first, cs->get_kids() ); 348 183 return cs; 349 184 } 350 185 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 186 Statement *build_asmstmt( bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) { 404 187 std::list< Expression * > out, in; 405 188 std::list< ConstantExpr * > clob; 406 buildList( output, out ); 407 build List( input, in);408 build List( 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 ); 411 194 } 412 195 -
src/Parser/TypeData.cc
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 07:51:48201613 // Update Count : 5812 // Last Modified On : Thu Aug 18 23:48:44 2016 13 // Update Count : 64 14 14 // 15 15 … … 182 182 break; 183 183 case Array: 184 //PAB newtype->array->dimension = maybeClone( array->dimension );185 184 newtype->array->dimension = array->dimension; 186 185 newtype->array->isVarLen = array->isVarLen; … … 479 478 } 480 479 481 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec:: Typelinkage, Initializer *init ) const {480 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer *init ) const { 482 481 if ( kind == TypeData::Function ) { 483 482 FunctionDecl *decl; … … 489 488 decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn ); 490 489 } 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 ); 493 492 } // if 494 493 } else { 495 494 decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline, isNoreturn ); 496 495 } // 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() ) ) { 498 497 if ( cur->get_name() != "" ) { 499 498 decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() ); … … 909 908 buildList( enumeration->constants, ret->get_members() ); 910 909 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); 914 913 member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) ); 915 914 } // if -
src/Parser/TypeData.h
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 15:18:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Jul 12 20:52:02 201613 // Update Count : 2 012 // Last Modified On : Thu Aug 18 23:48:52 2016 13 // Update Count : 22 14 14 // 15 15 … … 126 126 TypeData * extractAggregate( bool toplevel = true ) const; 127 127 // helper function for DeclNodeImpl::build 128 Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec:: Typelinkage, 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; 129 129 // helper functions for build() 130 130 Type::Qualifiers buildQualifiers() const; -
src/Parser/TypedefTable.cc
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 15:20:13 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Apr 13 16:57:30201613 // Update Count : 2 412 // Last Modified On : Mon Aug 15 18:24:42 2016 13 // Update Count : 25 14 14 // 15 15 … … 64 64 tableType::iterator curPos = table.find( identifier ); 65 65 if ( curPos == table.end()) { 66 list< Entry> newList;66 list< Entry > newList; 67 67 newList.push_front( newEntry ); 68 68 table[identifier] = newList; 69 69 } else { 70 list< Entry>::iterator listPos = (*curPos ).second.begin();70 list< Entry >::iterator listPos = (*curPos ).second.begin(); 71 71 while ( listPos != (*curPos ).second.end() && listPos->scope > scope ) { 72 72 listPos++; … … 127 127 debugPrint( "Leaving scope " << currentScope << endl ); 128 128 for ( tableType::iterator i = table.begin(); i != table.end(); ) { 129 list< Entry> &declList = (*i).second;129 list< Entry > &declList = (*i).second; 130 130 while ( ! declList.empty() && declList.front().scope == currentScope ) { 131 131 declList.pop_front(); … … 157 157 for ( tableType::const_iterator i = table.begin(); i != table.end(); i++) { 158 158 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++ ) { 161 161 debugPrint( "(" << (*j).scope << " " << (*j).kind << ") " ); 162 162 } -
src/Parser/TypedefTable.h
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 15:24:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Apr 13 16:59:56201613 // Update Count : 2 712 // Last Modified On : Mon Aug 15 18:25:04 2016 13 // Update Count : 28 14 14 // 15 15 … … 39 39 }; 40 40 41 typedef std::map< std::string, std::list<Entry> > tableType;41 typedef std::map< std::string, std::list< Entry > > tableType; 42 42 tableType table; 43 43 -
src/Parser/lex.cc
r03da511 r04cdd9b 1468 1468 * Author : Peter A. Buhr 1469 1469 * Created On : Sat Sep 22 08:58:10 2001 1470 * Last Modified By : 1471 * Last Modified On : Sun Jul 31 07:19:3620161472 * Update Count : 4 591470 * Last Modified By : Peter A. Buhr 1471 * Last Modified On : Thu Aug 18 22:17:30 2016 1472 * Update Count : 472 1473 1473 */ 1474 1474 #line 20 "lex.ll" … … 1480 1480 1481 1481 #include <string> 1482 #include <cstdio> // FILENAME_MAX 1482 1483 1483 1484 #include "lex.h" … … 1491 1492 #define RETURN_LOCN(x) yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x ) 1492 1493 #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 ) 1494 1495 #define RETURN_STR(x) yylval.tok.str = strtext; RETURN_LOCN( x ) 1495 1496 1496 #define WHITE_RETURN(x) 1497 #define WHITE_RETURN(x) // do nothing 1497 1498 #define NEWLINE_RETURN() WHITE_RETURN( '\n' ) 1498 1499 #define ASCIIOP_RETURN() RETURN_CHAR( (int)yytext[0] ) // single character operator 1499 #define NAMEDOP_RETURN(x) RETURN_ VAL( x )// multichar operator, with a name1500 #define NAMEDOP_RETURN(x) RETURN_CHAR( x ) // multichar operator, with a name 1500 1501 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 1501 1502 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword … … 1531 1532 1532 1533 1533 #line 153 4"Parser/lex.cc"1534 #line 1535 "Parser/lex.cc" 1534 1535 1535 1536 #define INITIAL 0 … … 1723 1724 register int yy_act; 1724 1725 1725 #line 13 8"lex.ll"1726 #line 139 "lex.ll" 1726 1727 1727 1728 /* line directives */ 1728 #line 17 29"Parser/lex.cc"1729 #line 1730 "Parser/lex.cc" 1729 1730 1730 1731 if ( !(yy_init) ) … … 1823 1824 /* rule 1 can match eol */ 1824 1825 YY_RULE_SETUP 1825 #line 14 0"lex.ll"1826 #line 141 "lex.ll" 1826 1827 { 1827 1828 /* " stop highlighting */ 1829 static char *filename[FILENAME_MAX]; // temporarily store current source-file name 1828 1830 char *end_num; 1829 1831 char *begin_string, *end_string; 1830 char *filename;1831 1832 long lineno, length; 1832 1833 lineno = strtol( yytext + 1, &end_num, 0 ); 1833 1834 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]; 1845 1845 } // if 1846 1846 } -
src/Parser/lex.ll
r03da511 r04cdd9b 9 9 * Author : Peter A. Buhr 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 * Last Modified By : 12 * Last Modified On : Sun Jul 31 07:19:36201613 * Update Count : 4 5911 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Thu Aug 18 22:17:30 2016 13 * Update Count : 472 14 14 */ 15 15 … … 25 25 26 26 #include <string> 27 #include <cstdio> // FILENAME_MAX 27 28 28 29 #include "lex.h" … … 36 37 #define RETURN_LOCN(x) yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x ) 37 38 #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 ) 39 40 #define RETURN_STR(x) yylval.tok.str = strtext; RETURN_LOCN( x ) 40 41 41 #define WHITE_RETURN(x) 42 #define WHITE_RETURN(x) // do nothing 42 43 #define NEWLINE_RETURN() WHITE_RETURN( '\n' ) 43 44 #define ASCIIOP_RETURN() RETURN_CHAR( (int)yytext[0] ) // single character operator 44 #define NAMEDOP_RETURN(x) RETURN_ VAL( x )// multichar operator, with a name45 #define NAMEDOP_RETURN(x) RETURN_CHAR( x ) // multichar operator, with a name 45 46 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 46 47 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword … … 140 141 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" { 141 142 /* " stop highlighting */ 143 static char *filename[FILENAME_MAX]; // temporarily store current source-file name 142 144 char *end_num; 143 145 char *begin_string, *end_string; 144 char *filename;145 146 long lineno, length; 146 147 lineno = strtol( yytext + 1, &end_num, 0 ); 147 148 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]; 159 159 } // if 160 160 } -
src/Parser/module.mk
r03da511 r04cdd9b 11 11 ## Created On : Sat May 16 15:29:09 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : T hu Jan 28 11:57:23201614 ## Update Count : 10 013 ## Last Modified On : Tue Aug 16 17:28:34 2016 14 ## Update Count : 101 15 15 ############################################################################### 16 16 … … 29 29 Parser/TypeData.cc \ 30 30 Parser/LinkageSpec.cc \ 31 Parser/parseutility.cc \ 32 Parser/Parser.cc 31 Parser/parseutility.cc 33 32 34 33 MAINTAINERCLEANFILES += 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. */ 2 2 3 3 /* Bison implementation for Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989-1990, 2000-2011Free Software Foundation, Inc.6 4 5 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. 6 7 7 This program is free software: you can redistribute it and/or modify 8 8 it under the terms of the GNU General Public License as published by 9 9 the Free Software Foundation, either version 3 of the License, or 10 10 (at your option) any later version. 11 11 12 12 This program is distributed in the hope that it will be useful, 13 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 GNU General Public License for more details. 16 16 17 17 You should have received a copy of the GNU General Public License 18 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ … … 27 27 Bison output files to be licensed under the GNU General Public 28 28 License without this special exception. 29 29 30 30 This special exception was added by the Free Software Foundation in 31 31 version 2.2 of Bison. */ … … 45 45 46 46 /* Bison version. */ 47 #define YYBISON_VERSION " 2.5"47 #define YYBISON_VERSION "3.0.2" 48 48 49 49 /* Skeleton name. */ … … 59 59 #define YYPULL 1 60 60 61 /* Using locations. */62 #define YYLSP_NEEDED 063 61 64 62 65 63 66 64 /* 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 */ 70 66 71 67 #define YYDEBUG_LEXER_TEXT (yylval) // lexer loads this up each time 72 68 #define YYDEBUG 1 // get the pretty debugging code to compile 73 extern char *yytext;74 69 75 70 #undef __GNUC_MINOR__ … … 84 79 #include "LinkageSpec.h" 85 80 86 DeclarationNode *theTree = 0; // the resulting parse tree 87 LinkageSpec::Type linkage = LinkageSpec::Cforall; 88 std::stack< LinkageSpec::Type > linkageStack; 89 TypedefTable typedefTable; 81 extern DeclarationNode * parseTree; 82 extern LinkageSpec::Spec linkage; 83 extern TypedefTable typedefTable; 84 85 std::stack< LinkageSpec::Spec > linkageStack; 90 86 91 87 void appendStr( std::string &to, std::string *from ) { … … 94 90 } // appendStr 95 91 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 104 101 105 102 /* Enabling verbose error messages. */ … … 111 108 #endif 112 109 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 116 117 #endif 117 118 119 /* Tokens. */ 118 #if YYDEBUG 119 extern int yydebug; 120 #endif 121 122 /* Token type. */ 120 123 #ifndef YYTOKENTYPE 121 124 # 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 }; 232 234 #endif 233 235 /* Tokens. */ … … 339 341 #define THEN 363 340 342 341 342 343 343 /* Value type. */ 344 344 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 345 typedef union YYSTYPE 345 typedef union YYSTYPE YYSTYPE; 346 union YYSTYPE 346 347 { 347 348 /* Line 293 of yacc.c */ 349 #line 115 "parser.yy" 348 #line 115 "parser.yy" /* yacc.c:355 */ 350 349 351 350 Token tok; … … 356 355 DeclarationNode::TypeClass tclass; 357 356 StatementNode *sn; 358 ConstantNode *constant; 357 ConstantExpr *constant; 358 ForCtl *fctl; 359 359 LabelNode *label; 360 360 InitializerNode *in; … … 362 362 bool flag; 363 363 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 }; 369 366 # define YYSTYPE_IS_TRIVIAL 1 370 # define yystype YYSTYPE /* obsolescent; will be withdrawn */371 367 # define YYSTYPE_IS_DECLARED 1 372 368 #endif 373 369 374 370 371 extern YYSTYPE yylval; 372 373 int yyparse (void); 374 375 #endif /* !YY_YY_Y_TAB_H_INCLUDED */ 376 375 377 /* Copy the second part of user declarations. */ 376 378 377 378 /* Line 343 of yacc.c */ 379 #line 380 "Parser/parser.cc" 379 #line 380 "Parser/parser.cc" /* yacc.c:358 */ 380 380 381 381 #ifdef short … … 391 391 #ifdef YYTYPE_INT8 392 392 typedef YYTYPE_INT8 yytype_int8; 393 #elif (defined __STDC__ || defined __C99__FUNC__ \ 394 || defined __cplusplus || defined _MSC_VER) 393 #else 395 394 typedef signed char yytype_int8; 396 #else397 typedef short int yytype_int8;398 395 #endif 399 396 … … 415 412 # elif defined size_t 416 413 # 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 419 415 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 420 416 # define YYSIZE_T size_t … … 430 426 # if ENABLE_NLS 431 427 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 432 # define YY_( msgid) dgettext ("bison-runtime", msgid)428 # define YY_(Msgid) dgettext ("bison-runtime", Msgid) 433 429 # endif 434 430 # endif 435 431 # ifndef YY_ 436 # define YY_( msgid) msgid432 # define YY_(Msgid) Msgid 437 433 # endif 438 434 #endif 439 435 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 440 463 /* Suppress unused-variable warnings by "using" E. */ 441 464 #if ! defined lint || defined __GNUC__ 442 # define YYUSE( e) ((void) (e))465 # define YYUSE(E) ((void) (E)) 443 466 #else 444 # define YYUSE( e) /* empty */467 # define YYUSE(E) /* empty */ 445 468 #endif 446 469 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") 450 478 #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 459 480 #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 463 484 #endif 485 #ifndef YY_INITIAL_VALUE 486 # define YY_INITIAL_VALUE(Value) /* Nothing. */ 487 #endif 488 464 489 465 490 #if ! defined yyoverflow || YYERROR_VERBOSE … … 480 505 # else 481 506 # 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 484 508 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 509 /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 485 510 # ifndef EXIT_SUCCESS 486 511 # define EXIT_SUCCESS 0 … … 492 517 493 518 # 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) 496 521 # ifndef YYSTACK_ALLOC_MAXIMUM 497 522 /* The OS might guarantee only one guard page at the bottom of the stack, … … 509 534 # if (defined __cplusplus && ! defined EXIT_SUCCESS \ 510 535 && ! ((defined YYMALLOC || defined malloc) \ 511 536 && (defined YYFREE || defined free))) 512 537 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 513 538 # ifndef EXIT_SUCCESS … … 517 542 # ifndef YYMALLOC 518 543 # 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 521 545 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 522 546 # endif … … 524 548 # ifndef YYFREE 525 549 # 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 528 551 void free (void *); /* INFRINGES ON USER NAME SPACE */ 529 552 # endif … … 535 558 #if (! defined yyoverflow \ 536 559 && (! defined __cplusplus \ 537 560 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 538 561 539 562 /* A type that is properly aligned for any stack member. */ … … 560 583 stack. Advance YYPTR to a properly aligned location for the next 561 584 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 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) 572 595 573 596 #endif 574 597 575 598 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED 576 /* Copy COUNT objects from FROM to TO. The source and destination do599 /* Copy COUNT objects from SRC to DST. The source and destination do 577 600 not overlap. */ 578 601 # ifndef YYCOPY 579 602 # 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))) 582 605 # 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) 591 614 # endif 592 615 # endif … … 594 617 595 618 /* YYFINAL -- State number of the termination state. */ 596 #define YYFINAL 25 1619 #define YYFINAL 250 597 620 /* YYLAST -- Last index in YYTABLE. */ 598 #define YYLAST 109 69621 #define YYLAST 10977 599 622 600 623 /* YYNTOKENS -- Number of terminals. */ 601 624 #define YYNTOKENS 133 602 625 /* YYNNTS -- Number of nonterminals. */ 603 #define YYNNTS 24 1626 #define YYNNTS 240 604 627 /* 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. */ 610 634 #define YYUNDEFTOK 2 611 635 #define YYMAXUTOK 363 612 636 613 #define YYTRANSLATE(YYX) 637 #define YYTRANSLATE(YYX) \ 614 638 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 615 639 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. */ 617 642 static const yytype_uint8 yytranslate[] = 618 643 { … … 620 645 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 621 646 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 622 2, 2, 2, 12 2, 2, 2, 2, 125, 119, 2,623 109, 110, 11 8, 120, 116, 121, 113, 124, 2, 2,624 2, 2, 2, 2, 2, 2, 2, 2, 1 17, 132,625 12 6, 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, 626 651 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 627 652 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 628 2, 111, 2, 112, 12 8, 2, 2, 2, 2, 2,653 2, 111, 2, 112, 127, 2, 2, 2, 2, 2, 629 654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 630 655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 631 2, 2, 2, 114, 12 9, 115, 123, 2, 2, 2,656 2, 2, 2, 114, 128, 115, 122, 2, 2, 2, 632 657 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 633 658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … … 657 682 658 683 #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. */ 1021 685 static const yytype_uint16 yyrline[] = 1022 686 { 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 1099 762 }; 1100 763 #endif 1101 764 1102 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE765 #if YYDEBUG || YYERROR_VERBOSE || 0 1103 766 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 1104 767 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ … … 1122 785 "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign", 1123 786 "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN", 1124 "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "' :'", "'*'",1125 "' &'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",1126 "' |'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",787 "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'", 788 "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", 789 "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant", 1127 790 "identifier", "no_01_identifier", "no_attr_identifier", "zero_one", 1128 791 "string_literal_list", "primary_expression", "postfix_expression", … … 1157 820 "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1", 1158 821 "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", 1165 827 "new_field_declaring_list", "field_declaring_list", "field_declarator", 1166 828 "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name", … … 1209 871 "new_abstract_declarator_no_tuple", "new_abstract_ptr", 1210 872 "new_abstract_array", "new_abstract_tuple", "new_abstract_function", 1211 "comma_opt", "assignment_opt", 0873 "comma_opt", "assignment_opt", YY_NULLPTR 1212 874 }; 1213 875 #endif 1214 876 1215 877 # ifdef YYPRINT 1216 /* YYTOKNUM[ YYLEX-NUM] -- Internal token number corresponding to1217 token YYLEX-NUM. */878 /* YYTOKNUM[NUM] -- (External) token number corresponding to the 879 (internal) symbol number NUM (which must be that of a token). */ 1218 880 static const yytype_uint16 yytoknum[] = 1219 881 { … … 1229 891 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 1230 892 355, 356, 357, 358, 359, 360, 361, 362, 363, 40, 1231 41, 91, 93, 46, 123, 125, 44, 58, 42, 38,1232 4 3, 45, 33, 126, 47, 37, 60, 62, 94, 124,1233 63, 61, 59893 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 1234 896 }; 1235 897 # endif 1236 898 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. */ 911 static const yytype_int16 yypact[] = 1239 912 { 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 1316 1069 }; 1317 1070 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. */ 1402 1074 static const yytype_uint16 yydefact[] = 1403 1075 { 1404 29 4, 294, 315, 313, 316, 314, 317, 318, 300, 302,1405 301, 0, 303, 329, 321, 326, 324, 325, 323, 322,1406 32 7, 328, 333, 330, 331, 332, 549, 549, 549, 0,1407 0, 0, 29 4, 220, 304, 319, 320, 7, 360, 0,1408 8, 14, 15, 0, 2, 6 3, 64, 567, 9, 294,1409 52 7, 525, 247, 3, 455, 3, 260, 0, 3, 3,1410 3, 24 8, 3, 0, 0, 0, 295, 296, 298, 294,1411 30 7, 310, 312, 341, 286, 334, 339, 287, 349, 288,1412 3 56, 353, 363, 0, 0, 364, 289, 475, 479, 3,1413 3, 0, 2, 521, 526, 531, 299, 0, 0, 549,1414 5 79, 549, 2, 590, 591, 592, 294, 0, 733, 734,1415 0, 12, 0, 13, 294, 270, 271, 0, 295, 290,1416 2 91, 292, 293, 528, 305, 393, 550, 551, 371, 372,1417 12, 446, 447, 11, 442, 445, 0, 505, 500, 491,1418 44 6, 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 5 49, 564, 549, 549, 545, 2, 544, 549, 603, 549,1424 549, 606, 0, 0, 0, 294, 294, 313, 361, 2,1425 2 94, 261, 297, 308, 342, 354, 480, 0, 2, 0,1426 455, 262, 295, 335, 350, 357, 476, 0, 2, 0,1427 3 11, 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, 8 2, 87, 90, 92, 94, 96, 98, 100,1436 105, 497, 753, 453, 496, 0, 451, 452, 0, 568,1437 58 3, 586, 589, 595, 598, 601, 360, 0, 2, 741,1438 0, 294, 744, 2, 63, 294, 3, 427, 0, 435,1439 29 5, 294, 307, 334, 287, 349, 356, 3, 3, 409,1440 41 3, 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 60 2, 611, 604, 605, 0, 276, 294, 294, 340, 295,1447 0, 295, 0, 294, 736, 740, 738, 536, 294, 547,1448 2 55, 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 3 0, 35, 2, 0, 35, 111, 112, 113, 114, 115,1458 11 6, 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, 1459 1131 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 1562 1232 }; 1563 1233 1564 /* YYDEFGOTO[NTERM-NUM]. */ 1234 /* YYPGOTO[NTERM-NUM]. */ 1235 static 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]. */ 1565 1264 static const yytype_int16 yydefgoto[] = 1566 1265 { 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 1592 1290 }; 1593 1291 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. */ 1793 1295 static const yytype_int16 yytable[] = 1794 1296 { 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, 2036 1588 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, 2193 1603 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, 2285 1620 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, 2312 1653 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, 2361 1717 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, 2363 1726 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, 2401 1745 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, 2502 1780 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2503 1781 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, 2510 1794 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, 2522 1797 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, 2534 1812 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, 2542 1830 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, 2546 1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547 1908 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, 2554 1910 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, 2562 1912 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2563 1913 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2564 1914 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, 2566 1979 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, 2570 1983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2571 1984 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, 2574 1999 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2575 2000 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, 2578 2003 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, 2582 2007 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 2 9, 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, 2589 2014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2590 2015 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, 2593 2023 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2594 2024 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, 2597 2027 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, 2600 2030 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 2601 2031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2602 2032 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, 2605 2096 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2606 2097 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, … … 2609 2100 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2610 2101 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, 2612 2103 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, 2617 2159 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, 2620 2278 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2621 2279 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, 2623 2281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2624 2282 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, 2628 2381 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, 2631 2384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2632 2385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2633 2386 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, 2878 2388 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2879 2389 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, … … 2882 2392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2883 2393 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 2892 2395 }; 2893 2894 #define yypact_value_is_default(yystate) \2895 ((yystate) == (-1315))2896 2897 #define yytable_value_is_error(yytable_value) \2898 YYID (0)2899 2396 2900 2397 static const yytype_int16 yycheck[] = 2901 2398 { 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, 3143 2690 -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, 3274 2945 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, 3300 3003 -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, 3384 3014 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3385 3015 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, 3398 3022 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, 3403 3029 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3404 3030 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3405 3031 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, 3419 3042 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, 3441 3065 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3442 3066 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, 3645 3077 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3646 3078 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, … … 3653 3085 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3654 3086 -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, 3657 3125 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3658 3126 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, 3661 3129 -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, 3706 3131 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3707 3132 -1, -1, -1, -1, -1, 83, 84, -1, -1, -1, 3708 3133 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3709 3134 -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, 3712 3198 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3713 3199 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, … … 3716 3202 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3717 3203 -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, 3719 3205 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3720 3206 -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, 3742 3209 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3743 3210 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, 3746 3213 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3747 3214 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, … … 3751 3218 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3752 3219 -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, 3754 3221 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3755 3222 -1, -1, -1, 67, -1, 69, -1, 71, -1, -1, … … 3758 3225 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3759 3226 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, 3761 3228 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3762 3229 -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, 3764 3264 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3765 3265 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, 3768 3306 -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, 3772 3316 -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, 3783 3320 -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, 3787 3323 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, 3795 3348 -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, 3798 3380 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3799 3381 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, 3806 3383 -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,3817 3384 -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, 3829 3392 -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, 3909 3396 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, 3910 3397 -1, 57, -1, -1, -1, 61, 62, -1, 64, -1, … … 3914 3401 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3915 3402 -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, 3918 3405 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3919 3406 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, … … 3927 3414 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3928 3415 -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, 3941 3419 -1, -1, 57, -1, -1, -1, 61, 62, -1, 64, 3942 3420 -1, 66, -1, -1, -1, -1, -1, 72, -1, -1, 3943 3421 -1, 76, -1, -1, 79, 80, 81, 82, 83, 84, 3944 3422 -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, 3946 3424 -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, 3949 3430 -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, 3956 3454 -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, 3970 3476 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, 3972 3478 -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, 3973 3479 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3974 3480 -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, 3981 3486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3982 3487 -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, 3985 3490 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3986 3491 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, … … 3989 3494 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3990 3495 -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 3999 3497 }; 4000 3498 4001 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing4002 symbol of state STATE-NUM. */3499 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 3500 symbol of state STATE-NUM. */ 4003 3501 static const yytype_uint16 yystos[] = 4004 3502 { … … 4007 3505 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 4008 3506 36, 39, 40, 64, 67, 69, 71, 72, 74, 75, 4009 76, 83, 84, 109, 111, 11 8, 119, 137, 140, 149,3507 76, 83, 84, 109, 111, 117, 118, 137, 140, 149, 4010 3508 198, 212, 213, 214, 215, 216, 217, 218, 219, 220, 4011 3509 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, 4146 3642 135, 112, 112, 134, 135, 112, 171, 44, 45, 114, 4147 3643 181, 182, 183, 169, 171, 135, 110, 170, 114, 183, 4148 96, 134, 96, 134, 109, 109, 132, 115, 134, 27 2,4149 30 9, 115, 116, 117, 163, 110, 112, 164, 135, 146,4150 1 46, 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 2 05, 173, 197, 225, 366, 173, 197, 110, 134, 110,4156 1 34, 115, 110, 116, 164, 112, 112, 163, 179, 182,4157 18 4, 185, 134, 132, 182, 186, 187, 135, 109, 149,4158 309, 357, 139, 135, 173, 197, 173, 197, 109, 132,4159 1 39, 171, 176, 115, 182, 212, 170, 56, 176, 189,4160 11 5, 182, 110, 227, 110, 135, 135, 292, 171, 176,4161 1 32, 188, 189, 176, 189, 173, 173, 110, 110, 110,4162 1 88, 135, 135, 173, 173, 135, 1353644 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 4163 3659 }; 4164 3660 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. */ 3662 static 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. */ 3742 static 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 4189 3831 4190 3832 #define YYRECOVERING() (!!yyerrstatus) 4191 3833 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) \ 3835 do \ 3836 if (yychar == YYEMPTY) \ 3837 { \ 3838 yychar = (Token); \ 3839 yylval = (Value); \ 3840 YYPOPSTACK (yylen); \ 3841 yystate = *yyssp; \ 3842 goto yybackup; \ 3843 } \ 3844 else \ 3845 { \ 4203 3846 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 } \ 3849 while (0) 3850 3851 /* Error token number */ 3852 #define YYTERROR 1 3853 #define YYERRCODE 256 3854 3855 4253 3856 4254 3857 /* Enable debugging if requested. */ … … 4260 3863 # endif 4261 3864 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) \ 3866 do { \ 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) \ 3878 do { \ 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 4287 3893 static void 4288 3894 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 4289 #else4290 static void4291 yy_symbol_value_print (yyoutput, yytype, yyvaluep)4292 FILE *yyoutput;4293 int yytype;4294 YYSTYPE const * const yyvaluep;4295 #endif4296 3895 { 3896 FILE *yyo = yyoutput; 3897 YYUSE (yyo); 4297 3898 if (!yyvaluep) 4298 3899 return; … … 4300 3901 if (yytype < YYNTOKENS) 4301 3902 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 4302 # else4303 YYUSE (yyoutput);4304 3903 # endif 4305 switch (yytype) 4306 { 4307 default: 4308 break; 4309 } 3904 YYUSE (yytype); 4310 3905 } 4311 3906 … … 4315 3910 `--------------------------------*/ 4316 3911 4317 #if (defined __STDC__ || defined __C99__FUNC__ \4318 || defined __cplusplus || defined _MSC_VER)4319 3912 static void 4320 3913 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) 4321 #else4322 static void4323 yy_symbol_print (yyoutput, yytype, yyvaluep)4324 FILE *yyoutput;4325 int yytype;4326 YYSTYPE const * const yyvaluep;4327 #endif4328 3914 { 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]); 4333 3917 4334 3918 yy_symbol_value_print (yyoutput, yytype, yyvaluep); … … 4341 3925 `------------------------------------------------------------------*/ 4342 3926 4343 #if (defined __STDC__ || defined __C99__FUNC__ \4344 || defined __cplusplus || defined _MSC_VER)4345 3927 static void 4346 3928 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 4347 #else4348 static void4349 yy_stack_print (yybottom, yytop)4350 yytype_int16 *yybottom;4351 yytype_int16 *yytop;4352 #endif4353 3929 { 4354 3930 YYFPRINTF (stderr, "Stack now"); … … 4361 3937 } 4362 3938 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) \ 3940 do { \ 3941 if (yydebug) \ 3942 yy_stack_print ((Bottom), (Top)); \ 3943 } while (0) 4368 3944 4369 3945 … … 4372 3948 `------------------------------------------------*/ 4373 3949 4374 #if (defined __STDC__ || defined __C99__FUNC__ \4375 || defined __cplusplus || defined _MSC_VER)4376 3950 static 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 3951 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) 4384 3952 { 3953 unsigned long int yylno = yyrline[yyrule]; 4385 3954 int yynrhs = yyr2[yyrule]; 4386 3955 int yyi; 4387 unsigned long int yylno = yyrline[yyrule];4388 3956 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 4389 3957 yyrule - 1, yylno); 4390 3958 /* The symbols being reduced. */ 4391 3959 for (yyi = 0; yyi < yynrhs; yyi++) 4392 3960 { 4393 3961 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 ); 4397 3966 YYFPRINTF (stderr, "\n"); 4398 3967 } 4399 3968 } 4400 3969 4401 # define YY_REDUCE_PRINT(Rule) 4402 do { 4403 if (yydebug) 4404 yy_reduce_print (yy vsp, Rule); \4405 } while ( YYID (0))3970 # define YY_REDUCE_PRINT(Rule) \ 3971 do { \ 3972 if (yydebug) \ 3973 yy_reduce_print (yyssp, yyvsp, Rule); \ 3974 } while (0) 4406 3975 4407 3976 /* Nonzero means print parse trace. It is left uninitialized so that … … 4417 3986 4418 3987 /* YYINITDEPTH -- initial size of the parser's stacks. */ 4419 #ifndef 3988 #ifndef YYINITDEPTH 4420 3989 # define YYINITDEPTH 200 4421 3990 #endif … … 4440 4009 # else 4441 4010 /* Return the length of YYSTR. */ 4442 #if (defined __STDC__ || defined __C99__FUNC__ \4443 || defined __cplusplus || defined _MSC_VER)4444 4011 static YYSIZE_T 4445 4012 yystrlen (const char *yystr) 4446 #else4447 static YYSIZE_T4448 yystrlen (yystr)4449 const char *yystr;4450 #endif4451 4013 { 4452 4014 YYSIZE_T yylen; … … 4464 4026 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 4465 4027 YYDEST. */ 4466 #if (defined __STDC__ || defined __C99__FUNC__ \4467 || defined __cplusplus || defined _MSC_VER)4468 4028 static char * 4469 4029 yystpcpy (char *yydest, const char *yysrc) 4470 #else4471 static char *4472 yystpcpy (yydest, yysrc)4473 char *yydest;4474 const char *yysrc;4475 #endif4476 4030 { 4477 4031 char *yyd = yydest; … … 4503 4057 4504 4058 for (;;) 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 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 } 4526 4080 do_not_strip_quotes: ; 4527 4081 } … … 4546 4100 yytype_int16 *yyssp, int yytoken) 4547 4101 { 4548 YYSIZE_T yysize0 = yytnamerr ( 0, yytname[yytoken]);4102 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); 4549 4103 YYSIZE_T yysize = yysize0; 4550 YYSIZE_T yysize1;4551 4104 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 4552 4105 /* Internationalized format string. */ 4553 const char *yyformat = 0;4106 const char *yyformat = YY_NULLPTR; 4554 4107 /* Arguments of yyformat. */ 4555 4108 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; … … 4559 4112 4560 4113 /* There are many possibilities here to consider: 4561 - Assume YYFAIL is not used. It's too flawed to consider. See4562 <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>4563 for details. YYERROR is fine as it does not invoke this4564 function.4565 4114 - If this state is a consistent state with a default action, then 4566 4115 the only way this function was invoked is if the default action … … 4611 4160 } 4612 4161 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 } 4618 4169 } 4619 4170 } … … 4635 4186 } 4636 4187 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 } 4641 4194 4642 4195 if (*yymsg_alloc < yysize) … … 4675 4228 `-----------------------------------------------*/ 4676 4229 4677 /*ARGSUSED*/4678 #if (defined __STDC__ || defined __C99__FUNC__ \4679 || defined __cplusplus || defined _MSC_VER)4680 4230 static void 4681 4231 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) 4682 #else4683 static void4684 yydestruct (yymsg, yytype, yyvaluep)4685 const char *yymsg;4686 int yytype;4687 YYSTYPE *yyvaluep;4688 #endif4689 4232 { 4690 4233 YYUSE (yyvaluep); 4691 4692 4234 if (!yymsg) 4693 4235 yymsg = "Deleting"; 4694 4236 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 4695 4237 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 4702 4241 } 4703 4242 4704 4243 4705 /* Prevent warnings from -Wmissing-prototypes. */4706 #ifdef YYPARSE_PARAM4707 #if defined __STDC__ || defined __cplusplus4708 int yyparse (void *YYPARSE_PARAM);4709 #else4710 int yyparse ();4711 #endif4712 #else /* ! YYPARSE_PARAM */4713 #if defined __STDC__ || defined __cplusplus4714 int yyparse (void);4715 #else4716 int yyparse ();4717 #endif4718 #endif /* ! YYPARSE_PARAM */4719 4244 4720 4245 … … 4724 4249 /* The semantic value of the lookahead symbol. */ 4725 4250 YYSTYPE yylval; 4726 4727 4251 /* Number of syntax errors so far. */ 4728 4252 int yynerrs; … … 4733 4257 `----------*/ 4734 4258 4735 #ifdef YYPARSE_PARAM4736 #if (defined __STDC__ || defined __C99__FUNC__ \4737 || defined __cplusplus || defined _MSC_VER)4738 int4739 yyparse (void *YYPARSE_PARAM)4740 #else4741 int4742 yyparse (YYPARSE_PARAM)4743 void *YYPARSE_PARAM;4744 #endif4745 #else /* ! YYPARSE_PARAM */4746 #if (defined __STDC__ || defined __C99__FUNC__ \4747 || defined __cplusplus || defined _MSC_VER)4748 4259 int 4749 4260 yyparse (void) 4750 #else4751 int4752 yyparse ()4753 4754 #endif4755 #endif4756 4261 { 4757 4262 int yystate; … … 4760 4265 4761 4266 /* The stacks and their tools: 4762 `yyss': related to states.4763 `yyvs': related to semantic values.4764 4765 Refer to the stacks thr useparate pointers, to allow yyoverflow4267 'yyss': related to states. 4268 'yyvs': related to semantic values. 4269 4270 Refer to the stacks through separate pointers, to allow yyoverflow 4766 4271 to reallocate them elsewhere. */ 4767 4272 … … 4781 4286 int yyresult; 4782 4287 /* Lookahead token as an internal (translated) token number. */ 4783 int yytoken ;4288 int yytoken = 0; 4784 4289 /* The variables used to return semantic value and location from the 4785 4290 action routines. */ … … 4799 4304 int yylen = 0; 4800 4305 4801 yytoken = 0; 4802 yyss = yyssa; 4803 yyvs = yyvsa; 4306 yyssp = yyss = yyssa; 4307 yyvsp = yyvs = yyvsa; 4804 4308 yystacksize = YYINITDEPTH; 4805 4309 … … 4810 4314 yynerrs = 0; 4811 4315 yychar = YYEMPTY; /* Cause a token to be read. */ 4812 4813 /* Initialize stack pointers.4814 Waste one element of value and location stack4815 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 4820 4316 goto yysetstate; 4821 4317 … … 4838 4334 #ifdef yyoverflow 4839 4335 { 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 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; 4857 4353 } 4858 4354 #else /* no yyoverflow */ … … 4862 4358 /* Extend the stack our own way. */ 4863 4359 if (YYMAXDEPTH <= yystacksize) 4864 4360 goto yyexhaustedlab; 4865 4361 yystacksize *= 2; 4866 4362 if (YYMAXDEPTH < yystacksize) 4867 4363 yystacksize = YYMAXDEPTH; 4868 4364 4869 4365 { 4870 4871 4872 4873 4874 4875 4876 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); 4877 4373 # undef YYSTACK_RELOCATE 4878 4879 4374 if (yyss1 != yyssa) 4375 YYSTACK_FREE (yyss1); 4880 4376 } 4881 4377 # endif … … 4886 4382 4887 4383 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 4888 4384 (unsigned long int) yystacksize)); 4889 4385 4890 4386 if (yyss + yystacksize - 1 <= yyssp) 4891 4387 YYABORT; 4892 4388 } 4893 4389 … … 4918 4414 { 4919 4415 YYDPRINTF ((stderr, "Reading a token: ")); 4920 yychar = YYLEX;4416 yychar = yylex (); 4921 4417 } 4922 4418 … … 4958 4454 4959 4455 yystate = yyn; 4456 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 4960 4457 *++yyvsp = yylval; 4458 YY_IGNORE_MAYBE_UNINITIALIZED_END 4961 4459 4962 4460 goto yynewstate; … … 4981 4479 4982 4480 /* If YYLEN is nonzero, implement the default value of the action: 4983 `$$ = $1'.4481 '$$ = $1'. 4984 4482 4985 4483 Otherwise, the following line sets YYVAL to garbage. … … 4995 4493 { 4996 4494 case 2: 4997 4998 /* Line 1806 of yacc.c */ 4999 #line 296 "parser.yy" 4495 #line 298 "parser.yy" /* yacc.c:1646 */ 5000 4496 { 5001 4497 typedefTable.enterScope(); 5002 4498 } 4499 #line 4500 "Parser/parser.cc" /* yacc.c:1646 */ 5003 4500 break; 5004 4501 5005 4502 case 3: 5006 5007 /* Line 1806 of yacc.c */ 5008 #line 302 "parser.yy" 4503 #line 304 "parser.yy" /* yacc.c:1646 */ 5009 4504 { 5010 4505 typedefTable.leaveScope(); 5011 4506 } 4507 #line 4508 "Parser/parser.cc" /* yacc.c:1646 */ 5012 4508 break; 5013 4509 5014 4510 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 */ 5019 4514 break; 5020 4515 5021 4516 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 */ 5026 4520 break; 5027 4521 5028 4522 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 */ 5033 4526 break; 5034 4527 5035 4528 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 */ 5040 4532 break; 5041 4533 5042 4534 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); 5050 4540 } 4541 #line 4542 "Parser/parser.cc" /* yacc.c:1646 */ 5051 4542 break; 5052 4543 5053 4544 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 */ 5058 4548 break; 5059 4549 5060 4550 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 */ 5065 4554 break; 5066 4555 5067 4556 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 */ 5072 4560 break; 5073 4561 5074 4562 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 */ 5079 4566 break; 5080 4567 5081 4568 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 */ 5086 4572 break; 5087 4573 5088 4574 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 */ 5093 4578 break; 5094 4579 5095 4580 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 */ 5100 4584 break; 5101 4585 5102 4586 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 */ 5107 4590 break; 5108 4591 5109 4592 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 */ 5114 4596 break; 5115 4597 5116 4598 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 */ 5121 4602 break; 5122 4603 5123 4604 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 */ 5128 4608 break; 5129 4609 5130 4610 case 32: 5131 5132 /* Line 1806 of yacc.c */ 5133 #line 385 "parser.yy" 4611 #line 387 "parser.yy" /* yacc.c:1646 */ 5134 4612 { 5135 4613 Token fn; 5136 4614 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) ) ) ); 5138 4616 } 4617 #line 4618 "Parser/parser.cc" /* yacc.c:1646 */ 5139 4618 break; 5140 4619 5141 4620 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 */ 5146 4624 break; 5147 4625 5148 4626 case 35: 5149 5150 /* Line 1806 of yacc.c */ 5151 #line 400 "parser.yy" 4627 #line 402 "parser.yy" /* yacc.c:1646 */ 5152 4628 { (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 */ 5160 4630 break; 5161 4631 5162 4632 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 */ 5167 4636 break; 5168 4637 5169 4638 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 */ 5174 4648 break; 5175 4649 5176 4650 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 */ 5181 4654 break; 5182 4655 5183 4656 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 */ 5188 4660 break; 5189 4661 5190 4662 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 */ 5202 4666 break; 5203 4667 5204 4668 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 */ 5209 4672 break; 5210 4673 5211 4674 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 */ 5216 4684 break; 5217 4685 5218 4686 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) ) { 5245 4690 case OperKinds::AddressOf: 5246 (yyval.en) = new CompositeExprNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );4691 (yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) ); 5247 4692 break; 5248 4693 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) ) ); 5250 4695 break; 5251 4696 default: … … 5253 4698 } 5254 4699 } 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 */ 5255 4719 break; 5256 4720 5257 4721 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 */ 5262 4725 break; 5263 4726 5264 4727 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 */ 5269 4731 break; 5270 4732 5271 4733 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 */ 5276 4737 break; 5277 4738 5278 4739 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 */ 5283 4743 break; 5284 4744 5285 4745 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 */ 5290 4749 break; 5291 4750 5292 4751 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 */ 5297 4755 break; 5298 4756 5299 4757 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 */ 5304 4761 break; 5305 4762 5306 4763 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 */ 5311 4767 break; 5312 4768 5313 4769 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 */ 5318 4773 break; 5319 4774 5320 4775 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 */ 5325 4779 break; 5326 4780 5327 4781 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 */ 5332 4785 break; 5333 4786 5334 4787 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 */ 5339 4791 break; 5340 4792 5341 4793 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 */ 5346 4797 break; 5347 4798 5348 4799 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 */ 5360 4803 break; 5361 4804 5362 4805 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 */ 5367 4809 break; 5368 4810 5369 4811 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 */ 5374 4815 break; 5375 4816 5376 4817 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 */ 5381 4821 break; 5382 4822 5383 4823 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 */ 5395 4833 break; 5396 4834 5397 4835 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 */ 5402 4839 break; 5403 4840 5404 4841 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 */ 5409 4845 break; 5410 4846 5411 4847 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 */ 5416 4851 break; 5417 4852 5418 4853 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 */ 5423 4857 break; 5424 4858 5425 4859 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 */ 5430 4863 break; 5431 4864 5432 4865 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 */ 5437 4875 break; 5438 4876 5439 4877 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 */ 5451 4881 break; 5452 4882 5453 4883 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 */ 5458 4887 break; 5459 4888 5460 4889 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 */ 5465 4893 break; 5466 4894 5467 4895 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 */ 5507 4929 break; 5508 4930 5509 4931 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 */ 5528 4941 break; 5529 4942 5530 4943 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 */ 5542 4959 break; 5543 4960 5544 4961 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 */ 5549 4965 break; 5550 4966 5551 4967 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 */ 5556 4977 break; 5557 4978 5558 4979 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 */ 5563 4983 break; 5564 4984 5565 4985 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 */ 5570 4989 break; 5571 4990 5572 4991 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 */ 5577 4995 break; 5578 4996 5579 4997 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 */ 5584 5001 break; 5585 5002 5586 5003 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 */ 5591 5007 break; 5592 5008 5593 5009 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 */ 5598 5013 break; 5599 5014 5600 5015 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 */ 5605 5019 break; 5606 5020 5607 5021 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 */ 5612 5025 break; 5613 5026 5614 5027 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 */ 5619 5031 break; 5620 5032 5621 5033 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 */ 5626 5037 break; 5627 5038 5628 5039 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 */ 5633 5043 break; 5634 5044 5635 5045 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 */ 5647 5049 break; 5648 5050 5649 5051 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 */ 5661 5061 break; 5662 5062 5663 5063 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 */ 5681 5065 { (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 */ 5695 5077 { 5696 5078 Token fn; 5697 5079 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) ) ) ) ) ); 5699 5081 } 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) ); 5708 5089 } 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 */ 5709 5103 break; 5710 5104 5711 5105 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 */ 5716 5109 break; 5717 5110 5718 5111 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 */ 5723 5125 break; 5724 5126 5725 5127 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 */ 5748 5131 break; 5749 5132 5750 5133 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 */ 5755 5149 break; 5756 5150 5757 5151 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 */ 5762 5155 break; 5763 5156 5764 5157 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 */ 5769 5161 break; 5770 5162 5771 5163 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) ) ); 5798 5167 // The semantics of the declaration list is changed to include associated initialization, which is performed 5799 5168 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound … … 5801 5170 // therefore, are removed from the grammar even though C allows it. The change also applies to choose 5802 5171 // 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; 5804 5173 } 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 */ 5805 5196 break; 5806 5197 5807 5198 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) ) ); 5821 5466 } 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) ); 6083 5475 } 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 */ 6140 5477 break; 6141 5478 6142 5479 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) ); 6149 5490 } 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 */ 6156 5628 { 6157 5629 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) ); 6159 5631 } 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 */ 6173 5637 { 6174 5638 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) );; 6176 5640 } 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 */ 6331 5651 break; 6332 5652 6333 5653 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 */ 6337 5682 { 6338 5683 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6339 (yyval.decl) = (yyvsp[ (1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in));5684 (yyval.decl) = (yyvsp[0].decl); 6340 5685 } 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 */ 6347 5691 { 6348 5692 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) ); 6350 5694 } 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) ); 6360 5703 } 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) ); 6370 5712 } 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) ) ); 6380 5721 } 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 ); 6390 5729 } 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 ); 6400 5737 } 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 ); 6410 5745 } 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(); 6420 5766 } 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(); 6430 5775 } 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) ) ); 6440 5784 } 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(); 6449 5793 } 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() ); 6458 5802 } 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(); 6467 5811 } 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 */ 6488 5817 { 6489 5818 typedefTable.addToEnclosingScope( TypedefTable::TD ); 6490 (yyval.decl) = (yyvsp[ (2) - (2)].decl)->addTypedef();5819 (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef(); 6491 5820 } 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 */ 6498 5826 { 6499 5827 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) ); 6501 5829 } 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 */ 6532 5831 break; 6533 5832 6534 5833 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 ); 6570 5837 (yyval.decl) = DeclarationNode::newName( 0 ); // XXX 6571 5838 } 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 ); 6580 5846 (yyval.decl) = DeclarationNode::newName( 0 ); // XXX 6581 5847 } 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 */ 6588 5853 { 6589 5854 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) ); 6591 5856 } 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 */ 6598 5862 { 6599 5863 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) ) ) ); 6601 5865 } 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 */ 6602 5873 break; 6603 5874 6604 5875 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 */ 6609 5879 break; 6610 5880 6611 5881 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 */ 6616 5897 break; 6617 5898 6618 5899 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 */ 6623 5903 break; 6624 5904 6625 5905 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 */ 6630 5909 break; 6631 5910 6632 5911 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 */ 6657 5913 { 6658 5914 typedefTable.enterScope(); 6659 5915 } 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 */ 6660 5932 break; 6661 5933 6662 5934 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 ); 6669 6221 } 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 */ 6999 6235 break; 7000 6236 7001 6237 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 */ 7006 6241 break; 7007 6242 7008 6243 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); 7015 6285 } 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 */ 7064 6414 { (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) ) ); 7089 6513 } 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) ) ); 7190 6522 } 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 */ 7239 6726 { (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 */ 7295 6753 { (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 ); 7354 6810 } 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) ); 7364 6819 } 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 ); 7626 6828 } 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 */ 7683 6830 break; 7684 6831 7685 6832 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) ); 7735 6836 typedefTable.enterScope(); 7736 6837 } 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 */ 7737 6855 break; 7738 6856 7739 6857 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); 7747 6862 } 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 */ 7748 6873 break; 7749 6874 7750 6875 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 */ 7755 6900 break; 7756 6901 7757 6902 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)) ); 7764 6937 } 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 */ 7862 6943 { 7863 6944 linkage = linkageStack.top(); 7864 6945 linkageStack.pop(); 7865 (yyval.decl) = (yyvsp[ (5) - (6)].decl);6946 (yyval.decl) = (yyvsp[-1].decl); 7866 6947 } 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 */ 7873 6953 { // 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() ) 7875 6955 iter->set_extension( true ); 7876 (yyval.decl) = (yyvsp[ (2) - (2)].decl);6956 (yyval.decl) = (yyvsp[0].decl); 7877 6957 } 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 */ 7884 6963 { 7885 6964 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7886 6965 typedefTable.leaveScope(); 7887 (yyval.decl) = (yyvsp[ (1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );6966 (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) ); 7888 6967 } 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 */ 7895 6973 { 7896 6974 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7897 6975 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) ); 7899 6977 } 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 */ 7906 6983 { 7907 6984 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7908 6985 typedefTable.leaveScope(); 7909 (yyval.decl) = (yyvsp[ (1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );6986 (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) ); 7910 6987 } 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 */ 7917 6993 { 7918 6994 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7919 6995 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) ); 7921 6997 } 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 */ 7928 7003 { 7929 7004 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7930 7005 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) ); 7932 7007 } 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 */ 7939 7013 { 7940 7014 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7941 7015 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) ); 7943 7017 } 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 */ 7950 7023 { 7951 7024 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7952 7025 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) ); 7954 7027 } 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 */ 7961 7033 { 7962 7034 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7963 7035 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) ); 7965 7037 } 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 */ 7972 7043 { 7973 7044 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7974 7045 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) ); 7976 7047 } 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 */ 7983 7053 { 7984 7054 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7985 7055 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) ); 7987 7057 } 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 */ 7994 7063 { 7995 7064 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7996 7065 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) ); 7998 7067 } 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 */ 8012 7079 { (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 */ 8026 7091 { (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 */ 8033 7097 {} 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 */ 8034 7123 break; 8035 7124 8036 7125 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 */ 8041 7129 break; 8042 7130 8043 7131 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 */ 8048 7135 break; 8049 7136 8050 7137 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 */ 8055 7144 break; 8056 7145 8057 7146 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 */ 8062 7156 break; 8063 7157 8064 7158 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 */ 8069 7162 break; 8070 7163 8071 7164 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 */ 8076 7168 break; 8077 7169 8078 7170 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) ); 8085 7511 } 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 */ 8485 7513 break; 8486 7514 8487 7515 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 */ 8492 7528 break; 8493 7529 8494 7530 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 */ 8499 7534 break; 8500 7535 8501 7536 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 */ 8506 7540 break; 8507 7541 8508 7542 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 */ 8516 7546 break; 8517 7547 8518 7548 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 */ 8526 7552 break; 8527 7553 8528 7554 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 */ 8533 7558 break; 8534 7559 8535 7560 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 */ 8547 7564 break; 8548 7565 8549 7566 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 */ 8554 7570 break; 8555 7571 8556 7572 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 */ 8561 7576 break; 8562 7577 8563 7578 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 */ 8568 7582 break; 8569 7583 8570 7584 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 */ 8575 7594 break; 8576 7595 8577 7596 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 */ 8582 7600 break; 8583 7601 8584 7602 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 */ 8595 7694 { (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 */ 8672 7766 { (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 */ 8728 7814 { (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 */ 8841 7816 break; 8842 7817 8843 7818 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 */ 8848 7828 break; 8849 7829 8850 7830 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 */ 8855 7834 break; 8856 7835 8857 7836 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 */ 8869 7840 break; 8870 7841 8871 7842 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 */ 8876 7846 break; 8877 7847 8878 7848 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 */ 8883 7852 break; 8884 7853 8885 7854 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 */ 8890 7858 break; 8891 7859 8892 7860 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 */ 8911 7870 break; 8912 7871 8913 7872 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 */ 8932 7888 break; 8933 7889 8934 7890 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 */ 8939 7906 break; 8940 7907 8941 7908 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 */ 8946 7912 break; 8947 7913 8948 7914 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 */ 8953 7918 break; 8954 7919 8955 7920 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 */ 8960 7924 break; 8961 7925 8962 7926 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 */ 8967 7930 break; 8968 7931 8969 7932 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 */ 8974 7936 break; 8975 7937 8976 7938 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 */ 8981 7942 break; 8982 7943 8983 7944 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 */ 8988 7948 break; 8989 7949 8990 7950 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 */ 8995 7954 break; 8996 7955 8997 7956 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 */ 9002 7960 break; 9003 7961 9004 7962 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 */ 9009 7966 break; 9010 7967 9011 7968 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 */ 9016 7972 break; 9017 7973 9018 7974 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 */ 9023 7978 break; 9024 7979 9025 7980 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 */ 9030 7984 break; 9031 7985 9032 7986 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 */ 9037 7990 break; 9038 7991 9039 7992 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 */ 9051 7996 break; 9052 7997 9053 7998 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 */ 9079 8008 break; 9080 8009 9081 8010 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 */ 9086 8032 break; 9087 8033 9088 8034 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 */ 9093 8038 break; 9094 8039 9095 8040 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 */ 9100 8044 break; 9101 8045 9102 8046 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 */ 9107 8050 break; 9108 8051 9109 8052 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 */ 9114 8056 break; 9115 8057 9116 8058 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 */ 9121 8062 break; 9122 8063 9123 8064 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 */ 9128 8068 break; 9129 8069 9130 8070 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 */ 9135 8074 break; 9136 8075 9137 8076 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 */ 9142 8080 break; 9143 8081 9144 8082 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 */ 9149 8086 break; 9150 8087 9151 8088 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 */ 9156 8092 break; 9157 8093 9158 8094 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 */ 9177 8098 break; 9178 8099 9179 8100 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 */ 9184 8104 break; 9185 8105 9186 8106 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 */ 9218 8114 default: break; 9219 8115 } … … 9237 8133 *++yyvsp = yyval; 9238 8134 9239 /* Now `shift' the result of the reduction. Determine what state8135 /* Now 'shift' the result of the reduction. Determine what state 9240 8136 that goes to, based on the state we popped back to and the rule 9241 8137 number reduced by. */ … … 9252 8148 9253 8149 9254 /*------------------------------------ .9255 | yyerrlab -- here on detecting error |9256 `------------------------------------ */8150 /*--------------------------------------. 8151 | yyerrlab -- here on detecting error. | 8152 `--------------------------------------*/ 9257 8153 yyerrlab: 9258 8154 /* Make sure we have latest lookahead translation. See comments at … … 9305 8201 { 9306 8202 /* If just tried and failed to reuse lookahead token after an 9307 8203 error, discard it. */ 9308 8204 9309 8205 if (yychar <= YYEOF) 9310 9311 9312 9313 9314 8206 { 8207 /* Return failure if at end of input. */ 8208 if (yychar == YYEOF) 8209 YYABORT; 8210 } 9315 8211 else 9316 9317 9318 9319 9320 8212 { 8213 yydestruct ("Error: discarding", 8214 yytoken, &yylval); 8215 yychar = YYEMPTY; 8216 } 9321 8217 } 9322 8218 … … 9337 8233 goto yyerrorlab; 9338 8234 9339 /* Do not reclaim the symbols of the rule wh ichaction triggered8235 /* Do not reclaim the symbols of the rule whose action triggered 9340 8236 this YYERROR. */ 9341 8237 YYPOPSTACK (yylen); … … 9350 8246 `-------------------------------------------------------------*/ 9351 8247 yyerrlab1: 9352 yyerrstatus = 3; 8248 yyerrstatus = 3; /* Each real token shifted decrements this. */ 9353 8249 9354 8250 for (;;) … … 9356 8252 yyn = yypact[yystate]; 9357 8253 if (!yypact_value_is_default (yyn)) 9358 9359 9360 9361 9362 9363 9364 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 } 9367 8263 9368 8264 /* Pop the current state because it cannot handle the error token. */ 9369 8265 if (yyssp == yyss) 9370 8266 YYABORT; 9371 8267 9372 8268 9373 8269 yydestruct ("Error: popping", 9374 8270 yystos[yystate], yyvsp); 9375 8271 YYPOPSTACK (1); 9376 8272 yystate = *yyssp; … … 9378 8274 } 9379 8275 8276 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 9380 8277 *++yyvsp = yylval; 8278 YY_IGNORE_MAYBE_UNINITIALIZED_END 9381 8279 9382 8280 … … 9402 8300 goto yyreturn; 9403 8301 9404 #if !defined (yyoverflow)|| YYERROR_VERBOSE8302 #if !defined yyoverflow || YYERROR_VERBOSE 9405 8303 /*-------------------------------------------------. 9406 8304 | yyexhaustedlab -- memory exhaustion comes here. | … … 9421 8319 yytoken, &yylval); 9422 8320 } 9423 /* Do not reclaim the symbols of the rule wh ichaction triggered8321 /* Do not reclaim the symbols of the rule whose action triggered 9424 8322 this YYABORT or YYACCEPT. */ 9425 8323 YYPOPSTACK (yylen); … … 9428 8326 { 9429 8327 yydestruct ("Cleanup: popping", 9430 8328 yystos[*yyssp], yyvsp); 9431 8329 YYPOPSTACK (1); 9432 8330 } … … 9439 8337 YYSTACK_FREE (yymsg); 9440 8338 #endif 9441 /* Make sure YYID is used. */ 9442 return YYID (yyresult); 8339 return yyresult; 9443 8340 } 9444 9445 9446 9447 /* Line 2067 of yacc.c */ 9448 #line 2867 "parser.yy" 8341 #line 2837 "parser.yy" /* yacc.c:1906 */ 9449 8342 9450 8343 // ----end of grammar---- 8344 8345 extern char *yytext; 9451 8346 9452 8347 void yyerror( const char * ) { … … 9463 8358 // compile-command: "make install" // 9464 8359 // 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. */ 2 2 3 3 /* Bison interface for Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989-1990, 2000-2011Free Software Foundation, Inc.6 4 5 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. 6 7 7 This program is free software: you can redistribute it and/or modify 8 8 it under the terms of the GNU General Public License as published by 9 9 the Free Software Foundation, either version 3 of the License, or 10 10 (at your option) any later version. 11 11 12 12 This program is distributed in the hope that it will be useful, 13 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 GNU General Public License for more details. 16 16 17 17 You should have received a copy of the GNU General Public License 18 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ … … 27 27 Bison output files to be licensed under the GNU General Public 28 28 License without this special exception. 29 29 30 30 This special exception was added by the Free Software Foundation in 31 31 version 2.2 of Bison. */ 32 32 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 40 extern int yydebug; 41 #endif 42 43 /* Token type. */ 35 44 #ifndef YYTOKENTYPE 36 45 # 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 }; 147 155 #endif 148 156 /* Tokens. */ … … 254 262 #define THEN 363 255 263 256 257 258 264 /* Value type. */ 259 265 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 260 typedef union YYSTYPE 266 typedef union YYSTYPE YYSTYPE; 267 union YYSTYPE 261 268 { 262 263 /* Line 2068 of yacc.c */ 264 #line 115 "parser.yy" 269 #line 115 "parser.yy" /* yacc.c:1909 */ 265 270 266 271 Token tok; … … 271 276 DeclarationNode::TypeClass tclass; 272 277 StatementNode *sn; 273 ConstantNode *constant; 278 ConstantExpr *constant; 279 ForCtl *fctl; 274 280 LabelNode *label; 275 281 InitializerNode *in; … … 277 283 bool flag; 278 284 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 }; 284 287 # define YYSTYPE_IS_TRIVIAL 1 285 # define yystype YYSTYPE /* obsolescent; will be withdrawn */286 288 # define YYSTYPE_IS_DECLARED 1 287 289 #endif 288 290 291 289 292 extern YYSTYPE yylval; 290 293 291 294 int yyparse (void); 295 296 #endif /* !YY_YY_PARSER_PARSER_H_INCLUDED */ -
src/Parser/parser.yy
r03da511 r04cdd9b 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 09:37:48201613 // Update Count : 1 76412 // Last Modified On : Thu Aug 18 23:49:10 2016 13 // Update Count : 1909 14 14 // 15 15 … … 43 43 #define YYDEBUG_LEXER_TEXT (yylval) // lexer loads this up each time 44 44 #define YYDEBUG 1 // get the pretty debugging code to compile 45 extern char *yytext;46 45 47 46 #undef __GNUC_MINOR__ … … 56 55 #include "LinkageSpec.h" 57 56 58 DeclarationNode *theTree = 0; // the resulting parse tree 59 LinkageSpec::Type linkage = LinkageSpec::Cforall; 60 std::stack< LinkageSpec::Type > linkageStack; 61 TypedefTable typedefTable; 57 extern DeclarationNode * parseTree; 58 extern LinkageSpec::Spec linkage; 59 extern TypedefTable typedefTable; 60 61 std::stack< LinkageSpec::Spec > linkageStack; 62 62 63 63 void appendStr( std::string &to, std::string *from ) { … … 121 121 DeclarationNode::TypeClass tclass; 122 122 StatementNode *sn; 123 ConstantNode *constant; 123 ConstantExpr *constant; 124 ForCtl *fctl; 124 125 LabelNode *label; 125 126 InitializerNode *in; … … 133 134 134 135 // expressions 135 %type< constant> constant136 %type<en> constant 136 137 %type<en> tuple tuple_expression_list 137 138 %type<op> ptrref_operator unary_operator assignment_operator … … 142 143 %type<en> constant_expression assignment_expression assignment_expression_opt 143 144 %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 145 147 %type<en> subrange 146 148 %type<en> asm_operands_opt asm_operands_list asm_operand 147 149 %type<label> label_list 148 %type< constant> asm_clobbers_list_opt150 %type<en> asm_clobbers_list_opt 149 151 %type<flag> asm_volatile_opt 150 152 … … 159 161 %type<sn> case_value_list case_label case_label_list 160 162 %type<sn> switch_clause_list_opt switch_clause_list choose_clause_list_opt choose_clause_list 161 %type< pn> handler_list handler_clause finally_clause163 %type<sn> handler_list handler_clause finally_clause 162 164 163 165 // declarations … … 221 223 %type<decl> paren_identifier paren_type 222 224 223 %type<decl> storage_class storage_class_ name storage_class_list225 %type<decl> storage_class storage_class_list 224 226 225 227 %type<decl> sue_declaration_specifier sue_type_specifier … … 309 311 constant: 310 312 // 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) ) ); } 314 316 ; 315 317 … … 336 338 337 339 string_literal_list: // juxtaposed strings are concatenated 338 STRINGliteral { $$ = build_constantStr( *$1); }340 STRINGliteral { $$ = build_constantStr( assign_strptr($1) ); } 339 341 | string_literal_list STRINGliteral 340 342 { 341 appendStr( $1->get_ expr()->get_constant()->get_value(), $2 );343 appendStr( $1->get_constant()->get_value(), $2 ); 342 344 delete $2; // allocated by lexer 343 345 $$ = $1; … … 349 351 primary_expression: 350 352 IDENTIFIER // typedef name cannot be used as a variable name 351 { $$ = new VarRefNode( $1); }353 { $$ = new ExpressionNode( build_varref( $1 ) ); } 352 354 | zero_one 353 { $$ = new VarRefNode( $1); }355 { $$ = new ExpressionNode( build_varref( $1 ) ); } 354 356 | '(' comma_expression ')' 355 357 { $$ = $2; } 356 358 | '(' compound_statement ')' // GCC, lambda expression 357 { $$ = new ValofExprNode( $2); }359 { $$ = new ExpressionNode( build_valexpr( $2 ) ); } 358 360 ; 359 361 … … 365 367 // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is 366 368 // 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 ) ); } 368 370 | postfix_expression '(' argument_expression_list ')' 369 { $$ = new CompositeExprNode( build_func( $1, $3 ) ); }371 { $$ = new ExpressionNode( build_func( $1, $3 ) ); } 370 372 // ambiguity with .0 so space required after field-selection, e.g. 371 373 // struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1; 372 374 | postfix_expression '.' no_attr_identifier 373 { $$ = new CompositeExprNode( build_fieldSel( $1, new VarRefNode( $3 ) ) ); }375 { $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); } 374 376 | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector 375 377 | postfix_expression ARROW no_attr_identifier 376 { $$ = new CompositeExprNode( build_pfieldSel( $1, new VarRefNode( $3 ) ) ); }378 { $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); } 377 379 | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector 378 380 | postfix_expression ICR 379 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); }381 { $$ = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); } 380 382 | postfix_expression DECR 381 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); }383 { $$ = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, $1 ) ); } 382 384 | '(' 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 ) ) ); } 384 386 | postfix_expression '{' argument_expression_list '}' // CFA 385 387 { 386 388 Token fn; 387 389 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 ) ) ); 389 391 } 390 392 ; … … 393 395 argument_expression 394 396 | argument_expression_list ',' argument_expression 395 { $$ = (ExpressionNode *)( $1->set_l ink( $3 )); }397 { $$ = (ExpressionNode *)( $1->set_last( $3 )); } 396 398 ; 397 399 … … 400 402 { $$ = 0; } // use default argument 401 403 | assignment_expression 402 | no_attr_identifier ':' assignment_expression403 { $$ = $3->set_argName( $1 ); }404 // Only a list of no_attr_identifier_or_type_name is allowed in this context. However, there is insufficient405 // look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used406 // with an appropriate semantic check.407 | '[' push assignment_expression pop ']' ':' assignment_expression408 { $$ = $7->set_argName( $3 ); }409 | '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression410 { $$ = $9->set_argName( new CompositeExprNode( build_tuple( (ExpressionNode *)$3->set_link( $5 ) ) ) ); }411 404 ; 412 405 413 406 field_list: // CFA, tuple field selector 414 407 field 415 | field_list ',' field { $$ = (ExpressionNode *)$1->set_l ink( $3 ); }408 | field_list ',' field { $$ = (ExpressionNode *)$1->set_last( $3 ); } 416 409 ; 417 410 418 411 field: // CFA, tuple field selector 419 412 no_attr_identifier 420 { $$ = new VarRefNode( $1); }413 { $$ = new ExpressionNode( build_varref( $1 ) ); } 421 414 // ambiguity with .0 so space required after field-selection, e.g. 422 415 // struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1; 423 416 | no_attr_identifier '.' field 424 { $$ = new CompositeExprNode( build_fieldSel( $3, new VarRefNode( $1 ) ) ); }417 { $$ = new ExpressionNode( build_fieldSel( $3, build_varref( $1 ) ) ); } 425 418 | 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 ) ) ); } 427 420 | no_attr_identifier ARROW field 428 { $$ = new CompositeExprNode( build_pfieldSel( $3, new VarRefNode( $1 ) ) ); }421 { $$ = new ExpressionNode( build_pfieldSel( $3, build_varref( $1 ) ) ); } 429 422 | 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 ) ) ); } 431 424 ; 432 425 … … 438 431 { $$ = $1; } 439 432 | string_literal_list 440 { $$ = $1; }433 { $$ = new ExpressionNode( $1 ); } 441 434 | EXTENSION cast_expression // GCC 442 435 { $$ = $2->set_extension( true ); } … … 448 441 switch ( $1 ) { 449 442 case OperKinds::AddressOf: 450 $$ = new CompositeExprNode( build_addressOf( $2 ) );443 $$ = new ExpressionNode( build_addressOf( $2 ) ); 451 444 break; 452 445 case OperKinds::PointTo: 453 $$ = new CompositeExprNode( build_unary_val( $1, $2 ) );446 $$ = new ExpressionNode( build_unary_val( $1, $2 ) ); 454 447 break; 455 448 default: … … 458 451 } 459 452 | unary_operator cast_expression 460 { $$ = new CompositeExprNode( build_unary_val( $1, $2 ) ); }453 { $$ = new ExpressionNode( build_unary_val( $1, $2 ) ); } 461 454 | ICR unary_expression 462 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::Incr, $2 ) ); }455 { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Incr, $2 ) ); } 463 456 | DECR unary_expression 464 { $$ = new CompositeExprNode( build_unary_ptr( OperKinds::Decr, $2 ) ); }457 { $$ = new ExpressionNode( build_unary_ptr( OperKinds::Decr, $2 ) ); } 465 458 | SIZEOF unary_expression 466 { $$ = new CompositeExprNode( build_sizeOf( $2 ) ); }459 { $$ = new ExpressionNode( build_sizeOfexpr( $2 ) ); } 467 460 | 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 ) ); } 469 466 | 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 ) ) ); } 471 468 | 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 ) ); } 473 472 | 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 ) ); } 481 474 // | 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 ) ); } 483 476 ; 484 477 … … 500 493 unary_expression 501 494 | '(' type_name_no_function ')' cast_expression 502 { $$ = new CompositeExprNode( build_cast( new TypeValueNode( $2 ), $4 ) ); }495 { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } 503 496 | '(' type_name_no_function ')' tuple 504 { $$ = new CompositeExprNode( build_cast( new TypeValueNode( $2 ), $4 ) ); }497 { $$ = new ExpressionNode( build_cast( $2, $4 ) ); } 505 498 ; 506 499 … … 508 501 cast_expression 509 502 | multiplicative_expression '*' cast_expression 510 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); }503 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mul, $1, $3 ) ); } 511 504 | multiplicative_expression '/' cast_expression 512 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Div, $1, $3 ) ); }505 { $$ = new ExpressionNode( build_binary_val( OperKinds::Div, $1, $3 ) ); } 513 506 | multiplicative_expression '%' cast_expression 514 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); }507 { $$ = new ExpressionNode( build_binary_val( OperKinds::Mod, $1, $3 ) ); } 515 508 ; 516 509 … … 518 511 multiplicative_expression 519 512 | additive_expression '+' multiplicative_expression 520 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Plus, $1, $3 ) ); }513 { $$ = new ExpressionNode( build_binary_val( OperKinds::Plus, $1, $3 ) ); } 521 514 | additive_expression '-' multiplicative_expression 522 { $$ = new CompositeExprNode( build_binary_val( OperKinds::Minus, $1, $3 ) ); }515 { $$ = new ExpressionNode( build_binary_val( OperKinds::Minus, $1, $3 ) ); } 523 516 ; 524 517 … … 526 519 additive_expression 527 520 | 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 ) ); } 529 522 | 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 ) ); } 531 524 ; 532 525 … … 534 527 shift_expression 535 528 | relational_expression '<' shift_expression 536 { $$ = new CompositeExprNode( build_binary_val( OperKinds::LThan, $1, $3 ) ); }529 { $$ = new ExpressionNode( build_binary_val( OperKinds::LThan, $1, $3 ) ); } 537 530 | relational_expression '>' shift_expression 538 { $$ = new CompositeExprNode( build_binary_val( OperKinds::GThan, $1, $3 ) ); }531 { $$ = new ExpressionNode( build_binary_val( OperKinds::GThan, $1, $3 ) ); } 539 532 | 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 ) ); } 541 534 | 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 ) ); } 543 536 ; 544 537 … … 546 539 relational_expression 547 540 | 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 ) ); } 549 542 | 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 ) ); } 551 544 ; 552 545 … … 554 547 equality_expression 555 548 | AND_expression '&' equality_expression 556 { $$ = new CompositeExprNode( build_binary_val( OperKinds::BitAnd, $1, $3 ) ); }549 { $$ = new ExpressionNode( build_binary_val( OperKinds::BitAnd, $1, $3 ) ); } 557 550 ; 558 551 … … 560 553 AND_expression 561 554 | 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 ) ); } 563 556 ; 564 557 … … 566 559 exclusive_OR_expression 567 560 | 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 ) ); } 569 562 ; 570 563 … … 572 565 inclusive_OR_expression 573 566 | 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 ) ); } 575 568 ; 576 569 … … 578 571 logical_AND_expression 579 572 | 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 ) ); } 581 574 ; 582 575 … … 584 577 logical_OR_expression 585 578 | logical_OR_expression '?' comma_expression ':' conditional_expression 586 { $$ = new CompositeExprNode( build_cond( $1, $3, $5 ) ); }579 { $$ = new ExpressionNode( build_cond( $1, $3, $5 ) ); } 587 580 // FIX ME: this hack computes $1 twice 588 581 | 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 ) ); } 590 583 | 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 ) ); } 592 585 ; 593 586 … … 600 593 conditional_expression 601 594 | unary_expression assignment_operator assignment_expression 602 { $$ = new CompositeExprNode( build_binary_ptr( $2, $1, $3 ) ); }595 { $$ = new ExpressionNode( build_binary_ptr( $2, $1, $3 ) ); } 603 596 | 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 ) ); } 605 598 ; 606 599 607 600 assignment_expression_opt: 608 601 // empty 609 { $$ = n ew NullExprNode; }602 { $$ = nullptr; } 610 603 | assignment_expression 611 604 ; … … 629 622 // comma_expression in new_identifier_parameter_array and new_abstract_array 630 623 '[' ']' 631 { $$ = new CompositeExprNode( build_tuple() ); }624 { $$ = new ExpressionNode( build_tuple() ); } 632 625 | '[' push assignment_expression pop ']' 633 { $$ = new CompositeExprNode( build_tuple( $3 ) ); }626 { $$ = new ExpressionNode( build_tuple( $3 ) ); } 634 627 | '[' 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 ) ) ); } 636 629 | '[' 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 ) ) ); } 638 631 ; 639 632 … … 641 634 assignment_expression_opt 642 635 | tuple_expression_list ',' assignment_expression_opt 643 { $$ = (ExpressionNode *)$1->set_l ink( $3 ); }636 { $$ = (ExpressionNode *)$1->set_last( $3 ); } 644 637 ; 645 638 … … 647 640 assignment_expression 648 641 | comma_expression ',' assignment_expression 649 { $$ = new CompositeExprNode( build_comma( $1, $3 ) ); }642 { $$ = new ExpressionNode( build_comma( $1, $3 ) ); } 650 643 ; 651 644 … … 671 664 Token fn; 672 665 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 ) ) ) ) ); 674 667 } 675 668 ; … … 685 678 compound_statement: 686 679 '{' '}' 687 { $$ = new CompoundStmtNode( (StatementNode *)0); }680 { $$ = new StatementNode( build_compound( (StatementNode *)0 ) ); } 688 681 | '{' 689 682 // Two scopes are necessary because the block itself has a scope, but every declaration within the block also … … 692 685 local_label_declaration_opt // GCC, local labels 693 686 block_item_list pop '}' // C99, intermix declarations and statements 694 { $$ = new CompoundStmtNode( $5); }687 { $$ = new StatementNode( build_compound( $5 ) ); } 695 688 ; 696 689 … … 698 691 block_item 699 692 | block_item_list push block_item 700 { if ( $1 != 0 ) { $1->set_l ink( $3 ); $$ = $1; } }693 { if ( $1 != 0 ) { $1->set_last( $3 ); $$ = $1; } } 701 694 ; 702 695 … … 706 699 | EXTENSION declaration // GCC 707 700 { // 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() ) 709 702 iter->set_extension( true ); 710 703 $$ = new StatementNode( $2 ); … … 718 711 statement 719 712 | statement_list statement 720 { if ( $1 != 0 ) { $1->set_l ink( $2 ); $$ = $1; } }713 { if ( $1 != 0 ) { $1->set_last( $2 ); $$ = $1; } } 721 714 ; 722 715 723 716 expression_statement: 724 717 comma_expression_opt ';' 725 { $$ = new StatementNode( StatementNode::Exp, $1, 0); }718 { $$ = new StatementNode( build_expr( $1 ) ); } 726 719 ; 727 720 … … 729 722 IF '(' comma_expression ')' statement %prec THEN 730 723 // 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 ) ); } 732 725 | IF '(' comma_expression ')' statement ELSE statement 733 { $$ = new StatementNode( StatementNode::If, $3, (StatementNode *)mkList((*$5, *$7 )) ); }726 { $$ = new StatementNode( build_if( $3, $5, $7 ) ); } 734 727 | SWITCH '(' comma_expression ')' case_clause // CFA 735 { $$ = new StatementNode( StatementNode::Switch, $3, $5); }728 { $$ = new StatementNode( build_switch( $3, $5 ) ); } 736 729 | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA 737 730 { 738 StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8);731 StatementNode *sw = new StatementNode( build_switch( $3, $8 ) ); 739 732 // The semantics of the declaration list is changed to include associated initialization, which is performed 740 733 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound … … 742 735 // therefore, are removed from the grammar even though C allows it. The change also applies to choose 743 736 // 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; 745 738 } 746 739 | CHOOSE '(' comma_expression ')' case_clause // CFA 747 { $$ = new StatementNode( StatementNode::Switch, $3, $5); }740 { $$ = new StatementNode( build_switch( $3, $5 ) ); } 748 741 | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA 749 742 { 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; 752 745 } 753 746 ; … … 759 752 constant_expression { $$ = $1; } 760 753 | constant_expression ELLIPSIS constant_expression // GCC, subrange 761 { $$ = new CompositeExprNode( build_range( $1, $3 ) ); }754 { $$ = new ExpressionNode( build_range( $1, $3 ) ); } 762 755 | subrange // CFA, subrange 763 756 ; 764 757 765 758 case_value_list: // CFA 766 case_value { $$ = new StatementNode( StatementNode::Case, $1, 0); }759 case_value { $$ = new StatementNode( build_case( $1 ) ); } 767 760 // 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_l ink( new StatementNode( StatementNode::Case, $3, 0) ) ); }761 | case_value_list ',' case_value { $$ = (StatementNode *)($1->set_last( new StatementNode( build_case( $3 ) ) ) ); } 769 762 ; 770 763 771 764 case_label: // CFA 772 765 CASE case_value_list ':' { $$ = $2; } 773 | DEFAULT ':' { $$ = new StatementNode( StatementNode::Default); }766 | DEFAULT ':' { $$ = new StatementNode( build_default() ); } 774 767 // A semantic check is required to ensure only one default clause per switch/choose statement. 775 768 ; … … 777 770 case_label_list: // CFA 778 771 case_label 779 | case_label_list case_label { $$ = (StatementNode *)( $1->set_l ink( $2 )); }772 | case_label_list case_label { $$ = (StatementNode *)( $1->set_last( $2 )); } 780 773 ; 781 774 782 775 case_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 ) ) ); } 784 777 ; 785 778 … … 792 785 switch_clause_list: // CFA 793 786 case_label_list statement_list 794 { $$ = $1->append_last_case( new CompoundStmtNode( $2) ); }787 { $$ = $1->append_last_case( new StatementNode( build_compound( $2 ) ) ); } 795 788 | switch_clause_list case_label_list statement_list 796 { $$ = (StatementNode *)( $1->set_l ink( $2->append_last_case( new CompoundStmtNode( $3) ) ) ); }789 { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( $3 ) ) ) ) ); } 797 790 ; 798 791 … … 807 800 { $$ = $1->append_last_case( $2 ); } 808 801 | 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 ) ) ) ); } 810 803 | choose_clause_list case_label_list fall_through 811 { $$ = (StatementNode *)( $1->set_l ink( $2->append_last_case( $3 ))); }804 { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( $3 ))); } 812 805 | choose_clause_list case_label_list statement_list fall_through_opt 813 { $$ = (StatementNode *)( $1->set_l ink( $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 ) ) ) ) ) ); } 814 807 ; 815 808 816 809 fall_through_opt: // CFA 817 810 // empty 818 { $$ = new StatementNode( StatementNode::Break ); }// insert implicit break811 { $$ = new StatementNode( build_branch( "", BranchStmt::Break ) ); } // insert implicit break 819 812 | fall_through 820 813 ; … … 829 822 iteration_statement: 830 823 WHILE '(' comma_expression ')' statement 831 { $$ = new StatementNode( StatementNode::While, $3, $5); }824 { $$ = new StatementNode( build_while( $3, $5 ) ); } 832 825 | DO statement WHILE '(' comma_expression ')' ';' 833 { $$ = new StatementNode( StatementNode::Do, $5, $2); }826 { $$ = new StatementNode( build_while( $5, $2 ) ); } 834 827 | FOR '(' push for_control_expression ')' statement 835 { $$ = new StatementNode( StatementNode::For, $4, $6); }828 { $$ = new StatementNode( build_for( $4, $6 ) ); } 836 829 ; 837 830 838 831 for_control_expression: 839 832 comma_expression_opt pop ';' comma_expression_opt ';' comma_expression_opt 840 { $$ = new ForCtl ExprNode( $1, $4, $6 ); }833 { $$ = new ForCtl( $1, $4, $6 ); } 841 834 | declaration comma_expression_opt ';' comma_expression_opt // C99 842 { $$ = new ForCtl ExprNode( $1, $2, $4 ); }843 ;835 { $$ = new ForCtl( $1, $2, $4 ); } 836 ; 844 837 845 838 jump_statement: 846 839 GOTO IDENTIFIER ';' 847 { $$ = new StatementNode( StatementNode::Goto, $2); }840 { $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Goto ) ); } 848 841 | GOTO '*' comma_expression ';' // GCC, computed goto 849 842 // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3); 850 843 // whereas normal operator precedence yields goto (*i)+3; 851 { $$ = new StatementNode( StatementNode::Goto, $3); }844 { $$ = new StatementNode( build_computedgoto( $3 ) ); } 852 845 | CONTINUE ';' 853 846 // 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 ) ); } 855 848 | CONTINUE IDENTIFIER ';' // CFA, multi-level continue 856 849 // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and 857 850 // 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 ) ); } 859 852 | BREAK ';' 860 853 // 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 ) ); } 862 855 | BREAK IDENTIFIER ';' // CFA, multi-level exit 863 856 // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and 864 857 // 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 ) ); } 866 859 | 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 ) ); } 878 867 ; 879 868 880 869 exception_statement: 881 870 TRY compound_statement handler_list 882 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }871 { $$ = new StatementNode( build_try( $2, $3, 0 ) ); } 883 872 | TRY compound_statement finally_clause 884 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }873 { $$ = new StatementNode( build_try( $2, 0, $3 ) ); } 885 874 | 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 ) ); } 890 876 ; 891 877 892 878 handler_list: 893 // There must be at least one catch clause894 879 handler_clause 895 880 // ISO/IEC 9899:1999 Section 15.3(6 ) If present, a "..." handler shall be the last handler for its try block. 896 881 | CATCH '(' ELLIPSIS ')' compound_statement 897 { $$ = StatementNode::newCatchStmt( 0, $5, true); }882 { $$ = new StatementNode( build_catch( 0, $5, true ) ); } 898 883 | 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 ) ) ); } 900 885 | CATCHRESUME '(' ELLIPSIS ')' compound_statement 901 { $$ = StatementNode::newCatchStmt( 0, $5, true); }886 { $$ = new StatementNode( build_catch( 0, $5, true ) ); } 902 887 | 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 ) ) ); } 904 889 ; 905 890 906 891 handler_clause: 907 892 CATCH '(' push push exception_declaration pop ')' compound_statement pop 908 { $$ = StatementNode::newCatchStmt( $5, $8); }893 { $$ = new StatementNode( build_catch( $5, $8 ) ); } 909 894 | 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 ) ) ); } 911 896 | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 912 { $$ = StatementNode::newCatchStmt( $5, $8); }897 { $$ = new StatementNode( build_catch( $5, $8 ) ); } 913 898 | 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 ) ) ); } 915 900 ; 916 901 … … 918 903 FINALLY compound_statement 919 904 { 920 $$ = new StatementNode( StatementNode::Finally, 0, $2 ); 921 std::cout << "Just created a finally node" << std::endl; 905 $$ = new StatementNode( build_finally( $2 ) ); 922 906 } 923 907 ; … … 947 931 asm_statement: 948 932 ASM asm_volatile_opt '(' string_literal_list ')' ';' 949 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, 0); }933 { $$ = new StatementNode( build_asmstmt( $2, $4, 0 ) ); } 950 934 | 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 ) ); } 952 936 | 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 ) ); } 954 938 | 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 ) ); } 956 940 | 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 ) ); } 958 942 ; 959 943 … … 974 958 asm_operand 975 959 | asm_operands_list ',' asm_operand 976 { $$ = (ExpressionNode *)$1->set_l ink( $3 ); }960 { $$ = (ExpressionNode *)$1->set_last( $3 ); } 977 961 ; 978 962 979 963 asm_operand: // GCC 980 964 string_literal_list '(' constant_expression ')' 981 { $$ = new AsmExprNode( 0, $1, $3); }965 { $$ = new ExpressionNode( build_asmexpr( 0, $1, $3 ) ); } 982 966 | '[' constant_expression ']' string_literal_list '(' constant_expression ')' 983 { $$ = new AsmExprNode( $2, $4, $6); }967 { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); } 984 968 ; 985 969 … … 988 972 { $$ = 0; } // use default argument 989 973 | string_literal_list 990 { $$ = $1; }974 { $$ = new ExpressionNode( $1 ); } 991 975 | asm_clobbers_list_opt ',' string_literal_list 992 { $$ = ( ConstantNode *)$1->set_link( $3); }976 { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); } 993 977 ; 994 978 995 979 label_list: 996 980 no_attr_identifier 997 { $$ = new LabelNode(); $$-> append_label( $1); }981 { $$ = new LabelNode(); $$->labels.push_back( assign_strptr($1) ); } 998 982 | label_list ',' no_attr_identifier 999 { $$ = $1; $1-> append_label( $3); }983 { $$ = $1; $1->labels.push_back( assign_strptr($3) ); } 1000 984 ; 1001 985 … … 1340 1324 1341 1325 storage_class: 1342 storage_class_name1343 ;1344 1345 storage_class_name:1346 1326 EXTERN 1347 1327 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } … … 1513 1493 | EXTENSION field_declaring_list ';' // GCC 1514 1494 { // 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() ) 1516 1496 iter->set_extension( true ); 1517 1497 $$ = $2; … … 1759 1739 | initializer 1760 1740 | designation initializer { $$ = $2->set_designators( $1 ); } 1761 | initializer_list ',' initializer { $$ = (InitializerNode *)( $1->set_l ink( $3 ) ); }1741 | initializer_list ',' initializer { $$ = (InitializerNode *)( $1->set_last( $3 ) ); } 1762 1742 | initializer_list ',' designation initializer 1763 { $$ = (InitializerNode *)( $1->set_l ink( $4->set_designators( $3 ) ) ); }1743 { $$ = (InitializerNode *)( $1->set_last( $4->set_designators( $3 ) ) ); } 1764 1744 ; 1765 1745 … … 1777 1757 designator_list ':' // C99, CFA uses ":" instead of "=" 1778 1758 | no_attr_identifier_or_type_name ':' // GCC, field name 1779 { $$ = new VarRefNode( $1); }1759 { $$ = new ExpressionNode( build_varref( $1 ) ); } 1780 1760 ; 1781 1761 … … 1783 1763 designator 1784 1764 | designator_list designator 1785 { $$ = (ExpressionNode *)( $1->set_l ink( $2 )); }1786 //| designator_list designator { $$ = new CompositeExprNode( $1, $2 ); }1765 { $$ = (ExpressionNode *)( $1->set_last( $2 ) ); } 1766 //| designator_list designator { $$ = new ExpressionNode( $1, $2 ); } 1787 1767 ; 1788 1768 1789 1769 designator: 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 ) ); } 1796 1772 | '[' push assignment_expression pop ']' // C99, single array element 1797 1773 // assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple. 1798 { $$ = new DesignatorNode( $3, true ); }1774 { $$ = $3; } 1799 1775 | '[' push subrange pop ']' // CFA, multiple array elements 1800 { $$ = new DesignatorNode( $3, true ); }1776 { $$ = $3; } 1801 1777 | '[' 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 ) ); } 1803 1779 | '.' '[' push field_list pop ']' // CFA, tuple field selector 1804 { $$ = new DesignatorNode( $4 ); }1780 { $$ = $4; } 1805 1781 ; 1806 1782 … … 1890 1866 type_name_list: // CFA 1891 1867 type_name 1892 { $$ = new TypeValueNode( $1); }1868 { $$ = new ExpressionNode( build_typevalue( $1 ) ); } 1893 1869 | assignment_expression 1894 1870 | type_name_list ',' type_name 1895 { $$ = (ExpressionNode *)( $1->set_l ink( new TypeValueNode( $3 ))); }1871 { $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( build_typevalue( $3 ) ) ) ); } 1896 1872 | type_name_list ',' assignment_expression 1897 { $$ = (ExpressionNode *)( $1->set_l ink( $3 )); }1873 { $$ = (ExpressionNode *)( $1->set_last( $3 )); } 1898 1874 ; 1899 1875 … … 1994 1970 {} // empty input file 1995 1971 | 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; } 2003 1973 ; 2004 1974 … … 2006 1976 external_definition 2007 1977 | external_definition_list push external_definition 2008 { $$ = ( $1 != NULL )? $1->appendList( $3 ) : $3; }1978 { $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; } 2009 1979 ; 2010 1980 … … 2022 1992 | EXTERN STRINGliteral 2023 1993 { 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) ); 2026 1996 } 2027 1997 '{' external_definition_list_opt '}' // C++-style linkage specifier … … 2033 2003 | EXTENSION external_definition 2034 2004 { // 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() ) 2036 2006 iter->set_extension( true ); 2037 2007 $$ = $2; … … 2129 2099 subrange: 2130 2100 constant_expression '~' constant_expression // CFA, integer subrange 2131 { $$ = new CompositeExprNode( build_range( $1, $3 ) ); }2101 { $$ = new ExpressionNode( build_range( $1, $3 ) ); } 2132 2102 ; 2133 2103 … … 2168 2138 any_word: // GCC 2169 2139 identifier_or_type_name {} 2170 | storage_class _name{}2140 | storage_class {} 2171 2141 | basic_type_name {} 2172 2142 | type_qualifier {} … … 2868 2838 // ----end of grammar---- 2869 2839 2840 extern char *yytext; 2841 2870 2842 void yyerror( const char * ) { 2871 2843 std::cout << "Error "; -
src/Parser/parseutility.cc
r03da511 r04cdd9b 10 10 // Created On : Sat May 16 15:30:39 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S at May 16 15:31:33 201513 // Update Count : 212 // Last Modified On : Sun Aug 14 23:45:03 2016 13 // Update Count : 3 14 14 // 15 15 … … 17 17 #include "SynTree/Type.h" 18 18 #include "SynTree/Expression.h" 19 20 // rewrite 21 // if ( x ) ... 22 // as 23 // if ( (int)(x != 0) ) ... 19 24 20 25 Expression *notZeroExpr( Expression *orig ) { -
src/SymTab/Autogen.cc
r03da511 r04cdd9b 174 174 175 175 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 // } 179 179 180 180 ObjectDecl * returnVal = NULL; -
src/SynTree/Declaration.cc
r03da511 r04cdd9b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Dec 09 14:08:29 201513 // Update Count : 1 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:49:57 2016 13 // Update Count : 13 14 14 // 15 15 … … 27 27 static IdMapType idMap; 28 28 29 Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec:: Typelinkage )29 Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage ) 30 30 : name( name ), storageClass( sc ), linkage( linkage ), isInline( false ), isNoreturn( false ), uniqueId( 0 ) { 31 31 } -
src/SynTree/Declaration.h
r03da511 r04cdd9b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Jul 12 21:03:17201613 // Update Count : 3912 // Last Modified On : Thu Aug 18 23:50:24 2016 13 // Update Count : 40 14 14 // 15 15 … … 26 26 class Declaration { 27 27 public: 28 Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec:: Typelinkage );28 Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage ); 29 29 Declaration( const Declaration &other ); 30 30 virtual ~Declaration(); … … 34 34 DeclarationNode::StorageClass get_storageClass() const { return storageClass; } 35 35 void set_storageClass( DeclarationNode::StorageClass newValue ) { storageClass = newValue; } 36 LinkageSpec:: Typeget_linkage() const { return linkage; }37 void set_linkage( LinkageSpec:: TypenewValue ) { linkage = newValue; }36 LinkageSpec::Spec get_linkage() const { return linkage; } 37 void set_linkage( LinkageSpec::Spec newValue ) { linkage = newValue; } 38 38 bool get_isInline() const { return isInline; } 39 39 void set_isInline( bool newValue ) { isInline = newValue; } … … 56 56 std::string name; 57 57 DeclarationNode::StorageClass storageClass; 58 LinkageSpec:: Typelinkage;58 LinkageSpec::Spec linkage; 59 59 bool isInline, isNoreturn; 60 60 UniqueId uniqueId; … … 64 64 class DeclarationWithType : public Declaration { 65 65 public: 66 DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec:: Typelinkage, const std::list< Attribute * > & attributes );66 DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes ); 67 67 DeclarationWithType( const DeclarationWithType &other ); 68 68 virtual ~DeclarationWithType(); … … 97 97 typedef DeclarationWithType Parent; 98 98 public: 99 ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec:: Typelinkage, 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 ); 100 100 ObjectDecl( const ObjectDecl &other ); 101 101 virtual ~ObjectDecl(); … … 123 123 typedef DeclarationWithType Parent; 124 124 public: 125 FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec:: Typelinkage, 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 * >() ); 126 126 FunctionDecl( const FunctionDecl &other ); 127 127 virtual ~FunctionDecl(); -
src/SynTree/DeclarationWithType.cc
r03da511 r04cdd9b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Mon Apr 11 15:35:27201613 // Update Count : 311 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:50:41 2016 13 // Update Count : 4 14 14 // 15 15 … … 19 19 #include "Common/utility.h" 20 20 21 DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec:: Typelinkage, const std::list< Attribute * > & attributes )21 DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes ) 22 22 : Declaration( name, sc, linkage ), attributes( attributes ) { 23 23 } -
src/SynTree/Expression.cc
r03da511 r04cdd9b 383 383 Expression( _aname ), function(_function), args(_args) {} 384 384 385 UntypedExpr::~UntypedExpr() {} 385 UntypedExpr::~UntypedExpr() { 386 delete function; 387 } 386 388 387 389 void UntypedExpr::print( std::ostream &os, int indent ) const { -
src/SynTree/FunctionDecl.cc
r03da511 r04cdd9b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri May 06 15:59:48201613 // Update Count : 1911 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:50:14 2016 13 // Update Count : 20 14 14 // 15 15 … … 22 22 #include "Common/utility.h" 23 23 24 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec:: Typelinkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes )24 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes ) 25 25 : Parent( name, sc, linkage, attributes ), type( type ), statements( statements ) { 26 26 set_isInline( isInline ); -
src/SynTree/Label.h
r03da511 r04cdd9b 9 9 // Author : Rob Schluntz 10 10 // Created On : Wed Jun 8 12:53:12 2016 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Jun 8 12:53:28201613 // Update Count : 111 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 14:44:29 2016 13 // Update Count : 2 14 14 // 15 15 -
src/SynTree/ObjectDecl.cc
r03da511 r04cdd9b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Fri May 13 13:23:32201613 // Update Count : 3 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:50:33 2016 13 // Update Count : 31 14 14 // 15 15 … … 22 22 #include "Statement.h" 23 23 24 ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec:: Typelinkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, bool isInline, bool isNoreturn )24 ObjectDecl::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 ) 25 25 : Parent( name, sc, linkage, attributes ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) { 26 26 set_isInline( isInline ); -
src/SynTree/Statement.cc
r03da511 r04cdd9b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 4 11:25:20201613 // Update Count : 6 112 // Last Modified On : Fri Aug 12 13:58:48 2016 13 // Update Count : 62 14 14 // 15 15 … … 124 124 Statement( other ), condition( maybeClone( other.condition ) ), thenPart( maybeClone( other.thenPart ) ), elsePart( maybeClone( other.elsePart ) ) {} 125 125 126 IfStmt::~IfStmt() {} 126 IfStmt::~IfStmt() { 127 delete condition; 128 delete thenPart; 129 delete elsePart; 130 } 127 131 128 132 void IfStmt::print( std::ostream &os, int indent ) const { … … 309 313 } 310 314 311 CatchStmt::CatchStmt( std::list<Label> labels, Declaration *_decl, Statement *_body, bool isCatchRest) :312 Statement( labels ), decl ( _decl ), body( _body ), catchRest ( isCatchRest) {315 CatchStmt::CatchStmt( std::list<Label> labels, Declaration *_decl, Statement *_body, bool catchAny ) : 316 Statement( labels ), decl ( _decl ), body( _body ), catchRest ( catchAny ) { 313 317 } 314 318 -
src/SynTree/Statement.h
r03da511 r04cdd9b 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 4 11:26:02201613 // Update Count : 6 412 // Last Modified On : Fri Aug 12 13:57:46 2016 13 // Update Count : 65 14 14 // 15 15 … … 314 314 class CatchStmt : public Statement { 315 315 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 ); 317 317 CatchStmt( const CatchStmt &other ); 318 318 virtual ~CatchStmt(); -
src/examples/gc_no_raii/premake4.lua
r03da511 r04cdd9b 6 6 "src/", 7 7 "../", 8 "containers/" 8 9 } 9 10 … … 48 49 linkoptions (linkOptionList) 49 50 includedirs (includeDirList) 50 files { "src/**.c" }51 files { "src/**.c", "containers/**.c" } 51 52 52 53 configuration "debug" -
src/examples/gc_no_raii/src/gc.h
r03da511 r04cdd9b 4 4 #include "internal/collector.h" 5 5 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 6 15 forall(otype T) 7 static inline gcpointer(T) gcmalloc()16 static inline void gcmalloc(gcpointer(T)* ptr) 8 17 { 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(); 15 21 } -
src/examples/gc_no_raii/src/gcpointers.c
r03da511 r04cdd9b 42 42 } 43 43 44 void gcpointer_ctor(gcpointer_t* this)44 void ?{}(gcpointer_t* this) 45 45 { 46 46 this->ptr = (intptr_t)NULL; … … 48 48 } 49 49 50 void gcpointer_ctor(gcpointer_t* this, void* address)50 void ?{}(gcpointer_t* this, void* address) 51 51 { 52 52 this->ptr = (intptr_t)address; … … 56 56 } 57 57 58 void gcpointer_ctor(gcpointer_t* this, gcpointer_t*other)58 void ?{}(gcpointer_t* this, gcpointer_t other) 59 59 { 60 this->ptr = other ->ptr;60 this->ptr = other.ptr; 61 61 this->next = NULL; 62 62 … … 64 64 } 65 65 66 void gcpointer_dtor(gcpointer_t* this)66 void ^?{}(gcpointer_t* this) 67 67 { 68 68 unregister_ptr(this); … … 98 98 return this->ptr == (intptr_t)NULL; 99 99 } 100 101 forall(otype T) void ?{}(gcpointer(T)* this) { 102 (&this->internal) {}; 103 } 104 105 forall(otype T) void ?{}(gcpointer(T)* this, void* address) { 106 (&this->internal) { address }; 107 } 108 109 forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T)* other) { 110 (&this->internal) { other->internal }; 111 } 112 113 forall(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 121 forall(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 30 30 forall(otype T) void ?{}(gcpointer(T)* this); 31 31 forall(otype T) void ?{}(gcpointer(T)* this, void* address); 32 forall(otype T) void ctor(gcpointer(T)* this, void* address);33 32 forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T)* other); 34 33 forall(otype T) void ^?{}(gcpointer(T)* this); … … 37 36 38 37 forall(otype T) T *?(gcpointer(T) this); 38 forall(otype T) T* get(gcpointer(T)* this); 39 39 40 40 //Logical operators -
src/examples/gc_no_raii/src/internal/collector.c
r03da511 r04cdd9b 8 8 } 9 9 #endif 10 11 #include <fstream> 10 12 11 13 #include "state.h" … … 36 38 void* gc_allocate(size_t target_size) 37 39 { 40 sout | "Allocating " | target_size | " bytes" | endl; 41 38 42 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; 39 46 40 47 check(size < POOL_SIZE_BYTES); -
src/examples/gc_no_raii/src/internal/state.h
r03da511 r04cdd9b 9 9 } 10 10 #endif 11 #include <fstream> 11 12 #include <vector> 12 13 … … 37 38 static inline bool gc_needs_collect(gc_state* state) 38 39 { 40 sout | "Used Space: " | state->used_space | " bytes" | endl; 39 41 return state->used_space * 2 > state->total_space; 40 42 } -
src/examples/gc_no_raii/test/gctest.c
r03da511 r04cdd9b 2 2 3 3 #include "gc.h" 4 #include "internal/collector.h" 4 5 5 6 #warning default test … … 8 9 sout | "Bonjour au monde!\n"; 9 10 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(); 11 25 } -
src/libcfa/Makefile.am
r03da511 r04cdd9b 11 11 ## Created On : Sun May 31 08:54:01 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Sat Aug 6 16:15:15201614 ## Update Count : 19 713 ## Last Modified On : Thu Aug 11 15:36:32 2016 14 ## Update Count : 198 15 15 ############################################################################### 16 16 … … 56 56 CC = ${abs_top_srcdir}/src/driver/cfa 57 57 58 headers = limits stdlib math iostream fstream iterator rational containers/vector58 headers = limits stdlib math iostream fstream iterator rational # containers/vector 59 59 libobjs = ${headers:=.o} 60 60 -
src/libcfa/Makefile.in
r03da511 r04cdd9b 89 89 libcfa_a_AR = $(AR) $(ARFLAGS) 90 90 libcfa_a_LIBADD = 91 am__dirstamp = $(am__leading_dot)dirstamp92 91 am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \ 93 92 iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \ 94 rational.$(OBJEXT) containers/vector.$(OBJEXT)93 rational.$(OBJEXT) 95 94 am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1) 96 95 libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS) … … 234 233 cfalib_DATA = builtins.cf extras.cf prelude.cf 235 234 MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}} 236 headers = limits stdlib math iostream fstream iterator rational containers/vector235 headers = limits stdlib math iostream fstream iterator rational # containers/vector 237 236 libobjs = ${headers:=.o} 238 237 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c} … … 304 303 clean-libLIBRARIES: 305 304 -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) 306 containers/$(am__dirstamp):307 @$(MKDIR_P) containers308 @: > 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)314 305 libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES) 315 306 $(AM_V_at)-rm -f libcfa.a … … 319 310 mostlyclean-compile: 320 311 -rm -f *.$(OBJEXT) 321 -rm -f containers/vector.$(OBJEXT)322 312 323 313 distclean-compile: … … 332 322 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@ 333 323 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@ 334 @AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/vector.Po@am__quote@335 324 336 325 .c.o: … … 505 494 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 506 495 -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)509 496 510 497 maintainer-clean-generic: … … 517 504 518 505 distclean: distclean-am 519 -rm -rf ./$(DEPDIR) containers/$(DEPDIR)506 -rm -rf ./$(DEPDIR) 520 507 -rm -f Makefile 521 508 distclean-am: clean-am distclean-compile distclean-generic \ … … 563 550 564 551 maintainer-clean: maintainer-clean-am 565 -rm -rf ./$(DEPDIR) containers/$(DEPDIR)552 -rm -rf ./$(DEPDIR) 566 553 -rm -f Makefile 567 554 maintainer-clean-am: distclean-am maintainer-clean-generic \ -
src/main.cc
r03da511 r04cdd9b 10 10 // Created On : Fri May 15 23:12:02 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Aug 6 16:17:41201613 // Update Count : 21012 // Last Modified On : Fri Aug 19 08:31:22 2016 13 // Update Count : 350 14 14 // 15 15 16 16 #include <iostream> 17 17 #include <fstream> 18 #include <cstdlib>19 #include <cstdio>20 18 #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" 26 22 #include "GenPoly/Lvalue.h" 27 23 #include "GenPoly/Specialize.h" … … 32 28 #include "CodeGen/FixNames.h" 33 29 #include "ControlStruct/Mutate.h" 34 #include "Tuples/Mutate.h"35 #include "Tuples/FunctionChecker.h"36 #include "SymTab/Mangler.h"37 #include "SymTab/Indexer.h"38 30 #include "SymTab/Validate.h" 39 31 #include "ResolvExpr/AlternativePrinter.h" 40 32 #include "ResolvExpr/Resolver.h" 41 33 #include "MakeLibCfa.h" 42 #include "InitTweak/Mutate.h"43 34 #include "InitTweak/GenInit.h" 44 35 #include "InitTweak/FixInit.h" 45 //#include "Explain/GenProlog.h"46 //#include "Try/Visit.h"47 48 #include "Common/SemanticError.h"49 36 #include "Common/UnimplementedError.h" 50 37 … … 53 40 using namespace std; 54 41 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 45 LinkageSpec::Spec linkage = LinkageSpec::Cforall; 46 TypedefTable typedefTable; 47 DeclarationNode * parseTree = nullptr; // program parse tree 48 49 extern int yydebug; // set for -g flag (Grammar) 61 50 bool 62 51 astp = false, … … 66 55 exprp = false, 67 56 expraltp = false, 68 grammarp = false,69 57 libcfap = false, 70 58 nopreludep = false, … … 78 66 codegenp = false; 79 67 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; 68 static void parse_cmdline( int argc, char *argv[], const char *& filename ); 69 static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false ); 70 static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout ); 71 72 int main( int argc, char * argv[] ) { 73 FILE * input; // use FILE rather than istream because yyin is FILE 74 std::ostream *output = & std::cout; 105 75 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 189 79 190 80 try { 191 81 // 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 193 83 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 ] ); 198 85 // 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 ]; 200 87 // prelude filename comes in differently 201 88 if ( libcfap ) filename = "prelude.cf"; 202 89 optind += 1; 203 } else { 90 } else { // no input file name 204 91 input = stdin; 205 92 // if running cfa-cpp directly, might forget to pass -F option. Since this takes from stdin, pass 206 93 // 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 211 98 output = new ofstream( argv[ optind ] ); 212 99 } // if 213 214 Parser::get_parser().set_debug( grammarp );215 100 216 101 // read in the builtins, extras, and the prelude … … 218 103 // -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here. 219 104 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" ); 224 106 parse( builtins, LinkageSpec::Compiler ); 225 107 226 108 // read the extra prelude in, if not generating the cfa library 227 109 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" ); 232 111 parse( extras, LinkageSpec::C ); 233 112 … … 235 114 // read the prelude in, if not generating the cfa library 236 115 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" ); 242 117 parse( prelude, LinkageSpec::Intrinsic ); 243 118 } // if 244 119 } // if 245 120 246 parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp);121 parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, yydebug ); 247 122 248 123 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 257 133 if ( astp ) { 258 134 dump( translationUnit ); … … 300 176 dump( translationUnit ); 301 177 return 0; 302 } 178 } // if 303 179 304 180 // fix ObjectDecl - replaces ConstructorInit nodes … … 308 184 dump ( translationUnit ); 309 185 return 0; 310 } 186 } // if 311 187 312 188 OPTPRINT("instantiateGenerics") … … 322 198 dump( translationUnit ); 323 199 return 0; 324 } 200 } // if 325 201 OPTPRINT( "box" ) 326 202 GenPoly::box( translationUnit ); … … 342 218 dump( translationUnit, std::cerr ); 343 219 std::cerr << std::endl << "---End of AST, begin error message:---\n" << std::endl; 344 } 220 } // if 345 221 e.print( std::cerr ); 346 222 if ( output != &std::cout ) { … … 367 243 } // main 368 244 369 static void parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) { 370 Parser::get_parser().set_linkage( linkage ); 371 Parser::get_parser().parse( input ); 245 void 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 350 static 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(); 372 360 373 361 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 ); 376 364 } // if 377 } 365 } // parse 378 366 379 367 static bool notPrelude( Declaration * decl ) { 380 368 return ! LinkageSpec::isBuiltin( decl->get_linkage() ); 381 } 369 } // notPrelude 382 370 383 371 static void dump( std::list< Declaration * > & translationUnit, std::ostream & out ) { 384 372 std::list< Declaration * > decls; 373 385 374 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 ); 388 376 } else { 389 377 decls = translationUnit; 390 } 378 } // if 391 379 392 380 printAll( decls, out ); 393 381 deleteAll( translationUnit ); 394 } 395 382 } // dump 396 383 397 384 // Local Variables: // -
src/tests/.expect/32/gccExtensions.txt
r03da511 r04cdd9b 5 5 extern void exit(int __status); 6 6 extern int printf(const char *__restrict __format, ...); 7 extern int __x__i_1; 7 8 int main(int __argc__i_1, const char **__argv__PPCc_1){ 8 9 asm ( "nop" : : : ); 9 10 asm ( "nop" : : : ); 10 11 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 ); 11 21 double _Complex __c1__Xd_2; 12 22 double _Complex __c2__Xd_2; … … 14 24 const int __i2__Ci_2; 15 25 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; 16 36 __extension__ const int __ex__Ci_2; 17 37 struct S { … … 64 84 ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2))); 65 85 ((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;76 86 int __a1__i_2; 77 87 const int __a2__Ci_2; … … 151 161 struct s4 __y2__3ss4_2; 152 162 ((void)___constructor__F_P3ss4_autogen___2(((struct s4 *)(&__y2__3ss4_2)))); 153 int __m1__A0i_2[(( longunsigned int )10)];154 int __m2__A0A0i_2[(( long unsigned int )10)][((longunsigned int )10)];155 int __m3__A0A0i_2[(( long unsigned int )10)][((longunsigned 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)]; 156 166 int _retVal0 = { 0 }; 157 167 ((void)(_retVal0=0) /* ?{} */); -
src/tests/.expect/64/gccExtensions.txt
r03da511 r04cdd9b 5 5 extern void exit(int __status); 6 6 extern int printf(const char *__restrict __format, ...); 7 extern int __x__i_1; 7 8 int main(int __argc__i_1, const char **__argv__PPCc_1){ 8 9 asm ( "nop" : : : ); 9 10 asm ( "nop" : : : ); 10 11 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 ); 11 21 double _Complex __c1__Xd_2; 12 22 double _Complex __c2__Xd_2; … … 14 24 const int __i2__Ci_2; 15 25 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; 16 36 __extension__ const int __ex__Ci_2; 17 37 struct S { … … 64 84 ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2))); 65 85 ((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;76 86 int __a1__i_2; 77 87 const int __a2__Ci_2; -
src/tests/.expect/declarationErrors.txt
r03da511 r04cdd9b 1 1 CFA Version 1.0.0 (debug) 2 Error: invalid combination of storage classes in declaration of x9: static staticvolatile const short int2 Error: invalid combination of storage classes in declaration of x9: static volatile const short int 3 3 4 Error: invalid combination of storage classes in declaration of x18: static staticconst volatile instance of struct __anonymous04 Error: invalid combination of storage classes in declaration of x18: static const volatile instance of struct __anonymous0 5 5 with members 6 i: int7 6 with body 8 7 9 8 10 Error: invalid combination of storage classes in declaration of x19: static staticconst volatile volatile instance of struct __anonymous19 Error: invalid combination of storage classes in declaration of x19: static const volatile volatile instance of struct __anonymous1 11 10 with members 12 i: int13 11 with body 14 12 15 13 16 Error: invalid combination of storage classes in declaration of x28: static staticvolatile const instance of type Int14 Error: invalid combination of storage classes in declaration of x28: static volatile const instance of type Int 17 15 18 16 make: *** [declarationErrors] Error 1 -
src/tests/Makefile.am
r03da511 r04cdd9b 11 11 ## Created On : Sun May 31 09:08:15 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Sat Jul 9 11:23:24 201614 ## Update Count : 3 513 ## Last Modified On : Mon Aug 15 12:24:54 2016 14 ## Update Count : 39 15 15 ############################################################################### 16 16 … … 27 27 28 28 all-local : 29 +python test.py vector_test avl_test operators numericConstants expression enum asmNamearray typeof cast dtor-early-exit init_once29 @+python test.py vector_test avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once 30 30 31 31 all-tests : 32 +python test.py --all32 @+python test.py --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program 33 33 34 34 clean-local : 35 -rm -f ${EXTRA_PROGRAMS}35 rm -f ${EXTRA_PROGRAMS} 36 36 37 37 list : 38 +python test.py --list38 @+python test.py --list 39 39 40 40 constant0-1DP : constant0-1.c … … 53 53 ${CC} ${CFLAGS} -DERR2 ${<} -o ${@} 54 54 55 declarationSpecifier: declarationSpecifier.c 56 ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@} 57 55 58 gccExtensions : gccExtensions.c 56 59 ${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@} -
src/tests/Makefile.in
r03da511 r04cdd9b 635 635 636 636 all-local : 637 +python test.py vector_test avl_test operators numericConstants expression enum asmNamearray typeof cast dtor-early-exit init_once637 @+python test.py vector_test avl_test operators numericConstants expression enum array typeof cast dtor-early-exit init_once 638 638 639 639 all-tests : 640 +python test.py --all640 @+python test.py --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program 641 641 642 642 clean-local : 643 -rm -f ${EXTRA_PROGRAMS}643 rm -f ${EXTRA_PROGRAMS} 644 644 645 645 list : 646 +python test.py --list646 @+python test.py --list 647 647 648 648 constant0-1DP : constant0-1.c … … 660 660 dtor-early-exit-ERR2: dtor-early-exit.c 661 661 ${CC} ${CFLAGS} -DERR2 ${<} -o ${@} 662 663 declarationSpecifier: declarationSpecifier.c 664 ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@} 662 665 663 666 gccExtensions : 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 16 const short static int volatile x4; 17 const static volatile short int x4; 18 static short int volatile static const x9; // duplicate static 19 struct { int i; } const static volatile static x18; // duplicate static 3 20 struct { int i; } const static volatile static volatile x19; // duplicate static & volatile 4 21 typedef int Int; 5 static Int volatile static const x28; // duplicate static 22 static Int volatile static const x28; // duplicate static 23 24 const static inline const volatile int f01(); // duplicate const 25 volatile inline const volatile static int f02(); // duplicate volatile 26 const inline const volatile int static f03(); // duplicate const 27 volatile inline static const volatile int f04(); // duplicate volatile 28 const static const inline volatile int f05(); // duplicate const 29 volatile static const volatile inline int f06(); // duplicate volatile 30 const static const volatile int inline f07(); // duplicate const 31 volatile static const int inline volatile f08(); // duplicate volatile 6 32 7 33 //Dummy main … … 10 36 return 0; 11 37 } 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 1 16 typedef short int Int; 2 3 17 4 18 const short int volatile x1; 5 19 static const short int volatile x2; 6 20 const static short int volatile x3; 7 const short static int volatile x4;8 21 const static volatile short int x4; 9 22 const short int static volatile x5; … … 11 24 const short volatile int static x7; 12 25 short int volatile static const x8; 13 static short int volatile static const x9; // duplicate static14 26 15 27 const volatile struct { int i; } x10; … … 21 33 struct { int i; } const static volatile x16; 22 34 struct { int i; } const volatile static x17; 23 struct { int i; } const static volatile static x18; // duplicate static24 struct { int i; } const static volatile static volatile x19; // duplicate static & volatile25 35 26 36 const Int volatile x20; … … 32 42 const volatile Int static x26; 33 43 Int volatile static const x27; 34 static Int volatile static const x28; // duplicate static35 44 36 45 const volatile struct { Int i; } x29; … … 42 51 struct { Int i; } const static volatile x35; 43 52 struct { Int i; } const volatile static x36; 44 45 46 const static inline const volatile int f01(); // duplicate const47 volatile inline const volatile static int f02(); // duplicate volatile48 const inline const volatile int static f03(); // duplicate const49 volatile inline static const volatile int f04(); // duplicate volatile50 const static const inline volatile int f05(); // duplicate const51 volatile static const volatile inline int f06(); // duplicate volatile52 const static const volatile int inline f07(); // duplicate const53 volatile static const int inline volatile f08(); // duplicate volatile54 53 55 54 static inline const volatile int f11(); … … 94 93 return 0; 95 94 } 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 1 16 #include <fstream> 2 17 #include <stdlib> … … 215 230 h(); 216 231 } 232 233 // Local Variables: // 234 // tab-width: 4 // 235 // compile-command: "cfa dtor-early-exit" // 236 // End: // -
src/tests/exception.c
r03da511 r04cdd9b 11 11 x/4; 12 12 } catch( int ) { 13 } catch( int x ) {13 } catch( float x ) { 14 14 } catch( struct { int i; } ) { 15 15 } catch( struct { int i; } x ) { … … 21 21 } catch( * struct { int i; } x ) { 22 22 } catch( ... ) { 23 //} finally {23 } finally { 24 24 } // try 25 25 } -
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 1 16 // ANSI function definitions 2 17 … … 165 180 // Local Variables: // 166 181 // tab-width: 4 // 182 // compile-command: "cfa functions.c" // 167 183 // 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 16 extern int x asm( "xx" ); 17 1 18 int main(int argc, char const *argv[]) { 19 // asm extensions 20 2 21 asm( "nop" ); 3 22 __asm( "nop" ); 4 23 __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 5 59 6 60 __complex__ c1; … … 10 64 __const int i2; 11 65 __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 12 82 13 83 __extension__ const int ex; … … 21 91 __extension__ a = __extension__ ( __extension__ b + __extension__ c ); 22 92 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 34 94 35 95 __attribute__(()) int a1; … … 57 117 return 0; 58 118 } 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 1 16 int main() { 2 17 int f1; … … 97 112 int (* const(* const f81)(int))(); 98 113 } 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 1 16 int fred( 2 17 int f1, … … 147 162 return 0; 148 163 } 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 1 16 int foo() { 2 17 int i; … … 136 151 else 137 152 i += 1; 138 139 153 } 140 154 141 int main( int argc, char const *argv[]) {155 int main( int argc, char const *argv[] ) { 142 156 /* code */ 143 return 0;144 157 } 145 158 146 159 // Local Variables: // 147 160 // tab-width: 4 // 148 // compile-command: "cfa LabelledExit.c" //161 // compile-command: "cfa labelledExit.c" // 149 162 // End: // -
src/tests/test.py
r03da511 r04cdd9b 99 99 return False 100 100 101 # find the test data for a given test name102 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 106 101 ################################################################################ 107 102 # running test functions … … 141 136 if not dry_run and fileContainsOnly(out_file, "make: *** No rule to make target `%s'. Stop." % test.name) : 142 137 retcode = 1; 143 error = "\t\tNo make target for test %s!" % test 138 error = "\t\tNo make target for test %s!" % test.name 144 139 sh("rm %s" % out_file, False) 145 140 … … 252 247 # already existing tests and create new info for the new tests 253 248 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) ) 255 255 256 256 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 2 17 int f1; 3 18 int (f2); … … 164 179 return 0; 165 180 } 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.