- Timestamp:
- Apr 15, 2016, 12:03:11 PM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 29ad0ac
- Parents:
- c5833e8 (diff), 37f0da8 (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:
-
- 10 added
- 21 deleted
- 118 edited
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/CodeGenerator.cc
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jan 25 21:22:00201613 // Update Count : 24 212 // Last Modified On : Wed Mar 2 17:32:16 2016 13 // Update Count : 243 14 14 // 15 15 … … 21 21 #include "Parser/ParseNode.h" 22 22 23 #include "SynTree/ Type.h"23 #include "SynTree/Declaration.h" 24 24 #include "SynTree/Expression.h" 25 25 #include "SynTree/Initializer.h" 26 26 #include "SynTree/Statement.h" 27 #include "SynTree/Type.h" 27 28 28 29 #include "Common/utility.h" … … 170 171 } 171 172 172 void CodeGenerator::visit( ContextDecl *aggregateDecl ) {}173 void CodeGenerator::visit( TraitDecl *aggregateDecl ) {} 173 174 174 175 void CodeGenerator::visit( TypedefDecl *typeDecl ) { … … 454 455 455 456 void CodeGenerator::visit( UntypedOffsetofExpr *offsetofExpr ) { 456 assert( false );457 assert( false && "UntypedOffsetofExpr should not reach code generation" ); 457 458 } 458 459 … … 463 464 output << ", " << mangleName( offsetofExpr->get_member() ); 464 465 output << ")"; 466 } 467 468 void CodeGenerator::visit( OffsetPackExpr *offsetPackExpr ) { 469 assert( false && "OffsetPackExpr should not reach code generation" ); 465 470 } 466 471 -
src/CodeGen/CodeGenerator.h
rc5833e8 r0f9e4403 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 Aug 12 14:27:14 201513 // Update Count : 2 711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:32:24 2016 13 // Update Count : 28 14 14 // 15 15 … … 19 19 #include <list> 20 20 21 #include "SynTree/Declaration.h" 21 22 #include "SynTree/SynTree.h" 22 23 #include "SynTree/Visitor.h" 24 23 25 #include "SymTab/Indexer.h" 24 26 … … 38 40 virtual void visit( UnionDecl *aggregateDecl ); 39 41 virtual void visit( EnumDecl *aggregateDecl ); 40 virtual void visit( ContextDecl *aggregateDecl );42 virtual void visit( TraitDecl *aggregateDecl ); 41 43 virtual void visit( TypedefDecl *typeDecl ); 42 44 virtual void visit( TypeDecl *typeDecl ); … … 63 65 virtual void visit( UntypedOffsetofExpr *offsetofExpr ); 64 66 virtual void visit( OffsetofExpr *offsetofExpr ); 67 virtual void visit( OffsetPackExpr *offsetPackExpr ); 65 68 virtual void visit( LogicalExpr *logicalExpr ); 66 69 virtual void visit( ConditionalExpr *conditionalExpr ); -
src/CodeGen/GenType.cc
rc5833e8 r0f9e4403 19 19 #include "GenType.h" 20 20 #include "CodeGenerator.h" 21 22 #include "SynTree/Declaration.h" 23 #include "SynTree/Expression.h" 24 #include "SynTree/Type.h" 21 25 #include "SynTree/Visitor.h" 22 #include "SynTree/Type.h"23 #include "SynTree/Expression.h"24 26 25 27 namespace CodeGen { … … 39 41 virtual void visit( EnumInstType *enumInst ); 40 42 virtual void visit( TypeInstType *typeInst ); 43 virtual void visit( VarArgsType *varArgsType ); 41 44 42 45 private: … … 191 194 } 192 195 196 void GenType::visit( VarArgsType *varArgsType ) { 197 typeString = "__builtin_va_list " + typeString; 198 handleQualifiers( varArgsType ); 199 } 200 193 201 void GenType::handleQualifiers( Type *type ) { 194 202 if ( type->get_isConst() ) { -
src/GenPoly/Box.cc
rc5833e8 r0f9e4403 14 14 // 15 15 16 #include <algorithm> 17 #include <iterator> 18 #include <list> 19 #include <map> 16 20 #include <set> 17 21 #include <stack> 18 22 #include <string> 19 #include < iterator>20 #include < algorithm>23 #include <utility> 24 #include <vector> 21 25 #include <cassert> 22 26 23 27 #include "Box.h" 24 #include " InstantiateGeneric.h"28 #include "DeclMutator.h" 25 29 #include "PolyMutator.h" 26 30 #include "FindFunction.h" 31 #include "ScopedMap.h" 32 #include "ScopedSet.h" 27 33 #include "ScrubTyVars.h" 28 34 … … 30 36 31 37 #include "SynTree/Constant.h" 32 #include "SynTree/ Type.h"38 #include "SynTree/Declaration.h" 33 39 #include "SynTree/Expression.h" 34 40 #include "SynTree/Initializer.h" 41 #include "SynTree/Mutator.h" 35 42 #include "SynTree/Statement.h" 36 #include "SynTree/Mutator.h" 43 #include "SynTree/Type.h" 44 #include "SynTree/TypeSubstitution.h" 37 45 38 46 #include "ResolvExpr/TypeEnvironment.h" … … 40 48 #include "ResolvExpr/typeops.h" 41 49 50 #include "SymTab/Indexer.h" 42 51 #include "SymTab/Mangler.h" 43 52 … … 54 63 FunctionType *makeAdapterType( FunctionType *adaptee, const TyVarMap &tyVars ); 55 64 65 /// Abstracts type equality for a list of parameter types 66 struct TypeList { 67 TypeList() : params() {} 68 TypeList( const std::list< Type* > &_params ) : params() { cloneAll(_params, params); } 69 TypeList( std::list< Type* > &&_params ) : params( _params ) {} 70 71 TypeList( const TypeList &that ) : params() { cloneAll(that.params, params); } 72 TypeList( TypeList &&that ) : params( std::move( that.params ) ) {} 73 74 /// Extracts types from a list of TypeExpr* 75 TypeList( const std::list< TypeExpr* >& _params ) : params() { 76 for ( std::list< TypeExpr* >::const_iterator param = _params.begin(); param != _params.end(); ++param ) { 77 params.push_back( (*param)->get_type()->clone() ); 78 } 79 } 80 81 TypeList& operator= ( const TypeList &that ) { 82 deleteAll( params ); 83 84 params.clear(); 85 cloneAll( that.params, params ); 86 87 return *this; 88 } 89 90 TypeList& operator= ( TypeList &&that ) { 91 deleteAll( params ); 92 93 params = std::move( that.params ); 94 95 return *this; 96 } 97 98 ~TypeList() { deleteAll( params ); } 99 100 bool operator== ( const TypeList& that ) const { 101 if ( params.size() != that.params.size() ) return false; 102 103 SymTab::Indexer dummy; 104 for ( std::list< Type* >::const_iterator it = params.begin(), jt = that.params.begin(); it != params.end(); ++it, ++jt ) { 105 if ( ! ResolvExpr::typesCompatible( *it, *jt, dummy ) ) return false; 106 } 107 return true; 108 } 109 110 std::list< Type* > params; ///< Instantiation parameters 111 }; 112 113 /// Maps a key and a TypeList to the some value, accounting for scope 114 template< typename Key, typename Value > 115 class InstantiationMap { 116 /// Wraps value for a specific (Key, TypeList) combination 117 typedef std::pair< TypeList, Value* > Instantiation; 118 /// List of TypeLists paired with their appropriate values 119 typedef std::vector< Instantiation > ValueList; 120 /// Underlying map type; maps keys to a linear list of corresponding TypeLists and values 121 typedef ScopedMap< Key*, ValueList > InnerMap; 122 123 InnerMap instantiations; ///< instantiations 124 125 public: 126 /// Starts a new scope 127 void beginScope() { instantiations.beginScope(); } 128 129 /// Ends a scope 130 void endScope() { instantiations.endScope(); } 131 132 /// Gets the value for the (key, typeList) pair, returns NULL on none such. 133 Value *lookup( Key *key, const std::list< TypeExpr* >& params ) const { 134 TypeList typeList( params ); 135 136 // scan scopes for matches to the key 137 for ( typename InnerMap::const_iterator insts = instantiations.find( key ); insts != instantiations.end(); insts = instantiations.findNext( insts, key ) ) { 138 for ( typename ValueList::const_reverse_iterator inst = insts->second.rbegin(); inst != insts->second.rend(); ++inst ) { 139 if ( inst->first == typeList ) return inst->second; 140 } 141 } 142 // no matching instantiations found 143 return 0; 144 } 145 146 /// Adds a value for a (key, typeList) pair to the current scope 147 void insert( Key *key, const std::list< TypeExpr* > ¶ms, Value *value ) { 148 instantiations[ key ].push_back( Instantiation( TypeList( params ), value ) ); 149 } 150 }; 151 152 /// Adds layout-generation functions to polymorphic types 153 class LayoutFunctionBuilder : public DeclMutator { 154 unsigned int functionNesting; // current level of nested functions 155 public: 156 LayoutFunctionBuilder() : functionNesting( 0 ) {} 157 158 virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ); 159 virtual Declaration *mutate( StructDecl *structDecl ); 160 virtual Declaration *mutate( UnionDecl *unionDecl ); 161 }; 162 56 163 /// Replaces polymorphic return types with out-parameters, replaces calls to polymorphic functions with adapter calls as needed, and adds appropriate type variables to the function call 57 164 class Pass1 : public PolyMutator { … … 72 179 virtual void doEndScope(); 73 180 private: 74 /// Makes a new temporary array holding the offsets of the fields of `type`, and returns a new variable expression referencing it75 Expression *makeOffsetArray( StructInstType *type );76 181 /// Pass the extra type parameters from polymorphic generic arguments or return types into a function application 77 182 void passArgTypeVars( ApplicationExpr *appExpr, Type *parmType, Type *argBaseType, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars, std::set< std::string > &seenTypes ); … … 100 205 ObjectDecl *makeTemporary( Type *type ); 101 206 102 typedef std::map< std::string, DeclarationWithType *> AdapterMap;103 std::map< std::string, DeclarationWithType *> assignOps;104 ResolvExpr::TypeMap< DeclarationWithType > scopedAssignOps;105 std::stack< AdapterMap > adapters;207 ScopedMap< std::string, DeclarationWithType *> assignOps; ///< Currently known type variable assignment operators 208 ResolvExpr::TypeMap< DeclarationWithType > scopedAssignOps; ///< Currently known assignment operators 209 ScopedMap< std::string, DeclarationWithType* > adapters; ///< Set of adapter functions in the current scope 210 106 211 DeclarationWithType *retval; 107 212 bool useRetval; … … 109 214 }; 110 215 111 /// Moves polymorphic returns in function types to pointer-type parameters, adds type size and assertion parameters to parameter lists as well 216 /// * Moves polymorphic returns in function types to pointer-type parameters 217 /// * adds type size and assertion parameters to parameter lists 112 218 class Pass2 : public PolyMutator { 113 219 public: … … 120 226 virtual Type *mutate( PointerType *pointerType ); 121 227 virtual Type *mutate( FunctionType *funcType ); 228 122 229 private: 123 230 void addAdapters( FunctionType *functionType ); … … 126 233 }; 127 234 128 /// Replaces member expressions for polymorphic types with calculated add-field-offset-and-dereference; 129 /// also fixes offsetof expressions. 130 class MemberExprFixer : public PolyMutator { 131 public: 235 /// Mutator pass that replaces concrete instantiations of generic types with actual struct declarations, scoped appropriately 236 class GenericInstantiator : public DeclMutator { 237 /// Map of (generic type, parameter list) pairs to concrete type instantiations 238 InstantiationMap< AggregateDecl, AggregateDecl > instantiations; 239 /// Namer for concrete types 240 UniqueName typeNamer; 241 242 public: 243 GenericInstantiator() : DeclMutator(), instantiations(), typeNamer("_conc_") {} 244 245 virtual Type* mutate( StructInstType *inst ); 246 virtual Type* mutate( UnionInstType *inst ); 247 248 // virtual Expression* mutate( MemberExpr *memberExpr ); 249 250 virtual void doBeginScope(); 251 virtual void doEndScope(); 252 private: 253 /// Wrap instantiation lookup for structs 254 StructDecl* lookup( StructInstType *inst, const std::list< TypeExpr* > &typeSubs ) { return (StructDecl*)instantiations.lookup( inst->get_baseStruct(), typeSubs ); } 255 /// Wrap instantiation lookup for unions 256 UnionDecl* lookup( UnionInstType *inst, const std::list< TypeExpr* > &typeSubs ) { return (UnionDecl*)instantiations.lookup( inst->get_baseUnion(), typeSubs ); } 257 /// Wrap instantiation insertion for structs 258 void insert( StructInstType *inst, const std::list< TypeExpr* > &typeSubs, StructDecl *decl ) { instantiations.insert( inst->get_baseStruct(), typeSubs, decl ); } 259 /// Wrap instantiation insertion for unions 260 void insert( UnionInstType *inst, const std::list< TypeExpr* > &typeSubs, UnionDecl *decl ) { instantiations.insert( inst->get_baseUnion(), typeSubs, decl ); } 261 }; 262 263 /// Replaces member and size/align/offsetof expressions on polymorphic generic types with calculated expressions. 264 /// * Replaces member expressions for polymorphic types with calculated add-field-offset-and-dereference 265 /// * Calculates polymorphic offsetof expressions from offset array 266 /// * Inserts dynamic calculation of polymorphic type layouts where needed 267 class PolyGenericCalculator : public PolyMutator { 268 public: 132 269 template< typename DeclClass > 133 270 DeclClass *handleDecl( DeclClass *decl, Type *type ); … … 140 277 virtual Type *mutate( FunctionType *funcType ); 141 278 virtual Expression *mutate( MemberExpr *memberExpr ); 279 virtual Expression *mutate( SizeofExpr *sizeofExpr ); 280 virtual Expression *mutate( AlignofExpr *alignofExpr ); 142 281 virtual Expression *mutate( OffsetofExpr *offsetofExpr ); 282 virtual Expression *mutate( OffsetPackExpr *offsetPackExpr ); 283 284 virtual void doBeginScope(); 285 virtual void doEndScope(); 286 287 private: 288 /// Makes a new variable in the current scope with the given name, type & optional initializer 289 ObjectDecl *makeVar( const std::string &name, Type *type, Initializer *init = 0 ); 290 /// returns true if the type has a dynamic layout; such a layout will be stored in appropriately-named local variables when the function returns 291 bool findGeneric( Type *ty ); 292 /// adds type parameters to the layout call; will generate the appropriate parameters if needed 293 void addOtypeParamsToLayoutCall( UntypedExpr *layoutCall, const std::list< Type* > &otypeParams ); 294 295 /// Enters a new scope for type-variables, adding the type variables from ty 296 void beginTypeScope( Type *ty ); 297 /// Exits the type-variable scope 298 void endTypeScope(); 299 300 ScopedSet< std::string > knownLayouts; ///< Set of generic type layouts known in the current scope, indexed by sizeofName 301 ScopedSet< std::string > knownOffsets; ///< Set of non-generic types for which the offset array exists in the current scope, indexed by offsetofName 143 302 }; 144 303 … … 159 318 } // anonymous namespace 160 319 161 void printAllNotBuiltin( const std::list< Declaration *>& translationUnit, std::ostream &os ) {162 for ( std::list< Declaration *>::const_iterator i = translationUnit.begin(); i != translationUnit.end(); ++i ) {163 if ( ! LinkageSpec::isBuiltin( (*i)->get_linkage() ) ) {164 (*i)->print( os );165 os << std::endl;166 } // if167 } // for168 }169 170 320 /// version of mutateAll with special handling for translation unit so you can check the end of the prelude when debugging 171 321 template< typename MutatorType > … … 195 345 196 346 void box( std::list< Declaration *>& translationUnit ) { 347 LayoutFunctionBuilder layoutBuilder; 197 348 Pass1 pass1; 198 349 Pass2 pass2; 199 MemberExprFixer memberFixer; 350 GenericInstantiator instantiator; 351 PolyGenericCalculator polyCalculator; 200 352 Pass3 pass3; 353 354 layoutBuilder.mutateDeclarationList( translationUnit ); 201 355 mutateTranslationUnit/*All*/( translationUnit, pass1 ); 202 356 mutateTranslationUnit/*All*/( translationUnit, pass2 ); 203 instantiat eGeneric( translationUnit );204 mutateTranslationUnit/*All*/( translationUnit, memberFixer );357 instantiator.mutateDeclarationList( translationUnit ); 358 mutateTranslationUnit/*All*/( translationUnit, polyCalculator ); 205 359 mutateTranslationUnit/*All*/( translationUnit, pass3 ); 206 360 } 207 361 362 ////////////////////////////////// LayoutFunctionBuilder //////////////////////////////////////////// 363 364 DeclarationWithType *LayoutFunctionBuilder::mutate( FunctionDecl *functionDecl ) { 365 functionDecl->set_functionType( maybeMutate( functionDecl->get_functionType(), *this ) ); 366 mutateAll( functionDecl->get_oldDecls(), *this ); 367 ++functionNesting; 368 functionDecl->set_statements( maybeMutate( functionDecl->get_statements(), *this ) ); 369 --functionNesting; 370 return functionDecl; 371 } 372 373 /// Get a list of type declarations that will affect a layout function 374 std::list< TypeDecl* > takeOtypeOnly( std::list< TypeDecl* > &decls ) { 375 std::list< TypeDecl * > otypeDecls; 376 377 for ( std::list< TypeDecl* >::const_iterator decl = decls.begin(); decl != decls.end(); ++decl ) { 378 if ( (*decl)->get_kind() == TypeDecl::Any ) { 379 otypeDecls.push_back( *decl ); 380 } 381 } 382 383 return otypeDecls; 384 } 385 386 /// Adds parameters for otype layout to a function type 387 void addOtypeParams( FunctionType *layoutFnType, std::list< TypeDecl* > &otypeParams ) { 388 BasicType sizeAlignType( Type::Qualifiers(), BasicType::LongUnsignedInt ); 389 390 for ( std::list< TypeDecl* >::const_iterator param = otypeParams.begin(); param != otypeParams.end(); ++param ) { 391 TypeInstType paramType( Type::Qualifiers(), (*param)->get_name(), *param ); 392 std::string paramName = mangleType( ¶mType ); 393 layoutFnType->get_parameters().push_back( new ObjectDecl( sizeofName( paramName ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignType.clone(), 0 ) ); 394 layoutFnType->get_parameters().push_back( new ObjectDecl( alignofName( paramName ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignType.clone(), 0 ) ); 395 } 396 } 397 398 /// Builds a layout function declaration 399 FunctionDecl *buildLayoutFunctionDecl( AggregateDecl *typeDecl, unsigned int functionNesting, FunctionType *layoutFnType ) { 400 // Routines at global scope marked "static" to prevent multiple definitions is separate translation units 401 // because each unit generates copies of the default routines for each aggregate. 402 FunctionDecl *layoutDecl = new FunctionDecl( 403 layoutofName( typeDecl ), functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, layoutFnType, new CompoundStmt( noLabels ), true, false ); 404 layoutDecl->fixUniqueId(); 405 return layoutDecl; 406 } 407 408 /// Makes a unary operation 409 Expression *makeOp( const std::string &name, Expression *arg ) { 410 UntypedExpr *expr = new UntypedExpr( new NameExpr( name ) ); 411 expr->get_args().push_back( arg ); 412 return expr; 413 } 414 415 /// Makes a binary operation 416 Expression *makeOp( const std::string &name, Expression *lhs, Expression *rhs ) { 417 UntypedExpr *expr = new UntypedExpr( new NameExpr( name ) ); 418 expr->get_args().push_back( lhs ); 419 expr->get_args().push_back( rhs ); 420 return expr; 421 } 422 423 /// Returns the dereference of a local pointer variable 424 Expression *derefVar( ObjectDecl *var ) { 425 return makeOp( "*?", new VariableExpr( var ) ); 426 } 427 428 /// makes an if-statement with a single-expression if-block and no then block 429 Statement *makeCond( Expression *cond, Expression *ifPart ) { 430 return new IfStmt( noLabels, cond, new ExprStmt( noLabels, ifPart ), 0 ); 431 } 432 433 /// makes a statement that assigns rhs to lhs if lhs < rhs 434 Statement *makeAssignMax( Expression *lhs, Expression *rhs ) { 435 return makeCond( makeOp( "?<?", lhs, rhs ), makeOp( "?=?", lhs->clone(), rhs->clone() ) ); 436 } 437 438 /// makes a statement that aligns lhs to rhs (rhs should be an integer power of two) 439 Statement *makeAlignTo( Expression *lhs, Expression *rhs ) { 440 // check that the lhs is zeroed out to the level of rhs 441 Expression *ifCond = makeOp( "?&?", lhs, makeOp( "?-?", rhs, new ConstantExpr( Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), "1" ) ) ) ); 442 // if not aligned, increment to alignment 443 Expression *ifExpr = makeOp( "?+=?", lhs->clone(), makeOp( "?-?", rhs->clone(), ifCond->clone() ) ); 444 return makeCond( ifCond, ifExpr ); 445 } 446 447 /// adds an expression to a compound statement 448 void addExpr( CompoundStmt *stmts, Expression *expr ) { 449 stmts->get_kids().push_back( new ExprStmt( noLabels, expr ) ); 450 } 451 452 /// adds a statement to a compound statement 453 void addStmt( CompoundStmt *stmts, Statement *stmt ) { 454 stmts->get_kids().push_back( stmt ); 455 } 456 457 Declaration *LayoutFunctionBuilder::mutate( StructDecl *structDecl ) { 458 // do not generate layout function for "empty" tag structs 459 if ( structDecl->get_members().empty() ) return structDecl; 460 461 // get parameters that can change layout, exiting early if none 462 std::list< TypeDecl* > otypeParams = takeOtypeOnly( structDecl->get_parameters() ); 463 if ( otypeParams.empty() ) return structDecl; 464 465 // build layout function signature 466 FunctionType *layoutFnType = new FunctionType( Type::Qualifiers(), false ); 467 BasicType *sizeAlignType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ); 468 PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType ); 469 470 ObjectDecl *sizeParam = new ObjectDecl( sizeofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 ); 471 layoutFnType->get_parameters().push_back( sizeParam ); 472 ObjectDecl *alignParam = new ObjectDecl( alignofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 ); 473 layoutFnType->get_parameters().push_back( alignParam ); 474 ObjectDecl *offsetParam = new ObjectDecl( offsetofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 ); 475 layoutFnType->get_parameters().push_back( offsetParam ); 476 addOtypeParams( layoutFnType, otypeParams ); 477 478 // build function decl 479 FunctionDecl *layoutDecl = buildLayoutFunctionDecl( structDecl, functionNesting, layoutFnType ); 480 481 // calculate struct layout in function body 482 483 // initialize size and alignment to 0 and 1 (will have at least one member to re-edit size 484 addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( sizeParam ), new ConstantExpr( Constant( sizeAlignType->clone(), "0" ) ) ) ); 485 addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( alignParam ), new ConstantExpr( Constant( sizeAlignType->clone(), "1" ) ) ) ); 486 unsigned long n_members = 0; 487 bool firstMember = true; 488 for ( std::list< Declaration* >::const_iterator member = structDecl->get_members().begin(); member != structDecl->get_members().end(); ++member ) { 489 DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *member ); 490 assert( dwt ); 491 Type *memberType = dwt->get_type(); 492 493 if ( firstMember ) { 494 firstMember = false; 495 } else { 496 // make sure all members after the first (automatically aligned at 0) are properly padded for alignment 497 addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), new AlignofExpr( memberType->clone() ) ) ); 498 } 499 500 // place current size in the current offset index 501 addExpr( layoutDecl->get_statements(), makeOp( "?=?", makeOp( "?[?]", new VariableExpr( offsetParam ), new ConstantExpr( Constant::from( n_members ) ) ), 502 derefVar( sizeParam ) ) ); 503 ++n_members; 504 505 // add member size to current size 506 addExpr( layoutDecl->get_statements(), makeOp( "?+=?", derefVar( sizeParam ), new SizeofExpr( memberType->clone() ) ) ); 507 508 // take max of member alignment and global alignment 509 addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( alignParam ), new AlignofExpr( memberType->clone() ) ) ); 510 } 511 // make sure the type is end-padded to a multiple of its alignment 512 addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), derefVar( alignParam ) ) ); 513 514 addDeclarationAfter( layoutDecl ); 515 return structDecl; 516 } 517 518 Declaration *LayoutFunctionBuilder::mutate( UnionDecl *unionDecl ) { 519 // do not generate layout function for "empty" tag unions 520 if ( unionDecl->get_members().empty() ) return unionDecl; 521 522 // get parameters that can change layout, exiting early if none 523 std::list< TypeDecl* > otypeParams = takeOtypeOnly( unionDecl->get_parameters() ); 524 if ( otypeParams.empty() ) return unionDecl; 525 526 // build layout function signature 527 FunctionType *layoutFnType = new FunctionType( Type::Qualifiers(), false ); 528 BasicType *sizeAlignType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ); 529 PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType ); 530 531 ObjectDecl *sizeParam = new ObjectDecl( sizeofName( unionDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 ); 532 layoutFnType->get_parameters().push_back( sizeParam ); 533 ObjectDecl *alignParam = new ObjectDecl( alignofName( unionDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 ); 534 layoutFnType->get_parameters().push_back( alignParam ); 535 addOtypeParams( layoutFnType, otypeParams ); 536 537 // build function decl 538 FunctionDecl *layoutDecl = buildLayoutFunctionDecl( unionDecl, functionNesting, layoutFnType ); 539 540 // calculate union layout in function body 541 addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( sizeParam ), new ConstantExpr( Constant( sizeAlignType->clone(), "1" ) ) ) ); 542 addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( alignParam ), new ConstantExpr( Constant( sizeAlignType->clone(), "1" ) ) ) ); 543 for ( std::list< Declaration* >::const_iterator member = unionDecl->get_members().begin(); member != unionDecl->get_members().end(); ++member ) { 544 DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *member ); 545 assert( dwt ); 546 Type *memberType = dwt->get_type(); 547 548 // take max member size and global size 549 addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( sizeParam ), new SizeofExpr( memberType->clone() ) ) ); 550 551 // take max of member alignment and global alignment 552 addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( alignParam ), new AlignofExpr( memberType->clone() ) ) ); 553 } 554 // make sure the type is end-padded to a multiple of its alignment 555 addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), derefVar( alignParam ) ) ); 556 557 addDeclarationAfter( layoutDecl ); 558 return unionDecl; 559 } 560 208 561 ////////////////////////////////////////// Pass1 //////////////////////////////////////////////////// 209 562 … … 245 598 } 246 599 247 Pass1::Pass1() : useRetval( false ), tempNamer( "_temp" ) { 248 adapters.push(AdapterMap()); 249 } 600 Pass1::Pass1() : useRetval( false ), tempNamer( "_temp" ) {} 250 601 251 602 /// Returns T if the given declaration is (*?=?)(T *, T) for some TypeInstType T (return not checked, but maybe should be), NULL otherwise … … 309 660 310 661 DeclarationWithType *Pass1::mutate( FunctionDecl *functionDecl ) { 311 // if this is a polymorphicassignment function, put it in the map for this scope662 // if this is a assignment function, put it in the map for this scope 312 663 if ( Type *assignedType = isAssignment( functionDecl ) ) { 313 664 if ( ! dynamic_cast< TypeInstType* >( assignedType ) ) { … … 318 669 if ( functionDecl->get_statements() ) { // empty routine body ? 319 670 doBeginScope(); 320 TyVarMap oldtyVars = scopeTyVars;321 std::map< std::string, DeclarationWithType *> oldassignOps = assignOps;671 scopeTyVars.beginScope(); 672 assignOps.beginScope(); 322 673 DeclarationWithType *oldRetval = retval; 323 674 bool oldUseRetval = useRetval; … … 350 701 } // for 351 702 352 AdapterMap & adapters = Pass1::adapters.top();353 703 for ( std::list< FunctionType *>::iterator funType = functions.begin(); funType != functions.end(); ++funType ) { 354 704 std::string mangleName = mangleAdapterName( *funType, scopeTyVars ); … … 361 711 functionDecl->set_statements( functionDecl->get_statements()->acceptMutator( *this ) ); 362 712 363 scopeTyVars = oldtyVars; 364 assignOps = oldassignOps; 365 // std::cerr << "end FunctionDecl: "; 366 // for ( TyVarMap::iterator i = scopeTyVars.begin(); i != scopeTyVars.end(); ++i ) { 367 // std::cerr << i->first << " "; 368 // } 369 // std::cerr << "\n"; 713 scopeTyVars.endScope(); 714 assignOps.endScope(); 370 715 retval = oldRetval; 371 716 useRetval = oldUseRetval; … … 400 745 } 401 746 402 Expression *Pass1::makeOffsetArray( StructInstType *ty ) {403 std::list< Declaration* > &baseMembers = ty->get_baseStruct()->get_members();404 405 // make a new temporary array406 Type *offsetType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );407 std::stringstream lenGen;408 lenGen << baseMembers.size();409 ConstantExpr *lenExpr = new ConstantExpr( Constant( offsetType->clone(), lenGen.str() ) );410 ObjectDecl *arrayTemp = makeTemporary( new ArrayType( Type::Qualifiers(), offsetType, lenExpr, false, false ) );411 412 // build initializer list for temporary413 std::list< Initializer* > inits;414 for ( std::list< Declaration* >::const_iterator member = baseMembers.begin(); member != baseMembers.end(); ++member ) {415 DeclarationWithType *memberDecl;416 if ( DeclarationWithType *origMember = dynamic_cast< DeclarationWithType* >( *member ) ) {417 memberDecl = origMember->clone();418 } else {419 memberDecl = new ObjectDecl( (*member)->get_name(), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, offsetType->clone(), 0 );420 }421 inits.push_back( new SingleInit( new OffsetofExpr( ty->clone(), memberDecl ) ) );422 }423 arrayTemp->set_init( new ListInit( inits ) );424 425 // return variable pointing to temporary426 return new VariableExpr( arrayTemp );427 }428 429 747 void Pass1::passArgTypeVars( ApplicationExpr *appExpr, Type *parmType, Type *argBaseType, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars, std::set< std::string > &seenTypes ) { 430 Type *poly Base = hasPolyBase( parmType, exprTyVars );431 if ( poly Base && ! dynamic_cast< TypeInstType* >( polyBase ) ) {432 std::string sizeName = sizeofName( polyBase );433 if ( seenTypes.count( sizeName ) ) return;748 Type *polyType = isPolyType( parmType, exprTyVars ); 749 if ( polyType && ! dynamic_cast< TypeInstType* >( polyType ) ) { 750 std::string typeName = mangleType( polyType ); 751 if ( seenTypes.count( typeName ) ) return; 434 752 435 753 arg = appExpr->get_args().insert( arg, new SizeofExpr( argBaseType->clone() ) ); … … 437 755 arg = appExpr->get_args().insert( arg, new AlignofExpr( argBaseType->clone() ) ); 438 756 arg++; 439 if ( dynamic_cast< StructInstType* >( poly Base ) ) {757 if ( dynamic_cast< StructInstType* >( polyType ) ) { 440 758 if ( StructInstType *argBaseStructType = dynamic_cast< StructInstType* >( argBaseType ) ) { 441 arg = appExpr->get_args().insert( arg, makeOffsetArray( argBaseStructType ) ); 442 arg++; 759 // zero-length arrays are forbidden by C, so don't pass offset for empty struct 760 if ( ! argBaseStructType->get_baseStruct()->get_members().empty() ) { 761 arg = appExpr->get_args().insert( arg, new OffsetPackExpr( argBaseStructType->clone() ) ); 762 arg++; 763 } 443 764 } else { 444 765 throw SemanticError( "Cannot pass non-struct type for generic struct" ); … … 446 767 } 447 768 448 seenTypes.insert( sizeName );769 seenTypes.insert( typeName ); 449 770 } 450 771 } … … 588 909 return; 589 910 } else if ( arg->get_results().front()->get_isLvalue() ) { 590 // VariableExpr and MemberExpr are lvalues 591 arg = new AddressExpr( arg ); 911 // VariableExpr and MemberExpr are lvalues; need to check this isn't coming from the second arg of a comma expression though (not an lvalue) 912 if ( CommaExpr *commaArg = dynamic_cast< CommaExpr* >( arg ) ) { 913 commaArg->set_arg2( new AddressExpr( commaArg->get_arg2() ) ); 914 } else { 915 arg = new AddressExpr( arg ); 916 } 592 917 } else { 593 918 // use type computed in unification to declare boxed variables … … 684 1009 } // for 685 1010 } 686 687 688 1011 689 1012 FunctionDecl *Pass1::makeAdapter( FunctionType *adaptee, FunctionType *realType, const std::string &mangleName, const TyVarMap &tyVars ) { … … 772 1095 mangleName += makePolyMonoSuffix( originalFunction, exprTyVars ); 773 1096 774 AdapterMap & adapters = Pass1::adapters.top();775 Adapter Map::iterator adapter = adapters.find( mangleName );1097 typedef ScopedMap< std::string, DeclarationWithType* >::iterator AdapterIter; 1098 AdapterIter adapter = adapters.find( mangleName ); 776 1099 if ( adapter == adapters.end() ) { 777 1100 // adapter has not been created yet in the current scope, so define it 778 1101 FunctionDecl *newAdapter = makeAdapter( *funType, realFunction, mangleName, exprTyVars ); 779 adapter = adapters.insert( adapters.begin(), std::pair< std::string, DeclarationWithType *>( mangleName, newAdapter ) ); 1102 std::pair< AdapterIter, bool > answer = adapters.insert( std::pair< std::string, DeclarationWithType *>( mangleName, newAdapter ) ); 1103 adapter = answer.first; 780 1104 stmtsToAdd.push_back( new DeclStmt( noLabels, newAdapter ) ); 781 1105 } // if … … 801 1125 addAssign->get_args().push_back( appExpr->get_args().front() ); 802 1126 } // if 803 addAssign->get_args().push_back( new NameExpr( sizeofName( polyType) ) );1127 addAssign->get_args().push_back( new NameExpr( sizeofName( mangleType( polyType ) ) ) ); 804 1128 addAssign->get_results().front() = appExpr->get_results().front()->clone(); 805 1129 if ( appExpr->get_env() ) { … … 828 1152 UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) ); 829 1153 multiply->get_args().push_back( appExpr->get_args().back() ); 830 multiply->get_args().push_back( new NameExpr( sizeofName( baseType1) ) );1154 multiply->get_args().push_back( new SizeofExpr( baseType1->clone() ) ); 831 1155 ret->get_args().push_back( appExpr->get_args().front() ); 832 1156 ret->get_args().push_back( multiply ); … … 834 1158 UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) ); 835 1159 multiply->get_args().push_back( appExpr->get_args().front() ); 836 multiply->get_args().push_back( new NameExpr( sizeofName( baseType2) ) );1160 multiply->get_args().push_back( new SizeofExpr( baseType2->clone() ) ); 837 1161 ret->get_args().push_back( multiply ); 838 1162 ret->get_args().push_back( appExpr->get_args().back() ); … … 897 1221 UntypedExpr *divide = new UntypedExpr( new NameExpr( "?/?" ) ); 898 1222 divide->get_args().push_back( appExpr ); 899 divide->get_args().push_back( new NameExpr( sizeofName( baseType1) ) );1223 divide->get_args().push_back( new SizeofExpr( baseType1->clone() ) ); 900 1224 divide->get_results().push_front( appExpr->get_results().front()->clone() ); 901 1225 if ( appExpr->get_env() ) { … … 907 1231 UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) ); 908 1232 multiply->get_args().push_back( appExpr->get_args().back() ); 909 multiply->get_args().push_back( new NameExpr( sizeofName( baseType1) ) );1233 multiply->get_args().push_back( new SizeofExpr( baseType1->clone() ) ); 910 1234 appExpr->get_args().back() = multiply; 911 1235 } else if ( baseType2 ) { 912 1236 UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) ); 913 1237 multiply->get_args().push_back( appExpr->get_args().front() ); 914 multiply->get_args().push_back( new NameExpr( sizeofName( baseType2) ) );1238 multiply->get_args().push_back( new SizeofExpr( baseType2->clone() ) ); 915 1239 appExpr->get_args().front() = multiply; 916 1240 } // if … … 922 1246 UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) ); 923 1247 multiply->get_args().push_back( appExpr->get_args().back() ); 924 multiply->get_args().push_back( new NameExpr( sizeofName( baseType) ) );1248 multiply->get_args().push_back( new SizeofExpr( baseType->clone() ) ); 925 1249 appExpr->get_args().back() = multiply; 926 1250 } // if … … 959 1283 std::list< Expression *>::iterator paramBegin = appExpr->get_args().begin(); 960 1284 961 TyVarMap exprTyVars ;1285 TyVarMap exprTyVars( (TypeDecl::Kind)-1 ); 962 1286 makeTyVarMap( function, exprTyVars ); 963 1287 ReferenceToType *polyRetType = isPolyRet( function ); … … 982 1306 983 1307 boxParams( appExpr, function, arg, exprTyVars ); 984 985 1308 passAdapters( appExpr, function, exprTyVars ); 986 1309 … … 1062 1385 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( retval->get_type() ) ) { 1063 1386 // find assignment operator for type variable 1064 std::map< std::string, DeclarationWithType *>::const_iterator assignIter = assignOps.find( typeInst->get_name() );1387 ScopedMap< std::string, DeclarationWithType *>::const_iterator assignIter = assignOps.find( typeInst->get_name() ); 1065 1388 if ( assignIter == assignOps.end() ) { 1066 1389 throw SemanticError( "Attempt to return dtype or ftype object in ", returnStmt->get_expr() ); … … 1084 1407 std::list< TypeDecl* >::const_iterator forallIt = forallParams.begin(); 1085 1408 for ( ; tyIt != tyParams.end() && forallIt != forallParams.end(); ++tyIt, ++forallIt ) { 1086 if ( (*forallIt)->get_kind() != TypeDecl::Any ) continue; // skip types with no assign op (ftype/dtype) 1087 1088 std::list< DeclarationWithType* > &asserts = (*forallIt)->get_assertions(); 1089 assert( ! asserts.empty() && "Type param needs assignment operator assertion" ); 1090 DeclarationWithType *actualDecl = asserts.front(); 1091 TypeInstType *actualType = isTypeInstAssignment( actualDecl ); 1092 assert( actualType && "First assertion of type with assertions should be assignment operator" ); 1409 // Add appropriate mapping to assignment expression environment 1093 1410 TypeExpr *formalTypeExpr = dynamic_cast< TypeExpr* >( *tyIt ); 1094 1411 assert( formalTypeExpr && "type parameters must be type expressions" ); 1095 1412 Type *formalType = formalTypeExpr->get_type(); 1096 assignExpr->get_env()->add( actualType->get_name(), formalType ); 1097 1413 assignExpr->get_env()->add( (*forallIt)->get_name(), formalType ); 1414 1415 // skip types with no assign op (ftype/dtype) 1416 if ( (*forallIt)->get_kind() != TypeDecl::Any ) continue; 1417 1418 // find assignment operator for formal type 1098 1419 DeclarationWithType *assertAssign = 0; 1099 1420 if ( TypeInstType *formalTypeInstType = dynamic_cast< TypeInstType* >( formalType ) ) { 1100 std::map< std::string, DeclarationWithType *>::const_iterator assertAssignIt = assignOps.find( formalTypeInstType->get_name() );1421 ScopedMap< std::string, DeclarationWithType *>::const_iterator assertAssignIt = assignOps.find( formalTypeInstType->get_name() ); 1101 1422 if ( assertAssignIt == assignOps.end() ) { 1102 1423 throw SemanticError( "No assignment operation found for ", formalTypeInstType ); … … 1109 1430 } 1110 1431 } 1111 1112 1432 1433 // add inferred parameter for field assignment operator to assignment expression 1434 std::list< DeclarationWithType* > &asserts = (*forallIt)->get_assertions(); 1435 assert( ! asserts.empty() && "Type param needs assignment operator assertion" ); 1436 DeclarationWithType *actualDecl = asserts.front(); 1113 1437 assignExpr->get_inferParams()[ actualDecl->get_uniqueId() ] 1114 1438 = ParamEntry( assertAssign->get_uniqueId(), assertAssign->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertAssign ) ); … … 1136 1460 1137 1461 Type * Pass1::mutate( PointerType *pointerType ) { 1138 TyVarMap oldtyVars = scopeTyVars;1462 scopeTyVars.beginScope(); 1139 1463 makeTyVarMap( pointerType, scopeTyVars ); 1140 1464 1141 1465 Type *ret = Mutator::mutate( pointerType ); 1142 1466 1143 scopeTyVars = oldtyVars;1467 scopeTyVars.endScope(); 1144 1468 return ret; 1145 1469 } 1146 1470 1147 1471 Type * Pass1::mutate( FunctionType *functionType ) { 1148 TyVarMap oldtyVars = scopeTyVars;1472 scopeTyVars.beginScope(); 1149 1473 makeTyVarMap( functionType, scopeTyVars ); 1150 1474 1151 1475 Type *ret = Mutator::mutate( functionType ); 1152 1476 1153 scopeTyVars = oldtyVars;1477 scopeTyVars.endScope(); 1154 1478 return ret; 1155 1479 } 1156 1480 1157 1481 void Pass1::doBeginScope() { 1158 // push a copy of the current map 1159 adapters.push(adapters.top()); 1482 adapters.beginScope(); 1160 1483 scopedAssignOps.beginScope(); 1161 1484 } 1162 1485 1163 1486 void Pass1::doEndScope() { 1164 adapters. pop();1487 adapters.endScope(); 1165 1488 scopedAssignOps.endScope(); 1166 1489 } … … 1217 1540 1218 1541 Type * Pass2::mutate( PointerType *pointerType ) { 1219 TyVarMap oldtyVars = scopeTyVars;1542 scopeTyVars.beginScope(); 1220 1543 makeTyVarMap( pointerType, scopeTyVars ); 1221 1544 1222 1545 Type *ret = Mutator::mutate( pointerType ); 1223 1546 1224 scopeTyVars = oldtyVars;1547 scopeTyVars.endScope(); 1225 1548 return ret; 1226 1549 } 1227 1550 1228 1551 Type *Pass2::mutate( FunctionType *funcType ) { 1229 TyVarMap oldtyVars = scopeTyVars;1552 scopeTyVars.beginScope(); 1230 1553 makeTyVarMap( funcType, scopeTyVars ); 1231 1554 … … 1244 1567 ObjectDecl newPtr( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, 1245 1568 new PointerType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) ), 0 ); 1246 // ObjectDecl *newFunPtr = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 );1247 1569 for ( std::list< TypeDecl *>::const_iterator tyParm = funcType->get_forall().begin(); tyParm != funcType->get_forall().end(); ++tyParm ) { 1248 1570 ObjectDecl *sizeParm, *alignParm; … … 1250 1572 if ( (*tyParm)->get_kind() == TypeDecl::Any ) { 1251 1573 TypeInstType parmType( Type::Qualifiers(), (*tyParm)->get_name(), *tyParm ); 1574 std::string parmName = mangleType( &parmType ); 1252 1575 1253 1576 sizeParm = newObj.clone(); 1254 sizeParm->set_name( sizeofName( &parmType ) );1577 sizeParm->set_name( sizeofName( parmName ) ); 1255 1578 last = funcType->get_parameters().insert( last, sizeParm ); 1256 1579 ++last; 1257 1580 1258 1581 alignParm = newObj.clone(); 1259 alignParm->set_name( alignofName( &parmType ) );1582 alignParm->set_name( alignofName( parmName ) ); 1260 1583 last = funcType->get_parameters().insert( last, alignParm ); 1261 1584 ++last; … … 1272 1595 std::set< std::string > seenTypes; // sizeofName for generic types we've seen 1273 1596 for ( std::list< DeclarationWithType* >::const_iterator fnParm = last; fnParm != funcType->get_parameters().end(); ++fnParm ) { 1274 Type *poly Base = hasPolyBase( (*fnParm)->get_type(), scopeTyVars );1275 if ( poly Base && ! dynamic_cast< TypeInstType* >( polyBase ) ) {1276 std::string sizeName = sizeofName( polyBase );1277 if ( seenTypes.count( sizeName ) ) continue;1597 Type *polyType = isPolyType( (*fnParm)->get_type(), scopeTyVars ); 1598 if ( polyType && ! dynamic_cast< TypeInstType* >( polyType ) ) { 1599 std::string typeName = mangleType( polyType ); 1600 if ( seenTypes.count( typeName ) ) continue; 1278 1601 1279 1602 ObjectDecl *sizeParm, *alignParm, *offsetParm; 1280 1603 sizeParm = newObj.clone(); 1281 sizeParm->set_name( size Name);1604 sizeParm->set_name( sizeofName( typeName ) ); 1282 1605 last = funcType->get_parameters().insert( last, sizeParm ); 1283 1606 ++last; 1284 1607 1285 1608 alignParm = newObj.clone(); 1286 alignParm->set_name( alignofName( polyBase ) );1609 alignParm->set_name( alignofName( typeName ) ); 1287 1610 last = funcType->get_parameters().insert( last, alignParm ); 1288 1611 ++last; 1289 1612 1290 if ( dynamic_cast< StructInstType* >( polyBase ) ) { 1291 offsetParm = newPtr.clone(); 1292 offsetParm->set_name( offsetofName( polyBase ) ); 1293 last = funcType->get_parameters().insert( last, offsetParm ); 1294 ++last; 1613 if ( StructInstType *polyBaseStruct = dynamic_cast< StructInstType* >( polyType ) ) { 1614 // NOTE zero-length arrays are illegal in C, so empty structs have no offset array 1615 if ( ! polyBaseStruct->get_baseStruct()->get_members().empty() ) { 1616 offsetParm = newPtr.clone(); 1617 offsetParm->set_name( offsetofName( typeName ) ); 1618 last = funcType->get_parameters().insert( last, offsetParm ); 1619 ++last; 1620 } 1295 1621 } 1296 1622 1297 seenTypes.insert( sizeName );1623 seenTypes.insert( typeName ); 1298 1624 } 1299 1625 } … … 1305 1631 mutateAll( funcType->get_parameters(), *this ); 1306 1632 1307 scopeTyVars = oldtyVars;1633 scopeTyVars.endScope(); 1308 1634 return funcType; 1309 1635 } 1310 1636 1311 ////////////////////////////////////////// MemberExprFixer //////////////////////////////////////////////////// 1637 //////////////////////////////////////// GenericInstantiator ////////////////////////////////////////////////// 1638 1639 /// Makes substitutions of params into baseParams; returns true if all parameters substituted for a concrete type 1640 bool makeSubstitutions( const std::list< TypeDecl* >& baseParams, const std::list< Expression* >& params, std::list< TypeExpr* >& out ) { 1641 bool allConcrete = true; // will finish the substitution list even if they're not all concrete 1642 1643 // substitute concrete types for given parameters, and incomplete types for placeholders 1644 std::list< TypeDecl* >::const_iterator baseParam = baseParams.begin(); 1645 std::list< Expression* >::const_iterator param = params.begin(); 1646 for ( ; baseParam != baseParams.end() && param != params.end(); ++baseParam, ++param ) { 1647 // switch ( (*baseParam)->get_kind() ) { 1648 // case TypeDecl::Any: { // any type is a valid substitution here; complete types can be used to instantiate generics 1649 TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param ); 1650 assert(paramType && "Aggregate parameters should be type expressions"); 1651 out.push_back( paramType->clone() ); 1652 // check that the substituted type isn't a type variable itself 1653 if ( dynamic_cast< TypeInstType* >( paramType->get_type() ) ) { 1654 allConcrete = false; 1655 } 1656 // break; 1657 // } 1658 // case TypeDecl::Dtype: // dtype can be consistently replaced with void [only pointers, which become void*] 1659 // out.push_back( new TypeExpr( new VoidType( Type::Qualifiers() ) ) ); 1660 // break; 1661 // case TypeDecl::Ftype: // pointer-to-ftype can be consistently replaced with void (*)(void) [similar to dtype] 1662 // out.push_back( new TypeExpr( new FunctionType( Type::Qualifiers(), false ) ) ); 1663 // break; 1664 // } 1665 } 1666 1667 // if any parameters left over, not done 1668 if ( baseParam != baseParams.end() ) return false; 1669 // // if not enough parameters given, substitute remaining incomplete types for placeholders 1670 // for ( ; baseParam != baseParams.end(); ++baseParam ) { 1671 // switch ( (*baseParam)->get_kind() ) { 1672 // case TypeDecl::Any: // no more substitutions here, fail early 1673 // return false; 1674 // case TypeDecl::Dtype: // dtype can be consistently replaced with void [only pointers, which become void*] 1675 // out.push_back( new TypeExpr( new VoidType( Type::Qualifiers() ) ) ); 1676 // break; 1677 // case TypeDecl::Ftype: // pointer-to-ftype can be consistently replaced with void (*)(void) [similar to dtype] 1678 // out.push_back( new TypeExpr( new FunctionType( Type::Qualifiers(), false ) ) ); 1679 // break; 1680 // } 1681 // } 1682 1683 return allConcrete; 1684 } 1685 1686 /// Substitutes types of members of in according to baseParams => typeSubs, appending the result to out 1687 void substituteMembers( const std::list< Declaration* >& in, const std::list< TypeDecl* >& baseParams, const std::list< TypeExpr* >& typeSubs, 1688 std::list< Declaration* >& out ) { 1689 // substitute types into new members 1690 TypeSubstitution subs( baseParams.begin(), baseParams.end(), typeSubs.begin() ); 1691 for ( std::list< Declaration* >::const_iterator member = in.begin(); member != in.end(); ++member ) { 1692 Declaration *newMember = (*member)->clone(); 1693 subs.apply(newMember); 1694 out.push_back( newMember ); 1695 } 1696 } 1697 1698 Type* GenericInstantiator::mutate( StructInstType *inst ) { 1699 // mutate subtypes 1700 Type *mutated = Mutator::mutate( inst ); 1701 inst = dynamic_cast< StructInstType* >( mutated ); 1702 if ( ! inst ) return mutated; 1703 1704 // exit early if no need for further mutation 1705 if ( inst->get_parameters().empty() ) return inst; 1706 assert( inst->get_baseParameters() && "Base struct has parameters" ); 1707 1708 // check if type can be concretely instantiated; put substitutions into typeSubs 1709 std::list< TypeExpr* > typeSubs; 1710 if ( ! makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs ) ) { 1711 deleteAll( typeSubs ); 1712 return inst; 1713 } 1714 1715 // make concrete instantiation of generic type 1716 StructDecl *concDecl = lookup( inst, typeSubs ); 1717 if ( ! concDecl ) { 1718 // set concDecl to new type, insert type declaration into statements to add 1719 concDecl = new StructDecl( typeNamer.newName( inst->get_name() ) ); 1720 substituteMembers( inst->get_baseStruct()->get_members(), *inst->get_baseParameters(), typeSubs, concDecl->get_members() ); 1721 DeclMutator::addDeclaration( concDecl ); 1722 insert( inst, typeSubs, concDecl ); 1723 } 1724 StructInstType *newInst = new StructInstType( inst->get_qualifiers(), concDecl->get_name() ); 1725 newInst->set_baseStruct( concDecl ); 1726 1727 deleteAll( typeSubs ); 1728 delete inst; 1729 return newInst; 1730 } 1731 1732 Type* GenericInstantiator::mutate( UnionInstType *inst ) { 1733 // mutate subtypes 1734 Type *mutated = Mutator::mutate( inst ); 1735 inst = dynamic_cast< UnionInstType* >( mutated ); 1736 if ( ! inst ) return mutated; 1737 1738 // exit early if no need for further mutation 1739 if ( inst->get_parameters().empty() ) return inst; 1740 assert( inst->get_baseParameters() && "Base union has parameters" ); 1741 1742 // check if type can be concretely instantiated; put substitutions into typeSubs 1743 std::list< TypeExpr* > typeSubs; 1744 if ( ! makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs ) ) { 1745 deleteAll( typeSubs ); 1746 return inst; 1747 } 1748 1749 // make concrete instantiation of generic type 1750 UnionDecl *concDecl = lookup( inst, typeSubs ); 1751 if ( ! concDecl ) { 1752 // set concDecl to new type, insert type declaration into statements to add 1753 concDecl = new UnionDecl( typeNamer.newName( inst->get_name() ) ); 1754 substituteMembers( inst->get_baseUnion()->get_members(), *inst->get_baseParameters(), typeSubs, concDecl->get_members() ); 1755 DeclMutator::addDeclaration( concDecl ); 1756 insert( inst, typeSubs, concDecl ); 1757 } 1758 UnionInstType *newInst = new UnionInstType( inst->get_qualifiers(), concDecl->get_name() ); 1759 newInst->set_baseUnion( concDecl ); 1760 1761 deleteAll( typeSubs ); 1762 delete inst; 1763 return newInst; 1764 } 1765 1766 // /// Gets the base struct or union declaration for a member expression; NULL if not applicable 1767 // AggregateDecl* getMemberBaseDecl( MemberExpr *memberExpr ) { 1768 // // get variable for member aggregate 1769 // VariableExpr *varExpr = dynamic_cast< VariableExpr* >( memberExpr->get_aggregate() ); 1770 // if ( ! varExpr ) return NULL; 1771 // 1772 // // get object for variable 1773 // ObjectDecl *objectDecl = dynamic_cast< ObjectDecl* >( varExpr->get_var() ); 1774 // if ( ! objectDecl ) return NULL; 1775 // 1776 // // get base declaration from object type 1777 // Type *objectType = objectDecl->get_type(); 1778 // StructInstType *structType = dynamic_cast< StructInstType* >( objectType ); 1779 // if ( structType ) return structType->get_baseStruct(); 1780 // UnionInstType *unionType = dynamic_cast< UnionInstType* >( objectType ); 1781 // if ( unionType ) return unionType->get_baseUnion(); 1782 // 1783 // return NULL; 1784 // } 1785 // 1786 // /// Finds the declaration with the given name, returning decls.end() if none such 1787 // std::list< Declaration* >::const_iterator findDeclNamed( const std::list< Declaration* > &decls, const std::string &name ) { 1788 // for( std::list< Declaration* >::const_iterator decl = decls.begin(); decl != decls.end(); ++decl ) { 1789 // if ( (*decl)->get_name() == name ) return decl; 1790 // } 1791 // return decls.end(); 1792 // } 1793 // 1794 // Expression* Instantiate::mutate( MemberExpr *memberExpr ) { 1795 // // mutate, exiting early if no longer MemberExpr 1796 // Expression *expr = Mutator::mutate( memberExpr ); 1797 // memberExpr = dynamic_cast< MemberExpr* >( expr ); 1798 // if ( ! memberExpr ) return expr; 1799 // 1800 // // get declaration of member and base declaration of member, exiting early if not found 1801 // AggregateDecl *memberBase = getMemberBaseDecl( memberExpr ); 1802 // if ( ! memberBase ) return memberExpr; 1803 // DeclarationWithType *memberDecl = memberExpr->get_member(); 1804 // std::list< Declaration* >::const_iterator baseIt = findDeclNamed( memberBase->get_members(), memberDecl->get_name() ); 1805 // if ( baseIt == memberBase->get_members().end() ) return memberExpr; 1806 // DeclarationWithType *baseDecl = dynamic_cast< DeclarationWithType* >( *baseIt ); 1807 // if ( ! baseDecl ) return memberExpr; 1808 // 1809 // // check if stated type of the member is not the type of the member's declaration; if so, need a cast 1810 // // this *SHOULD* be safe, I don't think anything but the void-replacements I put in for dtypes would make it past the typechecker 1811 // SymTab::Indexer dummy; 1812 // if ( ResolvExpr::typesCompatible( memberDecl->get_type(), baseDecl->get_type(), dummy ) ) return memberExpr; 1813 // else return new CastExpr( memberExpr, memberDecl->get_type() ); 1814 // } 1815 1816 void GenericInstantiator::doBeginScope() { 1817 DeclMutator::doBeginScope(); 1818 instantiations.beginScope(); 1819 } 1820 1821 void GenericInstantiator::doEndScope() { 1822 DeclMutator::doEndScope(); 1823 instantiations.endScope(); 1824 } 1825 1826 ////////////////////////////////////////// PolyGenericCalculator //////////////////////////////////////////////////// 1827 1828 void PolyGenericCalculator::beginTypeScope( Type *ty ) { 1829 scopeTyVars.beginScope(); 1830 makeTyVarMap( ty, scopeTyVars ); 1831 } 1832 1833 void PolyGenericCalculator::endTypeScope() { 1834 scopeTyVars.endScope(); 1835 } 1312 1836 1313 1837 template< typename DeclClass > 1314 DeclClass * MemberExprFixer::handleDecl( DeclClass *decl, Type *type ) { 1315 TyVarMap oldtyVars = scopeTyVars; 1316 makeTyVarMap( type, scopeTyVars ); 1838 DeclClass * PolyGenericCalculator::handleDecl( DeclClass *decl, Type *type ) { 1839 beginTypeScope( type ); 1840 knownLayouts.beginScope(); 1841 knownOffsets.beginScope(); 1317 1842 1318 1843 DeclClass *ret = static_cast< DeclClass *>( Mutator::mutate( decl ) ); 1319 1844 1320 scopeTyVars = oldtyVars; 1845 knownOffsets.endScope(); 1846 knownLayouts.endScope(); 1847 endTypeScope(); 1321 1848 return ret; 1322 1849 } 1323 1850 1324 ObjectDecl * MemberExprFixer::mutate( ObjectDecl *objectDecl ) {1851 ObjectDecl * PolyGenericCalculator::mutate( ObjectDecl *objectDecl ) { 1325 1852 return handleDecl( objectDecl, objectDecl->get_type() ); 1326 1853 } 1327 1854 1328 DeclarationWithType * MemberExprFixer::mutate( FunctionDecl *functionDecl ) {1855 DeclarationWithType * PolyGenericCalculator::mutate( FunctionDecl *functionDecl ) { 1329 1856 return handleDecl( functionDecl, functionDecl->get_functionType() ); 1330 1857 } 1331 1858 1332 TypedefDecl * MemberExprFixer::mutate( TypedefDecl *typedefDecl ) {1859 TypedefDecl * PolyGenericCalculator::mutate( TypedefDecl *typedefDecl ) { 1333 1860 return handleDecl( typedefDecl, typedefDecl->get_base() ); 1334 1861 } 1335 1862 1336 TypeDecl * MemberExprFixer::mutate( TypeDecl *typeDecl ) {1863 TypeDecl * PolyGenericCalculator::mutate( TypeDecl *typeDecl ) { 1337 1864 scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind(); 1338 1865 return Mutator::mutate( typeDecl ); 1339 1866 } 1340 1867 1341 Type * MemberExprFixer::mutate( PointerType *pointerType ) { 1342 TyVarMap oldtyVars = scopeTyVars; 1343 makeTyVarMap( pointerType, scopeTyVars ); 1868 Type * PolyGenericCalculator::mutate( PointerType *pointerType ) { 1869 beginTypeScope( pointerType ); 1344 1870 1345 1871 Type *ret = Mutator::mutate( pointerType ); 1346 1872 1347 scopeTyVars = oldtyVars;1873 endTypeScope(); 1348 1874 return ret; 1349 1875 } 1350 1876 1351 Type * MemberExprFixer::mutate( FunctionType *functionType ) { 1352 TyVarMap oldtyVars = scopeTyVars; 1353 makeTyVarMap( functionType, scopeTyVars ); 1354 1355 Type *ret = Mutator::mutate( functionType ); 1356 1357 scopeTyVars = oldtyVars; 1877 Type * PolyGenericCalculator::mutate( FunctionType *funcType ) { 1878 beginTypeScope( funcType ); 1879 1880 // make sure that any type information passed into the function is accounted for 1881 for ( std::list< DeclarationWithType* >::const_iterator fnParm = funcType->get_parameters().begin(); fnParm != funcType->get_parameters().end(); ++fnParm ) { 1882 // condition here duplicates that in Pass2::mutate( FunctionType* ) 1883 Type *polyType = isPolyType( (*fnParm)->get_type(), scopeTyVars ); 1884 if ( polyType && ! dynamic_cast< TypeInstType* >( polyType ) ) { 1885 knownLayouts.insert( mangleType( polyType ) ); 1886 } 1887 } 1888 1889 Type *ret = Mutator::mutate( funcType ); 1890 1891 endTypeScope(); 1358 1892 return ret; 1359 1893 } 1360 1894 1361 Statement * MemberExprFixer::mutate( DeclStmt *declStmt ) {1895 Statement *PolyGenericCalculator::mutate( DeclStmt *declStmt ) { 1362 1896 if ( ObjectDecl *objectDecl = dynamic_cast< ObjectDecl *>( declStmt->get_decl() ) ) { 1363 if ( isPolyType( objectDecl->get_type(), scopeTyVars) ) {1897 if ( findGeneric( objectDecl->get_type() ) ) { 1364 1898 // change initialization of a polymorphic value object 1365 1899 // to allocate storage with alloca 1366 1900 Type *declType = objectDecl->get_type(); 1367 1901 UntypedExpr *alloc = new UntypedExpr( new NameExpr( "__builtin_alloca" ) ); 1368 alloc->get_args().push_back( new NameExpr( sizeofName( declType) ) );1902 alloc->get_args().push_back( new NameExpr( sizeofName( mangleType( declType ) ) ) ); 1369 1903 1370 1904 delete objectDecl->get_init(); … … 1398 1932 ConstantExpr *fieldIndex = new ConstantExpr( Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), offset_namer.str() ) ); 1399 1933 UntypedExpr *fieldOffset = new UntypedExpr( new NameExpr( "?[?]" ) ); 1400 fieldOffset->get_args().push_back( new NameExpr( offsetofName( objectType) ) );1934 fieldOffset->get_args().push_back( new NameExpr( offsetofName( mangleType( objectType ) ) ) ); 1401 1935 fieldOffset->get_args().push_back( fieldIndex ); 1402 1936 return fieldOffset; … … 1413 1947 } 1414 1948 1415 Expression * MemberExprFixer::mutate( MemberExpr *memberExpr ) {1949 Expression *PolyGenericCalculator::mutate( MemberExpr *memberExpr ) { 1416 1950 // mutate, exiting early if no longer MemberExpr 1417 1951 Expression *expr = Mutator::mutate( memberExpr ); … … 1430 1964 Type *objectType = hasPolyBase( objectDecl->get_type(), scopeTyVars, &tyDepth ); 1431 1965 if ( ! objectType ) return memberExpr; 1966 findGeneric( objectType ); // ensure layout for this type is available 1432 1967 1433 1968 Expression *newMemberExpr = 0; … … 1461 1996 } 1462 1997 1463 Expression *MemberExprFixer::mutate( OffsetofExpr *offsetofExpr ) { 1998 ObjectDecl *PolyGenericCalculator::makeVar( const std::string &name, Type *type, Initializer *init ) { 1999 ObjectDecl *newObj = new ObjectDecl( name, DeclarationNode::NoStorageClass, LinkageSpec::C, 0, type, init ); 2000 stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) ); 2001 return newObj; 2002 } 2003 2004 void PolyGenericCalculator::addOtypeParamsToLayoutCall( UntypedExpr *layoutCall, const std::list< Type* > &otypeParams ) { 2005 for ( std::list< Type* >::const_iterator param = otypeParams.begin(); param != otypeParams.end(); ++param ) { 2006 if ( findGeneric( *param ) ) { 2007 // push size/align vars for a generic parameter back 2008 std::string paramName = mangleType( *param ); 2009 layoutCall->get_args().push_back( new NameExpr( sizeofName( paramName ) ) ); 2010 layoutCall->get_args().push_back( new NameExpr( alignofName( paramName ) ) ); 2011 } else { 2012 layoutCall->get_args().push_back( new SizeofExpr( (*param)->clone() ) ); 2013 layoutCall->get_args().push_back( new AlignofExpr( (*param)->clone() ) ); 2014 } 2015 } 2016 } 2017 2018 /// returns true if any of the otype parameters have a dynamic layout and puts all otype parameters in the output list 2019 bool findGenericParams( std::list< TypeDecl* > &baseParams, std::list< Expression* > &typeParams, std::list< Type* > &out ) { 2020 bool hasDynamicLayout = false; 2021 2022 std::list< TypeDecl* >::const_iterator baseParam = baseParams.begin(); 2023 std::list< Expression* >::const_iterator typeParam = typeParams.begin(); 2024 for ( ; baseParam != baseParams.end() && typeParam != typeParams.end(); ++baseParam, ++typeParam ) { 2025 // skip non-otype parameters 2026 if ( (*baseParam)->get_kind() != TypeDecl::Any ) continue; 2027 TypeExpr *typeExpr = dynamic_cast< TypeExpr* >( *typeParam ); 2028 assert( typeExpr && "all otype parameters should be type expressions" ); 2029 2030 Type *type = typeExpr->get_type(); 2031 out.push_back( type ); 2032 if ( isPolyType( type ) ) hasDynamicLayout = true; 2033 } 2034 assert( baseParam == baseParams.end() && typeParam == typeParams.end() ); 2035 2036 return hasDynamicLayout; 2037 } 2038 2039 bool PolyGenericCalculator::findGeneric( Type *ty ) { 2040 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( ty ) ) { 2041 // duplicate logic from isPolyType() 2042 if ( env ) { 2043 if ( Type *newType = env->lookup( typeInst->get_name() ) ) { 2044 return findGeneric( newType ); 2045 } // if 2046 } // if 2047 if ( scopeTyVars.find( typeInst->get_name() ) != scopeTyVars.end() ) { 2048 // NOTE assumes here that getting put in the scopeTyVars included having the layout variables set 2049 return true; 2050 } 2051 return false; 2052 } else if ( StructInstType *structTy = dynamic_cast< StructInstType* >( ty ) ) { 2053 // check if this type already has a layout generated for it 2054 std::string typeName = mangleType( ty ); 2055 if ( knownLayouts.find( typeName ) != knownLayouts.end() ) return true; 2056 2057 // check if any of the type parameters have dynamic layout; if none do, this type is (or will be) monomorphized 2058 std::list< Type* > otypeParams; 2059 if ( ! findGenericParams( *structTy->get_baseParameters(), structTy->get_parameters(), otypeParams ) ) return false; 2060 2061 // insert local variables for layout and generate call to layout function 2062 knownLayouts.insert( typeName ); // done early so as not to interfere with the later addition of parameters to the layout call 2063 Type *layoutType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ); 2064 2065 int n_members = structTy->get_baseStruct()->get_members().size(); 2066 if ( n_members == 0 ) { 2067 // all empty structs have the same layout - size 1, align 1 2068 makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from( (unsigned long)1 ) ) ) ); 2069 makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from( (unsigned long)1 ) ) ) ); 2070 // NOTE zero-length arrays are forbidden in C, so empty structs have no offsetof array 2071 } else { 2072 ObjectDecl *sizeVar = makeVar( sizeofName( typeName ), layoutType ); 2073 ObjectDecl *alignVar = makeVar( alignofName( typeName ), layoutType->clone() ); 2074 ObjectDecl *offsetVar = makeVar( offsetofName( typeName ), new ArrayType( Type::Qualifiers(), layoutType->clone(), new ConstantExpr( Constant::from( n_members ) ), false, false ) ); 2075 2076 // generate call to layout function 2077 UntypedExpr *layoutCall = new UntypedExpr( new NameExpr( layoutofName( structTy->get_baseStruct() ) ) ); 2078 layoutCall->get_args().push_back( new AddressExpr( new VariableExpr( sizeVar ) ) ); 2079 layoutCall->get_args().push_back( new AddressExpr( new VariableExpr( alignVar ) ) ); 2080 layoutCall->get_args().push_back( new VariableExpr( offsetVar ) ); 2081 addOtypeParamsToLayoutCall( layoutCall, otypeParams ); 2082 2083 stmtsToAdd.push_back( new ExprStmt( noLabels, layoutCall ) ); 2084 } 2085 2086 return true; 2087 } else if ( UnionInstType *unionTy = dynamic_cast< UnionInstType* >( ty ) ) { 2088 // check if this type already has a layout generated for it 2089 std::string typeName = mangleType( ty ); 2090 if ( knownLayouts.find( typeName ) != knownLayouts.end() ) return true; 2091 2092 // check if any of the type parameters have dynamic layout; if none do, this type is (or will be) monomorphized 2093 std::list< Type* > otypeParams; 2094 if ( ! findGenericParams( *unionTy->get_baseParameters(), unionTy->get_parameters(), otypeParams ) ) return false; 2095 2096 // insert local variables for layout and generate call to layout function 2097 knownLayouts.insert( typeName ); // done early so as not to interfere with the later addition of parameters to the layout call 2098 Type *layoutType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ); 2099 2100 ObjectDecl *sizeVar = makeVar( sizeofName( typeName ), layoutType ); 2101 ObjectDecl *alignVar = makeVar( alignofName( typeName ), layoutType->clone() ); 2102 2103 // generate call to layout function 2104 UntypedExpr *layoutCall = new UntypedExpr( new NameExpr( layoutofName( unionTy->get_baseUnion() ) ) ); 2105 layoutCall->get_args().push_back( new AddressExpr( new VariableExpr( sizeVar ) ) ); 2106 layoutCall->get_args().push_back( new AddressExpr( new VariableExpr( alignVar ) ) ); 2107 addOtypeParamsToLayoutCall( layoutCall, otypeParams ); 2108 2109 stmtsToAdd.push_back( new ExprStmt( noLabels, layoutCall ) ); 2110 2111 return true; 2112 } 2113 2114 return false; 2115 } 2116 2117 Expression *PolyGenericCalculator::mutate( SizeofExpr *sizeofExpr ) { 2118 Type *ty = sizeofExpr->get_type(); 2119 if ( findGeneric( ty ) ) { 2120 Expression *ret = new NameExpr( sizeofName( mangleType( ty ) ) ); 2121 delete sizeofExpr; 2122 return ret; 2123 } 2124 return sizeofExpr; 2125 } 2126 2127 Expression *PolyGenericCalculator::mutate( AlignofExpr *alignofExpr ) { 2128 Type *ty = alignofExpr->get_type(); 2129 if ( findGeneric( ty ) ) { 2130 Expression *ret = new NameExpr( alignofName( mangleType( ty ) ) ); 2131 delete alignofExpr; 2132 return ret; 2133 } 2134 return alignofExpr; 2135 } 2136 2137 Expression *PolyGenericCalculator::mutate( OffsetofExpr *offsetofExpr ) { 1464 2138 // mutate, exiting early if no longer OffsetofExpr 1465 2139 Expression *expr = Mutator::mutate( offsetofExpr ); … … 1468 2142 1469 2143 // only mutate expressions for polymorphic structs/unions 1470 Type *ty = isPolyType( offsetofExpr->get_type(), scopeTyVars);1471 if ( ! ty) return offsetofExpr;1472 2144 Type *ty = offsetofExpr->get_type(); 2145 if ( ! findGeneric( ty ) ) return offsetofExpr; 2146 1473 2147 if ( StructInstType *structType = dynamic_cast< StructInstType* >( ty ) ) { 1474 2148 // replace offsetof expression by index into offset array … … 1486 2160 } 1487 2161 2162 Expression *PolyGenericCalculator::mutate( OffsetPackExpr *offsetPackExpr ) { 2163 StructInstType *ty = offsetPackExpr->get_type(); 2164 2165 Expression *ret = 0; 2166 if ( findGeneric( ty ) ) { 2167 // pull offset back from generated type information 2168 ret = new NameExpr( offsetofName( mangleType( ty ) ) ); 2169 } else { 2170 std::string offsetName = offsetofName( mangleType( ty ) ); 2171 if ( knownOffsets.find( offsetName ) != knownOffsets.end() ) { 2172 // use the already-generated offsets for this type 2173 ret = new NameExpr( offsetName ); 2174 } else { 2175 knownOffsets.insert( offsetName ); 2176 2177 std::list< Declaration* > &baseMembers = ty->get_baseStruct()->get_members(); 2178 Type *offsetType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ); 2179 2180 // build initializer list for offset array 2181 std::list< Initializer* > inits; 2182 for ( std::list< Declaration* >::const_iterator member = baseMembers.begin(); member != baseMembers.end(); ++member ) { 2183 DeclarationWithType *memberDecl; 2184 if ( DeclarationWithType *origMember = dynamic_cast< DeclarationWithType* >( *member ) ) { 2185 memberDecl = origMember->clone(); 2186 } else { 2187 memberDecl = new ObjectDecl( (*member)->get_name(), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, offsetType->clone(), 0 ); 2188 } 2189 inits.push_back( new SingleInit( new OffsetofExpr( ty->clone(), memberDecl ) ) ); 2190 } 2191 2192 // build the offset array and replace the pack with a reference to it 2193 ObjectDecl *offsetArray = makeVar( offsetName, new ArrayType( Type::Qualifiers(), offsetType, new ConstantExpr( Constant::from( baseMembers.size() ) ), false, false ), 2194 new ListInit( inits ) ); 2195 ret = new VariableExpr( offsetArray ); 2196 } 2197 } 2198 2199 delete offsetPackExpr; 2200 return ret; 2201 } 2202 2203 void PolyGenericCalculator::doBeginScope() { 2204 knownLayouts.beginScope(); 2205 knownOffsets.beginScope(); 2206 } 2207 2208 void PolyGenericCalculator::doEndScope() { 2209 knownLayouts.endScope(); 2210 knownOffsets.endScope(); 2211 } 2212 1488 2213 ////////////////////////////////////////// Pass3 //////////////////////////////////////////////////// 1489 2214 1490 2215 template< typename DeclClass > 1491 2216 DeclClass * Pass3::handleDecl( DeclClass *decl, Type *type ) { 1492 TyVarMap oldtyVars = scopeTyVars;2217 scopeTyVars.beginScope(); 1493 2218 makeTyVarMap( type, scopeTyVars ); 1494 2219 … … 1496 2221 ScrubTyVars::scrub( decl, scopeTyVars ); 1497 2222 1498 scopeTyVars = oldtyVars;2223 scopeTyVars.endScope(); 1499 2224 return ret; 1500 2225 } … … 1526 2251 1527 2252 Type * Pass3::mutate( PointerType *pointerType ) { 1528 TyVarMap oldtyVars = scopeTyVars;2253 scopeTyVars.beginScope(); 1529 2254 makeTyVarMap( pointerType, scopeTyVars ); 1530 2255 1531 2256 Type *ret = Mutator::mutate( pointerType ); 1532 2257 1533 scopeTyVars = oldtyVars;2258 scopeTyVars.endScope(); 1534 2259 return ret; 1535 2260 } 1536 2261 1537 2262 Type * Pass3::mutate( FunctionType *functionType ) { 1538 TyVarMap oldtyVars = scopeTyVars;2263 scopeTyVars.beginScope(); 1539 2264 makeTyVarMap( functionType, scopeTyVars ); 1540 2265 1541 2266 Type *ret = Mutator::mutate( functionType ); 1542 2267 1543 scopeTyVars = oldtyVars;2268 scopeTyVars.endScope(); 1544 2269 return ret; 1545 2270 } -
src/GenPoly/DeclMutator.cc
rc5833e8 r0f9e4403 24 24 } 25 25 26 DeclMutator::DeclMutator() : Mutator(), declsToAdd(1) {}26 DeclMutator::DeclMutator() : Mutator(), declsToAdd(1), declsToAddAfter(1) {} 27 27 28 28 DeclMutator::~DeclMutator() {} 29 29 30 30 void DeclMutator::mutateDeclarationList( std::list< Declaration* > &decls ) { 31 for ( std::list< Declaration* >::iterator decl = decls.begin(); decl != decls.end(); ++decl ) { 31 for ( std::list< Declaration* >::iterator decl = decls.begin(); ; ++decl ) { 32 // splice in new declarations after previous decl 33 decls.splice( decl, declsToAddAfter.back() ); 34 35 if ( decl == decls.end() ) break; 36 32 37 // run mutator on declaration 33 38 *decl = maybeMutate( *decl, *this ); … … 39 44 40 45 void DeclMutator::doBeginScope() { 41 // add new decl list for inside of scope46 // add new decl lists for inside of scope 42 47 declsToAdd.resize( declsToAdd.size()+1 ); 48 declsToAddAfter.resize( declsToAddAfter.size()+1 ); 43 49 } 44 50 … … 49 55 newBack->splice( newBack->end(), *back ); 50 56 declsToAdd.pop_back(); 57 58 back = declsToAddAfter.rbegin(); 59 newBack = back + 1; 60 newBack->splice( newBack->end(), *back ); 61 declsToAddAfter.pop_back(); 51 62 } 52 63 … … 61 72 stmt = maybeMutate( stmt, *this ); 62 73 // return if no declarations to add 63 if ( declsToAdd.back().empty() ) return stmt; 74 if ( declsToAdd.back().empty() && declsToAddAfter.back().empty() ) { 75 doEndScope(); 76 return stmt; 77 } 64 78 65 79 // otherwise add declarations to new compound statement … … 71 85 declsToAdd.back().clear(); 72 86 87 // add mutated statement 88 compound->get_kids().push_back( stmt ); 89 90 // add declarations after to new compound statement 91 for ( std::list< Declaration* >::iterator decl = declsToAddAfter.back().begin(); decl != declsToAddAfter.back().end(); ++decl ) { 92 DeclStmt *declStmt = new DeclStmt( noLabels, *decl ); 93 compound->get_kids().push_back( declStmt ); 94 } 95 declsToAddAfter.back().clear(); 96 73 97 doEndScope(); 74 75 // add mutated statement and return76 compound->get_kids().push_back( stmt );77 98 return compound; 78 99 } … … 80 101 void DeclMutator::mutateStatementList( std::list< Statement* > &stmts ) { 81 102 doBeginScope(); 103 82 104 83 for ( std::list< Statement* >::iterator stmt = stmts.begin(); stmt != stmts.end(); ++stmt ) { 105 for ( std::list< Statement* >::iterator stmt = stmts.begin(); ; ++stmt ) { 106 // add any new declarations after the previous statement 107 for ( std::list< Declaration* >::iterator decl = declsToAddAfter.back().begin(); decl != declsToAddAfter.back().end(); ++decl ) { 108 DeclStmt *declStmt = new DeclStmt( noLabels, *decl ); 109 stmts.insert( stmt, declStmt ); 110 } 111 declsToAddAfter.back().clear(); 112 113 if ( stmt == stmts.end() ) break; 114 84 115 // run mutator on statement 85 116 *stmt = maybeMutate( *stmt, *this ); … … 92 123 declsToAdd.back().clear(); 93 124 } 94 125 95 126 doEndScope(); 96 127 } … … 98 129 void DeclMutator::addDeclaration( Declaration *decl ) { 99 130 declsToAdd.back().push_back( decl ); 131 } 132 133 void DeclMutator::addDeclarationAfter( Declaration *decl ) { 134 declsToAddAfter.back().push_back( decl ); 100 135 } 101 136 -
src/GenPoly/DeclMutator.h
rc5833e8 r0f9e4403 55 55 /// Add a declaration to the list to be added before the current position 56 56 void addDeclaration( Declaration* decl ); 57 /// Add a declaration to the list to be added after the current position 58 void addDeclarationAfter( Declaration* decl ); 57 59 private: 58 60 /// A stack of declarations to add before the current declaration or statement 59 61 std::vector< std::list< Declaration* > > declsToAdd; 62 /// A stack of declarations to add after the current declaration or statement 63 std::vector< std::list< Declaration* > > declsToAddAfter; 60 64 }; 61 65 } // namespace -
src/GenPoly/FindFunction.cc
rc5833e8 r0f9e4403 55 55 TyVarMap::iterator var = tyVars.find( (*i)->get_name() ); 56 56 if ( var != tyVars.end() ) { 57 tyVars.erase( var );57 tyVars.erase( var->first ); 58 58 } // if 59 59 } // for … … 61 61 62 62 Type * FindFunction::mutate( FunctionType *functionType ) { 63 TyVarMap oldTyVars = tyVars;63 tyVars.beginScope(); 64 64 handleForall( functionType->get_forall() ); 65 65 mutateAll( functionType->get_returnVals(), *this ); … … 72 72 } // if 73 73 } // if 74 tyVars = oldTyVars;74 tyVars.endScope(); 75 75 return ret; 76 76 } 77 77 78 78 Type * FindFunction::mutate( PointerType *pointerType ) { 79 TyVarMap oldTyVars = tyVars;79 tyVars.beginScope(); 80 80 handleForall( pointerType->get_forall() ); 81 81 Type *ret = Mutator::mutate( pointerType ); 82 tyVars = oldTyVars;82 tyVars.endScope(); 83 83 return ret; 84 84 } -
src/GenPoly/GenPoly.cc
rc5833e8 r0f9e4403 16 16 #include "GenPoly.h" 17 17 18 #include "SymTab/Mangler.h"19 18 #include "SynTree/Expression.h" 20 19 #include "SynTree/Type.h" … … 38 37 ReferenceToType *isPolyRet( FunctionType *function ) { 39 38 if ( ! function->get_returnVals().empty() ) { 40 TyVarMap forallTypes ;39 TyVarMap forallTypes( (TypeDecl::Kind)-1 ); 41 40 makeTyVarMap( function, forallTypes ); 42 41 return (ReferenceToType*)isPolyType( function->get_returnVals().front()->get_type(), forallTypes ); … … 218 217 } 219 218 220 std::string sizeofName( Type *ty ) {221 return std::string( "_sizeof_" ) + SymTab::Mangler::mangleType( ty );222 }223 224 std::string alignofName( Type *ty ) {225 return std::string( "_alignof_" ) + SymTab::Mangler::mangleType( ty );226 }227 228 std::string offsetofName( Type* ty ) {229 return std::string( "_offsetof_" ) + SymTab::Mangler::mangleType( ty );230 }231 232 219 } // namespace GenPoly 233 220 -
src/GenPoly/GenPoly.h
rc5833e8 r0f9e4403 17 17 #define GENPOLY_H 18 18 19 #include <map>20 19 #include <string> 21 20 #include <iostream> 22 21 #include <utility> 22 23 #include "ErasableScopedMap.h" 24 25 #include "SymTab/Mangler.h" 23 26 24 27 #include "SynTree/Declaration.h" … … 27 30 28 31 namespace GenPoly { 29 typedef std::map< std::string, TypeDecl::Kind > TyVarMap;32 typedef ErasableScopedMap< std::string, TypeDecl::Kind > TyVarMap; 30 33 31 34 /// A function needs an adapter if it returns a polymorphic value or if any of its … … 69 72 void printTyVarMap( std::ostream &os, const TyVarMap &tyVarMap ); 70 73 71 /// Gets the name of the sizeof parameter for the type 72 std::string sizeofName( Type *ty ); 74 /// Gets the mangled name of this type; alias for SymTab::Mangler::mangleType(). 75 inline std::string mangleType( Type *ty ) { return SymTab::Mangler::mangleType( ty ); } 76 77 /// Gets the name of the sizeof parameter for the type, given its mangled name 78 inline std::string sizeofName( const std::string &name ) { return std::string( "_sizeof_" ) + name; } 73 79 74 /// Gets the name of the alignof parameter for the type 75 std::string alignofName( Type *ty );80 /// Gets the name of the alignof parameter for the type, given its mangled name 81 inline std::string alignofName( const std::string &name ) { return std::string( "_alignof_" ) + name; } 76 82 77 /// Gets the name of the offsetof parameter for the type 78 std::string offsetofName( Type *ty ); 83 /// Gets the name of the offsetof parameter for the type, given its mangled name 84 inline std::string offsetofName( const std::string &name ) { return std::string( "_offsetof_" ) + name; } 85 86 /// Gets the name of the layout function for a given aggregate type, given its declaration 87 inline std::string layoutofName( AggregateDecl *decl ) { return std::string( "_layoutof_" ) + decl->get_name(); } 88 79 89 } // namespace GenPoly 80 90 -
src/GenPoly/Lvalue.cc
rc5833e8 r0f9e4403 17 17 18 18 #include "Lvalue.h" 19 20 #include "GenPoly.h" 19 21 20 22 #include "SynTree/Declaration.h" … … 63 65 64 66 namespace { 65 bool isLvalueRet( FunctionType *function ) { 66 if ( ! function->get_returnVals().empty() ) { 67 return function->get_returnVals().front()->get_type()->get_isLvalue(); 68 } else { 69 return false; 70 } // if 67 Type* isLvalueRet( FunctionType *function ) { 68 if ( function->get_returnVals().empty() ) return 0; 69 Type *ty = function->get_returnVals().front()->get_type(); 70 return ty->get_isLvalue() ? ty : 0; 71 71 } 72 72 … … 107 107 assert( function ); 108 108 109 std::string typeName; 110 if ( isLvalueRet( function ) && ! isIntrinsicApp( appExpr ) ) { 109 Type *funType = isLvalueRet( function ); 110 if ( funType && ! isIntrinsicApp( appExpr ) ) { 111 Expression *expr = appExpr; 112 Type *appType = appExpr->get_results().front(); 113 if ( isPolyType( funType ) && ! isPolyType( appType ) ) { 114 // make sure cast for polymorphic type is inside dereference 115 expr = new CastExpr( appExpr, new PointerType( Type::Qualifiers(), appType->clone() ) ); 116 } 111 117 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) ); 112 deref->get_results().push_back( app Expr->get_results().front() );113 appExpr->get_results().front() = new PointerType( Type::Qualifiers(), deref->get_results().front()->clone());114 deref->get_args().push_back( appExpr );118 deref->get_results().push_back( appType->clone() ); 119 appExpr->get_results().front() = new PointerType( Type::Qualifiers(), appType ); 120 deref->get_args().push_back( expr ); 115 121 return deref; 116 122 } else { -
src/GenPoly/PolyMutator.cc
rc5833e8 r0f9e4403 27 27 } 28 28 29 PolyMutator::PolyMutator() : env( 0 ) { 30 } 29 PolyMutator::PolyMutator() : scopeTyVars( (TypeDecl::Kind)-1 ), env( 0 ) {} 31 30 32 31 void PolyMutator::mutateStatementList( std::list< Statement* > &statements ) { -
src/GenPoly/ScopedMap.h
rc5833e8 r0f9e4403 17 17 #define _SCOPEDMAP_H 18 18 19 #include <cassert> 19 20 #include <iterator> 20 21 #include <map> … … 50 51 typedef typename scope_list::size_type size_type; 51 52 53 /// Checks if this iterator points to a valid item 54 bool is_valid() const { 55 return it != (*scopes)[i].end(); 56 } 57 58 /// Increments on invalid 59 iterator& next_valid() { 60 if ( ! is_valid() ) { ++(*this); } 61 return *this; 62 } 63 64 /// Decrements on invalid 65 iterator& prev_valid() { 66 if ( ! is_valid() ) { --(*this); } 67 return *this; 68 } 69 52 70 iterator(scope_list const &_scopes, const wrapped_iterator &_it, size_type _i) 53 71 : scopes(&_scopes), it(_it), i(_i) {} … … 67 85 --i; 68 86 it = (*scopes)[i].begin(); 69 return *this;70 }71 ++it;72 return *this;87 } else { 88 ++it; 89 } 90 return next_valid(); 73 91 } 74 92 iterator& operator++ (int) { iterator tmp = *this; ++(*this); return tmp; } … … 81 99 } 82 100 --it; 83 return *this;101 return prev_valid(); 84 102 } 85 103 iterator& operator-- (int) { iterator tmp = *this; --(*this); return tmp; } … … 104 122 typedef typename scope_list::size_type size_type; 105 123 124 /// Checks if this iterator points to a valid item 125 bool is_valid() const { 126 return it != (*scopes)[i].end(); 127 } 128 129 /// Increments on invalid 130 const_iterator& next_valid() { 131 if ( ! is_valid() ) { ++(*this); } 132 return *this; 133 } 134 135 /// Decrements on invalid 136 const_iterator& prev_valid() { 137 if ( ! is_valid() ) { --(*this); } 138 return *this; 139 } 140 106 141 const_iterator(scope_list const &_scopes, const wrapped_const_iterator &_it, size_type _i) 107 142 : scopes(&_scopes), it(_it), i(_i) {} … … 126 161 --i; 127 162 it = (*scopes)[i].begin(); 128 return *this;129 }130 ++it;131 return *this;163 } else { 164 ++it; 165 } 166 return next_valid(); 132 167 } 133 168 const_iterator& operator++ (int) { const_iterator tmp = *this; ++(*this); return tmp; } … … 140 175 } 141 176 --it; 142 return *this;177 return prev_valid(); 143 178 } 144 179 const_iterator& operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; } … … 164 199 void endScope() { 165 200 scopes.pop_back(); 201 assert( ! scopes.empty() ); 166 202 } 167 203 … … 169 205 ScopedMap() { beginScope(); } 170 206 171 iterator begin() { return iterator(scopes, scopes.back().begin(), scopes.size()-1) ; }172 const_iterator begin() const { return const_iterator(scopes, scopes.back().begin(), scopes.size()-1) ; }173 const_iterator cbegin() const { return const_iterator(scopes, scopes.back().begin(), scopes.size()-1) ; }207 iterator begin() { return iterator(scopes, scopes.back().begin(), scopes.size()-1).next_valid(); } 208 const_iterator begin() const { return const_iterator(scopes, scopes.back().begin(), scopes.size()-1).next_valid(); } 209 const_iterator cbegin() const { return const_iterator(scopes, scopes.back().begin(), scopes.size()-1).next_valid(); } 174 210 iterator end() { return iterator(scopes, scopes[0].end(), 0); } 175 211 const_iterator end() const { return const_iterator(scopes, scopes[0].end(), 0); } … … 188 224 return end(); 189 225 } 190 const_iterator find( const Key &key ) const { return const_iterator( find( key ) ); } 226 const_iterator find( const Key &key ) const { 227 return const_iterator( const_cast< ScopedMap< Key, Value >* >(this)->find( key ) ); 228 } 191 229 192 230 /// Finds the given key in the outermost scope inside the given scope where it occurs … … 200 238 return end(); 201 239 } 202 const_iterator findNext( const_iterator &it, const Key &key ) const { return const_iterator( findNext( it, key ) ); } 240 const_iterator findNext( const_iterator &it, const Key &key ) const { 241 return const_iterator( const_cast< ScopedMap< Key, Value >* >(this)->findNext( it, key ) ); 242 } 203 243 204 244 /// Inserts the given key-value pair into the outermost scope … … 208 248 } 209 249 std::pair< iterator, bool > insert( const Key &key, const Value &value ) { return insert( std::make_pair( key, value ) ); } 210 250 251 Value& operator[] ( const Key &key ) { 252 iterator slot = find( key ); 253 if ( slot != end() ) return slot->second; 254 return insert( key, Value() ).first->second; 255 } 211 256 }; 212 257 } // namespace GenPoly -
src/GenPoly/ScrubTyVars.cc
rc5833e8 r0f9e4403 64 64 // sizeof( T ) => _sizeof_T parameter, which is the size of T 65 65 if ( Type *polyType = isPolyType( szeof->get_type() ) ) { 66 Expression *expr = new NameExpr( sizeofName( polyType) );66 Expression *expr = new NameExpr( sizeofName( mangleType( polyType ) ) ); 67 67 return expr; 68 68 } else { … … 74 74 // alignof( T ) => _alignof_T parameter, which is the alignment of T 75 75 if ( Type *polyType = isPolyType( algnof->get_type() ) ) { 76 Expression *expr = new NameExpr( alignofName( polyType) );76 Expression *expr = new NameExpr( alignofName( mangleType( polyType ) ) ); 77 77 return expr; 78 78 } else { -
src/GenPoly/module.mk
rc5833e8 r0f9e4403 23 23 GenPoly/CopyParams.cc \ 24 24 GenPoly/FindFunction.cc \ 25 GenPoly/InstantiateGeneric.cc \26 25 GenPoly/DeclMutator.cc -
src/InitTweak/InitModel.h
rc5833e8 r0f9e4403 75 75 void visit( UntypedOffsetofExpr * ) { throw 0; } 76 76 void visit( OffsetofExpr * ) { throw 0; } 77 void visit( OffsetPackExpr * ) { throw 0; } 77 78 void visit( AttrExpr * ) { throw 0; } 78 79 void visit( LogicalExpr * ) { throw 0; } -
src/Makefile.am
rc5833e8 r0f9e4403 11 11 ## Created On : Sun May 31 08:51:46 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Thu Jan 28 16:50:26 201614 ## Update Count : 5 513 ## Last Modified On : Fri Feb 26 17:19:16 2016 14 ## Update Count : 57 15 15 ############################################################################### 16 16 … … 46 46 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL 47 47 48 CXXFLAGS = -g # remove default -O2 to allow better debugging48 CXXFLAGS = -g -std=c++11 # remove default -O2 to allow better debugging 49 49 50 50 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}} -
src/Makefile.in
rc5833e8 r0f9e4403 122 122 GenPoly/driver_cfa_cpp-CopyParams.$(OBJEXT) \ 123 123 GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT) \ 124 GenPoly/driver_cfa_cpp-InstantiateGeneric.$(OBJEXT) \125 124 GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT) \ 126 125 InitTweak/driver_cfa_cpp-RemoveInit.$(OBJEXT) \ … … 154 153 ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT) \ 155 154 ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT) \ 156 SymTab/driver_cfa_cpp-IdTable.$(OBJEXT) \157 155 SymTab/driver_cfa_cpp-Indexer.$(OBJEXT) \ 158 156 SymTab/driver_cfa_cpp-Mangler.$(OBJEXT) \ … … 171 169 SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT) \ 172 170 SynTree/driver_cfa_cpp-AttrType.$(OBJEXT) \ 171 SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT) \ 173 172 SynTree/driver_cfa_cpp-Constant.$(OBJEXT) \ 174 173 SynTree/driver_cfa_cpp-Expression.$(OBJEXT) \ … … 191 190 SynTree/driver_cfa_cpp-Visitor.$(OBJEXT) \ 192 191 SynTree/driver_cfa_cpp-Mutator.$(OBJEXT) \ 193 SynTree/driver_cfa_cpp-CodeGenVisitor.$(OBJEXT) \194 192 SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) \ 195 193 Tuples/driver_cfa_cpp-Mutate.$(OBJEXT) \ … … 247 245 CXX = @CXX@ 248 246 CXXDEPMODE = @CXXDEPMODE@ 249 CXXFLAGS = -g # remove default -O2 to allow better debugging247 CXXFLAGS = -g -std=c++11 # remove default -O2 to allow better debugging 250 248 CYGPATH_W = @CYGPATH_W@ 251 249 DEFS = @DEFS@ … … 347 345 GenPoly/ScrubTyVars.cc GenPoly/Lvalue.cc GenPoly/Specialize.cc \ 348 346 GenPoly/CopyParams.cc GenPoly/FindFunction.cc \ 349 GenPoly/InstantiateGeneric.cc GenPoly/DeclMutator.cc \ 350 InitTweak/RemoveInit.cc Parser/parser.yy Parser/lex.ll \ 351 Parser/TypedefTable.cc Parser/ParseNode.cc \ 352 Parser/DeclarationNode.cc Parser/ExpressionNode.cc \ 353 Parser/StatementNode.cc Parser/InitializerNode.cc \ 354 Parser/TypeData.cc Parser/LinkageSpec.cc \ 355 Parser/parseutility.cc Parser/Parser.cc \ 347 GenPoly/DeclMutator.cc InitTweak/RemoveInit.cc \ 348 Parser/parser.yy Parser/lex.ll Parser/TypedefTable.cc \ 349 Parser/ParseNode.cc Parser/DeclarationNode.cc \ 350 Parser/ExpressionNode.cc Parser/StatementNode.cc \ 351 Parser/InitializerNode.cc Parser/TypeData.cc \ 352 Parser/LinkageSpec.cc Parser/parseutility.cc Parser/Parser.cc \ 356 353 ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \ 357 354 ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \ … … 362 359 ResolvExpr/RenameVars.cc ResolvExpr/FindOpenVars.cc \ 363 360 ResolvExpr/PolyCost.cc ResolvExpr/Occurs.cc \ 364 ResolvExpr/TypeEnvironment.cc SymTab/I dTable.cc \365 SymTab/ Indexer.cc SymTab/Mangler.cc SymTab/Validate.cc \366 SymTab/ FixFunction.cc SymTab/ImplementationType.cc \367 Sy mTab/TypeEquality.cc SynTree/Type.cc SynTree/VoidType.cc \368 SynTree/ BasicType.cc SynTree/PointerType.cc \369 SynTree/ ArrayType.cc SynTree/FunctionType.cc \370 SynTree/ ReferenceToType.cc SynTree/TupleType.cc \371 SynTree/ TypeofType.cc SynTree/AttrType.cc SynTree/Constant.cc \361 ResolvExpr/TypeEnvironment.cc SymTab/Indexer.cc \ 362 SymTab/Mangler.cc SymTab/Validate.cc SymTab/FixFunction.cc \ 363 SymTab/ImplementationType.cc SymTab/TypeEquality.cc \ 364 SynTree/Type.cc SynTree/VoidType.cc SynTree/BasicType.cc \ 365 SynTree/PointerType.cc SynTree/ArrayType.cc \ 366 SynTree/FunctionType.cc SynTree/ReferenceToType.cc \ 367 SynTree/TupleType.cc SynTree/TypeofType.cc SynTree/AttrType.cc \ 368 SynTree/VarArgsType.cc SynTree/Constant.cc \ 372 369 SynTree/Expression.cc SynTree/TupleExpr.cc \ 373 370 SynTree/CommaExpr.cc SynTree/TypeExpr.cc \ … … 379 376 SynTree/NamedTypeDecl.cc SynTree/TypeDecl.cc \ 380 377 SynTree/Initializer.cc SynTree/Visitor.cc SynTree/Mutator.cc \ 381 SynTree/ CodeGenVisitor.cc SynTree/TypeSubstitution.cc \382 Tuples/ Mutate.cc Tuples/AssignExpand.cc \383 Tuples/ FunctionFixer.cc Tuples/TupleAssignment.cc \384 Tuples/ FunctionChecker.cc Tuples/NameMatcher.cc378 SynTree/TypeSubstitution.cc Tuples/Mutate.cc \ 379 Tuples/AssignExpand.cc Tuples/FunctionFixer.cc \ 380 Tuples/TupleAssignment.cc Tuples/FunctionChecker.cc \ 381 Tuples/NameMatcher.cc 385 382 MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \ 386 383 ${cfa_cpplib_PROGRAMS}} … … 410 407 esac; \ 411 408 done; \ 412 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/Makefile'; \409 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ 413 410 $(am__cd) $(top_srcdir) && \ 414 $(AUTOMAKE) -- gnusrc/Makefile411 $(AUTOMAKE) --foreign src/Makefile 415 412 .PRECIOUS: Makefile 416 413 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status … … 555 552 GenPoly/$(DEPDIR)/$(am__dirstamp) 556 553 GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT): \ 557 GenPoly/$(am__dirstamp) GenPoly/$(DEPDIR)/$(am__dirstamp)558 GenPoly/driver_cfa_cpp-InstantiateGeneric.$(OBJEXT): \559 554 GenPoly/$(am__dirstamp) GenPoly/$(DEPDIR)/$(am__dirstamp) 560 555 GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT): GenPoly/$(am__dirstamp) \ … … 663 658 @$(MKDIR_P) SymTab/$(DEPDIR) 664 659 @: > SymTab/$(DEPDIR)/$(am__dirstamp) 665 SymTab/driver_cfa_cpp-IdTable.$(OBJEXT): SymTab/$(am__dirstamp) \666 SymTab/$(DEPDIR)/$(am__dirstamp)667 660 SymTab/driver_cfa_cpp-Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \ 668 661 SymTab/$(DEPDIR)/$(am__dirstamp) … … 702 695 SynTree/$(DEPDIR)/$(am__dirstamp) 703 696 SynTree/driver_cfa_cpp-AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \ 697 SynTree/$(DEPDIR)/$(am__dirstamp) 698 SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \ 704 699 SynTree/$(DEPDIR)/$(am__dirstamp) 705 700 SynTree/driver_cfa_cpp-Constant.$(OBJEXT): SynTree/$(am__dirstamp) \ … … 743 738 SynTree/driver_cfa_cpp-Mutator.$(OBJEXT): SynTree/$(am__dirstamp) \ 744 739 SynTree/$(DEPDIR)/$(am__dirstamp) 745 SynTree/driver_cfa_cpp-CodeGenVisitor.$(OBJEXT): \746 SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)747 740 SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT): \ 748 741 SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp) … … 795 788 -rm -f GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT) 796 789 -rm -f GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT) 797 -rm -f GenPoly/driver_cfa_cpp-InstantiateGeneric.$(OBJEXT)798 790 -rm -f GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT) 799 791 -rm -f GenPoly/driver_cfa_cpp-PolyMutator.$(OBJEXT) … … 831 823 -rm -f ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT) 832 824 -rm -f SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT) 833 -rm -f SymTab/driver_cfa_cpp-IdTable.$(OBJEXT)834 825 -rm -f SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT) 835 826 -rm -f SymTab/driver_cfa_cpp-Indexer.$(OBJEXT) … … 843 834 -rm -f SynTree/driver_cfa_cpp-AttrType.$(OBJEXT) 844 835 -rm -f SynTree/driver_cfa_cpp-BasicType.$(OBJEXT) 845 -rm -f SynTree/driver_cfa_cpp-CodeGenVisitor.$(OBJEXT)846 836 -rm -f SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT) 847 837 -rm -f SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT) … … 867 857 -rm -f SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) 868 858 -rm -f SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT) 859 -rm -f SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT) 869 860 -rm -f SynTree/driver_cfa_cpp-Visitor.$(OBJEXT) 870 861 -rm -f SynTree/driver_cfa_cpp-VoidType.$(OBJEXT) … … 902 893 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po@am__quote@ 903 894 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po@am__quote@ 904 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Po@am__quote@905 895 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po@am__quote@ 906 896 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Po@am__quote@ … … 938 928 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po@am__quote@ 939 929 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po@am__quote@ 940 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-IdTable.Po@am__quote@941 930 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po@am__quote@ 942 931 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po@am__quote@ … … 950 939 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po@am__quote@ 951 940 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po@am__quote@ 952 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CodeGenVisitor.Po@am__quote@953 941 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po@am__quote@ 954 942 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po@am__quote@ … … 974 962 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po@am__quote@ 975 963 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po@am__quote@ 964 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po@am__quote@ 976 965 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po@am__quote@ 977 966 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po@am__quote@ … … 1363 1352 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi` 1364 1353 1365 GenPoly/driver_cfa_cpp-InstantiateGeneric.o: GenPoly/InstantiateGeneric.cc1366 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-InstantiateGeneric.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Tpo -c -o GenPoly/driver_cfa_cpp-InstantiateGeneric.o `test -f 'GenPoly/InstantiateGeneric.cc' || echo '$(srcdir)/'`GenPoly/InstantiateGeneric.cc1367 @am__fastdepCXX_TRUE@ $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Po1368 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='GenPoly/InstantiateGeneric.cc' object='GenPoly/driver_cfa_cpp-InstantiateGeneric.o' libtool=no @AMDEPBACKSLASH@1369 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@1370 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-InstantiateGeneric.o `test -f 'GenPoly/InstantiateGeneric.cc' || echo '$(srcdir)/'`GenPoly/InstantiateGeneric.cc1371 1372 GenPoly/driver_cfa_cpp-InstantiateGeneric.obj: GenPoly/InstantiateGeneric.cc1373 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-InstantiateGeneric.obj -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Tpo -c -o GenPoly/driver_cfa_cpp-InstantiateGeneric.obj `if test -f 'GenPoly/InstantiateGeneric.cc'; then $(CYGPATH_W) 'GenPoly/InstantiateGeneric.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/InstantiateGeneric.cc'; fi`1374 @am__fastdepCXX_TRUE@ $(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-InstantiateGeneric.Po1375 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='GenPoly/InstantiateGeneric.cc' object='GenPoly/driver_cfa_cpp-InstantiateGeneric.obj' libtool=no @AMDEPBACKSLASH@1376 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@1377 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/driver_cfa_cpp-InstantiateGeneric.obj `if test -f 'GenPoly/InstantiateGeneric.cc'; then $(CYGPATH_W) 'GenPoly/InstantiateGeneric.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/InstantiateGeneric.cc'; fi`1378 1379 1354 GenPoly/driver_cfa_cpp-DeclMutator.o: GenPoly/DeclMutator.cc 1380 1355 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/driver_cfa_cpp-DeclMutator.o -MD -MP -MF GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo -c -o GenPoly/driver_cfa_cpp-DeclMutator.o `test -f 'GenPoly/DeclMutator.cc' || echo '$(srcdir)/'`GenPoly/DeclMutator.cc … … 1811 1786 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi` 1812 1787 1813 SymTab/driver_cfa_cpp-IdTable.o: SymTab/IdTable.cc1814 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-IdTable.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-IdTable.Tpo -c -o SymTab/driver_cfa_cpp-IdTable.o `test -f 'SymTab/IdTable.cc' || echo '$(srcdir)/'`SymTab/IdTable.cc1815 @am__fastdepCXX_TRUE@ $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-IdTable.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-IdTable.Po1816 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SymTab/IdTable.cc' object='SymTab/driver_cfa_cpp-IdTable.o' libtool=no @AMDEPBACKSLASH@1817 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@1818 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-IdTable.o `test -f 'SymTab/IdTable.cc' || echo '$(srcdir)/'`SymTab/IdTable.cc1819 1820 SymTab/driver_cfa_cpp-IdTable.obj: SymTab/IdTable.cc1821 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-IdTable.obj -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-IdTable.Tpo -c -o SymTab/driver_cfa_cpp-IdTable.obj `if test -f 'SymTab/IdTable.cc'; then $(CYGPATH_W) 'SymTab/IdTable.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/IdTable.cc'; fi`1822 @am__fastdepCXX_TRUE@ $(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-IdTable.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-IdTable.Po1823 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SymTab/IdTable.cc' object='SymTab/driver_cfa_cpp-IdTable.obj' libtool=no @AMDEPBACKSLASH@1824 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@1825 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/driver_cfa_cpp-IdTable.obj `if test -f 'SymTab/IdTable.cc'; then $(CYGPATH_W) 'SymTab/IdTable.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/IdTable.cc'; fi`1826 1827 1788 SymTab/driver_cfa_cpp-Indexer.o: SymTab/Indexer.cc 1828 1789 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/driver_cfa_cpp-Indexer.o -MD -MP -MF SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo -c -o SymTab/driver_cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc … … 2049 2010 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi` 2050 2011 2012 SynTree/driver_cfa_cpp-VarArgsType.o: SynTree/VarArgsType.cc 2013 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc 2014 @am__fastdepCXX_TRUE@ $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po 2015 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.o' libtool=no @AMDEPBACKSLASH@ 2016 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2017 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.o `test -f 'SynTree/VarArgsType.cc' || echo '$(srcdir)/'`SynTree/VarArgsType.cc 2018 2019 SynTree/driver_cfa_cpp-VarArgsType.obj: SynTree/VarArgsType.cc 2020 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-VarArgsType.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi` 2021 @am__fastdepCXX_TRUE@ $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po 2022 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.obj' libtool=no @AMDEPBACKSLASH@ 2023 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2024 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-VarArgsType.obj `if test -f 'SynTree/VarArgsType.cc'; then $(CYGPATH_W) 'SynTree/VarArgsType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VarArgsType.cc'; fi` 2025 2051 2026 SynTree/driver_cfa_cpp-Constant.o: SynTree/Constant.cc 2052 2027 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-Constant.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo -c -o SynTree/driver_cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc … … 2328 2303 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 2329 2304 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi` 2330 2331 SynTree/driver_cfa_cpp-CodeGenVisitor.o: SynTree/CodeGenVisitor.cc2332 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CodeGenVisitor.o -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CodeGenVisitor.Tpo -c -o SynTree/driver_cfa_cpp-CodeGenVisitor.o `test -f 'SynTree/CodeGenVisitor.cc' || echo '$(srcdir)/'`SynTree/CodeGenVisitor.cc2333 @am__fastdepCXX_TRUE@ $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CodeGenVisitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CodeGenVisitor.Po2334 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SynTree/CodeGenVisitor.cc' object='SynTree/driver_cfa_cpp-CodeGenVisitor.o' libtool=no @AMDEPBACKSLASH@2335 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@2336 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CodeGenVisitor.o `test -f 'SynTree/CodeGenVisitor.cc' || echo '$(srcdir)/'`SynTree/CodeGenVisitor.cc2337 2338 SynTree/driver_cfa_cpp-CodeGenVisitor.obj: SynTree/CodeGenVisitor.cc2339 @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/driver_cfa_cpp-CodeGenVisitor.obj -MD -MP -MF SynTree/$(DEPDIR)/driver_cfa_cpp-CodeGenVisitor.Tpo -c -o SynTree/driver_cfa_cpp-CodeGenVisitor.obj `if test -f 'SynTree/CodeGenVisitor.cc'; then $(CYGPATH_W) 'SynTree/CodeGenVisitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CodeGenVisitor.cc'; fi`2340 @am__fastdepCXX_TRUE@ $(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CodeGenVisitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CodeGenVisitor.Po2341 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SynTree/CodeGenVisitor.cc' object='SynTree/driver_cfa_cpp-CodeGenVisitor.obj' libtool=no @AMDEPBACKSLASH@2342 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@2343 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/driver_cfa_cpp-CodeGenVisitor.obj `if test -f 'SynTree/CodeGenVisitor.cc'; then $(CYGPATH_W) 'SynTree/CodeGenVisitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CodeGenVisitor.cc'; fi`2344 2305 2345 2306 SynTree/driver_cfa_cpp-TypeSubstitution.o: SynTree/TypeSubstitution.cc -
src/Parser/DeclarationNode.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 14 14:46:32 201513 // Update Count : 1 2612 // Last Modified On : Wed Apr 13 16:53:17 2016 13 // Update Count : 161 14 14 // 15 15 … … 34 34 const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "" }; 35 35 const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic" }; 36 const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary" };36 const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary", }; 37 37 const char *DeclarationNode::modifierName[] = { "signed", "unsigned", "short", "long" }; 38 38 const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" }; 39 39 const char *DeclarationNode::typeClassName[] = { "type", "dtype", "ftype" }; 40 const char *DeclarationNode::builtinTypeName[] = { "__builtin_va_list" }; 40 41 41 42 UniqueName DeclarationNode::anonymous( "__anonymous" ); 42 43 43 extern LinkageSpec::Type linkage; /* defined in cfa.y */44 extern LinkageSpec::Type linkage; // defined in parser.yy 44 45 45 46 DeclarationNode *DeclarationNode::clone() const { … … 54 55 newnode->linkage = linkage; 55 56 return newnode; 56 } 57 } // DeclarationNode::clone 57 58 58 59 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) { … … 116 117 newnode->type->function->newStyle = newStyle; 117 118 newnode->type->function->body = body; 119 typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID ); 118 120 119 121 if ( body ) { … … 128 130 129 131 return newnode; 130 } 132 } // DeclarationNode::newFunction 131 133 132 134 DeclarationNode *DeclarationNode::newQualifier( Qualifier q ) { … … 135 137 newnode->type->qualifiers.push_back( q ); 136 138 return newnode; 137 } 139 } // DeclarationNode::newQualifier 138 140 139 141 DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) { … … 141 143 newnode->storageClasses.push_back( sc ); 142 144 return newnode; 143 } 145 } // DeclarationNode::newStorageClass 144 146 145 147 DeclarationNode *DeclarationNode::newBasicType( BasicType bt ) { … … 148 150 newnode->type->basic->typeSpec.push_back( bt ); 149 151 return newnode; 150 } 152 } // DeclarationNode::newBasicType 153 154 DeclarationNode *DeclarationNode::newBuiltinType( BuiltinType bt ) { 155 DeclarationNode *newnode = new DeclarationNode; 156 newnode->type = new TypeData( TypeData::Builtin ); 157 newnode->type->builtin->type = bt; 158 return newnode; 159 } // DeclarationNode::newBuiltinType 151 160 152 161 DeclarationNode *DeclarationNode::newModifier( Modifier mod ) { … … 155 164 newnode->type->basic->modifiers.push_back( mod ); 156 165 return newnode; 157 } 166 } // DeclarationNode::newModifier 158 167 159 168 DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) { … … 162 171 newnode->type->forall = forall; 163 172 return newnode; 164 } 173 } // DeclarationNode::newForall 165 174 166 175 DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) { … … 171 180 newnode->type->symbolic->params = 0; 172 181 return newnode; 173 } 182 } // DeclarationNode::newFromTypedef 174 183 175 184 DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields ) { … … 179 188 newnode->type->aggregate->name = assign_strptr( name ); 180 189 if ( newnode->type->aggregate->name == "" ) { // anonymous aggregate ? 181 newnode->type->aggregate->name = DeclarationNode::anonymous.newName(); 182 } else { 183 // SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified 184 // by "struct" 185 typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD ); 186 DeclarationNode *typedf = new DeclarationNode; 187 typedf->name = newnode->type->aggregate->name; 188 newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() ); 190 newnode->type->aggregate->name = anonymous.newName(); 189 191 } // if 190 192 newnode->type->aggregate->actuals = actuals; 191 193 newnode->type->aggregate->fields = fields; 192 194 return newnode; 193 } 195 } // DeclarationNode::newAggregate 194 196 195 197 DeclarationNode *DeclarationNode::newEnum( std::string *name, DeclarationNode *constants ) { … … 200 202 if ( newnode->type->enumeration->name == "" ) { // anonymous enumeration ? 201 203 newnode->type->enumeration->name = DeclarationNode::anonymous.newName(); 202 } else {203 // SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be204 // qualified by "enum"205 typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD );206 DeclarationNode *typedf = new DeclarationNode;207 typedf->name = newnode->type->enumeration->name;208 newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );209 204 } // if 210 205 newnode->type->enumeration->constants = constants; 211 206 return newnode; 212 } 207 } // DeclarationNode::newEnum 213 208 214 209 DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) { 215 210 DeclarationNode *newnode = new DeclarationNode; 216 211 newnode->name = assign_strptr( name ); 217 // do something with the constant 218 return newnode; 219 } 212 newnode->enumeratorValue = constant; 213 typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID ); 214 return newnode; 215 } // DeclarationNode::newEnumConstant 220 216 221 217 DeclarationNode *DeclarationNode::newName( std::string *name ) { … … 223 219 newnode->name = assign_strptr( name ); 224 220 return newnode; 225 } 221 } // DeclarationNode::newName 226 222 227 223 DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) { … … 232 228 newnode->type->symbolic->actuals = params; 233 229 return newnode; 234 } 230 } // DeclarationNode::newFromTypeGen 235 231 236 232 DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) { … … 241 237 newnode->type->variable->name = newnode->name; 242 238 return newnode; 243 } 244 245 DeclarationNode *DeclarationNode::new Context( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {239 } // DeclarationNode::newTypeParam 240 241 DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) { 246 242 DeclarationNode *newnode = new DeclarationNode; 247 243 newnode->type = new TypeData( TypeData::Aggregate ); 248 newnode->type->aggregate->kind = Context;244 newnode->type->aggregate->kind = Trait; 249 245 newnode->type->aggregate->params = params; 250 246 newnode->type->aggregate->fields = asserts; 251 247 newnode->type->aggregate->name = assign_strptr( name ); 252 248 return newnode; 253 } 254 255 DeclarationNode *DeclarationNode::new ContextUse( std::string *name, ExpressionNode *params ) {249 } // DeclarationNode::newTrait 250 251 DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) { 256 252 DeclarationNode *newnode = new DeclarationNode; 257 253 newnode->type = new TypeData( TypeData::AggregateInst ); 258 254 newnode->type->aggInst->aggregate = new TypeData( TypeData::Aggregate ); 259 newnode->type->aggInst->aggregate->aggregate->kind = Context;255 newnode->type->aggInst->aggregate->aggregate->kind = Trait; 260 256 newnode->type->aggInst->aggregate->aggregate->name = assign_strptr( name ); 261 257 newnode->type->aggInst->params = params; 262 258 return newnode; 263 } 259 } // DeclarationNode::newTraitUse 264 260 265 261 DeclarationNode *DeclarationNode::newTypeDecl( std::string *name, DeclarationNode *typeParams ) { … … 271 267 newnode->type->symbolic->name = newnode->name; 272 268 return newnode; 273 } 269 } // DeclarationNode::newTypeDecl 274 270 275 271 DeclarationNode *DeclarationNode::newPointer( DeclarationNode *qualifiers ) { … … 277 273 newnode->type = new TypeData( TypeData::Pointer ); 278 274 return newnode->addQualifiers( qualifiers ); 279 } 275 } // DeclarationNode::newPointer 280 276 281 277 DeclarationNode *DeclarationNode::newArray( ExpressionNode *size, DeclarationNode *qualifiers, bool isStatic ) { … … 290 286 } // if 291 287 return newnode->addQualifiers( qualifiers ); 292 } 288 } // DeclarationNode::newArray 293 289 294 290 DeclarationNode *DeclarationNode::newVarArray( DeclarationNode *qualifiers ) { … … 794 790 errors.append( e ); 795 791 } // try 796 cur = dynamic_cast< 792 cur = dynamic_cast<DeclarationNode *>( cur->get_link() ); 797 793 } // while 798 794 if ( ! errors.isEmpty() ) { … … 881 877 ret = new UnionInstType( type->buildQualifiers(), type->aggregate->name ); 882 878 break; 883 case DeclarationNode:: Context:884 ret = new ContextInstType( type->buildQualifiers(), type->aggregate->name );879 case DeclarationNode::Trait: 880 ret = new TraitInstType( type->buildQualifiers(), type->aggregate->name ); 885 881 break; 886 882 default: -
src/Parser/ExpressionNode.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 1 13:32:30201613 // Update Count : 2 7112 // Last Modified On : Fri Apr 8 15:43:05 2016 13 // Update Count : 296 14 14 // 15 15 … … 22 22 23 23 #include "ParseNode.h" 24 #include "TypeData.h" 24 25 #include "SynTree/Constant.h" 25 26 #include "SynTree/Expression.h" 27 #include "SynTree/Declaration.h" 26 28 #include "Common/UnimplementedError.h" 27 29 #include "parseutility.h" … … 487 489 args.front() = new AddressExpr( args.front() ); 488 490 break; 489 default: 490 /* do nothing */ 491 default: // do nothing 491 492 ; 492 } 493 } // switch 493 494 494 495 switch ( op->get_type() ) { … … 873 874 } 874 875 876 877 CompoundLiteralNode::CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ) : type( type ), kids( kids ) {} 878 CompoundLiteralNode::CompoundLiteralNode( const CompoundLiteralNode &other ) : ExpressionNode( other ), type( other.type ), kids( other.kids ) {} 879 880 CompoundLiteralNode::~CompoundLiteralNode() { 881 delete kids; 882 delete type; 883 } 884 885 CompoundLiteralNode *CompoundLiteralNode::clone() const { 886 return new CompoundLiteralNode( *this ); 887 } 888 889 void CompoundLiteralNode::print( std::ostream &os, int indent ) const { 890 os << string( indent,' ' ) << "CompoundLiteralNode:" << endl; 891 892 os << string( indent + 2, ' ' ) << "type:" << endl; 893 if ( type != 0 ) 894 type->print( os, indent + 4 ); 895 896 os << string( indent + 2, ' ' ) << "initialization:" << endl; 897 if ( kids != 0 ) 898 kids->printList( os, indent + 4 ); 899 } 900 901 void CompoundLiteralNode::printOneLine( std::ostream &os, int indent ) const { 902 os << "( "; 903 if ( type ) type->print( os ); 904 os << ", "; 905 if ( kids ) kids->printOneLine( os ); 906 os << ") "; 907 } 908 909 Expression *CompoundLiteralNode::build() const { 910 Declaration * newDecl = type->build(); // compound literal type 911 if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type 912 return new CompoundLiteralExpr( newDeclWithType->get_type(), kids->build() ); 913 // these types do not have associated type information 914 } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl ) ) { 915 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), kids->build() ); 916 } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl ) ) { 917 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), kids->build() ); 918 } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl ) ) { 919 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), kids->build() ); 920 } else { 921 assert( false ); 922 } // if 923 } 924 925 875 926 ExpressionNode *flattenCommas( ExpressionNode *list ) { 876 927 if ( CompositeExprNode *composite = dynamic_cast< CompositeExprNode * >( list ) ) { -
src/Parser/ParseNode.h
rc5833e8 r0f9e4403 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // ParseNode.h -- 7 // ParseNode.h -- 8 8 // 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:28:16 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Mon Feb 1 13:32:32 201613 // Update Count : 18411 // Last Modified By : Rob Schluntz 12 // Last Modified On : Mon Apr 11 11:50:52 2016 13 // Update Count : 205 14 14 // 15 15 … … 108 108 109 109 ConstantNode( Type, std::string * ); 110 ConstantNode( const ConstantNode &other ) : value( *new std::string( other.value ) ) {};110 ConstantNode( const ConstantNode &other ) : type( other.type ), btype( other.btype), value( *new std::string( other.value ) ) {}; 111 111 ~ConstantNode() { delete &value; } 112 112 … … 177 177 enum Type { TupleC, Comma, TupleFieldSel, // n-adic 178 178 // triadic 179 Cond, NCond, 179 Cond, NCond, 180 180 // diadic 181 SizeOf, AlignOf, OffsetOf, Attr, CompLit, Plus, Minus, Mul, Div, Mod, Or, And, 182 BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq, 181 SizeOf, AlignOf, OffsetOf, Attr, CompLit, Plus, Minus, Mul, Div, Mod, Or, And, 182 BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq, 183 183 Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn, 184 184 Index, FieldSel, PFieldSel, Range, … … 309 309 ValofExprNode( const ValofExprNode &other ); 310 310 ~ValofExprNode(); 311 311 312 312 virtual ValofExprNode *clone() const { return new ValofExprNode( *this ); } 313 313 … … 329 329 enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary }; 330 330 enum Modifier { Signed, Unsigned, Short, Long }; 331 enum Aggregate { Struct, Union, Context };331 enum Aggregate { Struct, Union, Trait }; 332 332 enum TypeClass { Type, Dtype, Ftype }; 333 334 static const char *storageName[]; 333 enum BuiltinType { Valist }; 334 335 static const char *storageName[]; 335 336 static const char *qualifierName[]; 336 337 static const char *basicTypeName[]; … … 338 339 static const char *aggregateName[]; 339 340 static const char *typeClassName[]; 341 static const char *builtinTypeName[]; 340 342 341 343 static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false ); … … 352 354 static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params ); 353 355 static DeclarationNode *newTypeParam( TypeClass, std::string *); 354 static DeclarationNode *new Context( std::string *name, DeclarationNode *params, DeclarationNode *asserts );355 static DeclarationNode *new ContextUse( std::string *name, ExpressionNode *params );356 static DeclarationNode *newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ); 357 static DeclarationNode *newTraitUse( std::string *name, ExpressionNode *params ); 356 358 static DeclarationNode *newTypeDecl( std::string *name, DeclarationNode *typeParams ); 357 359 static DeclarationNode *newPointer( DeclarationNode *qualifiers ); … … 363 365 static DeclarationNode *newAttr( std::string *, ExpressionNode *expr ); 364 366 static DeclarationNode *newAttr( std::string *, DeclarationNode *type ); 367 static DeclarationNode *newBuiltinType( BuiltinType ); 365 368 366 369 DeclarationNode *addQualifiers( DeclarationNode *); … … 401 404 LinkageSpec::Type get_linkage() const { return linkage; } 402 405 DeclarationNode *extractAggregate() const; 406 ExpressionNode *get_enumeratorValue() const { return enumeratorValue; } 403 407 404 408 DeclarationNode(); … … 413 417 std::list< std::string > attributes; 414 418 ExpressionNode *bitfieldWidth; 419 ExpressionNode *enumeratorValue; 415 420 InitializerNode *initializer; 416 421 bool hasEllipsis; … … 422 427 class StatementNode : public ParseNode { 423 428 public: 424 enum Type { Exp, If, Switch, Case, Default, Choose, Fallthru, 429 enum Type { Exp, If, Switch, Case, Default, Choose, Fallthru, 425 430 While, Do, For, 426 431 Goto, Continue, Break, Return, Throw, … … 530 535 bool aggregate; 531 536 ExpressionNode *designator; // may be list 537 InitializerNode *kids; 538 }; 539 540 class CompoundLiteralNode : public ExpressionNode { 541 public: 542 CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ); 543 CompoundLiteralNode( const CompoundLiteralNode &type ); 544 ~CompoundLiteralNode(); 545 546 virtual CompoundLiteralNode *clone() const; 547 548 DeclarationNode *get_type() const { return type; } 549 CompoundLiteralNode *set_type( DeclarationNode *t ) { type = t; return this; } 550 551 InitializerNode *get_initializer() const { return kids; } 552 CompoundLiteralNode *set_initializer( InitializerNode *k ) { kids = k; return this; } 553 554 void print( std::ostream &, int indent = 0 ) const; 555 void printOneLine( std::ostream &, int indent = 0 ) const; 556 557 virtual Expression *build() const; 558 private: 559 DeclarationNode *type; 532 560 InitializerNode *kids; 533 561 }; -
src/Parser/Parser.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sat May 16 14:54:28 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 31 23:45:19 201513 // Update Count : 412 // Last Modified On : Mon Mar 21 18:04:47 2016 13 // Update Count : 5 14 14 // 15 15 16 16 #include "Parser.h" 17 #include "TypedefTable.h"18 17 #include "lex.h" 19 18 #include "parser.h" 19 #include "TypedefTable.h" 20 20 21 21 // global variables in cfa.y -
src/Parser/TypeData.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 14 14:57:23 201513 // Update Count : 3212 // Last Modified On : Wed Mar 2 17:26:45 2016 13 // Update Count : 49 14 14 // 15 15 … … 23 23 #include "SynTree/Expression.h" 24 24 #include "SynTree/Statement.h" 25 #include "SynTree/Initializer.h" 25 26 26 27 TypeData::TypeData( Kind k ) : kind( k ), base( 0 ), forall( 0 ) { … … 84 85 typeexpr->expr = 0; 85 86 break; 87 case Builtin: 88 builtin = new Builtin_t; 89 break; 86 90 case Attr: 87 91 attr = new Attr_t; … … 149 153 delete typeexpr->expr; 150 154 delete typeexpr; 155 break; 156 case Builtin: 157 delete builtin; 151 158 break; 152 159 case Attr: … … 221 228 newtype->typeexpr->expr = maybeClone( typeexpr->expr ); 222 229 break; 230 case Builtin: 231 newtype->builtin->type = builtin->type; 232 break; 223 233 case Attr: 224 234 newtype->attr->expr = maybeClone( attr->expr ); … … 396 406 attr->type->print( os, indent + 2 ); 397 407 } // if 408 break; 409 case Builtin: 410 os << "gcc builtin type"; 398 411 break; 399 412 default: … … 506 519 case Typeof: 507 520 return buildTypeof(); 521 case Builtin: 522 return new VarArgsType( buildQualifiers() ); 508 523 case Attr: 509 524 return buildAttr(); … … 805 820 buildForall( aggregate->params, at->get_parameters() ); 806 821 break; 807 case DeclarationNode:: Context:808 at = new ContextDecl( aggregate->name );822 case DeclarationNode::Trait: 823 at = new TraitDecl( aggregate->name ); 809 824 buildList( aggregate->params, at->get_parameters() ); 810 825 break; … … 845 860 ret = new UnionInstType( buildQualifiers(), aggInst->aggregate->aggregate->name ); 846 861 break; 847 case DeclarationNode:: Context:848 ret = new ContextInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );862 case DeclarationNode::Trait: 863 ret = new TraitInstType( buildQualifiers(), aggInst->aggregate->aggregate->name ); 849 864 break; 850 865 default: … … 883 898 EnumDecl *ret = new EnumDecl( enumeration->name ); 884 899 buildList( enumeration->constants, ret->get_members() ); 900 std::list< Declaration * >::iterator members = ret->get_members().begin(); 901 for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_link() ), ++members ) { 902 if ( cur->get_enumeratorValue() != NULL ) { 903 ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members); 904 member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ) ) ); 905 } // if 906 } // for 885 907 return ret; 886 908 } -
src/Parser/TypeData.h
rc5833e8 r0f9e4403 10 10 // Created On : Sat May 16 15:18:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jan 14 23:31:15201613 // Update Count : 1 712 // Last Modified On : Fri Feb 26 14:21:38 2016 13 // Update Count : 19 14 14 // 15 15 … … 24 24 struct TypeData { 25 25 enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst, 26 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Attr } kind;26 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr } kind; 27 27 28 28 TypeData( Kind k = Unknown ); … … 98 98 }; 99 99 100 struct Builtin_t { 101 DeclarationNode::BuiltinType type; 102 }; 103 100 104 struct Attr_t { 101 105 std::string name; … … 116 120 Typeof_t * typeexpr; 117 121 Attr_t * attr; 122 Builtin_t * builtin; 118 123 }; 119 124 -
src/Parser/TypedefTable.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sat May 16 15:20:13 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jun 26 07:30:16 201513 // Update Count : 1912 // Last Modified On : Wed Apr 13 16:57:30 2016 13 // Update Count : 24 14 14 // 15 15 16 16 #include <map> 17 17 #include <list> 18 #include <cassert> 18 19 #include "TypedefTable.h" 19 #include <cassert>20 20 using namespace std; 21 21 … … 29 29 TypedefTable::TypedefTable() : currentScope( 0 ) {} 30 30 31 bool TypedefTable::exists( const string &identifier ) { 32 return table.count( identifier ) > 0; 33 } 34 35 int TypedefTable::isKind( const string &identifier ) const { 36 tableType::const_iterator id_pos = table.find( identifier ); 37 // Name lookup defaults to identifier, and then the identifier's kind is set by the parser. 38 if ( id_pos == table.end() ) return IDENTIFIER; 39 return id_pos->second.begin()->kind; 40 } 41 31 42 void TypedefTable::changeKind( const string &identifier, kind_t kind ) { 32 43 tableType::iterator id_pos = table.find( identifier ); 33 if ( id_pos == table.end() ) { 34 return; 35 } else { 36 (*((*id_pos ).second.begin())).kind = kind; 37 return; 44 if ( id_pos == table.end() ) return; 45 id_pos->second.begin()->kind = kind; 46 } 47 48 // SKULLDUGGERY: Generate a typedef for the aggregate name so the aggregate does not have to be qualified by 49 // "struct". Only generate the typedef, if the name is not in use. The typedef is implicitly (silently) removed 50 // if the name is explicitly used. 51 void TypedefTable::makeTypedef( const string &name ) { 52 if ( ! typedefTable.exists( name ) ) { 53 typedefTable.addToEnclosingScope( name, TypedefTable::TD ); 38 54 } // if 39 55 } 40 56 41 bool TypedefTable::isKind( const string &identifier, kind_t kind ) const {42 tableType::const_iterator id_pos = table.find( identifier );43 if ( id_pos == table.end() ) {44 return true;45 } else {46 return (*((*id_pos ).second.begin())).kind == kind;47 } // if48 }49 50 bool TypedefTable::isIdentifier( const string &identifier ) const {51 return isKind( identifier, ID );52 }53 54 bool TypedefTable::isTypedef( const string &identifier ) const {55 return isKind( identifier, TD );56 }57 58 bool TypedefTable::isTypegen( const string &identifier ) const {59 return isKind( identifier, TG );60 }61 62 57 void TypedefTable::addToScope( const std::string &identifier, kind_t kind, int scope ) { 63 if ( current Context != "" && scope == contextScope ) {58 if ( currentTrait != "" && scope == contextScope ) { 64 59 DeferredEntry entry = { identifier, kind }; 65 contexts[current Context].push_back( entry );60 contexts[currentTrait].push_back( entry ); 66 61 } else { 67 62 debugPrint( "Adding " << identifier << " as kind " << kind << " scope " << scope << " from scope " << currentScope << endl ); … … 112 107 } 113 108 114 void TypedefTable::open Context( const std::string &contextName ) {109 void TypedefTable::openTrait( const std::string &contextName ) { 115 110 map< string, deferListType >::iterator i = contexts.find( contextName ); 116 111 if ( i != contexts.end() ) { … … 150 145 } 151 146 152 void TypedefTable::enter Context( const std::string &contextName ) {153 current Context = contextName;147 void TypedefTable::enterTrait( const std::string &contextName ) { 148 currentTrait = contextName; 154 149 contextScope = currentScope; 155 150 } 156 151 157 void TypedefTable::leave Context() {158 current Context = "";152 void TypedefTable::leaveTrait() { 153 currentTrait = ""; 159 154 } 160 155 -
src/Parser/TypedefTable.h
rc5833e8 r0f9e4403 10 10 // Created On : Sat May 16 15:24:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jun 25 22:52:15 201513 // Update Count : 1112 // Last Modified On : Wed Apr 13 16:59:56 2016 13 // Update Count : 27 14 14 // 15 15 … … 22 22 #include <stack> 23 23 24 #include "lex.h" 25 #include "parser.h" 26 24 27 class TypedefTable { 25 28 public: 26 enum kind_t { ID , TD, TG};29 enum kind_t { ID = IDENTIFIER, TD = TYPEDEFname, TG = TYPEGENname }; 27 30 private: 28 31 struct Entry { … … 40 43 41 44 int currentScope; 42 std::string current Context;45 std::string currentTrait; 43 46 int contextScope; 44 47 … … 49 52 std::stack< std::string > nextIdentifiers; 50 53 51 bool isKind( const std::string &identifier, kind_t kind ) const;52 54 void addToScope( const std::string &identifier, kind_t kind, int scope ); 53 55 public: 54 56 TypedefTable(); 55 57 56 bool isIdentifier( const std::string &identifier ) const;57 bool isTypedef( const std::string &identifier ) const;58 bool isTypegen( const std::string &identifier ) const;58 bool exists( const std::string &identifier ); 59 int isKind( const std::string &identifier ) const; 60 void changeKind( const std::string &identifier, kind_t kind ); 59 61 60 void changeKind( const std::string &identifier, kind_t kind);61 62 void makeTypedef( const std::string &name ); 63 62 64 // "addToCurrentScope" adds the identifier/type pair to the current scope. This does less than you think it does, 63 65 // since each declaration is within its own scope. Mostly useful for type parameters. … … 79 81 80 82 // dump the definitions from a pre-defined context into the current scope 81 void open Context( const std::string &contextName );83 void openTrait( const std::string &contextName ); 82 84 83 85 void enterScope(); 84 86 void leaveScope(); 85 void enter Context( const std::string &contextName );86 void leave Context();87 void enterTrait( const std::string &contextName ); 88 void leaveTrait(); 87 89 88 90 void print() const; -
src/Parser/lex.cc
rc5833e8 r0f9e4403 382 382 (yy_c_buf_p) = yy_cp; 383 383 384 #define YY_NUM_RULES 1 79385 #define YY_END_OF_BUFFER 18 0384 #define YY_NUM_RULES 180 385 #define YY_END_OF_BUFFER 181 386 386 /* This struct is not used in this scanner, 387 387 but its presence is necessary. */ … … 391 391 flex_int32_t yy_nxt; 392 392 }; 393 static yyconst flex_int16_t yy_accept[8 76] =393 static yyconst flex_int16_t yy_accept[888] = 394 394 { 0, 395 0, 0, 0, 0, 0, 0, 114, 114, 117, 117, 396 180, 178, 7, 9, 8, 137, 116, 101, 142, 145, 397 113, 124, 125, 140, 138, 128, 139, 131, 141, 106, 398 107, 108, 129, 130, 147, 149, 148, 150, 178, 101, 399 122, 178, 123, 143, 101, 103, 101, 101, 101, 101, 400 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 401 101, 126, 146, 127, 144, 7, 178, 4, 4, 179, 402 104, 179, 105, 114, 115, 121, 117, 118, 7, 9, 403 0, 8, 154, 173, 101, 0, 166, 136, 159, 167, 404 164, 151, 162, 152, 163, 161, 0, 111, 3, 0, 405 406 165, 111, 109, 0, 0, 109, 109, 0, 0, 109, 407 108, 108, 108, 0, 108, 134, 135, 133, 155, 157, 408 153, 158, 156, 0, 0, 0, 0, 0, 0, 0, 409 0, 0, 0, 0, 0, 0, 0, 0, 102, 172, 410 0, 116, 113, 101, 0, 0, 169, 0, 101, 101, 411 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 412 101, 101, 101, 101, 101, 39, 101, 101, 101, 101, 413 101, 101, 101, 101, 101, 101, 57, 101, 101, 101, 414 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 415 101, 101, 168, 160, 7, 0, 0, 0, 2, 0, 416 417 5, 104, 0, 0, 0, 114, 0, 120, 119, 119, 418 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 419 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 420 111, 111, 0, 111, 111, 111, 0, 6, 111, 109, 421 0, 0, 0, 111, 0, 109, 109, 109, 109, 0, 422 110, 0, 0, 108, 108, 108, 108, 0, 170, 171, 423 0, 176, 174, 0, 0, 0, 102, 0, 0, 0, 424 0, 0, 0, 0, 0, 101, 17, 101, 101, 101, 425 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 426 101, 101, 101, 101, 101, 14, 101, 101, 101, 101, 427 428 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 429 101, 101, 101, 101, 51, 101, 101, 101, 64, 101, 430 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 431 101, 88, 101, 101, 101, 101, 101, 101, 101, 0, 432 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 433 0, 0, 0, 119, 0, 0, 177, 0, 0, 0, 434 0, 0, 0, 0, 111, 0, 111, 0, 111, 0, 435 0, 111, 111, 109, 109, 0, 0, 110, 110, 0, 436 110, 0, 110, 108, 108, 0, 0, 0, 0, 0, 437 0, 0, 0, 0, 0, 175, 101, 101, 101, 101, 438 439 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 440 101, 101, 101, 101, 101, 101, 101, 101, 101, 21, 441 101, 24, 101, 27, 101, 101, 101, 101, 101, 101, 442 101, 42, 101, 44, 101, 101, 101, 101, 101, 101, 443 101, 56, 101, 67, 101, 101, 101, 101, 101, 101, 444 101, 101, 101, 101, 101, 89, 101, 101, 96, 101, 445 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 447 0, 111, 111, 0, 0, 0, 0, 0, 110, 110, 448 0, 112, 0, 110, 110, 0, 0, 0, 0, 0, 449 450 0, 0, 0, 0, 0, 0, 0, 0, 101, 101, 451 22, 101, 101, 101, 101, 101, 101, 101, 15, 101, 452 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 453 101, 101, 101, 23, 25, 101, 32, 101, 101, 101, 454 101, 101, 41, 101, 101, 101, 101, 49, 101, 101, 455 54, 101, 101, 101, 101, 101, 76, 101, 101, 101, 456 101, 101, 86, 101, 101, 94, 101, 101, 100, 0, 395 0, 0, 0, 0, 0, 0, 115, 115, 118, 118, 396 181, 179, 7, 9, 8, 138, 117, 102, 143, 146, 397 114, 125, 126, 141, 139, 129, 140, 132, 142, 107, 398 108, 109, 130, 131, 148, 150, 149, 151, 179, 102, 399 123, 179, 124, 144, 102, 104, 102, 102, 102, 102, 400 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 401 102, 102, 127, 147, 128, 145, 7, 179, 4, 4, 402 180, 105, 180, 106, 115, 116, 122, 118, 119, 7, 403 9, 0, 8, 155, 174, 102, 0, 167, 137, 160, 404 168, 165, 152, 163, 153, 164, 162, 0, 112, 3, 405 406 0, 166, 112, 110, 0, 0, 110, 110, 0, 0, 407 110, 109, 109, 109, 0, 109, 135, 136, 134, 156, 408 158, 154, 159, 157, 0, 0, 0, 0, 0, 0, 409 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 410 173, 0, 117, 114, 102, 0, 0, 170, 0, 102, 411 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 412 102, 102, 102, 102, 102, 102, 38, 102, 102, 102, 413 102, 102, 102, 102, 102, 102, 102, 56, 102, 102, 414 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 415 102, 102, 102, 102, 169, 161, 7, 0, 0, 0, 416 417 2, 0, 5, 105, 0, 0, 0, 115, 0, 121, 418 120, 120, 0, 0, 0, 118, 0, 0, 0, 0, 457 419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 459 0, 110, 112, 112, 112, 112, 112, 110, 0, 0, 460 461 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 462 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 463 101, 101, 101, 101, 101, 101, 59, 101, 101, 101, 464 101, 101, 101, 101, 101, 28, 101, 101, 101, 101, 465 40, 43, 46, 101, 101, 52, 101, 61, 68, 101, 466 101, 75, 77, 80, 81, 83, 84, 101, 101, 91, 467 101, 101, 0, 1, 0, 0, 0, 0, 0, 0, 468 104, 0, 0, 0, 119, 0, 0, 0, 0, 112, 469 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 470 0, 0, 101, 101, 18, 101, 101, 101, 101, 101, 471 472 101, 101, 16, 101, 101, 101, 33, 101, 101, 101, 473 101, 101, 101, 101, 101, 101, 101, 101, 35, 101, 474 37, 38, 101, 48, 53, 101, 101, 101, 90, 101, 475 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 476 0, 0, 0, 0, 10, 11, 29, 55, 101, 101, 477 101, 101, 101, 101, 101, 101, 101, 101, 101, 60, 478 62, 65, 101, 101, 78, 92, 101, 101, 36, 47, 479 71, 72, 101, 95, 97, 0, 0, 0, 0, 0, 480 0, 0, 0, 0, 0, 0, 0, 101, 69, 101, 481 101, 12, 101, 101, 30, 34, 101, 101, 101, 66, 482 483 101, 101, 101, 101, 101, 101, 0, 0, 0, 0, 484 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 485 101, 101, 101, 101, 101, 101, 101, 50, 63, 73, 486 79, 93, 98, 101, 101, 0, 0, 0, 0, 0, 487 0, 0, 0, 101, 101, 13, 19, 101, 31, 101, 488 101, 101, 26, 87, 0, 0, 101, 101, 101, 101, 489 101, 74, 99, 101, 85, 20, 101, 45, 82, 101, 490 101, 101, 101, 70, 0 420 0, 133, 112, 112, 0, 112, 112, 0, 0, 6, 421 0, 110, 0, 0, 0, 112, 0, 110, 110, 110, 422 110, 0, 111, 0, 0, 109, 109, 109, 109, 0, 423 171, 172, 0, 177, 175, 0, 0, 0, 103, 0, 424 0, 0, 0, 0, 0, 0, 0, 102, 17, 102, 425 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 426 102, 102, 102, 102, 102, 102, 102, 14, 102, 102, 427 428 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 429 102, 102, 102, 102, 102, 102, 50, 102, 102, 102, 430 63, 102, 102, 102, 102, 102, 102, 102, 102, 102, 431 102, 102, 102, 102, 102, 89, 102, 102, 102, 102, 432 102, 102, 102, 0, 0, 0, 0, 0, 0, 0, 433 0, 120, 0, 0, 0, 0, 0, 120, 0, 0, 434 178, 0, 0, 0, 0, 0, 0, 0, 112, 0, 435 112, 0, 112, 0, 0, 112, 0, 110, 110, 0, 436 0, 111, 111, 0, 111, 0, 111, 109, 109, 0, 437 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 438 439 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 440 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 441 102, 102, 102, 21, 102, 24, 102, 27, 102, 102, 442 102, 102, 102, 102, 102, 41, 102, 43, 102, 102, 443 102, 102, 102, 102, 102, 55, 102, 66, 102, 102, 444 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 445 102, 102, 102, 102, 97, 102, 102, 0, 0, 0, 446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447 0, 120, 0, 0, 0, 0, 0, 112, 0, 0, 448 0, 0, 0, 0, 111, 111, 0, 113, 0, 111, 449 450 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 451 0, 0, 0, 0, 102, 102, 22, 102, 102, 102, 452 102, 102, 102, 102, 15, 102, 102, 102, 102, 102, 453 102, 102, 102, 102, 102, 102, 102, 102, 102, 23, 454 25, 102, 32, 102, 102, 102, 102, 40, 102, 102, 455 102, 102, 48, 102, 102, 53, 102, 102, 70, 102, 456 102, 102, 76, 102, 102, 102, 102, 102, 86, 88, 457 102, 102, 94, 102, 102, 101, 0, 0, 0, 0, 458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 459 0, 0, 0, 0, 0, 113, 0, 0, 111, 113, 460 461 113, 113, 113, 0, 111, 0, 0, 0, 0, 0, 462 0, 0, 0, 0, 0, 102, 0, 102, 102, 102, 463 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 464 102, 102, 102, 58, 102, 102, 102, 102, 102, 102, 465 102, 102, 28, 102, 102, 102, 39, 42, 45, 102, 466 102, 51, 102, 60, 67, 102, 102, 75, 77, 80, 467 81, 83, 84, 102, 102, 91, 102, 102, 0, 1, 468 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 469 120, 0, 0, 0, 0, 113, 0, 113, 113, 0, 470 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 471 472 18, 102, 102, 102, 102, 102, 102, 102, 16, 102, 473 102, 102, 33, 102, 102, 102, 102, 102, 102, 102, 474 102, 102, 102, 102, 102, 36, 37, 102, 47, 52, 475 102, 102, 102, 90, 102, 102, 0, 0, 0, 0, 476 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 477 11, 29, 54, 102, 102, 102, 102, 102, 102, 102, 478 102, 102, 102, 102, 59, 61, 64, 102, 102, 78, 479 92, 102, 102, 35, 46, 71, 72, 102, 95, 98, 480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 481 0, 0, 102, 68, 102, 102, 12, 102, 102, 30, 482 483 34, 102, 102, 102, 65, 102, 102, 102, 102, 102, 484 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 485 0, 0, 0, 0, 57, 102, 102, 102, 102, 102, 486 102, 102, 49, 62, 73, 79, 93, 99, 102, 102, 487 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 488 13, 19, 102, 102, 31, 102, 102, 102, 26, 87, 489 0, 0, 102, 102, 102, 102, 102, 102, 74, 100, 490 102, 85, 20, 102, 102, 44, 82, 102, 102, 102, 491 102, 102, 102, 102, 96, 69, 0 491 492 } ; 492 493 … … 499 500 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 500 501 26, 26, 26, 26, 26, 27, 28, 29, 30, 31, 501 32, 33, 34, 35, 36, 37, 38, 39, 40, 39,502 4 1, 11, 42, 11, 11, 43, 11, 44, 11, 45,503 11, 4 6, 47, 48, 49, 11, 11, 50, 11, 11,504 5 1, 52, 53, 54, 55, 56, 57, 58, 59, 60,505 506 6 1, 62, 63, 64, 65, 11, 66, 67, 68, 69,507 7 0, 71, 11, 72, 73, 74, 75, 76, 77, 78,508 79, 80, 81, 82, 83, 84, 1, 1, 1, 1,502 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 503 42, 11, 43, 11, 11, 44, 11, 45, 11, 46, 504 11, 47, 48, 49, 50, 11, 11, 51, 11, 11, 505 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 506 507 62, 63, 64, 65, 66, 11, 67, 68, 69, 70, 508 71, 72, 11, 73, 74, 75, 76, 77, 78, 79, 509 80, 81, 82, 83, 84, 85, 1, 1, 1, 1, 509 510 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 510 511 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 523 524 } ; 524 525 525 static yyconst flex_int32_t yy_meta[8 5] =526 static yyconst flex_int32_t yy_meta[86] = 526 527 { 0, 527 528 1, 1, 2, 1, 1, 1, 1, 1, 3, 1, … … 529 530 6, 1, 7, 7, 7, 7, 7, 7, 1, 1, 530 531 1, 8, 1, 1, 1, 9, 9, 9, 9, 9, 531 4, 4, 10, 4, 11, 4, 4, 4, 10, 4,532 1, 12, 1, 1, 13, 1, 9, 9, 9, 9,533 9, 9, 4, 4, 4, 4, 10, 4, 4, 4,534 11, 4, 4, 4, 10, 4, 4, 4, 4, 4,535 1, 1, 1, 1532 9, 4, 4, 10, 4, 11, 4, 4, 4, 10, 533 4, 1, 12, 1, 1, 13, 1, 9, 9, 9, 534 9, 9, 9, 4, 4, 4, 4, 10, 4, 4, 535 4, 11, 4, 4, 4, 10, 4, 4, 4, 4, 536 4, 1, 1, 1, 1 536 537 } ; 537 538 538 static yyconst flex_int16_t yy_base[10 50] =539 static yyconst flex_int16_t yy_base[1062] = 539 540 { 0, 540 0, 83, 2238, 2237, 93, 0, 175, 176, 177, 178, 541 2252, 2782, 189, 2782, 195, 54, 2782, 2197, 59, 171, 542 2782, 2782, 2782, 55, 186, 2782, 189, 187, 202, 214, 543 272, 0, 2213, 2782, 214, 2213, 150, 340, 153, 222, 544 2782, 157, 2782, 215, 224, 2782, 207, 181, 221, 249, 545 235, 289, 155, 255, 218, 206, 266, 256, 323, 259, 546 192, 2782, 223, 2782, 2210, 377, 342, 2782, 2220, 2782, 547 2187, 234, 2782, 0, 2782, 421, 0, 2782, 393, 2782, 548 399, 405, 2782, 492, 2184, 241, 2782, 2782, 2782, 2782, 549 2782, 2201, 2782, 2200, 2782, 2782, 2211, 552, 2782, 2226, 550 551 2782, 413, 393, 437, 493, 377, 318, 195, 430, 382, 552 0, 384, 321, 196, 427, 2782, 2782, 2782, 2194, 2782, 553 2782, 2782, 2193, 2192, 252, 302, 2206, 342, 435, 422, 554 381, 455, 400, 494, 2185, 440, 2133, 469, 2163, 2782, 555 276, 2782, 2782, 520, 2159, 2157, 2782, 2128, 414, 463, 556 470, 325, 254, 479, 432, 274, 480, 423, 483, 498, 557 492, 503, 499, 509, 341, 455, 484, 377, 510, 512, 558 517, 518, 529, 530, 531, 537, 2154, 541, 536, 544, 559 557, 546, 566, 569, 538, 552, 548, 554, 588, 571, 560 570, 580, 2782, 2782, 645, 651, 2202, 657, 2782, 663, 561 562 2782, 2152, 593, 2147, 2144, 0, 631, 2782, 2782, 669, 563 2141, 2140, 2139, 0, 2160, 629, 635, 639, 678, 677, 564 666, 670, 671, 674, 2138, 681, 682, 2115, 2114, 2782, 565 0, 597, 702, 678, 676, 2111, 2160, 2782, 693, 0, 566 710, 723, 743, 762, 788, 707, 2782, 2119, 2094, 0, 567 776, 2138, 768, 723, 2782, 2113, 2086, 809, 2782, 2782, 568 2118, 2782, 2782, 705, 710, 2098, 2097, 724, 2091, 2088, 569 2087, 0, 2086, 0, 2056, 709, 682, 707, 712, 710, 570 724, 647, 750, 671, 786, 751, 748, 731, 778, 787, 571 789, 788, 792, 790, 758, 2084, 796, 806, 800, 813, 572 573 798, 810, 802, 816, 822, 819, 815, 826, 830, 829, 574 831, 832, 833, 837, 839, 841, 846, 843, 2081, 848, 575 850, 849, 851, 852, 854, 853, 857, 855, 858, 863, 576 868, 2080, 867, 912, 871, 878, 872, 879, 882, 937, 577 939, 2076, 2074, 2071, 0, 2070, 0, 927, 931, 2069, 578 0, 2067, 0, 2064, 0, 2084, 2782, 913, 926, 2064, 579 2060, 0, 2057, 0, 2782, 942, 960, 953, 2782, 966, 580 981, 1005, 2053, 2782, 2782, 955, 968, 995, 968, 1028, 581 892, 1014, 970, 2782, 2782, 2049, 2047, 2045, 0, 2042, 582 0, 2040, 0, 2038, 0, 2782, 909, 944, 982, 943, 583 584 1006, 911, 1012, 923, 1013, 1019, 1009, 1016, 1023, 1024, 585 1020, 972, 1030, 1028, 989, 1026, 1034, 1027, 1039, 2038, 586 1044, 2035, 1048, 2034, 1049, 1051, 1052, 1053, 1056, 1057, 587 1055, 2033, 1059, 2031, 946, 1063, 1066, 1067, 1068, 1071, 588 1069, 2028, 1075, 2025, 1077, 1080, 1079, 1082, 1084, 1086, 589 1087, 1090, 1097, 1107, 1088, 1108, 1093, 1098, 2024, 1096, 590 1111, 1164, 2020, 0, 2018, 0, 2015, 0, 2012, 0, 591 1151, 2011, 0, 2010, 0, 2008, 2005, 2002, 0, 2001, 592 0, 1156, 2000, 1162, 1148, 1182, 1149, 1126, 1147, 2782, 593 1201, 1215, 1241, 2010, 1983, 1992, 1991, 0, 1990, 0, 594 595 1988, 0, 1985, 0, 1982, 0, 1981, 0, 1161, 1149, 596 1983, 1179, 1140, 1180, 1117, 1182, 1192, 1199, 1181, 1163, 597 1196, 1200, 1201, 1220, 1198, 1221, 1224, 604, 1226, 1227, 598 1231, 1233, 1234, 1981, 1244, 1236, 1978, 1240, 1241, 1246, 599 1247, 1243, 1975, 1250, 1251, 1253, 1254, 1974, 1255, 1267, 600 1973, 1264, 1271, 1256, 1263, 1257, 1971, 1275, 1277, 1279, 601 1260, 1281, 1290, 1285, 1288, 1968, 1289, 1291, 1967, 2015, 602 1961, 0, 1958, 0, 1957, 0, 1956, 0, 1954, 0, 603 1921, 0, 1919, 0, 1918, 0, 1336, 1342, 1369, 1353, 604 1915, 2782, 1359, 1307, 1359, 1309, 1912, 2782, 1911, 0, 605 606 1910, 0, 1908, 0, 1905, 0, 0, 0, 1905, 0, 607 1347, 1295, 1292, 1323, 1337, 1338, 1296, 1349, 1351, 1355, 608 1353, 1348, 1363, 1364, 1371, 1373, 1380, 1375, 1403, 1381, 609 1385, 1389, 1094, 1387, 1390, 1904, 1391, 1393, 1397, 1401, 610 1903, 1901, 1898, 1394, 1400, 1897, 1404, 1896, 1894, 1402, 611 1408, 1891, 1890, 1889, 1887, 1884, 1880, 1417, 1412, 1876, 612 1420, 1418, 1921, 2782, 1853, 0, 1852, 0, 0, 0, 613 1854, 0, 0, 0, 2782, 0, 0, 0, 0, 1463, 614 1849, 2782, 2782, 1469, 1846, 0, 1845, 0, 0, 0, 615 0, 1844, 1407, 1446, 1845, 1406, 1423, 1300, 1431, 1449, 616 617 1455, 1447, 1842, 1457, 1448, 1459, 1464, 1460, 1490, 1474, 618 1470, 1494, 1480, 1475, 1484, 1485, 1486, 1482, 1841, 1487, 619 1840, 1838, 1489, 1835, 1834, 1491, 1493, 1497, 1833, 1498, 620 1500, 0, 0, 0, 1828, 1825, 1824, 1548, 0, 1823, 621 1821, 1818, 1817, 1816, 1817, 1814, 1813, 1812, 1505, 1510, 622 1502, 1501, 1504, 1508, 1513, 1517, 1526, 1528, 1559, 1810, 623 1533, 1807, 1534, 1535, 1544, 1545, 1538, 1539, 1806, 1805, 624 1803, 1800, 1540, 1799, 1798, 1793, 1786, 1784, 1783, 1780, 625 1779, 1778, 1776, 1759, 1750, 1749, 1746, 1546, 1742, 1549, 626 1550, 1552, 1554, 1557, 1558, 1739, 1556, 1589, 1566, 1732, 627 628 1565, 1572, 1577, 1579, 1567, 1578, 1727, 1726, 1705, 1704, 629 1703, 1696, 1694, 1693, 1650, 1649, 1647, 1645, 1644, 1646, 630 1571, 1584, 1582, 1581, 1586, 1593, 1595, 1645, 1644, 1597, 631 1642, 1641, 1598, 1599, 1602, 1636, 1635, 1633, 1422, 1421, 632 1205, 1201, 946, 1605, 1610, 910, 1603, 1607, 768, 1613, 633 1618, 1619, 723, 605, 503, 370, 1609, 1620, 1623, 1624, 634 1625, 338, 337, 1627, 290, 251, 1630, 200, 196, 1631, 635 1632, 1637, 1633, 136, 2782, 1707, 1720, 1733, 1743, 1753, 636 1766, 1776, 1789, 1802, 1815, 1823, 1833, 1840, 1847, 1854, 637 1861, 1868, 1875, 1882, 1889, 1896, 1909, 1916, 1920, 1928, 638 639 1931, 1938, 1945, 1952, 1955, 1962, 1968, 1981, 1994, 2001, 640 2008, 2015, 2022, 2025, 2032, 2035, 2042, 2045, 2052, 2055, 641 2062, 2065, 2072, 2075, 2082, 2085, 2092, 2100, 2107, 2114, 642 2121, 2128, 2131, 2138, 2141, 2148, 2151, 2158, 2164, 2177, 643 2184, 2191, 2194, 2201, 2204, 2211, 2214, 2221, 2224, 2231, 644 2234, 2241, 2244, 2251, 2258, 2261, 2268, 2271, 2278, 2285, 645 2292, 2295, 2302, 2305, 2312, 2315, 2322, 2325, 2332, 2335, 646 2342, 2348, 2361, 2368, 2375, 2378, 2385, 2388, 2395, 2398, 647 2405, 2408, 2415, 2418, 2425, 2428, 2435, 2438, 2445, 2448, 648 2455, 2462, 2465, 2472, 2475, 2482, 2485, 2492, 2495, 2498, 649 650 2504, 2511, 2520, 2527, 2534, 2537, 2544, 2547, 2550, 2556, 651 2563, 2566, 2569, 2572, 2575, 2578, 2581, 2584, 2591, 2594, 652 2601, 2604, 2607, 2610, 2613, 2623, 2630, 2633, 2636, 2639, 653 2646, 2653, 2660, 2663, 2670, 2677, 2684, 2691, 2698, 2705, 654 2712, 2719, 2726, 2733, 2740, 2747, 2754, 2761, 2768 541 0, 84, 2272, 2269, 94, 0, 177, 178, 179, 180, 542 2285, 2822, 191, 2822, 197, 55, 2822, 2231, 60, 173, 543 2822, 2822, 2822, 56, 188, 2822, 191, 189, 204, 216, 544 275, 0, 2249, 2822, 216, 2247, 152, 344, 155, 220, 545 2822, 159, 2822, 217, 226, 2822, 185, 154, 212, 251, 546 237, 270, 235, 257, 241, 205, 193, 305, 314, 333, 547 238, 228, 2822, 225, 2822, 2242, 402, 390, 2822, 2253, 548 2822, 2221, 235, 2822, 0, 2822, 426, 0, 2822, 417, 549 2822, 439, 451, 2822, 498, 2219, 264, 2822, 2822, 2822, 550 2822, 2822, 2235, 2822, 2232, 2822, 2822, 2244, 559, 2822, 551 552 2261, 2822, 438, 444, 511, 534, 289, 253, 197, 380, 553 305, 0, 319, 280, 198, 322, 2822, 2822, 2822, 2230, 554 2822, 2822, 2822, 2227, 2224, 218, 255, 2239, 298, 350, 555 368, 312, 440, 398, 405, 2220, 441, 2168, 446, 2196, 556 2822, 335, 2822, 2822, 468, 2190, 2189, 2822, 2162, 439, 557 282, 433, 372, 281, 437, 434, 428, 570, 444, 466, 558 464, 469, 475, 321, 492, 438, 471, 445, 474, 512, 559 489, 503, 496, 521, 276, 515, 516, 2189, 526, 510, 560 519, 525, 543, 522, 560, 553, 523, 561, 551, 544, 561 599, 582, 593, 584, 2822, 2822, 660, 651, 2236, 666, 562 563 2822, 678, 2822, 2183, 607, 2179, 2178, 0, 693, 2822, 564 2822, 684, 2176, 2156, 2154, 0, 2177, 578, 608, 617, 565 654, 679, 650, 683, 684, 687, 2172, 690, 691, 2147, 566 2146, 2822, 0, 683, 710, 686, 700, 2145, 2196, 2822, 567 714, 0, 427, 746, 764, 786, 808, 621, 2822, 2152, 568 2125, 0, 794, 2171, 795, 709, 2822, 2147, 2121, 832, 569 2822, 2822, 2152, 2822, 2822, 711, 714, 2129, 2129, 717, 570 2125, 2123, 2120, 0, 2117, 0, 2088, 694, 679, 712, 571 709, 711, 698, 566, 726, 743, 771, 741, 790, 784, 572 800, 795, 742, 744, 814, 816, 818, 2118, 819, 745, 573 574 820, 821, 822, 823, 824, 746, 825, 748, 659, 831, 575 826, 833, 838, 839, 848, 850, 851, 844, 834, 857, 576 2116, 858, 859, 860, 862, 861, 864, 865, 867, 868, 577 866, 871, 876, 872, 878, 2113, 880, 689, 881, 882, 578 892, 896, 893, 953, 954, 2109, 2108, 2106, 0, 2103, 579 0, 941, 945, 2102, 0, 2101, 0, 2099, 0, 2118, 580 2822, 940, 941, 2094, 2088, 0, 2086, 0, 2822, 953, 581 975, 964, 2822, 981, 997, 1021, 2084, 2822, 2822, 939, 582 940, 1006, 982, 1041, 310, 1039, 1004, 2822, 2822, 2081, 583 2079, 2077, 0, 2074, 0, 2071, 0, 2070, 0, 2822, 584 585 886, 941, 960, 962, 977, 976, 980, 982, 1017, 1010, 586 1002, 998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043, 587 1038, 1041, 1053, 2072, 1055, 2070, 1045, 2067, 1056, 1061, 588 1063, 1065, 1066, 1067, 1070, 2064, 1071, 2063, 1073, 1074, 589 1075, 1078, 1080, 1081, 1085, 2062, 1087, 2060, 1084, 1089, 590 1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108, 905, 591 1109, 1116, 1110, 1122, 2057, 1120, 1123, 1179, 2051, 0, 592 2050, 0, 2049, 0, 2047, 0, 1166, 2044, 0, 2041, 593 0, 2040, 2039, 2037, 0, 2034, 0, 1173, 2031, 1179, 594 1137, 1195, 1181, 1178, 1176, 2822, 1219, 1231, 1253, 2042, 595 596 2017, 2027, 2024, 0, 2021, 0, 2020, 0, 2019, 0, 597 2017, 0, 2014, 0, 1141, 1172, 2014, 1180, 1155, 1196, 598 1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236, 599 1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2013, 600 1261, 1256, 2012, 1260, 1263, 1264, 1257, 2010, 1271, 1268, 601 1269, 1273, 2007, 1275, 1282, 2006, 1283, 1284, 2005, 1276, 602 1286, 1289, 2003, 1294, 1291, 1296, 1295, 1297, 1310, 2000, 603 1305, 1308, 1999, 1307, 1300, 1998, 2046, 1960, 0, 1958, 604 0, 1957, 0, 1954, 0, 1951, 0, 1950, 0, 1949, 605 0, 1947, 0, 1355, 1361, 1389, 1372, 1944, 2822, 1378, 606 607 1325, 1365, 1379, 1941, 2822, 1940, 0, 1939, 0, 1937, 608 0, 1934, 0, 0, 0, 1936, 0, 1366, 1312, 1311, 609 1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390, 610 1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408, 611 1413, 1414, 1935, 1409, 1416, 1419, 1933, 1930, 1929, 1422, 612 1424, 1928, 1429, 1926, 1923, 1425, 1430, 1919, 1915, 1911, 613 1895, 1894, 1893, 1436, 1433, 1891, 1439, 1440, 1938, 2822, 614 1884, 0, 1883, 0, 0, 0, 1884, 0, 0, 0, 615 2822, 0, 0, 0, 0, 1486, 1878, 2822, 2822, 1492, 616 1877, 0, 1876, 0, 0, 0, 0, 1874, 1447, 1444, 617 618 1874, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1873, 1486, 619 1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498, 620 1508, 1512, 1513, 1514, 1515, 1872, 1870, 1517, 1867, 1866, 621 1518, 1520, 1523, 1865, 1521, 1525, 0, 0, 0, 1860, 622 1857, 1856, 1575, 0, 1855, 1853, 1850, 1849, 1848, 1849, 623 1846, 1845, 1844, 1531, 1536, 1527, 1528, 1552, 1533, 1537, 624 1539, 1555, 1557, 1569, 1842, 1560, 1839, 1561, 1559, 1568, 625 1572, 1567, 1573, 1838, 1837, 1835, 1828, 1574, 1826, 1825, 626 1819, 1818, 1817, 1815, 1798, 1789, 1788, 1785, 1778, 1775, 627 1768, 1766, 1576, 1768, 1577, 1581, 1580, 1579, 1584, 1585, 628 629 1747, 1586, 1615, 1590, 1746, 1591, 1592, 1602, 1600, 1594, 630 1606, 1742, 1735, 1733, 1732, 1690, 1689, 1686, 1685, 1683, 631 1682, 1678, 1677, 1674, 1676, 1607, 1611, 1614, 1612, 1608, 632 1616, 1620, 1675, 1623, 1624, 1530, 1453, 1630, 1625, 1629, 633 1438, 1354, 1319, 1318, 1267, 1212, 1210, 1208, 1631, 1636, 634 1178, 1639, 1635, 1643, 1177, 1644, 1646, 1650, 1126, 964, 635 937, 903, 1651, 1652, 1654, 1655, 1656, 1658, 788, 752, 636 1660, 607, 487, 1662, 1663, 394, 357, 1664, 1666, 1668, 637 1670, 1669, 1672, 1674, 233, 137, 2822, 1747, 1760, 1773, 638 1783, 1793, 1806, 1816, 1829, 1842, 1855, 1863, 1873, 1880, 639 640 1887, 1894, 1901, 1908, 1915, 1922, 1929, 1936, 1949, 1956, 641 1960, 1968, 1971, 1978, 1985, 1992, 1995, 2002, 2008, 2021, 642 2034, 2041, 2048, 2055, 2062, 2065, 2072, 2075, 2082, 2085, 643 2092, 2095, 2102, 2105, 2112, 2115, 2122, 2125, 2132, 2140, 644 2147, 2154, 2161, 2168, 2171, 2178, 2181, 2188, 2191, 2198, 645 2204, 2217, 2224, 2231, 2234, 2241, 2244, 2251, 2254, 2261, 646 2264, 2271, 2274, 2281, 2284, 2291, 2298, 2301, 2308, 2311, 647 2318, 2325, 2332, 2335, 2342, 2345, 2352, 2355, 2362, 2365, 648 2372, 2375, 2382, 2388, 2401, 2408, 2415, 2418, 2425, 2428, 649 2435, 2438, 2445, 2448, 2455, 2458, 2465, 2468, 2475, 2478, 650 651 2485, 2488, 2495, 2502, 2505, 2512, 2515, 2522, 2525, 2532, 652 2535, 2538, 2544, 2551, 2560, 2567, 2574, 2577, 2584, 2587, 653 2590, 2596, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624, 654 2631, 2634, 2641, 2644, 2647, 2650, 2653, 2663, 2670, 2673, 655 2676, 2679, 2686, 2693, 2700, 2703, 2710, 2717, 2724, 2731, 656 2738, 2745, 2752, 2759, 2766, 2773, 2780, 2787, 2794, 2801, 657 2808 655 658 } ; 656 659 657 static yyconst flex_int16_t yy_def[10 50] =660 static yyconst flex_int16_t yy_def[1062] = 658 661 { 0, 659 875, 1, 876, 876, 875, 5, 877, 877, 878, 878, 660 875, 875, 875, 875, 875, 875, 875, 879, 875, 875, 661 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 662 875, 31, 875, 875, 875, 875, 875, 875, 880, 879, 663 875, 875, 875, 875, 879, 875, 879, 879, 879, 879, 664 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 665 879, 875, 875, 875, 875, 875, 881, 875, 875, 875, 666 882, 875, 875, 883, 875, 875, 884, 875, 875, 875, 667 875, 875, 875, 875, 879, 875, 875, 875, 875, 875, 668 875, 875, 875, 875, 875, 875, 875, 875, 875, 885, 669 670 875, 98, 30, 875, 875, 875, 875, 886, 30, 875, 671 31, 875, 875, 31, 875, 875, 875, 875, 875, 875, 672 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 673 875, 875, 875, 875, 875, 875, 875, 875, 887, 875, 674 875, 875, 875, 879, 888, 889, 875, 875, 879, 879, 675 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 676 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 677 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 678 879, 879, 879, 879, 879, 879, 879, 879, 879, 879, 679 879, 879, 875, 875, 875, 881, 881, 881, 875, 881, 680 681 875, 882, 875, 890, 891, 883, 875, 875, 875, 875, 682 892, 893, 894, 884, 875, 875, 875, 875, 875, 875, 683 875, 875, 875, 875, 875, 875, 875, 895, 896, 875, 684 98, 875, 875, 875, 875, 98, 897, 875, 875, 103, 685 103, 875, 875, 875, 875, 875, 875, 875, 875, 898, 686 899, 900, 875, 875, 875, 875, 875, 875, 875, 875, 687 875, 875, 875, 875, 875, 875, 887, 875, 901, 902, 688 903, 904, 905, 906, 875, 907, 907, 907, 907, 907, 689 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 690 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 691 692 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 693 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 694 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 695 907, 907, 907, 907, 907, 907, 907, 907, 907, 908, 696 909, 910, 911, 912, 913, 914, 915, 875, 875, 916, 697 917, 918, 919, 920, 921, 875, 875, 875, 875, 875, 698 922, 923, 924, 925, 875, 875, 875, 875, 875, 875, 699 875, 367, 372, 875, 875, 926, 927, 928, 875, 875, 700 875, 928, 875, 875, 875, 929, 930, 931, 932, 933, 701 934, 935, 936, 937, 938, 875, 939, 939, 939, 939, 702 703 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 704 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 705 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 706 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 707 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 708 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 709 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 710 875, 949, 950, 951, 952, 953, 953, 954, 955, 956, 711 957, 875, 482, 875, 958, 875, 958, 875, 875, 875, 712 875, 875, 875, 875, 875, 959, 960, 961, 962, 963, 713 714 964, 965, 966, 967, 968, 969, 970, 971, 972, 972, 715 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 716 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 717 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 718 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 719 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 720 972, 972, 972, 972, 972, 972, 972, 972, 972, 973, 721 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 722 984, 985, 986, 987, 988, 989, 875, 875, 875, 875, 723 990, 875, 589, 875, 875, 875, 593, 875, 991, 992, 724 725 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 726 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 727 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 728 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 729 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 730 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 731 1001, 1001, 1003, 875, 1004, 1005, 1006, 1007, 1008, 1009, 732 1010, 1011, 1012, 1013, 875, 1014, 1015, 1016, 1017, 875, 733 680, 875, 875, 875, 1018, 1019, 1020, 1021, 1022, 1023, 734 1024, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 735 736 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 737 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 738 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 739 1026, 1027, 1028, 1029, 1030, 1031, 1032, 875, 1033, 1018, 740 1020, 1034, 1035, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 741 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 742 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 743 1026, 1026, 1026, 1026, 1026, 1036, 1037, 1030, 1038, 1031, 744 1039, 1032, 1040, 1041, 1034, 1042, 1035, 1026, 1026, 1026, 745 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 746 747 1026, 1026, 1026, 1026, 1026, 1026, 1043, 1036, 1044, 1037, 748 1045, 1038, 1046, 1039, 1047, 1040, 1048, 1041, 1042, 1026, 749 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 750 1026, 1026, 1026, 1026, 1026, 1049, 1043, 1044, 1045, 1046, 751 1020, 1047, 1048, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 752 1026, 1026, 1026, 1026, 1049, 1020, 1026, 1026, 1026, 1026, 753 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 754 1026, 1026, 1026, 1026, 0, 875, 875, 875, 875, 875, 755 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 756 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 757 758 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 759 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 760 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 761 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 762 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 763 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 764 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 765 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 766 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 767 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 768 769 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 770 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 771 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 772 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 773 875, 875, 875, 875, 875, 875, 875, 875, 875 662 887, 1, 888, 888, 887, 5, 889, 889, 890, 890, 663 887, 887, 887, 887, 887, 887, 887, 891, 887, 887, 664 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 665 887, 31, 887, 887, 887, 887, 887, 887, 892, 891, 666 887, 887, 887, 887, 891, 887, 891, 891, 891, 891, 667 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 668 891, 891, 887, 887, 887, 887, 887, 893, 887, 887, 669 887, 894, 887, 887, 895, 887, 887, 896, 887, 887, 670 887, 887, 887, 887, 887, 891, 887, 887, 887, 887, 671 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 672 673 897, 887, 99, 30, 887, 887, 887, 887, 898, 30, 674 887, 31, 887, 887, 31, 887, 887, 887, 887, 887, 675 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 676 887, 887, 887, 887, 887, 887, 887, 887, 887, 899, 677 887, 887, 887, 887, 891, 900, 901, 887, 887, 891, 678 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 679 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 680 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 681 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 682 891, 891, 891, 891, 887, 887, 887, 893, 893, 893, 683 684 887, 893, 887, 894, 887, 902, 903, 895, 887, 887, 685 887, 887, 904, 905, 906, 896, 887, 887, 887, 887, 686 887, 887, 887, 887, 887, 887, 887, 887, 887, 907, 687 908, 887, 99, 887, 887, 887, 887, 99, 909, 887, 688 887, 104, 104, 887, 887, 887, 887, 887, 887, 887, 689 887, 910, 911, 912, 887, 887, 887, 887, 887, 887, 690 887, 887, 887, 887, 887, 887, 887, 887, 899, 887, 691 913, 914, 915, 916, 917, 918, 887, 919, 919, 919, 692 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 693 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 694 695 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 696 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 697 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 698 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 699 919, 919, 919, 920, 921, 922, 923, 924, 925, 926, 700 927, 887, 887, 928, 929, 930, 931, 932, 933, 887, 701 887, 887, 887, 887, 934, 935, 936, 937, 887, 887, 702 887, 887, 887, 887, 887, 371, 376, 887, 887, 938, 703 939, 940, 887, 887, 887, 940, 887, 887, 887, 941, 704 942, 943, 944, 945, 946, 947, 948, 949, 950, 887, 705 706 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 707 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 708 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 709 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 710 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 711 951, 951, 951, 951, 951, 951, 951, 951, 951, 951, 712 951, 951, 951, 951, 951, 951, 951, 952, 953, 954, 713 955, 956, 957, 958, 959, 960, 887, 961, 962, 963, 714 964, 965, 965, 966, 967, 968, 969, 887, 488, 887, 715 970, 887, 970, 887, 887, 887, 887, 887, 887, 887, 716 717 887, 971, 972, 973, 974, 975, 976, 977, 978, 979, 718 980, 981, 982, 983, 984, 984, 984, 984, 984, 984, 719 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 720 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 721 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 722 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 723 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, 724 984, 984, 984, 984, 984, 984, 985, 986, 987, 988, 725 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 726 999, 1000, 1001, 887, 887, 887, 887, 1002, 887, 596, 727 728 887, 887, 887, 600, 887, 1003, 1004, 1005, 1006, 1007, 729 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1013, 1013, 1013, 730 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 731 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 732 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 733 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 734 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1015, 887, 735 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 736 887, 1026, 1027, 1028, 1029, 887, 686, 887, 887, 887, 737 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1038, 738 739 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 740 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 741 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 742 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1041, 1042, 743 1043, 1044, 887, 1045, 1030, 1032, 1046, 1047, 1037, 1038, 744 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 745 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 746 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 747 1048, 1049, 1042, 1050, 1043, 1051, 1044, 1052, 1053, 1046, 748 1054, 1047, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 749 750 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 751 1038, 1055, 1048, 1056, 1049, 1057, 1050, 1058, 1051, 1059, 752 1052, 1060, 1053, 1054, 1038, 1038, 1038, 1038, 1038, 1038, 753 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 754 1061, 1055, 1056, 1057, 1058, 1032, 1059, 1060, 1038, 1038, 755 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 756 1061, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 757 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 758 1038, 1038, 1038, 1038, 1038, 1038, 0, 887, 887, 887, 759 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 760 761 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 762 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 763 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 764 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 765 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 766 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 767 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 768 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 769 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 770 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 771 772 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 773 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 774 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 775 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 776 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 777 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 778 887 774 779 } ; 775 780 776 static yyconst flex_int16_t yy_nxt[2 867] =781 static yyconst flex_int16_t yy_nxt[2908] = 777 782 { 0, 778 783 12, 13, 14, 15, 15, 15, 13, 16, 17, 12, … … 780 785 28, 29, 30, 31, 32, 32, 32, 32, 33, 34, 781 786 35, 36, 37, 38, 39, 18, 18, 18, 18, 18, 782 18, 18, 40, 18, 18, 18, 18, 18, 40, 18, 783 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 784 51, 52, 53, 18, 54, 18, 55, 18, 18, 18, 785 18, 56, 57, 58, 59, 60, 61, 18, 18, 18, 786 62, 63, 64, 65, 66, 83, 91, 84, 84, 66, 787 87, 88, 67, 70, 70, 70, 70, 70, 70, 70, 788 789 70, 70, 70, 71, 70, 70, 70, 70, 70, 70, 790 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 791 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 787 18, 18, 18, 40, 18, 18, 18, 18, 18, 40, 788 18, 41, 42, 43, 44, 45, 46, 47, 48, 49, 789 50, 51, 52, 53, 18, 54, 18, 55, 18, 18, 790 56, 18, 57, 58, 59, 60, 61, 62, 18, 18, 791 18, 63, 64, 65, 66, 67, 84, 92, 85, 85, 792 67, 88, 89, 68, 71, 71, 71, 71, 71, 71, 793 794 71, 71, 71, 71, 72, 71, 71, 71, 71, 71, 792 795 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 793 71, 71, 71, 70, 72, 70, 70, 71, 73, 71, 794 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 795 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 796 71, 71, 71, 70, 70, 70, 70, 75, 75, 78, 797 78, 122, 123, 89, 140, 78, 78, 86, 75, 75, 798 79, 80, 81, 81, 81, 79, 81, 80, 82, 82, 799 800 82, 81, 90, 92, 141, 145, 86, 97, 94, 98, 801 98, 98, 98, 98, 98, 250, 875, 93, 99, 84, 802 95, 96, 84, 100, 176, 117, 76, 76, 76, 76, 803 142, 146, 86, 101, 102, 143, 103, 103, 103, 103, 804 104, 104, 118, 86, 119, 120, 147, 86, 148, 252, 805 258, 86, 160, 105, 193, 192, 106, 86, 86, 149, 806 150, 151, 107, 108, 152, 153, 181, 154, 109, 86, 807 155, 156, 86, 86, 105, 86, 144, 161, 157, 158, 808 110, 159, 204, 261, 162, 262, 86, 179, 107, 228, 809 163, 108, 102, 180, 111, 111, 111, 111, 111, 111, 810 811 86, 168, 86, 169, 194, 86, 86, 86, 205, 164, 812 86, 105, 170, 165, 112, 229, 177, 86, 166, 186, 813 113, 281, 167, 178, 269, 86, 114, 187, 191, 182, 814 183, 142, 105, 261, 188, 262, 143, 284, 115, 184, 815 86, 86, 185, 198, 199, 171, 113, 124, 198, 189, 816 270, 125, 126, 172, 127, 173, 128, 129, 174, 130, 817 248, 131, 175, 256, 200, 200, 200, 200, 200, 200, 818 132, 133, 134, 261, 86, 262, 86, 144, 195, 80, 819 81, 81, 81, 195, 249, 280, 196, 257, 86, 86, 820 135, 190, 86, 136, 79, 80, 81, 81, 81, 79, 821 822 81, 80, 81, 81, 81, 81, 81, 80, 82, 82, 823 82, 81, 261, 305, 262, 240, 240, 240, 240, 246, 824 137, 138, 207, 208, 875, 247, 254, 207, 86, 209, 825 247, 261, 255, 262, 209, 98, 98, 98, 98, 98, 826 98, 263, 875, 210, 210, 210, 210, 241, 246, 308, 827 875, 247, 263, 261, 209, 262, 247, 102, 255, 104, 828 104, 104, 104, 104, 104, 86, 261, 239, 262, 211, 829 875, 261, 209, 262, 86, 255, 105, 209, 209, 875, 830 276, 209, 209, 86, 253, 264, 261, 277, 262, 209, 831 296, 242, 209, 254, 209, 212, 209, 105, 213, 215, 832 833 261, 255, 262, 216, 217, 283, 86, 875, 218, 219, 834 243, 220, 243, 221, 86, 244, 244, 244, 244, 244, 835 244, 86, 222, 223, 224, 261, 265, 262, 142, 306, 836 86, 86, 278, 143, 86, 86, 285, 286, 287, 279, 837 288, 289, 225, 86, 290, 226, 291, 245, 282, 86, 838 86, 292, 293, 294, 86, 295, 297, 875, 298, 301, 839 86, 86, 307, 86, 299, 300, 309, 303, 86, 86, 840 304, 86, 302, 227, 231, 231, 231, 231, 231, 231, 841 86, 86, 86, 312, 310, 311, 313, 86, 86, 86, 842 232, 233, 86, 234, 235, 86, 142, 86, 314, 86, 843 844 321, 315, 330, 86, 320, 86, 236, 318, 86, 316, 845 317, 232, 233, 232, 319, 325, 234, 86, 235, 322, 846 86, 86, 86, 331, 333, 328, 332, 629, 326, 323, 847 324, 86, 207, 208, 337, 335, 338, 207, 365, 86, 848 329, 342, 334, 336, 339, 327, 195, 80, 81, 81, 849 81, 195, 198, 199, 196, 86, 86, 198, 198, 199, 850 356, 365, 357, 198, 340, 199, 356, 343, 357, 340, 851 356, 341, 357, 200, 200, 200, 200, 200, 200, 200, 852 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 853 200, 348, 348, 348, 348, 357, 357, 356, 86, 357, 854 855 358, 356, 356, 357, 357, 356, 359, 357, 356, 356, 856 357, 357, 356, 356, 357, 357, 369, 365, 403, 366, 857 369, 366, 86, 349, 367, 367, 367, 367, 367, 367, 858 875, 232, 233, 86, 234, 235, 261, 369, 262, 369, 859 365, 261, 405, 262, 369, 104, 104, 104, 104, 104, 860 104, 398, 232, 233, 232, 374, 368, 234, 86, 235, 861 86, 86, 105, 86, 371, 244, 244, 244, 244, 244, 862 244, 384, 386, 397, 86, 86, 399, 253, 401, 400, 863 402, 374, 86, 105, 372, 372, 372, 372, 372, 372, 864 104, 104, 104, 104, 104, 104, 377, 384, 387, 86, 865 866 232, 86, 86, 234, 235, 243, 404, 243, 411, 86, 867 244, 244, 244, 244, 244, 244, 373, 410, 379, 86, 868 380, 232, 253, 232, 381, 409, 234, 419, 235, 86, 869 382, 111, 111, 111, 111, 111, 111, 86, 86, 86, 870 86, 86, 383, 86, 412, 415, 380, 86, 416, 86, 871 381, 86, 406, 86, 413, 414, 417, 86, 407, 408, 872 422, 86, 421, 258, 86, 420, 86, 86, 418, 424, 873 86, 423, 428, 86, 426, 427, 430, 86, 429, 425, 874 86, 86, 86, 86, 86, 431, 432, 433, 86, 437, 875 86, 435, 86, 438, 86, 439, 434, 86, 436, 86, 876 877 86, 86, 86, 86, 86, 86, 86, 443, 86, 86, 878 444, 441, 440, 446, 86, 442, 445, 451, 86, 86, 879 142, 450, 86, 86, 447, 449, 448, 456, 452, 86, 880 86, 459, 453, 86, 494, 460, 454, 455, 340, 199, 881 457, 199, 458, 340, 356, 341, 357, 197, 461, 209, 882 209, 209, 209, 348, 348, 348, 348, 356, 495, 357, 883 86, 86, 86, 86, 367, 367, 367, 367, 367, 367, 884 366, 509, 366, 514, 86, 367, 367, 367, 367, 367, 885 367, 471, 482, 482, 482, 482, 482, 482, 231, 231, 886 231, 231, 231, 231, 86, 86, 516, 86, 232, 486, 887 888 875, 234, 235, 240, 240, 240, 240, 104, 104, 487, 889 489, 510, 486, 512, 483, 377, 490, 545, 490, 232, 890 370, 232, 488, 86, 234, 486, 235, 372, 372, 372, 891 372, 372, 372, 86, 875, 371, 489, 379, 486, 380, 892 86, 525, 490, 381, 490, 491, 529, 491, 511, 382, 893 492, 492, 492, 492, 492, 492, 379, 86, 380, 373, 894 86, 383, 381, 86, 86, 380, 513, 86, 496, 381, 895 86, 86, 515, 517, 86, 86, 519, 86, 86, 86, 896 383, 86, 493, 518, 380, 86, 526, 521, 381, 520, 897 86, 522, 523, 524, 527, 86, 531, 532, 530, 86, 898 899 86, 528, 86, 86, 86, 533, 86, 86, 86, 534, 900 86, 535, 538, 541, 86, 543, 539, 86, 86, 86, 901 86, 536, 86, 542, 537, 544, 86, 540, 86, 551, 902 86, 86, 547, 86, 549, 86, 546, 86, 86, 86, 903 548, 86, 550, 552, 86, 86, 558, 86, 86, 86, 904 555, 553, 554, 556, 560, 561, 559, 557, 86, 86, 905 567, 566, 86, 716, 563, 562, 199, 564, 86, 568, 906 486, 569, 570, 209, 209, 209, 209, 565, 482, 482, 907 482, 482, 482, 482, 372, 372, 372, 372, 372, 372, 908 616, 86, 486, 486, 232, 592, 486, 234, 235, 588, 909 910 86, 588, 487, 591, 589, 589, 589, 589, 589, 589, 911 483, 614, 86, 612, 86, 232, 484, 232, 486, 486, 912 234, 592, 235, 492, 492, 492, 492, 492, 492, 611, 913 86, 86, 86, 86, 621, 620, 590, 593, 593, 593, 914 593, 593, 593, 86, 615, 613, 617, 86, 618, 86, 915 86, 86, 86, 594, 626, 875, 595, 596, 491, 856, 916 491, 619, 622, 492, 492, 492, 492, 492, 492, 597, 917 623, 86, 86, 624, 594, 86, 594, 86, 86, 595, 918 625, 596, 86, 627, 86, 86, 630, 86, 628, 635, 919 634, 86, 86, 633, 86, 86, 636, 86, 86, 632, 920 921 631, 86, 86, 641, 86, 86, 86, 86, 86, 638, 922 642, 86, 639, 640, 86, 86, 644, 637, 86, 643, 923 645, 646, 86, 647, 648, 652, 86, 651, 86, 650, 924 86, 649, 86, 656, 653, 658, 86, 655, 654, 86, 925 86, 86, 86, 86, 657, 659, 86, 86, 682, 660, 926 682, 86, 696, 695, 700, 662, 749, 661, 482, 482, 927 482, 482, 482, 482, 589, 589, 589, 589, 589, 589, 928 588, 682, 588, 682, 86, 589, 589, 589, 589, 589, 929 589, 593, 593, 593, 593, 593, 593, 697, 86, 86, 930 587, 680, 680, 680, 680, 680, 680, 683, 86, 86, 931 932 86, 683, 86, 693, 86, 698, 86, 594, 701, 703, 933 595, 596, 699, 597, 86, 86, 694, 704, 683, 702, 934 683, 705, 86, 681, 86, 683, 86, 712, 594, 706, 935 594, 86, 86, 595, 710, 596, 86, 707, 86, 708, 936 86, 86, 86, 711, 86, 86, 709, 713, 86, 715, 937 718, 86, 86, 86, 86, 86, 714, 86, 86, 86, 938 717, 722, 726, 86, 719, 723, 727, 720, 86, 86, 939 721, 86, 725, 729, 86, 875, 875, 728, 724, 745, 940 730, 748, 86, 747, 731, 680, 680, 680, 680, 680, 941 680, 593, 593, 593, 593, 593, 593, 86, 86, 86, 942 943 86, 594, 750, 751, 595, 596, 86, 746, 86, 752, 944 86, 86, 755, 759, 754, 86, 753, 681, 757, 756, 945 762, 86, 594, 684, 594, 86, 86, 595, 760, 596, 946 761, 86, 758, 86, 763, 86, 86, 86, 86, 764, 947 86, 86, 86, 765, 86, 86, 766, 769, 86, 86, 948 767, 86, 86, 86, 768, 86, 86, 774, 790, 86, 949 775, 86, 771, 770, 86, 792, 772, 791, 86, 773, 950 680, 680, 680, 680, 680, 680, 788, 86, 789, 86, 951 796, 794, 793, 798, 86, 86, 86, 799, 800, 86, 952 86, 86, 797, 801, 795, 86, 86, 86, 802, 803, 953 954 86, 86, 738, 86, 804, 86, 823, 86, 86, 86, 955 86, 825, 826, 805, 806, 828, 86, 86, 86, 822, 956 829, 821, 86, 86, 820, 827, 831, 824, 86, 86, 957 86, 832, 86, 86, 834, 86, 846, 86, 830, 833, 958 86, 847, 845, 844, 86, 835, 86, 849, 86, 86, 959 86, 851, 852, 86, 86, 848, 86, 859, 86, 853, 960 86, 86, 854, 850, 86, 857, 858, 861, 860, 86, 961 86, 86, 862, 863, 86, 86, 86, 866, 86, 868, 962 864, 86, 86, 86, 86, 867, 865, 875, 86, 875, 963 855, 871, 86, 86, 874, 86, 86, 86, 875, 875, 964 965 869, 843, 870, 875, 842, 872, 873, 68, 68, 68, 966 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 967 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 968 74, 74, 74, 77, 77, 77, 77, 77, 77, 77, 969 77, 77, 77, 77, 77, 77, 85, 875, 840, 85, 970 875, 85, 85, 85, 85, 85, 139, 839, 875, 838, 971 139, 139, 139, 139, 139, 139, 197, 197, 197, 197, 972 197, 197, 197, 197, 197, 197, 197, 197, 197, 202, 973 875, 837, 202, 86, 202, 202, 202, 202, 202, 206, 974 86, 206, 206, 86, 206, 206, 206, 206, 206, 206, 975 976 875, 206, 214, 819, 875, 214, 214, 214, 214, 214, 977 214, 214, 214, 818, 214, 237, 237, 237, 237, 237, 978 237, 237, 237, 237, 237, 237, 237, 237, 251, 251, 979 816, 251, 875, 814, 875, 251, 267, 812, 875, 267, 980 810, 267, 267, 267, 267, 267, 271, 808, 271, 86, 981 86, 86, 271, 273, 86, 273, 86, 86, 86, 273, 982 344, 86, 344, 86, 86, 86, 344, 346, 86, 346, 983 875, 787, 785, 346, 350, 875, 350, 875, 782, 780, 984 350, 352, 778, 352, 86, 86, 86, 352, 354, 86, 985 354, 86, 86, 86, 354, 361, 86, 361, 744, 741, 986 987 740, 361, 363, 738, 363, 203, 734, 733, 363, 237, 988 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 989 237, 237, 376, 664, 376, 378, 378, 86, 378, 378, 990 378, 86, 378, 251, 251, 86, 251, 388, 86, 388, 991 86, 86, 86, 388, 390, 86, 390, 86, 86, 86, 992 390, 392, 86, 392, 86, 86, 86, 392, 271, 691, 993 271, 394, 690, 394, 688, 686, 684, 394, 273, 591, 994 273, 85, 679, 678, 85, 676, 85, 85, 85, 85, 995 85, 197, 197, 197, 197, 197, 197, 197, 197, 197, 996 197, 197, 197, 197, 462, 462, 462, 462, 462, 462, 997 998 462, 462, 462, 462, 462, 462, 462, 463, 674, 463, 999 672, 670, 668, 463, 465, 666, 465, 664, 86, 86, 1000 465, 467, 86, 467, 86, 86, 86, 467, 344, 86, 1001 344, 469, 86, 469, 86, 610, 608, 469, 346, 606, 1002 346, 472, 604, 472, 602, 600, 496, 472, 350, 598, 1003 350, 474, 598, 474, 587, 586, 584, 474, 352, 477, 1004 352, 476, 477, 476, 582, 580, 578, 476, 354, 576, 1005 354, 478, 574, 478, 572, 86, 86, 478, 361, 86, 1006 361, 480, 86, 480, 86, 86, 86, 480, 363, 86, 1007 363, 485, 508, 485, 506, 485, 504, 485, 376, 502, 1008 1009 376, 500, 376, 498, 376, 378, 378, 484, 378, 378, 1010 378, 481, 378, 497, 479, 497, 357, 357, 477, 497, 1011 499, 475, 499, 473, 470, 468, 499, 501, 466, 501, 1012 464, 86, 86, 501, 388, 86, 388, 503, 396, 503, 1013 395, 393, 391, 503, 390, 389, 390, 505, 268, 505, 1014 263, 262, 385, 505, 392, 385, 392, 507, 250, 507, 1015 375, 375, 238, 507, 394, 370, 394, 85, 364, 362, 1016 85, 360, 85, 85, 85, 85, 85, 462, 462, 462, 1017 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, 1018 571, 356, 571, 355, 353, 351, 571, 463, 347, 463, 1019 1020 573, 345, 573, 203, 199, 86, 573, 465, 275, 465, 1021 575, 274, 575, 272, 268, 263, 575, 467, 266, 467, 1022 577, 263, 577, 261, 260, 259, 577, 469, 238, 469, 1023 579, 230, 579, 84, 84, 86, 579, 472, 203, 472, 1024 581, 201, 581, 84, 121, 116, 581, 474, 86, 474, 1025 476, 875, 476, 69, 69, 875, 476, 583, 875, 583, 1026 875, 875, 875, 583, 478, 875, 478, 585, 875, 585, 1027 875, 875, 875, 585, 480, 875, 480, 485, 875, 485, 1028 875, 485, 875, 485, 378, 875, 378, 875, 875, 875, 1029 378, 599, 875, 599, 875, 875, 875, 599, 497, 875, 1030 1031 497, 601, 875, 601, 875, 875, 875, 601, 499, 875, 1032 499, 603, 875, 603, 875, 875, 875, 603, 501, 875, 1033 501, 605, 875, 605, 875, 875, 875, 605, 503, 875, 1034 503, 607, 875, 607, 875, 875, 875, 607, 505, 875, 1035 505, 609, 875, 609, 875, 875, 875, 609, 507, 875, 1036 507, 85, 875, 875, 85, 875, 85, 85, 85, 85, 1037 85, 663, 663, 663, 663, 663, 663, 663, 663, 663, 1038 663, 663, 663, 663, 665, 875, 665, 875, 875, 875, 1039 665, 571, 875, 571, 667, 875, 667, 875, 875, 875, 1040 667, 573, 875, 573, 669, 875, 669, 875, 875, 875, 1041 1042 669, 575, 875, 575, 671, 875, 671, 875, 875, 875, 1043 671, 577, 875, 577, 673, 875, 673, 875, 875, 875, 1044 673, 579, 875, 579, 675, 875, 675, 875, 875, 875, 1045 675, 581, 875, 581, 677, 875, 677, 875, 875, 875, 1046 677, 583, 875, 583, 85, 875, 85, 875, 875, 875, 1047 85, 585, 875, 585, 485, 875, 485, 875, 875, 875, 1048 485, 685, 875, 685, 875, 875, 875, 685, 599, 875, 1049 599, 687, 875, 687, 875, 875, 875, 687, 601, 875, 1050 601, 689, 875, 689, 875, 875, 875, 689, 603, 875, 1051 603, 139, 875, 139, 875, 875, 875, 139, 605, 875, 1052 1053 605, 692, 875, 692, 607, 875, 607, 85, 875, 875, 1054 85, 875, 85, 85, 85, 85, 85, 609, 875, 609, 1055 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 1056 663, 663, 663, 732, 875, 732, 875, 875, 875, 732, 1057 665, 875, 665, 202, 875, 202, 875, 875, 875, 202, 1058 667, 875, 667, 735, 875, 735, 669, 875, 669, 202, 1059 875, 875, 202, 875, 202, 202, 202, 202, 202, 671, 1060 875, 671, 736, 875, 736, 673, 875, 673, 675, 875, 1061 675, 737, 875, 737, 677, 875, 677, 85, 875, 85, 1062 739, 875, 739, 875, 875, 875, 739, 685, 875, 685, 1063 1064 267, 875, 267, 875, 875, 875, 267, 687, 875, 687, 1065 742, 875, 742, 689, 875, 689, 139, 875, 139, 743, 1066 875, 743, 875, 875, 875, 743, 85, 875, 875, 85, 1067 875, 85, 85, 85, 85, 85, 776, 875, 776, 732, 1068 875, 732, 202, 875, 202, 777, 875, 777, 875, 875, 1069 875, 777, 779, 875, 779, 875, 875, 875, 779, 781, 1070 875, 781, 875, 875, 875, 781, 783, 875, 783, 784, 1071 875, 784, 875, 875, 875, 784, 786, 875, 786, 875, 1072 875, 875, 786, 807, 875, 807, 875, 875, 875, 807, 1073 809, 875, 809, 875, 875, 875, 809, 811, 875, 811, 1074 1075 875, 875, 875, 811, 813, 875, 813, 875, 875, 875, 1076 813, 815, 875, 815, 875, 875, 875, 815, 817, 875, 1077 817, 875, 875, 875, 817, 609, 875, 609, 875, 875, 1078 875, 609, 836, 875, 836, 875, 875, 875, 836, 671, 1079 875, 671, 875, 875, 875, 671, 675, 875, 675, 875, 1080 875, 875, 675, 85, 875, 85, 875, 875, 875, 85, 1081 841, 875, 841, 875, 875, 875, 841, 139, 875, 139, 1082 875, 875, 875, 139, 202, 875, 202, 875, 875, 875, 1083 202, 11, 875, 875, 875, 875, 875, 875, 875, 875, 1084 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1085 1086 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1087 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1088 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1089 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1090 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1091 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1092 875, 875, 875, 875, 875, 875 796 71, 71, 71, 71, 71, 71, 71, 71, 71, 72, 797 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 798 72, 72, 72, 72, 72, 71, 73, 71, 71, 72, 799 74, 72, 72, 72, 72, 72, 72, 72, 72, 72, 800 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 801 72, 72, 72, 72, 72, 71, 71, 71, 71, 76, 802 76, 79, 79, 123, 124, 90, 141, 79, 79, 87, 803 76, 76, 80, 81, 82, 82, 82, 80, 82, 81, 804 805 83, 83, 83, 82, 91, 93, 87, 142, 146, 98, 806 95, 99, 99, 99, 99, 99, 99, 252, 887, 94, 807 100, 85, 96, 97, 85, 101, 161, 118, 143, 77, 808 77, 77, 77, 144, 147, 102, 103, 87, 104, 104, 809 104, 104, 105, 105, 119, 87, 120, 121, 148, 263, 810 149, 264, 254, 260, 183, 106, 195, 87, 159, 107, 811 160, 150, 151, 152, 87, 108, 109, 153, 154, 162, 812 155, 110, 87, 156, 157, 145, 163, 106, 87, 182, 813 87, 158, 164, 111, 206, 87, 263, 87, 264, 87, 814 87, 108, 194, 87, 109, 103, 250, 112, 112, 112, 815 816 112, 112, 112, 87, 169, 177, 170, 196, 193, 87, 817 207, 180, 165, 230, 106, 171, 166, 181, 113, 178, 818 251, 167, 87, 258, 114, 168, 179, 172, 87, 263, 819 115, 264, 248, 87, 87, 173, 106, 174, 249, 231, 820 175, 143, 116, 263, 176, 264, 144, 259, 317, 283, 821 114, 125, 280, 500, 249, 126, 127, 87, 128, 191, 822 129, 130, 256, 131, 249, 132, 87, 265, 257, 184, 823 185, 257, 248, 87, 133, 134, 135, 501, 188, 186, 824 249, 263, 187, 264, 271, 87, 189, 265, 145, 256, 825 305, 200, 201, 190, 257, 136, 200, 257, 137, 263, 826 827 887, 264, 192, 197, 81, 82, 82, 82, 197, 87, 828 272, 198, 202, 202, 202, 202, 202, 202, 80, 81, 829 82, 82, 82, 80, 87, 138, 139, 209, 210, 263, 830 887, 264, 209, 282, 211, 255, 263, 267, 264, 211, 831 82, 81, 82, 82, 82, 82, 87, 887, 212, 212, 832 212, 212, 82, 81, 83, 83, 83, 82, 887, 211, 833 99, 99, 99, 99, 99, 99, 242, 242, 242, 242, 834 266, 263, 263, 264, 264, 213, 143, 263, 211, 264, 835 87, 144, 375, 211, 211, 87, 87, 211, 211, 87, 836 87, 87, 286, 241, 887, 211, 87, 87, 211, 243, 837 838 211, 214, 211, 281, 215, 217, 278, 284, 285, 218, 839 219, 307, 298, 279, 220, 221, 87, 222, 87, 223, 840 87, 87, 887, 87, 309, 300, 87, 87, 224, 225, 841 226, 103, 303, 105, 105, 105, 105, 105, 105, 87, 842 299, 87, 301, 302, 87, 304, 308, 310, 87, 227, 843 106, 245, 228, 245, 306, 87, 246, 246, 246, 246, 844 246, 246, 87, 313, 87, 315, 244, 87, 87, 311, 845 314, 87, 106, 87, 87, 87, 323, 87, 87, 322, 846 229, 233, 233, 233, 233, 233, 233, 312, 333, 247, 847 319, 316, 328, 320, 318, 87, 87, 234, 235, 236, 848 849 321, 237, 236, 87, 324, 87, 325, 143, 335, 360, 850 331, 361, 87, 87, 238, 337, 326, 327, 87, 236, 851 235, 236, 87, 329, 237, 332, 236, 287, 288, 289, 852 336, 290, 291, 334, 87, 292, 87, 293, 407, 360, 853 330, 361, 294, 295, 296, 87, 297, 339, 360, 343, 854 361, 87, 200, 201, 338, 340, 346, 200, 341, 87, 855 342, 197, 81, 82, 82, 82, 197, 200, 201, 198, 856 378, 361, 200, 202, 202, 202, 202, 202, 202, 344, 857 201, 360, 347, 361, 344, 360, 345, 361, 202, 202, 858 202, 202, 202, 202, 209, 210, 378, 143, 361, 209, 859 860 202, 202, 202, 202, 202, 202, 352, 352, 352, 352, 861 360, 87, 361, 362, 360, 360, 361, 361, 360, 363, 862 361, 360, 360, 361, 361, 369, 369, 370, 369, 370, 863 435, 87, 371, 371, 371, 371, 371, 371, 373, 353, 864 373, 87, 263, 373, 264, 263, 87, 264, 369, 402, 865 87, 369, 234, 235, 236, 406, 237, 236, 388, 401, 866 373, 87, 373, 87, 87, 372, 390, 373, 105, 105, 867 105, 105, 105, 105, 236, 235, 236, 404, 87, 237, 868 405, 236, 403, 408, 388, 106, 246, 246, 246, 246, 869 246, 246, 391, 87, 87, 87, 87, 87, 87, 419, 870 871 87, 255, 425, 432, 87, 420, 434, 106, 376, 376, 872 376, 376, 376, 376, 381, 409, 413, 105, 105, 105, 873 105, 105, 105, 87, 234, 245, 236, 245, 237, 236, 874 246, 246, 246, 246, 246, 246, 87, 383, 410, 384, 875 87, 377, 87, 385, 411, 412, 236, 87, 236, 386, 876 255, 237, 87, 236, 112, 112, 112, 112, 112, 112, 877 414, 387, 415, 417, 418, 384, 87, 416, 87, 385, 878 87, 87, 87, 87, 87, 87, 87, 87, 87, 421, 879 427, 426, 433, 87, 437, 87, 87, 260, 423, 424, 880 87, 87, 436, 429, 428, 422, 87, 430, 431, 439, 881 882 87, 438, 87, 87, 446, 441, 440, 442, 443, 87, 883 87, 87, 87, 87, 87, 445, 87, 87, 87, 87, 884 87, 448, 447, 87, 87, 444, 449, 451, 87, 456, 885 87, 450, 87, 87, 87, 452, 455, 454, 87, 453, 886 457, 462, 460, 461, 87, 87, 458, 464, 87, 515, 887 459, 463, 465, 466, 344, 201, 201, 87, 887, 344, 888 467, 345, 199, 211, 211, 211, 211, 352, 352, 352, 889 352, 360, 360, 361, 361, 371, 371, 371, 371, 371, 890 371, 370, 569, 370, 492, 492, 371, 371, 371, 371, 891 371, 371, 887, 87, 493, 494, 477, 488, 488, 488, 892 893 488, 488, 488, 233, 233, 233, 233, 233, 233, 516, 894 492, 492, 87, 234, 87, 236, 87, 237, 236, 242, 895 242, 242, 242, 105, 105, 495, 381, 517, 87, 87, 896 489, 496, 87, 518, 87, 236, 374, 236, 519, 520, 897 237, 521, 236, 376, 376, 376, 376, 376, 376, 383, 898 87, 384, 375, 496, 87, 385, 522, 496, 497, 887, 899 497, 386, 87, 498, 498, 498, 498, 498, 498, 87, 900 525, 495, 526, 387, 87, 524, 377, 384, 523, 496, 901 87, 385, 383, 87, 384, 87, 87, 527, 385, 87, 902 87, 532, 87, 87, 502, 87, 499, 87, 535, 528, 903 904 529, 537, 530, 531, 533, 87, 387, 87, 87, 541, 905 384, 534, 538, 87, 385, 87, 536, 87, 87, 87, 906 539, 540, 87, 87, 546, 87, 87, 87, 544, 542, 907 87, 548, 87, 87, 547, 543, 87, 87, 549, 87, 908 545, 87, 552, 87, 87, 550, 556, 554, 551, 87, 909 559, 87, 553, 555, 87, 87, 557, 87, 87, 558, 910 87, 87, 87, 564, 560, 567, 563, 568, 87, 561, 911 566, 562, 87, 565, 87, 87, 571, 87, 87, 573, 912 627, 201, 492, 570, 576, 574, 572, 577, 211, 211, 913 211, 211, 493, 87, 575, 488, 488, 488, 488, 488, 914 915 488, 376, 376, 376, 376, 376, 376, 87, 492, 87, 916 618, 234, 595, 236, 595, 237, 236, 596, 596, 596, 917 596, 596, 596, 492, 87, 599, 492, 621, 489, 87, 918 87, 623, 87, 236, 490, 236, 598, 619, 237, 87, 919 236, 498, 498, 498, 498, 498, 498, 620, 87, 492, 920 597, 599, 492, 600, 600, 600, 600, 600, 600, 87, 921 631, 622, 87, 887, 625, 887, 87, 862, 87, 601, 922 497, 602, 497, 603, 602, 498, 498, 498, 498, 498, 923 498, 624, 628, 87, 87, 630, 604, 87, 87, 87, 924 87, 602, 633, 602, 626, 636, 603, 632, 602, 629, 925 926 634, 87, 87, 635, 87, 87, 87, 642, 87, 87, 927 637, 641, 87, 87, 640, 87, 87, 643, 647, 639, 928 87, 87, 887, 87, 87, 87, 638, 87, 87, 644, 929 645, 646, 648, 650, 87, 87, 87, 649, 87, 653, 930 651, 87, 652, 87, 654, 655, 87, 87, 87, 87, 931 656, 657, 87, 660, 659, 661, 664, 87, 658, 87, 932 87, 663, 87, 87, 87, 668, 665, 688, 688, 662, 933 666, 701, 702, 887, 887, 87, 667, 488, 488, 488, 934 488, 488, 488, 596, 596, 596, 596, 596, 596, 595, 935 688, 595, 704, 87, 596, 596, 596, 596, 596, 596, 936 937 600, 600, 600, 600, 600, 600, 703, 688, 87, 887, 938 594, 686, 686, 686, 686, 686, 686, 689, 87, 689, 939 87, 87, 689, 699, 87, 708, 87, 601, 706, 602, 940 688, 603, 602, 604, 707, 87, 700, 710, 709, 689, 941 87, 689, 87, 705, 687, 87, 689, 87, 87, 602, 942 87, 602, 87, 716, 603, 718, 602, 712, 87, 87, 943 87, 87, 711, 87, 714, 87, 87, 713, 87, 717, 944 715, 87, 721, 719, 87, 724, 87, 87, 722, 720, 945 727, 87, 87, 87, 725, 87, 731, 723, 87, 732, 946 726, 87, 87, 861, 728, 734, 87, 733, 730, 87, 947 948 735, 87, 87, 729, 87, 87, 751, 736, 686, 686, 949 686, 686, 686, 686, 600, 600, 600, 600, 600, 600, 950 750, 87, 755, 87, 601, 763, 602, 752, 603, 602, 951 753, 87, 87, 764, 87, 756, 754, 757, 87, 758, 952 87, 687, 87, 87, 759, 767, 602, 690, 602, 761, 953 87, 603, 766, 602, 87, 760, 87, 762, 87, 765, 954 87, 768, 87, 769, 87, 87, 87, 87, 770, 87, 955 87, 87, 87, 87, 771, 87, 774, 87, 772, 87, 956 87, 779, 87, 87, 795, 87, 780, 773, 87, 87, 957 776, 87, 775, 803, 777, 796, 778, 686, 686, 686, 958 959 686, 686, 686, 793, 87, 794, 799, 87, 798, 87, 960 801, 87, 87, 87, 797, 804, 805, 800, 806, 87, 961 87, 87, 802, 807, 87, 87, 87, 808, 87, 87, 962 743, 87, 87, 87, 809, 828, 87, 87, 87, 830, 963 831, 833, 87, 87, 87, 834, 87, 836, 810, 811, 964 826, 827, 87, 829, 87, 825, 832, 837, 87, 87, 965 87, 838, 839, 87, 87, 835, 87, 87, 87, 851, 966 850, 855, 87, 852, 840, 87, 87, 87, 853, 857, 967 849, 87, 87, 87, 854, 858, 859, 87, 87, 856, 968 860, 87, 863, 864, 865, 87, 87, 866, 87, 868, 969 970 867, 869, 87, 87, 87, 870, 87, 87, 87, 873, 971 87, 875, 87, 876, 87, 87, 87, 874, 87, 872, 972 87, 87, 87, 871, 87, 880, 87, 87, 87, 887, 973 879, 881, 887, 848, 877, 878, 886, 887, 847, 884, 974 887, 845, 882, 883, 887, 844, 885, 69, 69, 69, 975 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 976 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 977 75, 75, 75, 78, 78, 78, 78, 78, 78, 78, 978 78, 78, 78, 78, 78, 78, 86, 887, 843, 86, 979 887, 86, 86, 86, 86, 86, 140, 842, 87, 87, 980 981 140, 140, 140, 140, 140, 140, 199, 199, 199, 199, 982 199, 199, 199, 199, 199, 199, 199, 199, 199, 204, 983 87, 887, 204, 824, 204, 204, 204, 204, 204, 208, 984 887, 208, 208, 823, 208, 208, 208, 208, 208, 208, 985 821, 208, 216, 887, 819, 216, 216, 216, 216, 216, 986 216, 216, 216, 887, 216, 239, 239, 239, 239, 239, 987 239, 239, 239, 239, 239, 239, 239, 239, 253, 253, 988 817, 253, 887, 815, 813, 253, 269, 87, 87, 269, 989 87, 269, 269, 269, 269, 269, 273, 87, 273, 87, 990 87, 87, 273, 275, 87, 275, 87, 87, 87, 275, 991 992 348, 87, 348, 887, 792, 790, 348, 350, 887, 350, 993 887, 787, 785, 350, 354, 783, 354, 87, 87, 87, 994 354, 356, 87, 356, 87, 87, 87, 356, 358, 749, 995 358, 746, 745, 743, 358, 365, 205, 365, 739, 738, 996 670, 365, 367, 87, 367, 87, 87, 87, 367, 239, 997 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 998 239, 239, 380, 87, 380, 382, 382, 87, 382, 382, 999 382, 87, 382, 253, 253, 87, 253, 392, 87, 392, 1000 87, 87, 87, 392, 394, 87, 394, 87, 87, 697, 1001 394, 396, 696, 396, 694, 692, 690, 396, 273, 598, 1002 1003 273, 398, 685, 398, 684, 682, 680, 398, 275, 678, 1004 275, 86, 676, 674, 86, 672, 86, 86, 86, 86, 1005 86, 199, 199, 199, 199, 199, 199, 199, 199, 199, 1006 199, 199, 199, 199, 468, 468, 468, 468, 468, 468, 1007 468, 468, 468, 468, 468, 468, 468, 469, 670, 469, 1008 87, 87, 87, 469, 471, 87, 471, 87, 87, 87, 1009 471, 473, 87, 473, 87, 87, 87, 473, 348, 617, 1010 348, 475, 615, 475, 613, 611, 609, 475, 350, 607, 1011 350, 478, 502, 478, 605, 605, 594, 478, 354, 593, 1012 354, 480, 591, 480, 483, 483, 589, 480, 356, 587, 1013 1014 356, 482, 585, 482, 583, 581, 579, 482, 358, 87, 1015 358, 484, 87, 484, 87, 87, 87, 484, 365, 87, 1016 365, 486, 87, 486, 87, 514, 512, 486, 367, 510, 1017 367, 491, 508, 491, 506, 491, 504, 491, 380, 490, 1018 380, 487, 380, 485, 380, 382, 382, 361, 382, 382, 1019 382, 361, 382, 503, 483, 503, 481, 479, 476, 503, 1020 505, 474, 505, 472, 470, 87, 505, 507, 87, 507, 1021 87, 400, 399, 507, 392, 397, 392, 509, 395, 509, 1022 393, 270, 265, 509, 394, 264, 394, 511, 389, 511, 1023 389, 252, 379, 511, 396, 379, 396, 513, 240, 513, 1024 1025 374, 368, 366, 513, 398, 364, 398, 86, 360, 359, 1026 86, 357, 86, 86, 86, 86, 86, 468, 468, 468, 1027 468, 468, 468, 468, 468, 468, 468, 468, 468, 468, 1028 578, 355, 578, 351, 349, 205, 578, 469, 201, 469, 1029 580, 87, 580, 277, 276, 274, 580, 471, 270, 471, 1030 582, 265, 582, 268, 265, 263, 582, 473, 262, 473, 1031 584, 261, 584, 240, 232, 85, 584, 475, 85, 475, 1032 586, 87, 586, 205, 203, 85, 586, 478, 122, 478, 1033 588, 117, 588, 87, 887, 70, 588, 480, 70, 480, 1034 482, 887, 482, 887, 887, 887, 482, 590, 887, 590, 1035 1036 887, 887, 887, 590, 484, 887, 484, 592, 887, 592, 1037 887, 887, 887, 592, 486, 887, 486, 491, 887, 491, 1038 887, 491, 887, 491, 382, 887, 382, 887, 887, 887, 1039 382, 606, 887, 606, 887, 887, 887, 606, 503, 887, 1040 503, 608, 887, 608, 887, 887, 887, 608, 505, 887, 1041 505, 610, 887, 610, 887, 887, 887, 610, 507, 887, 1042 507, 612, 887, 612, 887, 887, 887, 612, 509, 887, 1043 509, 614, 887, 614, 887, 887, 887, 614, 511, 887, 1044 511, 616, 887, 616, 887, 887, 887, 616, 513, 887, 1045 513, 86, 887, 887, 86, 887, 86, 86, 86, 86, 1046 1047 86, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1048 669, 669, 669, 669, 671, 887, 671, 887, 887, 887, 1049 671, 578, 887, 578, 673, 887, 673, 887, 887, 887, 1050 673, 580, 887, 580, 675, 887, 675, 887, 887, 887, 1051 675, 582, 887, 582, 677, 887, 677, 887, 887, 887, 1052 677, 584, 887, 584, 679, 887, 679, 887, 887, 887, 1053 679, 586, 887, 586, 681, 887, 681, 887, 887, 887, 1054 681, 588, 887, 588, 683, 887, 683, 887, 887, 887, 1055 683, 590, 887, 590, 86, 887, 86, 887, 887, 887, 1056 86, 592, 887, 592, 491, 887, 491, 887, 887, 887, 1057 1058 491, 691, 887, 691, 887, 887, 887, 691, 606, 887, 1059 606, 693, 887, 693, 887, 887, 887, 693, 608, 887, 1060 608, 695, 887, 695, 887, 887, 887, 695, 610, 887, 1061 610, 140, 887, 140, 887, 887, 887, 140, 612, 887, 1062 612, 698, 887, 698, 614, 887, 614, 86, 887, 887, 1063 86, 887, 86, 86, 86, 86, 86, 616, 887, 616, 1064 669, 669, 669, 669, 669, 669, 669, 669, 669, 669, 1065 669, 669, 669, 737, 887, 737, 887, 887, 887, 737, 1066 671, 887, 671, 204, 887, 204, 887, 887, 887, 204, 1067 673, 887, 673, 740, 887, 740, 675, 887, 675, 204, 1068 1069 887, 887, 204, 887, 204, 204, 204, 204, 204, 677, 1070 887, 677, 741, 887, 741, 679, 887, 679, 681, 887, 1071 681, 742, 887, 742, 683, 887, 683, 86, 887, 86, 1072 744, 887, 744, 887, 887, 887, 744, 691, 887, 691, 1073 269, 887, 269, 887, 887, 887, 269, 693, 887, 693, 1074 747, 887, 747, 695, 887, 695, 140, 887, 140, 748, 1075 887, 748, 887, 887, 887, 748, 86, 887, 887, 86, 1076 887, 86, 86, 86, 86, 86, 781, 887, 781, 737, 1077 887, 737, 204, 887, 204, 782, 887, 782, 887, 887, 1078 887, 782, 784, 887, 784, 887, 887, 887, 784, 786, 1079 1080 887, 786, 887, 887, 887, 786, 788, 887, 788, 789, 1081 887, 789, 887, 887, 887, 789, 791, 887, 791, 887, 1082 887, 887, 791, 812, 887, 812, 887, 887, 887, 812, 1083 814, 887, 814, 887, 887, 887, 814, 816, 887, 816, 1084 887, 887, 887, 816, 818, 887, 818, 887, 887, 887, 1085 818, 820, 887, 820, 887, 887, 887, 820, 822, 887, 1086 822, 887, 887, 887, 822, 616, 887, 616, 887, 887, 1087 887, 616, 841, 887, 841, 887, 887, 887, 841, 677, 1088 887, 677, 887, 887, 887, 677, 681, 887, 681, 887, 1089 887, 887, 681, 86, 887, 86, 887, 887, 887, 86, 1090 1091 846, 887, 846, 887, 887, 887, 846, 140, 887, 140, 1092 887, 887, 887, 140, 204, 887, 204, 887, 887, 887, 1093 204, 11, 887, 887, 887, 887, 887, 887, 887, 887, 1094 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1095 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1096 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1097 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1098 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1099 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1100 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1101 1102 887, 887, 887, 887, 887, 887, 887 1093 1103 } ; 1094 1104 1095 static yyconst flex_int16_t yy_chk[2 867] =1105 static yyconst flex_int16_t yy_chk[2908] = 1096 1106 { 0, 1097 1107 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 1103 1113 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1104 1114 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1105 1, 1, 1, 1, 2, 16, 24, 16, 24, 2,1106 19, 19, 2, 5, 5, 5, 5, 5, 5, 5,1115 1, 1, 1, 1, 1, 2, 16, 24, 16, 24, 1116 2, 19, 19, 2, 5, 5, 5, 5, 5, 5, 1107 1117 1108 1118 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, … … 1113 1123 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1114 1124 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1115 5, 5, 5, 5, 5, 5, 5, 7, 8, 9, 1116 10, 37, 37, 20, 39, 9, 10, 874, 7, 8, 1117 13, 13, 13, 13, 13, 13, 15, 15, 15, 15, 1118 1119 15, 15, 20, 25, 39, 42, 53, 28, 27, 28, 1120 28, 28, 28, 28, 28, 108, 114, 25, 29, 25, 1121 27, 27, 27, 29, 53, 35, 7, 8, 9, 10, 1122 40, 42, 48, 29, 30, 40, 30, 30, 30, 30, 1123 30, 30, 35, 61, 35, 35, 44, 869, 44, 108, 1124 114, 868, 48, 30, 63, 61, 30, 56, 47, 45, 1125 45, 45, 30, 30, 45, 45, 56, 45, 30, 55, 1126 45, 45, 49, 40, 30, 45, 40, 49, 45, 47, 1127 30, 47, 72, 125, 49, 125, 51, 55, 30, 86, 1128 49, 30, 31, 55, 31, 31, 31, 31, 31, 31, 1129 1130 50, 51, 866, 51, 63, 153, 54, 58, 72, 50, 1131 60, 31, 51, 50, 31, 86, 54, 57, 50, 58, 1132 31, 153, 50, 54, 141, 156, 31, 58, 60, 57, 1133 57, 59, 31, 126, 58, 126, 59, 156, 31, 57, 1134 52, 865, 57, 67, 67, 52, 31, 38, 67, 59, 1135 141, 38, 38, 52, 38, 52, 38, 38, 52, 38, 1136 107, 38, 52, 113, 67, 67, 67, 67, 67, 67, 1137 38, 38, 38, 128, 59, 128, 152, 59, 66, 66, 1138 66, 66, 66, 66, 107, 152, 66, 113, 863, 862, 1139 38, 59, 165, 38, 79, 79, 79, 79, 79, 79, 1140 1141 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 1142 82, 82, 131, 165, 131, 103, 103, 103, 103, 106, 1143 38, 38, 76, 76, 856, 106, 112, 76, 168, 76, 1144 110, 133, 112, 133, 76, 102, 102, 102, 102, 102, 1145 102, 130, 103, 76, 76, 76, 76, 103, 110, 168, 1146 109, 106, 129, 130, 76, 130, 110, 104, 112, 104, 1147 104, 104, 104, 104, 104, 149, 129, 102, 129, 76, 1148 103, 136, 76, 136, 158, 115, 104, 76, 76, 109, 1149 149, 76, 76, 155, 109, 132, 132, 149, 132, 76, 1150 158, 104, 76, 115, 76, 76, 76, 104, 76, 84, 1151 1152 138, 115, 138, 84, 84, 155, 166, 109, 84, 84, 1153 105, 84, 105, 84, 150, 105, 105, 105, 105, 105, 1154 105, 151, 84, 84, 84, 134, 134, 134, 144, 166, 1155 154, 157, 150, 144, 159, 167, 157, 157, 157, 151, 1156 157, 157, 84, 161, 157, 84, 157, 105, 154, 160, 1157 163, 157, 157, 157, 162, 157, 159, 855, 160, 162, 1158 164, 169, 167, 170, 161, 161, 169, 163, 171, 172, 1159 164, 144, 162, 84, 98, 98, 98, 98, 98, 98, 1160 173, 174, 175, 171, 169, 170, 172, 179, 176, 185, 1161 98, 98, 178, 98, 98, 180, 189, 182, 173, 187, 1162 1163 180, 174, 185, 186, 179, 188, 98, 178, 181, 175, 1164 176, 98, 98, 98, 178, 182, 98, 183, 98, 181, 1165 184, 191, 190, 186, 188, 184, 187, 528, 183, 181, 1166 181, 192, 207, 207, 191, 190, 191, 207, 232, 189, 1167 184, 203, 189, 190, 192, 183, 195, 195, 195, 195, 1168 195, 195, 196, 196, 195, 528, 854, 196, 198, 198, 1169 216, 232, 216, 198, 200, 200, 217, 203, 217, 200, 1170 218, 200, 218, 196, 196, 196, 196, 196, 196, 198, 1171 198, 198, 198, 198, 198, 200, 200, 200, 200, 200, 1172 200, 210, 210, 210, 210, 219, 220, 221, 282, 221, 1173 1174 222, 222, 223, 222, 223, 224, 224, 224, 220, 219, 1175 220, 219, 226, 227, 226, 227, 234, 235, 282, 233, 1176 234, 233, 284, 210, 233, 233, 233, 233, 233, 233, 1177 241, 239, 239, 277, 239, 239, 264, 234, 264, 234, 1178 235, 265, 284, 265, 234, 242, 242, 242, 242, 242, 1179 242, 277, 239, 239, 239, 246, 233, 239, 278, 239, 1180 276, 280, 242, 279, 241, 243, 243, 243, 243, 243, 1181 243, 254, 268, 276, 853, 281, 278, 242, 280, 279, 1182 281, 246, 288, 242, 244, 244, 244, 244, 244, 244, 1183 253, 253, 253, 253, 253, 253, 251, 254, 268, 287, 1184 1185 244, 283, 286, 244, 244, 245, 283, 245, 288, 295, 1186 245, 245, 245, 245, 245, 245, 244, 287, 251, 849, 1187 251, 244, 253, 244, 251, 286, 244, 295, 244, 289, 1188 251, 258, 258, 258, 258, 258, 258, 285, 290, 292, 1189 291, 294, 251, 293, 289, 291, 251, 297, 292, 301, 1190 251, 299, 285, 303, 290, 290, 293, 298, 285, 285, 1191 299, 302, 298, 258, 300, 297, 307, 304, 294, 301, 1192 306, 300, 304, 305, 303, 303, 306, 308, 305, 302, 1193 310, 309, 311, 312, 313, 307, 308, 309, 314, 313, 1194 315, 311, 316, 314, 318, 315, 310, 317, 312, 320, 1195 1196 322, 321, 323, 324, 326, 325, 328, 318, 327, 329, 1197 320, 316, 315, 322, 330, 317, 321, 327, 333, 331, 1198 334, 326, 335, 337, 323, 325, 324, 333, 328, 336, 1199 338, 337, 329, 339, 381, 338, 330, 331, 340, 340, 1200 335, 341, 336, 340, 358, 340, 358, 341, 339, 348, 1201 348, 348, 348, 349, 349, 349, 349, 359, 381, 359, 1202 397, 846, 402, 334, 366, 366, 366, 366, 366, 366, 1203 368, 397, 368, 402, 404, 368, 368, 368, 368, 368, 1204 368, 348, 367, 367, 367, 367, 367, 367, 370, 370, 1205 370, 370, 370, 370, 400, 398, 404, 435, 367, 376, 1206 1207 843, 367, 367, 371, 371, 371, 371, 371, 371, 376, 1208 379, 398, 377, 400, 367, 378, 379, 435, 383, 367, 1209 370, 367, 377, 412, 367, 376, 367, 372, 372, 372, 1210 372, 372, 372, 399, 382, 371, 383, 378, 377, 378, 1211 415, 412, 379, 378, 383, 380, 415, 380, 399, 378, 1212 380, 380, 380, 380, 380, 380, 382, 401, 382, 372, 1213 407, 378, 382, 403, 405, 378, 401, 408, 382, 378, 1214 406, 411, 403, 405, 409, 410, 407, 416, 418, 414, 1215 382, 413, 380, 406, 382, 417, 413, 409, 382, 408, 1216 419, 410, 410, 411, 414, 421, 417, 418, 416, 423, 1217 1218 425, 414, 426, 427, 428, 419, 431, 429, 430, 421, 1219 433, 423, 427, 429, 436, 431, 427, 437, 438, 439, 1220 441, 425, 440, 430, 426, 433, 443, 428, 445, 441, 1221 447, 446, 437, 448, 439, 449, 436, 450, 451, 455, 1222 438, 452, 440, 443, 457, 633, 450, 460, 453, 458, 1223 447, 445, 446, 448, 452, 453, 451, 449, 454, 456, 1224 458, 457, 461, 633, 455, 454, 462, 456, 515, 460, 1225 488, 461, 462, 471, 471, 471, 471, 456, 482, 482, 1226 482, 482, 482, 482, 484, 484, 484, 484, 484, 484, 1227 515, 513, 485, 487, 482, 489, 488, 482, 482, 486, 1228 1229 510, 486, 485, 487, 486, 486, 486, 486, 486, 486, 1230 482, 513, 509, 510, 520, 482, 484, 482, 485, 487, 1231 482, 489, 482, 491, 491, 491, 491, 491, 491, 509, 1232 512, 514, 519, 516, 520, 519, 486, 492, 492, 492, 1233 492, 492, 492, 517, 514, 512, 516, 521, 517, 525, 1234 518, 522, 523, 492, 525, 842, 492, 492, 493, 841, 1235 493, 518, 521, 493, 493, 493, 493, 493, 493, 492, 1236 522, 524, 526, 523, 492, 527, 492, 529, 530, 492, 1237 524, 492, 531, 526, 532, 533, 529, 536, 527, 535, 1238 533, 538, 539, 532, 542, 535, 536, 540, 541, 531, 1239 1240 530, 544, 545, 542, 546, 547, 549, 554, 556, 539, 1241 544, 561, 540, 541, 555, 552, 546, 538, 550, 545, 1242 547, 549, 553, 550, 552, 556, 558, 555, 559, 554, 1243 560, 553, 562, 561, 558, 563, 564, 560, 559, 565, 1244 567, 563, 568, 613, 562, 564, 612, 617, 594, 565, 1245 596, 698, 613, 612, 617, 568, 698, 567, 587, 587, 1246 587, 587, 587, 587, 588, 588, 588, 588, 588, 588, 1247 590, 594, 590, 596, 614, 590, 590, 590, 590, 590, 1248 590, 593, 593, 593, 593, 593, 593, 614, 615, 616, 1249 587, 589, 589, 589, 589, 589, 589, 595, 611, 622, 1250 1251 618, 595, 619, 611, 621, 615, 620, 589, 618, 620, 1252 589, 589, 616, 593, 623, 624, 611, 621, 595, 619, 1253 595, 622, 625, 589, 626, 595, 628, 629, 589, 623, 1254 589, 627, 630, 589, 627, 589, 631, 624, 634, 625, 1255 632, 635, 637, 628, 638, 644, 626, 630, 639, 632, 1256 635, 645, 640, 650, 629, 647, 631, 696, 693, 651, 1257 634, 640, 650, 659, 637, 644, 651, 638, 658, 662, 1258 639, 661, 647, 659, 697, 840, 839, 658, 645, 693, 1259 661, 697, 699, 696, 662, 680, 680, 680, 680, 680, 1260 680, 684, 684, 684, 684, 684, 684, 694, 702, 705, 1261 1262 700, 680, 699, 700, 680, 680, 701, 694, 704, 701, 1263 706, 708, 705, 709, 704, 707, 702, 680, 707, 706, 1264 712, 711, 680, 684, 680, 710, 714, 680, 710, 680, 1265 711, 713, 708, 718, 713, 715, 716, 717, 720, 714, 1266 723, 709, 726, 715, 727, 712, 716, 720, 728, 730, 1267 717, 731, 752, 751, 718, 753, 749, 730, 751, 754, 1268 731, 750, 726, 723, 755, 753, 727, 752, 756, 728, 1269 738, 738, 738, 738, 738, 738, 749, 757, 750, 758, 1270 757, 755, 754, 759, 761, 763, 764, 761, 763, 767, 1271 768, 773, 758, 764, 756, 765, 766, 788, 765, 766, 1272 1273 790, 791, 738, 792, 767, 793, 792, 797, 794, 795, 1274 759, 794, 795, 768, 773, 798, 801, 799, 805, 791, 1275 799, 790, 821, 802, 788, 797, 802, 793, 803, 806, 1276 804, 803, 824, 823, 805, 822, 823, 825, 801, 804, 1277 798, 824, 822, 821, 826, 806, 827, 826, 830, 833, 1278 834, 830, 833, 835, 847, 825, 844, 847, 848, 834, 1279 857, 845, 835, 827, 850, 844, 845, 850, 848, 851, 1280 852, 858, 851, 852, 859, 860, 861, 859, 864, 861, 1281 857, 867, 870, 871, 873, 860, 858, 838, 872, 837, 1282 836, 870, 832, 831, 873, 829, 828, 820, 819, 818, 1283 1284 864, 817, 867, 816, 815, 871, 872, 876, 876, 876, 1285 876, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1286 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, 1287 877, 877, 877, 878, 878, 878, 878, 878, 878, 878, 1288 878, 878, 878, 878, 878, 878, 879, 814, 813, 879, 1289 812, 879, 879, 879, 879, 879, 880, 811, 810, 809, 1290 880, 880, 880, 880, 880, 880, 881, 881, 881, 881, 1291 881, 881, 881, 881, 881, 881, 881, 881, 881, 882, 1292 808, 807, 882, 800, 882, 882, 882, 882, 882, 883, 1293 796, 883, 883, 789, 883, 883, 883, 883, 883, 883, 1294 1295 787, 883, 884, 786, 785, 884, 884, 884, 884, 884, 1296 884, 884, 884, 784, 884, 885, 885, 885, 885, 885, 1297 885, 885, 885, 885, 885, 885, 885, 885, 886, 886, 1298 783, 886, 782, 781, 780, 886, 887, 779, 778, 887, 1299 777, 887, 887, 887, 887, 887, 888, 776, 888, 775, 1300 774, 772, 888, 889, 771, 889, 770, 769, 762, 889, 1301 890, 760, 890, 748, 747, 746, 890, 891, 745, 891, 1302 744, 743, 742, 891, 892, 741, 892, 740, 737, 736, 1303 892, 893, 735, 893, 729, 725, 724, 893, 894, 722, 1304 894, 721, 719, 703, 894, 895, 695, 895, 692, 687, 1305 1306 685, 895, 896, 681, 896, 671, 667, 665, 896, 897, 1307 897, 897, 897, 897, 897, 897, 897, 897, 897, 897, 1308 897, 897, 898, 663, 898, 899, 899, 660, 899, 899, 1309 899, 657, 899, 900, 900, 656, 900, 901, 655, 901, 1310 654, 653, 652, 901, 902, 649, 902, 648, 646, 643, 1311 902, 903, 642, 903, 641, 636, 609, 903, 904, 605, 1312 904, 905, 603, 905, 601, 599, 597, 905, 906, 591, 1313 906, 907, 585, 583, 907, 581, 907, 907, 907, 907, 1314 907, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1315 908, 908, 908, 908, 909, 909, 909, 909, 909, 909, 1316 1317 909, 909, 909, 909, 909, 909, 909, 910, 579, 910, 1318 577, 575, 573, 910, 911, 571, 911, 570, 569, 566, 1319 911, 912, 557, 912, 551, 548, 543, 912, 913, 537, 1320 913, 914, 534, 914, 511, 507, 505, 914, 915, 503, 1321 915, 916, 501, 916, 499, 497, 496, 916, 917, 495, 1322 917, 918, 494, 918, 483, 480, 478, 918, 919, 477, 1323 919, 920, 476, 920, 474, 472, 469, 920, 921, 467, 1324 921, 922, 465, 922, 463, 459, 444, 922, 923, 442, 1325 923, 924, 434, 924, 432, 424, 422, 924, 925, 420, 1326 925, 926, 394, 926, 392, 926, 390, 926, 927, 388, 1327 1328 927, 387, 927, 386, 927, 928, 928, 373, 928, 928, 1329 928, 363, 928, 929, 361, 929, 360, 356, 354, 929, 1330 930, 352, 930, 350, 346, 344, 930, 931, 343, 931, 1331 342, 332, 319, 931, 932, 296, 932, 933, 275, 933, 1332 273, 271, 270, 933, 934, 269, 934, 935, 267, 935, 1333 266, 261, 257, 935, 936, 256, 936, 937, 252, 937, 1334 249, 248, 237, 937, 938, 236, 938, 939, 229, 228, 1335 939, 225, 939, 939, 939, 939, 939, 940, 940, 940, 1336 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 1337 941, 215, 941, 213, 212, 211, 941, 942, 205, 942, 1338 1339 943, 204, 943, 202, 197, 177, 943, 944, 148, 944, 1340 945, 146, 945, 145, 139, 137, 945, 946, 135, 946, 1341 947, 127, 947, 124, 123, 119, 947, 948, 100, 948, 1342 949, 97, 949, 94, 92, 85, 949, 950, 71, 950, 1343 951, 69, 951, 65, 36, 33, 951, 952, 18, 952, 1344 953, 11, 953, 4, 3, 0, 953, 954, 0, 954, 1345 0, 0, 0, 954, 955, 0, 955, 956, 0, 956, 1346 0, 0, 0, 956, 957, 0, 957, 958, 0, 958, 1347 0, 958, 0, 958, 959, 0, 959, 0, 0, 0, 1348 959, 960, 0, 960, 0, 0, 0, 960, 961, 0, 1349 1350 961, 962, 0, 962, 0, 0, 0, 962, 963, 0, 1351 963, 964, 0, 964, 0, 0, 0, 964, 965, 0, 1352 965, 966, 0, 966, 0, 0, 0, 966, 967, 0, 1353 967, 968, 0, 968, 0, 0, 0, 968, 969, 0, 1354 969, 970, 0, 970, 0, 0, 0, 970, 971, 0, 1355 971, 972, 0, 0, 972, 0, 972, 972, 972, 972, 1356 972, 973, 973, 973, 973, 973, 973, 973, 973, 973, 1357 973, 973, 973, 973, 974, 0, 974, 0, 0, 0, 1358 974, 975, 0, 975, 976, 0, 976, 0, 0, 0, 1359 976, 977, 0, 977, 978, 0, 978, 0, 0, 0, 1360 1361 978, 979, 0, 979, 980, 0, 980, 0, 0, 0, 1362 980, 981, 0, 981, 982, 0, 982, 0, 0, 0, 1363 982, 983, 0, 983, 984, 0, 984, 0, 0, 0, 1364 984, 985, 0, 985, 986, 0, 986, 0, 0, 0, 1125 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 1126 8, 9, 10, 37, 37, 20, 39, 9, 10, 886, 1127 7, 8, 13, 13, 13, 13, 13, 13, 15, 15, 1128 1129 15, 15, 15, 15, 20, 25, 48, 39, 42, 28, 1130 27, 28, 28, 28, 28, 28, 28, 109, 115, 25, 1131 29, 25, 27, 27, 27, 29, 48, 35, 40, 7, 1132 8, 9, 10, 40, 42, 29, 30, 47, 30, 30, 1133 30, 30, 30, 30, 35, 57, 35, 35, 44, 126, 1134 44, 126, 109, 115, 57, 30, 64, 56, 47, 30, 1135 47, 45, 45, 45, 49, 30, 30, 45, 45, 49, 1136 45, 30, 40, 45, 45, 40, 49, 30, 45, 56, 1137 62, 45, 49, 30, 73, 885, 127, 53, 127, 51, 1138 61, 30, 62, 55, 30, 31, 108, 31, 31, 31, 1139 1140 31, 31, 31, 50, 51, 53, 51, 64, 61, 54, 1141 73, 55, 50, 87, 31, 51, 50, 55, 31, 54, 1142 108, 50, 52, 114, 31, 50, 54, 52, 175, 129, 1143 31, 129, 107, 154, 151, 52, 31, 52, 107, 87, 1144 52, 60, 31, 132, 52, 132, 60, 114, 175, 154, 1145 31, 38, 151, 385, 111, 38, 38, 58, 38, 60, 1146 38, 38, 113, 38, 107, 38, 59, 130, 113, 58, 1147 58, 116, 111, 164, 38, 38, 38, 385, 59, 58, 1148 111, 130, 58, 130, 142, 60, 59, 131, 60, 116, 1149 164, 68, 68, 59, 113, 38, 68, 116, 38, 131, 1150 1151 110, 131, 60, 67, 67, 67, 67, 67, 67, 877, 1152 142, 67, 68, 68, 68, 68, 68, 68, 80, 80, 1153 80, 80, 80, 80, 153, 38, 38, 77, 77, 134, 1154 110, 134, 77, 153, 77, 110, 135, 135, 135, 77, 1155 82, 82, 82, 82, 82, 82, 876, 243, 77, 77, 1156 77, 77, 83, 83, 83, 83, 83, 83, 110, 77, 1157 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, 1158 133, 133, 137, 133, 137, 77, 145, 139, 77, 139, 1159 157, 145, 243, 77, 77, 152, 156, 77, 77, 155, 1160 166, 150, 157, 103, 104, 77, 159, 168, 77, 104, 1161 1162 77, 77, 77, 152, 77, 85, 150, 155, 156, 85, 1163 85, 166, 159, 150, 85, 85, 161, 85, 160, 85, 1164 145, 162, 104, 167, 168, 161, 169, 163, 85, 85, 1165 85, 105, 163, 105, 105, 105, 105, 105, 105, 873, 1166 160, 171, 162, 162, 165, 163, 167, 169, 173, 85, 1167 105, 106, 85, 106, 165, 172, 106, 106, 106, 106, 1168 106, 106, 180, 171, 170, 173, 105, 176, 177, 170, 1169 172, 181, 105, 174, 184, 187, 181, 182, 179, 180, 1170 85, 99, 99, 99, 99, 99, 99, 170, 187, 106, 1171 177, 174, 184, 179, 176, 183, 190, 99, 99, 99, 1172 1173 179, 99, 99, 189, 182, 186, 183, 191, 189, 218, 1174 186, 218, 185, 188, 99, 190, 183, 183, 284, 99, 1175 99, 99, 158, 185, 99, 186, 99, 158, 158, 158, 1176 189, 158, 158, 188, 192, 158, 194, 158, 284, 219, 1177 185, 219, 158, 158, 158, 193, 158, 192, 220, 194, 1178 220, 191, 198, 198, 191, 192, 205, 198, 193, 872, 1179 193, 197, 197, 197, 197, 197, 197, 200, 200, 197, 1180 248, 221, 200, 198, 198, 198, 198, 198, 198, 202, 1181 202, 223, 205, 223, 202, 221, 202, 221, 200, 200, 1182 200, 200, 200, 200, 209, 209, 248, 338, 222, 209, 1183 1184 202, 202, 202, 202, 202, 202, 212, 212, 212, 212, 1185 222, 309, 222, 224, 224, 225, 224, 225, 226, 226, 1186 226, 228, 229, 228, 229, 234, 234, 235, 236, 235, 1187 309, 279, 235, 235, 235, 235, 235, 235, 237, 212, 1188 237, 338, 266, 237, 266, 267, 278, 267, 234, 279, 1189 283, 236, 241, 241, 241, 283, 241, 241, 256, 278, 1190 237, 281, 237, 282, 280, 235, 270, 237, 244, 244, 1191 244, 244, 244, 244, 241, 241, 241, 281, 285, 241, 1192 282, 241, 280, 285, 256, 244, 245, 245, 245, 245, 1193 245, 245, 270, 288, 293, 286, 294, 300, 306, 293, 1194 1195 308, 244, 300, 306, 870, 294, 308, 244, 246, 246, 1196 246, 246, 246, 246, 253, 286, 288, 255, 255, 255, 1197 255, 255, 255, 287, 246, 247, 246, 247, 246, 246, 1198 247, 247, 247, 247, 247, 247, 290, 253, 287, 253, 1199 869, 246, 289, 253, 287, 287, 246, 292, 246, 253, 1200 255, 246, 291, 246, 260, 260, 260, 260, 260, 260, 1201 289, 253, 290, 292, 292, 253, 295, 291, 296, 253, 1202 297, 299, 301, 302, 303, 304, 305, 307, 311, 295, 1203 302, 301, 307, 310, 311, 312, 319, 260, 297, 299, 1204 313, 314, 310, 304, 303, 296, 318, 305, 305, 313, 1205 1206 315, 312, 316, 317, 319, 315, 314, 316, 317, 320, 1207 322, 323, 324, 326, 325, 318, 327, 328, 331, 329, 1208 330, 322, 320, 332, 334, 317, 323, 325, 333, 330, 1209 335, 324, 337, 339, 340, 326, 329, 328, 401, 327, 1210 331, 337, 334, 335, 341, 343, 332, 340, 342, 401, 1211 333, 339, 341, 342, 344, 344, 345, 460, 862, 344, 1212 343, 344, 345, 352, 352, 352, 352, 353, 353, 353, 1213 353, 362, 363, 362, 363, 370, 370, 370, 370, 370, 1214 370, 372, 460, 372, 380, 381, 372, 372, 372, 372, 1215 372, 372, 861, 402, 380, 381, 352, 371, 371, 371, 1216 1217 371, 371, 371, 374, 374, 374, 374, 374, 374, 402, 1218 380, 381, 403, 371, 404, 371, 860, 371, 371, 375, 1219 375, 375, 375, 375, 375, 383, 382, 403, 406, 405, 1220 371, 383, 407, 404, 408, 371, 374, 371, 405, 406, 1221 371, 407, 371, 376, 376, 376, 376, 376, 376, 382, 1222 412, 382, 375, 387, 411, 382, 408, 383, 384, 386, 1223 384, 382, 410, 384, 384, 384, 384, 384, 384, 409, 1224 411, 387, 412, 382, 413, 410, 376, 382, 409, 387, 1225 415, 382, 386, 414, 386, 416, 417, 413, 386, 418, 1226 421, 417, 419, 422, 386, 420, 384, 427, 419, 414, 1227 1228 414, 421, 415, 416, 418, 423, 386, 425, 429, 427, 1229 386, 418, 422, 430, 386, 431, 420, 432, 433, 434, 1230 423, 425, 435, 437, 433, 439, 440, 441, 431, 429, 1231 442, 435, 443, 444, 434, 430, 449, 445, 437, 447, 1232 432, 450, 441, 451, 454, 439, 445, 443, 440, 452, 1233 450, 453, 442, 444, 455, 456, 447, 457, 458, 449, 1234 459, 461, 463, 455, 451, 458, 454, 459, 462, 452, 1235 457, 453, 466, 456, 464, 467, 462, 525, 859, 463, 1236 525, 468, 491, 461, 467, 464, 462, 468, 477, 477, 1237 477, 477, 491, 515, 466, 488, 488, 488, 488, 488, 1238 1239 488, 490, 490, 490, 490, 490, 490, 519, 491, 521, 1240 515, 488, 492, 488, 492, 488, 488, 492, 492, 492, 1241 492, 492, 492, 494, 516, 495, 493, 519, 488, 855, 1242 851, 521, 518, 488, 490, 488, 493, 516, 488, 529, 1243 488, 497, 497, 497, 497, 497, 497, 518, 520, 494, 1244 492, 495, 493, 498, 498, 498, 498, 498, 498, 523, 1245 529, 520, 526, 848, 523, 847, 528, 846, 522, 498, 1246 499, 498, 499, 498, 498, 499, 499, 499, 499, 499, 1247 499, 522, 526, 524, 527, 528, 498, 531, 530, 532, 1248 533, 498, 531, 498, 524, 534, 498, 530, 498, 527, 1249 1250 532, 535, 537, 533, 536, 538, 539, 541, 542, 547, 1251 535, 539, 544, 541, 538, 545, 546, 542, 547, 537, 1252 550, 551, 845, 549, 534, 552, 536, 554, 560, 544, 1253 545, 546, 549, 551, 555, 557, 558, 550, 561, 555, 1254 552, 562, 554, 565, 557, 558, 564, 567, 566, 568, 1255 560, 561, 575, 565, 564, 566, 569, 571, 562, 574, 1256 572, 568, 569, 620, 619, 575, 571, 601, 601, 567, 1257 572, 619, 620, 844, 843, 622, 574, 594, 594, 594, 1258 594, 594, 594, 595, 595, 595, 595, 595, 595, 597, 1259 601, 597, 622, 621, 597, 597, 597, 597, 597, 597, 1260 1261 600, 600, 600, 600, 600, 600, 621, 602, 626, 842, 1262 594, 596, 596, 596, 596, 596, 596, 603, 618, 603, 1263 623, 624, 603, 618, 628, 626, 625, 596, 624, 596, 1264 602, 596, 596, 600, 625, 627, 618, 628, 627, 603, 1265 629, 603, 630, 623, 596, 631, 603, 632, 633, 596, 1266 634, 596, 635, 634, 596, 636, 596, 630, 637, 638, 1267 640, 644, 629, 639, 632, 641, 642, 631, 645, 635, 1268 633, 646, 639, 637, 650, 642, 651, 656, 640, 638, 1269 646, 653, 657, 636, 644, 665, 656, 641, 664, 657, 1270 645, 667, 668, 841, 650, 665, 700, 664, 653, 699, 1271 1272 667, 702, 705, 651, 714, 837, 700, 668, 686, 686, 1273 686, 686, 686, 686, 690, 690, 690, 690, 690, 690, 1274 699, 708, 705, 703, 686, 714, 686, 702, 686, 686, 1275 703, 704, 706, 715, 707, 706, 704, 707, 710, 708, 1276 712, 686, 711, 717, 710, 718, 686, 690, 686, 712, 1277 720, 686, 717, 686, 713, 711, 716, 713, 719, 716, 1278 721, 719, 715, 720, 722, 723, 724, 725, 721, 728, 1279 731, 718, 732, 735, 722, 733, 725, 736, 723, 756, 1280 757, 735, 836, 754, 756, 759, 736, 724, 755, 760, 1281 731, 761, 728, 764, 732, 757, 733, 743, 743, 743, 1282 1283 743, 743, 743, 754, 758, 755, 760, 762, 759, 763, 1284 762, 769, 766, 768, 758, 766, 768, 761, 769, 772, 1285 770, 764, 763, 770, 771, 773, 778, 771, 793, 795, 1286 743, 798, 797, 796, 772, 797, 799, 800, 802, 799, 1287 800, 803, 804, 806, 807, 804, 810, 807, 773, 778, 1288 795, 796, 809, 798, 808, 793, 802, 808, 811, 826, 1289 830, 809, 810, 827, 829, 806, 828, 803, 831, 828, 1290 827, 831, 832, 829, 811, 834, 835, 839, 830, 835, 1291 826, 840, 838, 849, 830, 838, 839, 853, 850, 832, 1292 840, 852, 849, 850, 852, 854, 856, 853, 857, 856, 1293 1294 854, 857, 858, 863, 864, 858, 865, 866, 867, 865, 1295 868, 867, 871, 868, 874, 875, 878, 866, 879, 864, 1296 880, 882, 881, 863, 883, 878, 884, 833, 825, 824, 1297 875, 879, 823, 822, 871, 874, 884, 821, 820, 882, 1298 819, 818, 880, 881, 817, 816, 883, 888, 888, 888, 1299 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 1300 889, 889, 889, 889, 889, 889, 889, 889, 889, 889, 1301 889, 889, 889, 890, 890, 890, 890, 890, 890, 890, 1302 890, 890, 890, 890, 890, 890, 891, 815, 814, 891, 1303 813, 891, 891, 891, 891, 891, 892, 812, 805, 801, 1304 1305 892, 892, 892, 892, 892, 892, 893, 893, 893, 893, 1306 893, 893, 893, 893, 893, 893, 893, 893, 893, 894, 1307 794, 792, 894, 791, 894, 894, 894, 894, 894, 895, 1308 790, 895, 895, 789, 895, 895, 895, 895, 895, 895, 1309 788, 895, 896, 787, 786, 896, 896, 896, 896, 896, 1310 896, 896, 896, 785, 896, 897, 897, 897, 897, 897, 1311 897, 897, 897, 897, 897, 897, 897, 897, 898, 898, 1312 784, 898, 783, 782, 781, 898, 899, 780, 779, 899, 1313 777, 899, 899, 899, 899, 899, 900, 776, 900, 775, 1314 774, 767, 900, 901, 765, 901, 753, 752, 751, 901, 1315 1316 902, 750, 902, 749, 748, 747, 902, 903, 746, 903, 1317 745, 742, 741, 903, 904, 740, 904, 734, 730, 729, 1318 904, 905, 727, 905, 726, 709, 701, 905, 906, 698, 1319 906, 693, 691, 687, 906, 907, 677, 907, 673, 671, 1320 669, 907, 908, 666, 908, 663, 662, 661, 908, 909, 1321 909, 909, 909, 909, 909, 909, 909, 909, 909, 909, 1322 909, 909, 910, 660, 910, 911, 911, 659, 911, 911, 1323 911, 658, 911, 912, 912, 655, 912, 913, 654, 913, 1324 652, 649, 648, 913, 914, 647, 914, 643, 616, 612, 1325 914, 915, 610, 915, 608, 606, 604, 915, 916, 598, 1326 1327 916, 917, 592, 917, 590, 588, 586, 917, 918, 584, 1328 918, 919, 582, 580, 919, 578, 919, 919, 919, 919, 1329 919, 920, 920, 920, 920, 920, 920, 920, 920, 920, 1330 920, 920, 920, 920, 921, 921, 921, 921, 921, 921, 1331 921, 921, 921, 921, 921, 921, 921, 922, 577, 922, 1332 576, 573, 570, 922, 923, 563, 923, 559, 556, 553, 1333 923, 924, 548, 924, 543, 540, 517, 924, 925, 513, 1334 925, 926, 511, 926, 509, 507, 505, 926, 927, 503, 1335 927, 928, 502, 928, 501, 500, 489, 928, 929, 486, 1336 929, 930, 484, 930, 483, 482, 480, 930, 931, 478, 1337 1338 931, 932, 475, 932, 473, 471, 469, 932, 933, 465, 1339 933, 934, 448, 934, 446, 438, 436, 934, 935, 428, 1340 935, 936, 426, 936, 424, 398, 396, 936, 937, 394, 1341 937, 938, 392, 938, 391, 938, 390, 938, 939, 377, 1342 939, 367, 939, 365, 939, 940, 940, 364, 940, 940, 1343 940, 360, 940, 941, 358, 941, 356, 354, 350, 941, 1344 942, 348, 942, 347, 346, 336, 942, 943, 321, 943, 1345 298, 277, 275, 943, 944, 273, 944, 945, 272, 945, 1346 271, 269, 268, 945, 946, 263, 946, 947, 259, 947, 1347 258, 254, 251, 947, 948, 250, 948, 949, 239, 949, 1348 1349 238, 231, 230, 949, 950, 227, 950, 951, 217, 215, 1350 951, 214, 951, 951, 951, 951, 951, 952, 952, 952, 1351 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, 1352 953, 213, 953, 207, 206, 204, 953, 954, 199, 954, 1353 955, 178, 955, 149, 147, 146, 955, 956, 140, 956, 1354 957, 138, 957, 136, 128, 125, 957, 958, 124, 958, 1355 959, 120, 959, 101, 98, 95, 959, 960, 93, 960, 1356 961, 86, 961, 72, 70, 66, 961, 962, 36, 962, 1357 963, 33, 963, 18, 11, 4, 963, 964, 3, 964, 1358 965, 0, 965, 0, 0, 0, 965, 966, 0, 966, 1359 1360 0, 0, 0, 966, 967, 0, 967, 968, 0, 968, 1361 0, 0, 0, 968, 969, 0, 969, 970, 0, 970, 1362 0, 970, 0, 970, 971, 0, 971, 0, 0, 0, 1363 971, 972, 0, 972, 0, 0, 0, 972, 973, 0, 1364 973, 974, 0, 974, 0, 0, 0, 974, 975, 0, 1365 975, 976, 0, 976, 0, 0, 0, 976, 977, 0, 1366 977, 978, 0, 978, 0, 0, 0, 978, 979, 0, 1367 979, 980, 0, 980, 0, 0, 0, 980, 981, 0, 1368 981, 982, 0, 982, 0, 0, 0, 982, 983, 0, 1369 983, 984, 0, 0, 984, 0, 984, 984, 984, 984, 1370 1371 984, 985, 985, 985, 985, 985, 985, 985, 985, 985, 1372 985, 985, 985, 985, 986, 0, 986, 0, 0, 0, 1365 1373 986, 987, 0, 987, 988, 0, 988, 0, 0, 0, 1366 1374 988, 989, 0, 989, 990, 0, 990, 0, 0, 0, 1367 990, 991, 0, 991, 0, 0, 0, 991, 992, 0, 1368 992, 993, 0, 993, 0, 0, 0, 993, 994, 0, 1369 994, 995, 0, 995, 0, 0, 0, 995, 996, 0, 1370 996, 997, 0, 997, 0, 0, 0, 997, 998, 0, 1371 1372 998, 999, 0, 999, 1000, 0, 1000, 1001, 0, 0, 1373 1001, 0, 1001, 1001, 1001, 1001, 1001, 1002, 0, 1002, 1374 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1375 1003, 1003, 1003, 1004, 0, 1004, 0, 0, 0, 1004, 1376 1005, 0, 1005, 1006, 0, 1006, 0, 0, 0, 1006, 1377 1007, 0, 1007, 1008, 0, 1008, 1009, 0, 1009, 1010, 1378 0, 0, 1010, 0, 1010, 1010, 1010, 1010, 1010, 1011, 1379 0, 1011, 1012, 0, 1012, 1013, 0, 1013, 1014, 0, 1380 1014, 1015, 0, 1015, 1016, 0, 1016, 1017, 0, 1017, 1381 1018, 0, 1018, 0, 0, 0, 1018, 1019, 0, 1019, 1382 1383 1020, 0, 1020, 0, 0, 0, 1020, 1021, 0, 1021, 1384 1022, 0, 1022, 1023, 0, 1023, 1024, 0, 1024, 1025, 1385 0, 1025, 0, 0, 0, 1025, 1026, 0, 0, 1026, 1386 0, 1026, 1026, 1026, 1026, 1026, 1027, 0, 1027, 1028, 1387 0, 1028, 1029, 0, 1029, 1030, 0, 1030, 0, 0, 1388 0, 1030, 1031, 0, 1031, 0, 0, 0, 1031, 1032, 1389 0, 1032, 0, 0, 0, 1032, 1033, 0, 1033, 1034, 1390 0, 1034, 0, 0, 0, 1034, 1035, 0, 1035, 0, 1391 0, 0, 1035, 1036, 0, 1036, 0, 0, 0, 1036, 1392 1037, 0, 1037, 0, 0, 0, 1037, 1038, 0, 1038, 1393 1394 0, 0, 0, 1038, 1039, 0, 1039, 0, 0, 0, 1395 1039, 1040, 0, 1040, 0, 0, 0, 1040, 1041, 0, 1396 1041, 0, 0, 0, 1041, 1042, 0, 1042, 0, 0, 1375 990, 991, 0, 991, 992, 0, 992, 0, 0, 0, 1376 992, 993, 0, 993, 994, 0, 994, 0, 0, 0, 1377 994, 995, 0, 995, 996, 0, 996, 0, 0, 0, 1378 996, 997, 0, 997, 998, 0, 998, 0, 0, 0, 1379 998, 999, 0, 999, 1000, 0, 1000, 0, 0, 0, 1380 1000, 1001, 0, 1001, 1002, 0, 1002, 0, 0, 0, 1381 1382 1002, 1003, 0, 1003, 0, 0, 0, 1003, 1004, 0, 1383 1004, 1005, 0, 1005, 0, 0, 0, 1005, 1006, 0, 1384 1006, 1007, 0, 1007, 0, 0, 0, 1007, 1008, 0, 1385 1008, 1009, 0, 1009, 0, 0, 0, 1009, 1010, 0, 1386 1010, 1011, 0, 1011, 1012, 0, 1012, 1013, 0, 0, 1387 1013, 0, 1013, 1013, 1013, 1013, 1013, 1014, 0, 1014, 1388 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1389 1015, 1015, 1015, 1016, 0, 1016, 0, 0, 0, 1016, 1390 1017, 0, 1017, 1018, 0, 1018, 0, 0, 0, 1018, 1391 1019, 0, 1019, 1020, 0, 1020, 1021, 0, 1021, 1022, 1392 1393 0, 0, 1022, 0, 1022, 1022, 1022, 1022, 1022, 1023, 1394 0, 1023, 1024, 0, 1024, 1025, 0, 1025, 1026, 0, 1395 1026, 1027, 0, 1027, 1028, 0, 1028, 1029, 0, 1029, 1396 1030, 0, 1030, 0, 0, 0, 1030, 1031, 0, 1031, 1397 1032, 0, 1032, 0, 0, 0, 1032, 1033, 0, 1033, 1398 1034, 0, 1034, 1035, 0, 1035, 1036, 0, 1036, 1037, 1399 0, 1037, 0, 0, 0, 1037, 1038, 0, 0, 1038, 1400 0, 1038, 1038, 1038, 1038, 1038, 1039, 0, 1039, 1040, 1401 0, 1040, 1041, 0, 1041, 1042, 0, 1042, 0, 0, 1397 1402 0, 1042, 1043, 0, 1043, 0, 0, 0, 1043, 1044, 1398 0, 1044, 0, 0, 0, 1044, 1045, 0, 1045, 0, 1399 0, 0, 1045, 1046, 0, 1046, 0, 0, 0, 1046, 1400 1047, 0, 1047, 0, 0, 0, 1047, 1048, 0, 1048, 1401 0, 0, 0, 1048, 1049, 0, 1049, 0, 0, 0, 1402 1049, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1403 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1404 1405 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1406 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1407 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1408 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1409 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1410 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, 1411 875, 875, 875, 875, 875, 875 1403 1404 0, 1044, 0, 0, 0, 1044, 1045, 0, 1045, 1046, 1405 0, 1046, 0, 0, 0, 1046, 1047, 0, 1047, 0, 1406 0, 0, 1047, 1048, 0, 1048, 0, 0, 0, 1048, 1407 1049, 0, 1049, 0, 0, 0, 1049, 1050, 0, 1050, 1408 0, 0, 0, 1050, 1051, 0, 1051, 0, 0, 0, 1409 1051, 1052, 0, 1052, 0, 0, 0, 1052, 1053, 0, 1410 1053, 0, 0, 0, 1053, 1054, 0, 1054, 0, 0, 1411 0, 1054, 1055, 0, 1055, 0, 0, 0, 1055, 1056, 1412 0, 1056, 0, 0, 0, 1056, 1057, 0, 1057, 0, 1413 0, 0, 1057, 1058, 0, 1058, 0, 0, 0, 1058, 1414 1415 1059, 0, 1059, 0, 0, 0, 1059, 1060, 0, 1060, 1416 0, 0, 0, 1060, 1061, 0, 1061, 0, 0, 0, 1417 1061, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1418 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1419 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1420 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1421 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1422 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1423 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1424 887, 887, 887, 887, 887, 887, 887, 887, 887, 887, 1425 1426 887, 887, 887, 887, 887, 887, 887 1412 1427 } ; 1413 1428 1414 1429 /* Table of booleans, true if rule could match eol. */ 1415 static yyconst flex_int32_t yy_rule_can_match_eol[18 0] =1430 static yyconst flex_int32_t yy_rule_can_match_eol[181] = 1416 1431 { 0, 1417 1432 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 1420 1435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1421 1436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0,1423 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1438 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1424 1439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1425 1440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1426 };1441 0, }; 1427 1442 1428 1443 static yy_state_type yy_last_accepting_state; … … 1452 1467 * Created On : Sat Sep 22 08:58:10 2001 1453 1468 * Last Modified By : Peter A. Buhr 1454 * Last Modified On : Tue Feb 2 15:06:5420161455 * Update Count : 4 261469 * Last Modified On : Mon Mar 21 23:33:46 2016 1470 * Update Count : 450 1456 1471 */ 1457 1472 #line 20 "lex.ll" … … 1465 1480 1466 1481 #include "lex.h" 1482 #include "parser.h" // YACC generated definitions based on C++ grammar 1467 1483 #include "ParseNode.h" 1468 #include " parser.h" // YACC generated definitions based on C++ grammar1484 #include "TypedefTable.h" 1469 1485 1470 1486 char *yyfilename; … … 1482 1498 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 1483 1499 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword 1484 #define IDENTIFIER_RETURN() RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname) )1500 #define IDENTIFIER_RETURN() RETURN_VAL( typedefTable.isKind( yytext ) ) 1485 1501 #define ATTRIBUTE_RETURN() RETURN_VAL( ATTR_IDENTIFIER ) 1486 1502 … … 1502 1518 // attribute identifier, GCC: $ in identifier 1503 1519 // numeric constants, CFA: '_' in constant 1504 // GCC: D (double), LD (long double) and iI (imaginary) suffixes 1520 // GCC: D (double), DL (long double) and iI (imaginary) suffixes 1521 //floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI])) 1505 1522 // character escape sequence, GCC: \e => esc character 1506 1523 // ' stop highlighting … … 1511 1528 1512 1529 1513 #line 15 14"Parser/lex.cc"1530 #line 1531 "Parser/lex.cc" 1514 1531 1515 1532 #define INITIAL 0 … … 1703 1720 register int yy_act; 1704 1721 1705 #line 13 7"lex.ll"1722 #line 139 "lex.ll" 1706 1723 1707 1724 /* line directives */ 1708 #line 17 09"Parser/lex.cc"1725 #line 1726 "Parser/lex.cc" 1709 1726 1710 1727 if ( !(yy_init) ) … … 1760 1777 { 1761 1778 yy_current_state = (int) yy_def[yy_current_state]; 1762 if ( yy_current_state >= 8 76)1779 if ( yy_current_state >= 888 ) 1763 1780 yy_c = yy_meta[(unsigned int) yy_c]; 1764 1781 } … … 1766 1783 ++yy_cp; 1767 1784 } 1768 while ( yy_base[yy_current_state] != 2 782 );1785 while ( yy_base[yy_current_state] != 2822 ); 1769 1786 1770 1787 yy_find_action: … … 1803 1820 /* rule 1 can match eol */ 1804 1821 YY_RULE_SETUP 1805 #line 1 39"lex.ll"1822 #line 141 "lex.ll" 1806 1823 { 1807 1824 /* " stop highlighting */ … … 1830 1847 /* rule 2 can match eol */ 1831 1848 YY_RULE_SETUP 1832 #line 16 2"lex.ll"1849 #line 164 "lex.ll" 1833 1850 ; 1834 1851 YY_BREAK … … 1836 1853 case 3: 1837 1854 YY_RULE_SETUP 1838 #line 16 5"lex.ll"1855 #line 167 "lex.ll" 1839 1856 { BEGIN COMMENT; } 1840 1857 YY_BREAK … … 1842 1859 /* rule 4 can match eol */ 1843 1860 YY_RULE_SETUP 1844 #line 16 6"lex.ll"1861 #line 168 "lex.ll" 1845 1862 ; 1846 1863 YY_BREAK 1847 1864 case 5: 1848 1865 YY_RULE_SETUP 1849 #line 16 7"lex.ll"1866 #line 169 "lex.ll" 1850 1867 { BEGIN 0; } 1851 1868 YY_BREAK … … 1854 1871 /* rule 6 can match eol */ 1855 1872 YY_RULE_SETUP 1856 #line 17 0"lex.ll"1873 #line 172 "lex.ll" 1857 1874 ; 1858 1875 YY_BREAK … … 1860 1877 case 7: 1861 1878 YY_RULE_SETUP 1862 #line 17 3"lex.ll"1879 #line 175 "lex.ll" 1863 1880 { WHITE_RETURN(' '); } 1864 1881 YY_BREAK 1865 1882 case 8: 1866 1883 YY_RULE_SETUP 1867 #line 17 4"lex.ll"1884 #line 176 "lex.ll" 1868 1885 { WHITE_RETURN(' '); } 1869 1886 YY_BREAK … … 1871 1888 /* rule 9 can match eol */ 1872 1889 YY_RULE_SETUP 1873 #line 17 5"lex.ll"1890 #line 177 "lex.ll" 1874 1891 { NEWLINE_RETURN(); } 1875 1892 YY_BREAK … … 1877 1894 case 10: 1878 1895 YY_RULE_SETUP 1879 #line 1 78"lex.ll"1896 #line 180 "lex.ll" 1880 1897 { KEYWORD_RETURN(ALIGNAS); } // C11 1881 1898 YY_BREAK 1882 1899 case 11: 1883 1900 YY_RULE_SETUP 1884 #line 1 79"lex.ll"1901 #line 181 "lex.ll" 1885 1902 { KEYWORD_RETURN(ALIGNOF); } // C11 1886 1903 YY_BREAK 1887 1904 case 12: 1888 1905 YY_RULE_SETUP 1889 #line 18 0"lex.ll"1906 #line 182 "lex.ll" 1890 1907 { KEYWORD_RETURN(ALIGNOF); } // GCC 1891 1908 YY_BREAK 1892 1909 case 13: 1893 1910 YY_RULE_SETUP 1894 #line 18 1"lex.ll"1911 #line 183 "lex.ll" 1895 1912 { KEYWORD_RETURN(ALIGNOF); } // GCC 1896 1913 YY_BREAK 1897 1914 case 14: 1898 1915 YY_RULE_SETUP 1899 #line 18 2"lex.ll"1916 #line 184 "lex.ll" 1900 1917 { KEYWORD_RETURN(ASM); } 1901 1918 YY_BREAK 1902 1919 case 15: 1903 1920 YY_RULE_SETUP 1904 #line 18 3"lex.ll"1921 #line 185 "lex.ll" 1905 1922 { KEYWORD_RETURN(ASM); } // GCC 1906 1923 YY_BREAK 1907 1924 case 16: 1908 1925 YY_RULE_SETUP 1909 #line 18 4"lex.ll"1926 #line 186 "lex.ll" 1910 1927 { KEYWORD_RETURN(ASM); } // GCC 1911 1928 YY_BREAK 1912 1929 case 17: 1913 1930 YY_RULE_SETUP 1914 #line 18 5"lex.ll"1931 #line 187 "lex.ll" 1915 1932 { KEYWORD_RETURN(AT); } // CFA 1916 1933 YY_BREAK 1917 1934 case 18: 1918 1935 YY_RULE_SETUP 1919 #line 18 6"lex.ll"1936 #line 188 "lex.ll" 1920 1937 { KEYWORD_RETURN(ATOMIC); } // C11 1921 1938 YY_BREAK 1922 1939 case 19: 1923 1940 YY_RULE_SETUP 1924 #line 18 7"lex.ll"1941 #line 189 "lex.ll" 1925 1942 { KEYWORD_RETURN(ATTRIBUTE); } // GCC 1926 1943 YY_BREAK 1927 1944 case 20: 1928 1945 YY_RULE_SETUP 1929 #line 1 88"lex.ll"1946 #line 190 "lex.ll" 1930 1947 { KEYWORD_RETURN(ATTRIBUTE); } // GCC 1931 1948 YY_BREAK 1932 1949 case 21: 1933 1950 YY_RULE_SETUP 1934 #line 1 89"lex.ll"1951 #line 191 "lex.ll" 1935 1952 { KEYWORD_RETURN(AUTO); } 1936 1953 YY_BREAK 1937 1954 case 22: 1938 1955 YY_RULE_SETUP 1939 #line 19 0"lex.ll"1956 #line 192 "lex.ll" 1940 1957 { KEYWORD_RETURN(BOOL); } // C99 1941 1958 YY_BREAK 1942 1959 case 23: 1943 1960 YY_RULE_SETUP 1944 #line 19 1"lex.ll"1961 #line 193 "lex.ll" 1945 1962 { KEYWORD_RETURN(BREAK); } 1946 1963 YY_BREAK 1947 1964 case 24: 1948 1965 YY_RULE_SETUP 1949 #line 19 2"lex.ll"1966 #line 194 "lex.ll" 1950 1967 { KEYWORD_RETURN(CASE); } 1951 1968 YY_BREAK 1952 1969 case 25: 1953 1970 YY_RULE_SETUP 1954 #line 19 3"lex.ll"1971 #line 195 "lex.ll" 1955 1972 { KEYWORD_RETURN(CATCH); } // CFA 1956 1973 YY_BREAK 1957 1974 case 26: 1958 1975 YY_RULE_SETUP 1959 #line 19 4"lex.ll"1976 #line 196 "lex.ll" 1960 1977 { KEYWORD_RETURN(CATCHRESUME); } // CFA 1961 1978 YY_BREAK 1962 1979 case 27: 1963 1980 YY_RULE_SETUP 1964 #line 19 5"lex.ll"1981 #line 197 "lex.ll" 1965 1982 { KEYWORD_RETURN(CHAR); } 1966 1983 YY_BREAK 1967 1984 case 28: 1968 1985 YY_RULE_SETUP 1969 #line 19 6"lex.ll"1986 #line 198 "lex.ll" 1970 1987 { KEYWORD_RETURN(CHOOSE); } // CFA 1971 1988 YY_BREAK 1972 1989 case 29: 1973 1990 YY_RULE_SETUP 1974 #line 19 7"lex.ll"1991 #line 199 "lex.ll" 1975 1992 { KEYWORD_RETURN(COMPLEX); } // C99 1976 1993 YY_BREAK 1977 1994 case 30: 1978 1995 YY_RULE_SETUP 1979 #line 198"lex.ll"1996 #line 200 "lex.ll" 1980 1997 { KEYWORD_RETURN(COMPLEX); } // GCC 1981 1998 YY_BREAK 1982 1999 case 31: 1983 2000 YY_RULE_SETUP 1984 #line 199"lex.ll"2001 #line 201 "lex.ll" 1985 2002 { KEYWORD_RETURN(COMPLEX); } // GCC 1986 2003 YY_BREAK 1987 2004 case 32: 1988 2005 YY_RULE_SETUP 1989 #line 20 0"lex.ll"2006 #line 202 "lex.ll" 1990 2007 { KEYWORD_RETURN(CONST); } 1991 2008 YY_BREAK 1992 2009 case 33: 1993 2010 YY_RULE_SETUP 1994 #line 20 1"lex.ll"2011 #line 203 "lex.ll" 1995 2012 { KEYWORD_RETURN(CONST); } // GCC 1996 2013 YY_BREAK 1997 2014 case 34: 1998 2015 YY_RULE_SETUP 1999 #line 20 2"lex.ll"2016 #line 204 "lex.ll" 2000 2017 { KEYWORD_RETURN(CONST); } // GCC 2001 2018 YY_BREAK 2002 2019 case 35: 2003 2020 YY_RULE_SETUP 2004 #line 20 3"lex.ll"2005 { KEYWORD_RETURN(CONT EXT); } // CFA2021 #line 205 "lex.ll" 2022 { KEYWORD_RETURN(CONTINUE); } 2006 2023 YY_BREAK 2007 2024 case 36: 2008 2025 YY_RULE_SETUP 2009 #line 20 4"lex.ll"2010 { KEYWORD_RETURN( CONTINUE); }2026 #line 206 "lex.ll" 2027 { KEYWORD_RETURN(DEFAULT); } 2011 2028 YY_BREAK 2012 2029 case 37: 2013 2030 YY_RULE_SETUP 2014 #line 20 5"lex.ll"2015 { KEYWORD_RETURN(D EFAULT); }2031 #line 207 "lex.ll" 2032 { KEYWORD_RETURN(DISABLE); } // CFA 2016 2033 YY_BREAK 2017 2034 case 38: 2018 2035 YY_RULE_SETUP 2019 #line 20 6"lex.ll"2020 { KEYWORD_RETURN(D ISABLE); } // CFA2036 #line 208 "lex.ll" 2037 { KEYWORD_RETURN(DO); } 2021 2038 YY_BREAK 2022 2039 case 39: 2023 2040 YY_RULE_SETUP 2024 #line 20 7"lex.ll"2025 { KEYWORD_RETURN(DO ); }2041 #line 209 "lex.ll" 2042 { KEYWORD_RETURN(DOUBLE); } 2026 2043 YY_BREAK 2027 2044 case 40: 2028 2045 YY_RULE_SETUP 2029 #line 2 08"lex.ll"2030 { KEYWORD_RETURN(D OUBLE); }2046 #line 210 "lex.ll" 2047 { KEYWORD_RETURN(DTYPE); } // CFA 2031 2048 YY_BREAK 2032 2049 case 41: 2033 2050 YY_RULE_SETUP 2034 #line 2 09"lex.ll"2035 { KEYWORD_RETURN( DTYPE); } // CFA2051 #line 211 "lex.ll" 2052 { KEYWORD_RETURN(ELSE); } 2036 2053 YY_BREAK 2037 2054 case 42: 2038 2055 YY_RULE_SETUP 2039 #line 21 0"lex.ll"2040 { KEYWORD_RETURN(E LSE); }2056 #line 212 "lex.ll" 2057 { KEYWORD_RETURN(ENABLE); } // CFA 2041 2058 YY_BREAK 2042 2059 case 43: 2043 2060 YY_RULE_SETUP 2044 #line 21 1"lex.ll"2045 { KEYWORD_RETURN(EN ABLE); } // CFA2061 #line 213 "lex.ll" 2062 { KEYWORD_RETURN(ENUM); } 2046 2063 YY_BREAK 2047 2064 case 44: 2048 2065 YY_RULE_SETUP 2049 #line 21 2"lex.ll"2050 { KEYWORD_RETURN(E NUM); }2066 #line 214 "lex.ll" 2067 { KEYWORD_RETURN(EXTENSION); } // GCC 2051 2068 YY_BREAK 2052 2069 case 45: 2053 2070 YY_RULE_SETUP 2054 #line 21 3"lex.ll"2055 { KEYWORD_RETURN(EXTE NSION); } // GCC2071 #line 215 "lex.ll" 2072 { KEYWORD_RETURN(EXTERN); } 2056 2073 YY_BREAK 2057 2074 case 46: 2058 2075 YY_RULE_SETUP 2059 #line 21 4"lex.ll"2060 { KEYWORD_RETURN( EXTERN); }2076 #line 216 "lex.ll" 2077 { KEYWORD_RETURN(FALLTHRU); } // CFA 2061 2078 YY_BREAK 2062 2079 case 47: 2063 2080 YY_RULE_SETUP 2064 #line 21 5"lex.ll"2065 { KEYWORD_RETURN(F ALLTHRU); } // CFA2081 #line 217 "lex.ll" 2082 { KEYWORD_RETURN(FINALLY); } // CFA 2066 2083 YY_BREAK 2067 2084 case 48: 2068 2085 YY_RULE_SETUP 2069 #line 21 6"lex.ll"2070 { KEYWORD_RETURN(F INALLY); } // CFA2086 #line 218 "lex.ll" 2087 { KEYWORD_RETURN(FLOAT); } 2071 2088 YY_BREAK 2072 2089 case 49: 2073 2090 YY_RULE_SETUP 2074 #line 21 7"lex.ll"2075 { KEYWORD_RETURN(FLOAT); } 2091 #line 219 "lex.ll" 2092 { KEYWORD_RETURN(FLOAT); } // GCC 2076 2093 YY_BREAK 2077 2094 case 50: 2078 2095 YY_RULE_SETUP 2079 #line 2 18"lex.ll"2080 { KEYWORD_RETURN(F LOAT); } // GCC2096 #line 220 "lex.ll" 2097 { KEYWORD_RETURN(FOR); } 2081 2098 YY_BREAK 2082 2099 case 51: 2083 2100 YY_RULE_SETUP 2084 #line 2 19"lex.ll"2085 { KEYWORD_RETURN(FOR ); }2101 #line 221 "lex.ll" 2102 { KEYWORD_RETURN(FORALL); } // CFA 2086 2103 YY_BREAK 2087 2104 case 52: 2088 2105 YY_RULE_SETUP 2089 #line 22 0"lex.ll"2090 { KEYWORD_RETURN(FOR ALL); } // CFA2106 #line 222 "lex.ll" 2107 { KEYWORD_RETURN(FORTRAN); } 2091 2108 YY_BREAK 2092 2109 case 53: 2093 2110 YY_RULE_SETUP 2094 #line 22 1"lex.ll"2095 { KEYWORD_RETURN(F ORTRAN); }2111 #line 223 "lex.ll" 2112 { KEYWORD_RETURN(FTYPE); } // CFA 2096 2113 YY_BREAK 2097 2114 case 54: 2098 2115 YY_RULE_SETUP 2099 #line 22 2"lex.ll"2100 { KEYWORD_RETURN( FTYPE); } // CFA2116 #line 224 "lex.ll" 2117 { KEYWORD_RETURN(GENERIC); } // C11 2101 2118 YY_BREAK 2102 2119 case 55: 2103 2120 YY_RULE_SETUP 2104 #line 22 3"lex.ll"2105 { KEYWORD_RETURN(G ENERIC); } // C112121 #line 225 "lex.ll" 2122 { KEYWORD_RETURN(GOTO); } 2106 2123 YY_BREAK 2107 2124 case 56: 2108 2125 YY_RULE_SETUP 2109 #line 22 4"lex.ll"2110 { KEYWORD_RETURN( GOTO); }2126 #line 226 "lex.ll" 2127 { KEYWORD_RETURN(IF); } 2111 2128 YY_BREAK 2112 2129 case 57: 2113 2130 YY_RULE_SETUP 2114 #line 22 5"lex.ll"2115 { KEYWORD_RETURN(I F); }2131 #line 227 "lex.ll" 2132 { KEYWORD_RETURN(IMAGINARY); } // C99 2116 2133 YY_BREAK 2117 2134 case 58: 2118 YY_RULE_SETUP2119 #line 226 "lex.ll"2120 { KEYWORD_RETURN(IMAGINARY); } // C992121 YY_BREAK2122 case 59:2123 YY_RULE_SETUP2124 #line 227 "lex.ll"2125 { KEYWORD_RETURN(IMAGINARY); } // GCC2126 YY_BREAK2127 case 60:2128 2135 YY_RULE_SETUP 2129 2136 #line 228 "lex.ll" 2130 2137 { KEYWORD_RETURN(IMAGINARY); } // GCC 2131 2138 YY_BREAK 2139 case 59: 2140 YY_RULE_SETUP 2141 #line 229 "lex.ll" 2142 { KEYWORD_RETURN(IMAGINARY); } // GCC 2143 YY_BREAK 2144 case 60: 2145 YY_RULE_SETUP 2146 #line 230 "lex.ll" 2147 { KEYWORD_RETURN(INLINE); } // C99 2148 YY_BREAK 2132 2149 case 61: 2133 YY_RULE_SETUP2134 #line 229 "lex.ll"2135 { KEYWORD_RETURN(INLINE); } // C992136 YY_BREAK2137 case 62:2138 YY_RULE_SETUP2139 #line 230 "lex.ll"2140 { KEYWORD_RETURN(INLINE); } // GCC2141 YY_BREAK2142 case 63:2143 2150 YY_RULE_SETUP 2144 2151 #line 231 "lex.ll" 2145 2152 { KEYWORD_RETURN(INLINE); } // GCC 2146 2153 YY_BREAK 2154 case 62: 2155 YY_RULE_SETUP 2156 #line 232 "lex.ll" 2157 { KEYWORD_RETURN(INLINE); } // GCC 2158 YY_BREAK 2159 case 63: 2160 YY_RULE_SETUP 2161 #line 233 "lex.ll" 2162 { KEYWORD_RETURN(INT); } 2163 YY_BREAK 2147 2164 case 64: 2148 2165 YY_RULE_SETUP 2149 #line 23 2"lex.ll"2150 { KEYWORD_RETURN(INT); } 2166 #line 234 "lex.ll" 2167 { KEYWORD_RETURN(INT); } // GCC 2151 2168 YY_BREAK 2152 2169 case 65: 2153 2170 YY_RULE_SETUP 2154 #line 23 3"lex.ll"2155 { KEYWORD_RETURN( INT); } // GCC2171 #line 235 "lex.ll" 2172 { KEYWORD_RETURN(LABEL); } // GCC 2156 2173 YY_BREAK 2157 2174 case 66: 2158 2175 YY_RULE_SETUP 2159 #line 23 4"lex.ll"2160 { KEYWORD_RETURN(L ABEL); } // GCC2176 #line 236 "lex.ll" 2177 { KEYWORD_RETURN(LONG); } 2161 2178 YY_BREAK 2162 2179 case 67: 2163 2180 YY_RULE_SETUP 2164 #line 23 5"lex.ll"2165 { KEYWORD_RETURN(L ONG); }2181 #line 237 "lex.ll" 2182 { KEYWORD_RETURN(LVALUE); } // CFA 2166 2183 YY_BREAK 2167 2184 case 68: 2168 2185 YY_RULE_SETUP 2169 #line 23 6"lex.ll"2170 { KEYWORD_RETURN( LVALUE); } // CFA2186 #line 238 "lex.ll" 2187 { KEYWORD_RETURN(NORETURN); } // C11 2171 2188 YY_BREAK 2172 2189 case 69: 2173 2190 YY_RULE_SETUP 2174 #line 23 7"lex.ll"2175 { KEYWORD_RETURN( NORETURN); } // C112191 #line 239 "lex.ll" 2192 { KEYWORD_RETURN(OFFSETOF); } // GCC 2176 2193 YY_BREAK 2177 2194 case 70: 2178 2195 YY_RULE_SETUP 2179 #line 2 38"lex.ll"2180 { KEYWORD_RETURN(O FFSETOF); } // GCC2196 #line 240 "lex.ll" 2197 { KEYWORD_RETURN(OTYPE); } // CFA 2181 2198 YY_BREAK 2182 2199 case 71: 2183 2200 YY_RULE_SETUP 2184 #line 2 39"lex.ll"2201 #line 241 "lex.ll" 2185 2202 { KEYWORD_RETURN(REGISTER); } 2186 2203 YY_BREAK 2187 2204 case 72: 2188 2205 YY_RULE_SETUP 2189 #line 24 0"lex.ll"2206 #line 242 "lex.ll" 2190 2207 { KEYWORD_RETURN(RESTRICT); } // C99 2191 2208 YY_BREAK 2192 2209 case 73: 2193 2210 YY_RULE_SETUP 2194 #line 24 1"lex.ll"2211 #line 243 "lex.ll" 2195 2212 { KEYWORD_RETURN(RESTRICT); } // GCC 2196 2213 YY_BREAK 2197 2214 case 74: 2198 2215 YY_RULE_SETUP 2199 #line 24 2"lex.ll"2216 #line 244 "lex.ll" 2200 2217 { KEYWORD_RETURN(RESTRICT); } // GCC 2201 2218 YY_BREAK 2202 2219 case 75: 2203 2220 YY_RULE_SETUP 2204 #line 24 3"lex.ll"2221 #line 245 "lex.ll" 2205 2222 { KEYWORD_RETURN(RETURN); } 2206 2223 YY_BREAK 2207 2224 case 76: 2208 2225 YY_RULE_SETUP 2209 #line 24 4"lex.ll"2226 #line 246 "lex.ll" 2210 2227 { KEYWORD_RETURN(SHORT); } 2211 2228 YY_BREAK 2212 2229 case 77: 2213 2230 YY_RULE_SETUP 2214 #line 24 5"lex.ll"2231 #line 247 "lex.ll" 2215 2232 { KEYWORD_RETURN(SIGNED); } 2216 2233 YY_BREAK 2217 2234 case 78: 2218 2235 YY_RULE_SETUP 2219 #line 24 6"lex.ll"2236 #line 248 "lex.ll" 2220 2237 { KEYWORD_RETURN(SIGNED); } // GCC 2221 2238 YY_BREAK 2222 2239 case 79: 2223 2240 YY_RULE_SETUP 2224 #line 24 7"lex.ll"2241 #line 249 "lex.ll" 2225 2242 { KEYWORD_RETURN(SIGNED); } // GCC 2226 2243 YY_BREAK 2227 2244 case 80: 2228 2245 YY_RULE_SETUP 2229 #line 2 48"lex.ll"2246 #line 250 "lex.ll" 2230 2247 { KEYWORD_RETURN(SIZEOF); } 2231 2248 YY_BREAK 2232 2249 case 81: 2233 2250 YY_RULE_SETUP 2234 #line 2 49"lex.ll"2251 #line 251 "lex.ll" 2235 2252 { KEYWORD_RETURN(STATIC); } 2236 2253 YY_BREAK 2237 2254 case 82: 2238 2255 YY_RULE_SETUP 2239 #line 25 0"lex.ll"2256 #line 252 "lex.ll" 2240 2257 { KEYWORD_RETURN(STATICASSERT); } // C11 2241 2258 YY_BREAK 2242 2259 case 83: 2243 2260 YY_RULE_SETUP 2244 #line 25 1"lex.ll"2261 #line 253 "lex.ll" 2245 2262 { KEYWORD_RETURN(STRUCT); } 2246 2263 YY_BREAK 2247 2264 case 84: 2248 2265 YY_RULE_SETUP 2249 #line 25 2"lex.ll"2266 #line 254 "lex.ll" 2250 2267 { KEYWORD_RETURN(SWITCH); } 2251 2268 YY_BREAK 2252 2269 case 85: 2253 2270 YY_RULE_SETUP 2254 #line 25 3"lex.ll"2271 #line 255 "lex.ll" 2255 2272 { KEYWORD_RETURN(THREADLOCAL); } // C11 2256 2273 YY_BREAK 2257 2274 case 86: 2258 2275 YY_RULE_SETUP 2259 #line 25 4"lex.ll"2276 #line 256 "lex.ll" 2260 2277 { KEYWORD_RETURN(THROW); } // CFA 2261 2278 YY_BREAK 2262 2279 case 87: 2263 2280 YY_RULE_SETUP 2264 #line 25 5"lex.ll"2281 #line 257 "lex.ll" 2265 2282 { KEYWORD_RETURN(THROWRESUME); } // CFA 2266 2283 YY_BREAK 2267 2284 case 88: 2268 2285 YY_RULE_SETUP 2269 #line 256 "lex.ll" 2286 #line 258 "lex.ll" 2287 { KEYWORD_RETURN(TRAIT); } // CFA 2288 YY_BREAK 2289 case 89: 2290 YY_RULE_SETUP 2291 #line 259 "lex.ll" 2270 2292 { KEYWORD_RETURN(TRY); } // CFA 2271 2293 YY_BREAK 2272 case 89:2273 YY_RULE_SETUP2274 #line 257 "lex.ll"2275 { KEYWORD_RETURN(TYPE); } // CFA2276 YY_BREAK2277 2294 case 90: 2278 2295 YY_RULE_SETUP 2279 #line 2 58"lex.ll"2296 #line 260 "lex.ll" 2280 2297 { KEYWORD_RETURN(TYPEDEF); } 2281 2298 YY_BREAK 2282 2299 case 91: 2283 YY_RULE_SETUP2284 #line 259 "lex.ll"2285 { KEYWORD_RETURN(TYPEOF); } // GCC2286 YY_BREAK2287 case 92:2288 YY_RULE_SETUP2289 #line 260 "lex.ll"2290 { KEYWORD_RETURN(TYPEOF); } // GCC2291 YY_BREAK2292 case 93:2293 2300 YY_RULE_SETUP 2294 2301 #line 261 "lex.ll" 2295 2302 { KEYWORD_RETURN(TYPEOF); } // GCC 2296 2303 YY_BREAK 2304 case 92: 2305 YY_RULE_SETUP 2306 #line 262 "lex.ll" 2307 { KEYWORD_RETURN(TYPEOF); } // GCC 2308 YY_BREAK 2309 case 93: 2310 YY_RULE_SETUP 2311 #line 263 "lex.ll" 2312 { KEYWORD_RETURN(TYPEOF); } // GCC 2313 YY_BREAK 2297 2314 case 94: 2298 2315 YY_RULE_SETUP 2299 #line 26 2"lex.ll"2316 #line 264 "lex.ll" 2300 2317 { KEYWORD_RETURN(UNION); } 2301 2318 YY_BREAK 2302 2319 case 95: 2303 2320 YY_RULE_SETUP 2304 #line 26 3"lex.ll"2321 #line 265 "lex.ll" 2305 2322 { KEYWORD_RETURN(UNSIGNED); } 2306 2323 YY_BREAK 2307 2324 case 96: 2308 2325 YY_RULE_SETUP 2309 #line 264 "lex.ll" 2326 #line 266 "lex.ll" 2327 { KEYWORD_RETURN(VALIST); } // GCC 2328 YY_BREAK 2329 case 97: 2330 YY_RULE_SETUP 2331 #line 267 "lex.ll" 2310 2332 { KEYWORD_RETURN(VOID); } 2311 2333 YY_BREAK 2312 case 9 7:2313 YY_RULE_SETUP 2314 #line 26 5"lex.ll"2334 case 98: 2335 YY_RULE_SETUP 2336 #line 268 "lex.ll" 2315 2337 { KEYWORD_RETURN(VOLATILE); } 2316 2338 YY_BREAK 2317 case 9 8:2318 YY_RULE_SETUP 2319 #line 26 6"lex.ll"2339 case 99: 2340 YY_RULE_SETUP 2341 #line 269 "lex.ll" 2320 2342 { KEYWORD_RETURN(VOLATILE); } // GCC 2321 2343 YY_BREAK 2322 case 99:2323 YY_RULE_SETUP 2324 #line 2 67"lex.ll"2344 case 100: 2345 YY_RULE_SETUP 2346 #line 270 "lex.ll" 2325 2347 { KEYWORD_RETURN(VOLATILE); } // GCC 2326 2348 YY_BREAK 2327 case 10 0:2328 YY_RULE_SETUP 2329 #line 2 68"lex.ll"2349 case 101: 2350 YY_RULE_SETUP 2351 #line 271 "lex.ll" 2330 2352 { KEYWORD_RETURN(WHILE); } 2331 2353 YY_BREAK 2332 2354 /* identifier */ 2333 case 101:2334 YY_RULE_SETUP2335 #line 271 "lex.ll"2336 { IDENTIFIER_RETURN(); }2337 YY_BREAK2338 2355 case 102: 2339 YY_RULE_SETUP2340 #line 272 "lex.ll"2341 { ATTRIBUTE_RETURN(); }2342 YY_BREAK2343 case 103:2344 YY_RULE_SETUP2345 #line 273 "lex.ll"2346 { BEGIN BKQUOTE; }2347 YY_BREAK2348 case 104:2349 2356 YY_RULE_SETUP 2350 2357 #line 274 "lex.ll" 2351 2358 { IDENTIFIER_RETURN(); } 2352 2359 YY_BREAK 2360 case 103: 2361 YY_RULE_SETUP 2362 #line 275 "lex.ll" 2363 { ATTRIBUTE_RETURN(); } 2364 YY_BREAK 2365 case 104: 2366 YY_RULE_SETUP 2367 #line 276 "lex.ll" 2368 { BEGIN BKQUOTE; } 2369 YY_BREAK 2353 2370 case 105: 2354 2371 YY_RULE_SETUP 2355 #line 275 "lex.ll" 2372 #line 277 "lex.ll" 2373 { IDENTIFIER_RETURN(); } 2374 YY_BREAK 2375 case 106: 2376 YY_RULE_SETUP 2377 #line 278 "lex.ll" 2356 2378 { BEGIN 0; } 2357 2379 YY_BREAK 2358 2380 /* numeric constants */ 2359 case 10 6:2360 YY_RULE_SETUP 2361 #line 2 78"lex.ll"2381 case 107: 2382 YY_RULE_SETUP 2383 #line 281 "lex.ll" 2362 2384 { NUMERIC_RETURN(ZERO); } // CFA 2363 2385 YY_BREAK 2364 case 10 7:2365 YY_RULE_SETUP 2366 #line 2 79"lex.ll"2386 case 108: 2387 YY_RULE_SETUP 2388 #line 282 "lex.ll" 2367 2389 { NUMERIC_RETURN(ONE); } // CFA 2368 2390 YY_BREAK 2369 case 10 8:2370 YY_RULE_SETUP 2371 #line 28 0"lex.ll"2391 case 109: 2392 YY_RULE_SETUP 2393 #line 283 "lex.ll" 2372 2394 { NUMERIC_RETURN(INTEGERconstant); } 2373 2395 YY_BREAK 2374 case 1 09:2375 YY_RULE_SETUP 2376 #line 28 1"lex.ll"2396 case 110: 2397 YY_RULE_SETUP 2398 #line 284 "lex.ll" 2377 2399 { NUMERIC_RETURN(INTEGERconstant); } 2378 2400 YY_BREAK 2379 case 11 0:2380 YY_RULE_SETUP 2381 #line 28 2"lex.ll"2401 case 111: 2402 YY_RULE_SETUP 2403 #line 285 "lex.ll" 2382 2404 { NUMERIC_RETURN(INTEGERconstant); } 2383 2405 YY_BREAK 2384 case 11 1:2385 YY_RULE_SETUP 2386 #line 28 3"lex.ll"2406 case 112: 2407 YY_RULE_SETUP 2408 #line 286 "lex.ll" 2387 2409 { NUMERIC_RETURN(FLOATINGconstant); } 2388 2410 YY_BREAK 2389 case 11 2:2390 YY_RULE_SETUP 2391 #line 28 4"lex.ll"2411 case 113: 2412 YY_RULE_SETUP 2413 #line 287 "lex.ll" 2392 2414 { NUMERIC_RETURN(FLOATINGconstant); } 2393 2415 YY_BREAK 2394 2416 /* character constant, allows empty value */ 2395 case 11 3:2396 YY_RULE_SETUP 2397 #line 2 87"lex.ll"2417 case 114: 2418 YY_RULE_SETUP 2419 #line 290 "lex.ll" 2398 2420 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2399 2421 YY_BREAK 2400 case 11 4:2401 YY_RULE_SETUP 2402 #line 2 88"lex.ll"2422 case 115: 2423 YY_RULE_SETUP 2424 #line 291 "lex.ll" 2403 2425 { *strtext += std::string( yytext ); } 2404 2426 YY_BREAK 2405 case 11 5:2406 /* rule 11 5can match eol */2407 YY_RULE_SETUP 2408 #line 2 89"lex.ll"2427 case 116: 2428 /* rule 116 can match eol */ 2429 YY_RULE_SETUP 2430 #line 292 "lex.ll" 2409 2431 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); } 2410 2432 YY_BREAK 2411 2433 /* ' stop highlighting */ 2412 2434 /* string constant */ 2413 case 11 6:2414 YY_RULE_SETUP 2415 #line 29 3"lex.ll"2435 case 117: 2436 YY_RULE_SETUP 2437 #line 296 "lex.ll" 2416 2438 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); } 2417 2439 YY_BREAK 2418 case 11 7:2419 YY_RULE_SETUP 2420 #line 29 4"lex.ll"2440 case 118: 2441 YY_RULE_SETUP 2442 #line 297 "lex.ll" 2421 2443 { *strtext += std::string( yytext ); } 2422 2444 YY_BREAK 2423 case 11 8:2424 /* rule 11 8can match eol */2425 YY_RULE_SETUP 2426 #line 29 5"lex.ll"2445 case 119: 2446 /* rule 119 can match eol */ 2447 YY_RULE_SETUP 2448 #line 298 "lex.ll" 2427 2449 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); } 2428 2450 YY_BREAK 2429 2451 /* " stop highlighting */ 2430 2452 /* common character/string constant */ 2431 case 1 19:2432 YY_RULE_SETUP 2433 #line 299"lex.ll"2453 case 120: 2454 YY_RULE_SETUP 2455 #line 302 "lex.ll" 2434 2456 { rm_underscore(); *strtext += std::string( yytext ); } 2435 2457 YY_BREAK 2436 case 12 0:2437 /* rule 12 0can match eol */2438 YY_RULE_SETUP 2439 #line 30 0"lex.ll"2458 case 121: 2459 /* rule 121 can match eol */ 2460 YY_RULE_SETUP 2461 #line 303 "lex.ll" 2440 2462 {} // continuation (ALSO HANDLED BY CPP) 2441 2463 YY_BREAK 2442 case 12 1:2443 YY_RULE_SETUP 2444 #line 30 1"lex.ll"2464 case 122: 2465 YY_RULE_SETUP 2466 #line 304 "lex.ll" 2445 2467 { *strtext += std::string( yytext ); } // unknown escape character 2446 2468 YY_BREAK 2447 2469 /* punctuation */ 2448 case 122:2449 YY_RULE_SETUP2450 #line 304 "lex.ll"2451 { ASCIIOP_RETURN(); }2452 YY_BREAK2453 2470 case 123: 2454 YY_RULE_SETUP2455 #line 305 "lex.ll"2456 { ASCIIOP_RETURN(); }2457 YY_BREAK2458 case 124:2459 YY_RULE_SETUP2460 #line 306 "lex.ll"2461 { ASCIIOP_RETURN(); }2462 YY_BREAK2463 case 125:2464 2471 YY_RULE_SETUP 2465 2472 #line 307 "lex.ll" 2466 2473 { ASCIIOP_RETURN(); } 2467 2474 YY_BREAK 2468 case 12 6:2475 case 124: 2469 2476 YY_RULE_SETUP 2470 2477 #line 308 "lex.ll" 2471 2478 { ASCIIOP_RETURN(); } 2472 2479 YY_BREAK 2473 case 12 7:2480 case 125: 2474 2481 YY_RULE_SETUP 2475 2482 #line 309 "lex.ll" 2476 2483 { ASCIIOP_RETURN(); } 2477 2484 YY_BREAK 2478 case 12 8:2485 case 126: 2479 2486 YY_RULE_SETUP 2480 2487 #line 310 "lex.ll" 2481 { ASCIIOP_RETURN(); } // also operator2482 YY_BREAK 2483 case 12 9:2488 { ASCIIOP_RETURN(); } 2489 YY_BREAK 2490 case 127: 2484 2491 YY_RULE_SETUP 2485 2492 #line 311 "lex.ll" 2486 2493 { ASCIIOP_RETURN(); } 2487 2494 YY_BREAK 2488 case 1 30:2495 case 128: 2489 2496 YY_RULE_SETUP 2490 2497 #line 312 "lex.ll" 2491 2498 { ASCIIOP_RETURN(); } 2492 2499 YY_BREAK 2493 case 1 31:2500 case 129: 2494 2501 YY_RULE_SETUP 2495 2502 #line 313 "lex.ll" 2496 2503 { ASCIIOP_RETURN(); } // also operator 2497 2504 YY_BREAK 2505 case 130: 2506 YY_RULE_SETUP 2507 #line 314 "lex.ll" 2508 { ASCIIOP_RETURN(); } 2509 YY_BREAK 2510 case 131: 2511 YY_RULE_SETUP 2512 #line 315 "lex.ll" 2513 { ASCIIOP_RETURN(); } 2514 YY_BREAK 2498 2515 case 132: 2499 2516 YY_RULE_SETUP 2500 #line 314 "lex.ll" 2517 #line 316 "lex.ll" 2518 { ASCIIOP_RETURN(); } // also operator 2519 YY_BREAK 2520 case 133: 2521 YY_RULE_SETUP 2522 #line 317 "lex.ll" 2501 2523 { NAMEDOP_RETURN(ELLIPSIS); } 2502 2524 YY_BREAK 2503 2525 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */ 2504 case 13 3:2505 YY_RULE_SETUP 2506 #line 3 17"lex.ll"2526 case 134: 2527 YY_RULE_SETUP 2528 #line 320 "lex.ll" 2507 2529 { RETURN_VAL('['); } 2508 2530 YY_BREAK 2509 case 13 4:2510 YY_RULE_SETUP 2511 #line 3 18"lex.ll"2531 case 135: 2532 YY_RULE_SETUP 2533 #line 321 "lex.ll" 2512 2534 { RETURN_VAL(']'); } 2513 2535 YY_BREAK 2514 case 13 5:2515 YY_RULE_SETUP 2516 #line 3 19"lex.ll"2536 case 136: 2537 YY_RULE_SETUP 2538 #line 322 "lex.ll" 2517 2539 { RETURN_VAL('{'); } 2518 2540 YY_BREAK 2519 case 13 6:2520 YY_RULE_SETUP 2521 #line 32 0"lex.ll"2541 case 137: 2542 YY_RULE_SETUP 2543 #line 323 "lex.ll" 2522 2544 { RETURN_VAL('}'); } 2523 2545 YY_BREAK 2524 2546 /* operators */ 2525 case 137:2526 YY_RULE_SETUP2527 #line 323 "lex.ll"2528 { ASCIIOP_RETURN(); }2529 YY_BREAK2530 2547 case 138: 2531 YY_RULE_SETUP2532 #line 324 "lex.ll"2533 { ASCIIOP_RETURN(); }2534 YY_BREAK2535 case 139:2536 YY_RULE_SETUP2537 #line 325 "lex.ll"2538 { ASCIIOP_RETURN(); }2539 YY_BREAK2540 case 140:2541 2548 YY_RULE_SETUP 2542 2549 #line 326 "lex.ll" 2543 2550 { ASCIIOP_RETURN(); } 2544 2551 YY_BREAK 2545 case 1 41:2552 case 139: 2546 2553 YY_RULE_SETUP 2547 2554 #line 327 "lex.ll" 2548 2555 { ASCIIOP_RETURN(); } 2549 2556 YY_BREAK 2550 case 14 2:2557 case 140: 2551 2558 YY_RULE_SETUP 2552 2559 #line 328 "lex.ll" 2553 2560 { ASCIIOP_RETURN(); } 2554 2561 YY_BREAK 2555 case 14 3:2562 case 141: 2556 2563 YY_RULE_SETUP 2557 2564 #line 329 "lex.ll" 2558 2565 { ASCIIOP_RETURN(); } 2559 2566 YY_BREAK 2560 case 14 4:2567 case 142: 2561 2568 YY_RULE_SETUP 2562 2569 #line 330 "lex.ll" 2563 2570 { ASCIIOP_RETURN(); } 2564 2571 YY_BREAK 2565 case 14 5:2572 case 143: 2566 2573 YY_RULE_SETUP 2567 2574 #line 331 "lex.ll" 2568 2575 { ASCIIOP_RETURN(); } 2569 2576 YY_BREAK 2570 case 14 6:2577 case 144: 2571 2578 YY_RULE_SETUP 2572 2579 #line 332 "lex.ll" 2573 2580 { ASCIIOP_RETURN(); } 2574 2581 YY_BREAK 2575 case 14 7:2582 case 145: 2576 2583 YY_RULE_SETUP 2577 2584 #line 333 "lex.ll" 2578 2585 { ASCIIOP_RETURN(); } 2579 2586 YY_BREAK 2580 case 14 8:2587 case 146: 2581 2588 YY_RULE_SETUP 2582 2589 #line 334 "lex.ll" 2583 2590 { ASCIIOP_RETURN(); } 2584 2591 YY_BREAK 2585 case 14 9:2592 case 147: 2586 2593 YY_RULE_SETUP 2587 2594 #line 335 "lex.ll" 2588 2595 { ASCIIOP_RETURN(); } 2589 2596 YY_BREAK 2590 case 1 50:2597 case 148: 2591 2598 YY_RULE_SETUP 2592 2599 #line 336 "lex.ll" 2593 2600 { ASCIIOP_RETURN(); } 2594 2601 YY_BREAK 2602 case 149: 2603 YY_RULE_SETUP 2604 #line 337 "lex.ll" 2605 { ASCIIOP_RETURN(); } 2606 YY_BREAK 2607 case 150: 2608 YY_RULE_SETUP 2609 #line 338 "lex.ll" 2610 { ASCIIOP_RETURN(); } 2611 YY_BREAK 2595 2612 case 151: 2596 2613 YY_RULE_SETUP 2597 #line 338 "lex.ll" 2614 #line 339 "lex.ll" 2615 { ASCIIOP_RETURN(); } 2616 YY_BREAK 2617 case 152: 2618 YY_RULE_SETUP 2619 #line 341 "lex.ll" 2598 2620 { NAMEDOP_RETURN(ICR); } 2599 2621 YY_BREAK 2600 case 15 2:2601 YY_RULE_SETUP 2602 #line 3 39"lex.ll"2622 case 153: 2623 YY_RULE_SETUP 2624 #line 342 "lex.ll" 2603 2625 { NAMEDOP_RETURN(DECR); } 2604 2626 YY_BREAK 2605 case 15 3:2606 YY_RULE_SETUP 2607 #line 34 0"lex.ll"2627 case 154: 2628 YY_RULE_SETUP 2629 #line 343 "lex.ll" 2608 2630 { NAMEDOP_RETURN(EQ); } 2609 2631 YY_BREAK 2610 case 15 4:2611 YY_RULE_SETUP 2612 #line 34 1"lex.ll"2632 case 155: 2633 YY_RULE_SETUP 2634 #line 344 "lex.ll" 2613 2635 { NAMEDOP_RETURN(NE); } 2614 2636 YY_BREAK 2615 case 15 5:2616 YY_RULE_SETUP 2617 #line 34 2"lex.ll"2637 case 156: 2638 YY_RULE_SETUP 2639 #line 345 "lex.ll" 2618 2640 { NAMEDOP_RETURN(LS); } 2619 2641 YY_BREAK 2620 case 15 6:2621 YY_RULE_SETUP 2622 #line 34 3"lex.ll"2642 case 157: 2643 YY_RULE_SETUP 2644 #line 346 "lex.ll" 2623 2645 { NAMEDOP_RETURN(RS); } 2624 2646 YY_BREAK 2625 case 15 7:2626 YY_RULE_SETUP 2627 #line 34 4"lex.ll"2647 case 158: 2648 YY_RULE_SETUP 2649 #line 347 "lex.ll" 2628 2650 { NAMEDOP_RETURN(LE); } 2629 2651 YY_BREAK 2630 case 15 8:2631 YY_RULE_SETUP 2632 #line 34 5"lex.ll"2652 case 159: 2653 YY_RULE_SETUP 2654 #line 348 "lex.ll" 2633 2655 { NAMEDOP_RETURN(GE); } 2634 2656 YY_BREAK 2635 case 1 59:2636 YY_RULE_SETUP 2637 #line 34 6"lex.ll"2657 case 160: 2658 YY_RULE_SETUP 2659 #line 349 "lex.ll" 2638 2660 { NAMEDOP_RETURN(ANDAND); } 2639 2661 YY_BREAK 2640 case 16 0:2641 YY_RULE_SETUP 2642 #line 3 47"lex.ll"2662 case 161: 2663 YY_RULE_SETUP 2664 #line 350 "lex.ll" 2643 2665 { NAMEDOP_RETURN(OROR); } 2644 2666 YY_BREAK 2645 case 16 1:2646 YY_RULE_SETUP 2647 #line 3 48"lex.ll"2667 case 162: 2668 YY_RULE_SETUP 2669 #line 351 "lex.ll" 2648 2670 { NAMEDOP_RETURN(ARROW); } 2649 2671 YY_BREAK 2650 case 16 2:2651 YY_RULE_SETUP 2652 #line 3 49"lex.ll"2672 case 163: 2673 YY_RULE_SETUP 2674 #line 352 "lex.ll" 2653 2675 { NAMEDOP_RETURN(PLUSassign); } 2654 2676 YY_BREAK 2655 case 16 3:2656 YY_RULE_SETUP 2657 #line 35 0"lex.ll"2677 case 164: 2678 YY_RULE_SETUP 2679 #line 353 "lex.ll" 2658 2680 { NAMEDOP_RETURN(MINUSassign); } 2659 2681 YY_BREAK 2660 case 16 4:2661 YY_RULE_SETUP 2662 #line 35 1"lex.ll"2682 case 165: 2683 YY_RULE_SETUP 2684 #line 354 "lex.ll" 2663 2685 { NAMEDOP_RETURN(MULTassign); } 2664 2686 YY_BREAK 2665 case 16 5:2666 YY_RULE_SETUP 2667 #line 35 2"lex.ll"2687 case 166: 2688 YY_RULE_SETUP 2689 #line 355 "lex.ll" 2668 2690 { NAMEDOP_RETURN(DIVassign); } 2669 2691 YY_BREAK 2670 case 16 6:2671 YY_RULE_SETUP 2672 #line 35 3"lex.ll"2692 case 167: 2693 YY_RULE_SETUP 2694 #line 356 "lex.ll" 2673 2695 { NAMEDOP_RETURN(MODassign); } 2674 2696 YY_BREAK 2675 case 16 7:2676 YY_RULE_SETUP 2677 #line 35 4"lex.ll"2697 case 168: 2698 YY_RULE_SETUP 2699 #line 357 "lex.ll" 2678 2700 { NAMEDOP_RETURN(ANDassign); } 2679 2701 YY_BREAK 2680 case 16 8:2681 YY_RULE_SETUP 2682 #line 35 5"lex.ll"2702 case 169: 2703 YY_RULE_SETUP 2704 #line 358 "lex.ll" 2683 2705 { NAMEDOP_RETURN(ORassign); } 2684 2706 YY_BREAK 2685 case 1 69:2686 YY_RULE_SETUP 2687 #line 35 6"lex.ll"2707 case 170: 2708 YY_RULE_SETUP 2709 #line 359 "lex.ll" 2688 2710 { NAMEDOP_RETURN(ERassign); } 2689 2711 YY_BREAK 2690 case 17 0:2691 YY_RULE_SETUP 2692 #line 3 57"lex.ll"2712 case 171: 2713 YY_RULE_SETUP 2714 #line 360 "lex.ll" 2693 2715 { NAMEDOP_RETURN(LSassign); } 2694 2716 YY_BREAK 2695 case 17 1:2696 YY_RULE_SETUP 2697 #line 3 58"lex.ll"2717 case 172: 2718 YY_RULE_SETUP 2719 #line 361 "lex.ll" 2698 2720 { NAMEDOP_RETURN(RSassign); } 2699 2721 YY_BREAK 2700 case 17 2:2701 YY_RULE_SETUP 2702 #line 36 0"lex.ll"2722 case 173: 2723 YY_RULE_SETUP 2724 #line 363 "lex.ll" 2703 2725 { NAMEDOP_RETURN(ATassign); } 2704 2726 YY_BREAK 2705 2727 /* CFA, operator identifier */ 2706 case 17 3:2707 YY_RULE_SETUP 2708 #line 36 3"lex.ll"2728 case 174: 2729 YY_RULE_SETUP 2730 #line 366 "lex.ll" 2709 2731 { IDENTIFIER_RETURN(); } // unary 2710 2732 YY_BREAK 2711 case 17 4:2712 YY_RULE_SETUP 2713 #line 36 4"lex.ll"2733 case 175: 2734 YY_RULE_SETUP 2735 #line 367 "lex.ll" 2714 2736 { IDENTIFIER_RETURN(); } 2715 2737 YY_BREAK 2716 case 17 5:2717 YY_RULE_SETUP 2718 #line 36 5"lex.ll"2738 case 176: 2739 YY_RULE_SETUP 2740 #line 368 "lex.ll" 2719 2741 { IDENTIFIER_RETURN(); } 2720 2742 YY_BREAK 2721 case 17 6:2722 YY_RULE_SETUP 2723 #line 36 6"lex.ll"2743 case 177: 2744 YY_RULE_SETUP 2745 #line 369 "lex.ll" 2724 2746 { IDENTIFIER_RETURN(); } // binary 2725 2747 YY_BREAK … … 2750 2772 an argument list. 2751 2773 */ 2752 case 17 7:2753 YY_RULE_SETUP 2754 #line 39 3"lex.ll"2774 case 178: 2775 YY_RULE_SETUP 2776 #line 396 "lex.ll" 2755 2777 { 2756 2778 // 1 or 2 character unary operator ? … … 2765 2787 YY_BREAK 2766 2788 /* unknown characters */ 2767 case 17 8:2768 YY_RULE_SETUP 2769 #line 40 5"lex.ll"2789 case 179: 2790 YY_RULE_SETUP 2791 #line 408 "lex.ll" 2770 2792 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2771 2793 YY_BREAK 2772 case 1 79:2773 YY_RULE_SETUP 2774 #line 4 07"lex.ll"2794 case 180: 2795 YY_RULE_SETUP 2796 #line 410 "lex.ll" 2775 2797 ECHO; 2776 2798 YY_BREAK 2777 #line 2 778"Parser/lex.cc"2799 #line 2800 "Parser/lex.cc" 2778 2800 case YY_STATE_EOF(INITIAL): 2779 2801 case YY_STATE_EOF(COMMENT): … … 3072 3094 { 3073 3095 yy_current_state = (int) yy_def[yy_current_state]; 3074 if ( yy_current_state >= 8 76)3096 if ( yy_current_state >= 888 ) 3075 3097 yy_c = yy_meta[(unsigned int) yy_c]; 3076 3098 } … … 3100 3122 { 3101 3123 yy_current_state = (int) yy_def[yy_current_state]; 3102 if ( yy_current_state >= 8 76)3124 if ( yy_current_state >= 888 ) 3103 3125 yy_c = yy_meta[(unsigned int) yy_c]; 3104 3126 } 3105 3127 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 3106 yy_is_jam = (yy_current_state == 8 75);3128 yy_is_jam = (yy_current_state == 887); 3107 3129 3108 3130 return yy_is_jam ? 0 : yy_current_state; … … 3750 3772 #define YYTABLES_NAME "yytables" 3751 3773 3752 #line 4 07"lex.ll"3774 #line 410 "lex.ll" 3753 3775 3754 3776 -
src/Parser/lex.h
rc5833e8 r0f9e4403 10 10 // Created On : Sat Sep 22 08:58:10 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jun 8 20:28:48 201513 // Update Count : 34 112 // Last Modified On : Mon Mar 21 18:18:06 2016 13 // Update Count : 346 14 14 // 15 15 … … 20 20 void yyerror( const char * ); 21 21 22 #include <string> 23 #include "ParseNode.h" 22 24 // External declarations for information sharing between lexer and scanner 23 #include "TypedefTable.h" 25 class TypedefTable; 24 26 extern TypedefTable typedefTable; 25 27 -
src/Parser/lex.ll
rc5833e8 r0f9e4403 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Tue Feb 2 15:06:54201613 * Update Count : 4 2612 * Last Modified On : Mon Mar 21 23:33:46 2016 13 * Update Count : 450 14 14 */ 15 15 … … 27 27 28 28 #include "lex.h" 29 #include "parser.h" // YACC generated definitions based on C++ grammar 29 30 #include "ParseNode.h" 30 #include " parser.h" // YACC generated definitions based on C++ grammar31 #include "TypedefTable.h" 31 32 32 33 char *yyfilename; … … 44 45 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 45 46 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword 46 #define IDENTIFIER_RETURN() RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname) )47 #define IDENTIFIER_RETURN() RETURN_VAL( typedefTable.isKind( yytext ) ) 47 48 #define ATTRIBUTE_RETURN() RETURN_VAL( ATTR_IDENTIFIER ) 48 49 … … 95 96 fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".") 96 97 exponent "_"?[eE]"_"?[+-]?{decimal_digits} 97 // GCC: D (double), LD (long double) and iI (imaginary) suffixes 98 floating_suffix "_"?([fFdD]?|([lL]?)|([iI][lLfFdD]?)|([lLfFdD][iI])) 98 // GCC: D (double), DL (long double) and iI (imaginary) suffixes 99 floating_suffix "_"?([fFdDlL][iI]?|"DL"|[iI][lLfFdD]?) 100 //floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI])) 99 101 floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}? 100 102 … … 137 139 %% 138 140 /* line directives */ 139 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["] [^\n]*"\n" {141 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" { 140 142 /* " stop highlighting */ 141 143 char *end_num; … … 201 203 __const { KEYWORD_RETURN(CONST); } // GCC 202 204 __const__ { KEYWORD_RETURN(CONST); } // GCC 203 context { KEYWORD_RETURN(CONTEXT); } // CFA204 205 continue { KEYWORD_RETURN(CONTINUE); } 205 206 default { KEYWORD_RETURN(DEFAULT); } … … 237 238 _Noreturn { KEYWORD_RETURN(NORETURN); } // C11 238 239 __builtin_offsetof { KEYWORD_RETURN(OFFSETOF); } // GCC 240 otype { KEYWORD_RETURN(OTYPE); } // CFA 239 241 register { KEYWORD_RETURN(REGISTER); } 240 242 restrict { KEYWORD_RETURN(RESTRICT); } // C99 … … 254 256 throw { KEYWORD_RETURN(THROW); } // CFA 255 257 throwResume { KEYWORD_RETURN(THROWRESUME); } // CFA 258 trait { KEYWORD_RETURN(TRAIT); } // CFA 256 259 try { KEYWORD_RETURN(TRY); } // CFA 257 type { KEYWORD_RETURN(TYPE); } // CFA258 260 typedef { KEYWORD_RETURN(TYPEDEF); } 259 261 typeof { KEYWORD_RETURN(TYPEOF); } // GCC … … 262 264 union { KEYWORD_RETURN(UNION); } 263 265 unsigned { KEYWORD_RETURN(UNSIGNED); } 266 __builtin_va_list { KEYWORD_RETURN(VALIST); } // GCC 264 267 void { KEYWORD_RETURN(VOID); } 265 268 volatile { KEYWORD_RETURN(VOLATILE); } -
src/Parser/parser.cc
rc5833e8 r0f9e4403 77 77 #include <cstdio> 78 78 #include <stack> 79 #include "lex.h" 80 #include "parser.h" 81 #include "ParseNode.h" 79 82 #include "TypedefTable.h" 80 #include "lex.h"81 #include "ParseNode.h"82 83 #include "TypeData.h" 83 84 #include "LinkageSpec.h" … … 90 91 91 92 /* Line 268 of yacc.c */ 92 #line 9 3"Parser/parser.cc"93 #line 94 "Parser/parser.cc" 93 94 94 95 /* Enabling traces. */ … … 138 139 SIGNED = 277, 139 140 UNSIGNED = 278, 140 BOOL = 279, 141 COMPLEX = 280, 142 IMAGINARY = 281, 143 TYPEOF = 282, 144 LABEL = 283, 145 ENUM = 284, 146 STRUCT = 285, 147 UNION = 286, 148 TYPE = 287, 149 FTYPE = 288, 150 DTYPE = 289, 151 CONTEXT = 290, 152 SIZEOF = 291, 153 OFFSETOF = 292, 154 ATTRIBUTE = 293, 155 EXTENSION = 294, 156 IF = 295, 157 ELSE = 296, 158 SWITCH = 297, 159 CASE = 298, 160 DEFAULT = 299, 161 DO = 300, 162 WHILE = 301, 163 FOR = 302, 164 BREAK = 303, 165 CONTINUE = 304, 166 GOTO = 305, 167 RETURN = 306, 168 CHOOSE = 307, 169 DISABLE = 308, 170 ENABLE = 309, 171 FALLTHRU = 310, 172 TRY = 311, 173 CATCH = 312, 174 CATCHRESUME = 313, 175 FINALLY = 314, 176 THROW = 315, 177 THROWRESUME = 316, 178 AT = 317, 179 ASM = 318, 180 ALIGNAS = 319, 181 ALIGNOF = 320, 182 ATOMIC = 321, 183 GENERIC = 322, 184 NORETURN = 323, 185 STATICASSERT = 324, 186 THREADLOCAL = 325, 187 IDENTIFIER = 326, 188 QUOTED_IDENTIFIER = 327, 189 TYPEDEFname = 328, 190 TYPEGENname = 329, 191 ATTR_IDENTIFIER = 330, 192 ATTR_TYPEDEFname = 331, 193 ATTR_TYPEGENname = 332, 194 INTEGERconstant = 333, 195 FLOATINGconstant = 334, 196 CHARACTERconstant = 335, 197 STRINGliteral = 336, 198 ZERO = 337, 199 ONE = 338, 200 ARROW = 339, 201 ICR = 340, 202 DECR = 341, 203 LS = 342, 204 RS = 343, 205 LE = 344, 206 GE = 345, 207 EQ = 346, 208 NE = 347, 209 ANDAND = 348, 210 OROR = 349, 211 ELLIPSIS = 350, 212 MULTassign = 351, 213 DIVassign = 352, 214 MODassign = 353, 215 PLUSassign = 354, 216 MINUSassign = 355, 217 LSassign = 356, 218 RSassign = 357, 219 ANDassign = 358, 220 ERassign = 359, 221 ORassign = 360, 222 ATassign = 361, 223 THEN = 362 141 VALIST = 279, 142 BOOL = 280, 143 COMPLEX = 281, 144 IMAGINARY = 282, 145 TYPEOF = 283, 146 LABEL = 284, 147 ENUM = 285, 148 STRUCT = 286, 149 UNION = 287, 150 OTYPE = 288, 151 FTYPE = 289, 152 DTYPE = 290, 153 TRAIT = 291, 154 SIZEOF = 292, 155 OFFSETOF = 293, 156 ATTRIBUTE = 294, 157 EXTENSION = 295, 158 IF = 296, 159 ELSE = 297, 160 SWITCH = 298, 161 CASE = 299, 162 DEFAULT = 300, 163 DO = 301, 164 WHILE = 302, 165 FOR = 303, 166 BREAK = 304, 167 CONTINUE = 305, 168 GOTO = 306, 169 RETURN = 307, 170 CHOOSE = 308, 171 DISABLE = 309, 172 ENABLE = 310, 173 FALLTHRU = 311, 174 TRY = 312, 175 CATCH = 313, 176 CATCHRESUME = 314, 177 FINALLY = 315, 178 THROW = 316, 179 THROWRESUME = 317, 180 AT = 318, 181 ASM = 319, 182 ALIGNAS = 320, 183 ALIGNOF = 321, 184 ATOMIC = 322, 185 GENERIC = 323, 186 NORETURN = 324, 187 STATICASSERT = 325, 188 THREADLOCAL = 326, 189 IDENTIFIER = 327, 190 QUOTED_IDENTIFIER = 328, 191 TYPEDEFname = 329, 192 TYPEGENname = 330, 193 ATTR_IDENTIFIER = 331, 194 ATTR_TYPEDEFname = 332, 195 ATTR_TYPEGENname = 333, 196 INTEGERconstant = 334, 197 FLOATINGconstant = 335, 198 CHARACTERconstant = 336, 199 STRINGliteral = 337, 200 ZERO = 338, 201 ONE = 339, 202 ARROW = 340, 203 ICR = 341, 204 DECR = 342, 205 LS = 343, 206 RS = 344, 207 LE = 345, 208 GE = 346, 209 EQ = 347, 210 NE = 348, 211 ANDAND = 349, 212 OROR = 350, 213 ELLIPSIS = 351, 214 MULTassign = 352, 215 DIVassign = 353, 216 MODassign = 354, 217 PLUSassign = 355, 218 MINUSassign = 356, 219 LSassign = 357, 220 RSassign = 358, 221 ANDassign = 359, 222 ERassign = 360, 223 ORassign = 361, 224 ATassign = 362, 225 THEN = 363 224 226 }; 225 227 #endif … … 246 248 #define SIGNED 277 247 249 #define UNSIGNED 278 248 #define BOOL 279 249 #define COMPLEX 280 250 #define IMAGINARY 281 251 #define TYPEOF 282 252 #define LABEL 283 253 #define ENUM 284 254 #define STRUCT 285 255 #define UNION 286 256 #define TYPE 287 257 #define FTYPE 288 258 #define DTYPE 289 259 #define CONTEXT 290 260 #define SIZEOF 291 261 #define OFFSETOF 292 262 #define ATTRIBUTE 293 263 #define EXTENSION 294 264 #define IF 295 265 #define ELSE 296 266 #define SWITCH 297 267 #define CASE 298 268 #define DEFAULT 299 269 #define DO 300 270 #define WHILE 301 271 #define FOR 302 272 #define BREAK 303 273 #define CONTINUE 304 274 #define GOTO 305 275 #define RETURN 306 276 #define CHOOSE 307 277 #define DISABLE 308 278 #define ENABLE 309 279 #define FALLTHRU 310 280 #define TRY 311 281 #define CATCH 312 282 #define CATCHRESUME 313 283 #define FINALLY 314 284 #define THROW 315 285 #define THROWRESUME 316 286 #define AT 317 287 #define ASM 318 288 #define ALIGNAS 319 289 #define ALIGNOF 320 290 #define ATOMIC 321 291 #define GENERIC 322 292 #define NORETURN 323 293 #define STATICASSERT 324 294 #define THREADLOCAL 325 295 #define IDENTIFIER 326 296 #define QUOTED_IDENTIFIER 327 297 #define TYPEDEFname 328 298 #define TYPEGENname 329 299 #define ATTR_IDENTIFIER 330 300 #define ATTR_TYPEDEFname 331 301 #define ATTR_TYPEGENname 332 302 #define INTEGERconstant 333 303 #define FLOATINGconstant 334 304 #define CHARACTERconstant 335 305 #define STRINGliteral 336 306 #define ZERO 337 307 #define ONE 338 308 #define ARROW 339 309 #define ICR 340 310 #define DECR 341 311 #define LS 342 312 #define RS 343 313 #define LE 344 314 #define GE 345 315 #define EQ 346 316 #define NE 347 317 #define ANDAND 348 318 #define OROR 349 319 #define ELLIPSIS 350 320 #define MULTassign 351 321 #define DIVassign 352 322 #define MODassign 353 323 #define PLUSassign 354 324 #define MINUSassign 355 325 #define LSassign 356 326 #define RSassign 357 327 #define ANDassign 358 328 #define ERassign 359 329 #define ORassign 360 330 #define ATassign 361 331 #define THEN 362 250 #define VALIST 279 251 #define BOOL 280 252 #define COMPLEX 281 253 #define IMAGINARY 282 254 #define TYPEOF 283 255 #define LABEL 284 256 #define ENUM 285 257 #define STRUCT 286 258 #define UNION 287 259 #define OTYPE 288 260 #define FTYPE 289 261 #define DTYPE 290 262 #define TRAIT 291 263 #define SIZEOF 292 264 #define OFFSETOF 293 265 #define ATTRIBUTE 294 266 #define EXTENSION 295 267 #define IF 296 268 #define ELSE 297 269 #define SWITCH 298 270 #define CASE 299 271 #define DEFAULT 300 272 #define DO 301 273 #define WHILE 302 274 #define FOR 303 275 #define BREAK 304 276 #define CONTINUE 305 277 #define GOTO 306 278 #define RETURN 307 279 #define CHOOSE 308 280 #define DISABLE 309 281 #define ENABLE 310 282 #define FALLTHRU 311 283 #define TRY 312 284 #define CATCH 313 285 #define CATCHRESUME 314 286 #define FINALLY 315 287 #define THROW 316 288 #define THROWRESUME 317 289 #define AT 318 290 #define ASM 319 291 #define ALIGNAS 320 292 #define ALIGNOF 321 293 #define ATOMIC 322 294 #define GENERIC 323 295 #define NORETURN 324 296 #define STATICASSERT 325 297 #define THREADLOCAL 326 298 #define IDENTIFIER 327 299 #define QUOTED_IDENTIFIER 328 300 #define TYPEDEFname 329 301 #define TYPEGENname 330 302 #define ATTR_IDENTIFIER 331 303 #define ATTR_TYPEDEFname 332 304 #define ATTR_TYPEGENname 333 305 #define INTEGERconstant 334 306 #define FLOATINGconstant 335 307 #define CHARACTERconstant 336 308 #define STRINGliteral 337 309 #define ZERO 338 310 #define ONE 339 311 #define ARROW 340 312 #define ICR 341 313 #define DECR 342 314 #define LS 343 315 #define RS 344 316 #define LE 345 317 #define GE 346 318 #define EQ 347 319 #define NE 348 320 #define ANDAND 349 321 #define OROR 350 322 #define ELLIPSIS 351 323 #define MULTassign 352 324 #define DIVassign 353 325 #define MODassign 354 326 #define PLUSassign 355 327 #define MINUSassign 356 328 #define LSassign 357 329 #define RSassign 358 330 #define ANDassign 359 331 #define ERassign 360 332 #define ORassign 361 333 #define ATassign 362 334 #define THEN 363 332 335 333 336 … … 339 342 340 343 /* Line 293 of yacc.c */ 341 #line 11 0"parser.yy"344 #line 112 "parser.yy" 342 345 343 346 Token tok; … … 356 359 357 360 /* Line 293 of yacc.c */ 358 #line 3 59"Parser/parser.cc"361 #line 362 "Parser/parser.cc" 359 362 } YYSTYPE; 360 363 # define YYSTYPE_IS_TRIVIAL 1 … … 368 371 369 372 /* Line 343 of yacc.c */ 370 #line 37 1"Parser/parser.cc"373 #line 374 "Parser/parser.cc" 371 374 372 375 #ifdef short … … 585 588 586 589 /* YYFINAL -- State number of the termination state. */ 587 #define YYFINAL 24 8590 #define YYFINAL 249 588 591 /* YYLAST -- Last index in YYTABLE. */ 589 #define YYLAST 11 042592 #define YYLAST 11449 590 593 591 594 /* YYNTOKENS -- Number of terminals. */ 592 #define YYNTOKENS 13 2595 #define YYNTOKENS 133 593 596 /* YYNNTS -- Number of nonterminals. */ 594 #define YYNNTS 2 38597 #define YYNNTS 240 595 598 /* YYNRULES -- Number of rules. */ 596 #define YYNRULES 75 1599 #define YYNRULES 754 597 600 /* YYNRULES -- Number of states. */ 598 #define YYNSTATES 15 78601 #define YYNSTATES 1581 599 602 600 603 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 601 604 #define YYUNDEFTOK 2 602 #define YYMAXUTOK 36 2605 #define YYMAXUTOK 363 603 606 604 607 #define YYTRANSLATE(YYX) \ … … 611 614 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 612 615 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 613 2, 2, 2, 11 7, 2, 2, 2, 124, 119, 2,614 10 8, 109, 118, 120, 115, 121, 112, 123, 2, 2,615 2, 2, 2, 2, 2, 2, 2, 2, 11 6, 131,616 12 5, 130, 126, 129, 2, 2, 2, 2, 2, 2,616 2, 2, 2, 118, 2, 2, 2, 125, 120, 2, 617 109, 110, 119, 121, 116, 122, 113, 124, 2, 2, 618 2, 2, 2, 2, 2, 2, 2, 2, 117, 132, 619 126, 131, 127, 130, 2, 2, 2, 2, 2, 2, 617 620 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 618 621 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 619 2, 11 0, 2, 111, 127, 2, 2, 2, 2, 2,622 2, 111, 2, 112, 128, 2, 2, 2, 2, 2, 620 623 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 621 624 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 622 2, 2, 2, 11 3, 128, 114, 122, 2, 2, 2,625 2, 2, 2, 114, 129, 115, 123, 2, 2, 2, 623 626 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 624 627 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … … 644 647 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 645 648 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 646 105, 106, 107 649 105, 106, 107, 108 647 650 }; 648 651 … … 685 688 1156, 1158, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, 686 689 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191, 1193, 1195, 687 1197, 1199, 1201, 1203, 1205, 120 8, 1211, 1215, 1219, 1221,688 122 5, 1227, 1230, 1233, 1236, 1241, 1246, 1251, 1256, 1258,689 126 1, 1264, 1268, 1270, 1273, 1276, 1278, 1281, 1284, 1288,690 1290, 129 3, 1296, 1298, 1300, 1305, 1308, 1314, 1322, 1325,691 132 8, 1331, 1333, 1336, 1339, 1343, 1346, 1350, 1352, 1355,692 135 9, 1362, 1365, 1370, 1371, 1373, 1376, 1379, 1381, 1382,693 138 4, 1387, 1390, 1396, 1403, 1406, 1409, 1414, 1415, 1418,694 14 19, 1421, 1423, 1425, 1431, 1437, 1443, 1445, 1451, 1457,695 14 67, 1469, 1475, 1476, 1478, 1480, 1486, 1488, 1490, 1496,696 1 502, 1504, 1508, 1512, 1517, 1519, 1521, 1523, 1525, 1528,697 15 30, 1534, 1538, 1540, 1543, 1545, 1549, 1551, 1553, 1555,698 1557, 1559, 1561, 1563, 1565, 1567, 1569, 1571, 157 4, 1576,699 157 8, 1580, 1583, 1584, 1587, 1590, 1592, 1597, 1598, 1600,700 1603, 160 7, 1612, 1615, 1618, 1620, 1623, 1625, 1628, 1634,701 16 40, 1648, 1655, 1657, 1660, 1663, 1667, 1669, 1672, 1675,702 16 80, 1683, 1688, 1689, 1694, 1697, 1699, 1701, 1703, 1704,703 1707, 17 13, 1719, 1733, 1735, 1737, 1741, 1745, 1748, 1752,704 175 6, 1759, 1764, 1766, 1773, 1783, 1784, 1796, 1798, 1802,705 180 6, 1810, 1812, 1814, 1820, 1823, 1829, 1830, 1832, 1834,706 183 8, 1839, 1841, 1843, 1845, 1847, 1848, 1855, 1858, 1860,707 186 3, 1868, 1871, 1875, 1879, 1883, 1888, 1894, 1900, 1906,708 19 13, 1915, 1917, 1919, 1923, 1924, 1930, 1931, 1933, 1935,709 193 8, 1945, 1947, 1951, 1952, 1954, 1959, 1961, 1963, 1965,710 1967, 19 70, 1972, 1975, 1978, 1980, 1984, 1987, 1991, 1995,711 199 8, 2003, 2008, 2012, 2021, 2025, 2028, 2030, 2033, 2040,712 20 49, 2053, 2056, 2060, 2064, 2069, 2074, 2078, 2080, 2082,713 2084, 208 9, 2096, 2100, 2103, 2107, 2111, 2116, 2121, 2125,714 212 8, 2130, 2133, 2136, 2138, 2142, 2145, 2149, 2153, 2156,715 21 61, 2166, 2170, 2177, 2186, 2190, 2193, 2195, 2198, 2201,716 220 4, 2208, 2212, 2215, 2220, 2225, 2229, 2236, 2245, 2249,717 22 52, 2254, 2257, 2260, 2262, 2264, 2267, 2271, 2275, 2278,718 22 83, 2290, 2299, 2301, 2304, 2307, 2309, 2312, 2315, 2319,719 23 23, 2325, 2330, 2335, 2339, 2345, 2354, 2358, 2361, 2365,720 236 7, 2373, 2379, 2386, 2393, 2395, 2398, 2401, 2403, 2406,721 240 9, 2413, 2417, 2419, 2424, 2429, 2433, 2439, 2448, 2452,722 24 54, 2457, 2459, 2462, 2469, 2475, 2482, 2490, 2498, 2500,723 2 503, 2506, 2508, 2511, 2514, 2518, 2522, 2524, 2529, 2534,724 253 8, 2547, 2551, 2553, 2555, 2558, 2560, 2562, 2565, 2569,725 25 72, 2576, 2579, 2583, 2587, 2590, 2595, 2599, 2602, 2606,726 260 9, 2614, 2618, 2621, 2628, 2635, 2642, 2650, 2652, 2655,727 265 7, 2659, 2661, 2664, 2668, 2671, 2675, 2678, 2682, 2686,728 26 91, 2694, 2698, 2703, 2706, 2712, 2718, 2725, 2732, 2733,729 273 5, 2736690 1197, 1199, 1201, 1203, 1205, 1207, 1210, 1213, 1217, 1221, 691 1223, 1227, 1229, 1232, 1235, 1238, 1243, 1248, 1253, 1258, 692 1260, 1263, 1266, 1270, 1272, 1275, 1278, 1280, 1283, 1286, 693 1290, 1292, 1295, 1298, 1300, 1302, 1307, 1310, 1311, 1318, 694 1326, 1329, 1332, 1335, 1337, 1340, 1343, 1347, 1350, 1354, 695 1356, 1359, 1363, 1366, 1369, 1374, 1375, 1377, 1380, 1383, 696 1385, 1386, 1388, 1391, 1394, 1400, 1403, 1404, 1412, 1415, 697 1420, 1421, 1424, 1425, 1427, 1429, 1431, 1437, 1443, 1449, 698 1451, 1457, 1463, 1473, 1475, 1481, 1482, 1484, 1486, 1492, 699 1494, 1496, 1502, 1508, 1510, 1514, 1518, 1523, 1525, 1527, 700 1529, 1531, 1534, 1536, 1540, 1544, 1546, 1549, 1551, 1555, 701 1557, 1559, 1561, 1563, 1565, 1567, 1569, 1571, 1573, 1575, 702 1577, 1580, 1582, 1584, 1586, 1589, 1590, 1593, 1596, 1598, 703 1603, 1604, 1606, 1609, 1613, 1618, 1621, 1624, 1626, 1629, 704 1631, 1634, 1640, 1646, 1654, 1661, 1663, 1666, 1669, 1673, 705 1675, 1678, 1681, 1686, 1689, 1694, 1695, 1700, 1703, 1705, 706 1707, 1709, 1710, 1713, 1719, 1725, 1739, 1741, 1743, 1747, 707 1751, 1754, 1758, 1762, 1765, 1770, 1772, 1779, 1789, 1790, 708 1802, 1804, 1808, 1812, 1816, 1818, 1820, 1826, 1829, 1835, 709 1836, 1838, 1840, 1844, 1845, 1847, 1849, 1851, 1853, 1854, 710 1861, 1864, 1866, 1869, 1874, 1877, 1881, 1885, 1889, 1894, 711 1900, 1906, 1912, 1919, 1921, 1923, 1925, 1929, 1930, 1936, 712 1937, 1939, 1941, 1944, 1951, 1953, 1957, 1958, 1960, 1965, 713 1967, 1969, 1971, 1973, 1976, 1978, 1981, 1984, 1986, 1990, 714 1993, 1997, 2001, 2004, 2009, 2014, 2018, 2027, 2031, 2034, 715 2036, 2039, 2046, 2055, 2059, 2062, 2066, 2070, 2075, 2080, 716 2084, 2086, 2088, 2090, 2095, 2102, 2106, 2109, 2113, 2117, 717 2122, 2127, 2131, 2134, 2136, 2139, 2142, 2144, 2148, 2151, 718 2155, 2159, 2162, 2167, 2172, 2176, 2183, 2192, 2196, 2199, 719 2201, 2204, 2207, 2210, 2214, 2218, 2221, 2226, 2231, 2235, 720 2242, 2251, 2255, 2258, 2260, 2263, 2266, 2268, 2270, 2273, 721 2277, 2281, 2284, 2289, 2296, 2305, 2307, 2310, 2313, 2315, 722 2318, 2321, 2325, 2329, 2331, 2336, 2341, 2345, 2351, 2360, 723 2364, 2367, 2371, 2373, 2379, 2385, 2392, 2399, 2401, 2404, 724 2407, 2409, 2412, 2415, 2419, 2423, 2425, 2430, 2435, 2439, 725 2445, 2454, 2458, 2460, 2463, 2465, 2468, 2475, 2481, 2488, 726 2496, 2504, 2506, 2509, 2512, 2514, 2517, 2520, 2524, 2528, 727 2530, 2535, 2540, 2544, 2553, 2557, 2559, 2561, 2564, 2566, 728 2568, 2571, 2575, 2578, 2582, 2585, 2589, 2593, 2596, 2601, 729 2605, 2608, 2612, 2615, 2620, 2624, 2627, 2634, 2641, 2648, 730 2656, 2658, 2661, 2663, 2665, 2667, 2670, 2674, 2677, 2681, 731 2684, 2688, 2692, 2697, 2700, 2704, 2709, 2712, 2718, 2724, 732 2731, 2738, 2739, 2741, 2742 730 733 }; 731 734 … … 733 736 static const yytype_int16 yyrhs[] = 734 737 { 735 298, 0, -1, -1, -1, 78, -1, 79, -1, 80,736 -1, 7 1, -1, 75, -1, 139, -1, 71, -1, 75,737 -1, 7 1, -1, 139, -1, 82, -1, 83, -1, 81,738 -1, 14 0, 81, -1, 71, -1, 139, -1, 108, 167,739 1 09, -1, 108, 171, 109, -1, 141, -1, 142, 110,740 13 3, 162, 134, 111, -1, 142, 108, 143, 109, -1,741 14 2, 112, 138, -1, 142, 112, 110, 133, 145, 134,742 11 1, -1, 142, 84, 138, -1, 142, 84, 110, 133,743 14 5, 134, 111, -1, 142, 85, -1, 142, 86, -1,744 10 8, 271, 109, 113, 275, 368, 114, -1, 142, 113,745 14 3, 114, -1, 144, -1, 143, 115, 144, -1, -1,746 16 2, -1, 138, 116, 162, -1, 110, 133, 162, 134,747 11 1, 116, 162, -1, 110, 133, 162, 115, 165, 134,748 11 1, 116, 162, -1, 146, -1, 145, 115, 146, -1,749 13 8, -1, 138, 112, 146, -1, 138, 112, 110, 133,750 14 5, 134, 111, -1, 138, 84, 146, -1, 138, 84,751 11 0, 133, 145, 134, 111, -1, 142, -1, 135, -1,752 14 0, -1, 85, 147, -1, 86, 147, -1, 39, 149,753 -1, 14 8, 149, -1, 117, 149, -1, 118, 149, -1,754 3 6, 147, -1, 36, 108, 271, 109, -1, 37, 108,755 27 1, 115, 138, 109, -1, 75, -1, 75, 108, 272,756 1 09, -1, 75, 108, 144, 109, -1, 65, 147, -1,757 6 5, 108, 271, 109, -1, 93, 138, -1, 119, -1,758 12 0, -1, 121, -1, 122, -1, 147, -1, 108, 271,759 1 09, 149, -1, 108, 271, 109, 164, -1, 149, -1,760 15 0, 118, 149, -1, 150, 123, 149, -1, 150, 124,761 1 49, -1, 150, -1, 151, 120, 150, -1, 151, 121,762 15 0, -1, 151, -1, 152, 87, 151, -1, 152, 88,763 15 1, -1, 152, -1, 153, 125, 152, -1, 153, 126,764 15 2, -1, 153, 89, 152, -1, 153, 90, 152, -1,765 15 3, -1, 154, 91, 153, -1, 154, 92, 153, -1,766 15 4, -1, 155, 119, 154, -1, 155, -1, 156, 127,767 15 5, -1, 156, -1, 157, 128, 156, -1, 157, -1,768 15 8, 93, 157, -1, 158, -1, 159, 94, 158, -1,769 1 59, -1, 159, 129, 167, 116, 160, -1, 159, 129,770 11 6, 160, -1, 159, 129, 167, 116, 164, -1, 160,771 -1, 16 0, -1, 147, 130, 162, -1, 147, 166, 162,772 -1, 16 4, 369, -1, -1, 162, -1, 110, 111, -1,773 11 0, 133, 162, 134, 111, -1, 110, 133, 115, 165,774 13 4, 111, -1, 110, 133, 162, 115, 165, 134, 111,775 -1, 16 3, -1, 165, 115, 163, -1, 96, -1, 97,776 -1, 9 8, -1, 99, -1, 100, -1, 101, -1, 102,777 -1, 10 3, -1, 104, -1, 105, -1, 162, -1, 167,778 11 5, 162, -1, -1, 167, -1, 170, -1, 171, -1,779 17 5, -1, 176, -1, 188, -1, 190, -1, 191, -1,780 19 6, -1, 127, 142, 113, 143, 114, 131, -1, 138,781 11 6, 308, 169, -1, 113, 114, -1, 113, 133, 133,782 20 7, 172, 134, 114, -1, 173, -1, 172, 133, 173,783 -1, 21 0, -1, 39, 210, -1, 304, -1, 169, 134,784 -1, 1 69, -1, 174, 169, -1, 168, 131, -1, 40,785 10 8, 167, 109, 169, -1, 40, 108, 167, 109, 169,786 4 1, 169, -1, 42, 108, 167, 109, 181, -1, 42,787 10 8, 167, 109, 113, 133, 203, 182, 114, -1, 52,788 10 8, 167, 109, 181, -1, 52, 108, 167, 109, 113,789 13 3, 203, 184, 114, -1, 161, -1, 161, 95, 161,790 -1, 30 6, -1, 177, -1, 178, 115, 177, -1, 43,791 17 8, 116, -1, 44, 116, -1, 179, -1, 180, 179,792 -1, 18 0, 169, -1, -1, 183, -1, 180, 174, -1,793 18 3, 180, 174, -1, -1, 185, -1, 180, 187, -1,794 18 0, 174, 186, -1, 185, 180, 187, -1, 185, 180,795 17 4, 186, -1, -1, 187, -1, 55, -1, 55, 131,796 -1, 4 6, 108, 167, 109, 169, -1, 45, 169, 46,797 10 8, 167, 109, 131, -1, 47, 108, 133, 189, 109,798 1 69, -1, 168, 134, 131, 168, 131, 168, -1, 210,799 16 8, 131, 168, -1, 50, 138, 131, -1, 50, 118,800 16 7, 131, -1, 49, 131, -1, 49, 138, 131, -1,801 4 8, 131, -1, 48, 138, 131, -1, 51, 168, 131,802 -1, 6 0, 163, 131, -1, 61, 163, 131, -1, 61,803 16 3, 62, 162, 131, -1, 56, 171, 192, -1, 56,804 17 1, 194, -1, 56, 171, 192, 194, -1, 193, -1,805 5 7, 108, 95, 109, 171, -1, 193, 57, 108, 95,806 1 09, 171, -1, 58, 108, 95, 109, 171, -1, 193,807 5 8, 108, 95, 109, 171, -1, 57, 108, 133, 133,808 19 5, 134, 109, 171, 134, -1, 193, 57, 108, 133,809 13 3, 195, 134, 109, 171, 134, -1, 58, 108, 133,810 13 3, 195, 134, 109, 171, 134, -1, 193, 58, 108,811 13 3, 133, 195, 134, 109, 171, 134, -1, 59, 171,812 -1, 22 3, -1, 223, 305, -1, 223, 353, -1, 362,813 13 8, -1, 362, -1, 63, 197, 108, 140, 109, 131,814 -1, 6 3, 197, 108, 140, 116, 198, 109, 131, -1,815 6 3, 197, 108, 140, 116, 198, 116, 198, 109, 131,816 -1, 6 3, 197, 108, 140, 116, 198, 116, 198, 116,817 20 1, 109, 131, -1, 63, 197, 50, 108, 140, 116,818 11 6, 198, 116, 201, 116, 202, 109, 131, -1, -1,819 11, -1, -1, 199, -1, 200, -1, 199, 115, 200,820 -1, 14 0, 108, 161, 109, -1, 110, 161, 111, 140,821 10 8, 161, 109, -1, -1, 140, -1, 201, 115, 140,822 -1, 13 8, -1, 202, 115, 138, -1, 134, -1, 204,823 -1, 21 0, -1, 204, 133, 210, -1, 134, -1, 206,824 -1, 22 0, -1, 206, 133, 220, -1, -1, 208, -1,825 2 8, 209, 131, -1, 208, 28, 209, 131, -1, 270,826 -1, 2 09, 115, 270, -1, 211, -1, 220, -1, 212,827 13 4, 131, -1, 217, 134, 131, -1, 214, 134, 131,828 -1, 2 89, 134, 131, -1, 292, 134, 131, -1, 213,829 27 3, -1, 229, 213, 273, -1, 212, 134, 115, 133,830 2 68, 273, -1, 363, 268, 307, -1, 366, 268, 307,831 -1, 22 5, 366, 268, 307, -1, 215, -1, 225, 215,832 -1, 2 29, 215, -1, 229, 225, 215, -1, 214, 134,833 11 5, 133, 268, -1, 110, 111, 268, 108, 133, 256,834 13 4, 109, -1, 366, 268, 108, 133, 256, 134, 109,835 -1, 21 6, 268, 108, 133, 256, 134, 109, -1, 110,836 13 3, 258, 134, 111, -1, 110, 133, 258, 134, 115,837 13 3, 259, 134, 111, -1, 3, 213, -1, 3, 215,838 -1, 21 7, 134, 115, 133, 138, -1, 3, 223, 305,839 -1, 21 8, 134, 115, 133, 305, -1, 225, 3, 223,840 30 5, -1, 223, 3, 305, -1, 223, 3, 225, 305,841 -1, 3, 13 8, 130, 162, -1, 219, 134, 115, 133,842 13 8, 130, 162, -1, 221, 134, 131, -1, 218, 134,843 13 1, -1, 219, 134, 131, -1, 238, 134, 131, -1,844 22 2, 305, 307, 273, -1, 221, 115, 308, 305, 307,845 27 3, -1, 234, -1, 238, -1, 240, -1, 279, -1,846 23 5, -1, 239, -1, 241, -1, 280, -1, -1, 225,847 -1, 22 6, -1, 225, 226, -1, 227, -1, 310, -1,848 10, -1, 12, -1, 11, -1, 14, -1, 6 6, -1,849 -1, 13, 10 8, 228, 282, 109, -1, 230, -1, 225,850 23 0, -1, 229, 225, 230, -1, 231, -1, 230, 231,851 -1, 23 2, -1, 5, -1, 7, -1, 4, -1, 6,852 -1, 8, -1, 9, -1, 6 8, -1, 70, -1, 16,738 301, 0, -1, -1, -1, 79, -1, 80, -1, 81, 739 -1, 72, -1, 76, -1, 140, -1, 72, -1, 76, 740 -1, 72, -1, 140, -1, 83, -1, 84, -1, 82, 741 -1, 141, 82, -1, 72, -1, 140, -1, 109, 168, 742 110, -1, 109, 172, 110, -1, 142, -1, 143, 111, 743 134, 163, 135, 112, -1, 143, 109, 144, 110, -1, 744 143, 113, 139, -1, 143, 113, 111, 134, 146, 135, 745 112, -1, 143, 85, 139, -1, 143, 85, 111, 134, 746 146, 135, 112, -1, 143, 86, -1, 143, 87, -1, 747 109, 274, 110, 114, 278, 371, 115, -1, 143, 114, 748 144, 115, -1, 145, -1, 144, 116, 145, -1, -1, 749 163, -1, 139, 117, 163, -1, 111, 134, 163, 135, 750 112, 117, 163, -1, 111, 134, 163, 116, 166, 135, 751 112, 117, 163, -1, 147, -1, 146, 116, 147, -1, 752 139, -1, 139, 113, 147, -1, 139, 113, 111, 134, 753 146, 135, 112, -1, 139, 85, 147, -1, 139, 85, 754 111, 134, 146, 135, 112, -1, 143, -1, 136, -1, 755 141, -1, 86, 148, -1, 87, 148, -1, 40, 150, 756 -1, 149, 150, -1, 118, 150, -1, 119, 150, -1, 757 37, 148, -1, 37, 109, 274, 110, -1, 38, 109, 758 274, 116, 139, 110, -1, 76, -1, 76, 109, 275, 759 110, -1, 76, 109, 145, 110, -1, 66, 148, -1, 760 66, 109, 274, 110, -1, 94, 139, -1, 120, -1, 761 121, -1, 122, -1, 123, -1, 148, -1, 109, 274, 762 110, 150, -1, 109, 274, 110, 165, -1, 150, -1, 763 151, 119, 150, -1, 151, 124, 150, -1, 151, 125, 764 150, -1, 151, -1, 152, 121, 151, -1, 152, 122, 765 151, -1, 152, -1, 153, 88, 152, -1, 153, 89, 766 152, -1, 153, -1, 154, 126, 153, -1, 154, 127, 767 153, -1, 154, 90, 153, -1, 154, 91, 153, -1, 768 154, -1, 155, 92, 154, -1, 155, 93, 154, -1, 769 155, -1, 156, 120, 155, -1, 156, -1, 157, 128, 770 156, -1, 157, -1, 158, 129, 157, -1, 158, -1, 771 159, 94, 158, -1, 159, -1, 160, 95, 159, -1, 772 160, -1, 160, 130, 168, 117, 161, -1, 160, 130, 773 117, 161, -1, 160, 130, 168, 117, 165, -1, 161, 774 -1, 161, -1, 148, 131, 163, -1, 148, 167, 163, 775 -1, 165, 372, -1, -1, 163, -1, 111, 112, -1, 776 111, 134, 163, 135, 112, -1, 111, 134, 116, 166, 777 135, 112, -1, 111, 134, 163, 116, 166, 135, 112, 778 -1, 164, -1, 166, 116, 164, -1, 97, -1, 98, 779 -1, 99, -1, 100, -1, 101, -1, 102, -1, 103, 780 -1, 104, -1, 105, -1, 106, -1, 163, -1, 168, 781 116, 163, -1, -1, 168, -1, 171, -1, 172, -1, 782 176, -1, 177, -1, 189, -1, 191, -1, 192, -1, 783 197, -1, 128, 143, 114, 144, 115, 132, -1, 139, 784 117, 311, 170, -1, 114, 115, -1, 114, 134, 134, 785 208, 173, 135, 115, -1, 174, -1, 173, 134, 174, 786 -1, 211, -1, 40, 211, -1, 307, -1, 170, 135, 787 -1, 170, -1, 175, 170, -1, 169, 132, -1, 41, 788 109, 168, 110, 170, -1, 41, 109, 168, 110, 170, 789 42, 170, -1, 43, 109, 168, 110, 182, -1, 43, 790 109, 168, 110, 114, 134, 204, 183, 115, -1, 53, 791 109, 168, 110, 182, -1, 53, 109, 168, 110, 114, 792 134, 204, 185, 115, -1, 162, -1, 162, 96, 162, 793 -1, 309, -1, 178, -1, 179, 116, 178, -1, 44, 794 179, 117, -1, 45, 117, -1, 180, -1, 181, 180, 795 -1, 181, 170, -1, -1, 184, -1, 181, 175, -1, 796 184, 181, 175, -1, -1, 186, -1, 181, 188, -1, 797 181, 175, 187, -1, 186, 181, 188, -1, 186, 181, 798 175, 187, -1, -1, 188, -1, 56, -1, 56, 132, 799 -1, 47, 109, 168, 110, 170, -1, 46, 170, 47, 800 109, 168, 110, 132, -1, 48, 109, 134, 190, 110, 801 170, -1, 169, 135, 132, 169, 132, 169, -1, 211, 802 169, 132, 169, -1, 51, 139, 132, -1, 51, 119, 803 168, 132, -1, 50, 132, -1, 50, 139, 132, -1, 804 49, 132, -1, 49, 139, 132, -1, 52, 169, 132, 805 -1, 61, 164, 132, -1, 62, 164, 132, -1, 62, 806 164, 63, 163, 132, -1, 57, 172, 193, -1, 57, 807 172, 195, -1, 57, 172, 193, 195, -1, 194, -1, 808 58, 109, 96, 110, 172, -1, 194, 58, 109, 96, 809 110, 172, -1, 59, 109, 96, 110, 172, -1, 194, 810 59, 109, 96, 110, 172, -1, 58, 109, 134, 134, 811 196, 135, 110, 172, 135, -1, 194, 58, 109, 134, 812 134, 196, 135, 110, 172, 135, -1, 59, 109, 134, 813 134, 196, 135, 110, 172, 135, -1, 194, 59, 109, 814 134, 134, 196, 135, 110, 172, 135, -1, 60, 172, 815 -1, 224, -1, 224, 308, -1, 224, 356, -1, 365, 816 139, -1, 365, -1, 64, 198, 109, 141, 110, 132, 817 -1, 64, 198, 109, 141, 117, 199, 110, 132, -1, 818 64, 198, 109, 141, 117, 199, 117, 199, 110, 132, 819 -1, 64, 198, 109, 141, 117, 199, 117, 199, 117, 820 202, 110, 132, -1, 64, 198, 51, 109, 141, 117, 821 117, 199, 117, 202, 117, 203, 110, 132, -1, -1, 822 11, -1, -1, 200, -1, 201, -1, 200, 116, 201, 823 -1, 141, 109, 162, 110, -1, 111, 162, 112, 141, 824 109, 162, 110, -1, -1, 141, -1, 202, 116, 141, 825 -1, 139, -1, 203, 116, 139, -1, 135, -1, 205, 826 -1, 211, -1, 205, 134, 211, -1, 135, -1, 207, 827 -1, 221, -1, 207, 134, 221, -1, -1, 209, -1, 828 29, 210, 132, -1, 209, 29, 210, 132, -1, 273, 829 -1, 210, 116, 273, -1, 212, -1, 221, -1, 213, 830 135, 132, -1, 218, 135, 132, -1, 215, 135, 132, 831 -1, 292, 135, 132, -1, 295, 135, 132, -1, 214, 832 276, -1, 230, 214, 276, -1, 213, 135, 116, 134, 833 271, 276, -1, 366, 271, 310, -1, 369, 271, 310, 834 -1, 226, 369, 271, 310, -1, 216, -1, 226, 216, 835 -1, 230, 216, -1, 230, 226, 216, -1, 215, 135, 836 116, 134, 271, -1, 111, 112, 271, 109, 134, 259, 837 135, 110, -1, 369, 271, 109, 134, 259, 135, 110, 838 -1, 217, 271, 109, 134, 259, 135, 110, -1, 111, 839 134, 261, 135, 112, -1, 111, 134, 261, 135, 116, 840 134, 262, 135, 112, -1, 3, 214, -1, 3, 216, 841 -1, 218, 135, 116, 134, 139, -1, 3, 224, 308, 842 -1, 219, 135, 116, 134, 308, -1, 226, 3, 224, 843 308, -1, 224, 3, 308, -1, 224, 3, 226, 308, 844 -1, 3, 139, 131, 163, -1, 220, 135, 116, 134, 845 139, 131, 163, -1, 222, 135, 132, -1, 219, 135, 846 132, -1, 220, 135, 132, -1, 239, 135, 132, -1, 847 223, 308, 310, 276, -1, 222, 116, 311, 308, 310, 848 276, -1, 235, -1, 239, -1, 241, -1, 282, -1, 849 236, -1, 240, -1, 242, -1, 283, -1, -1, 226, 850 -1, 227, -1, 226, 227, -1, 228, -1, 313, -1, 851 10, -1, 12, -1, 11, -1, 14, -1, 67, -1, 852 -1, 13, 109, 229, 285, 110, -1, 231, -1, 226, 853 231, -1, 230, 226, 231, -1, 232, -1, 231, 232, 854 -1, 233, -1, 5, -1, 7, -1, 4, -1, 6, 855 -1, 8, -1, 9, -1, 69, -1, 71, -1, 16, 853 856 -1, 21, -1, 20, -1, 18, -1, 19, -1, 17, 854 -1, 22, -1, 23, -1, 15, -1, 24, -1, 25, 855 -1, 26, -1, 235, -1, 229, 235, -1, 234, 231, 856 -1, 234, 231, 225, -1, 234, 231, 235, -1, 236, 857 -1, 224, 237, 224, -1, 233, -1, 225, 233, -1, 858 236, 226, -1, 236, 233, -1, 27, 108, 272, 109, 859 -1, 27, 108, 167, 109, -1, 77, 108, 272, 109, 860 -1, 77, 108, 167, 109, -1, 239, -1, 229, 239, 861 -1, 238, 231, -1, 238, 231, 225, -1, 242, -1, 862 225, 242, -1, 239, 226, -1, 241, -1, 229, 241, 863 -1, 240, 231, -1, 240, 231, 225, -1, 73, -1, 864 225, 73, -1, 241, 226, -1, 243, -1, 253, -1, 865 244, 113, 245, 114, -1, 244, 270, -1, 244, 270, 866 113, 245, 114, -1, 244, 108, 288, 109, 113, 245, 867 114, -1, 244, 281, -1, 30, 308, -1, 31, 308, 868 -1, 246, -1, 245, 246, -1, 247, 131, -1, 39, 869 247, 131, -1, 248, 131, -1, 39, 248, 131, -1, 870 362, -1, 362, 270, -1, 247, 115, 270, -1, 247, 871 115, -1, 223, 249, -1, 248, 115, 308, 249, -1, 872 -1, 251, -1, 314, 250, -1, 327, 250, -1, 353, 873 -1, -1, 251, -1, 116, 161, -1, 29, 308, -1, 874 252, 113, 254, 368, 114, -1, 252, 270, 113, 254, 875 368, 114, -1, 252, 270, -1, 270, 255, -1, 254, 876 115, 270, 255, -1, -1, 130, 161, -1, -1, 257, 877 -1, 259, -1, 258, -1, 258, 134, 115, 133, 259, 878 -1, 259, 134, 115, 133, 95, -1, 258, 134, 115, 879 133, 95, -1, 263, -1, 259, 134, 115, 133, 263, 880 -1, 258, 134, 115, 133, 263, -1, 258, 134, 115, 881 133, 259, 134, 115, 133, 263, -1, 264, -1, 259, 882 134, 115, 133, 264, -1, -1, 261, -1, 262, -1, 883 262, 134, 115, 133, 95, -1, 266, -1, 265, -1, 884 262, 134, 115, 133, 266, -1, 262, 134, 115, 133, 885 265, -1, 265, -1, 358, 268, 369, -1, 366, 268, 886 369, -1, 225, 366, 268, 369, -1, 215, -1, 266, 887 -1, 358, -1, 366, -1, 225, 366, -1, 367, -1, 888 222, 332, 369, -1, 222, 336, 369, -1, 222, -1, 889 222, 347, -1, 138, -1, 267, 115, 138, -1, 136, 890 -1, 73, -1, 74, -1, 137, -1, 73, -1, 74, 891 -1, 138, -1, 73, -1, 74, -1, 362, -1, 223, 892 -1, 223, 353, -1, 362, -1, 367, -1, 223, -1, 893 223, 341, -1, -1, 130, 274, -1, 106, 274, -1, 894 162, -1, 113, 275, 368, 114, -1, -1, 274, -1, 895 276, 274, -1, 275, 115, 274, -1, 275, 115, 276, 896 274, -1, 277, 116, -1, 270, 116, -1, 278, -1, 897 277, 278, -1, 79, -1, 112, 270, -1, 110, 133, 898 162, 134, 111, -1, 110, 133, 306, 134, 111, -1, 899 110, 133, 161, 95, 161, 134, 111, -1, 112, 110, 900 133, 145, 134, 111, -1, 280, -1, 229, 280, -1, 901 279, 231, -1, 279, 231, 225, -1, 281, -1, 225, 902 281, -1, 280, 226, -1, 74, 108, 288, 109, -1, 903 283, 369, -1, 282, 115, 283, 369, -1, -1, 285, 904 270, 284, 286, -1, 223, 332, -1, 32, -1, 34, 905 -1, 33, -1, -1, 286, 287, -1, 128, 270, 108, 906 288, 109, -1, 128, 113, 133, 294, 114, -1, 128, 907 108, 133, 282, 134, 109, 113, 133, 294, 114, 108, 908 288, 109, -1, 272, -1, 162, -1, 288, 115, 272, 909 -1, 288, 115, 162, -1, 32, 290, -1, 230, 32, 910 290, -1, 289, 115, 290, -1, 291, 286, -1, 291, 911 286, 130, 272, -1, 270, -1, 269, 108, 133, 282, 912 134, 109, -1, 35, 270, 108, 133, 282, 134, 109, 913 113, 114, -1, -1, 35, 270, 108, 133, 282, 134, 914 109, 113, 293, 294, 114, -1, 295, -1, 294, 133, 915 295, -1, 296, 134, 131, -1, 297, 134, 131, -1, 916 213, -1, 215, -1, 296, 134, 115, 133, 268, -1, 917 223, 305, -1, 297, 134, 115, 133, 305, -1, -1, 918 299, -1, 301, -1, 299, 133, 301, -1, -1, 299, 919 -1, 210, -1, 303, -1, 196, -1, -1, 5, 81, 920 302, 113, 300, 114, -1, 39, 301, -1, 304, -1, 921 319, 171, -1, 323, 133, 205, 171, -1, 214, 171, 922 -1, 222, 319, 171, -1, 225, 319, 171, -1, 229, 923 319, 171, -1, 229, 225, 319, 171, -1, 222, 323, 924 133, 205, 171, -1, 225, 323, 133, 205, 171, -1, 925 229, 323, 133, 205, 171, -1, 229, 225, 323, 133, 926 205, 171, -1, 314, -1, 319, -1, 327, -1, 161, 927 122, 161, -1, -1, 63, 108, 140, 109, 308, -1, 928 -1, 309, -1, 310, -1, 309, 310, -1, 38, 108, 929 108, 311, 109, 109, -1, 312, -1, 311, 115, 312, 930 -1, -1, 313, -1, 313, 108, 168, 109, -1, 268, 931 -1, 232, -1, 233, -1, 226, -1, 315, 308, -1, 932 316, -1, 317, 308, -1, 318, 308, -1, 136, -1, 933 108, 315, 109, -1, 118, 314, -1, 118, 225, 314, 934 -1, 108, 316, 109, -1, 315, 345, -1, 108, 316, 935 109, 345, -1, 108, 317, 109, 346, -1, 108, 317, 936 109, -1, 108, 316, 109, 108, 133, 260, 134, 109, 937 -1, 108, 318, 109, -1, 320, 308, -1, 321, -1, 938 322, 308, -1, 315, 108, 133, 260, 134, 109, -1, 939 108, 321, 109, 108, 133, 260, 134, 109, -1, 108, 940 320, 109, -1, 118, 319, -1, 118, 225, 319, -1, 941 108, 321, 109, -1, 108, 321, 109, 345, -1, 108, 942 322, 109, 346, -1, 108, 322, 109, -1, 324, -1, 943 325, -1, 326, -1, 315, 108, 267, 109, -1, 108, 944 325, 109, 108, 267, 109, -1, 108, 324, 109, -1, 945 118, 323, -1, 118, 225, 323, -1, 108, 325, 109, 946 -1, 108, 325, 109, 345, -1, 108, 326, 109, 346, 947 -1, 108, 326, 109, -1, 328, 308, -1, 329, -1, 948 330, 308, -1, 331, 308, -1, 337, -1, 108, 328, 949 109, -1, 118, 327, -1, 118, 225, 327, -1, 108, 950 329, 109, -1, 328, 345, -1, 108, 329, 109, 345, 951 -1, 108, 330, 109, 346, -1, 108, 330, 109, -1, 952 328, 108, 133, 260, 134, 109, -1, 108, 329, 109, 953 108, 133, 260, 134, 109, -1, 108, 331, 109, -1, 954 315, 308, -1, 333, -1, 334, 308, -1, 335, 308, 955 -1, 118, 332, -1, 118, 225, 332, -1, 108, 333, 956 109, -1, 315, 351, -1, 108, 333, 109, 345, -1, 957 108, 334, 109, 346, -1, 108, 334, 109, -1, 315, 958 108, 133, 260, 134, 109, -1, 108, 333, 109, 108, 959 133, 260, 134, 109, -1, 108, 335, 109, -1, 337, 960 308, -1, 338, -1, 339, 308, -1, 340, 308, -1, 961 73, -1, 74, -1, 118, 336, -1, 118, 225, 336, 962 -1, 108, 338, 109, -1, 337, 351, -1, 108, 338, 963 109, 351, -1, 337, 108, 133, 260, 134, 109, -1, 964 108, 338, 109, 108, 133, 260, 134, 109, -1, 342, 965 -1, 343, 308, -1, 344, 308, -1, 118, -1, 118, 966 225, -1, 118, 341, -1, 118, 225, 341, -1, 108, 967 342, 109, -1, 345, -1, 108, 342, 109, 345, -1, 968 108, 343, 109, 346, -1, 108, 343, 109, -1, 108, 969 133, 260, 134, 109, -1, 108, 342, 109, 108, 133, 970 260, 134, 109, -1, 108, 344, 109, -1, 110, 111, 971 -1, 110, 111, 346, -1, 346, -1, 110, 133, 162, 972 134, 111, -1, 110, 133, 118, 134, 111, -1, 346, 973 110, 133, 162, 134, 111, -1, 346, 110, 133, 118, 974 134, 111, -1, 348, -1, 349, 308, -1, 350, 308, 975 -1, 118, -1, 118, 225, -1, 118, 347, -1, 118, 976 225, 347, -1, 108, 348, 109, -1, 351, -1, 108, 977 348, 109, 351, -1, 108, 349, 109, 346, -1, 108, 978 349, 109, -1, 108, 133, 260, 134, 109, -1, 108, 979 348, 109, 108, 133, 260, 134, 109, -1, 108, 350, 980 109, -1, 352, -1, 352, 346, -1, 346, -1, 110, 981 111, -1, 110, 133, 225, 118, 134, 111, -1, 110, 982 133, 225, 134, 111, -1, 110, 133, 225, 162, 134, 983 111, -1, 110, 133, 7, 224, 162, 134, 111, -1, 984 110, 133, 225, 7, 162, 134, 111, -1, 354, -1, 985 355, 308, -1, 356, 308, -1, 118, -1, 118, 225, 986 -1, 118, 353, -1, 118, 225, 353, -1, 108, 354, 987 109, -1, 345, -1, 108, 354, 109, 345, -1, 108, 988 355, 109, 346, -1, 108, 355, 109, -1, 108, 354, 989 109, 108, 133, 260, 134, 109, -1, 108, 356, 109, 990 -1, 358, -1, 366, -1, 225, 366, -1, 359, -1, 991 360, -1, 118, 223, -1, 225, 118, 223, -1, 118, 992 367, -1, 225, 118, 367, -1, 118, 357, -1, 225, 993 118, 357, -1, 110, 111, 223, -1, 361, 223, -1, 994 110, 111, 346, 223, -1, 361, 346, 223, -1, 346, 995 223, -1, 110, 111, 359, -1, 361, 359, -1, 110, 996 111, 346, 359, -1, 361, 346, 359, -1, 346, 359, 997 -1, 110, 133, 225, 118, 134, 111, -1, 110, 133, 998 225, 162, 134, 111, -1, 110, 133, 229, 162, 134, 999 111, -1, 110, 133, 229, 225, 162, 134, 111, -1, 1000 366, -1, 225, 366, -1, 363, -1, 364, -1, 365, 1001 -1, 118, 223, -1, 225, 118, 223, -1, 118, 367, 1002 -1, 225, 118, 367, -1, 118, 362, -1, 225, 118, 1003 362, -1, 110, 111, 223, -1, 110, 111, 346, 223, 1004 -1, 346, 223, -1, 110, 111, 364, -1, 110, 111, 1005 346, 364, -1, 346, 364, -1, 110, 133, 259, 134, 1006 111, -1, 110, 111, 108, 256, 109, -1, 366, 108, 1007 133, 256, 134, 109, -1, 216, 108, 133, 256, 134, 1008 109, -1, -1, 115, -1, -1, 130, 162, -1 857 -1, 22, -1, 23, -1, 15, -1, 25, -1, 26, 858 -1, 27, -1, 24, -1, 236, -1, 230, 236, -1, 859 235, 232, -1, 235, 232, 226, -1, 235, 232, 236, 860 -1, 237, -1, 225, 238, 225, -1, 234, -1, 226, 861 234, -1, 237, 227, -1, 237, 234, -1, 28, 109, 862 275, 110, -1, 28, 109, 168, 110, -1, 78, 109, 863 275, 110, -1, 78, 109, 168, 110, -1, 240, -1, 864 230, 240, -1, 239, 232, -1, 239, 232, 226, -1, 865 243, -1, 226, 243, -1, 240, 227, -1, 242, -1, 866 230, 242, -1, 241, 232, -1, 241, 232, 226, -1, 867 74, -1, 226, 74, -1, 242, 227, -1, 244, -1, 868 255, -1, 246, 114, 247, 115, -1, 246, 273, -1, 869 -1, 246, 273, 245, 114, 247, 115, -1, 246, 109, 870 291, 110, 114, 247, 115, -1, 246, 284, -1, 31, 871 311, -1, 32, 311, -1, 248, -1, 247, 248, -1, 872 249, 132, -1, 40, 249, 132, -1, 250, 132, -1, 873 40, 250, 132, -1, 365, -1, 365, 273, -1, 249, 874 116, 273, -1, 249, 116, -1, 224, 251, -1, 250, 875 116, 311, 251, -1, -1, 253, -1, 317, 252, -1, 876 330, 252, -1, 356, -1, -1, 253, -1, 117, 162, 877 -1, 30, 311, -1, 254, 114, 257, 371, 115, -1, 878 254, 273, -1, -1, 254, 273, 256, 114, 257, 371, 879 115, -1, 273, 258, -1, 257, 116, 273, 258, -1, 880 -1, 131, 162, -1, -1, 260, -1, 262, -1, 261, 881 -1, 261, 135, 116, 134, 262, -1, 262, 135, 116, 882 134, 96, -1, 261, 135, 116, 134, 96, -1, 266, 883 -1, 262, 135, 116, 134, 266, -1, 261, 135, 116, 884 134, 266, -1, 261, 135, 116, 134, 262, 135, 116, 885 134, 266, -1, 267, -1, 262, 135, 116, 134, 267, 886 -1, -1, 264, -1, 265, -1, 265, 135, 116, 134, 887 96, -1, 269, -1, 268, -1, 265, 135, 116, 134, 888 269, -1, 265, 135, 116, 134, 268, -1, 268, -1, 889 361, 271, 372, -1, 369, 271, 372, -1, 226, 369, 890 271, 372, -1, 216, -1, 269, -1, 361, -1, 369, 891 -1, 226, 369, -1, 370, -1, 223, 335, 372, -1, 892 223, 339, 372, -1, 223, -1, 223, 350, -1, 139, 893 -1, 270, 116, 139, -1, 137, -1, 74, -1, 75, 894 -1, 138, -1, 74, -1, 75, -1, 139, -1, 74, 895 -1, 75, -1, 365, -1, 224, -1, 224, 356, -1, 896 365, -1, 370, -1, 224, -1, 224, 344, -1, -1, 897 131, 277, -1, 107, 277, -1, 163, -1, 114, 278, 898 371, 115, -1, -1, 277, -1, 279, 277, -1, 278, 899 116, 277, -1, 278, 116, 279, 277, -1, 280, 117, 900 -1, 273, 117, -1, 281, -1, 280, 281, -1, 80, 901 -1, 113, 273, -1, 111, 134, 163, 135, 112, -1, 902 111, 134, 309, 135, 112, -1, 111, 134, 162, 96, 903 162, 135, 112, -1, 113, 111, 134, 146, 135, 112, 904 -1, 283, -1, 230, 283, -1, 282, 232, -1, 282, 905 232, 226, -1, 284, -1, 226, 284, -1, 283, 227, 906 -1, 75, 109, 291, 110, -1, 286, 372, -1, 285, 907 116, 286, 372, -1, -1, 288, 273, 287, 289, -1, 908 224, 335, -1, 33, -1, 35, -1, 34, -1, -1, 909 289, 290, -1, 129, 273, 109, 291, 110, -1, 129, 910 114, 134, 297, 115, -1, 129, 109, 134, 285, 135, 911 110, 114, 134, 297, 115, 109, 291, 110, -1, 275, 912 -1, 163, -1, 291, 116, 275, -1, 291, 116, 163, 913 -1, 33, 293, -1, 231, 33, 293, -1, 292, 116, 914 293, -1, 294, 289, -1, 294, 289, 131, 275, -1, 915 273, -1, 272, 109, 134, 285, 135, 110, -1, 36, 916 273, 109, 134, 285, 135, 110, 114, 115, -1, -1, 917 36, 273, 109, 134, 285, 135, 110, 114, 296, 297, 918 115, -1, 298, -1, 297, 134, 298, -1, 299, 135, 919 132, -1, 300, 135, 132, -1, 214, -1, 216, -1, 920 299, 135, 116, 134, 271, -1, 224, 308, -1, 300, 921 135, 116, 134, 308, -1, -1, 302, -1, 304, -1, 922 302, 134, 304, -1, -1, 302, -1, 211, -1, 306, 923 -1, 197, -1, -1, 5, 82, 305, 114, 303, 115, 924 -1, 40, 304, -1, 307, -1, 322, 172, -1, 326, 925 134, 206, 172, -1, 215, 172, -1, 223, 322, 172, 926 -1, 226, 322, 172, -1, 230, 322, 172, -1, 230, 927 226, 322, 172, -1, 223, 326, 134, 206, 172, -1, 928 226, 326, 134, 206, 172, -1, 230, 326, 134, 206, 929 172, -1, 230, 226, 326, 134, 206, 172, -1, 317, 930 -1, 322, -1, 330, -1, 162, 123, 162, -1, -1, 931 64, 109, 141, 110, 311, -1, -1, 312, -1, 313, 932 -1, 312, 313, -1, 39, 109, 109, 314, 110, 110, 933 -1, 315, -1, 314, 116, 315, -1, -1, 316, -1, 934 316, 109, 169, 110, -1, 271, -1, 233, -1, 234, 935 -1, 227, -1, 318, 311, -1, 319, -1, 320, 311, 936 -1, 321, 311, -1, 137, -1, 109, 318, 110, -1, 937 119, 317, -1, 119, 226, 317, -1, 109, 319, 110, 938 -1, 318, 348, -1, 109, 319, 110, 348, -1, 109, 939 320, 110, 349, -1, 109, 320, 110, -1, 109, 319, 940 110, 109, 134, 263, 135, 110, -1, 109, 321, 110, 941 -1, 323, 311, -1, 324, -1, 325, 311, -1, 318, 942 109, 134, 263, 135, 110, -1, 109, 324, 110, 109, 943 134, 263, 135, 110, -1, 109, 323, 110, -1, 119, 944 322, -1, 119, 226, 322, -1, 109, 324, 110, -1, 945 109, 324, 110, 348, -1, 109, 325, 110, 349, -1, 946 109, 325, 110, -1, 327, -1, 328, -1, 329, -1, 947 318, 109, 270, 110, -1, 109, 328, 110, 109, 270, 948 110, -1, 109, 327, 110, -1, 119, 326, -1, 119, 949 226, 326, -1, 109, 328, 110, -1, 109, 328, 110, 950 348, -1, 109, 329, 110, 349, -1, 109, 329, 110, 951 -1, 331, 311, -1, 332, -1, 333, 311, -1, 334, 952 311, -1, 340, -1, 109, 331, 110, -1, 119, 330, 953 -1, 119, 226, 330, -1, 109, 332, 110, -1, 331, 954 348, -1, 109, 332, 110, 348, -1, 109, 333, 110, 955 349, -1, 109, 333, 110, -1, 331, 109, 134, 263, 956 135, 110, -1, 109, 332, 110, 109, 134, 263, 135, 957 110, -1, 109, 334, 110, -1, 318, 311, -1, 336, 958 -1, 337, 311, -1, 338, 311, -1, 119, 335, -1, 959 119, 226, 335, -1, 109, 336, 110, -1, 318, 354, 960 -1, 109, 336, 110, 348, -1, 109, 337, 110, 349, 961 -1, 109, 337, 110, -1, 318, 109, 134, 263, 135, 962 110, -1, 109, 336, 110, 109, 134, 263, 135, 110, 963 -1, 109, 338, 110, -1, 340, 311, -1, 341, -1, 964 342, 311, -1, 343, 311, -1, 74, -1, 75, -1, 965 119, 339, -1, 119, 226, 339, -1, 109, 341, 110, 966 -1, 340, 354, -1, 109, 341, 110, 354, -1, 340, 967 109, 134, 263, 135, 110, -1, 109, 341, 110, 109, 968 134, 263, 135, 110, -1, 345, -1, 346, 311, -1, 969 347, 311, -1, 119, -1, 119, 226, -1, 119, 344, 970 -1, 119, 226, 344, -1, 109, 345, 110, -1, 348, 971 -1, 109, 345, 110, 348, -1, 109, 346, 110, 349, 972 -1, 109, 346, 110, -1, 109, 134, 263, 135, 110, 973 -1, 109, 345, 110, 109, 134, 263, 135, 110, -1, 974 109, 347, 110, -1, 111, 112, -1, 111, 112, 349, 975 -1, 349, -1, 111, 134, 163, 135, 112, -1, 111, 976 134, 119, 135, 112, -1, 349, 111, 134, 163, 135, 977 112, -1, 349, 111, 134, 119, 135, 112, -1, 351, 978 -1, 352, 311, -1, 353, 311, -1, 119, -1, 119, 979 226, -1, 119, 350, -1, 119, 226, 350, -1, 109, 980 351, 110, -1, 354, -1, 109, 351, 110, 354, -1, 981 109, 352, 110, 349, -1, 109, 352, 110, -1, 109, 982 134, 263, 135, 110, -1, 109, 351, 110, 109, 134, 983 263, 135, 110, -1, 109, 353, 110, -1, 355, -1, 984 355, 349, -1, 349, -1, 111, 112, -1, 111, 134, 985 226, 119, 135, 112, -1, 111, 134, 226, 135, 112, 986 -1, 111, 134, 226, 163, 135, 112, -1, 111, 134, 987 7, 225, 163, 135, 112, -1, 111, 134, 226, 7, 988 163, 135, 112, -1, 357, -1, 358, 311, -1, 359, 989 311, -1, 119, -1, 119, 226, -1, 119, 356, -1, 990 119, 226, 356, -1, 109, 357, 110, -1, 348, -1, 991 109, 357, 110, 348, -1, 109, 358, 110, 349, -1, 992 109, 358, 110, -1, 109, 357, 110, 109, 134, 263, 993 135, 110, -1, 109, 359, 110, -1, 361, -1, 369, 994 -1, 226, 369, -1, 362, -1, 363, -1, 119, 224, 995 -1, 226, 119, 224, -1, 119, 370, -1, 226, 119, 996 370, -1, 119, 360, -1, 226, 119, 360, -1, 111, 997 112, 224, -1, 364, 224, -1, 111, 112, 349, 224, 998 -1, 364, 349, 224, -1, 349, 224, -1, 111, 112, 999 362, -1, 364, 362, -1, 111, 112, 349, 362, -1, 1000 364, 349, 362, -1, 349, 362, -1, 111, 134, 226, 1001 119, 135, 112, -1, 111, 134, 226, 163, 135, 112, 1002 -1, 111, 134, 230, 163, 135, 112, -1, 111, 134, 1003 230, 226, 163, 135, 112, -1, 369, -1, 226, 369, 1004 -1, 366, -1, 367, -1, 368, -1, 119, 224, -1, 1005 226, 119, 224, -1, 119, 370, -1, 226, 119, 370, 1006 -1, 119, 365, -1, 226, 119, 365, -1, 111, 112, 1007 224, -1, 111, 112, 349, 224, -1, 349, 224, -1, 1008 111, 112, 367, -1, 111, 112, 349, 367, -1, 349, 1009 367, -1, 111, 134, 262, 135, 112, -1, 111, 112, 1010 109, 259, 110, -1, 369, 109, 134, 259, 135, 110, 1011 -1, 217, 109, 134, 259, 135, 110, -1, -1, 116, 1012 -1, -1, 131, 163, -1 1009 1013 }; 1010 1014 … … 1012 1016 static const yytype_uint16 yyrline[] = 1013 1017 { 1014 0, 29 0, 290, 296, 305, 306, 307, 311, 312, 313,1015 31 7, 318, 322, 323, 327, 328, 332, 333, 339, 341,1016 34 3, 345, 350, 351, 357, 361, 363, 364, 366, 367,1017 3 69, 371, 373, 381, 382, 388, 389, 390, 395, 397,1018 40 2, 403, 407, 411, 413, 415, 417, 422, 425, 427,1019 4 29, 431, 433, 435, 437, 439, 445, 447, 449, 451,1020 45 3, 455, 457, 459, 461, 466, 467, 468, 469, 473,1021 47 4, 476, 481, 482, 484, 486, 491, 492, 494, 499,1022 50 0, 502, 507, 508, 510, 512, 514, 519, 520, 522,1023 52 7, 528, 533, 534, 539, 540, 545, 546, 551, 552,1024 55 7, 558, 560, 562, 567, 572, 573, 575, 577, 583,1025 58 4, 590, 592, 594, 596, 601, 602, 607, 608, 609,1026 61 0, 611, 612, 613, 614, 615, 616, 620, 621, 627,1027 6 28, 634, 635, 636, 637, 638, 639, 640, 641, 642,1028 65 1, 658, 660, 670, 671, 676, 678, 680, 682, 686,1029 68 7, 692, 697, 700, 702, 704, 709, 711, 719, 720,1030 72 2, 726, 727, 732, 733, 738, 739, 743, 748, 749,1031 75 3, 755, 761, 762, 766, 768, 770, 772, 778, 779,1032 78 3, 784, 788, 790, 792, 797, 799, 804, 806, 810,1033 81 3, 817, 820, 824, 826, 830, 832, 839, 841, 843,1034 85 2, 854, 856, 858, 860, 865, 867, 869, 871, 876,1035 8 89, 890, 895, 897, 902, 906, 908, 910, 912, 914,1036 92 0, 921, 927, 928, 932, 933, 938, 940, 946, 947,1037 9 49, 954, 956, 963, 965, 969, 970, 975, 977, 981,1038 98 2, 986, 988, 992, 993, 997, 998, 1002, 1003, 1018,1039 10 19, 1020, 1021, 1022, 1026, 1031, 1038, 1048, 1053, 1058,1040 106 6, 1071, 1076, 1081, 1086, 1094, 1116, 1121, 1128, 1130,1041 113 7, 1142, 1147, 1158, 1163, 1168, 1173, 1178, 1187, 1192,1042 120 0, 1201, 1202, 1203, 1209, 1214, 1222, 1223, 1224, 1225,1043 12 29, 1230, 1231, 1232, 1237, 1238, 1247, 1248, 1253, 1254,1044 12 59, 1261, 1263, 1265, 1267, 1270, 1269, 1281, 1282, 1284,1045 129 4, 1295, 1300, 1304, 1306, 1308, 1310, 1312, 1314, 1316,1046 13 18, 1323, 1325, 1327, 1329, 1331, 1333, 1335, 1337, 1339,1047 134 1, 1343, 1345, 1351, 1352, 1354, 1356, 1358, 1363, 1364,1048 13 70, 1371, 1373, 1375, 1380, 1382, 1384, 1386, 1391, 1392,1049 139 4, 1396, 1401, 1402, 1404, 1409, 1410, 1412, 1414, 1419,1050 142 1, 1423, 1428, 1429, 1433, 1435, 1437, 1439, 1441, 1446,1051 14 48, 1453, 1455, 1460, 1461, 1463, 1464, 1469, 1470, 1472,1052 147 4, 1479, 1481, 1487, 1488, 1490, 1493, 1496, 1501, 1502,1053 15 07, 1512, 1516, 1518, 1520, 1525, 1527, 1533, 1534, 1542,1054 154 3, 1547, 1548, 1549, 1551, 1553, 1560, 1561, 1563, 1565,1055 157 0, 1571, 1577, 1578, 1582, 1583, 1588, 1589, 1590, 1592,1056 160 0, 1601, 1603, 1606, 1608, 1612, 1613, 1614, 1616, 1618,1057 162 2, 1627, 1635, 1636, 1645, 1647, 1652, 1653, 1654, 1658,1058 16 59, 1660, 1664, 1665, 1666, 1670, 1671, 1672, 1677, 1678,1059 16 79, 1680, 1686, 1687, 1689, 1694, 1695, 1700, 1701, 1702,1060 17 03, 1704, 1719, 1720, 1725, 1726, 1734, 1736, 1738, 1741,1061 17 43, 1745, 1768, 1769, 1771, 1773, 1778, 1779, 1781, 1786,1062 179 1, 1792, 1798, 1797, 1801, 1805, 1807, 1809, 1815, 1816,1063 182 1, 1826, 1828, 1833, 1835, 1836, 1838, 1843, 1845, 1847,1064 185 2, 1854, 1859, 1864, 1872, 1878, 1877, 1891, 1892, 1897,1065 1 898, 1902, 1907, 1912, 1920, 1925, 1936, 1937, 1948, 1949,1066 195 5, 1956, 1960, 1961, 1962, 1965, 1964, 1975, 1980, 1985,1067 19 91, 2000, 2006, 2012, 2018, 2024, 2032, 2038, 2046, 2052,1068 20 61, 2062, 2063, 2067, 2071, 2073, 2078, 2079, 2083, 2084,1069 20 89, 2095, 2096, 2099, 2101, 2102, 2106, 2107, 2108, 2109,1070 21 43, 2145, 2146, 2148, 2153, 2158, 2163, 2165, 2167, 2172,1071 217 4, 2176, 2178, 2183, 2185, 2195, 2197, 2198, 2203, 2205,1072 22 07, 2212, 2214, 2216, 2221, 2223, 2225, 2234, 2235, 2236,1073 224 0, 2242, 2244, 2249, 2251, 2253, 2258, 2260, 2262, 2277,1074 227 9, 2280, 2282, 2287, 2288, 2293, 2295, 2297, 2302, 2304,1075 23 06, 2308, 2313, 2315, 2317, 2327, 2329, 2330, 2332, 2337,1076 23 39, 2341, 2346, 2348, 2350, 2352, 2357, 2359, 2361, 2392,1077 23 94, 2395, 2397, 2402, 2407, 2415, 2417, 2419, 2424, 2426,1078 243 1, 2433, 2447, 2448, 2450, 2455, 2457, 2459, 2461, 2463,1079 24 68, 2469, 2471, 2473, 2478, 2480, 2482, 2488, 2490, 2492,1080 2 496, 2498, 2500, 2502, 2516, 2517, 2519, 2524, 2526, 2528,1081 253 0, 2532, 2537, 2538, 2540, 2542, 2547, 2549, 2551, 2557,1082 25 58, 2560, 2569, 2572, 2574, 2577, 2579, 2581, 2594, 2595,1083 259 7, 2602, 2604, 2606, 2608, 2610, 2615, 2616, 2618, 2620,1084 26 25, 2627, 2635, 2636, 2637, 2642, 2643, 2647, 2649, 2651,1085 26 53, 2655, 2657, 2664, 2666, 2668, 2670, 2672, 2674, 2676,1086 26 78, 2680, 2682, 2687, 2689, 2691, 2696, 2722, 2723, 2725,1087 27 29, 2730, 2734, 2736, 2738, 2740, 2742, 2744, 2751, 2753,1088 275 5, 2757, 2759, 2761, 2766, 2771, 2773, 2775, 2793, 2795,1089 2 800, 28011018 0, 292, 292, 298, 307, 308, 309, 313, 314, 315, 1019 319, 320, 324, 325, 329, 330, 334, 335, 341, 343, 1020 345, 347, 352, 353, 359, 363, 365, 366, 368, 369, 1021 371, 373, 375, 383, 384, 390, 391, 392, 397, 399, 1022 404, 405, 409, 413, 415, 417, 419, 424, 427, 429, 1023 431, 433, 435, 437, 439, 441, 447, 449, 451, 453, 1024 455, 457, 459, 461, 463, 468, 469, 470, 471, 475, 1025 476, 478, 483, 484, 486, 488, 493, 494, 496, 501, 1026 502, 504, 509, 510, 512, 514, 516, 521, 522, 524, 1027 529, 530, 535, 536, 541, 542, 547, 548, 553, 554, 1028 559, 560, 562, 564, 569, 574, 575, 577, 579, 585, 1029 586, 592, 594, 596, 598, 603, 604, 609, 610, 611, 1030 612, 613, 614, 615, 616, 617, 618, 622, 623, 629, 1031 630, 636, 637, 638, 639, 640, 641, 642, 643, 644, 1032 653, 660, 662, 672, 673, 678, 680, 682, 684, 688, 1033 689, 694, 699, 702, 704, 706, 711, 713, 721, 722, 1034 724, 728, 729, 734, 735, 740, 741, 745, 750, 751, 1035 755, 757, 763, 764, 768, 770, 772, 774, 780, 781, 1036 785, 786, 790, 792, 794, 799, 801, 806, 808, 812, 1037 815, 819, 822, 826, 828, 832, 834, 841, 843, 845, 1038 854, 856, 858, 860, 862, 867, 869, 871, 873, 878, 1039 891, 892, 897, 899, 904, 908, 910, 912, 914, 916, 1040 922, 923, 929, 930, 934, 935, 940, 942, 948, 949, 1041 951, 956, 958, 965, 967, 971, 972, 977, 979, 983, 1042 984, 988, 990, 994, 995, 999, 1000, 1004, 1005, 1020, 1043 1021, 1022, 1023, 1024, 1028, 1033, 1040, 1050, 1055, 1060, 1044 1068, 1073, 1078, 1083, 1088, 1096, 1118, 1123, 1130, 1132, 1045 1139, 1144, 1149, 1160, 1165, 1170, 1175, 1180, 1189, 1194, 1046 1202, 1203, 1204, 1205, 1211, 1216, 1224, 1225, 1226, 1227, 1047 1231, 1232, 1233, 1234, 1239, 1240, 1249, 1250, 1255, 1256, 1048 1261, 1263, 1265, 1267, 1269, 1272, 1271, 1283, 1284, 1286, 1049 1296, 1297, 1302, 1306, 1308, 1310, 1312, 1314, 1316, 1318, 1050 1320, 1325, 1327, 1329, 1331, 1333, 1335, 1337, 1339, 1341, 1051 1343, 1345, 1347, 1349, 1355, 1356, 1358, 1360, 1362, 1367, 1052 1368, 1374, 1375, 1377, 1379, 1384, 1386, 1388, 1390, 1395, 1053 1396, 1398, 1400, 1405, 1406, 1408, 1413, 1414, 1416, 1418, 1054 1423, 1425, 1427, 1432, 1433, 1437, 1439, 1445, 1444, 1448, 1055 1450, 1455, 1457, 1462, 1464, 1469, 1470, 1472, 1473, 1478, 1056 1479, 1481, 1483, 1488, 1490, 1496, 1497, 1499, 1502, 1505, 1057 1510, 1511, 1516, 1521, 1525, 1527, 1533, 1532, 1539, 1541, 1058 1547, 1548, 1556, 1557, 1561, 1562, 1563, 1565, 1567, 1574, 1059 1575, 1577, 1579, 1584, 1585, 1591, 1592, 1596, 1597, 1602, 1060 1603, 1604, 1606, 1614, 1615, 1617, 1620, 1622, 1626, 1627, 1061 1628, 1630, 1632, 1636, 1641, 1649, 1650, 1659, 1661, 1666, 1062 1667, 1668, 1672, 1673, 1674, 1678, 1679, 1680, 1684, 1685, 1063 1686, 1691, 1692, 1693, 1694, 1700, 1701, 1703, 1708, 1709, 1064 1714, 1715, 1716, 1717, 1718, 1733, 1734, 1739, 1740, 1748, 1065 1750, 1752, 1755, 1757, 1759, 1782, 1783, 1785, 1787, 1792, 1066 1793, 1795, 1800, 1805, 1806, 1812, 1811, 1815, 1819, 1821, 1067 1823, 1829, 1830, 1835, 1840, 1842, 1847, 1849, 1850, 1852, 1068 1857, 1859, 1861, 1866, 1868, 1873, 1878, 1886, 1892, 1891, 1069 1905, 1906, 1911, 1912, 1916, 1921, 1926, 1934, 1939, 1950, 1070 1951, 1962, 1963, 1969, 1970, 1974, 1975, 1976, 1979, 1978, 1071 1989, 1994, 1999, 2005, 2014, 2020, 2026, 2032, 2038, 2046, 1072 2052, 2060, 2066, 2075, 2076, 2077, 2081, 2085, 2087, 2092, 1073 2093, 2097, 2098, 2103, 2109, 2110, 2113, 2115, 2116, 2120, 1074 2121, 2122, 2123, 2157, 2159, 2160, 2162, 2167, 2172, 2177, 1075 2179, 2181, 2186, 2188, 2190, 2192, 2197, 2199, 2209, 2211, 1076 2212, 2217, 2219, 2221, 2226, 2228, 2230, 2235, 2237, 2239, 1077 2248, 2249, 2250, 2254, 2256, 2258, 2263, 2265, 2267, 2272, 1078 2274, 2276, 2291, 2293, 2294, 2296, 2301, 2302, 2307, 2309, 1079 2311, 2316, 2318, 2320, 2322, 2327, 2329, 2331, 2341, 2343, 1080 2344, 2346, 2351, 2353, 2355, 2360, 2362, 2364, 2366, 2371, 1081 2373, 2375, 2406, 2408, 2409, 2411, 2416, 2421, 2429, 2431, 1082 2433, 2438, 2440, 2445, 2447, 2461, 2462, 2464, 2469, 2471, 1083 2473, 2475, 2477, 2482, 2483, 2485, 2487, 2492, 2494, 2496, 1084 2502, 2504, 2506, 2510, 2512, 2514, 2516, 2530, 2531, 2533, 1085 2538, 2540, 2542, 2544, 2546, 2551, 2552, 2554, 2556, 2561, 1086 2563, 2565, 2571, 2572, 2574, 2583, 2586, 2588, 2591, 2593, 1087 2595, 2608, 2609, 2611, 2616, 2618, 2620, 2622, 2624, 2629, 1088 2630, 2632, 2634, 2639, 2641, 2649, 2650, 2651, 2656, 2657, 1089 2661, 2663, 2665, 2667, 2669, 2671, 2678, 2680, 2682, 2684, 1090 2686, 2688, 2690, 2692, 2694, 2696, 2701, 2703, 2705, 2710, 1091 2736, 2737, 2739, 2743, 2744, 2748, 2750, 2752, 2754, 2756, 1092 2758, 2765, 2767, 2769, 2771, 2773, 2775, 2780, 2785, 2787, 1093 2789, 2807, 2809, 2814, 2815 1090 1094 }; 1091 1095 #endif … … 1099 1103 "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL", 1100 1104 "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE", 1101 "SIGNED", "UNSIGNED", " BOOL", "COMPLEX", "IMAGINARY", "TYPEOF", "LABEL",1102 " ENUM", "STRUCT", "UNION", "TYPE", "FTYPE", "DTYPE", "CONTEXT", "SIZEOF",1103 " OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE",1104 " DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN",1105 " CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME",1106 " FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF",1107 "A TOMIC", "GENERIC", "NORETURN", "STATICASSERT", "THREADLOCAL",1108 " IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname",1109 " ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",1105 "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF", 1106 "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT", 1107 "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", 1108 "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", 1109 "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", 1110 "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", 1111 "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", 1112 "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", 1113 "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname", 1110 1114 "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant", 1111 1115 "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE", … … 1152 1156 "sue_declaration_specifier", "sue_type_specifier", 1153 1157 "typedef_declaration_specifier", "typedef_type_specifier", 1154 "elaborated_type_name", "aggregate_name", " aggregate_key",1158 "elaborated_type_name", "aggregate_name", "$@2", "aggregate_key", 1155 1159 "field_declaration_list", "field_declaration", 1156 1160 "new_field_declaring_list", "field_declaring_list", "field_declarator", 1157 1161 "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name", 1158 " enumerator_list", "enumerator_value_opt", "new_parameter_type_list_opt",1159 "new_parameter_type_list ", "new_parameter_list",1160 "new_ abstract_parameter_list", "parameter_type_list_opt",1161 "parameter_type_list ", "parameter_list", "new_parameter_declaration",1162 "new_ abstract_parameter_declaration", "parameter_declaration",1163 " abstract_parameter_declaration", "identifier_list",1164 "identifier_ or_type_name", "no_01_identifier_or_type_name",1165 "no_ attr_identifier_or_type_name", "type_name_no_function", "type_name",1166 " initializer_opt", "initializer", "initializer_list", "designation",1167 " designator_list", "designator", "typegen_declaration_specifier",1168 "typegen_ type_specifier", "typegen_name", "type_parameter_list",1169 "type _parameter", "$@2", "type_class", "assertion_list_opt", "assertion",1170 "type_ name_list", "type_declaring_list", "type_declarator",1171 "type_declar ator_name", "context_specifier", "$@3",1172 " context_declaration_list", "context_declaration",1173 "new_ context_declaring_list", "context_declaring_list",1174 " translation_unit", "external_definition_list",1175 "external_definition _list_opt", "external_definition", "$@4",1176 " external_function_definition", "function_definition", "declarator",1177 " subrange", "asm_name_opt", "attribute_list_opt", "attribute_list",1178 "attribute ", "attribute_parameter_list", "attrib", "any_word",1179 " variable_declarator", "paren_identifier", "variable_ptr",1180 "variable_ array", "variable_function", "function_declarator",1181 "function_ no_ptr", "function_ptr", "function_array",1182 "old_function_ declarator", "old_function_no_ptr", "old_function_ptr",1183 " old_function_array", "type_redeclarator", "paren_type", "type_ptr",1184 "type_ array", "type_function", "identifier_parameter_declarator",1162 "$@3", "enumerator_list", "enumerator_value_opt", 1163 "new_parameter_type_list_opt", "new_parameter_type_list", 1164 "new_parameter_list", "new_abstract_parameter_list", 1165 "parameter_type_list_opt", "parameter_type_list", "parameter_list", 1166 "new_parameter_declaration", "new_abstract_parameter_declaration", 1167 "parameter_declaration", "abstract_parameter_declaration", 1168 "identifier_list", "identifier_or_type_name", 1169 "no_01_identifier_or_type_name", "no_attr_identifier_or_type_name", 1170 "type_name_no_function", "type_name", "initializer_opt", "initializer", 1171 "initializer_list", "designation", "designator_list", "designator", 1172 "typegen_declaration_specifier", "typegen_type_specifier", 1173 "typegen_name", "type_parameter_list", "type_parameter", "$@4", 1174 "type_class", "assertion_list_opt", "assertion", "type_name_list", 1175 "type_declaring_list", "type_declarator", "type_declarator_name", 1176 "trait_specifier", "$@5", "trait_declaration_list", "trait_declaration", 1177 "new_trait_declaring_list", "trait_declaring_list", "translation_unit", 1178 "external_definition_list", "external_definition_list_opt", 1179 "external_definition", "$@6", "external_function_definition", 1180 "function_definition", "declarator", "subrange", "asm_name_opt", 1181 "attribute_list_opt", "attribute_list", "attribute", 1182 "attribute_parameter_list", "attrib", "any_word", "variable_declarator", 1183 "paren_identifier", "variable_ptr", "variable_array", 1184 "variable_function", "function_declarator", "function_no_ptr", 1185 "function_ptr", "function_array", "old_function_declarator", 1186 "old_function_no_ptr", "old_function_ptr", "old_function_array", 1187 "type_redeclarator", "paren_type", "type_ptr", "type_array", 1188 "type_function", "identifier_parameter_declarator", 1185 1189 "identifier_parameter_ptr", "identifier_parameter_array", 1186 1190 "identifier_parameter_function", "type_parameter_redeclarator", … … 1219 1223 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 1220 1224 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 1221 355, 356, 357, 358, 359, 360, 361, 362, 40, 41,1222 91, 93, 46, 123, 125, 44, 58, 33, 42, 38,1223 43, 45, 126, 47, 37, 60, 62, 94, 124, 63,1224 6 1, 591225 355, 356, 357, 358, 359, 360, 361, 362, 363, 40, 1226 41, 91, 93, 46, 123, 125, 44, 58, 33, 42, 1227 38, 43, 45, 126, 47, 37, 60, 62, 94, 124, 1228 63, 61, 59 1225 1229 }; 1226 1230 # endif … … 1229 1233 static const yytype_uint16 yyr1[] = 1230 1234 { 1231 0, 13 2, 133, 134, 135, 135, 135, 136, 136, 136,1232 13 7, 137, 138, 138, 139, 139, 140, 140, 141, 141,1233 14 1, 141, 142, 142, 142, 142, 142, 142, 142, 142,1234 14 2, 142, 142, 143, 143, 144, 144, 144, 144, 144,1235 14 5, 145, 146, 146, 146, 146, 146, 147, 147, 147,1236 14 7, 147, 147, 147, 147, 147, 147, 147, 147, 147,1237 14 7, 147, 147, 147, 147, 148, 148, 148, 148, 149,1238 1 49, 149, 150, 150, 150, 150, 151, 151, 151, 152,1239 15 2, 152, 153, 153, 153, 153, 153, 154, 154, 154,1240 15 5, 155, 156, 156, 157, 157, 158, 158, 159, 159,1241 16 0, 160, 160, 160, 161, 162, 162, 162, 162, 163,1242 16 3, 164, 164, 164, 164, 165, 165, 166, 166, 166,1243 16 6, 166, 166, 166, 166, 166, 166, 167, 167, 168,1244 16 8, 169, 169, 169, 169, 169, 169, 169, 169, 169,1245 17 0, 171, 171, 172, 172, 173, 173, 173, 173, 174,1246 17 4, 175, 176, 176, 176, 176, 176, 176, 177, 177,1247 17 7, 178, 178, 179, 179, 180, 180, 181, 182, 182,1248 18 3, 183, 184, 184, 185, 185, 185, 185, 186, 186,1249 18 7, 187, 188, 188, 188, 189, 189, 190, 190, 190,1250 19 0, 190, 190, 190, 190, 190, 190, 191, 191, 191,1251 19 2, 192, 192, 192, 192, 193, 193, 193, 193, 194,1252 19 5, 195, 195, 195, 195, 196, 196, 196, 196, 196,1253 19 7, 197, 198, 198, 199, 199, 200, 200, 201, 201,1254 20 1, 202, 202, 203, 203, 204, 204, 205, 205, 206,1255 20 6, 207, 207, 208, 208, 209, 209, 210, 210, 211,1256 21 1, 211, 211, 211, 212, 212, 212, 213, 213, 213,1257 21 4, 214, 214, 214, 214, 215, 215, 215, 216, 216,1258 21 7, 217, 217, 218, 218, 218, 218, 218, 219, 219,1259 22 0, 220, 220, 220, 221, 221, 222, 222, 222, 222,1260 22 3, 223, 223, 223, 224, 224, 225, 225, 226, 226,1261 22 7, 227, 227, 227, 227, 228, 227, 229, 229, 229,1262 23 0, 230, 231, 232, 232, 232, 232, 232, 232, 232,1263 23 2, 233, 233, 233, 233, 233, 233, 233, 233, 233,1264 23 3, 233, 233, 234, 234, 234, 234, 234, 235, 235,1265 236, 23 6, 236, 236, 237, 237, 237, 237, 238, 238,1266 23 8, 238, 239, 239, 239, 240, 240, 240, 240, 241,1267 24 1, 241, 242, 242, 243, 243, 243, 243, 243, 244,1268 244, 24 5, 245, 246, 246, 246, 246, 247, 247, 247,1269 24 7, 248, 248, 249, 249, 249, 249, 249, 250, 250,1270 25 1, 252, 253, 253, 253, 254, 254, 255, 255, 256,1271 25 6, 257, 257, 257, 257, 257, 258, 258, 258, 258,1272 2 59, 259, 260, 260, 261, 261, 262, 262, 262, 262,1273 26 3, 263, 263, 263, 263, 264, 264, 264, 264, 264,1274 26 5, 265, 266, 266, 267, 267, 268, 268, 268, 269,1275 2 69, 269, 270, 270, 270, 271, 271, 271, 272, 272,1276 27 2, 272, 273, 273, 273, 274, 274, 275, 275, 275,1277 27 5, 275, 276, 276, 277, 277, 278, 278, 278, 278,1278 2 78, 278, 279, 279, 279, 279, 280, 280, 280, 281,1279 28 2, 282, 284, 283, 283, 285, 285, 285, 286, 286,1280 28 7, 287, 287, 288, 288, 288, 288, 289, 289, 289,1281 29 0, 290, 291, 291, 292, 293, 292, 294, 294, 295,1282 29 5, 296, 296, 296, 297, 297, 298, 298, 299, 299,1283 30 0, 300, 301, 301, 301, 302, 301, 301, 303, 303,1284 30 3, 304, 304, 304, 304, 304, 304, 304, 304, 304,1285 30 5, 305, 305, 306, 307, 307, 308, 308, 309, 309,1286 31 0, 311, 311, 312, 312, 312, 313, 313, 313, 313,1287 31 4, 314, 314, 314, 315, 315, 316, 316, 316, 317,1288 31 7, 317, 317, 318, 318, 319, 319, 319, 320, 320,1289 32 0, 321, 321, 321, 322, 322, 322, 323, 323, 323,1290 32 4, 324, 324, 325, 325, 325, 326, 326, 326, 327,1291 32 7, 327, 327, 328, 328, 329, 329, 329, 330, 330,1292 33 0, 330, 331, 331, 331, 332, 332, 332, 332, 333,1293 33 3, 333, 334, 334, 334, 334, 335, 335, 335, 336,1294 33 6, 336, 336, 337, 337, 338, 338, 338, 339, 339,1295 34 0, 340, 341, 341, 341, 342, 342, 342, 342, 342,1296 34 3, 343, 343, 343, 344, 344, 344, 345, 345, 345,1297 34 6, 346, 346, 346, 347, 347, 347, 348, 348, 348,1298 3 48, 348, 349, 349, 349, 349, 350, 350, 350, 351,1299 35 1, 351, 352, 352, 352, 352, 352, 352, 353, 353,1300 35 3, 354, 354, 354, 354, 354, 355, 355, 355, 355,1301 35 6, 356, 357, 357, 357, 358, 358, 359, 359, 359,1302 3 59, 359, 359, 360, 360, 360, 360, 360, 360, 360,1303 36 0, 360, 360, 361, 361, 361, 361, 362, 362, 362,1304 36 3, 363, 364, 364, 364, 364, 364, 364, 365, 365,1305 36 5, 365, 365, 365, 366, 367, 367, 367, 368, 368,1306 3 69, 3691235 0, 133, 134, 135, 136, 136, 136, 137, 137, 137, 1236 138, 138, 139, 139, 140, 140, 141, 141, 142, 142, 1237 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, 1238 143, 143, 143, 144, 144, 145, 145, 145, 145, 145, 1239 146, 146, 147, 147, 147, 147, 147, 148, 148, 148, 1240 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 1241 148, 148, 148, 148, 148, 149, 149, 149, 149, 150, 1242 150, 150, 151, 151, 151, 151, 152, 152, 152, 153, 1243 153, 153, 154, 154, 154, 154, 154, 155, 155, 155, 1244 156, 156, 157, 157, 158, 158, 159, 159, 160, 160, 1245 161, 161, 161, 161, 162, 163, 163, 163, 163, 164, 1246 164, 165, 165, 165, 165, 166, 166, 167, 167, 167, 1247 167, 167, 167, 167, 167, 167, 167, 168, 168, 169, 1248 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 1249 171, 172, 172, 173, 173, 174, 174, 174, 174, 175, 1250 175, 176, 177, 177, 177, 177, 177, 177, 178, 178, 1251 178, 179, 179, 180, 180, 181, 181, 182, 183, 183, 1252 184, 184, 185, 185, 186, 186, 186, 186, 187, 187, 1253 188, 188, 189, 189, 189, 190, 190, 191, 191, 191, 1254 191, 191, 191, 191, 191, 191, 191, 192, 192, 192, 1255 193, 193, 193, 193, 193, 194, 194, 194, 194, 195, 1256 196, 196, 196, 196, 196, 197, 197, 197, 197, 197, 1257 198, 198, 199, 199, 200, 200, 201, 201, 202, 202, 1258 202, 203, 203, 204, 204, 205, 205, 206, 206, 207, 1259 207, 208, 208, 209, 209, 210, 210, 211, 211, 212, 1260 212, 212, 212, 212, 213, 213, 213, 214, 214, 214, 1261 215, 215, 215, 215, 215, 216, 216, 216, 217, 217, 1262 218, 218, 218, 219, 219, 219, 219, 219, 220, 220, 1263 221, 221, 221, 221, 222, 222, 223, 223, 223, 223, 1264 224, 224, 224, 224, 225, 225, 226, 226, 227, 227, 1265 228, 228, 228, 228, 228, 229, 228, 230, 230, 230, 1266 231, 231, 232, 233, 233, 233, 233, 233, 233, 233, 1267 233, 234, 234, 234, 234, 234, 234, 234, 234, 234, 1268 234, 234, 234, 234, 235, 235, 235, 235, 235, 236, 1269 236, 237, 237, 237, 237, 238, 238, 238, 238, 239, 1270 239, 239, 239, 240, 240, 240, 241, 241, 241, 241, 1271 242, 242, 242, 243, 243, 244, 244, 245, 244, 244, 1272 244, 246, 246, 247, 247, 248, 248, 248, 248, 249, 1273 249, 249, 249, 250, 250, 251, 251, 251, 251, 251, 1274 252, 252, 253, 254, 255, 255, 256, 255, 257, 257, 1275 258, 258, 259, 259, 260, 260, 260, 260, 260, 261, 1276 261, 261, 261, 262, 262, 263, 263, 264, 264, 265, 1277 265, 265, 265, 266, 266, 266, 266, 266, 267, 267, 1278 267, 267, 267, 268, 268, 269, 269, 270, 270, 271, 1279 271, 271, 272, 272, 272, 273, 273, 273, 274, 274, 1280 274, 275, 275, 275, 275, 276, 276, 276, 277, 277, 1281 278, 278, 278, 278, 278, 279, 279, 280, 280, 281, 1282 281, 281, 281, 281, 281, 282, 282, 282, 282, 283, 1283 283, 283, 284, 285, 285, 287, 286, 286, 288, 288, 1284 288, 289, 289, 290, 290, 290, 291, 291, 291, 291, 1285 292, 292, 292, 293, 293, 294, 294, 295, 296, 295, 1286 297, 297, 298, 298, 299, 299, 299, 300, 300, 301, 1287 301, 302, 302, 303, 303, 304, 304, 304, 305, 304, 1288 304, 306, 306, 306, 307, 307, 307, 307, 307, 307, 1289 307, 307, 307, 308, 308, 308, 309, 310, 310, 311, 1290 311, 312, 312, 313, 314, 314, 315, 315, 315, 316, 1291 316, 316, 316, 317, 317, 317, 317, 318, 318, 319, 1292 319, 319, 320, 320, 320, 320, 321, 321, 322, 322, 1293 322, 323, 323, 323, 324, 324, 324, 325, 325, 325, 1294 326, 326, 326, 327, 327, 327, 328, 328, 328, 329, 1295 329, 329, 330, 330, 330, 330, 331, 331, 332, 332, 1296 332, 333, 333, 333, 333, 334, 334, 334, 335, 335, 1297 335, 335, 336, 336, 336, 337, 337, 337, 337, 338, 1298 338, 338, 339, 339, 339, 339, 340, 340, 341, 341, 1299 341, 342, 342, 343, 343, 344, 344, 344, 345, 345, 1300 345, 345, 345, 346, 346, 346, 346, 347, 347, 347, 1301 348, 348, 348, 349, 349, 349, 349, 350, 350, 350, 1302 351, 351, 351, 351, 351, 352, 352, 352, 352, 353, 1303 353, 353, 354, 354, 354, 355, 355, 355, 355, 355, 1304 355, 356, 356, 356, 357, 357, 357, 357, 357, 358, 1305 358, 358, 358, 359, 359, 360, 360, 360, 361, 361, 1306 362, 362, 362, 362, 362, 362, 363, 363, 363, 363, 1307 363, 363, 363, 363, 363, 363, 364, 364, 364, 364, 1308 365, 365, 365, 366, 366, 367, 367, 367, 367, 367, 1309 367, 368, 368, 368, 368, 368, 368, 369, 370, 370, 1310 370, 371, 371, 372, 372 1307 1311 }; 1308 1312 … … 1343 1347 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1344 1348 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1345 1, 1, 1, 1, 2, 2, 3, 3, 1, 3,1346 1, 2, 2, 2, 4, 4, 4, 4, 1, 2,1347 2, 3, 1, 2, 2, 1, 2, 2, 3, 1,1348 2, 2, 1, 1, 4, 2, 5, 7, 2, 2,1349 2, 1, 2, 2, 3, 2, 3, 1, 2, 3,1350 2, 2, 4, 0, 1, 2, 2, 1, 0, 1,1351 2, 2, 5, 6, 2, 2, 4, 0, 2, 0,1352 1, 1, 1, 5, 5, 5, 1, 5, 5, 9,1353 1, 5, 0, 1, 1, 5, 1, 1, 5, 5,1354 1, 3, 3, 4, 1, 1, 1, 1, 2, 1,1355 3, 3, 1, 2, 1, 3, 1, 1, 1, 1,1356 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,1357 1, 2, 0, 2, 2, 1, 4, 0, 1, 2,1358 3, 4, 2, 2, 1, 2, 1, 2, 5, 5,1359 7, 6, 1, 2, 2, 3, 1, 2, 2, 4,1360 2, 4, 0, 4, 2, 1, 1, 1, 0, 2,1361 5, 5, 13, 1, 1, 3, 3, 2, 3, 3,1362 2, 4, 1, 6, 9, 0, 11, 1, 3, 3,1363 3, 1, 1, 5, 2, 5, 0, 1, 1, 3,1364 0, 1, 1, 1, 1, 0, 6, 2, 1, 2,1365 4, 2, 3, 3, 3, 4, 5, 5, 5, 6,1366 1, 1, 1, 3, 0, 5, 0, 1, 1, 2,1367 6, 1, 3, 0, 1, 4, 1, 1, 1, 1,1368 2, 1, 2, 2, 1, 3, 2, 3, 3, 2,1369 4, 4, 3, 8, 3, 2, 1, 2, 6, 8,1370 3, 2, 3, 3, 4, 4, 3, 1, 1, 1,1371 4, 6, 3, 2, 3, 3, 4, 4, 3, 2,1372 1, 2, 2, 1, 3, 2, 3, 3, 2, 4,1373 4, 3, 6, 8, 3, 2, 1, 2, 2, 2,1374 3, 3, 2, 4, 4, 3, 6, 8, 3, 2,1375 1, 2, 2, 1, 1, 2, 3, 3, 2, 4,1376 6, 8, 1, 2, 2, 1, 2, 2, 3, 3,1377 1, 4, 4, 3, 5, 8, 3, 2, 3, 1,1378 5, 5, 6, 6, 1, 2, 2, 1, 2, 2,1379 3, 3, 1, 4, 4, 3, 5, 8, 3, 1,1380 2, 1, 2, 6, 5, 6, 7, 7, 1, 2,1381 2, 1, 2, 2, 3, 3, 1, 4, 4, 3,1382 8, 3, 1, 1, 2, 1, 1, 2, 3, 2,1383 3, 2, 3, 3, 2, 4, 3, 2, 3, 2,1384 4, 3, 2, 6, 6, 6, 7, 1, 2, 1,1385 1, 1, 2, 3, 2, 3, 2, 3, 3, 4,1386 2, 3, 4, 2, 5, 5, 6, 6, 0, 1,1387 0, 21349 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1350 3, 1, 2, 2, 2, 4, 4, 4, 4, 1, 1351 2, 2, 3, 1, 2, 2, 1, 2, 2, 3, 1352 1, 2, 2, 1, 1, 4, 2, 0, 6, 7, 1353 2, 2, 2, 1, 2, 2, 3, 2, 3, 1, 1354 2, 3, 2, 2, 4, 0, 1, 2, 2, 1, 1355 0, 1, 2, 2, 5, 2, 0, 7, 2, 4, 1356 0, 2, 0, 1, 1, 1, 5, 5, 5, 1, 1357 5, 5, 9, 1, 5, 0, 1, 1, 5, 1, 1358 1, 5, 5, 1, 3, 3, 4, 1, 1, 1, 1359 1, 2, 1, 3, 3, 1, 2, 1, 3, 1, 1360 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1361 2, 1, 1, 1, 2, 0, 2, 2, 1, 4, 1362 0, 1, 2, 3, 4, 2, 2, 1, 2, 1, 1363 2, 5, 5, 7, 6, 1, 2, 2, 3, 1, 1364 2, 2, 4, 2, 4, 0, 4, 2, 1, 1, 1365 1, 0, 2, 5, 5, 13, 1, 1, 3, 3, 1366 2, 3, 3, 2, 4, 1, 6, 9, 0, 11, 1367 1, 3, 3, 3, 1, 1, 5, 2, 5, 0, 1368 1, 1, 3, 0, 1, 1, 1, 1, 0, 6, 1369 2, 1, 2, 4, 2, 3, 3, 3, 4, 5, 1370 5, 5, 6, 1, 1, 1, 3, 0, 5, 0, 1371 1, 1, 2, 6, 1, 3, 0, 1, 4, 1, 1372 1, 1, 1, 2, 1, 2, 2, 1, 3, 2, 1373 3, 3, 2, 4, 4, 3, 8, 3, 2, 1, 1374 2, 6, 8, 3, 2, 3, 3, 4, 4, 3, 1375 1, 1, 1, 4, 6, 3, 2, 3, 3, 4, 1376 4, 3, 2, 1, 2, 2, 1, 3, 2, 3, 1377 3, 2, 4, 4, 3, 6, 8, 3, 2, 1, 1378 2, 2, 2, 3, 3, 2, 4, 4, 3, 6, 1379 8, 3, 2, 1, 2, 2, 1, 1, 2, 3, 1380 3, 2, 4, 6, 8, 1, 2, 2, 1, 2, 1381 2, 3, 3, 1, 4, 4, 3, 5, 8, 3, 1382 2, 3, 1, 5, 5, 6, 6, 1, 2, 2, 1383 1, 2, 2, 3, 3, 1, 4, 4, 3, 5, 1384 8, 3, 1, 2, 1, 2, 6, 5, 6, 7, 1385 7, 1, 2, 2, 1, 2, 2, 3, 3, 1, 1386 4, 4, 3, 8, 3, 1, 1, 2, 1, 1, 1387 2, 3, 2, 3, 2, 3, 3, 2, 4, 3, 1388 2, 3, 2, 4, 3, 2, 6, 6, 6, 7, 1389 1, 2, 1, 1, 1, 2, 3, 2, 3, 2, 1390 3, 3, 4, 2, 3, 4, 2, 5, 5, 6, 1391 6, 0, 1, 0, 2 1388 1392 }; 1389 1393 … … 1395 1399 294, 294, 315, 313, 316, 314, 317, 318, 300, 302, 1396 1400 301, 0, 303, 329, 321, 326, 324, 325, 323, 322, 1397 327, 328, 33 0, 331, 332, 546, 546, 546, 0, 0,1398 0, 294, 220, 304, 319, 320, 7, 359, 0, 8,1399 14, 15, 0, 2, 294, 564, 9, 524, 522, 247,1400 3, 452, 3, 260, 0, 3, 3, 3, 248, 3,1401 0, 0, 0, 295, 296, 298, 294, 307, 310, 312,1402 3 40, 286, 333, 338, 287, 348, 288, 355, 352, 362,1403 0, 0, 363, 289, 472, 476, 3, 3, 0, 2,1404 518, 523, 528, 299, 0, 0, 546, 576, 546, 2,1405 587, 588, 589, 294, 0, 730, 731, 0, 12, 294,1406 0, 13, 270, 271, 0, 295, 290, 291, 292, 293,1407 525, 305, 391, 547, 548, 369, 370, 12, 443, 444,1408 11, 439, 442, 0, 502, 497, 488, 443, 444, 0,1409 0, 527, 221, 0, 294, 0, 0, 0, 0, 0,1410 0, 0, 0, 294, 294, 2, 0, 732, 295, 581,1411 5 93, 736, 729, 727, 734, 0, 0, 0, 254, 2,1412 0, 531, 437, 438, 436, 0, 0, 0, 0, 546,1413 0, 633, 634, 0, 0, 544, 540, 546, 561, 546,1414 54 6, 541, 2, 542, 546, 600, 546, 546, 603, 0,1415 0, 0, 294, 294, 313, 360, 2, 294, 261, 297,1416 308, 341, 353, 477, 0, 2, 0, 452, 262, 295,1417 334, 349, 356, 473, 0, 2, 0, 311, 335, 342,1418 343, 0, 350, 354, 357, 361, 444, 294, 294, 365,1419 36 8, 0, 394, 474, 478, 0, 0, 0, 1, 294,1420 2, 529, 575, 577, 294, 2, 740, 295, 743, 544,1421 54 4, 295, 0, 0, 0, 273, 546, 541, 2, 294,1422 0, 0, 294, 549, 2, 500, 2, 553, 0, 0,1423 0, 0, 0, 0, 18, 59, 4, 5, 6, 16,1424 0, 0, 0, 294, 2, 0, 294, 65, 66, 67,1425 6 8, 48, 19, 49, 22, 47, 69, 0, 72, 76,1426 7 9, 82, 87, 90, 92, 94, 96, 98, 100, 105,1427 494, 750, 450, 493, 0, 448, 449, 0, 565, 580,1428 583, 586, 5 92, 595, 598, 359, 0, 2, 738, 0,1429 294, 741, 2, 294, 3, 424, 0, 432, 295, 294,1430 307, 333, 287, 348, 355, 3, 3, 406, 410, 420,1431 42 5, 472, 294, 426, 705, 706, 294, 427, 429, 294,1432 2, 582, 594, 728, 2, 2, 249, 2, 457,0,1433 455, 454, 453, 141, 2, 2, 251, 2, 2, 250,1434 2, 281, 2, 282, 0, 280,0, 0, 0, 0,1435 0, 0, 0, 0, 0, 566, 605, 0, 452, 2,1436 560, 569, 659, 562, 563, 532, 294, 2, 599, 608,1437 6 01, 602, 0, 276, 294, 294, 339, 295, 0, 295,1438 0, 294, 733, 737, 735, 533, 294, 544, 255, 263,1439 309, 0, 2, 534, 294, 498, 336, 337, 283, 351,1440 35 8, 0, 294, 2, 383, 294, 371, 0, 0, 377,1441 727, 294, 748, 397, 0, 475, 499, 252, 253, 519,1442 294, 434, 0, 294, 237, 0, 2, 239, 0, 295,1443 0, 257, 2, 258, 278, 0, 0, 2, 294, 544,1444 294, 485, 487, 486, 0, 0, 750, 0, 294, 0,1445 294, 489, 294, 559, 557, 558, 556, 0, 551, 554,1446 0, 0, 294, 56, 294, 69, 52, 294, 62, 294,1447 294, 50, 51, 64, 2, 127, 0, 0, 446, 0,1448 445, 111, 294, 54, 55, 17, 0, 29, 30, 35,1449 2, 0, 35, 117, 118, 119, 120, 121, 122, 123,1450 12 4, 125, 126, 0, 0, 53, 0, 0, 0, 0,1401 327, 328, 333, 330, 331, 332, 549, 549, 549, 0, 1402 0, 0, 294, 220, 304, 319, 320, 7, 360, 0, 1403 8, 14, 15, 0, 2, 294, 567, 9, 527, 525, 1404 247, 3, 455, 3, 260, 0, 3, 3, 3, 248, 1405 3, 0, 0, 0, 295, 296, 298, 294, 307, 310, 1406 312, 341, 286, 334, 339, 287, 349, 288, 356, 353, 1407 363, 0, 0, 364, 289, 475, 479, 3, 3, 0, 1408 2, 521, 526, 531, 299, 0, 0, 549, 579, 549, 1409 2, 590, 591, 592, 294, 0, 733, 734, 0, 12, 1410 294, 0, 13, 270, 271, 0, 295, 290, 291, 292, 1411 293, 528, 305, 393, 550, 551, 371, 372, 12, 446, 1412 447, 11, 442, 445, 0, 505, 500, 491, 446, 447, 1413 0, 0, 530, 221, 0, 294, 0, 0, 0, 0, 1414 0, 0, 0, 0, 294, 294, 2, 0, 735, 295, 1415 584, 596, 739, 732, 730, 737, 0, 0, 0, 254, 1416 2, 0, 534, 440, 441, 439, 0, 0, 0, 0, 1417 549, 0, 636, 637, 0, 0, 547, 543, 549, 564, 1418 549, 549, 544, 2, 545, 549, 603, 549, 549, 606, 1419 0, 0, 0, 294, 294, 313, 361, 2, 294, 261, 1420 297, 308, 342, 354, 480, 0, 2, 0, 455, 262, 1421 295, 335, 350, 357, 476, 0, 2, 0, 311, 336, 1422 343, 344, 0, 351, 355, 358, 362, 447, 294, 294, 1423 366, 370, 0, 395, 477, 481, 0, 0, 0, 1, 1424 294, 2, 532, 578, 580, 294, 2, 743, 295, 746, 1425 547, 547, 295, 0, 0, 0, 273, 549, 544, 2, 1426 294, 0, 0, 294, 552, 2, 503, 2, 556, 0, 1427 0, 0, 0, 0, 0, 18, 59, 4, 5, 6, 1428 16, 0, 0, 0, 294, 2, 0, 294, 65, 66, 1429 67, 68, 48, 19, 49, 22, 47, 69, 0, 72, 1430 76, 79, 82, 87, 90, 92, 94, 96, 98, 100, 1431 105, 497, 753, 453, 496, 0, 451, 452, 0, 568, 1432 583, 586, 589, 595, 598, 601, 360, 0, 2, 741, 1433 0, 294, 744, 2, 294, 3, 427, 0, 435, 295, 1434 294, 307, 334, 287, 349, 356, 3, 3, 409, 413, 1435 423, 428, 475, 294, 429, 708, 709, 294, 430, 432, 1436 294, 2, 585, 597, 731, 2, 2, 249, 2, 460, 1437 0, 458, 457, 456, 141, 2, 2, 251, 2, 2, 1438 250, 2, 281, 2, 282, 0, 280, 0, 0, 0, 1439 0, 0, 0, 0, 0, 0, 569, 608, 0, 455, 1440 2, 563, 572, 662, 565, 566, 535, 294, 2, 602, 1441 611, 604, 605, 0, 276, 294, 294, 340, 295, 0, 1442 295, 0, 294, 736, 740, 738, 536, 294, 547, 255, 1443 263, 309, 0, 2, 537, 294, 501, 337, 338, 283, 1444 352, 359, 0, 294, 2, 385, 294, 373, 0, 0, 1445 379, 730, 0, 751, 400, 0, 478, 502, 252, 253, 1446 522, 294, 437, 0, 294, 237, 0, 2, 239, 0, 1447 295, 0, 257, 2, 258, 278, 0, 0, 2, 294, 1448 547, 294, 488, 490, 489, 0, 0, 753, 0, 294, 1449 0, 294, 492, 294, 562, 560, 561, 559, 0, 554, 1450 557, 0, 0, 294, 56, 294, 69, 52, 294, 62, 1451 294, 294, 50, 51, 64, 2, 127, 0, 0, 449, 1452 0, 448, 111, 294, 54, 55, 17, 0, 29, 30, 1453 35, 2, 0, 35, 117, 118, 119, 120, 121, 122, 1454 123, 124, 125, 126, 0, 0, 53, 0, 0, 0, 1451 1455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1452 0, 0, 0, 0, 0, 0, 108, 2, 645, 451, 1453 642, 546, 546, 650, 479, 294, 2, 584, 585, 0, 1454 596, 597, 0, 2, 739, 742, 111, 294, 2, 294, 1455 0, 707, 295, 711, 702, 703, 709, 0, 2, 2, 1456 667, 546, 750, 616, 546, 546, 750, 546, 630, 546, 1457 546, 681, 433, 664, 546, 546, 672, 679, 294, 428, 1458 295, 0, 0, 294, 717, 295, 722, 750, 714, 294, 1459 719, 750, 294, 294, 294, 0, 111, 0, 18, 5, 1460 2, 0, 19, 0, 458, 748, 0, 0, 464, 241, 1461 0, 294, 0, 0, 0, 544, 568, 572, 574, 604, 1462 607, 611, 614, 567, 606, 0, 284, 657, 0, 294, 1463 277, 0, 0, 0, 0, 275, 2, 0, 259, 535, 1464 294, 0, 0, 0, 0, 294, 294, 0, 0, 691, 1465 381, 384, 388, 546, 388, 696, 387, 688, 546, 546, 1466 364, 372, 380, 373, 546, 375, 378, 294, 749, 0, 1467 0, 395, 748, 295, 3, 413, 3, 417, 416, 590, 1468 0, 530, 294, 3, 3, 294, 432, 295, 3, 426, 1469 427, 2, 0, 0, 0, 484, 306, 294, 480, 482, 1470 3, 2, 2, 0, 501, 3, 0, 553, 129, 0, 1471 0, 222, 0, 0, 0, 2, 0, 0, 36, 0, 1472 0, 111, 294, 20, 0, 21, 0, 691, 447, 0, 1473 109, 3, 2, 27, 2, 0, 33, 0, 2, 25, 1474 0, 106, 107, 73, 74, 75, 77, 78, 80, 81, 1475 85, 86, 83, 84, 88, 89, 91, 93, 95, 97, 1476 99, 0, 0, 751, 294, 0, 0, 0, 646, 647, 1477 643, 644, 496, 495, 294, 0, 3, 294, 713, 294, 1478 718, 295, 294, 294, 294, 661, 704, 660, 2, 294, 1479 0, 0, 0, 0, 0, 0, 0, 0, 682, 0, 1480 668, 619, 635, 669, 2, 615, 622, 430, 617, 618, 1481 431, 2, 629, 638, 631, 632, 665, 666, 680, 708, 1482 712, 710, 750, 268, 2, 744, 2, 421, 716, 721, 1483 422, 0, 400, 3, 3, 3, 3, 452, 3, 0, 1484 2, 467, 463, 749, 0, 459, 466, 2, 462, 465, 1485 0, 294, 242, 264, 3, 272, 274, 0, 452, 2, 1486 570, 571, 2, 609, 610, 0, 658, 536, 3, 345, 1487 344, 347, 346, 294, 537, 0, 538, 294, 374, 376, 1488 2, 0, 0, 0, 0, 104, 390, 692, 693, 385, 1489 389, 386, 689, 690, 379, 383, 366, 397, 392, 398, 1490 0, 0, 0, 435, 240, 0, 0, 3, 2, 667, 1491 428, 0, 526, 0, 750, 488, 0, 294, 294, 294, 1492 0, 550, 552, 130, 0, 0, 215, 0, 0, 0, 1493 223, 224, 57, 0, 63, 294, 0, 61, 60, 0, 1494 128, 692, 457, 70, 71, 110, 115, 3, 109, 0, 1495 0, 0, 24, 35, 3, 0, 32, 102, 0, 3, 1496 649, 653, 656, 648, 3, 591, 3, 715, 720, 2, 1497 294, 3, 3, 295, 0, 3, 621, 625, 628, 637, 1498 671, 675, 678, 294, 3, 620, 636, 670, 294, 294, 1499 423, 294, 294, 745, 0, 0, 0, 0, 256, 0, 1500 104, 0, 3, 3, 0, 460, 0, 456, 0, 0, 1501 245, 294, 0, 0, 129, 0, 0, 0, 0, 0, 1502 129, 0, 0, 109, 109, 2, 0, 0, 0, 3, 1503 131, 132, 2, 143, 133, 134, 135, 136, 137, 138, 1504 145, 147, 0, 0, 0, 285, 294, 294, 546, 0, 1505 539, 294, 111, 695, 699, 701, 694, 382, 396, 393, 1506 578, 2, 663, 662, 0, 668, 2, 481, 483, 503, 1507 3, 511, 512, 0, 2, 507, 3, 3, 0, 0, 1508 555, 222, 0, 0, 0, 222, 0, 0, 3, 37, 1509 748, 109, 0, 3, 660, 42, 3, 40, 3, 34, 1510 0, 3, 101, 103, 0, 2, 651, 652, 0, 0, 1511 294, 0, 0, 0, 3, 637, 0, 2, 623, 624, 1512 2, 639, 2, 673, 674, 0, 0, 3, 0, 3, 1513 3, 3, 3, 408, 407, 411, 2, 2, 747, 746, 1514 112, 0, 0, 0, 0, 3, 461, 3, 0, 243, 1515 146, 3, 295, 294, 0, 0, 0, 0, 2, 191, 1516 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 1517 111, 0, 546, 151, 148, 294, 0, 0, 267, 279, 1518 3, 3, 545, 612, 367, 2, 697, 698, 294, 266, 1519 294, 0, 514, 491, 294, 0, 0, 490, 505, 0, 1520 0, 0, 216, 0, 225, 58, 109, 0, 0, 116, 1521 113, 0, 0, 0, 0, 0, 0, 23, 0, 654, 1522 294, 579, 265, 723, 724, 725, 0, 676, 294, 294, 1523 294, 3, 3, 0, 684, 0, 0, 0, 0, 294, 1524 294, 3, 543, 468, 469, 0, 0, 246, 295, 0, 1525 0, 0, 0, 294, 192, 190, 0, 187, 193, 0, 1526 0, 0, 0, 197, 200, 198, 194, 0, 195, 35, 1527 129, 144, 142, 244, 0, 0, 294, 415, 419, 418, 1528 0, 508, 2, 509, 2, 510, 504, 294, 228, 0, 1529 226, 0, 228, 3, 660, 31, 114, 2, 45, 2, 1530 43, 41, 28, 112, 26, 3, 726, 3, 3, 3, 1531 0, 0, 683, 685, 626, 640, 269, 2, 405, 3, 1532 404, 0, 471, 468, 129, 0, 0, 129, 3, 0, 1533 129, 188, 0, 2, 2, 209, 199, 0, 0, 0, 1534 0, 140, 573, 613, 3, 2, 0, 0, 2, 229, 1535 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 1536 0, 0, 686, 687, 294, 0, 470, 152, 0, 0, 1537 2, 165, 129, 154, 0, 182, 0, 129, 0, 2, 1538 156, 0, 2, 0, 2, 2, 2, 196, 32, 0, 1539 294, 513, 515, 506, 0, 0, 0, 0, 114, 38, 1540 3, 3, 655, 627, 641, 677, 409, 129, 158, 161, 1541 0, 160, 164, 3, 167, 166, 0, 129, 184, 129, 1542 3, 0, 294, 0, 294, 0, 2, 0, 2, 139, 1543 700, 2, 230, 231, 0, 227, 218, 0, 0, 0, 1544 153, 0, 0, 163, 233, 168, 2, 235, 183, 0, 1545 186, 172, 201, 3, 210, 214, 203, 3, 0, 294, 1546 0, 294, 0, 0, 0, 39, 46, 44, 159, 162, 1547 129, 0, 169, 294, 129, 129, 0, 173, 0, 0, 1548 691, 211, 212, 213, 0, 202, 3, 204, 3, 294, 1549 219, 232, 149, 170, 155, 129, 236, 185, 180, 178, 1550 174, 157, 129, 0, 692, 0, 0, 0, 0, 150, 1551 171, 181, 175, 179, 178, 176, 3, 3, 0, 0, 1552 492, 177, 205, 207, 3, 3, 206, 208 1456 0, 0, 0, 0, 0, 0, 0, 108, 2, 648, 1457 454, 645, 549, 549, 653, 482, 294, 2, 587, 588, 1458 0, 599, 600, 0, 2, 742, 745, 111, 294, 2, 1459 294, 0, 710, 295, 714, 705, 706, 712, 0, 2, 1460 2, 670, 549, 753, 619, 549, 549, 753, 549, 633, 1461 549, 549, 684, 436, 667, 549, 549, 675, 682, 294, 1462 431, 295, 0, 0, 294, 720, 295, 725, 753, 717, 1463 294, 722, 753, 294, 294, 294, 0, 111, 0, 18, 1464 5, 2, 0, 19, 0, 461, 751, 0, 0, 467, 1465 241, 0, 294, 0, 0, 0, 547, 571, 575, 577, 1466 607, 610, 614, 617, 570, 609, 0, 284, 660, 0, 1467 294, 277, 0, 0, 0, 0, 275, 2, 0, 259, 1468 538, 294, 0, 0, 0, 0, 294, 294, 0, 0, 1469 694, 383, 386, 390, 549, 390, 699, 389, 691, 549, 1470 549, 365, 374, 382, 375, 549, 377, 380, 294, 752, 1471 0, 0, 398, 0, 295, 3, 416, 3, 420, 419, 1472 593, 0, 533, 294, 3, 3, 294, 435, 295, 3, 1473 429, 430, 2, 0, 0, 0, 487, 306, 294, 483, 1474 485, 3, 2, 2, 0, 504, 3, 0, 556, 129, 1475 0, 0, 222, 0, 0, 0, 2, 0, 0, 36, 1476 0, 0, 111, 294, 20, 0, 21, 0, 694, 450, 1477 0, 109, 3, 2, 27, 2, 0, 33, 0, 2, 1478 25, 0, 106, 107, 73, 74, 75, 77, 78, 80, 1479 81, 85, 86, 83, 84, 88, 89, 91, 93, 95, 1480 97, 99, 0, 0, 754, 294, 0, 0, 0, 649, 1481 650, 646, 647, 499, 498, 294, 0, 3, 294, 716, 1482 294, 721, 295, 294, 294, 294, 664, 707, 663, 2, 1483 294, 0, 0, 0, 0, 0, 0, 0, 0, 685, 1484 0, 671, 622, 638, 672, 2, 618, 625, 433, 620, 1485 621, 434, 2, 632, 641, 634, 635, 668, 669, 683, 1486 711, 715, 713, 753, 268, 2, 747, 2, 424, 719, 1487 724, 425, 0, 403, 3, 3, 3, 3, 455, 3, 1488 0, 2, 470, 466, 752, 0, 462, 469, 2, 465, 1489 468, 0, 294, 242, 264, 3, 272, 274, 0, 455, 1490 2, 573, 574, 2, 612, 613, 0, 661, 539, 3, 1491 346, 345, 348, 347, 294, 540, 0, 541, 294, 376, 1492 378, 2, 0, 0, 0, 0, 104, 392, 695, 696, 1493 387, 391, 388, 692, 693, 381, 385, 294, 400, 394, 1494 401, 751, 0, 0, 438, 240, 0, 0, 3, 2, 1495 670, 431, 0, 529, 0, 753, 491, 0, 294, 294, 1496 294, 0, 553, 555, 130, 0, 0, 215, 0, 0, 1497 0, 223, 224, 57, 0, 63, 294, 0, 61, 60, 1498 0, 128, 695, 460, 70, 71, 110, 115, 3, 109, 1499 0, 0, 0, 24, 35, 3, 0, 32, 102, 0, 1500 3, 652, 656, 659, 651, 3, 594, 3, 718, 723, 1501 2, 294, 3, 3, 295, 0, 3, 624, 628, 631, 1502 640, 674, 678, 681, 294, 3, 623, 639, 673, 294, 1503 294, 426, 294, 294, 748, 0, 0, 0, 0, 256, 1504 0, 104, 0, 3, 3, 0, 463, 0, 459, 0, 1505 0, 245, 294, 0, 0, 129, 0, 0, 0, 0, 1506 0, 129, 0, 0, 109, 109, 2, 0, 0, 0, 1507 3, 131, 132, 2, 143, 133, 134, 135, 136, 137, 1508 138, 145, 147, 0, 0, 0, 285, 294, 294, 549, 1509 0, 542, 294, 111, 698, 702, 704, 697, 384, 368, 1510 399, 0, 581, 2, 666, 665, 0, 671, 2, 484, 1511 486, 506, 3, 514, 515, 0, 2, 510, 3, 3, 1512 0, 0, 558, 222, 0, 0, 0, 222, 0, 0, 1513 3, 37, 751, 109, 0, 3, 663, 42, 3, 40, 1514 3, 34, 0, 3, 101, 103, 0, 2, 654, 655, 1515 0, 0, 294, 0, 0, 0, 3, 640, 0, 2, 1516 626, 627, 2, 642, 2, 676, 677, 0, 0, 3, 1517 0, 3, 3, 3, 3, 411, 410, 414, 2, 2, 1518 750, 749, 112, 0, 0, 0, 0, 3, 464, 3, 1519 0, 243, 146, 3, 295, 294, 0, 0, 0, 0, 1520 2, 191, 0, 189, 0, 0, 0, 0, 0, 0, 1521 0, 0, 111, 0, 549, 151, 148, 294, 0, 0, 1522 267, 279, 3, 3, 548, 615, 369, 2, 700, 701, 1523 397, 294, 266, 294, 0, 517, 494, 294, 0, 0, 1524 493, 508, 0, 0, 0, 216, 0, 225, 58, 109, 1525 0, 0, 116, 113, 0, 0, 0, 0, 0, 0, 1526 23, 0, 657, 294, 582, 265, 726, 727, 728, 0, 1527 679, 294, 294, 294, 3, 3, 0, 687, 0, 0, 1528 0, 0, 294, 294, 3, 546, 471, 472, 0, 0, 1529 246, 295, 0, 0, 0, 0, 294, 192, 190, 0, 1530 187, 193, 0, 0, 0, 0, 197, 200, 198, 194, 1531 0, 195, 35, 129, 144, 142, 244, 0, 0, 294, 1532 418, 422, 421, 0, 511, 2, 512, 2, 513, 507, 1533 294, 228, 0, 226, 0, 228, 3, 663, 31, 114, 1534 2, 45, 2, 43, 41, 28, 112, 26, 3, 729, 1535 3, 3, 3, 0, 0, 686, 688, 629, 643, 269, 1536 2, 408, 3, 407, 0, 474, 471, 129, 0, 0, 1537 129, 3, 0, 129, 188, 0, 2, 2, 209, 199, 1538 0, 0, 0, 0, 140, 576, 616, 3, 2, 0, 1539 0, 2, 229, 0, 0, 217, 0, 0, 0, 0, 1540 0, 0, 0, 0, 0, 689, 690, 294, 0, 473, 1541 152, 0, 0, 2, 165, 129, 154, 0, 182, 0, 1542 129, 0, 2, 156, 0, 2, 0, 2, 2, 2, 1543 196, 32, 0, 294, 516, 518, 509, 0, 0, 0, 1544 0, 114, 38, 3, 3, 658, 630, 644, 680, 412, 1545 129, 158, 161, 0, 160, 164, 3, 167, 166, 0, 1546 129, 184, 129, 3, 0, 294, 0, 294, 0, 2, 1547 0, 2, 139, 703, 2, 230, 231, 0, 227, 218, 1548 0, 0, 0, 153, 0, 0, 163, 233, 168, 2, 1549 235, 183, 0, 186, 172, 201, 3, 210, 214, 203, 1550 3, 0, 294, 0, 294, 0, 0, 0, 39, 46, 1551 44, 159, 162, 129, 0, 169, 294, 129, 129, 0, 1552 173, 0, 0, 694, 211, 212, 213, 0, 202, 3, 1553 204, 3, 294, 219, 232, 149, 170, 155, 129, 236, 1554 185, 180, 178, 174, 157, 129, 0, 695, 0, 0, 1555 0, 0, 150, 171, 181, 175, 179, 178, 176, 3, 1556 3, 0, 0, 495, 177, 205, 207, 3, 3, 206, 1557 208 1553 1558 }; 1554 1559 … … 1556 1561 static const yytype_int16 yydefgoto[] = 1557 1562 { 1558 -1, 8 39, 474, 301, 45, 131, 132, 302, 303, 304,1559 30 5, 785, 786, 1146, 1147, 306, 307, 308, 309, 310,1560 31 1, 312, 313, 314, 315, 316, 317, 318, 319, 1051,1561 52 5, 996, 321, 997, 554, 973, 1078, 1542, 1080, 1081,1562 108 2, 1083, 1543, 1084, 1085, 1459, 1460, 1421, 1422, 1423,1563 152 1, 1522, 1526, 1527, 1562, 1563, 1086, 1379, 1087, 1088,1564 131 3, 1314, 1315, 1503, 1089, 143, 979, 980, 981, 1400,1565 148 4, 1495, 1496, 475, 476, 901, 902, 1059, 48, 49,1566 5 0, 51, 52, 345, 156, 55, 56, 57, 58, 59,1567 34 7, 61, 62, 261, 64, 65, 272, 349, 350, 68,1568 69, 70, 71, 116, 73, 202, 352, 117, 76, 118,1569 7 8, 79, 80, 455, 456, 457, 458, 700, 939, 701,1570 81, 82, 462, 721, 881, 882, 355, 356, 724, 725,1571 72 6, 357, 358, 359, 360, 472, 339, 133, 134, 529,1572 323, 168, 654, 655, 656, 657, 658, 83, 119, 85,1573 495, 496, 965, 497, 275, 501, 324, 86, 135, 136,1574 87, 1337, 1124, 1125, 1126, 1127, 88, 89, 742, 90,1575 271, 91, 92, 185, 1053, 688, 410, 123, 93, 507,1576 508, 509, 186, 266, 188, 189, 190, 267, 96, 97,1577 9 8, 99, 100, 101, 102, 193, 194, 195, 196, 197,1578 851, 613, 614, 615, 616, 198, 618, 619, 620, 579,1579 580, 581, 582, 705, 103, 622, 623, 624, 625, 626,1580 62 7, 938, 707, 708, 709, 603, 363, 364, 365, 366,1581 3 25, 162, 105, 106, 107, 368, 719, 5761563 -1, 840, 475, 302, 46, 132, 133, 303, 304, 305, 1564 306, 786, 787, 1148, 1149, 307, 308, 309, 310, 311, 1565 312, 313, 314, 315, 316, 317, 318, 319, 320, 1052, 1566 526, 997, 322, 998, 555, 974, 1079, 1545, 1081, 1082, 1567 1083, 1084, 1546, 1085, 1086, 1462, 1463, 1424, 1425, 1426, 1568 1524, 1525, 1529, 1530, 1565, 1566, 1087, 1382, 1088, 1089, 1569 1316, 1317, 1318, 1506, 1090, 144, 980, 981, 982, 1403, 1570 1487, 1498, 1499, 476, 477, 902, 903, 1060, 49, 50, 1571 51, 52, 53, 346, 157, 56, 57, 58, 59, 60, 1572 348, 62, 63, 262, 65, 66, 273, 350, 351, 69, 1573 70, 71, 72, 117, 74, 203, 353, 118, 77, 119, 1574 79, 80, 462, 81, 456, 457, 458, 459, 701, 940, 1575 702, 82, 83, 465, 463, 722, 882, 883, 356, 357, 1576 725, 726, 727, 358, 359, 360, 361, 473, 340, 134, 1577 135, 530, 324, 169, 655, 656, 657, 658, 659, 84, 1578 120, 86, 496, 497, 966, 498, 276, 502, 325, 87, 1579 136, 137, 88, 1340, 1126, 1127, 1128, 1129, 89, 90, 1580 743, 91, 272, 92, 93, 186, 1054, 689, 411, 124, 1581 94, 508, 509, 510, 187, 267, 189, 190, 191, 268, 1582 97, 98, 99, 100, 101, 102, 103, 194, 195, 196, 1583 197, 198, 852, 614, 615, 616, 617, 199, 619, 620, 1584 621, 580, 581, 582, 583, 706, 104, 623, 624, 625, 1585 626, 627, 628, 939, 708, 709, 710, 604, 364, 365, 1586 366, 367, 326, 163, 106, 107, 108, 369, 720, 577 1582 1587 }; 1583 1588 1584 1589 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1585 1590 STATE-NUM. */ 1586 #define YYPACT_NINF -1 2811591 #define YYPACT_NINF -1332 1587 1592 static const yytype_int16 yypact[] = 1588 1593 { 1589 3705, 8889, -1281, 104, -1281, -1281, -1281, -1281, -1281, -1281, 1590 -1281, 44, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1591 -1281, -1281, -1281, -1281, -1281, 155, 155, 155, 1205, 815, 1592 110, 6006, 222, -1281, -1281, -1281, -1281, -1281, 130, -1281, 1593 -1281, -1281, 1267, 189, 3199, -1281, -1281, -1281, -1281, -1281, 1594 -1281, 31, 144, -1281, 1338, -1281, -1281, -1281, -1281, 153, 1595 1410, 279, 82, 7674, -1281, -1281, 8086, 1234, -1281, -1281, 1596 -1281, 981, 359, 7231, 925, 669, 981, 1012, -1281, -1281, 1597 738, 575, -1281, 981, 1119, -1281, 242, -1281, 416, 419, 1598 -1281, -1281, -1281, -1281, 277, 144, 155, -1281, 155, -1281, 1599 -1281, -1281, -1281, 9536, 1338, -1281, -1281, 1338, -1281, 9574, 1600 321, -1281, -1281, -1281, 2195, 9607, -1281, 565, 565, 565, 1601 -1281, -1281, -1281, 155, -1281, -1281, -1281, 280, 366, 418, 1602 -1281, -1281, -1281, 425, -1281, -1281, -1281, -1281, -1281, 443, 1603 475, -1281, -1281, 120, 8972, 3739, 375, 387, 486, 496, 1604 514, 527, 541, 8273, 7081, 550, 568, -1281, 9460, -1281, 1605 -1281, -1281, -1281, 602, -1281, 121, 4456, 4456, -1281, 552, 1606 298, -1281, -1281, -1281, -1281, 634, 302, 306, 327, 155, 1607 590, -1281, -1281, 1410, 2454, 696, -1281, 90, -1281, 155, 1608 155, 144, -1281, -1281, 124, -1281, 155, 155, -1281, 2638, 1609 658, 667, 565, 6993, -1281, -1281, 678, 3199, -1281, -1281, 1610 981, -1281, -1281, -1281, 144, -1281, 1338, 31, -1281, 8010, 1611 -1281, 565, 565, 565, 144, -1281, 1205, -1281, 5198, -1281, 1612 -1281, 673, 565, -1281, 565, -1281, 130, 8972, 9002, 686, 1613 -1281, 815, 694, 565, -1281, 1205, 728, 736, -1281, 6006, 1614 544, -1281, -1281, -1281, 9431, -1281, -1281, 3957, -1281, 696, 1615 79, 9607, 6464, 2195, 2638, -1281, 157, -1281, -1281, 9574, 1616 1338, 717, 7703, -1281, -1281, 699, -1281, 10744, 783, 831, 1617 3925, 787, 6306, 10567, -1281, 827, -1281, -1281, -1281, -1281, 1618 10625, 10625, 544, 8633, 829, 6306, 9085, -1281, -1281, -1281, 1619 -1281, -1281, -1281, 862, -1281, 1121, 2197, 6306, -1281, 599, 1620 388, 472, 354, 593, 830, 867, 873, 970, 245, -1281, 1621 -1281, 874, 650, -1281, 325, -1281, -1281, 3739, -1281, -1281, 1622 585, 901, -1281, 747, 901, 958, 130, -1281, -1281, 962, 1623 9536, -1281, 977, 8746, -1281, -1281, 957, 935, 8355, 6993, 1624 981, -1281, 981, 565, 565, -1281, -1281, -1281, -1281, -1281, 1625 -1281, 565, 9645, 1338, -1281, -1281, 9683, 1067, -1281, 9123, 1626 -1281, -1281, -1281, -1281, -1281, -1281, -1281, 990, 5315, 6306, 1627 -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1628 -1281, -1281, -1281, -1281, 2195, -1281, 846, 996, 998, 1002, 1629 864, 1005, 1008, 1026, 2454, -1281, -1281, 1031, 31, 1033, 1630 -1281, -1281, 1061, -1281, -1281, -1281, 9431, -1281, -1281, -1281, 1631 -1281, -1281, 2638, -1281, 8972, 8972, -1281, 565, 2195, 7112, 1632 1338, 8426, -1281, -1281, -1281, -1281, 9431, 79, -1281, -1281, 1633 981, 144, -1281, -1281, 9431, -1281, 6877, -1281, -1281, 565, 1634 565, 376, 9716, 1035, 1868, 2111, -1281, 334, 338, 815, 1635 -1281, 9002, 1059, 1047, 815, 565, -1281, -1281, -1281, -1281, 1636 9940, -1281, 583, 6755, -1281, 144, 1065, -1281, 2195, 10825, 1637 10471, -1281, -1281, -1281, -1281, 889, 2638, -1281, 8497, 696, 1638 7558, -1281, -1281, -1281, 1286, 636, 874, 815, 7703, 868, 1639 9574, -1281, 7703, -1281, -1281, -1281, -1281, 638, -1281, 1073, 1640 831, 207, 8633, -1281, 9716, -1281, -1281, 8633, -1281, 8859, 1641 8633, -1281, -1281, -1281, 1071, -1281, 681, 1077, 668, 1078, 1642 -1281, 4381, 6724, -1281, -1281, -1281, 328, -1281, -1281, 10490, 1643 -1281, 385, 10490, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1644 -1281, -1281, -1281, 6464, 6464, -1281, 6306, 6306, 6306, 6306, 1645 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 6306, 1646 6306, 6306, 6306, 6306, 4789, 6464, -1281, 650, 1062, -1281, 1647 -1281, 155, 155, -1281, -1281, 8972, -1281, -1281, 1061, 544, 1648 -1281, 1061, 10548, -1281, -1281, -1281, 5232, 6724, 1079, 9198, 1649 1080, -1281, 9754, -1281, -1281, 602, -1281, 1082, 1185, 1084, 1650 1899, 185, 874, -1281, 155, 155, 874, 233, -1281, 155, 1651 155, 1061, -1281, -1281, 155, 155, -1281, 901, 9792, 1338, 1652 10968, 234, 509, 9792, -1281, 5821, -1281, 874, -1281, 9645, 1653 -1281, 293, 5525, 5525, 5525, 1338, -1281, 5054, 1072, 558, 1654 990, 1016, 1083, 1086, -1281, 1074, 4456, 592, -1281, 1172, 1655 1338, 5525, 544, 2195, 544, 696, 809, 901, -1281, -1281, 1656 814, 901, -1281, -1281, -1281, 831, -1281, 901, 144, 9940, 1657 -1281, 682, 1095, 691, 1099, -1281, 1098, 144, -1281, -1281, 1658 9431, 144, 1103, 362, 407, 9825, 7200, 1999, 6306, 1917, 1659 -1281, -1281, 1101, 94, 1101, -1281, -1281, -1281, 155, 155, 1660 -1281, -1281, 815, -1281, 155, -1281, -1281, 3122, 815, 1107, 1661 6306, -1281, 1059, 10968, -1281, -1281, 1102, -1281, -1281, -1281, 1662 544, -1281, 10897, 6306, -1281, 5525, 675, 8355, -1281, -1281, 1663 602, 1108, 1109, 1286, 3745, -1281, -1281, 7703, -1281, -1281, 1664 1111, -1281, -1281, 1116, -1281, 1111, 1128, 10744, 6464, 146, 1665 1113, 53, 1136, 1115, 1137, 829, 1131, 1139, -1281, 1142, 1666 1143, 1696, 6843, -1281, 6464, -1281, 668, 1691, -1281, 6022, 1667 6464, 1138, -1281, -1281, 990, 708, -1281, 6464, -1281, -1281, 1668 727, -1281, -1281, -1281, -1281, -1281, 599, 599, 388, 388, 1669 472, 472, 472, 472, 354, 354, 593, 830, 867, 873, 1670 970, 6306, 755, -1281, 9940, 1148, 1149, 1152, 1062, -1281, 1671 -1281, -1281, -1281, -1281, 9940, 713, 6306, 5525, -1281, 9645, 1672 -1281, 7319, 9311, 9236, 7081, -1281, -1281, -1281, 1185, 9940, 1673 951, 1160, 1163, 1165, 1166, 1175, 1176, 1182, -1281, 3532, 1674 1899, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1675 -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1061, -1281, 1676 -1281, -1281, 874, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1677 -1281, 1183, -1281, 1187, 1189, -1281, -1281, 31, 1138, 5054, 1678 -1281, -1281, -1281, 5315, 1180, -1281, -1281, -1281, -1281, -1281, 1679 815, 6243, 1272, -1281, -1281, -1281, -1281, 1188, 31, -1281, 1680 -1281, 1061, -1281, -1281, 1061, 70, 1061, -1281, -1281, -1281, 1681 -1281, -1281, -1281, 9498, -1281, 144, -1281, 9002, -1281, -1281, 1682 1201, 818, 1208, 1212, 1213, -1281, -1281, 1917, -1281, -1281, 1683 -1281, -1281, -1281, -1281, -1281, 1868, -1281, 1047, -1281, -1281, 1684 1210, 1216, 1211, -1281, -1281, 1218, 1223, -1281, 675, 1777, 1685 -1281, 562, -1281, 3745, 874, -1281, 1226, 7703, 9863, 8972, 1686 1230, -1281, -1281, 1225, 1235, 1238, -1281, 6306, 252, 40, 1687 1231, -1281, 1242, 544, 1242, 6724, 6464, -1281, -1281, 1242, 1688 -1281, 1691, 5315, -1281, -1281, -1281, -1281, 1236, 6464, 1245, 1689 544, 5054, -1281, 10490, -1281, 544, -1281, -1281, 6464, -1281, 1690 850, 901, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 990, 1691 8746, -1281, -1281, 7438, 1249, -1281, 856, 901, -1281, 872, 1692 904, 901, -1281, 565, 4646, -1281, -1281, -1281, 9940, 9940, 1693 -1281, 8426, 8426, -1281, 1252, 1255, 1264, 1271, -1281, 1253, 1694 594, 247, 1138, -1281, 544, -1281, 4456, -1281, 6464, 459, 1695 -1281, 6603, 1274, 1279, 10343, 1281, 1283, 301, 308, 344, 1696 6464, 1285, 144, 6464, 6464, 1284, 498, 1282, 1268, -1281, 1697 -1281, -1281, 1289, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1698 -1281, -1281, 815, 1296, 6464, -1281, 9940, 9940, 155, 1301, 1699 -1281, 9349, 4935, 934, 901, -1281, -1281, -1281, -1281, -1281, 1700 -1281, -1281, -1281, -1281, 1305, 1777, -1281, -1281, 1290, -1281, 1701 1111, -1281, -1281, 2195, 1309, -1281, -1281, -1281, 734, 1312, 1702 -1281, 53, 1317, 6306, 1303, 53, 53, 1327, 1323, -1281, 1703 1074, 6464, 1328, 1236, 1036, 113, 1326, -1281, 1323, -1281, 1704 1331, 1326, -1281, -1281, 1337, -1281, -1281, 1061, 1340, 1343, 1705 6962, 1342, 1344, 1350, -1281, -1281, 1353, -1281, -1281, 1061, 1706 -1281, -1281, -1281, -1281, 1061, 6464, 6464, 6306, 1355, -1281, 1707 -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1708 -1281, 6306, 6306, 1356, 1357, 1326, -1281, -1281, 815, -1281, 1709 -1281, -1281, 7939, 9863, 6464, 6464, 1423, 6464, -1281, -1281, 1710 1341, -1281, 1345, 6464, 1347, 1358, 6464, 1097, 1360, 74, 1711 8776, 1197, 155, -1281, -1281, 6243, 1361, 467, -1281, -1281, 1712 -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1061, 10467, -1281, 1713 8497, 1362, -1281, -1281, 9863, 482, 494, -1281, 1372, 1383, 1714 831, 1394, -1281, 66, -1281, -1281, 6464, 1395, 1393, -1281, 1715 -1281, 1399, 430, 657, 544, 1400, 1401, -1281, 1406, -1281, 1716 9940, -1281, -1281, -1281, -1281, -1281, 1412, -1281, 9940, 9940, 1717 9940, -1281, -1281, 1413, -1281, 1415, 1425, 1427, 623, 8125, 1718 8240, -1281, -1281, 278, -1281, 1426, 1429, -1281, 8568, 745, 1719 759, 1430, 769, 6445, -1281, -1281, 502, -1281, -1281, 770, 1720 1434, 1436, 144, 1487, 911, -1281, -1281, 6464, -1281, 10490, 1721 10343, -1281, -1281, -1281, 1442, 1444, 9940, -1281, -1281, -1281, 1722 1437, -1281, -1281, -1281, -1281, -1281, -1281, 9863, 831, 269, 1723 -1281, 1424, 831, 1236, 373, -1281, -1281, -1281, -1281, -1281, 1724 -1281, -1281, -1281, 1443, -1281, -1281, -1281, -1281, -1281, -1281, 1725 1452, 1454, -1281, -1281, -1281, -1281, -1281, -1281, -1281, 1458, 1726 -1281, 1457, -1281, -1281, 10343, 148, 6464, 10343, -1281, 1462, 1727 6464, -1281, 171, 1484, 1486, -1281, -1281, 1465, 1476, 1455, 1728 905, -1281, -1281, -1281, -1281, -1281, 1338, 2195, 1471, 862, 1729 918, 6306, -1281, 772, 1477, 6464, 544, 544, 1480, 1482, 1730 1483, 1485, -1281, -1281, 8426, 1472, -1281, 1555, 6306, 1493, 1731 -1281, -1281, 10254, -1281, 790, -1281, 1467, 10343, 1468, -1281, 1732 -1281, 1511, -1281, 1513, -1281, 1507, 1529, -1281, 1496, 1519, 1733 9863, -1281, -1281, -1281, 831, 544, 1520, 1499, 1515, -1281, 1734 1326, 1326, -1281, -1281, -1281, -1281, -1281, 10343, 258, -1281, 1735 922, -1281, -1281, 7790, -1281, -1281, 1501, 6464, -1281, 6464, 1736 7790, 144, 9716, 144, 9716, 1528, -1281, 1530, -1281, -1281, 1737 -1281, 1524, 862, -1281, 794, -1281, -1281, 6464, 1540, 1542, 1738 -1281, 6306, 6306, -1281, -1281, 1051, 133, -1281, -1281, 1510, 1739 -1281, 1051, -1281, -1281, 2099, 544, -1281, -1281, 144, 9716, 1740 144, 9716, 1546, 1525, 544, -1281, -1281, -1281, -1281, -1281, 1741 10254, 1541, 1051, 7866, 6464, 10165, 1543, 1051, 1551, 2099, 1742 2338, -1281, -1281, -1281, 1552, -1281, -1281, -1281, -1281, 8972, 1743 -1281, -1281, -1281, 10072, -1281, 10254, -1281, -1281, 1531, 9979, 1744 -1281, -1281, 10165, 144, 2338, 144, 1557, 1559, 795, -1281, 1745 10072, -1281, -1281, -1281, 9979, -1281, -1281, -1281, 144, 144, 1746 -1281, -1281, -1281, -1281, -1281, -1281, -1281, -1281 1594 3506, 8076, -1332, 12, -1332, -1332, -1332, -1332, -1332, -1332, 1595 -1332, 61, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1596 -1332, -1332, -1332, -1332, -1332, -1332, 102, 102, 102, 1011, 1597 1062, 86, 5961, 228, -1332, -1332, -1332, -1332, -1332, 138, 1598 -1332, -1332, -1332, 684, 144, 9470, -1332, -1332, -1332, -1332, 1599 -1332, -1332, 190, 182, -1332, 1658, -1332, -1332, -1332, -1332, 1600 201, 1834, 303, 32, 4928, -1332, -1332, 9508, 1650, -1332, 1601 -1332, -1332, 615, 401, 4443, 184, 589, 615, 1225, -1332, 1602 -1332, 848, 938, -1332, 615, 1259, -1332, 301, -1332, 486, 1603 503, -1332, -1332, -1332, -1332, 316, 182, 102, -1332, 102, 1604 -1332, -1332, -1332, -1332, 9240, 1658, -1332, -1332, 1658, -1332, 1605 9354, 391, -1332, -1332, -1332, 1948, 9876, -1332, 810, 810, 1606 810, -1332, -1332, -1332, 102, -1332, -1332, -1332, 426, 447, 1607 456, -1332, -1332, -1332, 477, -1332, -1332, -1332, -1332, -1332, 1608 485, 495, -1332, -1332, 36, 8974, 2459, 272, 545, 579, 1609 623, 632, 671, 733, 8777, 7372, 596, 719, -1332, 9546, 1610 -1332, -1332, -1332, -1332, 739, -1332, 209, 3245, 3245, -1332, 1611 760, 213, -1332, -1332, -1332, -1332, 770, 237, 353, 362, 1612 102, 755, -1332, -1332, 1834, 1803, 846, -1332, 70, -1332, 1613 102, 102, 182, -1332, -1332, 98, -1332, 102, 102, -1332, 1614 2479, 820, 843, 810, 5405, -1332, -1332, 844, 9470, -1332, 1615 -1332, 615, -1332, -1332, -1332, 182, -1332, 1658, 190, -1332, 1616 7926, -1332, 810, 810, 810, 182, -1332, 1011, -1332, 2880, 1617 -1332, -1332, 827, 810, -1332, 810, -1332, 138, 8974, 8891, 1618 857, -1332, 1062, 864, 810, -1332, 1011, 870, 879, -1332, 1619 5961, 735, -1332, -1332, -1332, 9437, -1332, -1332, 3894, -1332, 1620 846, 69, 9876, 6310, 1948, 2479, -1332, 114, -1332, -1332, 1621 9354, 1658, 875, 11374, -1332, -1332, 546, -1332, 11116, 886, 1622 926, 10861, 905, 10919, 10938, -1332, 919, -1332, -1332, -1332, 1623 -1332, 10996, 10996, 735, 8632, 928, 10919, 9088, -1332, -1332, 1624 -1332, -1332, -1332, -1332, 949, -1332, 840, 2531, 10919, -1332, 1625 516, 336, 425, 270, 704, 934, 936, 960, 997, 52, 1626 -1332, -1332, 974, 356, -1332, 290, -1332, -1332, 2459, -1332, 1627 -1332, 600, 996, -1332, 701, 996, 1007, 138, -1332, -1332, 1628 1010, 9240, -1332, 1018, 8746, -1332, -1332, 1849, 1084, 8347, 1629 5405, 615, -1332, 615, 810, 810, -1332, -1332, -1332, -1332, 1630 -1332, -1332, 810, 9914, 1658, -1332, -1332, 9987, 1975, -1332, 1631 9012, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1030, 3059, 1632 10919, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1633 -1332, -1332, -1332, -1332, -1332, 1948, -1332, 773, 1012, 1034, 1634 1040, 889, 1045, 1051, 1053, 1803, -1332, -1332, 1063, 190, 1635 1064, -1332, -1332, 1066, -1332, -1332, -1332, 9437, -1332, -1332, 1636 -1332, -1332, -1332, 2479, -1332, 8974, 8974, -1332, 810, 1948, 1637 6923, 1658, 8420, -1332, -1332, -1332, -1332, 9437, 69, -1332, 1638 -1332, 615, 182, -1332, -1332, 9437, -1332, 3625, -1332, -1332, 1639 810, 810, 464, 10025, 1068, 907, 9695, -1332, 437, 475, 1640 1062, -1332, 1067, 1069, 1047, 1070, 810, -1332, -1332, -1332, 1641 -1332, 10283, -1332, 522, 6793, -1332, 182, 1074, -1332, 1948, 1642 11198, 6368, -1332, -1332, -1332, -1332, 939, 2479, -1332, 8493, 1643 846, 5374, -1332, -1332, -1332, 828, 610, 974, 1062, 11374, 1644 861, 9354, -1332, 11374, -1332, -1332, -1332, -1332, 618, -1332, 1645 1073, 926, 326, 8632, -1332, 10025, -1332, -1332, 8632, -1332, 1646 8860, 8632, -1332, -1332, -1332, 1077, -1332, 619, 1082, 630, 1647 1087, -1332, 5066, 7012, -1332, -1332, -1332, 47, -1332, -1332, 1648 10784, -1332, 474, 10784, -1332, -1332, -1332, -1332, -1332, -1332, 1649 -1332, -1332, -1332, -1332, 6310, 6310, -1332, 10919, 10919, 10919, 1650 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 1651 10919, 10919, 10919, 10919, 10919, 4001, 6310, -1332, 356, 777, 1652 -1332, -1332, 102, 102, -1332, -1332, 8974, -1332, -1332, 1066, 1653 735, -1332, 1066, 10842, -1332, -1332, -1332, 6075, 7012, 1086, 1654 9202, 1093, -1332, 10055, -1332, -1332, 739, -1332, 1094, 690, 1655 1096, 1090, 157, 974, -1332, 102, 102, 974, 166, -1332, 1656 102, 102, 1066, -1332, -1332, 102, 102, -1332, 996, 10137, 1657 1658, 11343, 372, 531, 10137, -1332, 6678, -1332, 974, -1332, 1658 9914, -1332, 285, 8042, 8042, 8042, 1658, -1332, 5183, 1085, 1659 453, 1030, 955, 1095, 1097, -1332, 1099, 3245, 590, -1332, 1660 1182, 1658, 8042, 735, 1948, 735, 846, 706, 996, -1332, 1661 -1332, 806, 996, -1332, -1332, -1332, 926, -1332, 996, 182, 1662 10283, -1332, 647, 1107, 688, 1108, -1332, 1109, 182, -1332, 1663 -1332, 9437, 182, 1105, 497, 502, 10167, 7492, 1400, 10919, 1664 1678, -1332, -1332, 1103, 62, 1103, -1332, -1332, -1332, 102, 1665 102, -1332, -1332, 1062, -1332, 102, -1332, -1332, 8891, 1062, 1666 1110, 10919, -1332, 1062, 11343, -1332, -1332, 1113, -1332, -1332, 1667 -1332, 735, -1332, 11271, 10919, -1332, 8042, 718, 8347, -1332, 1668 -1332, 739, 1114, 1115, 828, 2655, -1332, -1332, 11374, -1332, 1669 -1332, 1116, -1332, -1332, 1122, -1332, 1116, 1123, 11116, 6310, 1670 163, 1092, 54, 1131, 1128, 1135, 928, 1130, 1138, -1332, 1671 1140, 1141, 9733, 7132, -1332, 6310, -1332, 630, 1274, -1332, 1672 5523, 6310, 1139, -1332, -1332, 1030, 695, -1332, 6310, -1332, 1673 -1332, 741, -1332, -1332, -1332, -1332, -1332, 516, 516, 336, 1674 336, 425, 425, 425, 425, 270, 270, 704, 934, 936, 1675 960, 997, 10919, 754, -1332, 10283, 1150, 1151, 1153, 777, 1676 -1332, -1332, -1332, -1332, -1332, 10283, 748, 10919, 8042, -1332, 1677 9914, -1332, 7612, 9316, 9126, 7372, -1332, -1332, -1332, 690, 1678 10283, 950, 1164, 1165, 1171, 1172, 1179, 1180, 1181, -1332, 1679 3591, 1090, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1680 -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1066, 1681 -1332, -1332, -1332, 974, -1332, -1332, -1332, -1332, -1332, -1332, 1682 -1332, -1332, 1183, -1332, 1184, 1187, -1332, -1332, 190, 1139, 1683 5183, -1332, -1332, -1332, 3059, 1185, -1332, -1332, -1332, -1332, 1684 -1332, 1062, 6532, 1270, -1332, -1332, -1332, -1332, 1173, 190, 1685 -1332, -1332, 1066, -1332, -1332, 1066, 152, 1066, -1332, -1332, 1686 -1332, -1332, -1332, -1332, 9584, -1332, 182, -1332, 8891, -1332, 1687 -1332, 1193, 795, 1199, 1200, 1204, -1332, -1332, 1678, -1332, 1688 -1332, -1332, -1332, -1332, -1332, -1332, 907, 9763, 1047, -1332, 1689 -1332, 1069, 1205, 1201, -1332, -1332, 1206, 1207, -1332, 718, 1690 1989, -1332, 634, -1332, 2655, 974, -1332, 1211, 11374, 10205, 1691 8974, 1214, -1332, -1332, 1212, 1217, 1213, -1332, 10919, 229, 1692 205, 1215, -1332, 1202, 735, 1202, 7012, 6310, -1332, -1332, 1693 1202, -1332, 1274, 3059, -1332, -1332, -1332, -1332, 1220, 6310, 1694 1228, 735, 5183, -1332, 10784, -1332, 735, -1332, -1332, 6310, 1695 -1332, 863, 996, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1696 1030, 8746, -1332, -1332, 7732, 1219, -1332, 876, 996, -1332, 1697 883, 896, 996, -1332, 810, 4775, -1332, -1332, -1332, 10283, 1698 10283, -1332, 8420, 8420, -1332, 1221, 1226, 1233, 1235, -1332, 1699 1234, 643, 137, 1139, -1332, 735, -1332, 3245, -1332, 6310, 1700 517, -1332, 6892, 1245, 1249, 10726, 1253, 1258, 330, 380, 1701 387, 6310, 1265, 182, 6310, 6310, 1256, 294, 1269, 1250, 1702 -1332, -1332, -1332, 1277, -1332, -1332, -1332, -1332, -1332, -1332, 1703 -1332, -1332, -1332, 1062, 1285, 6310, -1332, 10283, 10283, 102, 1704 1287, -1332, 9845, 9622, 932, 996, -1332, -1332, -1332, -1332, 1705 -1332, 1286, -1332, -1332, -1332, -1332, 1293, 1989, -1332, -1332, 1706 1275, -1332, 1116, -1332, -1332, 1948, 1290, -1332, -1332, -1332, 1707 749, 1292, -1332, 54, 1295, 10919, 1279, 54, 54, 1305, 1708 1301, -1332, 1099, 6310, 1308, 1220, 605, 89, 1306, -1332, 1709 1301, -1332, 1312, 1306, -1332, -1332, 1317, -1332, -1332, 1066, 1710 1319, 1322, 7252, 1323, 1325, 1326, -1332, -1332, 1329, -1332, 1711 -1332, 1066, -1332, -1332, -1332, -1332, 1066, 6310, 6310, 10919, 1712 1330, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1713 -1332, -1332, -1332, 10919, 10919, 1332, 1335, 1306, -1332, -1332, 1714 1062, -1332, -1332, -1332, 7853, 10205, 6310, 6310, 1394, 6310, 1715 -1332, -1332, 1321, -1332, 1324, 6310, 1327, 1331, 6310, 1013, 1716 1333, 97, 8265, 1262, 102, -1332, -1332, 6532, 1334, 537, 1717 -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1066, 1718 -1332, 10544, -1332, 8493, 1345, -1332, -1332, 10205, 562, 563, 1719 -1332, 1343, 1344, 926, 1352, -1332, 450, -1332, -1332, 6310, 1720 1355, 1349, -1332, -1332, 1356, 543, 613, 735, 1357, 1358, 1721 -1332, 1361, -1332, 10283, -1332, -1332, -1332, -1332, -1332, 1365, 1722 -1332, 10283, 10283, 10283, -1332, -1332, 1367, -1332, 1368, 1371, 1723 1372, 668, 8115, 8231, -1332, -1332, 457, -1332, 1376, 1378, 1724 -1332, 8566, 750, 782, 1387, 793, 6762, -1332, -1332, 598, 1725 -1332, -1332, 803, 1388, 1393, 182, 1445, 882, -1332, -1332, 1726 6310, -1332, 10784, 10726, -1332, -1332, -1332, 1396, 1404, 10283, 1727 -1332, -1332, -1332, 1401, -1332, -1332, -1332, -1332, -1332, -1332, 1728 10205, 926, 254, -1332, 1384, 926, 1220, 366, -1332, -1332, 1729 -1332, -1332, -1332, -1332, -1332, -1332, 1405, -1332, -1332, -1332, 1730 -1332, -1332, -1332, 1406, 1409, -1332, -1332, -1332, -1332, -1332, 1731 -1332, -1332, 1414, -1332, 1413, -1332, -1332, 10726, 84, 6310, 1732 10726, -1332, 1417, 6310, -1332, 99, 1433, 1434, -1332, -1332, 1733 1422, 1425, 1408, 852, -1332, -1332, -1332, -1332, -1332, 1658, 1734 1948, 1421, 949, 918, 10919, -1332, 832, 1426, 6310, 735, 1735 735, 1427, 1431, 1440, 1441, -1332, -1332, 8420, 1428, -1332, 1736 1501, 10919, 1437, -1332, -1332, 10637, -1332, 845, -1332, 1424, 1737 10726, 1436, -1332, -1332, 1460, -1332, 1461, -1332, 1476, 1481, 1738 -1332, 1446, 1471, 10205, -1332, -1332, -1332, 926, 735, 1472, 1739 1452, 1468, -1332, 1306, 1306, -1332, -1332, -1332, -1332, -1332, 1740 10726, 295, -1332, 940, -1332, -1332, 5671, -1332, -1332, 1454, 1741 6310, -1332, 6310, 5671, 182, 10025, 182, 10025, 1478, -1332, 1742 1482, -1332, -1332, -1332, 1480, 949, -1332, 850, -1332, -1332, 1743 6310, 1479, 1487, -1332, 10919, 10919, -1332, -1332, 1054, 123, 1744 -1332, -1332, 1465, -1332, 1054, -1332, -1332, 1818, 735, -1332, 1745 -1332, 182, 10025, 182, 10025, 1492, 1474, 735, -1332, -1332, 1746 -1332, -1332, -1332, 10637, 1488, 1054, 6242, 6310, 10548, 1495, 1747 1054, 1502, 1818, 2347, -1332, -1332, -1332, 1505, -1332, -1332, 1748 -1332, -1332, 8974, -1332, -1332, -1332, 10415, -1332, 10637, -1332, 1749 -1332, 1484, 10322, -1332, -1332, 10548, 182, 2347, 182, 1509, 1750 1510, 853, -1332, 10415, -1332, -1332, -1332, 10322, -1332, -1332, 1751 -1332, 182, 182, -1332, -1332, -1332, -1332, -1332, -1332, -1332, 1752 -1332 1747 1753 }; 1748 1754 … … 1750 1756 static const yytype_int16 yypgoto[] = 1751 1757 { 1752 -1 281, 4254, 1590, -1281, 1409, -1281, 52, 0, -229, -1281,1753 5 96, -527, -497, -931, -99, 4508, -1281, 358, 609, 563,1754 5 18, 591, 1104, 1105, 1110, 1117, 1112, -1281, 613, -339,1755 53 46, -893, -690, -919, -1281, 401, -634, 444, -1281, 753,1756 -1 281, 449, -1224, -1281, -1281, 191, -1281, -1265, -724, 305,1757 -1 281, -1281, -1281, -1281, 129, -1170, -1281, -1281, -1281, -1281,1758 -1 281, -1281, 382, -1175, 71, -1281, -381, -1281, 560, 356,1759 -1 281, 229, -1281, -338, -1281, -1281, -1281, 632, -691, -1281,1760 -1 281, 11, -1000, 10, 2865, -1281, -1281, -1281, -125, -1281,1761 275, 363, -194, 1416, 4157, -1281, -1281, 24, 25, 374,1762 -2 02, 1621, -1281, 2138, -1281, -1281, 112, 2165, -1281, 2832,1763 139, -1281, -1281, -416, -434, 1276, 1278, 786, 1028, 400,1764 -1281, -1281, 1269, 793, -513, -1281, -522, -57, -636, -1281,1765 -1281, -959, -994, 122, 819, 1153, 135, -1281, 1441, 296,1766 -299, -212, -109, 749, 844, -1281, 1087, -1281, 2859, 1478,1767 -462, 1000, -1281, -1281, 778, -1281, -233, -1281, -72, -1281,1768 -1281, -1281, -1232, 504, -1281, -1281, -1281, 1259, -1281, 68,1769 -1 281, -1281, -850, -96, -1280, -93, 1665, -1281, 2401, -1281,1770 993, -1281, -164, 689, -177, -176, -170, 2, -39, -33,1771 - 28, 1052, 48, 75, 93, -100, -167, -166, -153, -148,1772 - 277, -569, -500, -490, -543, -300, -514, -1281, -1281, -506,1773 1174, 1177, 1181, 2149, 5126, -572, -549, -544, -523, -484,1774 -1281, -427, -665, -663, -660, -602, -320, -271, -1281, -1281,1775 102, 140, -84, -1281, 3728, 128, -603, -4471758 -1332, 4383, 1919, -1332, 1457, -1332, 41, 0, -257, -1332, 1759 544, -527, -514, -956, -190, 3713, -1332, 1485, 580, 585, 1760 548, 602, 1055, 1052, 1056, 1059, 1061, -1332, -217, -341, 1761 5350, -699, -697, -922, -1332, -83, -701, -678, -1332, 561, 1762 -1332, 399, -1087, -1332, -1332, 141, -1332, -1329, -838, 252, 1763 -1332, -1332, -1332, -1332, 71, -1078, -1332, -1332, -1332, -1332, 1764 -1332, -1332, 325, -1308, 57, -1332, -297, -1332, 504, 305, 1765 -1332, 173, -1332, -305, -1332, -1332, -1332, 558, -799, -1332, 1766 -1332, 11, -1027, 151, 658, -1332, -1332, -1332, -52, -1332, 1767 117, 913, -200, 1494, 4071, -1332, -1332, 19, 107, 365, 1768 -232, 1565, -1332, 2150, -1332, -1332, 134, 2571, -1332, 3063, 1769 1550, -1332, -1332, -1332, -643, -431, 1210, 1216, 707, 947, 1770 188, -1332, -1332, -1332, 945, 723, -404, -1332, -520, -362, 1771 293, -1332, -1332, -990, -995, 965, 1194, 1083, 304, -1332, 1772 150, 317, -75, -197, -129, 679, 781, -1332, 1020, -1332, 1773 3338, 1566, -427, 948, -1332, -1332, 710, -1332, -230, -1332, 1774 -89, -1332, -1332, -1332, -1266, 433, -1332, -1332, -1332, 1195, 1775 -1332, 22, -1332, -1332, -865, -105, -1331, -98, 1750, -1332, 1776 2253, -1332, 929, -1332, -168, 288, -180, -179, -173, 2, 1777 -34, -29, -28, 687, 75, 77, 92, -161, -162, -153, 1778 -151, -148, -320, -530, -516, -495, -552, -307, -529, -1332, 1779 -1332, -506, 1106, 1117, 1121, 2218, 5180, -562, -569, -544, 1780 -538, -550, -1332, -429, -691, -685, -671, -611, -246, -241, 1781 -1332, -1332, 1149, 273, -84, -1332, 3714, 76, -612, -441 1776 1782 }; 1777 1783 … … 1779 1785 positive, shift that token. If negative, reduce the rule which 1780 1786 number is the opposite. If YYTABLE_NINF, syntax error. */ 1781 #define YYTABLE_NINF -52 21787 #define YYTABLE_NINF -525 1782 1788 static const yytype_int16 yytable[] = 1783 1789 { 1784 46, 111, 95, 147, 451, 438, 397, 398, 426, 148, 1785 53, 113, 112, 399, 149, 790, 400, 401, 265, 258, 1786 405, 711, 767, 604, 66, 67, 870, 706, 111, 111, 1787 402, 46, 932, 95, 933, 403, 750, 934, 853, 841, 1788 755, 53, 46, 918, 46, 717, 159, 617, 1185, 748, 1789 511, 1091, 894, 110, 46, 66, 67, 381, 382, 845, 1790 46, 1201, 191, 46, 846, 214, 46, 852, 224, 341, 1791 612, 47, 819, 208, 1151, 504, 218, 217, 678, 1143, 1792 111, 111, 1183, 1184, 406, 847, 397, 398, 210, 994, 1793 150, 636, 408, 399, 844, 640, 400, 401, 687, 141, 1794 405, 778, 47, 423, 46, 1398, 691, 46, 842, 200, 1795 402, 932, 74, 933, 46, 403, 934, 151, 843, 950, 1796 883, 883, 883, 1195, 974, 682, 684, 856, 30, 477, 1797 885, 886, 30, 863, 289, 152, 1317, 166, 1461, 883, 1798 104, 104, 407, 74, 147, 46, 161, 159, 904, 1134, 1799 148, 535, 121, 46, 445, 149, 1135, 1465, 46, 201, 1800 371, 167, 30, 977, 406, 857, 481, 483, 739, 860, 1801 278, 104, 164, 466, 841, 1341, -234, -234, 1009, 1098, 1802 1218, 1219, 1342, 46, 46, 120, 159, 482, 1014, 175, 1803 877, 1418, 1419, 30, 880, 30, 676, 1262, 250, 46, 1804 409, 754, 212, 1025, 409, 1318, 104, 46, 1481, 159, 1805 1090, 161, 1461, 883, 1418, 1419, 46, 745, 140, 46, 1806 769, 441, 957, 30, 147, 1263, 111, 535, 279, 439, 1807 148, 150, 417, 142, 409, 149, 375, 164, 144, 259, 1808 673, 111, 260, 842, 440, 111, 1185, -234, 1259, 46, 1809 111, 95, 376, 843, 212, 1465, 595, 169, 151, 53, 1810 1465, 1420, 975, 46, 46, 487, 159, 409, 179, 841, 1811 46, 30, 326, 66, 67, 60, 152, 46, 1037, 604, 1812 1465, 759, 199, 711, 1429, 341, 823, 1465, 535, 845, 1813 702, 477, 111, 854, 846, 609, 1185, 212, 665, 1507, 1814 153, 1549, 471, 1201, 674, 883, 60, 1036, 604, 433, 1815 617, 477, 1013, 604, 1016, 847, 760, 469, 1153, 477, 1816 47, 1560, 673, 761, 1024, 830, 680, 46, 1564, 371, 1817 1183, 1184, 685, 535, 1536, 434, 1538, 1343, 842, 573, 1818 459, 861, 1191, 609, 523, 873, 46, 46, 843, 874, 1819 535, 437, 925, 1491, 704, 1550, 856, 245, 212, 936, 1820 1133, 74, -290, 46, 114, 326, 74, 46, 879, 1192, 1821 1200, 433, 108, 210, 574, 1091, 739, 1401, 652, 108, 1822 1192, 949, 1565, 40, 41, 250, 674, 853, -10, 104, 1823 40, 41, -112, -112, 46, 530, 212, 434, 161, 108, 1824 212, 482, 1180, 1181, 46, 489, 371, 157, -112, 845, 1825 40, 41, 506, 385, 846, 108, 248, 388, 870, -517, 1826 1185, 390, 46, 575, 164, 1040, 40, 41, 46, 386, 1827 46, 738, 1209, 389, 584, 847, 1215, 391, 782, 1211, 1828 585, 227, 392, 563, 564, 228, 915, 341, 232, 712, 1829 234, 262, 739, 714, 46, 1456, 108, 243, 393, 111, 1830 1230, 1231, 1213, 1201, 111, 713, 256, 40, 41, 715, 1831 1201, 606, 157, 111, -440, 1450, 1451, 712, 46, 565, 1832 566, 175, -112, 250, 328, 692, 46, 212, 371, 1405, 1833 46, 585, 95, 928, 46, 788, 329, 111, 637, 111, 1834 53, 108, 641, -112, 210, 1120, 1149, 322, 559, 560, 1835 1106, 1101, 40, 41, 66, 67, 338, 1117, 706, 652, 1836 397, 398, 714, 1201, 60, 110, -441, 399, 74, 478, 1837 400, 401, 978, 274, 1090, 405, 111, 1258, 929, 652, 1838 1347, 111, 652, 1037, 402, 1171, 1173, 895, 74, 403, 1839 617, 276, 326, 326, 459, 504, 74, 459, 1018, 561, 1840 562, 47, 830, 459, 1106, 477, 428, 906, 212, 284, 1841 432, 766, 908, 1035, 1198, 8, 9, 10, 11, 12, 1842 40, 41, 1198, 277, 227, 884, 884, 884, 783, 111, 1843 1199, 766, 727, 789, 766, 330, 46, 1332, 1323, 406, 1844 322, 454, 74, 30, 884, 331, 520, 954, 46, 1334, 1845 46, 341, 1380, 1333, 530, 108, 530, 774, 212, 530, 1846 875, 832, 530, 332, 876, 1335, 40, 41, 326, 46, 1847 104, 33, 432, 1381, 1355, 494, 333, -466, 1132, 738, 1848 516, 471, 1357, 1358, 1359, 46, 108, 326, 137, 138, 1849 334, 111, 830, 533, 534, 440, 528, 40, 41, 157, 1850 46, 369, 111, 46, 111, 555, 383, 711, -466, 1378, 1851 -466, 896, -291, 875, -466, 1048, 370, 1116, 884, 8, 1852 9, 10, 11, 12, 567, 568, 1035, 341, 241, 94, 1853 1394, 478, 729, 586, 526, 409, 1095, 46, 730, 46, 1854 604, 534, 897, 594, 651, -105, 601, 30, 898, -105, 1855 374, 478, 111, 326, 905, 738, 907, 556, 111, 478, 1856 94, 395, 557, 558, 227, 634, 232, 606, 108, 638, 1857 111, 146, 338, 94, 1366, 33, 1128, 534, 1367, 40, 1858 41, 212, 387, 46, 46, 746, 1428, 756, 210, 187, 1859 1249, 747, 94, 757, 1253, 94, 871, 46, 577, 407, 1860 409, 606, 210, 736, 872, 60, 424, 1349, 578, 212, 1861 884, 1520, 1497, 673, 212, 425, 776, 1525, 409, 1497, 1862 887, 702, 953, 958, 1055, 609, 777, 322, 322, 430, 1863 773, 919, 1390, 959, 1251, 903, 774, 774, 1545, 461, 1864 921, 727, 74, 1552, 448, 171, 774, 464, 762, 108, 1865 763, 137, 236, 764, 227, 454, 770, 1002, 454, 459, 1866 40, 41, 1015, 1003, 454, 681, 683, 499, 730, 500, 1867 490, 830, 1546, 1499, 94, 1500, 114, 674, 46, 1175, 1868 739, 1006, 1003, 1247, 74, 704, 237, 94, 251, 585, 1869 46, 238, 1291, 1292, 1374, 589, 210, 409, 832, 467, 1870 774, 494, 212, 322, 932, 494, 933, 468, 1375, 934, 1871 774, 1008, 396, 187, 774, 528, 212, 528, 1377, 1382, 1872 528, 1447, 322, 528, 774, 774, 108, 1444, 137, 138, 1873 1547, 510, 506, 652, 338, 514, 94, 40, 41, 1466, 1874 111, 652, 978, 1513, 1570, 774, 978, 978, 94, 1514, 1875 585, 53, 289, 526, 793, 794, 795, 909, 526, 409, 1876 739, 526, 912, 46, 409, 66, 67, 328, 409, 2, 1877 204, 4, 5, 6, 7, 519, 727, 46, 94, 108, 1878 531, 137, 138, 535, 415, 46, 727, 1196, 322, 569, 1879 40, 41, 485, 1077, 250, 328, 409, 534, 1155, 828, 1880 409, 727, 601, 46, 1167, 478, 409, 435, 1387, 1388, 1881 212, 736, 417, 669, 409, 812, 751, 443, 1122, 1121, 1882 1170, 752, 609, 111, 1182, 2, 204, 4, 5, 6, 1883 7, 869, 652, 34, 570, 35, 601, 487, 328, 409, 1884 111, 571, 878, 652, 575, 111, 36, 478, 181, 182, 1885 39, 337, 1172, 74, 609, -292, 94, 40, 41, 1438, 1886 1003, 1339, 8, 9, 10, 11, 12, 1242, 36, 459, 1887 172, 173, 39, 1444, 1445, 1137, 611, 1492, 1493, 40, 1888 41, 104, 1235, 608, 409, 609, 527, 736, 440, 34, 1889 30, 35, 1145, 610, 111, 766, -3, 1145, 338, 854, 1890 328, 609, 1446, 572, 652, 370, -437, 111, 111, 111, 1891 593, 53, 8, 9, 10, 11, 12, 1532, 33, 1458, 1892 454, 800, 801, 802, 803, 1203, 67, 108, 596, 137, 1893 138, 534, 111, 187, 1418, 1419, 160, 326, 40, 41, 1894 30, 646, 940, 738, 940, 666, 1145, 667, 104, 1399, 1895 494, 668, 192, 1399, 670, 215, 1077, 671, 225, 1210, 1896 1212, 1214, -293, 46, 798, 799, 890, 1106, 33, 8, 1897 9, 10, 11, 12, 338, 672, 341, 993, 36, 675, 1898 172, 173, 39, 703, 677, -112, 695, -112, 871, 40, 1899 41, -112, 1518, 1458, 1310, 1311, 1312, 30, 804, 805, 1900 727, 727, 212, 1348, 1350, 1351, -112, -112, 796, 797, 1901 577, 255, 409, 74, 718, 374, 60, 720, -238, 94, 1902 578, 758, 771, 611, 534, 33, 775, 779, -12, 893, 1903 833, 835, 1017, 837, 689, 848, 828, 160, 111, -13, 1904 900, 104, 892, 459, 920, 536, 537, 538, 922, 923, 1905 372, -414, 208, 218, 217, 1482, 927, 698, 727, 727, 1906 46, 948, -521, 962, 969, 652, 747, 210, 731, 539, 1907 983, 540, 1369, 541, 542, 53, 160, 971, 2, 204, 1908 4, 5, 6, 7, 976, 982, 984, 986, 987, 66, 1909 67, 988, 989, 998, 1122, 1121, 36, 1010, 1011, 160, 1910 39, 1012, 111, 111, 111, 527, 226, 40, 41, 1026, 1911 527, 442, 1027, 527, 1028, 1029, 127, 1077, 128, 129, 1912 130, 536, 537, 538, 1030, 1031, 828, 40, 41, 728, 1913 454, 1032, 1043, 838, 1057, 609, -402, 840, -401, 611, 1914 1092, 1442, 34, 610, 35, 539, 1558, 540, 439, 541, 1915 1319, 935, 1102, 53, 1145, 1145, 1145, 1103, 1094, 652, 1916 652, 1104, 1105, 440, 1109, 1110, 1111, 1203, 67, 1112, 1917 494, 1123, 322, 935, 1113, 1119, 478, 74, 36, 1129, 1918 774, 212, 39, 104, 1130, 1079, 1136, 1122, 1121, 40, 1919 41, 1141, 397, 398, 1131, 992, 1144, 36, 1165, 399, 1920 1328, 39, 400, 401, 1190, 104, 405, 1186, 40, 41, 1921 1187, 766, 1077, 1188, 652, 42, 402, 652, 534, 372, 1922 1189, 403, 1204, 869, 104, 145, 931, 1205, 703, 1207, 1923 673, 1208, 727, 1216, 743, 1220, 46, 46, 1222, 1223, 1924 727, 727, 727, -3, 744, 1228, 111, 111, 1531, 36, 1925 1233, 172, 173, 39, 1239, 74, 63, 115, 499, 516, 1926 40, 41, 652, 1243, 1007, 1248, 1077, 652, 1250, 1077, 1927 406, 917, 840, 611, 1252, 736, 1255, 212, 1256, 1260, 1928 924, 1264, 1267, 104, 926, 111, 1269, 63, 727, 1271, 1929 1122, 1121, 1272, 1273, 674, 1274, 372, 652, 1145, 1145, 1930 158, 1275, 1277, 174, 454, 828, 1284, 1293, 1294, 1301, 1931 139, 1330, 1304, 53, 1077, 1322, 1305, 104, 1307, 1077, 1932 53, 36, 219, 181, 182, 39, 1336, 1203, 67, 1308, 1933 147, 1316, 40, 41, 1203, 67, 148, 1483, 728, 1338, 1934 60, 149, 1050, 1340, 46, 111, 1344, 1345, 1206, 1077, 1935 1346, 1352, 1353, 174, 111, 736, 174, 1354, 183, 257, 1936 652, 239, 242, 1356, 1362, 652, 1363, 840, 184, 46, 1937 46, 1441, 159, 53, 1364, 534, 1365, 1372, 1376, 611, 1938 1373, 213, 1383, 652, 1384, 652, 1312, 1203, 67, 652, 1939 1395, 1392, 652, 1393, 46, 1402, 371, 1533, 240, 1405, 1940 652, 327, 174, 1412, 652, 1413, 1541, -403, 1416, 257, 1941 348, 1427, 1077, 1435, 1505, 74, 1505, 1077, 478, 1431, 1942 104, 1433, 74, 338, 1436, 1443, 1437, 1367, 1448, 1452, 1943 935, 1453, 1454, 213, 1455, 1077, 1457, 1077, 1467, 1469, 1944 404, 1077, 1475, 104, 1077, 1299, 1300, 1123, 1302, 1462, 1945 104, 1505, 1077, 1505, 1306, 422, 1077, 1309, 427, 429, 1946 1471, 1152, 1473, 158, 1477, 174, 703, 1479, 1480, 1485, 1947 1486, 1487, 1498, 728, 703, 74, 213, 1508, 1512, 1510, 1948 165, 1524, 170, 728, 446, 176, 177, 178, 449, 180, 1949 450, 1516, 611, 1517, 1539, 1544, 1540, 1551, 728, 465, 1950 1553, 1555, 1561, 104, 231, 63, 1568, 326, 1569, 1079, 1951 479, 1050, 1221, 806, 1321, 807, 246, 247, 1100, 174, 1952 486, 808, 463, 1519, 211, 810, 174, 1430, 429, 809, 1953 122, 125, 126, 1571, 230, 1386, 1254, 213, 1403, 1501, 1954 1123, 8, 9, 10, 11, 12, 8, 9, 10, 11, 1790 47, 112, 96, 427, 398, 399, 768, 933, 452, 148, 1791 266, 400, 113, 934, 149, 150, 791, 406, 871, 67, 1792 259, 439, 401, 512, 407, 712, 707, 935, 613, 112, 1793 112, 402, 47, 403, 96, 1203, 404, 1092, 382, 383, 1794 846, 618, 111, 47, 895, 47, 505, 160, 1187, 854, 1795 1153, 67, 1185, 1186, 142, 47, 749, 48, 975, 853, 1796 201, 47, 857, 192, 47, 847, 215, 47, 864, 225, 1797 342, 848, 751, 820, 1401, 947, 756, 1145, 218, 842, 1798 845, 112, 112, 995, 398, 399, 933, 279, 409, 48, 1799 1464, 400, 934, 843, 121, 424, 1468, 406, 605, 1197, 1800 779, 31, 401, 1091, 407, 47, 935, 68, 47, 31, 1801 202, 402, 679, 403, 844, 47, 404, 61, 151, 109, 1802 152, 165, 637, 884, 884, 884, 641, 739, 1421, 1422, 1803 41, 42, 688, 408, 75, 153, 290, 31, 446, 68, 1804 692, 31, 884, 1421, 1422, 280, 47, 574, 160, 61, 1805 148, 54, 114, 31, 47, 149, 150, 467, 783, 47, 1806 1320, 372, 482, 484, 1464, 978, 75, -234, -234, 1510, 1807 122, 211, 858, 410, 1265, 746, 861, 1484, 483, 251, 1808 140, 410, 575, 54, 47, 47, 165, 160, 2, 205, 1809 4, 5, 6, 7, 1468, 141, 31, 878, 1423, 1468, 1810 47, 881, 1266, 478, 1539, 31, 1541, 418, 47, 410, 1811 160, 527, 677, 1432, 842, 209, 884, 47, 219, 1468, 1812 47, 327, 442, 488, 1080, 410, 1468, 112, 843, 1321, 1813 148, 240, 243, 1193, 536, 149, 150, 674, -234, 143, 1814 886, 887, 112, 740, 675, 536, 112, 145, 1187, 844, 1815 47, 112, 96, 35, 760, 36, 154, 596, 905, 151, 1816 1194, 152, 1099, 1202, 47, 47, 855, 160, 610, 67, 1817 846, 47, 470, 105, 105, 862, 153, 610, 47, 1203, 1818 976, 885, 885, 885, 435, 1102, 342, 703, 95, 1038, 1819 666, 857, 472, 112, 705, 847, 170, 167, 1187, 1037, 1820 885, 848, 1185, 1186, 618, 105, 200, 48, 884, 842, 1821 1025, 536, 1155, 1014, 327, 1136, -3, 180, 681, 674, 1822 95, 168, 1137, 843, 686, 376, 675, 441, 47, 386, 1823 372, 147, 958, 95, 524, 739, 536, 1346, 1135, 1111, 1824 105, 377, 682, 684, 844, 387, 435, 47, 47, 188, 1825 683, 685, 95, 389, 605, 95, 831, 68, 937, 176, 1826 564, 565, 1092, 1404, 47, 478, 285, 61, 47, 390, 1827 1217, 440, 479, 165, 885, 1220, 1221, 41, 42, 653, 1828 950, 251, 329, 605, 75, 478, 926, 1208, 605, 75, 1829 846, 1494, 464, 478, 483, 47, 566, 567, 854, 880, 1830 585, 54, 109, 521, -290, 47, 586, 372, 536, 260, 1831 871, 739, 261, 41, 42, 847, 576, 246, 1194, 916, 1832 607, 848, 1187, 47, 1017, 251, 755, 1459, 1091, 47, 1833 527, 47, 1041, 228, 95, 527, 761, 229, 527, 1203, 1834 233, 1552, 235, 762, 1262, 770, 1203, 95, 342, 244, 1835 1553, 740, 109, 1453, 1454, 47, 211, 560, 561, 109, 1836 112, 1563, 1211, 41, 42, 578, 885, 410, 1567, 391, 1837 41, 42, 397, 188, 112, 579, -112, 1568, 393, 47, 1838 1173, 1175, 936, 1408, 874, 392, 249, 47, 875, 372, 1839 1151, 47, 813, 96, 394, 47, 95, -112, 112, 1203, 1840 112, 327, 327, -520, 936, 979, 1215, 1383, 95, 1107, 1841 67, 824, 1213, 562, 563, 111, 712, 707, 398, 399, 1842 653, 438, 263, 105, 1119, 400, 505, 740, 896, 654, 1843 1261, 1036, 406, -469, 479, -10, 401, 112, 95, 407, 1844 653, 1122, 112, 653, 618, 402, 109, 403, 48, 1080, 1845 404, 75, 486, 713, 479, 1038, -443, 41, 42, 907, 1846 1344, 767, 479, 1107, -469, -444, -469, 1345, 909, 714, 1847 -469, 75, -112, -112, 693, 490, 228, 327, 784, 75, 1848 586, 767, 507, 790, 767, 789, 275, 211, -112, 1019, 1849 112, 715, -291, 831, 277, 1008, 327, 47, 68, 8, 1850 9, 10, 11, 12, 278, 1381, 737, 716, 61, 47, 1851 717, 47, 342, 713, 172, 109, 95, 833, 715, 2, 1852 205, 4, 5, 6, 7, 75, 41, 42, 31, 929, 1853 47, 472, 730, 1200, 930, 557, 612, 1134, 731, 478, 1854 558, 559, 54, 876, 1036, 1394, 47, 877, 750, 1201, 1855 754, 176, 112, 1200, 1350, 330, 34, 252, 55, 55, 1856 1523, 47, 327, 112, 47, 112, 1528, 1500, 638, 1326, 1857 897, 712, 642, 1051, 1500, 500, 607, 501, 1335, 1337, 1858 1184, 955, 1431, 831, 35, 109, 36, 1548, 342, 331, 1859 55, 1049, 1555, 188, 1336, 1338, 41, 42, 47, 1420, 1860 47, 898, 1428, 652, 906, 872, 908, 899, 370, 587, 1861 607, 410, 1096, 112, 775, -112, 228, -112, 233, 112, 1862 747, -112, 55, 112, 1352, 55, 748, 1549, 757, 774, 1863 1384, 112, 161, 332, 758, 775, -112, -112, 441, 777, 1864 1130, 410, 333, 704, 47, 47, 876, 1467, 193, 778, 1865 1118, 216, 1471, 416, 226, -105, 37, 920, 47, -105, 1866 40, 936, 37, 775, 105, 1056, 40, 41, 42, 1502, 1867 674, 1503, 954, 41, 42, 605, 436, 675, 703, 95, 1868 1369, 334, 1493, 612, 1370, 705, 444, 8, 9, 10, 1869 11, 12, 1154, 43, 1254, 1393, 568, 569, 922, 839, 1870 739, 610, 892, 146, 775, 1003, 228, 109, 479, 611, 1871 590, 1004, 410, 347, 737, 910, 31, 410, 41, 42, 1872 8, 9, 10, 11, 12, 75, 1550, 959, 371, 610, 1873 763, 211, 764, 161, 1177, 765, 1252, 960, 771, 47, 1874 1256, 933, 1051, 335, 34, 211, 373, 934, 375, 31, 1875 479, 47, 1294, 1295, 833, 528, 1007, 1004, 1016, 1250, 1876 1377, 935, 831, 945, 731, 586, 775, 75, 1562, 948, 1877 775, 1009, 161, 464, 1562, 384, 979, 34, 55, 388, 1878 979, 979, 251, 329, 410, 1562, 578, 396, 410, 1562, 1879 737, 941, 1378, 941, 653, 161, 579, 841, 775, 612, 1880 37, 112, 653, 1380, 40, 329, 410, 443, 55, 775, 1881 408, 41, 42, 1385, 115, 913, 740, 410, 936, 775, 1882 109, 67, 138, 237, 47, 537, 538, 539, 1198, 425, 1883 1372, 41, 42, 109, 873, 138, 139, 744, 47, 211, 1884 1390, 1391, 1450, 1078, 41, 42, 47, 745, 1447, 540, 1885 888, 541, 426, 542, 543, 1469, 431, 238, 158, 449, 1886 1516, 775, 239, 1573, 47, 904, 1517, 1441, 1004, 586, 1887 752, -367, 1157, 919, 410, 753, 936, 936, -396, 37, 1888 1123, 182, 183, 40, 112, 1169, 932, 410, 704, 491, 1889 41, 42, 1172, 653, 610, 511, 1342, 740, 418, 670, 1890 410, 112, 468, 690, 653, 1174, 112, 610, 290, 68, 1891 109, 469, 138, 139, 515, 373, 698, 257, 410, 61, 1892 1245, 41, 42, 158, 699, 1139, 700, 109, 520, 138, 1893 139, 536, 841, 612, 1447, 1448, 75, 732, 41, 42, 1894 532, 1237, 1147, 410, 654, 767, 327, 1147, 488, 329, 1895 410, 1061, 242, 54, 570, 112, 1495, 1496, 323, 855, 1896 329, 610, 507, 1449, 571, 653, 891, 339, 112, 112, 1897 112, 1313, 1314, 1315, 528, 1351, 1353, 1354, 1535, 528, 1898 1461, 1205, 528, 128, 1402, 129, 130, 131, 1402, 572, 1899 347, 573, 373, 112, 41, 42, 1147, 872, 1421, 1422, 1900 8, 9, 10, 11, 12, 576, 1078, 338, 1010, 1212, 1901 1214, 1216, 801, 802, 803, 804, -440, 429, 1015, 594, 1902 1124, 433, 667, 1302, 1303, 47, 1305, 841, 1107, 31, 1903 597, 441, 1309, 1026, 109, 1312, 138, 139, 342, 612, 1904 797, 798, 647, 654, 668, 41, 42, 799, 800, 55, 1905 669, 323, 455, 1521, 1461, 671, 37, 34, 182, 183, 1906 40, 672, 37, 673, 182, 183, 40, 41, 42, 68, 1907 805, 806, 676, 41, 42, 105, 678, 256, 721, 479, 1908 696, 718, 759, 433, 723, 719, 495, 936, -238, 772, 1909 1485, 347, 776, 609, 162, 610, 75, 780, 834, 609, 1910 112, 610, -12, 611, 936, 836, 838, 529, 849, 611, 1911 158, 901, -13, 54, 893, 894, 218, 921, 923, 928, 1912 699, 924, 47, -417, 977, 949, 704, 653, -292, -524, 1913 963, 970, 748, 972, 704, 8, 9, 10, 11, 12, 1914 918, 983, 105, 1061, 984, 985, 67, 987, 988, 925, 1915 989, 990, 612, 927, 595, 999, 347, 602, 1123, 162, 1916 1011, 1012, -293, 1013, 31, 112, 112, 112, 1078, 8, 1917 9, 10, 11, 12, 1027, 1028, 635, 936, 936, 737, 1918 639, 1029, 1030, 339, 8, 9, 10, 11, 12, 1031, 1919 1032, 1033, 34, 1044, -405, 1445, 1427, -404, 31, 1093, 1920 1058, 347, 347, 347, 1095, 1103, 1147, 1147, 1147, 1104, 1921 1105, 211, 1561, 31, 1106, 1112, 993, 1113, 1114, 1115, 1922 347, 1121, 653, 653, 1131, 1205, 34, 1132, 775, 1167, 1923 1133, 1138, 1182, 1183, 68, 105, 1143, 1188, 323, 323, 1924 1146, 34, 1189, 1190, 61, 1191, 1192, 537, 538, 539, 1925 1300, 1123, 398, 399, 1206, 209, 219, 434, 1207, 400, 1926 737, 75, 1209, 767, 1078, 406, 455, 1210, 1222, 455, 1927 401, 540, 407, 541, 1218, 542, 1322, 653, 54, 402, 1928 653, 403, 1225, 777, 404, 410, 1224, 115, 460, 674, 1929 1232, 1233, -3, 778, 347, 1230, 675, 1235, 1124, 47, 1930 47, 1240, 1534, 1242, 500, 1246, 1251, 1253, 441, 112, 1931 112, 1255, 495, 68, 323, 1258, 495, 1259, 1078, 434, 1932 1263, 1078, 1267, 479, 1270, 653, 529, 1272, 529, 1274, 1933 653, 529, 1275, 323, 529, 1276, 728, 1277, 1278, 1280, 1934 75, 1304, 1287, 531, 1296, 339, 162, 1297, 112, 1325, 1935 1147, 1147, 440, 1307, 1123, 1333, 1308, 54, 1339, 1310, 1936 653, 1341, 1343, 1311, 1348, 1319, 1078, 1347, 1349, 1355, 1937 1356, 1078, 37, 1357, 182, 183, 40, 1359, 105, 1365, 1938 1366, 1367, 1368, 41, 42, 1205, 347, 1101, 1375, 1486, 1939 1376, 1124, 1205, 347, 64, 116, 1379, 1386, 148, 323, 1940 105, 1078, 1387, 149, 150, 1315, 1395, 47, 112, 698, 1941 829, 410, 175, 602, 1396, 1398, 1405, 112, 1415, 700, 1942 105, 1416, 1408, 653, -406, 1419, 64, 1430, 653, 1434, 1943 1436, 1438, 47, 47, 1439, 160, 1446, 1455, 1451, 159, 1944 1440, 1456, 870, 1460, 1370, 1205, 653, 602, 653, 1536, 1945 1457, 1458, 653, 879, 1465, 653, 1470, 47, 1544, 372, 1946 55, 220, 175, 653, 1078, 175, 1358, 653, 1472, 1078, 1947 1474, 1476, 1478, 68, 1360, 1361, 1362, 1480, 1482, 105, 1948 68, 1483, 1488, 479, 1489, 1490, 1501, 1078, 1511, 1078, 1949 479, 1519, 1513, 1078, 1124, 1515, 1078, 1527, 258, 1520, 1950 75, 1542, 460, 1547, 1078, 460, 1543, 75, 1078, 339, 1951 1554, 175, 1556, 105, 213, 1558, 1564, 54, 327, 1571, 1952 1572, 1223, 1397, 808, 54, 807, 1324, 55, 809, 212, 1953 214, 455, 810, 68, 1219, 811, 1522, 1433, 1574, 231, 1954 328, 1389, 1257, 479, 347, 728, 1504, 241, 258, 349, 1955 1406, 1229, 942, 1108, 2, 205, 4, 5, 6, 7, 1956 75, 495, 531, 694, 531, 729, 213, 531, 951, 695, 1957 531, 1110, 1142, 826, 175, 1057, 1120, 54, 900, 405, 1958 1334, 212, 214, 227, 816, 339, 742, 973, 8, 9, 1959 10, 11, 12, 0, 423, 817, 965, 428, 430, 818, 1960 347, 347, 159, 1444, 0, 0, 0, 0, 0, 213, 1961 0, 0, 0, 0, 0, 0, 105, 31, 0, 35, 1962 55, 36, 0, 447, 212, 214, 0, 450, 175, 451, 1963 37, 0, 173, 174, 40, 175, 0, 0, 466, 105, 1964 0, 41, 42, 1018, 64, 34, 105, 829, 0, 480, 1965 37, 0, 182, 183, 40, 0, 0, 0, 0, 487, 1966 0, 41, 42, 0, 0, 0, 0, 430, 517, 0, 1967 213, 0, 0, 0, 0, 0, 123, 126, 127, 0, 1968 728, 534, 535, 0, 0, 212, 214, 698, 0, 410, 1969 728, 0, 0, 556, 0, 0, 0, 700, 0, 105, 1970 0, 0, 0, 0, 175, 728, 0, 0, 213, 0, 1971 0, 0, 213, 8, 9, 10, 11, 12, 0, 0, 1972 486, 175, 0, 212, 214, 175, 0, 212, 214, 535, 1973 0, 0, 0, 0, 0, 258, 0, 829, 603, 0, 1974 0, 455, 31, 506, 631, 0, 0, 253, 0, 254, 1975 0, 0, 0, 0, 0, 0, 0, 636, 0, 0, 1976 455, 636, 55, 55, 258, 535, 0, 460, 0, 0, 1977 34, 0, 0, 0, 729, 37, 1388, 182, 183, 40, 1978 0, 495, 1125, 323, 0, 55, 41, 42, 175, 0, 1979 37, 0, 182, 183, 40, 0, 0, 0, 0, 213, 1980 0, 41, 42, 0, 0, 55, 37, 0, 182, 183, 1981 40, 480, 184, 0, 212, 214, 0, 41, 42, 0, 1982 0, 37, 185, 173, 174, 40, 349, 1532, 0, 410, 1983 395, 480, 41, 42, 870, 0, 0, 1533, 0, 480, 1984 414, 415, 0, 184, 0, 419, 0, 421, 422, 0, 1985 347, 347, 0, 185, 0, 0, 0, 0, 371, 55, 1986 0, 0, 0, 0, 55, 724, 0, 0, 430, 0, 1987 166, 0, 171, 0, 0, 177, 178, 179, 0, 181, 1988 213, 0, 0, 738, 0, 64, 0, 0, 0, 0, 1989 0, 0, 0, 430, 232, 212, 214, 430, 55, 8, 1990 9, 10, 11, 12, 728, 728, 247, 248, 0, 729, 1991 0, 0, 212, 0, 0, 455, 829, 0, 0, 729, 1992 37, 0, 182, 183, 40, 0, 258, 349, 31, 0, 1993 213, 41, 42, 0, 729, 1505, 0, 1509, 0, 0, 1994 0, 0, 794, 795, 796, 212, 214, 37, 0, 173, 1995 174, 40, 0, 0, 175, 0, 34, 264, 41, 42, 1996 0, 0, 728, 728, 0, 0, 0, 265, 0, 0, 1997 0, 0, 1538, 819, 1540, 347, 0, 460, 0, 0, 1998 0, 0, 0, 0, 375, 535, 0, 175, 0, 0, 1999 0, 636, 832, 0, 603, 0, 460, 0, 959, 0, 2000 610, 55, 0, 175, 0, 851, 0, 0, 960, 0, 2001 0, 0, 0, 0, 0, 0, 0, 1569, 175, 1570, 2002 0, 0, 0, 603, 55, 0, 0, 0, 603, 0, 2003 0, 55, 1577, 1578, 636, 339, 0, 349, 349, 349, 2004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2005 73, 0, 0, 213, 0, 0, 349, 0, 0, 0, 2006 1125, 0, 0, 0, 0, 0, 0, 0, 212, 214, 2007 0, 0, 0, 0, 724, 0, 0, 0, 0, 0, 2008 0, 213, 73, 0, 55, 480, 213, 0, 0, 0, 2009 258, 738, 0, 0, 938, 0, 212, 214, 0, 0, 2010 0, 212, 214, 0, 0, 0, 1331, 0, 0, 0, 2011 0, 0, 0, 0, 0, 175, 0, 221, 0, 535, 2012 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, 2013 349, 0, 0, 729, 729, 0, 0, 0, 728, 964, 2014 0, 0, 430, 0, 0, 0, 728, 728, 728, 0, 2015 0, 460, 0, 1125, 0, 0, 0, 0, 0, 0, 2016 0, 0, 0, 601, 608, 994, 258, 738, 0, 0, 2017 0, 0, 992, 0, 213, 632, 633, 0, 0, 125, 2018 125, 125, 0, 0, 0, 0, 0, 0, 213, 212, 2019 214, 729, 729, 0, 728, 0, 0, 0, 0, 0, 2020 0, 0, 0, 212, 214, 352, 0, 0, 0, 724, 2021 0, 0, 535, 0, 0, 0, 0, 0, 0, 724, 2022 0, 0, 349, 506, 636, 0, 0, 1024, 636, 832, 2023 0, 0, 821, 822, 724, 0, 0, 0, 0, 0, 2024 0, 0, 0, 0, 1035, 0, 0, 0, 0, 0, 2025 125, 0, 125, 0, 0, 0, 1125, 8, 9, 10, 2026 11, 12, 856, 0, 0, 859, 860, 0, 863, 0, 2027 865, 866, 0, 0, 0, 867, 868, 274, 0, 448, 2028 0, 175, 213, 0, 0, 0, 31, 0, 1507, 0, 2029 1507, 0, 0, 0, 0, 0, 64, 212, 214, 0, 2030 73, 0, 0, 0, 0, 73, 412, 0, 0, 0, 2031 0, 0, 0, 420, 34, 0, 0, 0, 636, 37, 2032 0, 182, 183, 40, 0, 1507, 0, 1507, 0, 0, 2033 41, 42, 0, 125, 0, 1332, 0, 0, 0, 0, 2034 0, 125, 0, 125, 125, 0, 0, 0, 125, 0, 2035 125, 125, 0, 0, 1117, 323, 1532, 0, 410, 943, 2036 944, 0, 430, 116, 0, 946, 1533, 729, 0, 8, 2037 9, 10, 11, 12, 0, 729, 729, 729, 0, 0, 2038 349, 0, 0, 0, 0, 412, 0, 0, 0, 8, 2039 9, 10, 11, 12, 0, 0, 0, 0, 31, 0, 2040 221, 0, 0, 0, 0, 0, 535, 0, 0, 0, 2041 0, 0, 0, 0, 0, 603, 0, 0, 31, 0, 2042 125, 0, 0, 729, 0, 0, 34, 0, 428, 0, 2043 0, 37, 0, 724, 724, 40, 349, 349, 0, 0, 2044 0, 584, 41, 42, 0, 0, 34, 517, 0, 588, 2045 0, 37, 591, 182, 183, 40, 1204, 0, 0, 0, 2046 0, 0, 41, 42, 0, 0, 0, 73, 43, 0, 2047 0, 76, 0, 0, 213, 0, 0, 0, 146, 0, 2048 0, 0, 352, 0, 0, 0, 0, 73, 264, 212, 2049 214, 724, 724, 0, 0, 73, 0, 636, 265, 0, 2050 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 2051 0, 0, 0, 0, 0, 412, 0, 0, 0, 420, 2052 0, 352, 0, 0, 1508, 0, 1508, 0, 544, 545, 2053 546, 547, 548, 549, 550, 551, 552, 553, 222, 352, 2054 0, 73, 0, 0, 952, 0, 953, 0, 0, 0, 2055 0, 0, 0, 956, 957, 0, 738, 0, 962, 0, 2056 0, 1508, 554, 1508, 535, 8, 9, 10, 11, 12, 2057 967, 0, 0, 0, 0, 971, 0, 0, 0, 175, 2058 0, 0, 0, 352, 0, 0, 0, 0, 0, 0, 2059 0, 0, 0, 0, 31, 0, 0, 0, 0, 1301, 2060 0, 1000, 0, 0, 412, 0, 0, 0, 0, 0, 2061 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 2062 0, 64, 34, 0, 0, 0, 354, 37, 0, 0, 2063 0, 40, 0, 0, 0, 724, 0, 738, 41, 42, 2064 0, 116, 0, 0, 0, 0, 601, 0, 352, 0, 2065 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 2066 0, 0, 0, 0, 744, 0, 0, 724, 0, 212, 2067 214, 0, 0, 0, 745, 724, 724, 724, 0, 0, 2068 0, 0, 0, 0, 0, 0, 349, 349, 0, 0, 2069 0, 0, 0, 352, 352, 352, 584, 584, 0, 0, 2070 1204, 0, 0, 1045, 1046, 1047, 1048, 0, 1050, 0, 2071 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 2072 0, 76, 0, 724, 1094, 0, 76, 0, 0, 0, 2073 352, 0, 0, 0, 116, 125, 125, 0, 1100, 0, 2074 0, 73, 0, 0, 0, 0, 0, 352, 0, 1234, 2075 0, 213, 0, 0, 0, 0, 175, 0, 0, 0, 2076 0, 0, 0, 0, 0, 125, 212, 214, 125, 125, 2077 0, 125, 0, 125, 125, 0, 0, 1116, 125, 125, 2078 0, 0, 0, 73, 0, 911, 352, 0, 0, 914, 2079 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2080 18, 19, 20, 21, 22, 23, 24, 25, -294, 0, 2081 0, 349, 0, 0, 0, 0, 0, 1144, 0, 31, 2082 0, 222, 412, 352, 1152, 0, 0, 0, 0, 1156, 2083 0, 0, 0, 0, 1160, 0, 1161, 116, 0, 0, 2084 1163, 1164, 1165, 0, 0, 1168, 0, 34, 0, 0, 2085 0, 0, 0, 0, 1180, 0, 0, 125, -294, 0, 2086 1204, 0, 125, 125, 0, 352, 0, 1204, 125, 0, 2087 0, 0, 1195, 1196, 1323, 352, 0, 0, 352, 0, 2088 0, 0, 0, 221, 0, 352, 0, 0, 76, 0, 2089 352, 0, 0, 0, 0, 0, 0, 0, 0, 1226, 2090 0, 0, 1228, 354, 0, 0, 0, 0, 76, 0, 2091 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 2092 1204, 0, 0, 0, 0, 0, 0, 1557, 0, 0, 2093 0, 0, 0, 0, 0, 0, 0, 584, 0, 0, 2094 0, 1244, 354, 0, 0, 0, 0, 1248, 1249, 0, 2095 0, 0, 73, 0, 0, 0, 0, 0, 0, 1260, 2096 354, 0, 76, 78, 1264, 0, 0, 1268, 0, 1269, 2097 0, 0, 1271, 0, 0, 0, 0, 0, 0, 0, 2098 0, 0, 0, 0, 0, 1279, 0, 0, 0, 0, 2099 0, 0, 0, 0, 0, 78, 281, 282, 1286, 283, 2100 1288, 1289, 1290, 1291, 354, 0, 0, 0, 0, 0, 2101 0, 0, 0, 0, 0, 0, 1298, 0, 1299, 0, 2102 0, 0, 171, 0, 0, 284, 0, 0, 0, 0, 2103 223, 649, 0, 138, 139, 286, 352, 0, 287, 650, 2104 289, 290, 41, 42, 0, 291, 292, 0, 0, 0, 2105 412, 1327, 1328, 293, 0, 0, 0, 0, 0, 0, 2106 0, 0, 0, 0, 0, 0, 0, 0, 294, 354, 2107 651, 0, 652, 379, 0, 0, 0, 296, 380, 298, 2108 299, 300, 301, 0, 0, 0, 0, 0, 0, 352, 2109 352, 0, 352, 352, 0, 0, 0, 0, 0, 0, 2110 0, 0, 0, 1363, 1364, 0, 0, 0, 0, 0, 2111 0, 0, 73, 1374, 354, 354, 354, 0, 355, 0, 2112 0, 0, 0, 0, 0, 0, 0, 0, 0, 1158, 2113 0, 0, 0, 354, 0, 0, 0, 0, 0, 0, 2114 0, 0, 0, 0, 0, 1170, 0, 352, 352, 0, 2115 0, 354, 0, 0, 0, 0, 0, 0, 0, 0, 2116 0, 0, 76, 0, 0, 1407, 0, 0, 354, 0, 2117 0, 0, 0, 0, 0, 0, 0, 1411, 0, 1412, 2118 1413, 1414, 281, 282, 0, 283, 0, 0, 0, 0, 2119 0, 1418, 0, 0, 0, 0, 0, 0, 0, 0, 2120 1429, 0, 0, 0, 76, 0, 0, 354, 0, 0, 2121 0, 284, 352, 78, 0, 0, 1442, 285, 78, 0, 2122 0, 286, 1238, 0, 287, 288, 289, 290, 41, 42, 2123 0, 291, 292, 0, 0, 0, 0, 0, 85, 293, 2124 0, 0, 0, 0, 354, 0, 0, 0, 0, 0, 2125 0, 0, 125, 0, 294, 221, 378, 0, 0, 379, 2126 0, 0, 0, 296, 380, 298, 299, 300, 301, 0, 2127 85, 0, 1491, 1492, 0, 0, 0, 73, 0, 0, 2128 0, 0, 0, 0, 0, 1497, 354, 0, 0, 0, 2129 0, 352, 1497, 352, 0, 0, 354, 0, 0, 354, 2130 0, 0, 0, 0, 222, 224, 354, 0, 0, 0, 2131 0, 354, 0, 223, 0, 0, 0, 0, 0, 0, 2132 0, 0, 0, 352, 0, 1531, 0, 0, 0, 1537, 2133 0, 352, 352, 352, 0, 0, 0, 0, 0, 0, 2134 0, 0, 352, 352, 0, 0, 0, 0, 0, 0, 2135 0, 0, 0, 0, 0, 0, 73, 0, 1559, 0, 2136 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2137 0, 0, 0, 76, 0, 0, 0, 125, 0, 352, 2138 78, 0, 0, 0, 0, 0, 0, 0, 1575, 1576, 2139 0, 0, 0, 362, 0, 355, 1579, 1580, 0, 0, 2140 78, 0, 0, 0, 0, 0, -519, 0, 78, 1, 2141 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1955 2142 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 1956 22, 23, 24, -294, 1227, 25, 26, 27, 693, 30, 1957 694, 1107, 941, 722, 30, 213, 211, 1056, 478, 213, 1958 1108, 1140, 825, 1118, 899, 478, 935, 964, 1331, 741, 1959 972, 815, 0, 0, 816, 174, 257, 33, 817, 602, 1960 0, 252, 33, 253, 1391, 630, 0, 0, 0, 37, 1961 38, 0, 174, -294, 0, 0, 174, 1424, 635, 211, 1962 0, 0, 635, 0, 0, 257, 0, 8, 9, 10, 1963 11, 12, 0, 0, 0, 0, 0, 0, 478, 776, 1964 0, 409, 0, 1123, 935, 935, 337, 0, 0, 777, 1965 0, 0, 0, 0, 109, 30, 0, 0, 1417, 653, 1966 0, 1425, 0, 0, 0, 1217, 213, 0, 0, 0, 1967 0, 0, 479, 0, 0, 1504, 0, 1504, 0, 174, 1968 211, 0, 0, 33, 394, 0, 0, 348, 0, 0, 1969 0, 0, 479, 0, 413, 414, 0, 728, 728, 418, 1970 479, 420, 421, 0, 0, 0, 1464, 0, 0, 0, 1971 0, 1468, 1504, 0, 1504, 0, 0, 0, 211, 0, 1972 0, 0, 211, 0, 0, 958, 723, 609, 0, 429, 1973 0, 0, 0, 0, 0, 959, 0, 0, 505, 0, 1974 716, 1490, 322, 0, 737, 463, 63, 213, 0, 8, 1975 9, 10, 11, 12, 429, 728, 728, 0, 429, 0, 1976 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, 1977 11, 12, 0, 600, 607, 0, 0, 30, 749, 36, 1978 753, 181, 182, 39, 0, 631, 632, 257, 348, 0, 1979 40, 41, 0, 0, 0, 30, 0, 213, 0, 0, 1980 0, 0, 0, 0, 0, 33, 0, 0, 0, 211, 1981 36, 0, 181, 182, 39, 0, 697, 0, 409, 0, 1982 0, 40, 41, 33, 698, 0, 699, 1559, 36, 0, 1983 181, 182, 39, 1559, 818, 0, 0, 0, 0, 40, 1984 41, 0, 0, 0, 1559, 174, 0, 608, 1559, 609, 1985 0, 0, 635, 831, 935, 602, 0, 610, 0, 0, 1986 0, 0, 0, 0, 0, 697, 850, 409, 0, 0, 1987 0, 935, 0, 0, 0, 699, 0, 0, 174, 0, 1988 0, 0, 0, 0, 602, 0, 0, 0, 0, 602, 1989 211, 0, 0, 0, 174, 635, 0, 1329, 348, 348, 1990 348, 0, 0, 0, 0, 1385, 0, 211, 0, 174, 1991 36, 0, 181, 182, 39, 0, 0, 348, 0, 0, 1992 213, 40, 41, 0, 0, 0, 0, 0, 0, 728, 1993 0, 0, 891, 0, 0, 723, 0, 728, 728, 728, 1994 211, 0, 0, 0, 935, 935, 479, 697, 213, 409, 1995 0, 257, 737, 213, 0, 937, 0, 699, 0, 0, 1996 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1997 17, 18, 19, 20, 21, 22, 23, 24, 72, 0, 1998 25, 26, 27, 0, 0, 728, 0, 0, 479, 30, 1999 452, 348, 0, 944, 0, 0, 0, 0, 0, 947, 2000 963, 0, 0, 429, 0, 75, 174, 0, 0, 72, 2001 36, 0, 181, 182, 39, 0, 0, 33, 0, 0, 2002 0, 40, 41, 0, 37, 38, 0, 257, 737, 0, 2003 0, 0, 0, 991, 0, 0, 75, 0, 0, 0, 2004 0, 213, 0, 0, 220, 0, 0, 1529, 0, 409, 2005 0, 0, 0, 0, 0, 213, 0, 1530, 485, 0, 2006 0, 453, 0, 211, 1502, 710, 1506, 0, 0, 109, 2007 723, 221, 0, 0, 0, 0, 0, 0, 0, 0, 2008 723, 0, 0, 348, 0, 635, 820, 821, 1023, 635, 2009 831, 211, 0, 0, 0, 723, 211, 0, 0, 0, 2010 0, 1535, 0, 1537, 0, 1034, 36, 0, 181, 182, 2011 39, 0, 0, 0, 0, 0, 855, 40, 41, 858, 2012 859, 0, 862, 0, 864, 865, 0, 0, 0, 866, 2013 867, 0, 351, 543, 544, 545, 546, 547, 548, 549, 2014 550, 551, 552, 263, 0, 0, 1566, 0, 1567, 213, 2015 0, 0, 0, 264, 951, 0, 952, 63, 0, 353, 2016 0, 1574, 1575, 955, 956, 0, 0, 553, 961, 0, 2017 0, 0, 174, 0, 653, 0, 411, 0, 0, 635, 2018 966, 1060, 0, 419, 211, 970, 0, 0, 8, 9, 2019 10, 11, 12, 0, 0, 0, 0, 0, 211, 0, 2020 0, 0, 0, 0, 0, 0, 447, 0, 0, 0, 2021 0, 999, 0, 942, 943, 1115, 30, 0, 505, 945, 2022 0, 0, 0, 429, 115, 0, 0, 72, 0, 0, 2023 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 2024 0, 348, 0, 0, 33, 0, 0, 0, 0, 36, 2025 0, 181, 182, 39, 75, 411, 600, 0, 0, 75, 2026 40, 41, 0, 0, 0, 0, 124, 124, 124, 0, 2027 0, 0, 0, 653, 0, 0, 602, 0, 0, 0, 2028 0, 0, 0, 0, 0, 0, 1529, 0, 409, 427, 2029 0, 0, 211, 0, 723, 723, 1530, 348, 348, 0, 2030 0, 0, 0, 0, 8, 9, 10, 11, 12, 0, 2031 0, 583, 0, 1044, 1045, 1046, 1047, 1202, 1049, 587, 2032 0, 0, 590, 0, 0, 0, 0, 220, 0, 0, 2033 0, 0, 30, 0, 1093, 0, 0, 124, 0, 124, 2034 0, 213, 0, 0, 0, 0, 0, 0, 1099, 0, 2035 0, 0, 723, 723, 221, 0, 0, 0, 635, 0, 2036 33, 0, 0, 0, 273, 36, 0, 181, 182, 39, 2037 0, 0, 0, 1060, 0, 0, 40, 41, 0, 0, 2038 0, 0, 0, 0, 0, 411, 0, 1114, 0, 419, 2039 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 2040 0, 0, 183, 0, 0, 0, 0, 0, 0, 351, 2041 0, 0, 184, 0, 72, 0, 737, 0, 0, 0, 2042 124, 75, 72, 0, 0, 0, 0, 1142, 124, 0, 2043 124, 124, 0, 0, 1150, 124, 353, 124, 124, 1154, 2044 0, 75, 0, 0, 1158, 0, 1159, 0, 351, 75, 2045 1161, 1162, 1163, 0, 0, 1166, 0, 0, 0, 1298, 2046 0, 0, 0, 0, 1178, 0, 351, 0, 72, 174, 2047 0, 0, 0, 0, 411, 353, 257, 0, 0, 1297, 2048 0, 63, 1193, 1194, 211, 0, 0, 0, 8, 9, 2049 10, 11, 12, 353, 723, 75, 737, 0, 0, 0, 2050 115, 0, 0, 0, 0, 0, 0, 124, 0, 1224, 2051 351, 0, 1226, 0, 0, 0, 30, 0, 0, 0, 2052 213, 0, 0, 0, 0, 0, 723, 0, 0, 0, 2053 0, 0, 0, 0, 723, 723, 723, 353, 0, 0, 2054 0, 0, 0, 0, 33, 348, 348, 0, 0, 36, 2055 1241, 181, 182, 39, 0, 0, 1245, 1246, 0, 1202, 2056 40, 41, 0, 0, 0, 0, 583, 583, 1257, 0, 2057 0, 0, 0, 1261, 0, 351, 1265, 0, 1266, 0, 2058 0, 1268, 723, 0, 0, 0, 263, 0, 0, 0, 2059 0, 0, 0, 115, 1276, 0, 264, 0, 0, 0, 2060 0, 0, 353, 1232, 0, 0, 0, 1283, 0, 1285, 2061 1286, 1287, 1288, 0, 0, 0, 213, 0, 0, 0, 2062 351, 351, 351, 0, 0, 1295, 0, 1296, 0, 0, 2063 0, 170, 0, 0, 0, 0, 0, 0, 0, 351, 2064 0, 0, 0, 0, 0, 174, 0, 353, 353, 353, 2065 0, 0, 0, 0, 0, 910, 0, 351, 0, 913, 2066 1324, 1325, 0, 211, 0, 0, 353, 0, 72, 0, 2067 348, 0, 77, 0, 351, 0, 0, 0, 0, 0, 2068 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 2069 0, 0, 411, 0, 0, 75, 115, 0, 0, 84, 2070 0, 353, 0, 77, 0, 54, 54, 0, 0, 0, 2071 72, 1360, 1361, 351, 0, 0, 0, 0, 0, 1202, 2072 0, 1371, 0, 0, 0, 0, 1202, 1320, 0, 0, 2073 84, 0, 0, 0, 0, 0, 54, 75, 222, 0, 2074 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2075 351, 0, 0, 0, 0, 0, 0, 0, 0, 211, 2076 0, 0, 0, 0, 0, 223, 0, 0, 54, 0, 2077 0, 54, 0, 1404, 0, 0, 0, 353, 0, 1202, 2078 0, 0, 0, 0, 0, 1408, 1554, 1409, 1410, 1411, 2079 0, 0, 351, 0, 0, 0, 0, 0, 0, 1415, 2080 0, 0, 351, 0, 0, 351, 0, 583, 1426, 0, 2081 220, 0, 351, 0, 0, 0, 0, 351, 0, 353, 2082 0, 0, 124, 124, 1439, 0, 354, 0, 0, 353, 2083 0, 0, 353, 0, 0, 0, 0, 221, 0, 353, 2084 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 2085 0, 0, 124, 361, 0, 124, 124, 0, 124, 346, 2086 124, 124, 0, 0, 0, 124, 124, 0, 0, 0, 2087 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 2088 1488, 1489, 0, 0, 0, 0, 0, 0, 0, 0, 2089 0, 0, 0, 1494, 0, 0, 0, 0, 0, 0, 2090 1494, 0, 0, 0, 0, 0, 75, 0, 0, 0, 2143 22, 23, 24, 25, 355, 0, 26, 27, 28, 29, 2144 0, 0, 30, 0, 0, 31, 32, 0, 0, 0, 2145 0, 0, 355, 0, 78, 0, 0, 354, 0, 0, 2146 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, 2147 33, 0, 0, 34, 0, 35, 0, 36, 37, 0, 2148 38, 39, 40, 0, 0, 0, 0, 0, 85, 41, 2149 42, 0, 0, 85, 0, 0, 355, 0, 1034, 0, 2150 0, 8, 9, 10, 11, 12, 0, 0, 0, 0, 2151 354, 354, 0, 354, 354, 43, 73, 44, 0, 0, 2152 0, 0, 0, 73, 0, 45, 0, 0, 281, 282, 2153 31, 283, 0, 76, 0, 8, 9, 10, 11, 12, 2154 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2155 23, 24, 25, -295, 0, 0, 0, 284, 34, 0, 2156 0, 355, 0, 285, 31, 0, 0, 286, 354, 354, 2157 287, 288, 289, 290, 41, 42, 73, 291, 292, 0, 2158 0, 0, 0, 0, 0, 293, 0, 0, 224, 0, 2159 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 2160 294, 0, 378, -295, 0, 0, 355, 355, 355, 296, 2161 827, 298, 299, 300, 301, 0, 0, 0, 0, 0, 2162 0, 0, 0, 0, 0, 355, 0, 0, 0, 0, 2163 0, 0, 0, 354, 0, 0, 0, 0, 0, 0, 2164 0, 0, 0, 355, 0, 0, 0, 0, 0, 0, 2165 0, 0, 0, 0, 78, 85, 0, 0, 0, 164, 2166 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2167 362, 0, 0, 0, 0, 85, 222, 0, 217, 0, 2168 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 2169 0, 0, 0, 0, 0, 0, 78, 0, 76, 355, 2170 0, 0, 0, 0, 0, 0, 0, 0, 0, 362, 2171 0, 0, 354, 0, 354, 0, 0, 0, 0, 0, 2172 0, 0, 0, 0, 164, 0, 0, 362, 0, 85, 2173 271, 0, 0, 0, 0, 0, 355, 0, 0, 0, 2174 0, 0, 0, 0, 354, 0, 0, 0, 0, 0, 2175 0, 0, 354, 354, 354, 0, 0, 0, 0, 164, 2176 0, 0, 0, 354, 354, 0, 0, 0, 0, 368, 2177 0, 362, 0, 374, 0, 0, 0, 76, 355, 0, 2178 0, 0, 0, 0, 0, 0, 0, 0, 355, 0, 2179 0, 355, 0, 0, 0, 0, 223, 0, 355, 0, 2180 354, 0, 0, 355, 8, 9, 10, 11, 12, 13, 2181 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2182 24, 25, 164, 0, 26, 27, 28, 0, 0, 0, 2183 0, 0, 0, 31, 217, 0, 362, 0, 0, 0, 2091 2184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2092 411, 77, 0, 0, 54, 0, 77, 0, 0, 0, 2093 0, 0, 0, 1528, 0, 0, 0, 1534, 0, 0, 2094 0, 0, 0, 0, 124, 0, 0, 0, 84, 124, 2095 124, 0, 0, 84, 54, 124, 0, 0, 0, 0, 2096 0, 0, 0, 351, 0, 0, 1556, 0, 1557, 0, 2185 0, 0, 164, 461, 0, 0, 0, 0, 0, 0, 2186 0, 34, 0, 0, 0, 78, 0, 0, 206, 39, 2187 0, 0, 0, 0, 0, 0, 374, 0, 0, 0, 2188 0, 362, 362, 362, 164, 0, 0, 0, 354, 0, 2189 0, 0, 0, 0, 514, 0, 516, 519, 0, 0, 2190 362, 0, 0, 0, 522, 523, 0, 0, 461, 516, 2191 516, 164, 0, 270, 0, 0, 0, 0, 362, 0, 2192 0, 516, 0, 0, 0, 0, 0, 0, 0, 85, 2193 0, 0, 0, 0, 0, 362, 0, 76, 281, 282, 2194 0, 283, 0, 0, 76, 0, 0, 0, 0, 355, 2195 0, 0, 0, 0, 0, 0, 0, 516, 606, 0, 2196 0, 0, 0, 630, 0, 0, 0, 284, 0, 0, 2197 0, 85, 0, 285, 362, 0, 0, 286, 0, 0, 2198 287, 288, 289, 290, 41, 42, 0, 291, 292, 0, 2199 0, 0, 0, 516, 0, 293, 0, 76, 0, 0, 2200 0, 0, 355, 355, 0, 355, 355, 0, 0, 0, 2201 294, 362, 378, 0, 0, 0, 0, 0, 812, 296, 2202 380, 298, 299, 300, 301, 78, 0, 0, 0, 0, 2203 0, 0, 0, 0, 0, 210, 0, 0, 0, 164, 2204 164, 0, 0, 0, 0, 230, 368, 234, 0, 236, 2205 0, 0, 0, 362, 0, 0, 245, 0, 0, 0, 2206 355, 355, 0, 362, 0, 0, 362, 461, 0, 0, 2207 461, 224, 0, 362, 0, 0, 0, 0, 362, 0, 2208 0, 0, 0, 0, 0, 0, 0, 210, 0, 234, 2209 236, 245, 0, 0, 0, 0, 0, 0, 0, 0, 2210 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 2211 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 2212 0, 0, 0, 0, 0, 355, 0, 461, 0, 461, 2213 210, 0, 461, 0, 164, 461, 0, 0, 0, 0, 2214 85, 0, 0, 0, 0, 0, 0, 368, 0, 0, 2215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2216 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 2217 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, 2218 516, 516, 516, 516, 516, 516, 516, 516, 0, 0, 2219 78, 210, 0, 234, 236, 245, 0, 0, 0, 0, 2220 164, 0, 0, 0, 355, 0, 355, 0, 0, 0, 2221 0, 0, 368, 516, 606, 0, 0, 837, 0, 0, 2222 0, 0, 0, 0, 362, 0, 0, 0, 0, 210, 2223 0, 0, 0, 210, 0, 0, 355, 0, 0, 0, 2224 0, 0, 0, 606, 355, 355, 355, 0, 606, 504, 2225 0, 0, 0, 0, 0, 355, 355, 368, 368, 368, 2226 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 2227 0, 0, 0, 0, 0, 0, 368, 362, 362, 0, 2228 362, 362, 0, 0, 0, 0, 0, 0, 0, 0, 2229 0, 0, 355, 0, 0, 0, 0, 0, 0, 210, 2230 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2231 0, 741, 516, 0, 0, 0, 0, 0, 0, 0, 2232 210, 0, 0, 0, 0, 234, 236, 155, 0, 0, 2233 0, 0, 461, 245, 516, 362, 362, 0, 0, 0, 2234 0, 0, 0, 0, 0, 0, 0, 516, 0, 0, 2235 368, 0, 961, 8, 9, 10, 11, 12, 13, 14, 2236 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2237 25, 0, 0, 250, 0, 0, 210, 0, 0, 0, 2238 355, 0, 31, 255, 0, 0, 0, 741, 0, 0, 2239 0, 0, 0, 516, 210, 0, 0, 0, 0, 210, 2240 362, 210, 0, 0, 0, 0, 0, 0, 0, 0, 2241 34, 0, 0, 0, 0, 0, 0, 0, 210, 0, 2242 0, 210, 210, 0, 0, 516, 0, 0, 0, 78, 2243 0, 0, 0, 0, 0, 0, 78, 210, 0, 155, 2244 516, 0, 368, 224, 0, 0, 630, 0, 0, 368, 2245 0, 210, 0, 385, 0, 0, 0, 0, 210, 0, 2246 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 2247 0, 0, 0, 0, 0, 0, 417, 0, 0, 362, 2248 0, 362, 0, 0, 0, 0, 0, 0, 0, 78, 2249 432, 0, 0, 0, 0, 0, 0, 0, 0, 437, 2250 0, 0, 0, 0, 0, 0, 0, 0, 0, 445, 2251 0, 362, 0, 0, 0, 0, 0, 0, 0, 362, 2252 362, 362, 0, 0, 0, 0, 0, 0, 0, 0, 2253 362, 362, 0, 0, 471, 0, 0, 0, 0, 481, 2254 0, 0, 461, 0, 85, 0, 0, 0, 0, 0, 2255 0, 0, 489, 0, 0, 0, 0, 0, 499, 0, 2256 503, 461, 0, 0, 0, 0, 0, 362, 0, 0, 2257 0, 0, 0, 0, 210, 0, 0, 0, 533, 0, 2258 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 2259 0, 516, 0, 0, 0, 0, 0, 0, 0, 0, 2260 368, 0, 210, 0, 0, 0, 0, 210, 0, 0, 2261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2262 0, 593, 516, 0, 0, 0, 598, 0, 0, 0, 2263 0, 0, 0, 0, 516, 606, 0, 0, 0, 0, 2264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2265 0, 0, 0, 0, 644, 362, 368, 368, 645, 646, 2266 0, 648, 0, 0, 0, 0, 0, 0, 660, 661, 2267 0, 662, 663, 0, 664, 516, 665, 0, 0, 0, 2268 0, 0, 1178, 0, 0, 8, 9, 10, 11, 12, 2269 0, 0, 0, 593, 0, 210, 0, 0, 0, 0, 2270 0, 680, 0, 0, 85, 0, 0, 0, 0, 210, 2271 0, 85, 281, 282, 31, 283, 461, 0, 0, 0, 2272 0, 0, 0, 0, 0, 0, 691, 0, 0, 504, 2273 0, 0, 0, 0, 0, 0, 0, 697, 0, 0, 2274 0, 284, 34, 0, 0, 0, 0, 285, 516, 0, 2275 0, 286, 0, 0, 287, 288, 289, 290, 41, 42, 2276 733, 291, 292, 0, 85, 0, 736, 0, 0, 293, 2277 0, 471, 0, 0, 0, 0, 741, 0, 0, 0, 2278 0, 0, 0, 0, 294, 0, 378, 0, 0, 0, 2279 210, 0, 516, 296, 1179, 298, 299, 300, 301, 0, 2280 0, 0, 0, 210, 0, 0, 516, 516, 773, 0, 2281 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 2282 0, 0, 210, 0, 788, 0, 0, 0, 0, 0, 2283 0, 204, 2, 205, 4, 5, 6, 7, 8, 9, 2284 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2285 20, 21, 22, 23, 24, 25, 0, 741, 26, 27, 2286 28, 815, 0, 0, 0, 0, 0, 31, 0, 0, 2287 825, 0, 0, 0, 0, 0, 0, 828, 0, 0, 2288 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, 2289 0, 0, 0, 850, 0, 34, 0, 35, 0, 36, 2290 37, 0, 206, 39, 40, 0, 368, 368, 0, 210, 2291 0, 41, 42, 0, 0, 217, 0, 0, 0, 0, 2292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2293 0, 0, 0, 0, 890, 210, 0, 43, 0, 207, 2294 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 2295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2296 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 2297 835, 0, 0, 0, 0, 0, 8, 9, 10, 11, 2298 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2299 22, 23, 24, 25, -294, 210, 26, 27, 28, 0, 2300 0, 0, 0, 0, 0, 31, 210, 0, 0, 0, 2301 0, 0, 0, 0, 0, 0, 0, 516, 0, 0, 2302 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 2303 0, 368, 0, 34, 516, 968, 969, 0, 0, 0, 2304 38, 39, 0, 0, -294, 0, 0, 0, 0, 986, 2305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2306 0, 0, 0, 0, 0, 0, 1001, 0, 1002, 0, 2307 0, 0, 1006, 0, 0, 643, 0, 338, 0, 0, 2308 0, 0, 0, 0, 0, 110, 0, 0, 210, 461, 2309 0, 461, 0, 0, 0, 0, 0, 0, 0, 0, 2310 0, 0, 0, 0, 0, 0, 0, 516, 516, 0, 2311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2312 281, 282, 0, 283, 0, 0, 461, 0, 461, 0, 2313 0, 0, 0, 0, 0, 0, 0, 0, 1039, 0, 2314 0, 0, 0, 0, 0, 1040, 0, 0, 0, 284, 2315 0, 0, 0, 0, 0, 285, 164, 0, 1042, 286, 2316 1043, 0, 287, 288, 289, 290, 41, 42, 0, 291, 2317 292, 0, 0, 0, 1055, 210, 0, 293, 0, 0, 2318 0, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 2319 0, 0, 294, 1097, 378, 0, 1098, 0, 0, 781, 2320 0, 296, 380, 298, 299, 300, 301, 0, 0, 0, 2321 0, 0, 0, 0, 598, 0, 0, 0, 0, 0, 2322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2323 0, 0, 0, 0, 341, 363, 0, 0, 0, 0, 2324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2326 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, 2327 0, 0, 210, 0, 0, 413, 0, 1, 2, 3, 2328 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2329 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2330 24, 25, 0, 1162, 26, 27, 28, 29, 0, 0, 2331 30, 0, 0, 31, 32, 8, 9, 10, 11, 12, 2332 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2333 23, 24, 25, 0, 0, 26, 27, 28, 33, 0, 2334 0, 34, 0, 35, 31, 36, 37, 413, 38, 39, 2335 40, 0, 0, 0, 0, 0, 0, 41, 42, 533, 2336 0, 0, 0, 0, 0, 0, 1227, 0, 0, 0, 2337 0, 0, 34, 0, 0, 0, 0, 0, 0, 38, 2338 39, 0, 0, 43, 0, 44, 0, 0, 0, -523, 2339 0, 0, 0, 45, 0, 321, 1241, 0, 0, 0, 2340 0, 1243, 0, 413, 0, 345, 0, 0, 0, 1247, 2341 0, 413, 589, 0, 413, 592, 0, 381, 381, 0, 2342 0, 0, 0, 0, 363, 0, 0, 0, 622, 0, 2343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2344 1273, 0, 0, 0, 0, 0, 0, 640, 0, 0, 2345 341, 0, 1281, 0, 0, 1282, 0, 1283, 0, 0, 2346 281, 282, 0, 283, 0, 0, 0, 0, 0, 0, 2347 0, 1292, 1293, 0, 0, 0, 0, 413, 0, 0, 2348 0, 413, 0, 0, 0, 0, 0, 0, 321, 284, 2349 0, 0, 0, 1306, 0, 285, 0, 0, 0, 286, 2350 0, 0, 287, 288, 289, 290, 41, 42, 0, 291, 2351 292, 0, 363, 485, 0, 0, 0, 293, 0, 0, 2352 1329, 0, 0, 0, 0, 0, 0, 0, 210, 0, 2353 0, 0, 294, 0, 378, 413, 0, 993, 0, 0, 2354 0, 296, 380, 298, 299, 300, 301, 0, 0, 0, 2355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2356 0, 0, 0, 0, 0, 0, 413, 0, 0, 363, 2357 0, 0, 0, 0, 1, 2, 205, 4, 5, 6, 2358 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2359 17, 18, 19, 20, 21, 22, 23, 24, 25, -294, 2360 0, 26, 27, 28, 29, 0, 0, 30, 0, 413, 2361 31, 0, 341, 363, 0, 0, 0, 0, 1399, 0, 2362 1400, 0, 0, 0, 0, 0, 0, 0, 0, 381, 2363 0, 0, 0, 1409, 0, 1410, 0, 0, 34, 0, 2364 35, 0, 36, 0, 0, 38, 39, 0, 0, -294, 2365 0, 0, 0, 1417, 0, 0, 0, 0, 413, 413, 2366 0, 0, 0, 0, 0, 0, 0, 0, 0, 1435, 2367 1437, 0, 0, 0, 0, 0, 0, 830, 363, 0, 2368 363, 1443, 44, 0, 1247, 0, 0, 0, 0, 622, 2369 110, 622, 622, 0, 0, 0, 0, 0, 622, 0, 2370 0, 0, 0, 0, 0, 0, 1466, 0, 869, 363, 2371 0, 0, 0, 0, 363, 1473, 0, 0, 1475, 0, 2372 1477, 1479, 1481, 363, 363, 363, 0, 0, 0, 0, 2373 0, 735, 0, 0, 0, 0, 0, 0, 0, 0, 2374 0, 0, 363, 0, 0, 0, 0, 413, 912, 0, 2375 0, 413, 915, 0, 0, 0, 0, 0, 917, 0, 2376 0, 0, 1512, 0, 1514, 0, 0, 1247, 0, 0, 2377 769, 0, 0, 0, 0, 0, 341, 363, 413, 0, 2378 413, 0, 1526, 782, 413, 0, 0, 0, 0, 0, 2379 769, 0, 0, 769, 0, 0, 0, 0, 0, 0, 2380 0, 0, 0, 0, 792, 793, 0, 0, 0, 0, 2381 0, 0, 0, 0, 0, 0, 363, 622, 0, 0, 2382 0, 0, 0, 0, 0, 0, 814, 0, 0, 0, 2383 0, 0, 0, 0, 0, 0, 823, 0, 0, 0, 2384 0, 0, 0, 345, 0, 0, 0, 0, 782, 0, 2385 0, 0, 341, 363, 0, 0, 0, 413, 413, 0, 2386 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 2387 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2388 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2389 0, 26, 27, 28, 29, 0, 0, 30, 889, 413, 2390 31, 32, 0, 0, 0, 0, 0, 381, 363, 0, 2391 0, 0, 0, 0, 830, 363, 0, 0, 0, 622, 2392 0, 622, 0, 0, 0, 33, 0, 0, 34, 0, 2393 35, 622, 36, 37, 0, 38, 39, 40, 0, 0, 2394 0, 0, 0, 0, 41, 42, 0, 345, 0, 0, 2395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2397 43, 0, 44, 0, 0, 0, 0, 0, 0, 0, 2398 45, 0, 0, 0, 0, 8, 9, 10, 11, 12, 2399 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2400 23, 24, 25, -294, 830, 26, 27, 28, 0, 0, 2401 0, 0, 413, 0, 31, 0, 0, 0, 413, 0, 2402 0, 0, 0, 782, 0, 991, 413, 0, 0, 0, 2403 0, 996, 0, 0, 0, 0, 0, 0, 1005, 622, 2404 622, 0, 34, 0, 0, 0, 0, 37, 0, 336, 2405 337, 40, 0, -294, 0, 0, 0, 0, 41, 42, 2406 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 2407 0, 0, 413, 0, 0, 0, 0, 0, 0, 0, 2408 0, 0, 1022, 1023, 643, 345, 338, 0, 0, 0, 2409 0, 413, 1159, 0, 634, 0, 0, 0, 0, 0, 2410 345, 363, 0, 0, 0, 0, 0, 413, 1171, 0, 2411 622, 622, 1176, 0, 0, 0, 0, 0, 0, 0, 2412 0, 0, 363, 363, 0, 0, 0, 0, 0, 0, 2413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2414 1053, 0, 0, 0, 381, 1, 2, 205, 4, 5, 2415 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2416 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2417 0, 0, 26, 27, 28, 29, 0, 0, 30, 0, 2418 0, 31, 0, 830, 413, 1239, 0, 0, 0, 0, 2419 0, 0, 0, 0, 0, 0, 0, 622, 0, 0, 2420 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2421 0, 35, 0, 36, 0, 0, 38, 39, 0, 0, 2422 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2423 0, 0, 0, 0, 0, 0, 1140, 1141, 0, 0, 2424 0, 0, 363, 381, 0, 0, 0, 281, 282, 996, 2425 283, 0, 1150, 44, 769, 0, 0, 0, 0, 0, 2426 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 2427 0, 0, 0, 0, 1166, 0, 284, 0, 0, 0, 2428 0, 0, 285, 0, 0, 1181, 286, 0, 0, 287, 2429 288, 289, 290, 41, 42, 0, 291, 292, 0, 0, 2430 0, 0, 341, 0, 293, 281, 282, 381, 283, 1199, 2431 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 2432 0, 378, 0, 363, 996, 996, 0, 0, 296, 380, 2433 298, 299, 300, 301, 284, 0, 0, 0, 0, 0, 2434 285, 0, 0, 0, 286, 1231, 0, 287, 288, 289, 2435 290, 41, 42, 0, 291, 292, 0, 0, 0, 0, 2436 0, 0, 293, 0, 0, 0, 0, 0, 0, 0, 2437 0, 0, 363, 363, 0, 0, 0, 294, 0, 378, 2438 0, 0, 0, 0, 0, 0, 296, 734, 298, 299, 2439 300, 301, 0, 996, 0, 0, 0, 0, 0, 0, 2440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2441 0, 0, 889, 0, 0, 0, 0, 0, 0, 0, 2442 0, 0, 0, 0, 0, 0, 0, 1284, 1285, 0, 2443 0, 0, 0, 0, 0, 1, 2, 205, 4, 5, 2444 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2445 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2446 0, 0, 26, 27, 28, 29, 0, 0, 30, 281, 2447 282, 31, 1062, 1063, 0, 1064, 0, 0, 1065, 1066, 2448 1067, 1068, 1069, 1070, 1071, 1072, 0, 0, 0, 1073, 2449 0, 0, 0, 1074, 1075, 0, 33, 363, 284, 34, 2450 0, 35, 0, 36, 649, 0, 38, 39, 286, 996, 2451 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2452 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2454 0, 294, 0, 1076, 0, 0, 170, 0, 0, 0, 2455 296, 297, 298, 299, 300, 301, 0, 0, 0, 0, 2456 1077, 0, 0, 0, -129, 0, 0, 0, 0, 0, 2457 1392, 0, 769, 0, 0, 0, 0, 0, 0, 0, 2458 0, 0, 0, 0, 0, 0, 0, 413, 8, 9, 2459 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2460 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2461 28, 0, 413, 413, 0, 0, 0, 31, 0, 0, 2462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2463 0, 0, 0, 0, 0, 0, 0, 413, 0, 0, 2464 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 2465 0, 0, 206, 39, 0, 0, 0, 0, 1452, 0, 2466 0, 0, 0, 0, 0, 1, 2, 205, 4, 5, 2467 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2468 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2469 0, 0, 26, 27, 28, 29, 0, 629, 30, 281, 2470 282, 31, 283, 8, 9, 10, 11, 12, 13, 14, 2471 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2472 25, 0, 0, 26, 27, 28, 0, 0, 284, 34, 2473 0, 35, 31, 36, 285, 0, 38, 39, 286, 0, 2474 1518, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2475 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2476 34, 0, 0, 0, 0, 109, 0, 38, 39, 0, 2477 0, 294, 0, 1076, 0, 0, 41, 42, 0, 0, 2478 296, 297, 298, 299, 300, 301, 0, 0, 0, 0, 2479 0, 0, 321, 0, -129, 1, 2, 205, 4, 5, 2480 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2481 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2482 0, 0, 26, 27, 28, 29, 0, 0, 30, 281, 2483 282, 31, 283, 8, 9, 10, 11, 12, 13, 14, 2484 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2485 25, 0, 0, 26, 27, 28, 0, 0, 284, 34, 2486 0, 35, 31, 36, 285, 0, 38, 39, 286, 0, 2487 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2488 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2489 34, 0, 0, 0, 0, 0, 0, 206, 39, 0, 2490 0, 294, 0, 44, 0, 0, 0, 0, 0, 0, 2491 296, 297, 298, 299, 300, 301, 2, 205, 4, 5, 2492 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2493 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2494 0, 0, 26, 27, 28, 0, 0, 0, 0, 281, 2495 282, 31, 283, 0, 0, 0, 0, 0, 0, 0, 2496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2497 0, 0, 0, 0, 0, 0, 0, 0, 284, 34, 2498 0, 35, 0, 36, 285, 0, 38, 39, 286, 0, 2499 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2500 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2502 0, 294, 0, 343, 0, 0, 0, 0, 781, 0, 2503 296, 344, 298, 299, 300, 301, 2, 205, 4, 5, 2504 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2505 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2506 0, 0, 26, 27, 28, 0, 0, 0, 0, 281, 2507 282, 31, 283, 0, 0, 0, 0, 0, 0, 0, 2508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2509 0, 0, 0, 0, 0, 0, 0, 0, 284, 34, 2510 0, 35, 0, 36, 285, 0, 38, 39, 286, 0, 2511 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2512 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2514 0, 294, 0, 931, 0, 0, 0, 0, 781, 0, 2515 296, 344, 298, 299, 300, 301, 2, 205, 4, 5, 2516 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2517 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2518 0, 0, 26, 27, 28, 0, 0, 0, 0, 281, 2519 282, 31, 283, 0, 0, 0, 0, 0, 0, 0, 2520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2521 0, 0, 0, 0, 0, 0, 0, 0, 284, 34, 2522 0, 35, 0, 36, 285, 0, 38, 39, 286, 0, 2523 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2524 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2526 0, 294, 0, 931, 0, 0, 0, 0, 781, 0, 2527 296, 600, 298, 299, 300, 301, 2, 205, 4, 5, 2528 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2529 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2530 0, 0, 26, 27, 28, 0, 0, 0, 0, 281, 2531 282, 31, 283, 0, 0, 0, 0, 0, 0, 0, 2532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2533 0, 0, 0, 0, 0, 0, 0, 0, 284, 34, 2534 0, 35, 0, 36, 285, 0, 38, 39, 286, 0, 2535 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2536 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2538 0, 294, 0, 343, 0, 0, 0, 0, 0, 0, 2539 296, 344, 298, 299, 300, 301, 2, 205, 4, 5, 2540 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2541 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2542 0, 0, 26, 27, 28, 0, 0, 0, 0, 281, 2543 282, 31, 283, 0, 0, 0, 0, 0, 0, 0, 2544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2545 0, 0, 0, 0, 0, 0, 0, 0, 284, 34, 2546 0, 35, 0, 36, 285, 0, 38, 39, 286, 0, 2547 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2548 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550 0, 294, 0, 931, 0, 0, 0, 0, 0, 0, 2551 296, 344, 298, 299, 300, 301, 2, 205, 4, 5, 2552 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2553 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2554 0, 0, 26, 27, 28, 0, 0, 0, 0, 281, 2555 282, 31, 283, 0, 0, 0, 0, 0, 0, 0, 2556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2557 0, 0, 0, 0, 0, 0, 0, 0, 284, 34, 2558 0, 35, 0, 36, 285, 0, 206, 39, 286, 0, 2559 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2560 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2562 0, 294, 0, 1020, 0, 0, 0, 0, 0, 0, 2563 296, 1021, 298, 299, 300, 301, 2, 205, 4, 5, 2564 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2565 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2566 0, 0, 26, 27, 28, 0, 0, 0, 0, 281, 2567 282, 31, 283, 0, 0, 0, 0, 0, 0, 0, 2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2569 0, 0, 0, 0, 0, 0, 0, 0, 284, 34, 2570 0, 35, 0, 36, 285, 0, 206, 39, 286, 0, 2571 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2572 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2574 0, 294, 0, 378, 0, 0, 0, 0, 0, 0, 2575 296, 380, 298, 299, 300, 301, 204, 2, 205, 4, 2576 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2577 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2578 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2579 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 2580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2582 34, 0, 35, 0, 36, 0, 0, 206, 39, 0, 2583 2, 205, 4, 5, 6, 7, 8, 9, 10, 11, 2584 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2585 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2586 0, 0, 0, 0, 207, 31, 0, 0, 0, 0, 2587 0, 0, 270, 0, 0, 0, 0, 0, 0, 0, 2588 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2589 0, 0, 0, 34, 0, 35, 0, 36, 37, 0, 2590 206, 39, 40, 0, 0, 0, 0, 0, 0, 41, 2591 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2593 0, 0, 0, 0, 0, 43, 0, 207, 0, 0, 2594 0, 0, 0, 0, 0, 208, 2, 205, 4, 5, 2595 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2596 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2597 0, 0, 26, 27, 28, 0, 0, 0, 0, 0, 2598 0, 31, 0, 0, 0, 0, 8, 9, 10, 11, 2599 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2600 22, 23, 24, 25, 0, 0, 26, 27, 28, 34, 2601 0, 35, 0, 36, 0, 31, 38, 39, 0, 2, 2602 205, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2603 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2604 23, 24, 25, 34, 0, 26, 27, 28, 109, 0, 2605 38, 39, -402, 687, 31, 0, 0, 0, 0, 41, 2606 42, 634, 0, 0, 0, 0, 0, 0, 0, 0, 2607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2608 0, 0, 34, 0, 35, 0, 36, 44, 0, 38, 2609 39, 0, 0, 0, 0, 110, 0, 0, 0, 0, 2610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2611 0, 1371, 0, 0, 0, 0, 0, 0, 0, 0, 2612 0, 0, 0, 0, 0, 0, 687, 0, 0, 0, 2613 0, 0, 0, 0, 634, 2, 205, 4, 5, 6, 2614 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2615 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2616 0, 26, 27, 28, 0, 0, 0, 0, 0, 0, 2617 31, 0, 0, 0, 0, 8, 9, 10, 11, 12, 2618 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2619 23, 24, 25, -294, 0, 26, 27, 28, 34, 0, 2620 35, 0, 36, 0, 31, 38, 39, 0, 0, 0, 2621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2622 0, 0, 0, 0, 0, 0, 0, 1373, 0, 0, 2623 0, 0, 34, 0, 0, 0, 0, 37, 0, 336, 2624 337, 40, 687, -294, 0, 0, 0, 0, 41, 42, 2625 634, 2, 205, 4, 5, 6, 7, 8, 9, 10, 2626 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2627 21, 22, 23, 24, 25, 0, 338, 26, 27, 28, 2628 0, 0, 0, 0, 110, 0, 31, 0, 0, 0, 2629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2631 0, 0, 0, 0, 34, 0, 35, 0, 36, 0, 2632 0, 206, 39, 0, 2, 205, 4, 5, 6, 7, 2633 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2634 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2635 26, 27, 28, 0, 0, 0, 0, 0, 269, 31, 2636 0, 0, 0, 0, 0, 0, 629, 0, 0, 0, 2637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2638 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 2639 0, 36, 0, 0, 38, 39, 0, 2, 205, 4, 2640 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2641 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2642 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2643 0, 687, 31, 0, 0, 0, 0, 0, 0, 634, 2644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646 34, 0, 35, 0, 36, 0, 0, 38, 39, 0, 2647 2, 205, 4, 5, 6, 7, 8, 9, 10, 11, 2648 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2649 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2650 0, 0, 0, 0, 599, 31, 0, 0, 0, 0, 2651 0, 0, 634, 0, 0, 0, 0, 0, 0, 0, 2652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2653 0, 0, 0, 34, 0, 35, 0, 36, 0, 0, 2654 206, 39, 8, 9, 10, 11, 12, 13, 14, 15, 2655 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2656 0, 0, 26, 27, 28, 0, 0, 0, 0, 281, 2657 282, 31, 283, 0, 0, 0, 0, 207, 0, 0, 2658 0, 0, 0, 0, 0, 270, 0, 0, 0, 0, 2659 0, 0, 0, 0, 0, 0, 0, 0, 284, 34, 2660 0, 0, 0, 0, 285, 0, 38, 39, 286, 0, 2661 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2662 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2664 0, 294, 0, 525, 0, 0, 170, 0, 0, 0, 2665 296, 297, 298, 299, 300, 301, 8, 9, 10, 11, 2666 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2667 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2668 0, 0, 0, 281, 282, 31, 283, 8, 9, 10, 2669 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2670 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2671 0, 0, 284, 34, 0, 0, 31, 0, 285, 0, 2672 38, 39, 286, 0, 0, 287, 288, 289, 290, 41, 2673 42, 0, 291, 292, 0, 0, 0, 0, 0, 0, 2674 293, 0, 0, 0, 34, 0, 0, 0, 0, 37, 2675 0, 336, 337, 40, 0, 294, 0, 599, -3, 0, 2676 41, 42, 0, 0, 296, 600, 298, 299, 300, 301, 2677 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2678 18, 19, 20, 21, 22, 23, 24, 25, 338, 0, 2679 26, 27, 28, 0, 0, 0, 110, 281, 282, 31, 2680 283, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2681 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2682 0, 26, 27, 28, 0, 0, 284, 34, 0, 0, 2683 31, 453, 649, 0, 38, 39, 286, 0, 0, 287, 2684 288, 289, 290, 41, 42, 0, 291, 292, 0, 0, 2685 0, 0, 0, 0, 293, 0, 0, 0, 34, 0, 2686 0, 0, 0, 0, 0, 38, 39, 0, 0, 294, 2687 -35, 766, 0, 0, 0, 0, 0, 0, 296, 297, 2688 298, 299, 300, 301, 8, 9, 10, 11, 12, 13, 2689 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2690 24, 25, 454, 0, 26, 27, 28, 0, 0, 0, 2691 110, 281, 282, 31, 283, 0, 0, 0, 0, 0, 2097 2692 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2098 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2099 353, 25, 26, 27, 0, 0, 1572, 1573, 0, 1156, 2100 30, 452, 0, 0, 1576, 1577, 0, 0, 0, 0, 2101 0, 0, 0, 0, 0, 1168, 351, 351, 0, 351, 2102 351, 222, 0, 0, 0, 0, 0, 0, 33, 0, 2103 0, 0, 0, 0, 0, 37, 38, 0, 0, 72, 2104 0, 0, 0, 353, 353, 0, 353, 353, 223, 8, 2693 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2694 284, 34, 26, 27, 28, 0, 285, 0, 38, 39, 2695 286, 31, 0, 287, 288, 289, 290, 41, 42, 0, 2696 291, 292, 0, 0, 0, 0, 0, 0, 293, 0, 2697 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2698 0, 0, 0, 294, 0, 295, 38, 39, 0, 0, 2699 0, 0, 296, 297, 298, 299, 300, 301, 8, 9, 2700 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2701 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2702 28, 643, 0, 338, 0, 281, 282, 31, 283, 0, 2703 0, 110, 0, 0, 0, 0, 8, 9, 10, 11, 2704 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2705 22, 23, 24, 25, 284, 34, 26, 27, 28, 0, 2706 285, 0, 38, 39, 286, 31, 0, 287, 288, 289, 2707 290, 41, 42, 0, 291, 292, 0, 0, 0, 0, 2708 0, 0, 293, 0, 0, 0, 0, 0, 0, 0, 2709 0, 0, 0, 34, 0, 0, 0, 294, 0, 156, 2710 38, 39, 0, 0, 0, 0, 296, 297, 298, 299, 2711 300, 301, 8, 9, 10, 11, 12, 13, 14, 15, 2712 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2713 0, 0, 26, 27, 28, 643, 0, 338, 0, 281, 2714 282, 31, 283, 0, 0, 634, 0, 0, 0, 0, 2715 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2716 18, 19, 20, 21, 22, 23, 24, 25, 284, 34, 2717 26, 27, 28, 0, 285, 0, 38, 39, 286, 31, 2718 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2719 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2720 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 2721 0, 294, 0, 599, 38, 39, 0, 0, 0, 0, 2722 296, 600, 298, 299, 300, 301, 8, 9, 10, 11, 2723 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2724 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2725 0, 256, 0, 281, 282, 31, 283, 0, 0, 110, 2726 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2727 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2728 24, 25, 284, 34, 26, 27, 28, 0, 285, 0, 2729 38, 39, 286, 31, 0, 287, 288, 289, 290, 41, 2730 42, 0, 291, 292, 0, 0, 0, 0, 0, 0, 2731 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2732 0, 34, 0, 0, 0, 294, 0, 378, 38, 39, 2733 0, 0, 0, 0, 296, 380, 298, 299, 300, 301, 2734 474, 2, 205, 4, 5, 6, 7, 8, 9, 10, 2735 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2736 21, 22, 23, 24, 25, 156, 0, 26, 27, 28, 2737 0, 0, 0, 110, 0, 0, 31, 0, 0, 0, 2738 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2739 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2740 26, 27, 28, 0, 34, 0, 35, 0, 36, 31, 2741 0, 38, 39, 0, 0, 0, 0, 0, 8, 9, 2742 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2743 20, 21, 22, 23, 24, 25, 0, 34, 26, 27, 2744 28, 0, 37, 0, 38, 39, 40, 31, 0, 0, 2745 0, -3, 0, 41, 42, 0, 8, 9, 10, 11, 2746 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2747 22, 23, 24, 25, 0, 34, 26, 27, 28, 43, 2748 37, 156, 38, 39, 40, 31, 0, 0, 0, 45, 2749 0, 41, 42, 0, 8, 9, 10, 11, 12, 13, 2750 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2751 24, 25, 0, 34, 26, 27, 28, 43, 37, 44, 2752 206, 39, 40, 31, 0, 0, 0, 45, 0, 41, 2753 42, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2754 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2755 -294, 34, 26, 27, 28, 43, 37, 269, 336, 337, 2756 40, 31, 0, 0, 0, 208, 0, 41, 42, 0, 2757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2758 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2759 0, 0, 0, 643, 0, 338, 38, 39, 0, 0, 2760 -294, 0, 0, 634, 0, 8, 9, 10, 11, 12, 2761 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2762 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2763 0, 643, 0, 338, 31, 453, 0, 0, 0, 0, 2764 0, 634, 0, 8, 9, 10, 11, 12, 13, 14, 2765 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2766 25, -294, 34, 26, 27, 28, 0, 0, 0, 38, 2767 39, 0, 31, 8, 9, 10, 11, 12, 13, 14, 2768 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2769 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2770 34, 0, 31, 453, 0, 0, 454, 38, 39, 0, 2771 711, -294, 0, 0, 110, 0, 0, 0, 0, 0, 2772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2773 34, 0, 0, 0, 0, 0, 0, 38, 39, 0, 2774 0, 0, 0, 0, 338, 0, 0, 0, 0, 0, 2775 0, 0, 110, 0, 0, 8, 9, 10, 11, 12, 2776 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2777 23, 24, 25, 0, 454, 26, 27, 28, 1109, 0, 2778 0, 0, 110, 0, 31, 453, 8, 9, 10, 11, 2779 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2780 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2781 0, 0, 34, 0, 0, 31, 0, 0, 0, 38, 2782 39, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2783 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2784 24, 25, 0, 34, 26, 27, 28, 0, 0, 0, 2785 206, 39, 0, 31, 0, 0, 454, 0, 0, 0, 2786 1236, 0, 0, 0, 110, 0, 0, 0, 0, 0, 2787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2788 0, 34, 0, 0, 0, 0, 0, 269, 38, 39, 2789 0, 0, 0, 0, 0, 270, 0, 8, 9, 10, 2790 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2791 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2792 0, 0, 0, 0, 0, 256, 31, 0, 0, 0, 2793 0, 0, 0, 634, 0, 8, 9, 10, 11, 12, 2794 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2795 23, 24, 25, 0, 34, 26, 27, 28, 0, 0, 2796 0, 38, 39, 0, 31, 8, 9, 10, 11, 12, 2797 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2798 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2799 0, 0, 34, 0, 31, 0, 0, 0, 338, 38, 2800 39, 0, 0, 0, 0, 0, 634, 0, 0, 0, 2801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2802 0, 0, 34, 0, 0, 0, 0, 0, 0, 206, 2803 39, 0, 0, 0, 0, 0, 454, 0, 0, 0, 2804 0, 0, 0, 0, 110, 0, 0, 8, 9, 10, 2805 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2806 21, 22, 23, 24, 25, 0, 269, 26, 27, 28, 2807 0, 0, 0, 0, 629, 0, 31, 8, 9, 10, 2808 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2809 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2810 0, 0, 0, 0, 34, 0, 31, 0, 0, 0, 2811 0, 38, 39, 0, 0, 8, 9, 10, 11, 12, 2812 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2813 23, 24, 25, 0, 34, 26, 27, 28, 0, 0, 2814 0, 38, 39, 0, 31, 0, 0, 0, 599, 0, 2815 0, 0, 0, 0, 0, 0, 634, 0, 0, 0, 2816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2817 0, 0, 34, 0, 0, 0, 0, 0, 338, 38, 2818 39, 0, 0, 0, 0, 0, 110, 2, 205, 4, 2819 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2820 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2821 25, 0, 0, 26, 27, 28, 44, 0, 0, 0, 2822 0, 0, 31, 0, 110, 0, 0, 0, 0, 0, 2823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2825 34, 0, 35, 0, 36, 0, 0, 38, 39, 281, 2826 282, 0, 283, 1063, 0, 1064, 0, 0, 1065, 1066, 2827 1067, 1068, 1069, 1070, 1071, 1072, 0, 0, 1551, 1073, 2828 0, 0, 0, 1074, 1075, 0, 33, 0, 284, 0, 2829 0, 0, 0, -415, 649, 0, 0, 0, 286, 0, 2830 0, 287, 288, 289, 290, 41, 42, 0, 291, 292, 2831 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 2832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2833 0, 294, 0, 378, 0, 0, 170, 0, 0, 0, 2834 296, 380, 298, 299, 300, 301, 0, 0, 0, 0, 2835 1077, 0, 281, 282, -129, 283, 1063, 0, 1064, 0, 2836 0, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 0, 2837 0, 0, 1073, 0, 0, 0, 1074, 1075, 0, 33, 2838 0, 284, 0, 0, 0, 0, 0, 649, 0, 0, 2839 0, 286, 0, 0, 287, 288, 289, 290, 41, 42, 2840 0, 291, 292, 0, 0, 0, 0, 0, 0, 293, 2841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2842 0, 0, 0, 0, 294, 0, 378, 0, 0, 170, 2843 0, 0, 0, 296, 380, 298, 299, 300, 301, 0, 2844 0, 0, 0, 1077, 0, 0, 0, -129, 2, 205, 2845 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2846 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2847 24, 25, 0, 0, 26, 27, 28, 0, 0, 0, 2848 0, 0, 0, 31, 0, 281, 282, 0, 283, 1063, 2849 0, 1064, 1421, 1422, 1065, 1066, 1067, 1068, 1069, 1070, 2850 1071, 1072, 0, 0, 1551, 1073, 0, 0, 0, 1074, 2851 1075, 34, 33, 35, 284, 36, 0, 0, 38, 39, 2852 649, 0, 0, 0, 286, 0, 0, 287, 288, 289, 2853 290, 41, 42, 0, 291, 292, 0, 0, 0, 0, 2854 1330, 0, 293, 0, 0, 0, 0, 0, 0, 0, 2855 0, 0, 0, 0, 0, 0, 0, 294, 0, 378, 2856 0, 0, 170, 0, 0, 0, 296, 380, 298, 299, 2857 300, 301, 0, 0, 281, 282, 1077, 283, 1063, 0, 2858 1064, 1421, 1422, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 2859 1072, 0, 0, 0, 1073, 0, 0, 0, 1074, 1075, 2860 0, 33, 0, 284, 0, 0, 0, 0, 0, 649, 2861 0, 0, 0, 286, 0, 0, 287, 288, 289, 290, 2862 41, 42, 0, 291, 292, 0, 0, 0, 0, 0, 2863 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, 2864 0, 0, 0, 0, 0, 0, 294, 0, 378, 0, 2865 0, 170, 0, 0, 0, 296, 380, 298, 299, 300, 2866 301, 0, 0, 281, 282, 1077, 283, 1063, 0, 1064, 2867 0, 0, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 2868 0, 0, 0, 1073, 0, 0, 0, 1074, 1075, 0, 2869 33, 0, 284, 0, 0, 0, 0, 0, 649, 0, 2870 0, 0, 286, 0, 0, 287, 288, 289, 290, 41, 2871 42, 0, 291, 292, 0, 0, 0, 0, 0, 0, 2872 293, 281, 282, 0, 283, 0, 0, 0, 0, 0, 2873 0, 0, 0, 0, 0, 294, 0, 378, 0, 0, 2874 170, 0, 0, 0, 296, 380, 298, 299, 300, 301, 2875 284, 0, 0, 0, 1077, 0, 649, 0, 0, 0, 2876 286, 0, 0, 287, 288, 289, 290, 41, 42, 0, 2877 291, 292, 0, 0, 0, 0, 0, 0, 293, 281, 2878 282, 0, 283, 0, 0, 0, 0, 0, 0, 0, 2879 0, 0, 0, 294, 0, 785, 0, 0, 281, 282, 2880 0, 283, 296, 380, 298, 299, 300, 301, 284, 0, 2881 0, 0, 0, 0, 285, 0, 0, 0, 286, 0, 2882 0, 287, 288, 289, 290, 41, 42, 284, 291, 292, 2883 0, 0, 0, 285, 0, 0, 293, 286, 0, 0, 2884 287, 288, 289, 290, 41, 42, 0, 291, 292, 0, 2885 0, 294, 0, 378, 0, 293, 281, 282, 0, 283, 2886 296, 827, 298, 299, 300, 301, 0, 0, 0, 0, 2887 513, 0, 0, 0, 0, 281, 282, 0, 283, 296, 2888 380, 298, 299, 300, 301, 284, 0, 0, 0, 0, 2889 0, 285, 0, 0, 0, 286, 0, 0, 287, 288, 2890 289, 290, 41, 42, 284, 291, 292, 0, 0, 0, 2891 285, 0, 0, 293, 286, 0, 0, 287, 288, 289, 2892 290, 41, 42, 0, 291, 292, 0, 0, 294, 0, 2893 0, 0, 293, 281, 282, 0, 283, 296, 380, 298, 2894 299, 300, 301, 0, 0, 0, 0, 518, 0, 0, 2895 0, 0, 0, 0, 0, 0, 296, 380, 298, 299, 2896 300, 301, 284, 0, 0, 0, 0, 0, 285, 0, 2897 0, 0, 286, 0, 0, 287, 288, 289, 290, 41, 2898 42, 0, 291, 292, 0, 0, 0, 0, 0, 0, 2899 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2900 0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 2901 0, 0, 0, 0, 296, 380, 298, 299, 300, 301, 2902 2, 205, 4, 5, 6, 7, 8, 9, 10, 11, 2903 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2904 22, 23, 24, 25, 0, 0, 0, 0, 0, 0, 2905 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 2906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2908 0, 0, 0, 34, 0, 35, 0, 36, 37, 0, 2909 173, 174, 40, 0, 0, 0, 0, 0, 0, 41, 2910 42, 204, 2, 205, 4, 5, 6, 7, 8, 9, 2911 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2912 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2913 28, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2916 0, 0, 0, 0, 0, 34, 0, 35, 0, 36, 2917 0, 0, 206, 39, 474, 2, 205, 4, 5, 6, 2918 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2919 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2920 0, 26, 27, 28, 0, 0, 0, 0, 0, 0, 2921 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2923 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 2924 35, 0, 36, 0, 0, 38, 39, 2, 205, 4, 2925 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2926 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2927 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2928 0, 0, 31, 0, 8, 9, 10, 11, 12, 13, 2929 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2930 24, 25, 0, 0, 26, 27, 28, 492, 493, 494, 2931 34, 0, 35, 31, 36, 0, 0, 206, 39, 0, 2932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2934 0, 34, 0, 0, 0, 0, 0, 0, 38, 39 2935 }; 2936 2937 #define yypact_value_is_default(yystate) \ 2938 ((yystate) == (-1332)) 2939 2940 #define yytable_value_is_error(yytable_value) \ 2941 YYID (0) 2942 2943 static const yytype_int16 yycheck[] = 2944 { 2945 0, 1, 0, 203, 184, 184, 520, 698, 238, 43, 2946 115, 184, 1, 698, 43, 43, 543, 185, 629, 0, 2947 104, 218, 184, 280, 185, 456, 455, 698, 348, 29, 2948 30, 184, 32, 184, 32, 1062, 184, 902, 167, 168, 2949 609, 348, 1, 43, 656, 45, 278, 45, 1043, 611, 2950 1006, 32, 1042, 1043, 32, 55, 497, 0, 759, 611, 2951 28, 61, 612, 61, 64, 609, 64, 67, 618, 67, 2952 154, 609, 499, 579, 1340, 718, 503, 999, 67, 609, 2953 609, 81, 82, 780, 264, 264, 777, 51, 186, 32, 2954 1421, 264, 777, 609, 82, 200, 1425, 265, 344, 1055, 2955 529, 39, 264, 902, 265, 105, 777, 0, 108, 39, 2956 78, 264, 417, 264, 609, 115, 264, 0, 43, 72, 2957 43, 45, 363, 643, 644, 645, 367, 489, 44, 45, 2958 83, 84, 437, 64, 0, 43, 82, 39, 227, 32, 2959 445, 39, 662, 44, 45, 109, 146, 95, 146, 32, 2960 184, 0, 1, 39, 154, 184, 184, 246, 111, 159, 2961 63, 159, 260, 261, 1495, 111, 32, 44, 45, 1477, 2962 109, 64, 613, 111, 85, 495, 617, 1443, 109, 109, 2963 30, 111, 130, 32, 184, 185, 110, 185, 4, 5, 2964 6, 7, 8, 9, 1523, 109, 39, 638, 114, 1528, 2965 200, 642, 113, 255, 1512, 39, 1514, 109, 208, 111, 2966 208, 294, 409, 114, 744, 64, 736, 217, 67, 1548, 2967 220, 145, 220, 109, 902, 111, 1555, 227, 744, 132, 2968 264, 81, 82, 96, 82, 264, 264, 405, 115, 11, 2969 644, 645, 242, 489, 405, 82, 246, 109, 1243, 744, 2970 250, 251, 250, 69, 511, 71, 112, 341, 662, 184, 2971 123, 184, 110, 1062, 264, 265, 109, 265, 111, 250, 2972 839, 271, 250, 0, 1, 109, 184, 111, 278, 1306, 2973 117, 643, 644, 645, 208, 928, 370, 455, 0, 851, 2974 395, 841, 251, 293, 455, 839, 114, 107, 1293, 851, 2975 662, 839, 1292, 1293, 611, 32, 3, 250, 828, 839, 2976 839, 82, 1009, 819, 238, 110, 132, 116, 423, 487, 2977 32, 131, 117, 839, 429, 116, 487, 220, 328, 116, 2978 328, 43, 736, 45, 293, 697, 82, 1259, 109, 951, 2979 67, 132, 425, 426, 839, 132, 270, 347, 348, 61, 2980 425, 426, 64, 116, 600, 67, 597, 250, 699, 55, 2981 90, 91, 1227, 109, 364, 417, 72, 250, 368, 132, 2982 1071, 220, 255, 297, 736, 1074, 1075, 83, 84, 379, 2983 721, 109, 110, 629, 250, 437, 691, 1065, 634, 255, 2984 959, 96, 242, 445, 109, 395, 126, 127, 960, 640, 2985 110, 250, 72, 109, 3, 405, 116, 405, 82, 105, 2986 1021, 773, 108, 83, 84, 959, 131, 116, 123, 676, 2987 344, 959, 1417, 423, 828, 109, 501, 1417, 1227, 429, 2988 513, 431, 873, 68, 146, 518, 110, 72, 521, 1466, 2989 75, 1528, 77, 117, 1143, 520, 1473, 159, 532, 84, 2990 1528, 697, 72, 1409, 1410, 455, 349, 121, 122, 72, 2991 460, 1548, 132, 83, 84, 109, 828, 111, 1555, 116, 2992 83, 84, 184, 185, 474, 119, 110, 1555, 116, 479, 2993 1030, 1031, 699, 117, 112, 132, 0, 487, 116, 487, 2994 1004, 491, 575, 491, 132, 495, 208, 131, 498, 1526, 2995 500, 425, 426, 0, 721, 762, 119, 1306, 220, 938, 2996 491, 586, 132, 88, 89, 474, 947, 946, 698, 698, 2997 520, 217, 131, 250, 965, 698, 758, 773, 657, 379, 2998 1142, 851, 700, 80, 417, 109, 698, 537, 250, 700, 2999 540, 968, 542, 543, 851, 698, 72, 698, 491, 1227, 3000 698, 417, 264, 116, 437, 1117, 109, 83, 84, 664, 3001 110, 520, 445, 992, 111, 109, 113, 117, 666, 132, 3002 117, 437, 115, 116, 110, 271, 211, 501, 537, 445, 3003 116, 540, 278, 542, 543, 111, 109, 480, 131, 830, 3004 590, 116, 3, 834, 109, 812, 520, 597, 491, 10, 3005 11, 12, 13, 14, 109, 1306, 489, 132, 491, 609, 3006 460, 611, 696, 116, 53, 72, 328, 598, 116, 4, 3007 5, 6, 7, 8, 9, 491, 83, 84, 39, 132, 3008 630, 590, 110, 116, 132, 119, 348, 978, 116, 691, 3009 124, 125, 491, 112, 964, 1323, 646, 116, 498, 132, 3010 500, 347, 652, 116, 111, 110, 67, 96, 0, 1, 3011 1498, 661, 586, 663, 664, 665, 1504, 1466, 364, 132, 3012 80, 1102, 368, 890, 1473, 129, 600, 131, 116, 116, 3013 1042, 733, 1383, 924, 69, 72, 71, 1525, 772, 110, 3014 32, 888, 1530, 405, 132, 132, 83, 84, 698, 1377, 3015 700, 111, 1380, 113, 663, 629, 665, 117, 112, 109, 3016 634, 111, 909, 713, 116, 110, 351, 112, 353, 719, 3017 110, 116, 64, 723, 111, 67, 116, 1526, 110, 110, 3018 132, 731, 45, 110, 116, 116, 131, 132, 631, 109, 3019 970, 111, 110, 455, 744, 745, 112, 1425, 61, 119, 3020 116, 64, 1430, 192, 67, 112, 72, 110, 758, 116, 3021 76, 978, 72, 116, 491, 894, 76, 83, 84, 1470, 3022 938, 1472, 731, 83, 84, 1021, 215, 938, 946, 491, 3023 112, 110, 1460, 495, 116, 946, 225, 10, 11, 12, 3024 13, 14, 1009, 109, 1135, 1322, 92, 93, 110, 109, 3025 1162, 111, 652, 119, 116, 110, 441, 72, 691, 119, 3026 109, 116, 111, 155, 697, 109, 39, 111, 83, 84, 3027 10, 11, 12, 13, 14, 691, 1527, 109, 109, 111, 3028 513, 724, 515, 146, 1034, 518, 1133, 119, 521, 839, 3029 1137, 1532, 1059, 110, 67, 738, 159, 1532, 109, 39, 3030 733, 851, 1193, 1194, 835, 294, 115, 116, 110, 110, 3031 110, 1532, 1103, 713, 116, 116, 116, 733, 1546, 719, 3032 116, 117, 185, 723, 1552, 115, 1133, 67, 220, 109, 3033 1137, 1138, 109, 110, 111, 1563, 109, 132, 111, 1567, 3034 773, 703, 110, 705, 894, 208, 119, 609, 116, 611, 3035 72, 901, 902, 110, 76, 110, 111, 220, 250, 116, 3036 64, 83, 84, 110, 1, 109, 1162, 111, 1135, 116, 3037 72, 902, 74, 75, 924, 85, 86, 87, 1057, 109, 3038 1292, 83, 84, 72, 630, 74, 75, 109, 938, 832, 3039 58, 59, 110, 902, 83, 84, 946, 119, 116, 109, 3040 646, 111, 109, 113, 114, 110, 112, 109, 45, 132, 3041 110, 116, 114, 110, 964, 661, 116, 115, 116, 116, 3042 109, 114, 109, 680, 111, 114, 1193, 1194, 114, 72, 3043 969, 74, 75, 76, 984, 109, 698, 111, 700, 114, 3044 83, 84, 109, 993, 111, 109, 1253, 1243, 109, 110, 3045 111, 1001, 132, 442, 1004, 109, 1006, 111, 82, 902, 3046 72, 132, 74, 75, 109, 328, 109, 104, 111, 902, 3047 1125, 83, 84, 110, 117, 984, 119, 72, 109, 74, 3048 75, 82, 744, 745, 116, 117, 902, 476, 83, 84, 3049 112, 109, 1001, 111, 894, 1004, 970, 1006, 109, 110, 3050 111, 901, 114, 902, 120, 1055, 116, 117, 145, 109, 3051 110, 111, 758, 1404, 128, 1065, 111, 154, 1068, 1069, 3052 1070, 58, 59, 60, 513, 1265, 1266, 1267, 1507, 518, 3053 1421, 1062, 521, 72, 1341, 74, 75, 76, 1345, 129, 3054 432, 94, 405, 1093, 83, 84, 1055, 1021, 44, 45, 3055 10, 11, 12, 13, 14, 131, 1065, 111, 815, 1068, 3056 1069, 1070, 564, 565, 566, 567, 109, 204, 825, 109, 3057 969, 208, 110, 1206, 1207, 1125, 1209, 839, 1557, 39, 3058 112, 1024, 1215, 840, 72, 1218, 74, 75, 1222, 851, 3059 560, 561, 112, 993, 110, 83, 84, 562, 563, 491, 3060 110, 238, 239, 1494, 1495, 110, 72, 67, 74, 75, 3061 76, 110, 72, 110, 74, 75, 76, 83, 84, 1062, 3062 568, 569, 109, 83, 84, 902, 112, 111, 131, 1062, 3063 112, 114, 109, 270, 114, 116, 273, 1404, 114, 112, 3064 1447, 533, 110, 109, 45, 111, 1062, 110, 112, 109, 3065 1200, 111, 117, 119, 1421, 112, 112, 294, 112, 119, 3066 297, 29, 117, 1062, 117, 116, 1205, 110, 110, 114, 3067 117, 112, 1222, 110, 132, 115, 938, 1227, 3, 115, 3068 115, 109, 116, 110, 946, 10, 11, 12, 13, 14, 3069 679, 110, 969, 1093, 116, 110, 1227, 117, 110, 688, 3070 110, 110, 964, 692, 341, 116, 598, 344, 1247, 110, 3071 110, 110, 3, 110, 39, 1265, 1266, 1267, 1227, 10, 3072 11, 12, 13, 14, 110, 110, 363, 1494, 1495, 1162, 3073 367, 110, 110, 370, 10, 11, 12, 13, 14, 110, 3074 110, 110, 67, 110, 110, 1400, 1379, 110, 39, 29, 3075 115, 643, 644, 645, 131, 112, 1265, 1266, 1267, 110, 3076 110, 1204, 1542, 39, 110, 110, 114, 116, 112, 112, 3077 662, 110, 1322, 1323, 110, 1306, 67, 110, 116, 110, 3078 117, 116, 1039, 1040, 1227, 1062, 116, 116, 425, 426, 3079 112, 67, 116, 110, 1227, 110, 112, 85, 86, 87, 3080 1200, 1340, 1532, 1532, 109, 1204, 1205, 208, 109, 1532, 3081 1243, 1227, 109, 1322, 1323, 1533, 453, 109, 112, 456, 3082 1532, 109, 1533, 111, 109, 113, 114, 1377, 1227, 1532, 3083 1380, 1532, 132, 109, 1532, 111, 117, 474, 239, 1557, 3084 1097, 1098, 115, 119, 736, 110, 1557, 110, 1247, 1399, 3085 1400, 115, 1507, 110, 129, 115, 114, 112, 1301, 1409, 3086 1410, 132, 499, 1306, 501, 110, 503, 116, 1377, 270, 3087 112, 1380, 116, 1306, 112, 1425, 513, 110, 515, 110, 3088 1430, 518, 110, 520, 521, 112, 471, 112, 112, 110, 3089 1306, 47, 112, 294, 112, 532, 297, 112, 1448, 115, 3090 1409, 1410, 1301, 132, 1443, 110, 132, 1306, 115, 132, 3091 1460, 117, 110, 132, 115, 132, 1425, 112, 112, 112, 3092 112, 1430, 72, 112, 74, 75, 76, 112, 1205, 112, 3093 112, 110, 110, 83, 84, 1466, 828, 926, 112, 1448, 3094 112, 1340, 1473, 835, 0, 1, 109, 109, 1532, 586, 3095 1227, 1460, 109, 1532, 1532, 60, 110, 1507, 1508, 109, 3096 597, 111, 55, 600, 110, 114, 132, 1517, 112, 119, 3097 1247, 112, 117, 1523, 110, 112, 32, 110, 1528, 96, 3098 96, 109, 1532, 1533, 109, 1533, 115, 110, 112, 45, 3099 132, 110, 629, 42, 116, 1526, 1546, 634, 1548, 1508, 3100 110, 110, 1552, 640, 117, 1555, 132, 1557, 1517, 1557, 3101 902, 67, 105, 1563, 1523, 108, 1273, 1567, 132, 1528, 3102 110, 110, 96, 1466, 1281, 1282, 1283, 96, 132, 1306, 3103 1473, 110, 110, 1466, 132, 117, 132, 1546, 110, 1548, 3104 1473, 112, 110, 1552, 1443, 115, 1555, 132, 104, 112, 3105 1466, 109, 453, 115, 1563, 456, 132, 1473, 1567, 696, 3106 115, 154, 110, 1340, 64, 110, 132, 1466, 1542, 110, 3107 110, 1077, 1329, 571, 1473, 570, 1227, 969, 572, 64, 3108 64, 718, 573, 1526, 1073, 574, 1495, 1385, 1567, 74, 3109 146, 1316, 1138, 1526, 986, 680, 1473, 81, 154, 155, 3110 1345, 1093, 705, 946, 4, 5, 6, 7, 8, 9, 3111 1526, 748, 513, 453, 515, 471, 116, 518, 723, 453, 3112 521, 948, 993, 590, 217, 894, 966, 1526, 658, 185, 3113 1247, 116, 116, 33, 578, 772, 491, 758, 10, 11, 3114 12, 13, 14, -1, 200, 578, 748, 203, 204, 578, 3115 1042, 1043, 208, 1399, -1, -1, -1, -1, -1, 159, 3116 -1, -1, -1, -1, -1, -1, 1443, 39, -1, 69, 3117 1062, 71, -1, 229, 159, 159, -1, 233, 271, 235, 3118 72, -1, 74, 75, 76, 278, -1, -1, 244, 1466, 3119 -1, 83, 84, 830, 250, 67, 1473, 834, -1, 255, 3120 72, -1, 74, 75, 76, -1, -1, -1, -1, 265, 3121 -1, 83, 84, -1, -1, -1, -1, 273, 283, -1, 3122 220, -1, -1, -1, -1, -1, 26, 27, 28, -1, 3123 815, 296, 297, -1, -1, 220, 220, 109, -1, 111, 3124 825, -1, -1, 308, -1, -1, -1, 119, -1, 1526, 3125 -1, -1, -1, -1, 347, 840, -1, -1, 258, -1, 3126 -1, -1, 262, 10, 11, 12, 13, 14, -1, -1, 3127 1532, 364, -1, 258, 258, 368, -1, 262, 262, 344, 3128 -1, -1, -1, -1, -1, 341, -1, 924, 344, -1, 3129 -1, 928, 39, 278, 350, -1, -1, 97, -1, 99, 3130 -1, -1, -1, -1, -1, -1, -1, 363, -1, -1, 3131 947, 367, 1204, 1205, 370, 380, -1, 718, -1, -1, 3132 67, -1, -1, -1, 680, 72, 1315, 74, 75, 76, 3133 -1, 968, 969, 970, -1, 1227, 83, 84, 431, -1, 3134 72, -1, 74, 75, 76, -1, -1, -1, -1, 349, 3135 -1, 83, 84, -1, -1, 1247, 72, -1, 74, 75, 3136 76, 417, 109, -1, 349, 349, -1, 83, 84, -1, 3137 -1, 72, 119, 74, 75, 76, 432, 109, -1, 111, 3138 180, 437, 83, 84, 1021, -1, -1, 119, -1, 445, 3139 190, 191, -1, 109, -1, 195, -1, 197, 198, -1, 3140 1292, 1293, -1, 119, -1, -1, -1, -1, 109, 1301, 3141 -1, -1, -1, -1, 1306, 471, -1, -1, 474, -1, 3142 51, -1, 53, -1, -1, 56, 57, 58, -1, 60, 3143 430, -1, -1, 489, -1, 491, -1, -1, -1, -1, 3144 -1, -1, -1, 499, 75, 430, 430, 503, 1340, 10, 3145 11, 12, 13, 14, 1039, 1040, 87, 88, -1, 815, 3146 -1, -1, 447, -1, -1, 1102, 1103, -1, -1, 825, 3147 72, -1, 74, 75, 76, -1, 532, 533, 39, -1, 3148 480, 83, 84, -1, 840, 1474, -1, 1476, -1, -1, 3149 -1, -1, 557, 558, 559, 480, 480, 72, -1, 74, 3150 75, 76, -1, -1, 597, -1, 67, 109, 83, 84, 3151 -1, -1, 1097, 1098, -1, -1, -1, 119, -1, -1, 3152 -1, -1, 1511, 579, 1513, 1417, -1, 928, -1, -1, 3153 -1, -1, -1, -1, 109, 600, -1, 630, -1, -1, 3154 -1, 597, 598, -1, 600, -1, 947, -1, 109, -1, 3155 111, 1443, -1, 646, -1, 611, -1, -1, 119, -1, 3156 -1, -1, -1, -1, -1, -1, -1, 1556, 661, 1558, 3157 -1, -1, -1, 629, 1466, -1, -1, -1, 634, -1, 3158 -1, 1473, 1571, 1572, 640, 1222, -1, 643, 644, 645, 3159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3160 0, -1, -1, 603, -1, -1, 662, -1, -1, -1, 3161 1247, -1, -1, -1, -1, -1, -1, -1, 603, 603, 3162 -1, -1, -1, -1, 680, -1, -1, -1, -1, -1, 3163 -1, 631, 32, -1, 1526, 691, 636, -1, -1, -1, 3164 696, 697, -1, -1, 700, -1, 631, 631, -1, -1, 3165 -1, 636, 636, -1, -1, -1, 1241, -1, -1, -1, 3166 -1, -1, -1, -1, -1, 758, -1, 67, -1, 734, 3167 -1, -1, -1, -1, -1, -1, -1, 733, -1, -1, 3168 736, -1, -1, 1039, 1040, -1, -1, -1, 1273, 745, 3169 -1, -1, 748, -1, -1, -1, 1281, 1282, 1283, -1, 3170 -1, 1102, -1, 1340, -1, -1, -1, -1, -1, -1, 3171 -1, -1, -1, 344, 345, 780, 772, 773, -1, -1, 3172 -1, -1, 778, -1, 724, 356, 357, -1, -1, 26, 3173 27, 28, -1, -1, -1, -1, -1, -1, 738, 724, 3174 724, 1097, 1098, -1, 1329, -1, -1, -1, -1, -1, 3175 -1, -1, -1, 738, 738, 155, -1, -1, -1, 815, 3176 -1, -1, 827, -1, -1, -1, -1, -1, -1, 825, 3177 -1, -1, 828, 758, 830, -1, -1, 833, 834, 835, 3178 -1, -1, 582, 583, 840, -1, -1, -1, -1, -1, 3179 -1, -1, -1, -1, 850, -1, -1, -1, -1, -1, 3180 97, -1, 99, -1, -1, -1, 1443, 10, 11, 12, 3181 13, 14, 612, -1, -1, 615, 616, -1, 618, -1, 3182 620, 621, -1, -1, -1, 625, 626, 124, -1, 229, 3183 -1, 924, 832, -1, -1, -1, 39, -1, 1475, -1, 3184 1477, -1, -1, -1, -1, -1, 902, 832, 832, -1, 3185 250, -1, -1, -1, -1, 255, 188, -1, -1, -1, 3186 -1, -1, -1, 195, 67, -1, -1, -1, 924, 72, 3187 -1, 74, 75, 76, -1, 1512, -1, 1514, -1, -1, 3188 83, 84, -1, 180, -1, 1241, -1, -1, -1, -1, 3189 -1, 188, -1, 190, 191, -1, -1, -1, 195, -1, 3190 197, 198, -1, -1, 960, 1542, 109, -1, 111, 709, 3191 710, -1, 968, 969, -1, 715, 119, 1273, -1, 10, 3192 11, 12, 13, 14, -1, 1281, 1282, 1283, -1, -1, 3193 986, -1, -1, -1, -1, 267, -1, -1, -1, 10, 3194 11, 12, 13, 14, -1, -1, -1, -1, 39, -1, 3195 350, -1, -1, -1, -1, -1, 1021, -1, -1, -1, 3196 -1, -1, -1, -1, -1, 1021, -1, -1, 39, -1, 3197 267, -1, -1, 1329, -1, -1, 67, -1, 1034, -1, 3198 -1, 72, -1, 1039, 1040, 76, 1042, 1043, -1, -1, 3199 -1, 323, 83, 84, -1, -1, 67, 1062, -1, 331, 3200 -1, 72, 334, 74, 75, 76, 1062, -1, -1, -1, 3201 -1, -1, 83, 84, -1, -1, -1, 417, 109, -1, 3202 -1, 0, -1, -1, 1024, -1, -1, -1, 119, -1, 3203 -1, -1, 432, -1, -1, -1, -1, 437, 109, 1024, 3204 1024, 1097, 1098, -1, -1, 445, -1, 1103, 119, -1, 3205 -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, 3206 -1, -1, -1, -1, -1, 397, -1, -1, -1, 401, 3207 -1, 471, -1, -1, 1475, -1, 1477, -1, 97, 98, 3208 99, 100, 101, 102, 103, 104, 105, 106, 67, 489, 3209 -1, 491, -1, -1, 725, -1, 727, -1, -1, -1, 3210 -1, -1, -1, 734, 735, -1, 1162, -1, 739, -1, 3211 -1, 1512, 131, 1514, 1179, 10, 11, 12, 13, 14, 3212 751, -1, -1, -1, -1, 756, -1, -1, -1, 1222, 3213 -1, -1, -1, 533, -1, -1, -1, -1, -1, -1, 3214 -1, -1, -1, -1, 39, -1, -1, -1, -1, 1205, 3215 -1, 782, -1, -1, 486, -1, -1, -1, -1, -1, 3216 -1, -1, -1, -1, -1, -1, 1222, -1, -1, -1, 3217 -1, 1227, 67, -1, -1, -1, 155, 72, -1, -1, 3218 -1, 76, -1, -1, -1, 1241, -1, 1243, 83, 84, 3219 -1, 1247, -1, -1, -1, -1, 827, -1, 598, -1, 3220 -1, -1, -1, -1, 1204, -1, -1, -1, -1, -1, 3221 -1, -1, -1, -1, 109, -1, -1, 1273, -1, 1204, 3222 1204, -1, -1, -1, 119, 1281, 1282, 1283, -1, -1, 3223 -1, -1, -1, -1, -1, -1, 1292, 1293, -1, -1, 3224 -1, -1, -1, 643, 644, 645, 578, 579, -1, -1, 3225 1306, -1, -1, 884, 885, 886, 887, -1, 889, -1, 3226 -1, -1, 662, -1, -1, -1, -1, -1, -1, -1, 3227 -1, 250, -1, 1329, 905, -1, 255, -1, -1, -1, 3228 680, -1, -1, -1, 1340, 582, 583, -1, 919, -1, 3229 -1, 691, -1, -1, -1, -1, -1, 697, -1, 1099, 3230 -1, 1301, -1, -1, -1, -1, 1399, -1, -1, -1, 3231 -1, -1, -1, -1, -1, 612, 1301, 1301, 615, 616, 3232 -1, 618, -1, 620, 621, -1, -1, 958, 625, 626, 3233 -1, -1, -1, 733, -1, 667, 736, -1, -1, 671, 3234 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3235 20, 21, 22, 23, 24, 25, 26, 27, 28, -1, 3236 -1, 1417, -1, -1, -1, -1, -1, 998, -1, 39, 3237 -1, 350, 704, 773, 1005, -1, -1, -1, -1, 1010, 3238 -1, -1, -1, -1, 1015, -1, 1017, 1443, -1, -1, 3239 1021, 1022, 1023, -1, -1, 1026, -1, 67, -1, -1, 3240 -1, -1, -1, -1, 1035, -1, -1, 704, 78, -1, 3241 1466, -1, 709, 710, -1, 815, -1, 1473, 715, -1, 3242 -1, -1, 1053, 1054, 1224, 825, -1, -1, 828, -1, 3243 -1, -1, -1, 833, -1, 835, -1, -1, 417, -1, 3244 840, -1, -1, -1, -1, -1, -1, -1, -1, 1080, 3245 -1, -1, 1083, 432, -1, -1, -1, -1, 437, -1, 3246 -1, -1, -1, -1, -1, -1, 445, -1, -1, -1, 3247 1526, -1, -1, -1, -1, -1, -1, 1533, -1, -1, 3248 -1, -1, -1, -1, -1, -1, -1, 819, -1, -1, 3249 -1, 1122, 471, -1, -1, -1, -1, 1128, 1129, -1, 3250 -1, -1, 902, -1, -1, -1, -1, -1, -1, 1140, 3251 489, -1, 491, 0, 1145, -1, -1, 1148, -1, 1150, 3252 -1, -1, 1153, -1, -1, -1, -1, -1, -1, -1, 3253 -1, -1, -1, -1, -1, 1166, -1, -1, -1, -1, 3254 -1, -1, -1, -1, -1, 32, 37, 38, 1179, 40, 3255 1181, 1182, 1183, 1184, 533, -1, -1, -1, -1, -1, 3256 -1, -1, -1, -1, -1, -1, 1197, -1, 1199, -1, 3257 -1, -1, 1203, -1, -1, 66, -1, -1, -1, -1, 3258 67, 72, -1, 74, 75, 76, 986, -1, 79, 80, 3259 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3260 932, 1232, 1233, 94, -1, -1, -1, -1, -1, -1, 3261 -1, -1, -1, -1, -1, -1, -1, -1, 109, 598, 3262 111, -1, 113, 114, -1, -1, -1, 118, 119, 120, 3263 121, 122, 123, -1, -1, -1, -1, -1, -1, 1039, 3264 1040, -1, 1042, 1043, -1, -1, -1, -1, -1, -1, 3265 -1, -1, -1, 1284, 1285, -1, -1, -1, -1, -1, 3266 -1, -1, 1062, 1294, 643, 644, 645, -1, 155, -1, 3267 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1011, 3268 -1, -1, -1, 662, -1, -1, -1, -1, -1, -1, 3269 -1, -1, -1, -1, -1, 1027, -1, 1097, 1098, -1, 3270 -1, 680, -1, -1, -1, -1, -1, -1, -1, -1, 3271 -1, -1, 691, -1, -1, 1346, -1, -1, 697, -1, 3272 -1, -1, -1, -1, -1, -1, -1, 1358, -1, 1360, 3273 1361, 1362, 37, 38, -1, 40, -1, -1, -1, -1, 3274 -1, 1372, -1, -1, -1, -1, -1, -1, -1, -1, 3275 1381, -1, -1, -1, 733, -1, -1, 736, -1, -1, 3276 -1, 66, 1162, 250, -1, -1, 1397, 72, 255, -1, 3277 -1, 76, 1104, -1, 79, 80, 81, 82, 83, 84, 3278 -1, 86, 87, -1, -1, -1, -1, -1, 0, 94, 3279 -1, -1, -1, -1, 773, -1, -1, -1, -1, -1, 3280 -1, -1, 1099, -1, 109, 1205, 111, -1, -1, 114, 3281 -1, -1, -1, 118, 119, 120, 121, 122, 123, -1, 3282 32, -1, 1453, 1454, -1, -1, -1, 1227, -1, -1, 3283 -1, -1, -1, -1, -1, 1466, 815, -1, -1, -1, 3284 -1, 1241, 1473, 1243, -1, -1, 825, -1, -1, 828, 3285 -1, -1, -1, -1, 833, 67, 835, -1, -1, -1, 3286 -1, 840, -1, 350, -1, -1, -1, -1, -1, -1, 3287 -1, -1, -1, 1273, -1, 1506, -1, -1, -1, 1510, 3288 -1, 1281, 1282, 1283, -1, -1, -1, -1, -1, -1, 3289 -1, -1, 1292, 1293, -1, -1, -1, -1, -1, -1, 3290 -1, -1, -1, -1, -1, -1, 1306, -1, 1539, -1, 3291 1541, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3292 -1, -1, -1, 902, -1, -1, -1, 1224, -1, 1329, 3293 417, -1, -1, -1, -1, -1, -1, -1, 1569, 1570, 3294 -1, -1, -1, 155, -1, 432, 1577, 1578, -1, -1, 3295 437, -1, -1, -1, -1, -1, 0, -1, 445, 3, 3296 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3297 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3298 24, 25, 26, 27, 471, -1, 30, 31, 32, 33, 3299 -1, -1, 36, -1, -1, 39, 40, -1, -1, -1, 3300 -1, -1, 489, -1, 491, -1, -1, 986, -1, -1, 3301 -1, -1, -1, -1, -1, -1, -1, 1417, -1, -1, 3302 64, -1, -1, 67, -1, 69, -1, 71, 72, -1, 3303 74, 75, 76, -1, -1, -1, -1, -1, 250, 83, 3304 84, -1, -1, 255, -1, -1, 533, -1, 7, -1, 3305 -1, 10, 11, 12, 13, 14, -1, -1, -1, -1, 3306 1039, 1040, -1, 1042, 1043, 109, 1466, 111, -1, -1, 3307 -1, -1, -1, 1473, -1, 119, -1, -1, 37, 38, 3308 39, 40, -1, 1062, -1, 10, 11, 12, 13, 14, 3309 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3310 25, 26, 27, 28, -1, -1, -1, 66, 67, -1, 3311 -1, 598, -1, 72, 39, -1, -1, 76, 1097, 1098, 3312 79, 80, 81, 82, 83, 84, 1526, 86, 87, -1, 3313 -1, -1, -1, -1, -1, 94, -1, -1, 350, -1, 3314 -1, -1, 67, -1, -1, -1, -1, -1, -1, -1, 3315 109, -1, 111, 78, -1, -1, 643, 644, 645, 118, 3316 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, 3317 -1, -1, -1, -1, -1, 662, -1, -1, -1, -1, 3318 -1, -1, -1, 1162, -1, -1, -1, -1, -1, -1, 3319 -1, -1, -1, 680, -1, -1, -1, -1, -1, -1, 3320 -1, -1, -1, -1, 691, 417, -1, -1, -1, 45, 3321 697, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3322 432, -1, -1, -1, -1, 437, 1205, -1, 64, -1, 3323 -1, -1, -1, 445, -1, -1, -1, -1, -1, -1, 3324 -1, -1, -1, -1, -1, -1, 733, -1, 1227, 736, 3325 -1, -1, -1, -1, -1, -1, -1, -1, -1, 471, 3326 -1, -1, 1241, -1, 1243, -1, -1, -1, -1, -1, 3327 -1, -1, -1, -1, 110, -1, -1, 489, -1, 491, 3328 116, -1, -1, -1, -1, -1, 773, -1, -1, -1, 3329 -1, -1, -1, -1, 1273, -1, -1, -1, -1, -1, 3330 -1, -1, 1281, 1282, 1283, -1, -1, -1, -1, 145, 3331 -1, -1, -1, 1292, 1293, -1, -1, -1, -1, 155, 3332 -1, 533, -1, 159, -1, -1, -1, 1306, 815, -1, 3333 -1, -1, -1, -1, -1, -1, -1, -1, 825, -1, 3334 -1, 828, -1, -1, -1, -1, 833, -1, 835, -1, 3335 1329, -1, -1, 840, 10, 11, 12, 13, 14, 15, 3336 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3337 26, 27, 208, -1, 30, 31, 32, -1, -1, -1, 3338 -1, -1, -1, 39, 220, -1, 598, -1, -1, -1, 3339 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3340 -1, -1, 238, 239, -1, -1, -1, -1, -1, -1, 3341 -1, 67, -1, -1, -1, 902, -1, -1, 74, 75, 3342 -1, -1, -1, -1, -1, -1, 262, -1, -1, -1, 3343 -1, 643, 644, 645, 270, -1, -1, -1, 1417, -1, 3344 -1, -1, -1, -1, 281, -1, 283, 284, -1, -1, 3345 662, -1, -1, -1, 291, 292, -1, -1, 294, 296, 3346 297, 297, -1, 119, -1, -1, -1, -1, 680, -1, 3347 -1, 308, -1, -1, -1, -1, -1, -1, -1, 691, 3348 -1, -1, -1, -1, -1, 697, -1, 1466, 37, 38, 3349 -1, 40, -1, -1, 1473, -1, -1, -1, -1, 986, 3350 -1, -1, -1, -1, -1, -1, -1, 344, 344, -1, 3351 -1, -1, -1, 349, -1, -1, -1, 66, -1, -1, 3352 -1, 733, -1, 72, 736, -1, -1, 76, -1, -1, 3353 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 3354 -1, -1, -1, 380, -1, 94, -1, 1526, -1, -1, 3355 -1, -1, 1039, 1040, -1, 1042, 1043, -1, -1, -1, 3356 109, 773, 111, -1, -1, -1, -1, -1, 117, 118, 3357 119, 120, 121, 122, 123, 1062, -1, -1, -1, -1, 3358 -1, -1, -1, -1, -1, 64, -1, -1, -1, 425, 3359 426, -1, -1, -1, -1, 74, 432, 76, -1, 78, 3360 -1, -1, -1, 815, -1, -1, 85, -1, -1, -1, 3361 1097, 1098, -1, 825, -1, -1, 828, 453, -1, -1, 3362 456, 833, -1, 835, -1, -1, -1, -1, 840, -1, 3363 -1, -1, -1, -1, -1, -1, -1, 116, -1, 118, 3364 119, 120, -1, -1, -1, -1, -1, -1, -1, -1, 3365 -1, -1, -1, 489, -1, -1, -1, -1, -1, -1, 3366 -1, -1, -1, -1, -1, 501, -1, -1, -1, -1, 3367 -1, -1, -1, -1, -1, 1162, -1, 513, -1, 515, 3368 159, -1, 518, -1, 520, 521, -1, -1, -1, -1, 3369 902, -1, -1, -1, -1, -1, -1, 533, -1, -1, 3370 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3371 -1, -1, -1, -1, -1, -1, -1, -1, 1205, -1, 3372 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 3373 567, 568, 569, 570, 571, 572, 573, 574, -1, -1, 3374 1227, 220, -1, 222, 223, 224, -1, -1, -1, -1, 3375 586, -1, -1, -1, 1241, -1, 1243, -1, -1, -1, 3376 -1, -1, 598, 600, 600, -1, -1, 603, -1, -1, 3377 -1, -1, -1, -1, 986, -1, -1, -1, -1, 258, 3378 -1, -1, -1, 262, -1, -1, 1273, -1, -1, -1, 3379 -1, -1, -1, 629, 1281, 1282, 1283, -1, 634, 278, 3380 -1, -1, -1, -1, -1, 1292, 1293, 643, 644, 645, 3381 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1306, 3382 -1, -1, -1, -1, -1, -1, 662, 1039, 1040, -1, 3383 1042, 1043, -1, -1, -1, -1, -1, -1, -1, -1, 3384 -1, -1, 1329, -1, -1, -1, -1, -1, -1, 328, 3385 1062, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3386 -1, 697, 699, -1, -1, -1, -1, -1, -1, -1, 3387 349, -1, -1, -1, -1, 354, 355, 44, -1, -1, 3388 -1, -1, 718, 362, 721, 1097, 1098, -1, -1, -1, 3389 -1, -1, -1, -1, -1, -1, -1, 734, -1, -1, 3390 736, -1, 738, 10, 11, 12, 13, 14, 15, 16, 3391 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3392 27, -1, -1, 90, -1, -1, 405, -1, -1, -1, 3393 1417, -1, 39, 100, -1, -1, -1, 773, -1, -1, 3394 -1, -1, -1, 780, 423, -1, -1, -1, -1, 428, 3395 1162, 430, -1, -1, -1, -1, -1, -1, -1, -1, 3396 67, -1, -1, -1, -1, -1, -1, -1, 447, -1, 3397 -1, 450, 451, -1, -1, 812, -1, -1, -1, 1466, 3398 -1, -1, -1, -1, -1, -1, 1473, 466, -1, 156, 3399 827, -1, 828, 1205, -1, -1, 832, -1, -1, 835, 3400 -1, 480, -1, 170, -1, -1, -1, -1, 487, -1, 3401 -1, -1, -1, -1, -1, 1227, -1, -1, -1, -1, 3402 -1, -1, -1, -1, -1, -1, 193, -1, -1, 1241, 3403 -1, 1243, -1, -1, -1, -1, -1, -1, -1, 1526, 3404 207, -1, -1, -1, -1, -1, -1, -1, -1, 216, 3405 -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, 3406 -1, 1273, -1, -1, -1, -1, -1, -1, -1, 1281, 3407 1282, 1283, -1, -1, -1, -1, -1, -1, -1, -1, 3408 1292, 1293, -1, -1, 251, -1, -1, -1, -1, 256, 3409 -1, -1, 928, -1, 1306, -1, -1, -1, -1, -1, 3410 -1, -1, 269, -1, -1, -1, -1, -1, 275, -1, 3411 277, 947, -1, -1, -1, -1, -1, 1329, -1, -1, 3412 -1, -1, -1, -1, 603, -1, -1, -1, 295, -1, 3413 -1, -1, -1, -1, 970, -1, -1, -1, -1, -1, 3414 -1, 978, -1, -1, -1, -1, -1, -1, -1, -1, 3415 986, -1, 631, -1, -1, -1, -1, 636, -1, -1, 3416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3417 -1, 338, 1009, -1, -1, -1, 343, -1, -1, -1, 3418 -1, -1, -1, -1, 1021, 1021, -1, -1, -1, -1, 3419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3420 -1, -1, -1, -1, 371, 1417, 1042, 1043, 375, 376, 3421 -1, 378, -1, -1, -1, -1, -1, -1, 385, 386, 3422 -1, 388, 389, -1, 391, 1062, 393, -1, -1, -1, 3423 -1, -1, 7, -1, -1, 10, 11, 12, 13, 14, 3424 -1, -1, -1, 410, -1, 724, -1, -1, -1, -1, 3425 -1, 418, -1, -1, 1466, -1, -1, -1, -1, 738, 3426 -1, 1473, 37, 38, 39, 40, 1102, -1, -1, -1, 3427 -1, -1, -1, -1, -1, -1, 443, -1, -1, 758, 3428 -1, -1, -1, -1, -1, -1, -1, 454, -1, -1, 3429 -1, 66, 67, -1, -1, -1, -1, 72, 1135, -1, 3430 -1, 76, -1, -1, 79, 80, 81, 82, 83, 84, 3431 477, 86, 87, -1, 1526, -1, 483, -1, -1, 94, 3432 -1, 488, -1, -1, -1, -1, 1162, -1, -1, -1, 3433 -1, -1, -1, -1, 109, -1, 111, -1, -1, -1, 3434 819, -1, 1179, 118, 119, 120, 121, 122, 123, -1, 3435 -1, -1, -1, 832, -1, -1, 1193, 1194, 525, -1, 3436 -1, -1, -1, -1, -1, -1, -1, -1, 1204, -1, 3437 -1, -1, 851, -1, 541, -1, -1, -1, -1, -1, 3438 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3439 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3440 22, 23, 24, 25, 26, 27, -1, 1243, 30, 31, 3441 32, 578, -1, -1, -1, -1, -1, 39, -1, -1, 3442 587, -1, -1, -1, -1, -1, -1, 594, -1, -1, 3443 -1, -1, 599, -1, -1, -1, -1, -1, -1, -1, 3444 -1, -1, -1, 610, -1, 67, -1, 69, -1, 71, 3445 72, -1, 74, 75, 76, -1, 1292, 1293, -1, 938, 3446 -1, 83, 84, -1, -1, 1301, -1, -1, -1, -1, 3447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3448 -1, -1, -1, -1, 651, 964, -1, 109, -1, 111, 3449 -1, -1, -1, -1, -1, -1, -1, 119, -1, -1, 3450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3451 -1, -1, -1, 992, -1, -1, -1, -1, -1, -1, 3452 687, -1, -1, -1, -1, -1, 10, 11, 12, 13, 3453 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3454 24, 25, 26, 27, 28, 1024, 30, 31, 32, -1, 3455 -1, -1, -1, -1, -1, 39, 1035, -1, -1, -1, 3456 -1, -1, -1, -1, -1, -1, -1, 1404, -1, -1, 3457 -1, -1, -1, -1, -1, 742, -1, -1, -1, -1, 3458 -1, 1417, -1, 67, 1421, 752, 753, -1, -1, -1, 3459 74, 75, -1, -1, 78, -1, -1, -1, -1, 766, 3460 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3461 -1, -1, -1, -1, -1, -1, 783, -1, 785, -1, 3462 -1, -1, 789, -1, -1, 109, -1, 111, -1, -1, 3463 -1, -1, -1, -1, -1, 119, -1, -1, 1117, 1475, 3464 -1, 1477, -1, -1, -1, -1, -1, -1, -1, -1, 3465 -1, -1, -1, -1, -1, -1, -1, 1494, 1495, -1, 3466 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3467 37, 38, -1, 40, -1, -1, 1512, -1, 1514, -1, 3468 -1, -1, -1, -1, -1, -1, -1, -1, 855, -1, 3469 -1, -1, -1, -1, -1, 862, -1, -1, -1, 66, 3470 -1, -1, -1, -1, -1, 72, 1542, -1, 875, 76, 3471 877, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3472 87, -1, -1, -1, 891, 1204, -1, 94, -1, -1, 3473 -1, 898, -1, -1, -1, -1, -1, -1, -1, -1, 3474 -1, -1, 109, 910, 111, -1, 913, -1, -1, 116, 3475 -1, 118, 119, 120, 121, 122, 123, -1, -1, -1, 3476 -1, -1, -1, -1, 931, -1, -1, -1, -1, -1, 3477 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3478 -1, -1, -1, -1, 154, 155, -1, -1, -1, -1, 3479 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3480 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3481 -1, -1, -1, -1, -1, -1, -1, -1, 188, -1, 3482 -1, -1, 1301, -1, -1, 195, -1, 3, 4, 5, 3483 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3484 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3485 26, 27, -1, 1020, 30, 31, 32, 33, -1, -1, 3486 36, -1, -1, 39, 40, 10, 11, 12, 13, 14, 3487 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3488 25, 26, 27, -1, -1, 30, 31, 32, 64, -1, 3489 -1, 67, -1, 69, 39, 71, 72, 267, 74, 75, 3490 76, -1, -1, -1, -1, -1, -1, 83, 84, 1076, 3491 -1, -1, -1, -1, -1, -1, 1083, -1, -1, -1, 3492 -1, -1, 67, -1, -1, -1, -1, -1, -1, 74, 3493 75, -1, -1, 109, -1, 111, -1, -1, -1, 115, 3494 -1, -1, -1, 119, -1, 145, 1113, -1, -1, -1, 3495 -1, 1118, -1, 323, -1, 155, -1, -1, -1, 1126, 3496 -1, 331, 332, -1, 334, 335, -1, 167, 168, -1, 3497 -1, -1, -1, -1, 344, -1, -1, -1, 348, -1, 3498 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3499 1157, -1, -1, -1, -1, -1, -1, 367, -1, -1, 3500 370, -1, 1169, -1, -1, 1172, -1, 1174, -1, -1, 3501 37, 38, -1, 40, -1, -1, -1, -1, -1, -1, 3502 -1, 1188, 1189, -1, -1, -1, -1, 397, -1, -1, 3503 -1, 401, -1, -1, -1, -1, -1, -1, 238, 66, 3504 -1, -1, -1, 1210, -1, 72, -1, -1, -1, 76, 3505 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3506 87, -1, 432, 263, -1, -1, -1, 94, -1, -1, 3507 1237, -1, -1, -1, -1, -1, -1, -1, 1557, -1, 3508 -1, -1, 109, -1, 111, 455, -1, 114, -1, -1, 3509 -1, 118, 119, 120, 121, 122, 123, -1, -1, -1, 3510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3511 -1, -1, -1, -1, -1, -1, 486, -1, -1, 489, 3512 -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 2105 3513 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2106 19, 20, 21, 22, 23, 24, 75, 0, 25, 26, 2107 27, 0, 453, 0, 351, 351, 946, 30, 0, 0, 2108 109, 0, 0, 0, 0, 0, 0, 0, 77, 0, 2109 0, 0, 1236, 0, 0, 0, 0, 0, 0, 0, 2110 0, 353, 353, 354, 0, 33, 0, 0, 77, 0, 2111 36, 0, 37, 38, 39, 84, 77, 0, 0, 0, 2112 0, 40, 41, 0, 0, 0, 0, 0, 0, 0, 2113 361, 0, 0, 0, 0, 84, 346, 0, 351, 0, 2114 0, 0, 354, 84, 0, 0, 0, 42, 0, 155, 2115 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 2116 354, 0, 77, 0, 0, 353, 0, 0, 0, 361, 2117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2118 0, 220, 0, 0, 0, 0, 0, 361, 0, 84, 2119 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 2120 0, 0, 0, 72, 354, 0, 0, 0, 221, 0, 2121 0, 0, 0, 0, 0, 0, 351, 0, 351, 0, 2122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2123 75, 361, 0, 0, 0, 0, 0, 346, 0, 0, 2124 0, 0, 0, 353, 0, 353, 0, 0, 351, 0, 2125 0, 0, 0, 0, 0, 0, 351, 351, 351, 0, 2126 0, 0, 0, 0, 0, 0, 0, 351, 351, 354, 2127 0, 0, 0, 0, 0, 353, 0, 0, 0, 0, 2128 0, 72, 0, 353, 353, 353, 0, 0, 0, 0, 2129 0, 0, 0, 0, 353, 353, 361, 0, 0, 0, 2130 0, 0, 346, 0, 351, 0, 0, 0, 75, 0, 2131 0, 0, 0, 0, 354, 354, 354, 0, 0, 0, 2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2133 0, 353, 0, 354, 0, 0, 0, 0, 0, 124, 2134 0, 361, 361, 361, 0, 0, 0, 346, 346, 346, 2135 0, 354, 0, 0, 0, 0, 0, 0, 0, 0, 2136 361, 0, 77, 0, 0, 0, 346, 0, 354, 0, 2137 0, 0, 0, 0, 0, 0, 0, 0, 361, 1033, 2138 0, 0, 8, 9, 10, 11, 12, 0, 0, 84, 2139 0, 0, 351, 0, 0, 361, 0, 0, 0, 0, 2140 0, 0, 0, 0, 77, 0, 0, 354, 280, 281, 2141 30, 282, 0, 0, 0, 0, 0, 0, 0, 353, 2142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2143 0, 84, 0, 0, 361, 0, 0, 283, 33, 0, 2144 346, 72, 0, 284, 354, 0, 0, 285, 72, 0, 2145 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2146 0, 0, 0, 124, 0, 292, 0, 0, 75, 0, 2147 0, 361, 0, 0, 0, 75, 0, 0, 0, 0, 2148 293, 0, 377, 0, 0, 0, 354, 0, 0, 295, 2149 826, 297, 298, 299, 300, 0, 354, 0, 0, 354, 2150 0, 72, 0, 0, 222, 0, 354, 0, 0, 0, 2151 0, 354, 0, 361, 0, 0, 0, 0, 0, 0, 2152 0, 0, 0, 361, 0, 0, 361, 0, 75, 0, 2153 0, 223, 346, 361, 0, 0, 0, 0, 361, 346, 2154 0, 0, 0, 0, 0, -516, 0, 0, 1, 2, 3514 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3515 -1, 30, 31, 32, 33, -1, -1, 36, -1, 529, 3516 39, -1, 532, 533, -1, -1, -1, -1, 1335, -1, 3517 1337, -1, -1, -1, -1, -1, -1, -1, -1, 379, 3518 -1, -1, -1, 1350, -1, 1352, -1, -1, 67, -1, 3519 69, -1, 71, -1, -1, 74, 75, -1, -1, 78, 3520 -1, -1, -1, 1370, -1, -1, -1, -1, 578, 579, 3521 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1386, 3522 1387, -1, -1, -1, -1, -1, -1, 597, 598, -1, 3523 600, 1398, 111, -1, 1401, -1, -1, -1, -1, 609, 3524 119, 611, 612, -1, -1, -1, -1, -1, 618, -1, 3525 -1, -1, -1, -1, -1, -1, 1423, -1, 628, 629, 3526 -1, -1, -1, -1, 634, 1432, -1, -1, 1435, -1, 3527 1437, 1438, 1439, 643, 644, 645, -1, -1, -1, -1, 3528 -1, 481, -1, -1, -1, -1, -1, -1, -1, -1, 3529 -1, -1, 662, -1, -1, -1, -1, 667, 668, -1, 3530 -1, 671, 672, -1, -1, -1, -1, -1, 678, -1, 3531 -1, -1, 1479, -1, 1481, -1, -1, 1484, -1, -1, 3532 520, -1, -1, -1, -1, -1, 696, 697, 698, -1, 3533 700, -1, 1499, 533, 704, -1, -1, -1, -1, -1, 3534 540, -1, -1, 543, -1, -1, -1, -1, -1, -1, 3535 -1, -1, -1, -1, 554, 555, -1, -1, -1, -1, 3536 -1, -1, -1, -1, -1, -1, 736, 737, -1, -1, 3537 -1, -1, -1, -1, -1, -1, 576, -1, -1, -1, 3538 -1, -1, -1, -1, -1, -1, 586, -1, -1, -1, 3539 -1, -1, -1, 593, -1, -1, -1, -1, 598, -1, 3540 -1, -1, 772, 773, -1, -1, -1, 777, 778, -1, 3541 -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 3542 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3543 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3544 -1, 30, 31, 32, 33, -1, -1, 36, 648, 819, 3545 39, 40, -1, -1, -1, -1, -1, 657, 828, -1, 3546 -1, -1, -1, -1, 834, 835, -1, -1, -1, 839, 3547 -1, 841, -1, -1, -1, 64, -1, -1, 67, -1, 3548 69, 851, 71, 72, -1, 74, 75, 76, -1, -1, 3549 -1, -1, -1, -1, 83, 84, -1, 697, -1, -1, 3550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3552 109, -1, 111, -1, -1, -1, -1, -1, -1, -1, 3553 119, -1, -1, -1, -1, 10, 11, 12, 13, 14, 3554 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3555 25, 26, 27, 28, 924, 30, 31, 32, -1, -1, 3556 -1, -1, 932, -1, 39, -1, -1, -1, 938, -1, 3557 -1, -1, -1, 773, -1, 775, 946, -1, -1, -1, 3558 -1, 781, -1, -1, -1, -1, -1, -1, 788, 959, 3559 960, -1, 67, -1, -1, -1, -1, 72, -1, 74, 3560 75, 76, -1, 78, -1, -1, -1, -1, 83, 84, 3561 -1, -1, -1, -1, -1, -1, 986, -1, -1, -1, 3562 -1, -1, 992, -1, -1, -1, -1, -1, -1, -1, 3563 -1, -1, 832, 833, 109, 835, 111, -1, -1, -1, 3564 -1, 1011, 1012, -1, 119, -1, -1, -1, -1, -1, 3565 850, 1021, -1, -1, -1, -1, -1, 1027, 1028, -1, 3566 1030, 1031, 1032, -1, -1, -1, -1, -1, -1, -1, 3567 -1, -1, 1042, 1043, -1, -1, -1, -1, -1, -1, 3568 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3569 890, -1, -1, -1, 894, 3, 4, 5, 6, 7, 3570 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3571 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3572 -1, -1, 30, 31, 32, 33, -1, -1, 36, -1, 3573 -1, 39, -1, 1103, 1104, 1105, -1, -1, -1, -1, 3574 -1, -1, -1, -1, -1, -1, -1, 1117, -1, -1, 3575 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, 3576 -1, 69, -1, 71, -1, -1, 74, 75, -1, -1, 3577 970, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3578 -1, -1, -1, -1, -1, -1, 986, 987, -1, -1, 3579 -1, -1, 1162, 993, -1, -1, -1, 37, 38, 999, 3580 40, -1, 1002, 111, 1004, -1, -1, -1, -1, -1, 3581 -1, 119, -1, -1, -1, -1, -1, -1, -1, -1, 3582 -1, -1, -1, -1, 1024, -1, 66, -1, -1, -1, 3583 -1, -1, 72, -1, -1, 1035, 76, -1, -1, 79, 3584 80, 81, 82, 83, 84, -1, 86, 87, -1, -1, 3585 -1, -1, 1222, -1, 94, 37, 38, 1057, 40, 1059, 3586 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 3587 -1, 111, -1, 1243, 1074, 1075, -1, -1, 118, 119, 3588 120, 121, 122, 123, 66, -1, -1, -1, -1, -1, 3589 72, -1, -1, -1, 76, 1095, -1, 79, 80, 81, 3590 82, 83, 84, -1, 86, 87, -1, -1, -1, -1, 3591 -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, 3592 -1, -1, 1292, 1293, -1, -1, -1, 109, -1, 111, 3593 -1, -1, -1, -1, -1, -1, 118, 119, 120, 121, 3594 122, 123, -1, 1143, -1, -1, -1, -1, -1, -1, 3595 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3596 -1, -1, 1162, -1, -1, -1, -1, -1, -1, -1, 3597 -1, -1, -1, -1, -1, -1, -1, 1177, 1178, -1, 3598 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 3599 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3600 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3601 -1, -1, 30, 31, 32, 33, -1, -1, 36, 37, 3602 38, 39, 40, 41, -1, 43, -1, -1, 46, 47, 3603 48, 49, 50, 51, 52, 53, -1, -1, -1, 57, 3604 -1, -1, -1, 61, 62, -1, 64, 1417, 66, 67, 3605 -1, 69, -1, 71, 72, -1, 74, 75, 76, 1259, 3606 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3607 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3608 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3609 -1, 109, -1, 111, -1, -1, 114, -1, -1, -1, 3610 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, 3611 128, -1, -1, -1, 132, -1, -1, -1, -1, -1, 3612 1320, -1, 1322, -1, -1, -1, -1, -1, -1, -1, 3613 -1, -1, -1, -1, -1, -1, -1, 1507, 10, 11, 3614 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3615 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3616 32, -1, 1532, 1533, -1, -1, -1, 39, -1, -1, 3617 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3618 -1, -1, -1, -1, -1, -1, -1, 1557, -1, -1, 3619 -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, 3620 -1, -1, 74, 75, -1, -1, -1, -1, 1408, -1, 3621 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 3622 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3623 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3624 -1, -1, 30, 31, 32, 33, -1, 119, 36, 37, 3625 38, 39, 40, 10, 11, 12, 13, 14, 15, 16, 3626 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3627 27, -1, -1, 30, 31, 32, -1, -1, 66, 67, 3628 -1, 69, 39, 71, 72, -1, 74, 75, 76, -1, 3629 1490, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3630 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3631 67, -1, -1, -1, -1, 72, -1, 74, 75, -1, 3632 -1, 109, -1, 111, -1, -1, 83, 84, -1, -1, 3633 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, 3634 -1, -1, 1542, -1, 132, 3, 4, 5, 6, 7, 3635 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3636 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3637 -1, -1, 30, 31, 32, 33, -1, -1, 36, 37, 3638 38, 39, 40, 10, 11, 12, 13, 14, 15, 16, 3639 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3640 27, -1, -1, 30, 31, 32, -1, -1, 66, 67, 3641 -1, 69, 39, 71, 72, -1, 74, 75, 76, -1, 3642 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3643 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3644 67, -1, -1, -1, -1, -1, -1, 74, 75, -1, 3645 -1, 109, -1, 111, -1, -1, -1, -1, -1, -1, 3646 118, 119, 120, 121, 122, 123, 4, 5, 6, 7, 3647 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3648 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3649 -1, -1, 30, 31, 32, -1, -1, -1, -1, 37, 3650 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 3651 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3652 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, 3653 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3654 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3655 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3656 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3657 -1, 109, -1, 111, -1, -1, -1, -1, 116, -1, 3658 118, 119, 120, 121, 122, 123, 4, 5, 6, 7, 3659 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3660 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3661 -1, -1, 30, 31, 32, -1, -1, -1, -1, 37, 3662 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 3663 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3664 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, 3665 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3666 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3667 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3669 -1, 109, -1, 111, -1, -1, -1, -1, 116, -1, 3670 118, 119, 120, 121, 122, 123, 4, 5, 6, 7, 3671 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3672 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3673 -1, -1, 30, 31, 32, -1, -1, -1, -1, 37, 3674 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 3675 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3676 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, 3677 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3678 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3679 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3680 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3681 -1, 109, -1, 111, -1, -1, -1, -1, 116, -1, 3682 118, 119, 120, 121, 122, 123, 4, 5, 6, 7, 3683 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3684 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3685 -1, -1, 30, 31, 32, -1, -1, -1, -1, 37, 3686 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 3687 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3688 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, 3689 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3690 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3691 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3692 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3693 -1, 109, -1, 111, -1, -1, -1, -1, -1, -1, 3694 118, 119, 120, 121, 122, 123, 4, 5, 6, 7, 3695 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3696 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3697 -1, -1, 30, 31, 32, -1, -1, -1, -1, 37, 3698 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 3699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3700 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, 3701 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3702 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3703 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3705 -1, 109, -1, 111, -1, -1, -1, -1, -1, -1, 3706 118, 119, 120, 121, 122, 123, 4, 5, 6, 7, 3707 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3708 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3709 -1, -1, 30, 31, 32, -1, -1, -1, -1, 37, 3710 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 3711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3712 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, 3713 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3714 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3715 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3716 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3717 -1, 109, -1, 111, -1, -1, -1, -1, -1, -1, 3718 118, 119, 120, 121, 122, 123, 4, 5, 6, 7, 3719 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3720 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3721 -1, -1, 30, 31, 32, -1, -1, -1, -1, 37, 3722 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 3723 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3724 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, 3725 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3726 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3727 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3729 -1, 109, -1, 111, -1, -1, -1, -1, -1, -1, 3730 118, 119, 120, 121, 122, 123, 3, 4, 5, 6, 3731 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3732 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3733 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3734 -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 3735 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3736 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3737 67, -1, 69, -1, 71, -1, -1, 74, 75, -1, 3738 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3739 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3740 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3741 -1, -1, -1, -1, 111, 39, -1, -1, -1, -1, 3742 -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, 3743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3744 -1, -1, -1, 67, -1, 69, -1, 71, 72, -1, 3745 74, 75, 76, -1, -1, -1, -1, -1, -1, 83, 3746 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3748 -1, -1, -1, -1, -1, 109, -1, 111, -1, -1, 3749 -1, -1, -1, -1, -1, 119, 4, 5, 6, 7, 3750 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3751 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3752 -1, -1, 30, 31, 32, -1, -1, -1, -1, -1, 3753 -1, 39, -1, -1, -1, -1, 10, 11, 12, 13, 3754 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3755 24, 25, 26, 27, -1, -1, 30, 31, 32, 67, 3756 -1, 69, -1, 71, -1, 39, 74, 75, -1, 4, 3757 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3758 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3759 25, 26, 27, 67, -1, 30, 31, 32, 72, -1, 3760 74, 75, 110, 111, 39, -1, -1, -1, -1, 83, 3761 84, 119, -1, -1, -1, -1, -1, -1, -1, -1, 3762 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3763 -1, -1, 67, -1, 69, -1, 71, 111, -1, 74, 3764 75, -1, -1, -1, -1, 119, -1, -1, -1, -1, 3765 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3766 -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 3767 -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, 3768 -1, -1, -1, -1, 119, 4, 5, 6, 7, 8, 3769 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3770 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3771 -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, 3772 39, -1, -1, -1, -1, 10, 11, 12, 13, 14, 3773 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3774 25, 26, 27, 28, -1, 30, 31, 32, 67, -1, 3775 69, -1, 71, -1, 39, 74, 75, -1, -1, -1, 3776 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3777 -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, 3778 -1, -1, 67, -1, -1, -1, -1, 72, -1, 74, 3779 75, 76, 111, 78, -1, -1, -1, -1, 83, 84, 3780 119, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3781 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3782 23, 24, 25, 26, 27, -1, 111, 30, 31, 32, 3783 -1, -1, -1, -1, 119, -1, 39, -1, -1, -1, 3784 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3785 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3786 -1, -1, -1, -1, 67, -1, 69, -1, 71, -1, 3787 -1, 74, 75, -1, 4, 5, 6, 7, 8, 9, 3788 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3789 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3790 30, 31, 32, -1, -1, -1, -1, -1, 111, 39, 3791 -1, -1, -1, -1, -1, -1, 119, -1, -1, -1, 3792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3793 -1, -1, -1, -1, -1, -1, -1, 67, -1, 69, 3794 -1, 71, -1, -1, 74, 75, -1, 4, 5, 6, 3795 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3796 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3797 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3798 -1, 111, 39, -1, -1, -1, -1, -1, -1, 119, 3799 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3800 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3801 67, -1, 69, -1, 71, -1, -1, 74, 75, -1, 3802 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3803 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3804 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3805 -1, -1, -1, -1, 111, 39, -1, -1, -1, -1, 3806 -1, -1, 119, -1, -1, -1, -1, -1, -1, -1, 3807 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3808 -1, -1, -1, 67, -1, 69, -1, 71, -1, -1, 3809 74, 75, 10, 11, 12, 13, 14, 15, 16, 17, 3810 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3811 -1, -1, 30, 31, 32, -1, -1, -1, -1, 37, 3812 38, 39, 40, -1, -1, -1, -1, 111, -1, -1, 3813 -1, -1, -1, -1, -1, 119, -1, -1, -1, -1, 3814 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, 3815 -1, -1, -1, -1, 72, -1, 74, 75, 76, -1, 3816 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3817 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3818 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3819 -1, 109, -1, 111, -1, -1, 114, -1, -1, -1, 3820 118, 119, 120, 121, 122, 123, 10, 11, 12, 13, 3821 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3822 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3823 -1, -1, -1, 37, 38, 39, 40, 10, 11, 12, 3824 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3825 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 3826 -1, -1, 66, 67, -1, -1, 39, -1, 72, -1, 3827 74, 75, 76, -1, -1, 79, 80, 81, 82, 83, 3828 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 3829 94, -1, -1, -1, 67, -1, -1, -1, -1, 72, 3830 -1, 74, 75, 76, -1, 109, -1, 111, 112, -1, 3831 83, 84, -1, -1, 118, 119, 120, 121, 122, 123, 3832 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3833 20, 21, 22, 23, 24, 25, 26, 27, 111, -1, 3834 30, 31, 32, -1, -1, -1, 119, 37, 38, 39, 3835 40, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3836 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3837 -1, 30, 31, 32, -1, -1, 66, 67, -1, -1, 3838 39, 40, 72, -1, 74, 75, 76, -1, -1, 79, 3839 80, 81, 82, 83, 84, -1, 86, 87, -1, -1, 3840 -1, -1, -1, -1, 94, -1, -1, -1, 67, -1, 3841 -1, -1, -1, -1, -1, 74, 75, -1, -1, 109, 3842 110, 111, -1, -1, -1, -1, -1, -1, 118, 119, 3843 120, 121, 122, 123, 10, 11, 12, 13, 14, 15, 3844 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3845 26, 27, 111, -1, 30, 31, 32, -1, -1, -1, 3846 119, 37, 38, 39, 40, -1, -1, -1, -1, -1, 3847 -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3848 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3849 66, 67, 30, 31, 32, -1, 72, -1, 74, 75, 3850 76, 39, -1, 79, 80, 81, 82, 83, 84, -1, 3851 86, 87, -1, -1, -1, -1, -1, -1, 94, -1, 3852 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, 3853 -1, -1, -1, 109, -1, 111, 74, 75, -1, -1, 3854 -1, -1, 118, 119, 120, 121, 122, 123, 10, 11, 3855 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3856 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3857 32, 109, -1, 111, -1, 37, 38, 39, 40, -1, 3858 -1, 119, -1, -1, -1, -1, 10, 11, 12, 13, 3859 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3860 24, 25, 26, 27, 66, 67, 30, 31, 32, -1, 3861 72, -1, 74, 75, 76, 39, -1, 79, 80, 81, 3862 82, 83, 84, -1, 86, 87, -1, -1, -1, -1, 3863 -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, 3864 -1, -1, -1, 67, -1, -1, -1, 109, -1, 111, 3865 74, 75, -1, -1, -1, -1, 118, 119, 120, 121, 3866 122, 123, 10, 11, 12, 13, 14, 15, 16, 17, 3867 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3868 -1, -1, 30, 31, 32, 109, -1, 111, -1, 37, 3869 38, 39, 40, -1, -1, 119, -1, -1, -1, -1, 3870 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3871 20, 21, 22, 23, 24, 25, 26, 27, 66, 67, 3872 30, 31, 32, -1, 72, -1, 74, 75, 76, 39, 3873 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3874 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3875 -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 3876 -1, 109, -1, 111, 74, 75, -1, -1, -1, -1, 3877 118, 119, 120, 121, 122, 123, 10, 11, 12, 13, 3878 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3879 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3880 -1, 111, -1, 37, 38, 39, 40, -1, -1, 119, 3881 -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3882 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3883 26, 27, 66, 67, 30, 31, 32, -1, 72, -1, 3884 74, 75, 76, 39, -1, 79, 80, 81, 82, 83, 3885 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 3886 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3887 -1, 67, -1, -1, -1, 109, -1, 111, 74, 75, 3888 -1, -1, -1, -1, 118, 119, 120, 121, 122, 123, 2155 3889 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2156 3890 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2157 23, 24, 0, 77, 25, 26, 27, 28, 0, 0, 2158 29, 0, 0, 30, 31, 0, 0, 0, 0, 8, 2159 9, 10, 11, 12, 0, 8, 9, 10, 11, 12, 2160 84, 0, 0, 0, 0, 0, 54, 0, 32, 0, 2161 0, 33, 163, 34, 0, 35, 36, 30, 37, 38, 2162 39, 0, 0, 30, 0, 0, 0, 40, 41, 0, 2163 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 2164 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 2165 36, 33, 0, 42, 39, 43, 36, 354, 0, 0, 2166 39, 40, 41, 44, 0, 0, 0, 40, 41, 0, 2167 0, 0, 0, 54, 0, 0, 0, 163, 0, 0, 2168 0, 0, 0, 270, 361, 0, 0, 42, 0, 0, 2169 346, 0, 0, 743, 0, 0, 0, 145, 0, 0, 2170 0, 0, 0, 744, 0, 0, 0, 0, 0, 0, 2171 354, 354, 163, 354, 354, 0, 0, 0, 0, 0, 2172 0, 0, 367, 0, 0, 0, 373, 0, 0, 0, 2173 0, 0, 0, 77, 0, 0, 0, 361, 361, 0, 2174 361, 361, 0, 0, 0, 0, 346, 346, 0, 0, 2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2176 84, 0, 0, 0, 0, 0, 54, 0, 354, 354, 2177 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 2178 0, 0, 0, 0, 0, 0, 0, 216, 0, 0, 2179 0, 0, 0, 0, 0, 361, 361, 0, 0, 0, 2180 0, 280, 281, 0, 282, 163, 460, 8, 9, 10, 2181 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2182 21, 22, 23, 24, 0, 0, 25, 26, 27, 373, 2183 283, 0, 354, 0, 0, 30, 284, 163, 0, 0, 2184 285, 0, 0, 286, 287, 288, 289, 40, 41, 0, 2185 290, 291, 0, 0, 0, 0, 0, 0, 292, 361, 2186 0, 460, 0, 33, 163, 0, 0, 0, 0, 0, 2187 205, 38, 0, 512, 0, 222, 0, 0, 0, 0, 2188 0, 0, 295, 379, 297, 298, 299, 300, 0, 0, 2189 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 2190 0, 0, 223, 0, 0, 0, 0, 54, 54, 0, 2191 354, 605, 354, 0, 0, 269, 629, 0, 0, 0, 2192 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 2193 54, 0, 0, 0, 0, 0, 0, 361, 0, 361, 2194 0, 0, 354, 0, 0, 0, 0, 0, 0, 54, 2195 354, 354, 354, 0, 0, 0, 0, 0, 0, 0, 2196 0, 354, 354, 0, 0, 0, 0, 0, 0, 361, 2197 0, 0, 0, 0, 0, 77, 0, 361, 361, 361, 2198 0, 0, 0, 0, 0, 0, 0, 0, 361, 361, 2199 0, 0, 163, 163, 346, 346, 0, 0, 354, 367, 2200 0, 0, 84, 54, 0, 0, 0, 0, 54, 0, 2201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2202 460, 0, 0, 460, 0, 361, 0, 0, 0, 460, 2203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2204 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 2205 0, 0, 0, 0, 0, 0, 740, 0, 0, 0, 2206 209, 0, 0, 0, 0, 0, 0, 0, 163, 0, 2207 229, 0, 233, 0, 235, 0, 0, 0, 0, 0, 2208 460, 244, 460, 0, 0, 460, 354, 163, 460, 0, 2209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2210 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2211 0, 0, 209, 361, 233, 235, 244, 0, 0, 346, 2212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2213 0, 0, 0, 0, 0, 77, 0, 154, 0, 0, 2214 0, 0, 77, 0, 0, 54, 0, 0, 0, 0, 2215 0, 0, 0, 163, 0, 209, 0, 0, 0, 0, 2216 0, 0, 84, 0, 0, 367, 0, 605, 54, 84, 2217 836, 0, 0, 0, 0, 54, 0, 0, 0, 0, 2218 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, 2219 0, 0, 0, 254, 0, 77, 605, 0, 0, 0, 2220 0, 605, 0, 0, 0, 0, 0, 0, 0, 0, 2221 367, 367, 367, 0, 0, 0, 209, 0, 233, 235, 2222 244, 0, 84, 0, 0, 0, 0, 0, 54, 367, 2223 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2224 17, 18, 19, 20, 21, 22, 23, 24, -294, 154, 2225 25, 26, 27, 0, 209, 0, 0, 0, 209, 30, 2226 0, 0, 0, 384, 740, 0, 0, 0, 0, 0, 2227 0, 0, 0, 0, 503, 0, 0, 0, 0, 0, 2228 0, 0, 0, 0, 0, 460, 416, 33, 0, 0, 2229 0, 0, 0, 0, 37, 38, 0, 0, -294, 0, 2230 431, 0, 0, 367, 0, 960, 0, 0, 0, 436, 2231 0, 0, 0, 0, 0, 0, 0, 0, 0, 444, 2232 0, 0, 0, 0, 209, 0, 0, 0, 0, 642, 2233 0, 337, 280, 281, 0, 282, 0, 0, 0, 109, 2234 740, 0, 0, 0, 470, 209, 0, 0, 0, 480, 2235 233, 235, 0, 0, 0, 0, 0, 0, 244, 0, 2236 0, 283, 488, 0, 0, 0, 0, 284, 498, 0, 2237 502, 285, 0, 0, 286, 287, 288, 289, 40, 41, 2238 0, 290, 291, 0, 0, 0, 0, 0, 532, 292, 2239 0, 0, 0, 0, 0, 367, 0, 0, 0, 629, 2240 0, 209, 367, 0, 293, 0, 377, 0, 0, 378, 2241 0, 0, 0, 295, 379, 297, 298, 299, 300, 209, 2242 0, 0, 0, 0, 209, 0, 209, 0, 0, 0, 2243 0, 592, 0, 0, 0, 0, 597, 0, 0, 0, 2244 0, 0, 0, 209, 0, 0, 209, 209, 0, 0, 2245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2246 0, 0, 209, 0, 643, 0, 0, 0, 644, 645, 2247 0, 647, 0, 0, 0, 0, 209, 0, 659, 660, 2248 0, 661, 662, 209, 663, 0, 664, 0, 0, 0, 2249 0, 0, 0, 1176, 0, 460, 8, 9, 10, 11, 2250 12, 0, 0, 592, 0, 0, 0, 0, 0, 0, 2251 0, 679, 0, 0, 0, 0, 0, 0, 0, 0, 2252 0, 0, 280, 281, 30, 282, 0, 0, 0, 0, 2253 0, 0, 0, 0, 0, 0, 690, 163, 0, 0, 2254 0, 0, 0, 0, 0, 0, 0, 696, 0, 0, 2255 0, 283, 33, 367, 0, 0, 0, 284, 0, 0, 2256 0, 285, 0, 0, 286, 287, 288, 289, 40, 41, 2257 732, 290, 291, 0, 0, 0, 735, 0, 0, 292, 2258 0, 470, 0, 0, 0, 0, 0, 0, 605, 0, 2259 0, 0, 0, 0, 293, 0, 377, 0, 0, 209, 2260 0, 0, 0, 295, 1177, 297, 298, 299, 300, 367, 2261 367, 0, 0, 0, 0, 0, 0, 0, 772, 0, 2262 0, 0, 0, 0, 0, 0, 0, 209, 513, 0, 2263 515, 518, 209, 0, 787, 0, 0, 0, 521, 522, 2264 0, 0, 0, 515, 515, 0, 0, 0, 0, 0, 2265 0, 0, 0, 0, 0, 515, 0, 0, 0, 0, 2266 0, 0, 0, 0, 0, 280, 281, 0, 282, 460, 2267 0, 814, 0, 0, 0, 0, 0, 0, 0, 0, 2268 824, 0, 0, 0, 0, 0, 0, 827, 0, 0, 2269 0, 515, 834, 0, 283, 0, 0, 0, 0, 0, 2270 284, 0, 0, 849, 285, 0, 0, 286, 287, 288, 2271 289, 40, 41, 0, 290, 291, 0, 0, 0, 0, 2272 209, 0, 292, 0, 0, 0, 0, 515, 740, 0, 2273 0, 0, 0, 0, 209, 0, 0, 293, 0, 377, 2274 0, 0, 0, 0, 889, 811, 295, 379, 297, 298, 2275 299, 300, 0, 0, 503, 0, 0, 0, 0, 0, 2276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2277 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2278 834, 0, 0, 0, 0, 8, 9, 10, 11, 12, 3891 23, 24, 25, 26, 27, 111, -1, 30, 31, 32, 3892 -1, -1, -1, 119, -1, -1, 39, -1, -1, -1, 3893 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3894 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3895 30, 31, 32, -1, 67, -1, 69, -1, 71, 39, 3896 -1, 74, 75, -1, -1, -1, -1, -1, 10, 11, 3897 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3898 22, 23, 24, 25, 26, 27, -1, 67, 30, 31, 3899 32, -1, 72, -1, 74, 75, 76, 39, -1, -1, 3900 -1, 114, -1, 83, 84, -1, 10, 11, 12, 13, 3901 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3902 24, 25, 26, 27, -1, 67, 30, 31, 32, 109, 3903 72, 111, 74, 75, 76, 39, -1, -1, -1, 119, 3904 -1, 83, 84, -1, 10, 11, 12, 13, 14, 15, 3905 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3906 26, 27, -1, 67, 30, 31, 32, 109, 72, 111, 3907 74, 75, 76, 39, -1, -1, -1, 119, -1, 83, 3908 84, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3909 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3910 28, 67, 30, 31, 32, 109, 72, 111, 74, 75, 3911 76, 39, -1, -1, -1, 119, -1, 83, 84, -1, 3912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3913 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, 3914 -1, -1, -1, 109, -1, 111, 74, 75, -1, -1, 3915 78, -1, -1, 119, -1, 10, 11, 12, 13, 14, 3916 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3917 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3918 -1, 109, -1, 111, 39, 40, -1, -1, -1, -1, 3919 -1, 119, -1, 10, 11, 12, 13, 14, 15, 16, 3920 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3921 27, 28, 67, 30, 31, 32, -1, -1, -1, 74, 3922 75, -1, 39, 10, 11, 12, 13, 14, 15, 16, 3923 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3924 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3925 67, -1, 39, 40, -1, -1, 111, 74, 75, -1, 3926 115, 78, -1, -1, 119, -1, -1, -1, -1, -1, 3927 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3928 67, -1, -1, -1, -1, -1, -1, 74, 75, -1, 3929 -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, 3930 -1, -1, 119, -1, -1, 10, 11, 12, 13, 14, 3931 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3932 25, 26, 27, -1, 111, 30, 31, 32, 115, -1, 3933 -1, -1, 119, -1, 39, 40, 10, 11, 12, 13, 3934 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3935 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3936 -1, -1, 67, -1, -1, 39, -1, -1, -1, 74, 3937 75, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3938 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3939 26, 27, -1, 67, 30, 31, 32, -1, -1, -1, 3940 74, 75, -1, 39, -1, -1, 111, -1, -1, -1, 3941 115, -1, -1, -1, 119, -1, -1, -1, -1, -1, 3942 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3943 -1, 67, -1, -1, -1, -1, -1, 111, 74, 75, 3944 -1, -1, -1, -1, -1, 119, -1, 10, 11, 12, 2279 3945 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2280 23, 24, -294, 0, 25, 26, 27, 0, 740, 0, 2281 0, 0, 0, 30, 0, 209, 0, 0, 0, 0, 2282 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, 2283 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 2284 0, 33, 0, 0, 0, 967, 968, 209, 37, 38, 2285 0, 0, -294, 0, 0, 0, 0, 367, 367, 985, 2286 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 2287 0, 0, 0, 0, 0, 0, 1000, 0, 1001, 0, 2288 0, 0, 1005, 642, 0, 337, 0, 0, 0, 0, 2289 0, 0, 0, 633, 0, 0, 0, 0, 0, 0, 2290 0, 0, 0, 0, 515, 515, 515, 515, 515, 515, 2291 515, 515, 515, 515, 515, 515, 515, 515, 515, 515, 2292 515, 515, 0, 0, 0, 0, 0, 0, 0, 0, 2293 280, 281, 0, 282, 209, 0, 0, 0, 0, 0, 2294 0, 0, 0, 0, 0, 0, 0, 515, 1038, 0, 2295 0, 0, 0, 0, 0, 1039, 0, 0, 0, 283, 2296 209, 0, 0, 0, 0, 284, 0, 0, 1041, 285, 2297 1042, 0, 286, 287, 288, 289, 40, 41, 0, 290, 2298 291, 0, 367, 0, 1054, 0, 0, 292, 209, 0, 2299 0, 1058, 0, 0, 0, 0, 0, 0, 0, 0, 2300 0, 0, 293, 1096, 377, 0, 1097, 0, 0, 780, 2301 0, 295, 379, 297, 298, 299, 300, 0, 0, 0, 2302 209, 0, 0, 0, 597, 0, 0, 0, 0, 0, 2303 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 2304 460, 0, 460, 0, 0, 0, 515, 0, 8, 9, 2305 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2306 20, 21, 22, 23, 24, -294, 0, 0, 515, 0, 2307 0, 0, 0, 0, 0, 0, 30, 460, 0, 460, 2308 0, 515, 8, 9, 10, 11, 12, 13, 14, 15, 2309 16, 17, 18, 19, 20, 21, 22, 23, 24, -294, 2310 0, 25, 26, 27, 33, 0, 0, 163, 0, 0, 2311 30, 0, 209, 1160, 0, -294, 0, 0, 0, 340, 2312 362, 0, 0, 0, 0, 0, 0, 515, 0, 0, 2313 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2314 0, 0, 0, 36, 0, 335, 336, 39, 0, -294, 2315 0, 0, 0, 412, 40, 41, 0, 0, 0, 515, 2316 412, 0, 0, 0, 0, 0, 0, 0, 0, 532, 2317 0, 0, 0, 0, 515, 0, 1225, 0, 0, 0, 2318 642, 0, 337, 0, 0, 0, 0, 0, 0, 0, 2319 633, 280, 281, 0, 282, 0, 0, 0, 0, 209, 2320 0, 0, 0, 0, 0, 1238, 0, 0, 0, 0, 2321 1240, 0, 0, 0, 0, 0, 0, 0, 1244, 0, 2322 283, 0, 0, 0, 0, 0, 648, 0, 137, 138, 2323 285, 0, 412, 286, 649, 288, 289, 40, 41, 0, 2324 290, 291, 0, 0, 0, 0, 0, 0, 292, 1270, 2325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2326 0, 1278, 0, 293, 1279, 650, 1280, 651, 378, 0, 2327 0, 0, 295, 379, 297, 298, 299, 300, 0, 0, 2328 1289, 1290, 0, 0, 0, 0, 0, 0, 412, 0, 2329 0, 0, 0, 0, 0, 209, 412, 588, 0, 412, 2330 591, 0, 1303, 0, 0, 0, 0, 0, 0, 362, 2331 0, 0, 0, 621, 0, 0, 0, 0, 0, 0, 2332 0, 0, 0, 0, 0, 515, 0, 0, 0, 1326, 2333 320, 0, 639, 0, 0, 340, 0, 0, 0, 0, 2334 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2335 0, 0, 380, 380, 0, 0, 515, 0, 0, 0, 2336 0, 0, 412, 0, 0, 0, 412, 0, 515, 2, 2337 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3946 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 3947 -1, -1, -1, -1, -1, 111, 39, -1, -1, -1, 3948 -1, -1, -1, 119, -1, 10, 11, 12, 13, 14, 3949 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3950 25, 26, 27, -1, 67, 30, 31, 32, -1, -1, 3951 -1, 74, 75, -1, 39, 10, 11, 12, 13, 14, 3952 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3953 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3954 -1, -1, 67, -1, 39, -1, -1, -1, 111, 74, 3955 75, -1, -1, -1, -1, -1, 119, -1, -1, -1, 3956 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3957 -1, -1, 67, -1, -1, -1, -1, -1, -1, 74, 3958 75, -1, -1, -1, -1, -1, 111, -1, -1, -1, 3959 -1, -1, -1, -1, 119, -1, -1, 10, 11, 12, 2338 3960 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2339 23, 24, 0, 0, 25, 26, 27, 362, 0, 0, 2340 0, 0, 0, 30, 0, 0, 0, 0, 0, 515, 2341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2342 412, 0, 0, 320, 0, 0, 1396, 0, 1397, 0, 2343 0, 33, 0, 34, 0, 35, 0, 0, 37, 38, 2344 0, 1406, 0, 1407, 0, 0, 0, 0, 484, 0, 2345 0, 412, 0, 0, 362, 0, 0, 0, 0, 0, 2346 0, 1414, 0, 0, 0, 0, 0, 0, 0, 0, 2347 0, 0, 0, 0, -399, 686, 0, 1432, 1434, 0, 2348 0, 515, 0, 633, 0, 0, 0, 0, 0, 1440, 2349 0, 0, 1244, 0, 412, 0, 0, 340, 362, 0, 2350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2351 0, 0, 0, 0, 1463, 0, 0, 0, 0, 0, 2352 0, 0, 0, 1470, 0, 515, 1472, 0, 1474, 1476, 2353 1478, 0, 0, 0, 0, 0, 0, 0, 0, 515, 2354 515, 0, 0, 412, 412, 0, 0, 0, 0, 0, 2355 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 2356 0, 0, 829, 362, 380, 362, 0, 0, 0, 0, 2357 1509, 0, 1511, 0, 621, 1244, 621, 621, 0, 0, 2358 0, 0, 0, 621, 0, 0, 0, 0, 0, 0, 2359 1523, 0, 0, 868, 362, 0, 0, 0, 0, 362, 2360 0, 0, 0, 0, 0, 0, 0, 0, 362, 362, 2361 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2362 0, 0, 0, 0, 0, 0, 0, 362, 0, 0, 2363 0, 0, 412, 911, 0, 0, 412, 914, 0, 0, 2364 0, 0, 0, 916, 0, 0, 0, 0, 0, 0, 2365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2366 0, 340, 362, 412, 0, 412, 734, 0, 0, 412, 2367 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2368 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2369 25, 26, 27, 0, 0, 0, 0, 0, 0, 30, 2370 0, 362, 621, 0, 0, 768, 0, 0, 0, 0, 2371 0, 0, 0, 0, 0, 0, 0, 0, 781, 0, 2372 0, 0, 0, 0, 0, 768, 0, 33, 768, 0, 2373 0, 0, 0, 0, 205, 38, 0, 340, 362, 791, 2374 792, 0, 412, 412, 0, 0, 0, 0, 0, 515, 2375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2376 0, 813, 0, 0, 0, 0, 515, 0, 0, 0, 2377 0, 822, 0, 0, 0, 0, 0, 0, 344, 628, 2378 0, 0, 0, 781, 412, 0, 0, 0, 0, 0, 2379 0, 0, 0, 362, 0, 0, 0, 0, 0, 829, 2380 362, 0, 0, 0, 621, 0, 621, 0, 0, 0, 2381 0, 0, 0, 0, 0, 0, 621, 0, 0, 0, 2382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2383 0, 0, 0, 888, 0, 0, 0, 0, 0, 515, 2384 515, 0, 380, 0, 0, 0, 0, 0, 0, 1, 2385 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2386 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2387 22, 23, 24, 0, 0, 25, 26, 27, 28, 0, 2388 0, 29, 344, 0, 30, 31, 0, 0, 0, 829, 2389 0, 0, 0, 0, 0, 0, 0, 412, 280, 281, 2390 0, 282, 0, 412, 0, 0, 0, 0, 0, 32, 2391 0, 412, 33, 0, 34, 0, 35, 36, 0, 37, 2392 38, 39, 0, 0, 621, 621, 0, 283, 40, 41, 2393 0, 0, 0, 284, 0, 0, 0, 285, 0, 0, 2394 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2395 0, 362, 0, 0, 42, 292, 43, 412, 781, 0, 2396 990, 0, 0, 0, 44, 0, 995, 0, 0, 0, 2397 293, 0, 377, 1004, 0, 992, 412, 1157, 0, 295, 2398 379, 297, 298, 299, 300, 0, 362, 0, 0, 0, 2399 0, 0, 412, 1169, 0, 621, 621, 1174, 0, 0, 2400 0, 0, 0, 0, 0, 0, 0, 362, 362, 0, 2401 0, 0, 0, 0, 0, 0, 0, 1021, 1022, 0, 2402 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2403 0, 0, 0, 0, 0, 344, 0, 0, 0, 0, 2404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2406 0, 0, 0, 0, 0, 0, 0, 0, 829, 412, 2407 1237, 0, 0, 0, 0, 1052, 0, 0, 0, 380, 2408 0, 621, 0, 0, 0, 0, 1, 2, 204, 4, 2409 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3961 23, 24, 25, 26, 27, -1, 111, 30, 31, 32, 3962 -1, -1, -1, -1, 119, -1, 39, 10, 11, 12, 3963 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3964 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 3965 -1, -1, -1, -1, 67, -1, 39, -1, -1, -1, 3966 -1, 74, 75, -1, -1, 10, 11, 12, 13, 14, 2410 3967 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2411 0, 0, 25, 26, 27, 28, 0, 0, 29, 280, 2412 281, 30, 1061, 1062, 0, 1063, 362, 0, 1064, 1065, 2413 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 0, 1072, 2414 0, 0, 0, 1073, 1074, 0, 32, 0, 283, 33, 2415 0, 34, 0, 35, 648, 320, 37, 38, 285, 0, 2416 0, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2417 0, 1138, 1139, 0, 0, 0, 292, 0, 380, 0, 2418 0, 0, 280, 281, 995, 282, 340, 1148, 0, 768, 2419 0, 293, 0, 1075, 0, 0, 169, 0, 0, 0, 2420 295, 296, 297, 298, 299, 300, 362, 0, 0, 1164, 2421 1076, 283, 0, 0, -129, 0, 0, 284, 0, 0, 2422 1179, 285, 0, 0, 286, 287, 288, 289, 40, 41, 2423 0, 290, 291, 0, 0, 0, 0, 0, 0, 292, 2424 0, 0, 380, 0, 1197, 0, 0, 0, 0, 0, 2425 0, 0, 0, 0, 293, 362, 362, 0, 0, 995, 2426 995, 0, 0, 295, 379, 297, 298, 299, 300, 0, 2427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2428 1229, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2429 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2430 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2431 23, 24, 0, 0, 25, 26, 27, 28, 0, 0, 2432 29, 280, 281, 30, 282, 0, 0, 995, 0, 0, 2433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2434 280, 281, 0, 282, 0, 0, 888, 0, 0, 0, 2435 283, 33, 0, 34, 0, 35, 284, 0, 37, 38, 2436 285, 1281, 1282, 286, 287, 288, 289, 40, 41, 283, 2437 290, 291, 0, 0, 0, 284, 0, 0, 292, 285, 2438 362, 0, 286, 287, 288, 289, 40, 41, 0, 290, 2439 291, 0, 0, 293, 0, 1075, 0, 292, 0, 0, 2440 0, 0, 295, 296, 297, 298, 299, 300, 0, 0, 2441 0, 0, 293, 0, 377, 0, -129, 0, 0, 0, 2442 0, 295, 379, 297, 298, 299, 300, 0, 0, 0, 2443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2444 0, 0, 995, 0, 0, 0, 1, 2, 204, 4, 2445 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2446 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2447 412, 0, 25, 26, 27, 28, 0, 0, 29, 280, 2448 281, 30, 282, 0, 0, 0, 0, 0, 0, 0, 2449 0, 0, 0, 0, 0, 412, 412, 0, 0, 0, 2450 0, 0, 0, 1389, 0, 768, 0, 0, 283, 33, 2451 0, 34, 0, 35, 284, 0, 37, 38, 285, 0, 2452 412, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2453 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 2454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2455 0, 293, 0, 43, 0, 0, 0, 0, 0, 0, 2456 295, 296, 297, 298, 299, 300, 0, 0, 2, 204, 3968 25, 26, 27, -1, 67, 30, 31, 32, -1, -1, 3969 -1, 74, 75, -1, 39, -1, -1, -1, 111, -1, 3970 -1, -1, -1, -1, -1, -1, 119, -1, -1, -1, 3971 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3972 -1, -1, 67, -1, -1, -1, -1, -1, 111, 74, 3973 75, -1, -1, -1, -1, -1, 119, 4, 5, 6, 3974 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3975 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3976 27, -1, -1, 30, 31, 32, 111, -1, -1, -1, 3977 -1, -1, 39, -1, 119, -1, -1, -1, -1, -1, 3978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3980 67, -1, 69, -1, 71, -1, -1, 74, 75, 37, 3981 38, -1, 40, 41, -1, 43, -1, -1, 46, 47, 3982 48, 49, 50, 51, 52, 53, -1, -1, 56, 57, 3983 -1, -1, -1, 61, 62, -1, 64, -1, 66, -1, 3984 -1, -1, -1, 110, 72, -1, -1, -1, 76, -1, 3985 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3986 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, 3987 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3988 -1, 109, -1, 111, -1, -1, 114, -1, -1, -1, 3989 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, 3990 128, -1, 37, 38, 132, 40, 41, -1, 43, -1, 3991 -1, 46, 47, 48, 49, 50, 51, 52, 53, -1, 3992 -1, -1, 57, -1, -1, -1, 61, 62, -1, 64, 3993 -1, 66, -1, -1, -1, -1, -1, 72, -1, -1, 3994 -1, 76, -1, -1, 79, 80, 81, 82, 83, 84, 3995 -1, 86, 87, -1, -1, -1, -1, -1, -1, 94, 3996 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3997 -1, -1, -1, -1, 109, -1, 111, -1, -1, 114, 3998 -1, -1, -1, 118, 119, 120, 121, 122, 123, -1, 3999 -1, -1, -1, 128, -1, -1, -1, 132, 4, 5, 4000 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 4001 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 4002 26, 27, -1, -1, 30, 31, 32, -1, -1, -1, 4003 -1, -1, -1, 39, -1, 37, 38, -1, 40, 41, 4004 -1, 43, 44, 45, 46, 47, 48, 49, 50, 51, 4005 52, 53, -1, -1, 56, 57, -1, -1, -1, 61, 4006 62, 67, 64, 69, 66, 71, -1, -1, 74, 75, 4007 72, -1, -1, -1, 76, -1, -1, 79, 80, 81, 4008 82, 83, 84, -1, 86, 87, -1, -1, -1, -1, 4009 96, -1, 94, -1, -1, -1, -1, -1, -1, -1, 4010 -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, 4011 -1, -1, 114, -1, -1, -1, 118, 119, 120, 121, 4012 122, 123, -1, -1, 37, 38, 128, 40, 41, -1, 4013 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 4014 53, -1, -1, -1, 57, -1, -1, -1, 61, 62, 4015 -1, 64, -1, 66, -1, -1, -1, -1, -1, 72, 4016 -1, -1, -1, 76, -1, -1, 79, 80, 81, 82, 4017 83, 84, -1, 86, 87, -1, -1, -1, -1, -1, 4018 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, 4019 -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 4020 -1, 114, -1, -1, -1, 118, 119, 120, 121, 122, 4021 123, -1, -1, 37, 38, 128, 40, 41, -1, 43, 4022 -1, -1, 46, 47, 48, 49, 50, 51, 52, 53, 4023 -1, -1, -1, 57, -1, -1, -1, 61, 62, -1, 4024 64, -1, 66, -1, -1, -1, -1, -1, 72, -1, 4025 -1, -1, 76, -1, -1, 79, 80, 81, 82, 83, 4026 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 4027 94, 37, 38, -1, 40, -1, -1, -1, -1, -1, 4028 -1, -1, -1, -1, -1, 109, -1, 111, -1, -1, 4029 114, -1, -1, -1, 118, 119, 120, 121, 122, 123, 4030 66, -1, -1, -1, 128, -1, 72, -1, -1, -1, 4031 76, -1, -1, 79, 80, 81, 82, 83, 84, -1, 4032 86, 87, -1, -1, -1, -1, -1, -1, 94, 37, 4033 38, -1, 40, -1, -1, -1, -1, -1, -1, -1, 4034 -1, -1, -1, 109, -1, 111, -1, -1, 37, 38, 4035 -1, 40, 118, 119, 120, 121, 122, 123, 66, -1, 4036 -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, 4037 -1, 79, 80, 81, 82, 83, 84, 66, 86, 87, 4038 -1, -1, -1, 72, -1, -1, 94, 76, -1, -1, 4039 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 4040 -1, 109, -1, 111, -1, 94, 37, 38, -1, 40, 4041 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, 4042 109, -1, -1, -1, -1, 37, 38, -1, 40, 118, 4043 119, 120, 121, 122, 123, 66, -1, -1, -1, -1, 4044 -1, 72, -1, -1, -1, 76, -1, -1, 79, 80, 4045 81, 82, 83, 84, 66, 86, 87, -1, -1, -1, 4046 72, -1, -1, 94, 76, -1, -1, 79, 80, 81, 4047 82, 83, 84, -1, 86, 87, -1, -1, 109, -1, 4048 -1, -1, 94, 37, 38, -1, 40, 118, 119, 120, 4049 121, 122, 123, -1, -1, -1, -1, 109, -1, -1, 4050 -1, -1, -1, -1, -1, -1, 118, 119, 120, 121, 4051 122, 123, 66, -1, -1, -1, -1, -1, 72, -1, 4052 -1, -1, 76, -1, -1, 79, 80, 81, 82, 83, 4053 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 4054 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4055 -1, -1, -1, -1, -1, 109, -1, -1, -1, -1, 4056 -1, -1, -1, -1, 118, 119, 120, 121, 122, 123, 2457 4057 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2458 4058 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2459 24, 1449, 0, 25, 26, 27, 0, 0, 0, 0, 2460 280, 281, 30, 282, 0, 8, 9, 10, 11, 12, 2461 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2462 23, 24, 0, 0, 25, 26, 27, 0, 0, 283, 2463 33, 0, 34, 30, 35, 284, 0, 37, 38, 285, 2464 0, 0, 286, 287, 288, 289, 40, 41, 0, 290, 2465 291, 0, 0, 0, 0, 0, 0, 292, 0, 0, 2466 0, 33, 0, 0, 0, 0, 108, 0, 37, 38, 2467 0, 0, 293, 1515, 342, 0, 0, 40, 41, 780, 2468 0, 295, 343, 297, 298, 299, 300, 2, 204, 4, 2469 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2470 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2471 0, 0, 25, 26, 27, 0, 0, 0, 0, 280, 2472 281, 30, 282, 0, 0, 320, 0, 8, 9, 10, 2473 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2474 21, 22, 23, 24, -295, 0, 0, 0, 283, 33, 2475 0, 34, 0, 35, 284, 30, 37, 38, 285, 0, 2476 0, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2477 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 2478 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 2479 0, 293, 0, 930, -295, 0, 0, 0, 780, 0, 2480 295, 343, 297, 298, 299, 300, 2, 204, 4, 5, 2481 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2482 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2483 0, 25, 26, 27, 0, 0, 0, 0, 280, 281, 2484 30, 282, 0, 8, 9, 10, 11, 12, 13, 14, 2485 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2486 0, 0, 25, 26, 27, 0, 0, 283, 33, 0, 2487 34, 30, 35, 284, 0, 37, 38, 285, 0, 0, 2488 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2489 0, 0, 0, 0, 0, 292, 0, 0, 0, 33, 2490 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2491 293, 0, 930, 0, 0, 0, 0, 780, 0, 295, 2492 599, 297, 298, 299, 300, 2, 204, 4, 5, 6, 2493 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2494 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2495 25, 26, 27, 0, 0, 0, 0, 280, 281, 30, 2496 282, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2497 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2498 0, 25, 26, 27, 0, 0, 283, 33, 0, 34, 2499 30, 35, 284, 0, 37, 38, 285, 0, 0, 286, 2500 287, 288, 289, 40, 41, 0, 290, 291, 0, 0, 2501 0, 0, 0, 0, 292, 0, 0, 0, 33, 0, 2502 0, 0, 0, 0, 0, 205, 38, 0, 0, 293, 2503 0, 342, 0, 0, 0, 0, 0, 0, 295, 343, 2504 297, 298, 299, 300, 2, 204, 4, 5, 6, 7, 2505 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2506 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2507 26, 27, 0, 0, 0, 0, 280, 281, 30, 282, 2508 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2509 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2510 0, 0, 0, 0, 0, 283, 33, 0, 34, 30, 2511 35, 284, 0, 37, 38, 285, 0, 0, 286, 287, 2512 288, 289, 40, 41, 0, 290, 291, 0, 0, 0, 2513 0, 0, 0, 292, 0, 0, 0, 33, 0, 0, 2514 0, 0, 0, 0, 0, 0, 0, 0, 293, 0, 2515 930, 0, 0, 0, 0, 0, 0, 295, 343, 297, 2516 298, 299, 300, 2, 204, 4, 5, 6, 7, 8, 2517 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2518 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2519 27, 0, 0, 0, 0, 280, 281, 30, 282, 0, 2520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2522 0, 0, 0, 0, 283, 33, 0, 34, 0, 35, 2523 284, 0, 205, 38, 285, 0, 0, 286, 287, 288, 2524 289, 40, 41, 0, 290, 291, 0, 0, 0, 0, 2525 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, 2526 0, 0, 0, 0, 0, 0, 0, 293, 0, 1019, 2527 0, 0, 0, 0, 0, 0, 295, 1020, 297, 298, 2528 299, 300, 2, 204, 4, 5, 6, 7, 8, 9, 2529 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2530 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2531 0, 0, 0, 0, 280, 281, 30, 282, 0, 0, 2532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2534 0, 0, 0, 283, 33, 0, 34, 0, 35, 284, 2535 0, 205, 38, 285, 0, 0, 286, 287, 288, 289, 2536 40, 41, 0, 290, 291, 0, 0, 0, 0, 0, 2537 0, 292, 0, 0, 0, 0, 0, 0, 0, 0, 2538 0, 0, 0, 0, 0, 0, 293, 0, 377, 0, 2539 0, 0, 0, 0, 0, 295, 379, 297, 298, 299, 2540 300, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2541 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2542 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2543 28, 0, 0, 29, 0, 0, 30, 31, 0, 0, 2544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2546 0, 32, 0, 0, 33, 0, 34, 0, 35, 36, 2547 0, 37, 38, 39, 0, 0, 0, 0, 0, 0, 2548 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, 2549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550 0, 0, 0, 0, 0, 0, 42, 0, 43, 0, 2551 0, 0, -520, 0, 0, 0, 44, 203, 2, 204, 2552 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2553 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2554 24, 0, 0, 25, 26, 27, 0, 0, 0, 0, 2555 0, 0, 30, 8, 9, 10, 11, 12, 13, 14, 2556 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2557 0, 0, 25, 26, 27, 491, 492, 493, 0, 0, 2558 33, 30, 34, 0, 35, 36, 0, 205, 38, 39, 2559 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 2560 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2561 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 2562 0, 0, 42, 0, 206, 0, 0, 0, 0, 0, 2563 0, 0, 207, 1, 2, 204, 4, 5, 6, 7, 2564 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2565 18, 19, 20, 21, 22, 23, 24, -294, 0, 25, 2566 26, 27, 28, 0, 0, 29, 0, 0, 30, 0, 2567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2569 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2570 35, 0, 0, 37, 38, 0, 0, -294, 0, 1, 2571 2, 204, 4, 5, 6, 7, 8, 9, 10, 11, 2572 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2573 22, 23, 24, 0, 0, 25, 26, 27, 28, 0, 2574 43, 29, 0, 0, 30, 0, 0, 0, 109, 0, 2575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2577 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2578 38, 0, 203, 2, 204, 4, 5, 6, 7, 8, 2579 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2580 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2581 27, 0, 0, 0, 0, 0, 43, 30, 0, 0, 2582 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 2583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2584 0, 0, 0, 0, 0, 33, 0, 34, 0, 35, 2585 0, 0, 205, 38, 2, 204, 4, 5, 6, 7, 2586 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2587 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2588 26, 27, 0, 0, 0, 0, 0, 0, 30, 206, 2589 0, 0, 0, 0, 0, 0, 0, 269, 0, 0, 2590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2591 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2592 35, 36, 0, 205, 38, 39, 0, 0, 0, 0, 2593 0, 0, 40, 41, 0, 0, 8, 9, 10, 11, 2594 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2595 22, 23, 24, 0, 0, 25, 26, 27, 42, 0, 2596 206, 0, 0, 0, 30, 0, 0, 0, 207, 2, 2597 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2598 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2599 23, 24, 33, 0, 25, 26, 27, 36, 0, 37, 2600 38, 39, 0, 30, 0, 0, 0, 0, 40, 41, 2601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2603 0, 33, 0, 34, 42, 35, 43, 0, 37, 38, 2604 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 2605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2606 1368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2607 0, 0, 0, 0, 0, 686, 0, 0, 0, 0, 2608 0, 0, 0, 633, 2, 204, 4, 5, 6, 7, 2609 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2610 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2611 26, 27, 0, 0, 0, 0, 0, 0, 30, 0, 2612 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2613 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2614 0, 0, 25, 26, 27, 0, 33, 0, 34, 0, 2615 35, 30, 0, 37, 38, 0, 0, 0, 0, 0, 2616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2617 0, 0, 0, 0, 0, 1370, 0, 0, 0, 33, 2618 0, 0, 0, 0, 36, 0, 335, 336, 39, 0, 2619 686, 0, 0, 0, 0, 40, 41, 0, 633, 2, 2620 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2621 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2622 23, 24, 0, 337, 25, 26, 27, 0, 0, 0, 2623 0, 109, 0, 30, 0, 0, 0, 0, 0, 0, 2624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2626 0, 33, 0, 34, 0, 35, 0, 0, 205, 38, 2627 2, 204, 4, 5, 6, 7, 8, 9, 10, 11, 2628 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2629 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2630 0, 0, 0, 0, 30, 268, 0, 0, 0, 0, 2631 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, 2632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2633 0, 0, 33, 0, 34, 0, 35, 0, 0, 37, 2634 38, 2, 204, 4, 5, 6, 7, 8, 9, 10, 2635 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2636 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2637 0, 0, 0, 0, 0, 30, 686, 0, 0, 0, 2638 0, 0, 0, 0, 633, 0, 0, 0, 0, 0, 2639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2640 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2641 37, 38, 2, 204, 4, 5, 6, 7, 8, 9, 2642 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2643 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2644 0, 0, 0, 0, 0, 0, 30, 598, 0, 0, 2645 0, 0, 0, 0, 0, 633, 0, 0, 0, 0, 2646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2647 0, 0, 0, 0, 33, 0, 34, 0, 35, 0, 2648 0, 205, 38, 8, 9, 10, 11, 12, 13, 14, 2649 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2650 0, 0, 25, 26, 27, 0, 0, 0, 0, 280, 2651 281, 30, 282, 0, 0, 0, 0, 0, 206, 0, 2652 0, 0, 0, 0, 0, 0, 269, 0, 0, 0, 2653 0, 0, 0, 0, 0, 0, 0, 0, 283, 33, 2654 0, 0, 0, 0, 284, 0, 37, 38, 285, 0, 2655 0, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2656 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 2657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2658 0, 293, 0, 524, 0, 0, 169, 0, 0, 0, 2659 295, 296, 297, 298, 299, 300, 8, 9, 10, 11, 2660 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2661 22, 23, 24, 0, 0, 25, 26, 27, 0, 0, 2662 0, 0, 280, 281, 30, 282, 8, 9, 10, 11, 2663 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2664 22, 23, 24, -294, 0, 25, 26, 27, 0, 0, 2665 0, 283, 33, 0, 30, 0, 0, 284, 0, 37, 2666 38, 285, 0, 0, 286, 287, 288, 289, 40, 41, 2667 0, 290, 291, 0, 0, 0, 0, 0, 0, 292, 2668 0, 0, 33, 0, 0, 0, 0, 36, 0, 335, 2669 336, 39, 0, -294, 293, 0, 598, -3, 40, 41, 2670 0, 0, 0, 295, 599, 297, 298, 299, 300, 8, 2671 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2672 19, 20, 21, 22, 23, 24, 337, 0, 25, 26, 2673 27, 0, 0, 0, 109, 280, 281, 30, 282, 8, 2674 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2675 19, 20, 21, 22, 23, 24, 0, 0, 25, 26, 2676 27, 0, 0, 0, 283, 33, 0, 30, 0, 0, 2677 648, 0, 37, 38, 285, 0, 0, 286, 287, 288, 2678 289, 40, 41, 0, 290, 291, 0, 0, 0, 0, 2679 0, 0, 292, 0, 0, 33, 0, 0, 0, 0, 2680 108, 0, 37, 38, 0, 0, 0, 293, -35, 765, 2681 0, 40, 41, 0, 0, 0, 295, 296, 297, 298, 2682 299, 300, 8, 9, 10, 11, 12, 13, 14, 15, 2683 16, 17, 18, 19, 20, 21, 22, 23, 24, 43, 2684 0, 25, 26, 27, 0, 0, 0, 109, 280, 281, 2685 30, 282, 8, 9, 10, 11, 12, 13, 14, 15, 2686 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2687 0, 25, 26, 27, 0, 0, 0, 283, 33, 0, 2688 30, 452, 0, 284, 0, 37, 38, 285, 0, 0, 2689 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2690 0, 0, 0, 0, 0, 292, 0, 0, 33, 0, 2691 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 2692 293, 0, 294, 0, 0, 0, 0, 0, 0, 295, 2693 296, 297, 298, 299, 300, 8, 9, 10, 11, 12, 2694 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2695 23, 24, 453, 0, 25, 26, 27, 0, 0, 0, 2696 109, 280, 281, 30, 282, 0, 0, 0, 0, 0, 2697 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2698 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2699 283, 33, 25, 26, 27, 0, 284, 0, 37, 38, 2700 285, 30, 0, 286, 287, 288, 289, 40, 41, 0, 2701 290, 291, 0, 0, 0, 0, 0, 0, 292, 0, 2702 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2703 0, 0, 0, 293, 0, 155, 37, 38, 0, 0, 2704 0, 0, 295, 296, 297, 298, 299, 300, 8, 9, 2705 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2706 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2707 0, 642, 0, 337, 280, 281, 30, 282, 0, 0, 2708 0, 109, 0, 0, 0, 0, 8, 9, 10, 11, 2709 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2710 22, 23, 24, 283, 33, 25, 26, 27, 0, 284, 2711 0, 37, 38, 285, 30, 0, 286, 287, 288, 289, 2712 40, 41, 0, 290, 291, 0, 0, 0, 0, 0, 2713 0, 292, 0, 0, 0, 0, 0, 0, 0, 0, 2714 0, 0, 33, 0, 0, 0, 293, 0, 598, 37, 2715 38, 0, 0, 0, 0, 295, 599, 297, 298, 299, 2716 300, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2717 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 2718 25, 26, 27, 0, 642, 0, 337, 280, 281, 30, 2719 282, 0, 0, 0, 633, 0, 0, 0, 0, 8, 2720 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2721 19, 20, 21, 22, 23, 24, 283, 33, 25, 26, 2722 27, 0, 284, 0, 37, 38, 285, 30, 452, 286, 2723 287, 288, 289, 40, 41, 0, 290, 291, 0, 0, 2724 0, 0, 0, 0, 292, 0, 0, 0, 0, 0, 2725 0, 0, 0, 0, 0, 33, 0, 0, 0, 293, 2726 0, 377, 37, 38, 0, 0, 0, 0, 295, 379, 2727 297, 298, 299, 300, 473, 2, 204, 4, 5, 6, 2728 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2729 17, 18, 19, 20, 21, 22, 23, 24, 0, 453, 2730 25, 26, 27, 1234, 0, 0, 0, 109, 0, 30, 2731 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2732 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2733 26, 27, 0, 0, 0, 0, 0, 33, 30, 34, 2734 0, 35, 0, 0, 37, 38, 0, 0, 8, 9, 2735 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2736 20, 21, 22, 23, 24, 0, 33, 25, 26, 27, 2737 0, 36, 0, 205, 38, 39, 30, 0, 0, 0, 2738 0, 0, 40, 41, -3, 0, 8, 9, 10, 11, 2739 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2740 22, 23, 24, 0, 33, 25, 26, 27, 42, 36, 2741 268, 335, 336, 39, 30, 0, 0, 0, 207, 0, 2742 40, 41, 0, 0, 8, 9, 10, 11, 12, 13, 2743 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2744 24, 0, 33, 25, 26, 27, 642, 0, 337, 37, 2745 38, 0, 30, 0, 0, 0, 633, 8, 9, 10, 2746 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2747 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2748 33, 0, 0, 0, 0, 30, 255, 37, 38, 0, 2749 0, 0, 0, 0, 109, 8, 9, 10, 11, 12, 2750 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2751 23, 24, 0, 33, 25, 26, 27, 0, 0, 0, 2752 205, 38, 0, 30, 155, 0, 0, 0, 0, 0, 2753 0, 0, 109, 8, 9, 10, 11, 12, 13, 14, 2754 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2755 0, 33, 25, 26, 27, 0, 0, 268, 37, 38, 2756 0, 30, 0, 0, 0, 269, 8, 9, 10, 11, 2757 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2758 22, 23, 24, 0, 0, 25, 26, 27, 0, 33, 2759 0, 0, 0, 0, 30, 255, 37, 38, 0, 0, 2760 0, 0, 0, 633, 8, 9, 10, 11, 12, 13, 2761 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2762 24, 0, 33, 25, 26, 27, 0, 0, 0, 37, 2763 38, 0, 30, 337, 0, 0, 0, 0, 0, 0, 2764 0, 633, 8, 9, 10, 11, 12, 13, 14, 15, 2765 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 2766 33, 25, 26, 27, 0, 0, 453, 205, 38, 0, 2767 30, 0, 0, 0, 109, 8, 9, 10, 11, 12, 2768 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2769 23, 24, 0, 0, 25, 26, 27, 0, 33, 0, 2770 0, 0, 0, 30, 268, 37, 38, 0, 0, 0, 2771 0, 0, 628, 8, 9, 10, 11, 12, 13, 14, 2772 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2773 0, 33, 25, 26, 27, 0, 0, 0, 37, 38, 2774 0, 30, 598, 0, 0, 0, 0, 0, 0, 0, 2775 633, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2776 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2777 0, 0, 0, 0, 0, 337, 37, 38, 0, 0, 2778 0, 0, 0, 109, 2, 204, 4, 5, 6, 7, 2779 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2780 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 2781 26, 27, 0, 43, 0, 0, 0, 0, 30, 0, 2782 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 2783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2784 0, 0, 0, 0, 0, 0, 33, 0, 34, 0, 2785 35, 0, 0, 37, 38, 280, 281, 0, 282, 1062, 2786 0, 1063, 0, 0, 1064, 1065, 1066, 1067, 1068, 1069, 2787 1070, 1071, 0, 0, 1548, 1072, 0, 0, 0, 1073, 2788 1074, 0, 32, 0, 283, 0, 0, 0, 0, -412, 2789 648, 0, 0, 0, 285, 0, 0, 286, 287, 288, 2790 289, 40, 41, 0, 290, 291, 0, 0, 0, 0, 2791 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, 2792 0, 0, 0, 0, 0, 0, 0, 293, 0, 377, 2793 0, 0, 169, 0, 0, 0, 295, 379, 297, 298, 2794 299, 300, 0, 0, 0, 0, 1076, 0, 280, 281, 2795 -129, 282, 1062, 0, 1063, 0, 0, 1064, 1065, 1066, 2796 1067, 1068, 1069, 1070, 1071, 0, 0, 0, 1072, 0, 2797 0, 0, 1073, 1074, 0, 32, 0, 283, 0, 0, 2798 0, 0, 0, 648, 0, 0, 0, 285, 0, 0, 2799 286, 287, 288, 289, 40, 41, 0, 290, 291, 0, 2800 0, 0, 0, 0, 0, 292, 0, 0, 0, 0, 2801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2802 293, 0, 377, 0, 0, 169, 0, 0, 0, 295, 2803 379, 297, 298, 299, 300, 0, 0, 0, 0, 1076, 2804 0, 280, 281, -129, 282, 1062, 0, 1063, 1418, 1419, 2805 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 2806 1548, 1072, 0, 0, 0, 1073, 1074, 0, 32, 0, 2807 283, 0, 0, 0, 0, 0, 648, 0, 0, 0, 2808 285, 0, 0, 286, 287, 288, 289, 40, 41, 0, 2809 290, 291, 0, 0, 0, 0, 0, 0, 292, 0, 2810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2811 0, 0, 0, 293, 0, 377, 0, 0, 169, 0, 2812 0, 0, 295, 379, 297, 298, 299, 300, 0, 0, 2813 280, 281, 1076, 282, 1062, 0, 1063, 1418, 1419, 1064, 2814 1065, 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 0, 2815 1072, 0, 0, 0, 1073, 1074, 0, 32, 0, 283, 2816 0, 0, 0, 0, 0, 648, 0, 0, 0, 285, 2817 0, 0, 286, 287, 288, 289, 40, 41, 0, 290, 2818 291, 0, 0, 0, 0, 0, 0, 292, 0, 0, 2819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2820 0, 0, 293, 0, 377, 0, 0, 169, 0, 0, 2821 0, 295, 379, 297, 298, 299, 300, 0, 0, 280, 2822 281, 1076, 282, 1062, 0, 1063, 0, 0, 1064, 1065, 2823 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 0, 1072, 2824 0, 0, 0, 1073, 1074, 0, 32, 0, 283, 0, 2825 0, 0, 0, 0, 648, 0, 0, 0, 285, 0, 2826 0, 286, 287, 288, 289, 40, 41, 0, 290, 291, 2827 0, 0, 0, 0, 0, 0, 292, 0, 0, 0, 2828 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2829 0, 293, 0, 377, 0, 0, 169, 0, 0, 0, 2830 295, 379, 297, 298, 299, 300, 0, 0, 0, 0, 2831 1076, 2, 204, 4, 5, 6, 7, 8, 9, 10, 2832 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2833 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2834 0, 0, 0, 0, 0, 30, 0, 280, 281, 0, 2835 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2836 0, 0, 0, 0, 0, 0, 280, 281, 0, 282, 2837 0, 0, 0, 33, 0, 34, 283, 35, 0, 0, 2838 37, 38, 284, 0, 0, 0, 285, 0, 0, 286, 2839 287, 288, 289, 40, 41, 283, 290, 291, 0, 0, 2840 0, 648, 1327, 0, 292, 285, 0, 0, 286, 287, 2841 288, 289, 40, 41, 0, 290, 291, 0, 0, 293, 2842 0, 377, 0, 292, 280, 281, 0, 282, 295, 733, 2843 297, 298, 299, 300, 0, 0, 0, 0, 293, 0, 2844 784, 0, 0, 280, 281, 0, 282, 295, 379, 297, 2845 298, 299, 300, 283, 0, 0, 0, 0, 0, 284, 2846 0, 0, 0, 285, 0, 0, 286, 287, 288, 289, 2847 40, 41, 283, 290, 291, 0, 0, 0, 284, 0, 2848 0, 292, 285, 0, 0, 286, 287, 288, 289, 40, 2849 41, 0, 290, 291, 0, 0, 293, 0, 377, 0, 2850 292, 280, 281, 0, 282, 295, 826, 297, 298, 299, 2851 300, 0, 0, 0, 0, 517, 0, 0, 0, 0, 2852 0, 0, 0, 0, 295, 379, 297, 298, 299, 300, 2853 283, 0, 0, 0, 0, 0, 284, 0, 0, 0, 2854 285, 0, 0, 286, 287, 288, 289, 40, 41, 0, 2855 290, 291, 0, 0, 0, 0, 0, 0, 292, 0, 2856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2857 0, 0, 0, 520, 0, 0, 0, 0, 0, 0, 2858 0, 0, 295, 379, 297, 298, 299, 300, 2, 204, 2859 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2860 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2861 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2862 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 2863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2865 33, 0, 34, 0, 35, 36, 0, 172, 173, 39, 2866 0, 0, 0, 0, 0, 0, 40, 41, 203, 2, 2867 204, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2868 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2869 23, 24, 0, 0, 25, 26, 27, 0, 0, 0, 2870 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 2871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2873 0, 33, 0, 34, 0, 35, 0, 0, 205, 38, 2874 473, 2, 204, 4, 5, 6, 7, 8, 9, 10, 2875 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2876 21, 22, 23, 24, 0, 0, 25, 26, 27, 0, 2877 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 2878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2880 0, 0, 0, 33, 0, 34, 0, 35, 0, 0, 2881 37, 38, 2, 204, 4, 5, 6, 7, 8, 9, 2882 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2883 20, 21, 22, 23, 24, 0, 0, 25, 26, 27, 2884 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 2885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2887 0, 0, 0, 0, 33, 0, 34, 0, 35, 0, 2888 0, 205, 38 2889 }; 2890 2891 #define yypact_value_is_default(yystate) \ 2892 ((yystate) == (-1281)) 2893 2894 #define yytable_value_is_error(yytable_value) \ 2895 YYID (0) 2896 2897 static const yytype_int16 yycheck[] = 2898 { 2899 0, 1, 0, 42, 237, 217, 183, 183, 202, 42, 2900 0, 1, 1, 183, 42, 542, 183, 183, 114, 103, 2901 184, 455, 519, 343, 0, 0, 628, 454, 28, 29, 2902 183, 31, 697, 31, 697, 183, 498, 697, 610, 608, 2903 502, 31, 42, 679, 44, 461, 44, 347, 1042, 496, 2904 279, 901, 655, 1, 54, 31, 31, 166, 167, 608, 2905 60, 1061, 60, 63, 608, 63, 66, 610, 66, 153, 2906 347, 0, 578, 63, 1005, 277, 66, 66, 416, 998, 2907 80, 81, 1041, 1042, 184, 608, 263, 263, 63, 779, 2908 42, 362, 185, 263, 608, 366, 263, 263, 436, 31, 2909 264, 528, 31, 199, 104, 1337, 444, 107, 608, 27, 2910 263, 776, 0, 776, 114, 263, 776, 42, 608, 722, 2911 642, 643, 644, 1054, 758, 424, 425, 611, 38, 254, 2912 643, 644, 38, 617, 81, 42, 62, 106, 1418, 661, 2913 0, 1, 63, 31, 183, 145, 44, 145, 661, 109, 2914 183, 81, 108, 153, 226, 183, 116, 1422, 158, 77, 2915 158, 130, 38, 110, 264, 612, 259, 260, 488, 616, 2916 50, 31, 44, 245, 743, 109, 43, 44, 814, 109, 2917 1073, 1074, 116, 183, 184, 81, 184, 108, 824, 54, 2918 637, 43, 44, 38, 641, 38, 408, 84, 108, 199, 2919 110, 500, 63, 839, 110, 131, 66, 207, 1440, 207, 2920 901, 109, 1492, 735, 43, 44, 216, 494, 108, 219, 2921 519, 219, 735, 38, 263, 112, 226, 81, 108, 219, 2922 263, 183, 108, 11, 110, 263, 115, 109, 108, 104, 2923 404, 241, 107, 743, 219, 245, 1240, 114, 1141, 249, 2924 250, 249, 131, 743, 115, 1520, 340, 113, 183, 249, 2925 1525, 113, 116, 263, 264, 108, 264, 110, 115, 838, 2926 270, 38, 144, 249, 249, 0, 183, 277, 850, 599, 2927 1545, 510, 3, 717, 113, 369, 585, 1552, 81, 838, 2928 454, 416, 292, 108, 838, 110, 1290, 158, 394, 1474, 2929 111, 1525, 250, 1303, 404, 827, 31, 850, 628, 207, 2930 610, 436, 818, 633, 827, 838, 109, 249, 1008, 444, 2931 249, 1545, 486, 116, 838, 596, 422, 327, 1552, 327, 2932 1289, 1290, 428, 81, 1509, 207, 1511, 1256, 838, 94, 2933 238, 108, 95, 110, 292, 111, 346, 347, 838, 115, 2934 81, 216, 690, 95, 454, 1525, 840, 115, 219, 698, 2935 108, 249, 3, 363, 1, 237, 254, 367, 639, 122, 2936 1061, 269, 71, 348, 129, 1225, 696, 108, 378, 71, 2937 122, 720, 1552, 82, 83, 108, 486, 959, 108, 249, 2938 82, 83, 114, 115, 394, 293, 257, 269, 296, 71, 2939 261, 108, 1038, 1039, 404, 270, 404, 44, 130, 958, 2940 82, 83, 277, 115, 958, 71, 0, 115, 1020, 0, 2941 1414, 115, 422, 130, 296, 872, 82, 83, 428, 131, 2942 430, 488, 131, 131, 109, 958, 1070, 131, 110, 131, 2943 115, 67, 115, 89, 90, 71, 675, 531, 74, 115, 2944 76, 130, 772, 115, 454, 1414, 71, 83, 131, 459, 2945 1096, 1097, 118, 1463, 464, 131, 103, 82, 83, 131, 2946 1470, 343, 109, 473, 108, 1406, 1407, 115, 478, 125, 2947 126, 346, 109, 108, 109, 109, 486, 348, 486, 116, 2948 490, 115, 490, 131, 494, 110, 109, 497, 363, 499, 2949 490, 71, 367, 130, 479, 967, 1003, 144, 120, 121, 2950 937, 927, 82, 83, 490, 490, 153, 964, 945, 519, 2951 697, 697, 115, 1523, 249, 473, 108, 697, 416, 254, 2952 697, 697, 761, 108, 1225, 699, 536, 1140, 131, 539, 2953 110, 541, 542, 1115, 697, 1029, 1030, 656, 436, 697, 2954 850, 108, 424, 425, 452, 757, 444, 455, 829, 87, 2955 88, 490, 833, 461, 991, 690, 203, 663, 429, 71, 2956 207, 519, 665, 850, 115, 10, 11, 12, 13, 14, 2957 82, 83, 115, 108, 210, 642, 643, 644, 536, 589, 2958 131, 539, 470, 541, 542, 109, 596, 115, 131, 699, 2959 237, 238, 490, 38, 661, 109, 108, 732, 608, 115, 2960 610, 695, 1303, 131, 512, 71, 514, 115, 479, 517, 2961 111, 597, 520, 109, 115, 131, 82, 83, 500, 629, 2962 490, 66, 269, 131, 1270, 272, 109, 79, 977, 696, 2963 282, 589, 1278, 1279, 1280, 645, 71, 519, 73, 74, 2964 109, 651, 923, 295, 296, 630, 293, 82, 83, 296, 2965 660, 111, 662, 663, 664, 307, 114, 1101, 110, 1303, 2966 112, 79, 3, 111, 116, 887, 108, 115, 735, 10, 2967 11, 12, 13, 14, 91, 92, 963, 771, 113, 0, 2968 1326, 416, 109, 108, 293, 110, 908, 697, 115, 699, 2969 1020, 343, 110, 340, 112, 111, 343, 38, 116, 115, 2970 108, 436, 712, 585, 662, 772, 664, 118, 718, 444, 2971 31, 131, 123, 124, 350, 362, 352, 599, 71, 366, 2972 730, 42, 369, 44, 111, 66, 969, 379, 115, 82, 2973 83, 602, 108, 743, 744, 109, 1380, 109, 723, 60, 2974 1131, 115, 63, 115, 1135, 66, 628, 757, 108, 63, 2975 110, 633, 737, 488, 629, 490, 108, 110, 118, 630, 2976 827, 1495, 1463, 937, 635, 108, 108, 1501, 110, 1470, 2977 645, 945, 730, 108, 893, 110, 118, 424, 425, 111, 2978 109, 109, 1319, 118, 1133, 660, 115, 115, 1522, 113, 2979 109, 679, 690, 1527, 131, 52, 115, 113, 512, 71, 2980 514, 73, 74, 517, 440, 452, 520, 109, 455, 717, 2981 82, 83, 109, 115, 461, 424, 425, 128, 115, 130, 2982 113, 1102, 1523, 1467, 145, 1469, 473, 937, 838, 1033, 2983 1160, 114, 115, 109, 732, 945, 108, 158, 95, 115, 2984 850, 113, 1191, 1192, 109, 108, 831, 110, 834, 131, 2985 115, 498, 723, 500, 1529, 502, 1529, 131, 109, 1529, 2986 115, 116, 183, 184, 115, 512, 737, 514, 109, 109, 2987 517, 109, 519, 520, 115, 115, 71, 115, 73, 74, 2988 1524, 108, 757, 893, 531, 108, 207, 82, 83, 109, 2989 900, 901, 1131, 109, 109, 115, 1135, 1136, 219, 115, 2990 115, 901, 81, 512, 556, 557, 558, 108, 517, 110, 2991 1240, 520, 108, 923, 110, 901, 901, 109, 110, 4, 2992 5, 6, 7, 8, 9, 108, 814, 937, 249, 71, 2993 111, 73, 74, 81, 191, 945, 824, 1056, 585, 119, 2994 82, 83, 263, 901, 108, 109, 110, 599, 108, 596, 2995 110, 839, 599, 963, 108, 690, 110, 214, 57, 58, 2996 831, 696, 108, 109, 110, 574, 108, 224, 968, 968, 2997 108, 113, 110, 983, 1041, 4, 5, 6, 7, 8, 2998 9, 628, 992, 68, 127, 70, 633, 108, 109, 110, 2999 1000, 128, 639, 1003, 130, 1005, 71, 732, 73, 74, 3000 75, 110, 108, 901, 110, 3, 327, 82, 83, 114, 3001 115, 1250, 10, 11, 12, 13, 14, 1123, 71, 927, 3002 73, 74, 75, 115, 116, 983, 347, 115, 116, 82, 3003 83, 901, 108, 108, 110, 110, 293, 772, 1023, 68, 3004 38, 70, 1000, 118, 1054, 1003, 131, 1005, 695, 108, 3005 109, 110, 1401, 93, 1064, 108, 108, 1067, 1068, 1069, 3006 108, 1061, 10, 11, 12, 13, 14, 1504, 66, 1418, 3007 717, 563, 564, 565, 566, 1061, 1061, 71, 111, 73, 3008 74, 733, 1092, 404, 43, 44, 44, 969, 82, 83, 3009 38, 111, 702, 1160, 704, 109, 1054, 109, 968, 1338, 3010 747, 109, 60, 1342, 109, 63, 1064, 109, 66, 1067, 3011 1068, 1069, 3, 1123, 561, 562, 110, 1554, 66, 10, 3012 11, 12, 13, 14, 771, 109, 1220, 779, 71, 108, 3013 73, 74, 75, 454, 111, 109, 111, 111, 1020, 82, 3014 83, 115, 1491, 1492, 57, 58, 59, 38, 567, 568, 3015 1038, 1039, 1023, 1262, 1263, 1264, 130, 131, 559, 560, 3016 108, 110, 110, 1061, 115, 108, 901, 130, 113, 490, 3017 118, 108, 111, 494, 826, 66, 109, 109, 116, 115, 3018 111, 111, 829, 111, 441, 111, 833, 145, 1198, 116, 3019 28, 1061, 116, 1101, 109, 84, 85, 86, 109, 111, 3020 158, 109, 1202, 1203, 1203, 1444, 113, 116, 1096, 1097, 3021 1220, 114, 114, 114, 108, 1225, 115, 1202, 475, 108, 3022 115, 110, 1289, 112, 113, 1225, 184, 109, 4, 5, 3023 6, 7, 8, 9, 131, 109, 109, 116, 109, 1225, 3024 1225, 109, 109, 115, 1244, 1244, 71, 109, 109, 207, 3025 75, 109, 1262, 1263, 1264, 512, 32, 82, 83, 109, 3026 517, 219, 109, 520, 109, 109, 71, 1225, 73, 74, 3027 75, 84, 85, 86, 109, 109, 923, 82, 83, 470, 3028 927, 109, 109, 108, 114, 110, 109, 608, 109, 610, 3029 28, 1397, 68, 118, 70, 108, 1539, 110, 1298, 112, 3030 113, 698, 111, 1303, 1262, 1263, 1264, 109, 130, 1319, 3031 1320, 109, 109, 1298, 114, 109, 115, 1303, 1303, 111, 3032 967, 968, 969, 720, 111, 109, 1061, 1225, 71, 109, 3033 115, 1202, 75, 1203, 109, 901, 115, 1337, 1337, 82, 3034 83, 115, 1529, 1529, 116, 113, 111, 71, 109, 1529, 3035 1238, 75, 1529, 1529, 111, 1225, 1530, 115, 82, 83, 3036 115, 1319, 1320, 109, 1374, 108, 1529, 1377, 1020, 327, 3037 109, 1529, 108, 1020, 1244, 118, 697, 108, 699, 108, 3038 1554, 108, 1270, 108, 108, 111, 1396, 1397, 116, 131, 3039 1278, 1279, 1280, 114, 118, 109, 1406, 1407, 1504, 71, 3040 109, 73, 74, 75, 109, 1303, 0, 1, 128, 1061, 3041 82, 83, 1422, 114, 811, 113, 1374, 1427, 111, 1377, 3042 1530, 678, 743, 744, 131, 1160, 109, 1298, 115, 111, 3043 687, 115, 111, 1303, 691, 1445, 109, 31, 1326, 109, 3044 1440, 1440, 109, 111, 1554, 111, 404, 1457, 1406, 1407, 3045 44, 111, 109, 54, 1101, 1102, 111, 111, 111, 46, 3046 29, 109, 131, 1463, 1422, 114, 131, 1337, 131, 1427, 3047 1470, 71, 66, 73, 74, 75, 114, 1463, 1463, 131, 3048 1529, 131, 82, 83, 1470, 1470, 1529, 1445, 679, 116, 3049 1225, 1529, 889, 109, 1504, 1505, 111, 114, 1064, 1457, 3050 111, 111, 111, 104, 1514, 1240, 107, 111, 108, 103, 3051 1520, 80, 81, 111, 111, 1525, 111, 838, 118, 1529, 3052 1530, 1396, 1530, 1523, 109, 1177, 109, 111, 108, 850, 3053 111, 63, 108, 1543, 108, 1545, 59, 1523, 1523, 1549, 3054 113, 109, 1552, 109, 1554, 131, 1554, 1505, 80, 116, 3055 1560, 145, 153, 111, 1564, 111, 1514, 109, 111, 153, 3056 154, 109, 1520, 108, 1472, 1463, 1474, 1525, 1303, 95, 3057 1440, 95, 1470, 1220, 108, 114, 131, 115, 111, 109, 3058 977, 109, 109, 115, 109, 1543, 41, 1545, 131, 131, 3059 184, 1549, 95, 1463, 1552, 1204, 1205, 1244, 1207, 116, 3060 1470, 1509, 1560, 1511, 1213, 199, 1564, 1216, 202, 203, 3061 109, 1008, 109, 207, 95, 216, 937, 131, 109, 109, 3062 131, 116, 131, 814, 945, 1523, 158, 109, 114, 109, 3063 50, 131, 52, 824, 228, 55, 56, 57, 232, 59, 3064 234, 111, 963, 111, 108, 114, 131, 114, 839, 243, 3065 109, 109, 131, 1523, 74, 249, 109, 1539, 109, 1225, 3066 254, 1058, 1076, 569, 1225, 570, 86, 87, 925, 270, 3067 264, 571, 241, 1492, 63, 573, 277, 1382, 272, 572, 3068 25, 26, 27, 1564, 73, 1313, 1136, 219, 1342, 1470, 3069 1337, 10, 11, 12, 13, 14, 10, 11, 12, 13, 3070 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3071 24, 25, 26, 27, 1092, 29, 30, 31, 452, 38, 3072 452, 945, 704, 464, 38, 257, 115, 893, 1463, 261, 3073 947, 992, 589, 965, 657, 1470, 1133, 747, 1244, 490, 3074 757, 577, -1, -1, 577, 346, 340, 66, 577, 343, 3075 -1, 96, 66, 98, 1320, 349, -1, -1, -1, 73, 3076 74, -1, 363, 77, -1, -1, 367, 1376, 362, 158, 3077 -1, -1, 366, -1, -1, 369, -1, 10, 11, 12, 3078 13, 14, -1, -1, -1, -1, -1, -1, 1523, 108, 3079 -1, 110, -1, 1440, 1191, 1192, 110, -1, -1, 118, 3080 -1, -1, -1, -1, 118, 38, -1, -1, 1374, 378, 3081 -1, 1377, -1, -1, -1, 1072, 348, -1, -1, -1, 3082 -1, -1, 416, -1, -1, 1472, -1, 1474, -1, 430, 3083 219, -1, -1, 66, 179, -1, -1, 431, -1, -1, 3084 -1, -1, 436, -1, 189, 190, -1, 1038, 1039, 194, 3085 444, 196, 197, -1, -1, -1, 1422, -1, -1, -1, 3086 -1, 1427, 1509, -1, 1511, -1, -1, -1, 257, -1, 3087 -1, -1, 261, -1, -1, 108, 470, 110, -1, 473, 3088 -1, -1, -1, -1, -1, 118, -1, -1, 277, -1, 3089 459, 1457, 1539, -1, 488, 464, 490, 429, -1, 10, 3090 11, 12, 13, 14, 498, 1096, 1097, -1, 502, -1, 3091 -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 3092 13, 14, -1, 343, 344, -1, -1, 38, 497, 71, 3093 499, 73, 74, 75, -1, 355, 356, 531, 532, -1, 3094 82, 83, -1, -1, -1, 38, -1, 479, -1, -1, 3095 -1, -1, -1, -1, -1, 66, -1, -1, -1, 348, 3096 71, -1, 73, 74, 75, -1, 108, -1, 110, -1, 3097 -1, 82, 83, 66, 116, -1, 118, 1543, 71, -1, 3098 73, 74, 75, 1549, 578, -1, -1, -1, -1, 82, 3099 83, -1, -1, -1, 1560, 596, -1, 108, 1564, 110, 3100 -1, -1, 596, 597, 1401, 599, -1, 118, -1, -1, 3101 -1, -1, -1, -1, -1, 108, 610, 110, -1, -1, 3102 -1, 1418, -1, -1, -1, 118, -1, -1, 629, -1, 3103 -1, -1, -1, -1, 628, -1, -1, -1, -1, 633, 3104 429, -1, -1, -1, 645, 639, -1, 1238, 642, 643, 3105 644, -1, -1, -1, -1, 1312, -1, 446, -1, 660, 3106 71, -1, 73, 74, 75, -1, -1, 661, -1, -1, 3107 602, 82, 83, -1, -1, -1, -1, -1, -1, 1270, 3108 -1, -1, 651, -1, -1, 679, -1, 1278, 1279, 1280, 3109 479, -1, -1, -1, 1491, 1492, 690, 108, 630, 110, 3110 -1, 695, 696, 635, -1, 699, -1, 118, -1, -1, 3111 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3112 19, 20, 21, 22, 23, 24, 25, 26, 0, -1, 3113 29, 30, 31, -1, -1, 1326, -1, -1, 732, 38, 3114 39, 735, -1, 712, -1, -1, -1, -1, -1, 718, 3115 744, -1, -1, 747, -1, 0, 757, -1, -1, 31, 3116 71, -1, 73, 74, 75, -1, -1, 66, -1, -1, 3117 -1, 82, 83, -1, 73, 74, -1, 771, 772, -1, 3118 -1, -1, -1, 777, -1, -1, 31, -1, -1, -1, 3119 -1, 723, -1, -1, 66, -1, -1, 108, -1, 110, 3120 -1, -1, -1, -1, -1, 737, -1, 118, 1529, -1, 3121 -1, 110, -1, 602, 1471, 114, 1473, -1, -1, 118, 3122 814, 66, -1, -1, -1, -1, -1, -1, -1, -1, 3123 824, -1, -1, 827, -1, 829, 581, 582, 832, 833, 3124 834, 630, -1, -1, -1, 839, 635, -1, -1, -1, 3125 -1, 1508, -1, 1510, -1, 849, 71, -1, 73, 74, 3126 75, -1, -1, -1, -1, -1, 611, 82, 83, 614, 3127 615, -1, 617, -1, 619, 620, -1, -1, -1, 624, 3128 625, -1, 154, 96, 97, 98, 99, 100, 101, 102, 3129 103, 104, 105, 108, -1, -1, 1553, -1, 1555, 831, 3130 -1, -1, -1, 118, 724, -1, 726, 901, -1, 154, 3131 -1, 1568, 1569, 733, 734, -1, -1, 130, 738, -1, 3132 -1, -1, 923, -1, 893, -1, 187, -1, -1, 923, 3133 750, 900, -1, 194, 723, 755, -1, -1, 10, 11, 3134 12, 13, 14, -1, -1, -1, -1, -1, 737, -1, 3135 -1, -1, -1, -1, -1, -1, 228, -1, -1, -1, 3136 -1, 781, -1, 708, 709, 959, 38, -1, 757, 714, 3137 -1, -1, -1, 967, 968, -1, -1, 249, -1, -1, 3138 -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, 3139 -1, 985, -1, -1, 66, -1, -1, -1, -1, 71, 3140 -1, 73, 74, 75, 249, 266, 826, -1, -1, 254, 3141 82, 83, -1, -1, -1, -1, 25, 26, 27, -1, 3142 -1, -1, -1, 992, -1, -1, 1020, -1, -1, -1, 3143 -1, -1, -1, -1, -1, -1, 108, -1, 110, 1033, 3144 -1, -1, 831, -1, 1038, 1039, 118, 1041, 1042, -1, 3145 -1, -1, -1, -1, 10, 11, 12, 13, 14, -1, 3146 -1, 322, -1, 883, 884, 885, 886, 1061, 888, 330, 3147 -1, -1, 333, -1, -1, -1, -1, 349, -1, -1, 3148 -1, -1, 38, -1, 904, -1, -1, 96, -1, 98, 3149 -1, 1023, -1, -1, -1, -1, -1, -1, 918, -1, 3150 -1, -1, 1096, 1097, 349, -1, -1, -1, 1102, -1, 3151 66, -1, -1, -1, 123, 71, -1, 73, 74, 75, 3152 -1, -1, -1, 1092, -1, -1, 82, 83, -1, -1, 3153 -1, -1, -1, -1, -1, 396, -1, 957, -1, 400, 3154 -1, -1, -1, -1, 416, -1, -1, -1, -1, -1, 3155 -1, -1, 108, -1, -1, -1, -1, -1, -1, 431, 3156 -1, -1, 118, -1, 436, -1, 1160, -1, -1, -1, 3157 179, 416, 444, -1, -1, -1, -1, 997, 187, -1, 3158 189, 190, -1, -1, 1004, 194, 431, 196, 197, 1009, 3159 -1, 436, -1, -1, 1014, -1, 1016, -1, 470, 444, 3160 1020, 1021, 1022, -1, -1, 1025, -1, -1, -1, 1203, 3161 -1, -1, -1, -1, 1034, -1, 488, -1, 490, 1220, 3162 -1, -1, -1, -1, 485, 470, 1220, -1, -1, 1198, 3163 -1, 1225, 1052, 1053, 1023, -1, -1, -1, 10, 11, 3164 12, 13, 14, 488, 1238, 490, 1240, -1, -1, -1, 3165 1244, -1, -1, -1, -1, -1, -1, 266, -1, 1079, 3166 532, -1, 1082, -1, -1, -1, 38, -1, -1, -1, 3167 1202, -1, -1, -1, -1, -1, 1270, -1, -1, -1, 3168 -1, -1, -1, -1, 1278, 1279, 1280, 532, -1, -1, 3169 -1, -1, -1, -1, 66, 1289, 1290, -1, -1, 71, 3170 1120, 73, 74, 75, -1, -1, 1126, 1127, -1, 1303, 3171 82, 83, -1, -1, -1, -1, 577, 578, 1138, -1, 3172 -1, -1, -1, 1143, -1, 597, 1146, -1, 1148, -1, 3173 -1, 1151, 1326, -1, -1, -1, 108, -1, -1, -1, 3174 -1, -1, -1, 1337, 1164, -1, 118, -1, -1, -1, 3175 -1, -1, 597, 1098, -1, -1, -1, 1177, -1, 1179, 3176 1180, 1181, 1182, -1, -1, -1, 1298, -1, -1, -1, 3177 642, 643, 644, -1, -1, 1195, -1, 1197, -1, -1, 3178 -1, 1201, -1, -1, -1, -1, -1, -1, -1, 661, 3179 -1, -1, -1, -1, -1, 1396, -1, 642, 643, 644, 3180 -1, -1, -1, -1, -1, 666, -1, 679, -1, 670, 3181 1230, 1231, -1, 1202, -1, -1, 661, -1, 690, -1, 3182 1414, -1, 0, -1, 696, -1, -1, -1, -1, -1, 3183 -1, -1, -1, -1, 679, -1, -1, -1, -1, -1, 3184 -1, -1, 703, -1, -1, 690, 1440, -1, -1, 0, 3185 -1, 696, -1, 31, -1, 0, 1, -1, -1, -1, 3186 732, 1281, 1282, 735, -1, -1, -1, -1, -1, 1463, 3187 -1, 1291, -1, -1, -1, -1, 1470, 1222, -1, -1, 3188 31, -1, -1, -1, -1, -1, 31, 732, 66, -1, 3189 735, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3190 772, -1, -1, -1, -1, -1, -1, -1, -1, 1298, 3191 -1, -1, -1, -1, -1, 66, -1, -1, 63, -1, 3192 -1, 66, -1, 1343, -1, -1, -1, 772, -1, 1523, 3193 -1, -1, -1, -1, -1, 1355, 1530, 1357, 1358, 1359, 3194 -1, -1, 814, -1, -1, -1, -1, -1, -1, 1369, 3195 -1, -1, 824, -1, -1, 827, -1, 818, 1378, -1, 3196 832, -1, 834, -1, -1, -1, -1, 839, -1, 814, 3197 -1, -1, 581, 582, 1394, -1, 154, -1, -1, 824, 3198 -1, -1, 827, -1, -1, -1, -1, 832, -1, 834, 3199 -1, -1, -1, -1, 839, -1, -1, -1, -1, -1, 3200 -1, -1, 611, 154, -1, 614, 615, -1, 617, 154, 3201 619, 620, -1, -1, -1, 624, 625, -1, -1, -1, 3202 -1, -1, -1, -1, -1, -1, -1, -1, -1, 901, 3203 1450, 1451, -1, -1, -1, -1, -1, -1, -1, -1, 3204 -1, -1, -1, 1463, -1, -1, -1, -1, -1, -1, 3205 1470, -1, -1, -1, -1, -1, 901, -1, -1, -1, 3206 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3207 931, 249, -1, -1, 219, -1, 254, -1, -1, -1, 3208 -1, -1, -1, 1503, -1, -1, -1, 1507, -1, -1, 3209 -1, -1, -1, -1, 703, -1, -1, -1, 249, 708, 3210 709, -1, -1, 254, 249, 714, -1, -1, -1, -1, 3211 -1, -1, -1, 985, -1, -1, 1536, -1, 1538, -1, 3212 -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3213 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3214 985, 29, 30, 31, -1, -1, 1566, 1567, -1, 1010, 3215 38, 39, -1, -1, 1574, 1575, -1, -1, -1, -1, 3216 -1, -1, -1, -1, -1, 1026, 1038, 1039, -1, 1041, 3217 1042, 349, -1, -1, -1, -1, -1, -1, 66, -1, 3218 -1, -1, -1, -1, -1, 73, 74, -1, -1, 1061, 3219 -1, -1, -1, 1038, 1039, -1, 1041, 1042, 349, 10, 3220 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3221 21, 22, 23, 24, 25, 26, 1061, -1, 29, 30, 3222 31, -1, 110, -1, 1096, 1097, 114, 38, -1, -1, 3223 118, -1, -1, -1, -1, -1, -1, -1, 416, -1, 3224 -1, -1, 1103, -1, -1, -1, -1, -1, -1, -1, 3225 -1, 1096, 1097, 431, -1, 66, -1, -1, 436, -1, 3226 71, -1, 73, 74, 75, 416, 444, -1, -1, -1, 3227 -1, 82, 83, -1, -1, -1, -1, -1, -1, -1, 3228 431, -1, -1, -1, -1, 436, 431, -1, 1160, -1, 3229 -1, -1, 470, 444, -1, -1, -1, 108, -1, 110, 3230 -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, 3231 488, -1, 490, -1, -1, 1160, -1, -1, -1, 470, 3232 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3233 -1, 1203, -1, -1, -1, -1, -1, 488, -1, 490, 3234 -1, -1, -1, -1, -1, 490, -1, -1, -1, -1, 3235 -1, -1, -1, 1225, 532, -1, -1, -1, 1203, -1, 3236 -1, -1, -1, -1, -1, -1, 1238, -1, 1240, -1, 3237 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3238 1225, 532, -1, -1, -1, -1, -1, 532, -1, -1, 3239 -1, -1, -1, 1238, -1, 1240, -1, -1, 1270, -1, 3240 -1, -1, -1, -1, -1, -1, 1278, 1279, 1280, -1, 3241 -1, -1, -1, -1, -1, -1, -1, 1289, 1290, 597, 3242 -1, -1, -1, -1, -1, 1270, -1, -1, -1, -1, 3243 -1, 1303, -1, 1278, 1279, 1280, -1, -1, -1, -1, 3244 -1, -1, -1, -1, 1289, 1290, 597, -1, -1, -1, 3245 -1, -1, 597, -1, 1326, -1, -1, -1, 1303, -1, 3246 -1, -1, -1, -1, 642, 643, 644, -1, -1, -1, 3247 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3248 -1, 1326, -1, 661, -1, -1, -1, -1, -1, 1098, 3249 -1, 642, 643, 644, -1, -1, -1, 642, 643, 644, 3250 -1, 679, -1, -1, -1, -1, -1, -1, -1, -1, 3251 661, -1, 690, -1, -1, -1, 661, -1, 696, -1, 3252 -1, -1, -1, -1, -1, -1, -1, -1, 679, 7, 3253 -1, -1, 10, 11, 12, 13, 14, -1, -1, 690, 3254 -1, -1, 1414, -1, -1, 696, -1, -1, -1, -1, 3255 -1, -1, -1, -1, 732, -1, -1, 735, 36, 37, 3256 38, 39, -1, -1, -1, -1, -1, -1, -1, 1414, 3257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3258 -1, 732, -1, -1, 735, -1, -1, 65, 66, -1, 3259 735, 1463, -1, 71, 772, -1, -1, 75, 1470, -1, 3260 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3261 -1, -1, -1, 1222, -1, 93, -1, -1, 1463, -1, 3262 -1, 772, -1, -1, -1, 1470, -1, -1, -1, -1, 3263 108, -1, 110, -1, -1, -1, 814, -1, -1, 117, 3264 118, 119, 120, 121, 122, -1, 824, -1, -1, 827, 3265 -1, 1523, -1, -1, 832, -1, 834, -1, -1, -1, 3266 -1, 839, -1, 814, -1, -1, -1, -1, -1, -1, 3267 -1, -1, -1, 824, -1, -1, 827, -1, 1523, -1, 3268 -1, 832, 827, 834, -1, -1, -1, -1, 839, 834, 3269 -1, -1, -1, -1, -1, 0, -1, -1, 3, 4, 3270 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3271 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3272 25, 26, -1, 901, 29, 30, 31, 32, -1, -1, 3273 35, -1, -1, 38, 39, -1, -1, -1, -1, 10, 3274 11, 12, 13, 14, -1, 10, 11, 12, 13, 14, 3275 901, -1, -1, -1, -1, -1, 901, -1, 63, -1, 3276 -1, 66, 44, 68, -1, 70, 71, 38, 73, 74, 3277 75, -1, -1, 38, -1, -1, -1, 82, 83, -1, 3278 -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, 3279 -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, 3280 71, 66, -1, 108, 75, 110, 71, 985, -1, -1, 3281 75, 82, 83, 118, -1, -1, -1, 82, 83, -1, 3282 -1, -1, -1, 968, -1, -1, -1, 109, -1, -1, 3283 -1, -1, -1, 115, 985, -1, -1, 108, -1, -1, 3284 985, -1, -1, 108, -1, -1, -1, 118, -1, -1, 3285 -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, 3286 1038, 1039, 144, 1041, 1042, -1, -1, -1, -1, -1, 3287 -1, -1, 154, -1, -1, -1, 158, -1, -1, -1, 3288 -1, -1, -1, 1061, -1, -1, -1, 1038, 1039, -1, 3289 1041, 1042, -1, -1, -1, -1, 1041, 1042, -1, -1, 3290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3291 1061, -1, -1, -1, -1, -1, 1061, -1, 1096, 1097, 3292 -1, -1, -1, -1, -1, 207, -1, -1, -1, -1, 3293 -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, 3294 -1, -1, -1, -1, -1, 1096, 1097, -1, -1, -1, 3295 -1, 36, 37, -1, 39, 237, 238, 10, 11, 12, 3296 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3297 23, 24, 25, 26, -1, -1, 29, 30, 31, 261, 3298 65, -1, 1160, -1, -1, 38, 71, 269, -1, -1, 3299 75, -1, -1, 78, 79, 80, 81, 82, 83, -1, 3300 85, 86, -1, -1, -1, -1, -1, -1, 93, 1160, 3301 -1, 293, -1, 66, 296, -1, -1, -1, -1, -1, 3302 73, 74, -1, 108, -1, 1203, -1, -1, -1, -1, 3303 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3304 -1, -1, -1, -1, -1, -1, -1, 1225, -1, -1, 3305 -1, -1, 1203, -1, -1, -1, -1, 1202, 1203, -1, 3306 1238, 343, 1240, -1, -1, 118, 348, -1, -1, -1, 3307 -1, -1, -1, -1, 1225, -1, -1, -1, -1, -1, 3308 1225, -1, -1, -1, -1, -1, -1, 1238, -1, 1240, 3309 -1, -1, 1270, -1, -1, -1, -1, -1, -1, 1244, 3310 1278, 1279, 1280, -1, -1, -1, -1, -1, -1, -1, 3311 -1, 1289, 1290, -1, -1, -1, -1, -1, -1, 1270, 3312 -1, -1, -1, -1, -1, 1303, -1, 1278, 1279, 1280, 3313 -1, -1, -1, -1, -1, -1, -1, -1, 1289, 1290, 3314 -1, -1, 424, 425, 1289, 1290, -1, -1, 1326, 431, 3315 -1, -1, 1303, 1298, -1, -1, -1, -1, 1303, -1, 3316 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3317 452, -1, -1, 455, -1, 1326, -1, -1, -1, 461, 3318 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3319 -1, -1, 1337, -1, -1, -1, -1, -1, -1, -1, 3320 -1, -1, -1, -1, -1, -1, 488, -1, -1, -1, 3321 63, -1, -1, -1, -1, -1, -1, -1, 500, -1, 3322 73, -1, 75, -1, 77, -1, -1, -1, -1, -1, 3323 512, 84, 514, -1, -1, 517, 1414, 519, 520, -1, 3324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3325 532, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3326 -1, -1, 115, 1414, 117, 118, 119, -1, -1, 1414, 3327 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3328 -1, -1, -1, -1, -1, 1463, -1, 43, -1, -1, 3329 -1, -1, 1470, -1, -1, 1440, -1, -1, -1, -1, 3330 -1, -1, -1, 585, -1, 158, -1, -1, -1, -1, 3331 -1, -1, 1463, -1, -1, 597, -1, 599, 1463, 1470, 3332 602, -1, -1, -1, -1, 1470, -1, -1, -1, -1, 3333 -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, 3334 -1, -1, -1, 99, -1, 1523, 628, -1, -1, -1, 3335 -1, 633, -1, -1, -1, -1, -1, -1, -1, -1, 3336 642, 643, 644, -1, -1, -1, 219, -1, 221, 222, 3337 223, -1, 1523, -1, -1, -1, -1, -1, 1523, 661, 3338 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3339 19, 20, 21, 22, 23, 24, 25, 26, 27, 155, 3340 29, 30, 31, -1, 257, -1, -1, -1, 261, 38, 3341 -1, -1, -1, 169, 696, -1, -1, -1, -1, -1, 3342 -1, -1, -1, -1, 277, -1, -1, -1, -1, -1, 3343 -1, -1, -1, -1, -1, 717, 192, 66, -1, -1, 3344 -1, -1, -1, -1, 73, 74, -1, -1, 77, -1, 3345 206, -1, -1, 735, -1, 737, -1, -1, -1, 215, 3346 -1, -1, -1, -1, -1, -1, -1, -1, -1, 225, 3347 -1, -1, -1, -1, 327, -1, -1, -1, -1, 108, 3348 -1, 110, 36, 37, -1, 39, -1, -1, -1, 118, 3349 772, -1, -1, -1, 250, 348, -1, -1, -1, 255, 3350 353, 354, -1, -1, -1, -1, -1, -1, 361, -1, 3351 -1, 65, 268, -1, -1, -1, -1, 71, 274, -1, 3352 276, 75, -1, -1, 78, 79, 80, 81, 82, 83, 3353 -1, 85, 86, -1, -1, -1, -1, -1, 294, 93, 3354 -1, -1, -1, -1, -1, 827, -1, -1, -1, 831, 3355 -1, 404, 834, -1, 108, -1, 110, -1, -1, 113, 3356 -1, -1, -1, 117, 118, 119, 120, 121, 122, 422, 3357 -1, -1, -1, -1, 427, -1, 429, -1, -1, -1, 3358 -1, 337, -1, -1, -1, -1, 342, -1, -1, -1, 3359 -1, -1, -1, 446, -1, -1, 449, 450, -1, -1, 3360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3361 -1, -1, 465, -1, 370, -1, -1, -1, 374, 375, 3362 -1, 377, -1, -1, -1, -1, 479, -1, 384, 385, 3363 -1, 387, 388, 486, 390, -1, 392, -1, -1, -1, 3364 -1, -1, -1, 7, -1, 927, 10, 11, 12, 13, 3365 14, -1, -1, 409, -1, -1, -1, -1, -1, -1, 3366 -1, 417, -1, -1, -1, -1, -1, -1, -1, -1, 3367 -1, -1, 36, 37, 38, 39, -1, -1, -1, -1, 3368 -1, -1, -1, -1, -1, -1, 442, 969, -1, -1, 3369 -1, -1, -1, -1, -1, -1, -1, 453, -1, -1, 3370 -1, 65, 66, 985, -1, -1, -1, 71, -1, -1, 3371 -1, 75, -1, -1, 78, 79, 80, 81, 82, 83, 3372 476, 85, 86, -1, -1, -1, 482, -1, -1, 93, 3373 -1, 487, -1, -1, -1, -1, -1, -1, 1020, -1, 3374 -1, -1, -1, -1, 108, -1, 110, -1, -1, 602, 3375 -1, -1, -1, 117, 118, 119, 120, 121, 122, 1041, 3376 1042, -1, -1, -1, -1, -1, -1, -1, 524, -1, 3377 -1, -1, -1, -1, -1, -1, -1, 630, 280, -1, 3378 282, 283, 635, -1, 540, -1, -1, -1, 290, 291, 3379 -1, -1, -1, 295, 296, -1, -1, -1, -1, -1, 3380 -1, -1, -1, -1, -1, 307, -1, -1, -1, -1, 3381 -1, -1, -1, -1, -1, 36, 37, -1, 39, 1101, 3382 -1, 577, -1, -1, -1, -1, -1, -1, -1, -1, 3383 586, -1, -1, -1, -1, -1, -1, 593, -1, -1, 3384 -1, 343, 598, -1, 65, -1, -1, -1, -1, -1, 3385 71, -1, -1, 609, 75, -1, -1, 78, 79, 80, 3386 81, 82, 83, -1, 85, 86, -1, -1, -1, -1, 3387 723, -1, 93, -1, -1, -1, -1, 379, 1160, -1, 3388 -1, -1, -1, -1, 737, -1, -1, 108, -1, 110, 3389 -1, -1, -1, -1, 650, 116, 117, 118, 119, 120, 3390 121, 122, -1, -1, 757, -1, -1, -1, -1, -1, 3391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3392 1202, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3393 686, -1, -1, -1, -1, 10, 11, 12, 13, 14, 3394 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3395 25, 26, 27, -1, 29, 30, 31, -1, 1240, -1, 3396 -1, -1, -1, 38, -1, 818, -1, -1, -1, -1, 3397 -1, -1, -1, -1, -1, -1, -1, -1, 831, -1, 3398 -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, 3399 -1, 66, -1, -1, -1, 751, 752, 850, 73, 74, 3400 -1, -1, 77, -1, -1, -1, -1, 1289, 1290, 765, 3401 -1, -1, -1, -1, -1, -1, 1298, -1, -1, -1, 3402 -1, -1, -1, -1, -1, -1, 782, -1, 784, -1, 3403 -1, -1, 788, 108, -1, 110, -1, -1, -1, -1, 3404 -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, 3405 -1, -1, -1, -1, 556, 557, 558, 559, 560, 561, 3406 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 3407 572, 573, -1, -1, -1, -1, -1, -1, -1, -1, 3408 36, 37, -1, 39, 937, -1, -1, -1, -1, -1, 3409 -1, -1, -1, -1, -1, -1, -1, 599, 854, -1, 3410 -1, -1, -1, -1, -1, 861, -1, -1, -1, 65, 3411 963, -1, -1, -1, -1, 71, -1, -1, 874, 75, 3412 876, -1, 78, 79, 80, 81, 82, 83, -1, 85, 3413 86, -1, 1414, -1, 890, -1, -1, 93, 991, -1, 3414 -1, 897, -1, -1, -1, -1, -1, -1, -1, -1, 3415 -1, -1, 108, 909, 110, -1, 912, -1, -1, 115, 3416 -1, 117, 118, 119, 120, 121, 122, -1, -1, -1, 3417 1023, -1, -1, -1, 930, -1, -1, -1, -1, -1, 3418 -1, 1034, -1, -1, -1, -1, -1, -1, -1, -1, 3419 1472, -1, 1474, -1, -1, -1, 698, -1, 10, 11, 3420 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3421 22, 23, 24, 25, 26, 27, -1, -1, 720, -1, 3422 -1, -1, -1, -1, -1, -1, 38, 1509, -1, 1511, 3423 -1, 733, 10, 11, 12, 13, 14, 15, 16, 17, 3424 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3425 -1, 29, 30, 31, 66, -1, -1, 1539, -1, -1, 3426 38, -1, 1115, 1019, -1, 77, -1, -1, -1, 153, 3427 154, -1, -1, -1, -1, -1, -1, 779, -1, -1, 3428 -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, 3429 -1, -1, -1, 71, -1, 73, 74, 75, -1, 77, 3430 -1, -1, -1, 187, 82, 83, -1, -1, -1, 811, 3431 194, -1, -1, -1, -1, -1, -1, -1, -1, 1075, 3432 -1, -1, -1, -1, 826, -1, 1082, -1, -1, -1, 3433 108, -1, 110, -1, -1, -1, -1, -1, -1, -1, 3434 118, 36, 37, -1, 39, -1, -1, -1, -1, 1202, 3435 -1, -1, -1, -1, -1, 1111, -1, -1, -1, -1, 3436 1116, -1, -1, -1, -1, -1, -1, -1, 1124, -1, 3437 65, -1, -1, -1, -1, -1, 71, -1, 73, 74, 3438 75, -1, 266, 78, 79, 80, 81, 82, 83, -1, 3439 85, 86, -1, -1, -1, -1, -1, -1, 93, 1155, 3440 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3441 -1, 1167, -1, 108, 1170, 110, 1172, 112, 113, -1, 3442 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3443 1186, 1187, -1, -1, -1, -1, -1, -1, 322, -1, 3444 -1, -1, -1, -1, -1, 1298, 330, 331, -1, 333, 3445 334, -1, 1208, -1, -1, -1, -1, -1, -1, 343, 3446 -1, -1, -1, 347, -1, -1, -1, -1, -1, -1, 3447 -1, -1, -1, -1, -1, 977, -1, -1, -1, 1235, 3448 144, -1, 366, -1, -1, 369, -1, -1, -1, -1, 3449 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3450 -1, -1, 166, 167, -1, -1, 1008, -1, -1, -1, 3451 -1, -1, 396, -1, -1, -1, 400, -1, 1020, 4, 3452 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3453 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3454 25, 26, -1, -1, 29, 30, 31, 431, -1, -1, 3455 -1, -1, -1, 38, -1, -1, -1, -1, -1, 1061, 3456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3457 454, -1, -1, 237, -1, -1, 1332, -1, 1334, -1, 3458 -1, 66, -1, 68, -1, 70, -1, -1, 73, 74, 3459 -1, 1347, -1, 1349, -1, -1, -1, -1, 262, -1, 3460 -1, 485, -1, -1, 488, -1, -1, -1, -1, -1, 3461 -1, 1367, -1, -1, -1, -1, -1, -1, -1, -1, 3462 -1, -1, -1, -1, 109, 110, -1, 1383, 1384, -1, 3463 -1, 1133, -1, 118, -1, -1, -1, -1, -1, 1395, 3464 -1, -1, 1398, -1, 528, -1, -1, 531, 532, -1, 3465 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3466 -1, -1, -1, -1, 1420, -1, -1, -1, -1, -1, 3467 -1, -1, -1, 1429, -1, 1177, 1432, -1, 1434, 1435, 3468 1436, -1, -1, -1, -1, -1, -1, -1, -1, 1191, 3469 1192, -1, -1, 577, 578, -1, -1, -1, -1, -1, 3470 -1, 1554, -1, -1, -1, -1, -1, -1, -1, -1, 3471 -1, -1, 596, 597, 378, 599, -1, -1, -1, -1, 3472 1476, -1, 1478, -1, 608, 1481, 610, 611, -1, -1, 3473 -1, -1, -1, 617, -1, -1, -1, -1, -1, -1, 3474 1496, -1, -1, 627, 628, -1, -1, -1, -1, 633, 3475 -1, -1, -1, -1, -1, -1, -1, -1, 642, 643, 3476 644, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3477 -1, -1, -1, -1, -1, -1, -1, 661, -1, -1, 3478 -1, -1, 666, 667, -1, -1, 670, 671, -1, -1, 3479 -1, -1, -1, 677, -1, -1, -1, -1, -1, -1, 3480 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3481 -1, 695, 696, 697, -1, 699, 480, -1, -1, 703, 3482 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3483 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3484 29, 30, 31, -1, -1, -1, -1, -1, -1, 38, 3485 -1, 735, 736, -1, -1, 519, -1, -1, -1, -1, 3486 -1, -1, -1, -1, -1, -1, -1, -1, 532, -1, 3487 -1, -1, -1, -1, -1, 539, -1, 66, 542, -1, 3488 -1, -1, -1, -1, 73, 74, -1, 771, 772, 553, 3489 554, -1, 776, 777, -1, -1, -1, -1, -1, 1401, 3490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3491 -1, 575, -1, -1, -1, -1, 1418, -1, -1, -1, 3492 -1, 585, -1, -1, -1, -1, -1, -1, 592, 118, 3493 -1, -1, -1, 597, 818, -1, -1, -1, -1, -1, 3494 -1, -1, -1, 827, -1, -1, -1, -1, -1, 833, 3495 834, -1, -1, -1, 838, -1, 840, -1, -1, -1, 3496 -1, -1, -1, -1, -1, -1, 850, -1, -1, -1, 3497 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3498 -1, -1, -1, 647, -1, -1, -1, -1, -1, 1491, 3499 1492, -1, 656, -1, -1, -1, -1, -1, -1, 3, 3500 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3501 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3502 24, 25, 26, -1, -1, 29, 30, 31, 32, -1, 3503 -1, 35, 696, -1, 38, 39, -1, -1, -1, 923, 3504 -1, -1, -1, -1, -1, -1, -1, 931, 36, 37, 3505 -1, 39, -1, 937, -1, -1, -1, -1, -1, 63, 3506 -1, 945, 66, -1, 68, -1, 70, 71, -1, 73, 3507 74, 75, -1, -1, 958, 959, -1, 65, 82, 83, 3508 -1, -1, -1, 71, -1, -1, -1, 75, -1, -1, 3509 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3510 -1, 985, -1, -1, 108, 93, 110, 991, 772, -1, 3511 774, -1, -1, -1, 118, -1, 780, -1, -1, -1, 3512 108, -1, 110, 787, -1, 113, 1010, 1011, -1, 117, 3513 118, 119, 120, 121, 122, -1, 1020, -1, -1, -1, 3514 -1, -1, 1026, 1027, -1, 1029, 1030, 1031, -1, -1, 3515 -1, -1, -1, -1, -1, -1, -1, 1041, 1042, -1, 3516 -1, -1, -1, -1, -1, -1, -1, 831, 832, -1, 3517 834, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3518 -1, -1, -1, -1, -1, 849, -1, -1, -1, -1, 4059 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 4060 -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, 3519 4061 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3520 4062 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3521 -1, -1, -1, -1, -1, -1, -1, -1, 1102, 1103, 3522 1104, -1, -1, -1, -1, 889, -1, -1, -1, 893, 3523 -1, 1115, -1, -1, -1, -1, 3, 4, 5, 6, 4063 -1, -1, -1, 67, -1, 69, -1, 71, 72, -1, 4064 74, 75, 76, -1, -1, -1, -1, -1, -1, 83, 4065 84, 3, 4, 5, 6, 7, 8, 9, 10, 11, 4066 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 4067 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 4068 32, -1, -1, -1, -1, -1, -1, 39, -1, -1, 4069 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4070 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4071 -1, -1, -1, -1, -1, 67, -1, 69, -1, 71, 4072 -1, -1, 74, 75, 3, 4, 5, 6, 7, 8, 4073 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 4074 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 4075 -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, 4076 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4077 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4078 -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, 4079 69, -1, 71, -1, -1, 74, 75, 4, 5, 6, 3524 4080 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3525 4081 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3526 -1, -1, 29, 30, 31, 32, -1, -1, 35, 36, 3527 37, 38, 39, 40, -1, 42, 1160, -1, 45, 46, 3528 47, 48, 49, 50, 51, 52, -1, -1, -1, 56, 3529 -1, -1, -1, 60, 61, -1, 63, -1, 65, 66, 3530 -1, 68, -1, 70, 71, 969, 73, 74, 75, -1, 3531 -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3532 -1, 985, 986, -1, -1, -1, 93, -1, 992, -1, 3533 -1, -1, 36, 37, 998, 39, 1220, 1001, -1, 1003, 3534 -1, 108, -1, 110, -1, -1, 113, -1, -1, -1, 3535 117, 118, 119, 120, 121, 122, 1240, -1, -1, 1023, 3536 127, 65, -1, -1, 131, -1, -1, 71, -1, -1, 3537 1034, 75, -1, -1, 78, 79, 80, 81, 82, 83, 3538 -1, 85, 86, -1, -1, -1, -1, -1, -1, 93, 3539 -1, -1, 1056, -1, 1058, -1, -1, -1, -1, -1, 3540 -1, -1, -1, -1, 108, 1289, 1290, -1, -1, 1073, 3541 1074, -1, -1, 117, 118, 119, 120, 121, 122, -1, 3542 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3543 1094, -1, -1, -1, -1, -1, -1, -1, 3, 4, 3544 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3545 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3546 25, 26, -1, -1, 29, 30, 31, 32, -1, -1, 3547 35, 36, 37, 38, 39, -1, -1, 1141, -1, -1, 3548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3549 36, 37, -1, 39, -1, -1, 1160, -1, -1, -1, 3550 65, 66, -1, 68, -1, 70, 71, -1, 73, 74, 3551 75, 1175, 1176, 78, 79, 80, 81, 82, 83, 65, 3552 85, 86, -1, -1, -1, 71, -1, -1, 93, 75, 3553 1414, -1, 78, 79, 80, 81, 82, 83, -1, 85, 3554 86, -1, -1, 108, -1, 110, -1, 93, -1, -1, 3555 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3556 -1, -1, 108, -1, 110, -1, 131, -1, -1, -1, 3557 -1, 117, 118, 119, 120, 121, 122, -1, -1, -1, 3558 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3559 -1, -1, 1256, -1, -1, -1, 3, 4, 5, 6, 3560 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3561 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3562 1504, -1, 29, 30, 31, 32, -1, -1, 35, 36, 3563 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 3564 -1, -1, -1, -1, -1, 1529, 1530, -1, -1, -1, 3565 -1, -1, -1, 1317, -1, 1319, -1, -1, 65, 66, 3566 -1, 68, -1, 70, 71, -1, 73, 74, 75, -1, 3567 1554, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3568 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 3569 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3570 -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, 3571 117, 118, 119, 120, 121, 122, -1, -1, 4, 5, 3572 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 4082 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 4083 -1, -1, 39, -1, 10, 11, 12, 13, 14, 15, 3573 4084 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3574 26, 1405, -1, 29, 30, 31, -1, -1, -1, -1, 3575 36, 37, 38, 39, -1, 10, 11, 12, 13, 14, 3576 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3577 25, 26, -1, -1, 29, 30, 31, -1, -1, 65, 3578 66, -1, 68, 38, 70, 71, -1, 73, 74, 75, 3579 -1, -1, 78, 79, 80, 81, 82, 83, -1, 85, 3580 86, -1, -1, -1, -1, -1, -1, 93, -1, -1, 3581 -1, 66, -1, -1, -1, -1, 71, -1, 73, 74, 3582 -1, -1, 108, 1487, 110, -1, -1, 82, 83, 115, 3583 -1, 117, 118, 119, 120, 121, 122, 4, 5, 6, 3584 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3585 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3586 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3587 37, 38, 39, -1, -1, 1539, -1, 10, 11, 12, 3588 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3589 23, 24, 25, 26, 27, -1, -1, -1, 65, 66, 3590 -1, 68, -1, 70, 71, 38, 73, 74, 75, -1, 3591 -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3592 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 3593 -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 3594 -1, 108, -1, 110, 77, -1, -1, -1, 115, -1, 3595 117, 118, 119, 120, 121, 122, 4, 5, 6, 7, 3596 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3597 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3598 -1, 29, 30, 31, -1, -1, -1, -1, 36, 37, 3599 38, 39, -1, 10, 11, 12, 13, 14, 15, 16, 3600 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3601 -1, -1, 29, 30, 31, -1, -1, 65, 66, -1, 3602 68, 38, 70, 71, -1, 73, 74, 75, -1, -1, 3603 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3604 -1, -1, -1, -1, -1, 93, -1, -1, -1, 66, 3605 -1, -1, -1, -1, -1, -1, 73, 74, -1, -1, 3606 108, -1, 110, -1, -1, -1, -1, 115, -1, 117, 3607 118, 119, 120, 121, 122, 4, 5, 6, 7, 8, 3608 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3609 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3610 29, 30, 31, -1, -1, -1, -1, 36, 37, 38, 3611 39, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3612 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3613 -1, 29, 30, 31, -1, -1, 65, 66, -1, 68, 3614 38, 70, 71, -1, 73, 74, 75, -1, -1, 78, 3615 79, 80, 81, 82, 83, -1, 85, 86, -1, -1, 3616 -1, -1, -1, -1, 93, -1, -1, -1, 66, -1, 3617 -1, -1, -1, -1, -1, 73, 74, -1, -1, 108, 3618 -1, 110, -1, -1, -1, -1, -1, -1, 117, 118, 3619 119, 120, 121, 122, 4, 5, 6, 7, 8, 9, 3620 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3621 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3622 30, 31, -1, -1, -1, -1, 36, 37, 38, 39, 3623 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3624 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3625 -1, -1, -1, -1, -1, 65, 66, -1, 68, 38, 3626 70, 71, -1, 73, 74, 75, -1, -1, 78, 79, 3627 80, 81, 82, 83, -1, 85, 86, -1, -1, -1, 3628 -1, -1, -1, 93, -1, -1, -1, 66, -1, -1, 3629 -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, 3630 110, -1, -1, -1, -1, -1, -1, 117, 118, 119, 3631 120, 121, 122, 4, 5, 6, 7, 8, 9, 10, 3632 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3633 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3634 31, -1, -1, -1, -1, 36, 37, 38, 39, -1, 4085 26, 27, -1, -1, 30, 31, 32, 33, 34, 35, 4086 67, -1, 69, 39, 71, -1, -1, 74, 75, -1, 3635 4087 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3636 4088 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3637 -1, -1, -1, -1, 65, 66, -1, 68, -1, 70, 3638 71, -1, 73, 74, 75, -1, -1, 78, 79, 80, 3639 81, 82, 83, -1, 85, 86, -1, -1, -1, -1, 3640 -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 3641 -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, 3642 -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, 3643 121, 122, 4, 5, 6, 7, 8, 9, 10, 11, 3644 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3645 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3646 -1, -1, -1, -1, 36, 37, 38, 39, -1, -1, 3647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3648 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3649 -1, -1, -1, 65, 66, -1, 68, -1, 70, 71, 3650 -1, 73, 74, 75, -1, -1, 78, 79, 80, 81, 3651 82, 83, -1, 85, 86, -1, -1, -1, -1, -1, 3652 -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 3653 -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, 3654 -1, -1, -1, -1, -1, 117, 118, 119, 120, 121, 3655 122, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3656 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3657 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3658 32, -1, -1, 35, -1, -1, 38, 39, -1, -1, 3659 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3660 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3661 -1, 63, -1, -1, 66, -1, 68, -1, 70, 71, 3662 -1, 73, 74, 75, -1, -1, -1, -1, -1, -1, 3663 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, 3664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3665 -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, 3666 -1, -1, 114, -1, -1, -1, 118, 3, 4, 5, 3667 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3668 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3669 26, -1, -1, 29, 30, 31, -1, -1, -1, -1, 3670 -1, -1, 38, 10, 11, 12, 13, 14, 15, 16, 3671 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3672 -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, 3673 66, 38, 68, -1, 70, 71, -1, 73, 74, 75, 3674 -1, -1, -1, -1, -1, -1, 82, 83, -1, -1, 3675 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 3676 -1, -1, -1, -1, -1, -1, 73, 74, -1, -1, 3677 -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, 3678 -1, -1, 118, 3, 4, 5, 6, 7, 8, 9, 3679 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3680 20, 21, 22, 23, 24, 25, 26, 27, -1, 29, 3681 30, 31, 32, -1, -1, 35, -1, -1, 38, -1, 3682 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3683 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3684 -1, -1, -1, -1, -1, -1, 66, -1, 68, -1, 3685 70, -1, -1, 73, 74, -1, -1, 77, -1, 3, 3686 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3687 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3688 24, 25, 26, -1, -1, 29, 30, 31, 32, -1, 3689 110, 35, -1, -1, 38, -1, -1, -1, 118, -1, 3690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3692 -1, -1, 66, -1, 68, -1, 70, -1, -1, 73, 3693 74, -1, 3, 4, 5, 6, 7, 8, 9, 10, 3694 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3695 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3696 31, -1, -1, -1, -1, -1, 110, 38, -1, -1, 3697 -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, 3698 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3699 -1, -1, -1, -1, -1, 66, -1, 68, -1, 70, 3700 -1, -1, 73, 74, 4, 5, 6, 7, 8, 9, 3701 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3702 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3703 30, 31, -1, -1, -1, -1, -1, -1, 38, 110, 3704 -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, 3705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3706 -1, -1, -1, -1, -1, -1, 66, -1, 68, -1, 3707 70, 71, -1, 73, 74, 75, -1, -1, -1, -1, 3708 -1, -1, 82, 83, -1, -1, 10, 11, 12, 13, 3709 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3710 24, 25, 26, -1, -1, 29, 30, 31, 108, -1, 3711 110, -1, -1, -1, 38, -1, -1, -1, 118, 4, 3712 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3713 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3714 25, 26, 66, -1, 29, 30, 31, 71, -1, 73, 3715 74, 75, -1, 38, -1, -1, -1, -1, 82, 83, 3716 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3717 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3718 -1, 66, -1, 68, 108, 70, 110, -1, 73, 74, 3719 -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, 3720 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3721 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3722 -1, -1, -1, -1, -1, 110, -1, -1, -1, -1, 3723 -1, -1, -1, 118, 4, 5, 6, 7, 8, 9, 3724 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3725 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3726 30, 31, -1, -1, -1, -1, -1, -1, 38, -1, 3727 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3728 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3729 -1, -1, 29, 30, 31, -1, 66, -1, 68, -1, 3730 70, 38, -1, 73, 74, -1, -1, -1, -1, -1, 3731 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3732 -1, -1, -1, -1, -1, 95, -1, -1, -1, 66, 3733 -1, -1, -1, -1, 71, -1, 73, 74, 75, -1, 3734 110, -1, -1, -1, -1, 82, 83, -1, 118, 4, 3735 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3736 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3737 25, 26, -1, 110, 29, 30, 31, -1, -1, -1, 3738 -1, 118, -1, 38, -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, -1, -1, -1, 3741 -1, 66, -1, 68, -1, 70, -1, -1, 73, 74, 3742 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3743 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3744 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3745 -1, -1, -1, -1, 38, 110, -1, -1, -1, -1, 3746 -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, 3747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3748 -1, -1, 66, -1, 68, -1, 70, -1, -1, 73, 3749 74, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3750 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3751 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3752 -1, -1, -1, -1, -1, 38, 110, -1, -1, -1, 3753 -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, 3754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3755 -1, -1, -1, 66, -1, 68, -1, 70, -1, -1, 3756 73, 74, 4, 5, 6, 7, 8, 9, 10, 11, 3757 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3758 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3759 -1, -1, -1, -1, -1, -1, 38, 110, -1, -1, 3760 -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, 3761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3762 -1, -1, -1, -1, 66, -1, 68, -1, 70, -1, 3763 -1, 73, 74, 10, 11, 12, 13, 14, 15, 16, 3764 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3765 -1, -1, 29, 30, 31, -1, -1, -1, -1, 36, 3766 37, 38, 39, -1, -1, -1, -1, -1, 110, -1, 3767 -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, 3768 -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, 3769 -1, -1, -1, -1, 71, -1, 73, 74, 75, -1, 3770 -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3771 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 3772 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3773 -1, 108, -1, 110, -1, -1, 113, -1, -1, -1, 3774 117, 118, 119, 120, 121, 122, 10, 11, 12, 13, 3775 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3776 24, 25, 26, -1, -1, 29, 30, 31, -1, -1, 3777 -1, -1, 36, 37, 38, 39, 10, 11, 12, 13, 3778 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3779 24, 25, 26, 27, -1, 29, 30, 31, -1, -1, 3780 -1, 65, 66, -1, 38, -1, -1, 71, -1, 73, 3781 74, 75, -1, -1, 78, 79, 80, 81, 82, 83, 3782 -1, 85, 86, -1, -1, -1, -1, -1, -1, 93, 3783 -1, -1, 66, -1, -1, -1, -1, 71, -1, 73, 3784 74, 75, -1, 77, 108, -1, 110, 111, 82, 83, 3785 -1, -1, -1, 117, 118, 119, 120, 121, 122, 10, 3786 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3787 21, 22, 23, 24, 25, 26, 110, -1, 29, 30, 3788 31, -1, -1, -1, 118, 36, 37, 38, 39, 10, 3789 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3790 21, 22, 23, 24, 25, 26, -1, -1, 29, 30, 3791 31, -1, -1, -1, 65, 66, -1, 38, -1, -1, 3792 71, -1, 73, 74, 75, -1, -1, 78, 79, 80, 3793 81, 82, 83, -1, 85, 86, -1, -1, -1, -1, 3794 -1, -1, 93, -1, -1, 66, -1, -1, -1, -1, 3795 71, -1, 73, 74, -1, -1, -1, 108, 109, 110, 3796 -1, 82, 83, -1, -1, -1, 117, 118, 119, 120, 3797 121, 122, 10, 11, 12, 13, 14, 15, 16, 17, 3798 18, 19, 20, 21, 22, 23, 24, 25, 26, 110, 3799 -1, 29, 30, 31, -1, -1, -1, 118, 36, 37, 3800 38, 39, 10, 11, 12, 13, 14, 15, 16, 17, 3801 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3802 -1, 29, 30, 31, -1, -1, -1, 65, 66, -1, 3803 38, 39, -1, 71, -1, 73, 74, 75, -1, -1, 3804 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3805 -1, -1, -1, -1, -1, 93, -1, -1, 66, -1, 3806 -1, -1, -1, -1, -1, 73, 74, -1, -1, -1, 3807 108, -1, 110, -1, -1, -1, -1, -1, -1, 117, 3808 118, 119, 120, 121, 122, 10, 11, 12, 13, 14, 3809 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3810 25, 26, 110, -1, 29, 30, 31, -1, -1, -1, 3811 118, 36, 37, 38, 39, -1, -1, -1, -1, -1, 3812 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3813 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3814 65, 66, 29, 30, 31, -1, 71, -1, 73, 74, 3815 75, 38, -1, 78, 79, 80, 81, 82, 83, -1, 3816 85, 86, -1, -1, -1, -1, -1, -1, 93, -1, 3817 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 3818 -1, -1, -1, 108, -1, 110, 73, 74, -1, -1, 3819 -1, -1, 117, 118, 119, 120, 121, 122, 10, 11, 3820 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3821 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3822 -1, 108, -1, 110, 36, 37, 38, 39, -1, -1, 3823 -1, 118, -1, -1, -1, -1, 10, 11, 12, 13, 3824 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3825 24, 25, 26, 65, 66, 29, 30, 31, -1, 71, 3826 -1, 73, 74, 75, 38, -1, 78, 79, 80, 81, 3827 82, 83, -1, 85, 86, -1, -1, -1, -1, -1, 3828 -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 3829 -1, -1, 66, -1, -1, -1, 108, -1, 110, 73, 3830 74, -1, -1, -1, -1, 117, 118, 119, 120, 121, 3831 122, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3832 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 3833 29, 30, 31, -1, 108, -1, 110, 36, 37, 38, 3834 39, -1, -1, -1, 118, -1, -1, -1, -1, 10, 3835 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3836 21, 22, 23, 24, 25, 26, 65, 66, 29, 30, 3837 31, -1, 71, -1, 73, 74, 75, 38, 39, 78, 3838 79, 80, 81, 82, 83, -1, 85, 86, -1, -1, 3839 -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, 3840 -1, -1, -1, -1, -1, 66, -1, -1, -1, 108, 3841 -1, 110, 73, 74, -1, -1, -1, -1, 117, 118, 3842 119, 120, 121, 122, 3, 4, 5, 6, 7, 8, 3843 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3844 19, 20, 21, 22, 23, 24, 25, 26, -1, 110, 3845 29, 30, 31, 114, -1, -1, -1, 118, -1, 38, 3846 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3847 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3848 30, 31, -1, -1, -1, -1, -1, 66, 38, 68, 3849 -1, 70, -1, -1, 73, 74, -1, -1, 10, 11, 3850 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3851 22, 23, 24, 25, 26, -1, 66, 29, 30, 31, 3852 -1, 71, -1, 73, 74, 75, 38, -1, -1, -1, 3853 -1, -1, 82, 83, 113, -1, 10, 11, 12, 13, 3854 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3855 24, 25, 26, -1, 66, 29, 30, 31, 108, 71, 3856 110, 73, 74, 75, 38, -1, -1, -1, 118, -1, 3857 82, 83, -1, -1, 10, 11, 12, 13, 14, 15, 3858 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3859 26, -1, 66, 29, 30, 31, 108, -1, 110, 73, 3860 74, -1, 38, -1, -1, -1, 118, 10, 11, 12, 3861 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3862 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3863 66, -1, -1, -1, -1, 38, 110, 73, 74, -1, 3864 -1, -1, -1, -1, 118, 10, 11, 12, 13, 14, 3865 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3866 25, 26, -1, 66, 29, 30, 31, -1, -1, -1, 3867 73, 74, -1, 38, 110, -1, -1, -1, -1, -1, 3868 -1, -1, 118, 10, 11, 12, 13, 14, 15, 16, 3869 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3870 -1, 66, 29, 30, 31, -1, -1, 110, 73, 74, 3871 -1, 38, -1, -1, -1, 118, 10, 11, 12, 13, 3872 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3873 24, 25, 26, -1, -1, 29, 30, 31, -1, 66, 3874 -1, -1, -1, -1, 38, 110, 73, 74, -1, -1, 3875 -1, -1, -1, 118, 10, 11, 12, 13, 14, 15, 3876 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3877 26, -1, 66, 29, 30, 31, -1, -1, -1, 73, 3878 74, -1, 38, 110, -1, -1, -1, -1, -1, -1, 3879 -1, 118, 10, 11, 12, 13, 14, 15, 16, 17, 3880 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 3881 66, 29, 30, 31, -1, -1, 110, 73, 74, -1, 3882 38, -1, -1, -1, 118, 10, 11, 12, 13, 14, 3883 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3884 25, 26, -1, -1, 29, 30, 31, -1, 66, -1, 3885 -1, -1, -1, 38, 110, 73, 74, -1, -1, -1, 3886 -1, -1, 118, 10, 11, 12, 13, 14, 15, 16, 3887 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3888 -1, 66, 29, 30, 31, -1, -1, -1, 73, 74, 3889 -1, 38, 110, -1, -1, -1, -1, -1, -1, -1, 3890 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3891 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 3892 -1, -1, -1, -1, -1, 110, 73, 74, -1, -1, 3893 -1, -1, -1, 118, 4, 5, 6, 7, 8, 9, 3894 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3895 20, 21, 22, 23, 24, 25, 26, -1, -1, 29, 3896 30, 31, -1, 110, -1, -1, -1, -1, 38, -1, 3897 -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, 3898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3899 -1, -1, -1, -1, -1, -1, 66, -1, 68, -1, 3900 70, -1, -1, 73, 74, 36, 37, -1, 39, 40, 3901 -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, 3902 51, 52, -1, -1, 55, 56, -1, -1, -1, 60, 3903 61, -1, 63, -1, 65, -1, -1, -1, -1, 109, 3904 71, -1, -1, -1, 75, -1, -1, 78, 79, 80, 3905 81, 82, 83, -1, 85, 86, -1, -1, -1, -1, 3906 -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 3907 -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, 3908 -1, -1, 113, -1, -1, -1, 117, 118, 119, 120, 3909 121, 122, -1, -1, -1, -1, 127, -1, 36, 37, 3910 131, 39, 40, -1, 42, -1, -1, 45, 46, 47, 3911 48, 49, 50, 51, 52, -1, -1, -1, 56, -1, 3912 -1, -1, 60, 61, -1, 63, -1, 65, -1, -1, 3913 -1, -1, -1, 71, -1, -1, -1, 75, -1, -1, 3914 78, 79, 80, 81, 82, 83, -1, 85, 86, -1, 3915 -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, 3916 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3917 108, -1, 110, -1, -1, 113, -1, -1, -1, 117, 3918 118, 119, 120, 121, 122, -1, -1, -1, -1, 127, 3919 -1, 36, 37, 131, 39, 40, -1, 42, 43, 44, 3920 45, 46, 47, 48, 49, 50, 51, 52, -1, -1, 3921 55, 56, -1, -1, -1, 60, 61, -1, 63, -1, 3922 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, 3923 75, -1, -1, 78, 79, 80, 81, 82, 83, -1, 3924 85, 86, -1, -1, -1, -1, -1, -1, 93, -1, 3925 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3926 -1, -1, -1, 108, -1, 110, -1, -1, 113, -1, 3927 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3928 36, 37, 127, 39, 40, -1, 42, 43, 44, 45, 3929 46, 47, 48, 49, 50, 51, 52, -1, -1, -1, 3930 56, -1, -1, -1, 60, 61, -1, 63, -1, 65, 3931 -1, -1, -1, -1, -1, 71, -1, -1, -1, 75, 3932 -1, -1, 78, 79, 80, 81, 82, 83, -1, 85, 3933 86, -1, -1, -1, -1, -1, -1, 93, -1, -1, 3934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3935 -1, -1, 108, -1, 110, -1, -1, 113, -1, -1, 3936 -1, 117, 118, 119, 120, 121, 122, -1, -1, 36, 3937 37, 127, 39, 40, -1, 42, -1, -1, 45, 46, 3938 47, 48, 49, 50, 51, 52, -1, -1, -1, 56, 3939 -1, -1, -1, 60, 61, -1, 63, -1, 65, -1, 3940 -1, -1, -1, -1, 71, -1, -1, -1, 75, -1, 3941 -1, 78, 79, 80, 81, 82, 83, -1, 85, 86, 3942 -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 3943 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3944 -1, 108, -1, 110, -1, -1, 113, -1, -1, -1, 3945 117, 118, 119, 120, 121, 122, -1, -1, -1, -1, 3946 127, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3947 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3948 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3949 -1, -1, -1, -1, -1, 38, -1, 36, 37, -1, 3950 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3951 -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, 3952 -1, -1, -1, 66, -1, 68, 65, 70, -1, -1, 3953 73, 74, 71, -1, -1, -1, 75, -1, -1, 78, 3954 79, 80, 81, 82, 83, 65, 85, 86, -1, -1, 3955 -1, 71, 95, -1, 93, 75, -1, -1, 78, 79, 3956 80, 81, 82, 83, -1, 85, 86, -1, -1, 108, 3957 -1, 110, -1, 93, 36, 37, -1, 39, 117, 118, 3958 119, 120, 121, 122, -1, -1, -1, -1, 108, -1, 3959 110, -1, -1, 36, 37, -1, 39, 117, 118, 119, 3960 120, 121, 122, 65, -1, -1, -1, -1, -1, 71, 3961 -1, -1, -1, 75, -1, -1, 78, 79, 80, 81, 3962 82, 83, 65, 85, 86, -1, -1, -1, 71, -1, 3963 -1, 93, 75, -1, -1, 78, 79, 80, 81, 82, 3964 83, -1, 85, 86, -1, -1, 108, -1, 110, -1, 3965 93, 36, 37, -1, 39, 117, 118, 119, 120, 121, 3966 122, -1, -1, -1, -1, 108, -1, -1, -1, -1, 3967 -1, -1, -1, -1, 117, 118, 119, 120, 121, 122, 3968 65, -1, -1, -1, -1, -1, 71, -1, -1, -1, 3969 75, -1, -1, 78, 79, 80, 81, 82, 83, -1, 3970 85, 86, -1, -1, -1, -1, -1, -1, 93, -1, 3971 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3972 -1, -1, -1, 108, -1, -1, -1, -1, -1, -1, 3973 -1, -1, 117, 118, 119, 120, 121, 122, 4, 5, 3974 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3975 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3976 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3977 -1, -1, 38, -1, -1, -1, -1, -1, -1, -1, 3978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3980 66, -1, 68, -1, 70, 71, -1, 73, 74, 75, 3981 -1, -1, -1, -1, -1, -1, 82, 83, 3, 4, 3982 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3983 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3984 25, 26, -1, -1, 29, 30, 31, -1, -1, -1, 3985 -1, -1, -1, 38, -1, -1, -1, -1, -1, -1, 3986 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3987 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3988 -1, 66, -1, 68, -1, 70, -1, -1, 73, 74, 3989 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3990 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3991 23, 24, 25, 26, -1, -1, 29, 30, 31, -1, 3992 -1, -1, -1, -1, -1, 38, -1, -1, -1, -1, 3993 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3994 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3995 -1, -1, -1, 66, -1, 68, -1, 70, -1, -1, 3996 73, 74, 4, 5, 6, 7, 8, 9, 10, 11, 3997 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3998 22, 23, 24, 25, 26, -1, -1, 29, 30, 31, 3999 -1, -1, -1, -1, -1, -1, 38, -1, -1, -1, 4000 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4001 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4002 -1, -1, -1, -1, 66, -1, 68, -1, 70, -1, 4003 -1, 73, 74 4089 -1, 67, -1, -1, -1, -1, -1, -1, 74, 75 4004 4090 }; 4005 4091 … … 4010 4096 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 4011 4097 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 4012 22, 23, 24, 25, 26, 2 9, 30, 31, 32, 35,4013 3 8, 39, 63, 66, 68, 70, 71, 73, 74, 75,4014 82, 83, 108, 110, 118, 136, 139, 196, 210, 211,4098 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 4099 36, 39, 40, 64, 67, 69, 71, 72, 74, 75, 4100 76, 83, 84, 109, 111, 119, 137, 140, 197, 211, 4015 4101 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 4016 222, 223, 224, 225, 226, 227, 22 9, 230, 231, 232,4017 233, 234, 235, 236, 23 8, 239, 240, 241, 242, 243,4018 244, 2 52, 253, 279, 280, 281, 289, 292, 298, 299,4019 30 1, 303, 304, 310, 315, 319, 320, 321, 322, 323,4020 32 4, 325, 326, 346, 363, 364, 365, 366, 71, 118,4021 1 38, 139, 213, 215, 223, 225, 235, 239, 241, 280,4022 81, 108, 308, 309, 310, 308, 308, 71, 73, 74,4023 75, 137, 138, 269, 270, 290, 291, 73, 74, 270,4024 108, 301, 11, 197, 108, 118, 315, 320, 321, 322,4025 32 4, 325, 326, 111, 133, 110, 216, 223, 225, 319,4026 32 3, 362, 363, 366, 367, 134, 106, 130, 273, 113,4027 1 34, 171, 73, 74, 136, 268, 134, 134, 134, 115,4028 1 34, 73, 74, 108, 118, 305, 314, 315, 316, 317,4029 3 18, 319, 323, 327, 328, 329, 330, 331, 337, 3,4030 27, 77, 237, 3, 5, 73, 110, 118, 215, 226,4031 2 30, 233, 242, 281, 319, 323, 366, 213, 215, 225,4032 2 35, 239, 241, 280, 319, 323, 32, 231, 231, 226,4033 2 33, 134, 231, 226, 231, 226, 74, 108, 113, 270,4034 2 81, 113, 270, 231, 226, 115, 134, 134, 0, 133,4035 1 08, 171, 308, 308, 133, 110, 223, 225, 364, 268,4036 2 68, 225, 130, 108, 118, 305, 315, 319, 110, 118,4037 366, 302, 228, 310, 108, 286, 108, 108, 50, 108,4038 36, 37, 39, 65, 71, 75, 78, 79, 80, 81,4039 8 5, 86, 93, 108, 110, 117, 118, 119, 120, 121,4040 122, 1 35, 139, 140, 141, 142, 147, 148, 149, 150,4102 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 4103 233, 234, 235, 236, 237, 239, 240, 241, 242, 243, 4104 244, 246, 254, 255, 282, 283, 284, 292, 295, 301, 4105 302, 304, 306, 307, 313, 318, 322, 323, 324, 325, 4106 326, 327, 328, 329, 349, 366, 367, 368, 369, 72, 4107 119, 139, 140, 214, 216, 224, 226, 236, 240, 242, 4108 283, 82, 109, 311, 312, 313, 311, 311, 72, 74, 4109 75, 76, 138, 139, 272, 273, 293, 294, 74, 75, 4110 273, 109, 304, 11, 198, 109, 119, 318, 323, 324, 4111 325, 327, 328, 329, 112, 134, 111, 217, 224, 226, 4112 322, 326, 365, 366, 369, 370, 135, 107, 131, 276, 4113 114, 135, 172, 74, 75, 137, 271, 135, 135, 135, 4114 116, 135, 74, 75, 109, 119, 308, 317, 318, 319, 4115 320, 321, 322, 326, 330, 331, 332, 333, 334, 340, 4116 3, 28, 78, 238, 3, 5, 74, 111, 119, 216, 4117 227, 231, 234, 243, 284, 322, 326, 369, 214, 216, 4118 226, 236, 240, 242, 283, 322, 326, 33, 232, 232, 4119 227, 234, 135, 232, 227, 232, 227, 75, 109, 114, 4120 273, 284, 114, 273, 232, 227, 116, 135, 135, 0, 4121 134, 109, 172, 311, 311, 134, 111, 224, 226, 367, 4122 271, 271, 226, 131, 109, 119, 308, 318, 322, 111, 4123 119, 369, 305, 229, 313, 109, 289, 109, 109, 51, 4124 109, 37, 38, 40, 66, 72, 76, 79, 80, 81, 4125 82, 86, 87, 94, 109, 111, 118, 119, 120, 121, 4126 122, 123, 136, 140, 141, 142, 143, 148, 149, 150, 4041 4127 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 4042 162, 164, 223, 272, 288, 362, 367, 225, 109, 109, 4043 109, 109, 109, 109, 109, 73, 74, 110, 223, 268, 4044 346, 364, 110, 118, 162, 215, 216, 222, 225, 229, 4045 230, 235, 238, 239, 241, 258, 259, 263, 264, 265, 4046 266, 280, 346, 358, 359, 360, 361, 366, 367, 111, 4047 108, 319, 323, 366, 108, 115, 131, 110, 113, 118, 4048 162, 274, 274, 114, 133, 115, 131, 108, 115, 131, 4049 115, 131, 115, 131, 308, 131, 315, 316, 317, 318, 4050 328, 329, 330, 331, 225, 314, 327, 63, 307, 110, 4051 308, 345, 346, 308, 308, 171, 133, 108, 308, 345, 4052 308, 308, 225, 305, 108, 108, 224, 225, 223, 225, 4053 111, 133, 223, 362, 367, 171, 133, 268, 273, 215, 4054 230, 319, 323, 171, 133, 290, 225, 235, 131, 225, 4055 225, 288, 39, 110, 223, 245, 246, 247, 248, 362, 4056 366, 113, 254, 270, 113, 225, 290, 131, 131, 301, 4057 133, 138, 267, 3, 134, 205, 206, 220, 222, 225, 4058 133, 307, 108, 307, 162, 315, 225, 108, 133, 268, 4059 113, 32, 33, 34, 223, 282, 283, 285, 133, 128, 4060 130, 287, 133, 226, 232, 233, 268, 311, 312, 313, 4061 108, 140, 108, 147, 108, 147, 149, 108, 147, 108, 4062 108, 147, 147, 138, 110, 162, 167, 171, 223, 271, 4063 362, 111, 133, 149, 149, 81, 84, 85, 86, 108, 4064 110, 112, 113, 96, 97, 98, 99, 100, 101, 102, 4065 103, 104, 105, 130, 166, 149, 118, 123, 124, 120, 4066 121, 87, 88, 89, 90, 125, 126, 91, 92, 119, 4067 127, 128, 93, 94, 129, 130, 369, 108, 118, 341, 4068 342, 343, 344, 345, 109, 115, 108, 345, 346, 108, 4069 345, 346, 133, 108, 223, 364, 111, 133, 110, 118, 4070 134, 223, 225, 357, 358, 366, 367, 134, 108, 110, 4071 118, 315, 332, 333, 334, 335, 336, 337, 338, 339, 4072 340, 346, 347, 348, 349, 350, 351, 352, 118, 366, 4073 225, 134, 134, 118, 223, 225, 359, 268, 223, 346, 4074 359, 268, 108, 133, 133, 133, 111, 133, 71, 79, 4075 110, 112, 139, 270, 274, 275, 276, 277, 278, 133, 4076 133, 133, 133, 133, 133, 305, 109, 109, 109, 109, 4077 109, 109, 109, 314, 327, 108, 273, 111, 205, 133, 4078 305, 167, 272, 167, 272, 305, 110, 205, 307, 171, 4079 133, 205, 109, 247, 248, 111, 133, 108, 116, 118, 4080 249, 251, 314, 315, 327, 345, 353, 354, 355, 356, 4081 114, 246, 115, 131, 115, 131, 270, 245, 115, 368, 4082 130, 255, 254, 225, 260, 261, 262, 265, 266, 109, 4083 115, 171, 133, 118, 162, 133, 222, 225, 259, 358, 4084 366, 299, 300, 108, 118, 332, 109, 115, 369, 270, 4085 282, 108, 113, 270, 272, 282, 109, 115, 108, 140, 4086 109, 116, 271, 271, 271, 110, 138, 144, 162, 272, 4087 271, 111, 133, 109, 115, 109, 108, 118, 353, 109, 4088 115, 162, 110, 138, 110, 143, 144, 133, 110, 138, 4089 143, 162, 162, 149, 149, 149, 150, 150, 151, 151, 4090 152, 152, 152, 152, 153, 153, 154, 155, 156, 157, 4091 158, 116, 167, 162, 133, 342, 343, 344, 225, 341, 4092 308, 308, 162, 272, 133, 267, 118, 133, 223, 346, 4093 359, 225, 229, 111, 133, 111, 366, 111, 108, 133, 4094 315, 333, 334, 335, 338, 348, 349, 350, 111, 133, 4095 225, 332, 336, 347, 108, 308, 351, 369, 308, 308, 4096 369, 108, 308, 351, 308, 308, 308, 308, 346, 223, 4097 357, 367, 268, 111, 115, 111, 115, 369, 223, 359, 4098 369, 256, 257, 258, 259, 256, 256, 268, 162, 133, 4099 110, 270, 116, 115, 368, 274, 79, 110, 116, 278, 4100 28, 207, 208, 268, 256, 138, 305, 138, 307, 108, 4101 345, 346, 108, 345, 346, 140, 346, 171, 260, 109, 4102 109, 109, 109, 111, 171, 205, 171, 113, 131, 131, 4103 110, 315, 354, 355, 356, 160, 161, 225, 353, 250, 4104 251, 250, 308, 308, 270, 308, 114, 270, 114, 161, 4105 368, 134, 134, 138, 220, 134, 134, 256, 108, 118, 4106 366, 134, 114, 225, 283, 284, 134, 133, 133, 108, 4107 134, 109, 312, 167, 168, 116, 131, 110, 140, 198, 4108 199, 200, 109, 115, 109, 133, 116, 109, 109, 109, 4109 162, 225, 113, 149, 164, 162, 163, 165, 115, 134, 4110 133, 133, 109, 115, 162, 133, 114, 160, 116, 260, 4111 109, 109, 109, 341, 260, 109, 256, 223, 359, 110, 4112 118, 162, 162, 225, 338, 260, 109, 109, 109, 109, 4113 109, 109, 109, 7, 225, 332, 336, 347, 133, 133, 4114 369, 133, 133, 109, 134, 134, 134, 134, 273, 134, 4115 160, 161, 162, 306, 133, 274, 276, 114, 133, 209, 4116 270, 39, 40, 42, 45, 46, 47, 48, 49, 50, 4117 51, 52, 56, 60, 61, 110, 127, 138, 168, 169, 4118 170, 171, 172, 173, 175, 176, 188, 190, 191, 196, 4119 210, 304, 28, 134, 130, 273, 133, 133, 109, 134, 4120 171, 245, 111, 109, 109, 109, 353, 249, 255, 114, 4121 109, 115, 111, 111, 134, 225, 115, 369, 286, 109, 4122 282, 213, 215, 223, 294, 295, 296, 297, 288, 109, 4123 109, 116, 161, 108, 109, 116, 115, 138, 162, 162, 4124 275, 115, 134, 165, 111, 138, 145, 146, 162, 144, 4125 134, 145, 160, 164, 134, 108, 345, 346, 134, 134, 4126 133, 134, 134, 134, 162, 109, 134, 108, 345, 346, 4127 108, 351, 108, 351, 346, 224, 7, 118, 134, 162, 4128 260, 260, 259, 263, 263, 264, 115, 115, 109, 109, 4129 111, 95, 122, 134, 134, 145, 274, 162, 115, 131, 4130 210, 214, 225, 229, 108, 108, 169, 108, 108, 131, 4131 138, 131, 138, 118, 138, 168, 108, 171, 163, 163, 4132 111, 142, 116, 131, 134, 133, 134, 209, 109, 162, 4133 260, 260, 308, 109, 114, 108, 345, 346, 133, 109, 4134 133, 134, 305, 114, 133, 134, 134, 109, 113, 198, 4135 111, 161, 131, 198, 200, 109, 115, 134, 368, 163, 4136 111, 134, 84, 112, 115, 134, 134, 111, 134, 109, 4137 133, 109, 109, 111, 111, 111, 134, 109, 133, 133, 4138 133, 162, 162, 134, 111, 134, 134, 134, 134, 133, 4139 133, 161, 161, 111, 111, 134, 134, 270, 225, 167, 4140 167, 46, 167, 133, 131, 131, 167, 131, 131, 167, 4141 57, 58, 59, 192, 193, 194, 131, 62, 131, 113, 4142 308, 173, 114, 131, 134, 134, 133, 95, 265, 266, 4143 109, 295, 115, 131, 115, 131, 114, 293, 116, 140, 4144 109, 109, 116, 165, 111, 114, 111, 110, 146, 110, 4145 146, 146, 111, 111, 111, 260, 111, 260, 260, 260, 4146 134, 134, 111, 111, 109, 109, 111, 115, 95, 259, 4147 95, 134, 111, 111, 109, 109, 108, 109, 168, 189, 4148 210, 131, 109, 108, 108, 171, 194, 57, 58, 162, 4149 143, 169, 109, 109, 260, 113, 133, 133, 294, 140, 4150 201, 108, 131, 201, 134, 116, 133, 133, 134, 134, 4151 134, 134, 111, 111, 133, 134, 111, 169, 43, 44, 4152 113, 179, 180, 181, 167, 169, 134, 109, 168, 113, 4153 181, 95, 133, 95, 133, 108, 108, 131, 114, 134, 4154 133, 268, 305, 114, 115, 116, 161, 109, 111, 162, 4155 145, 145, 109, 109, 109, 109, 263, 41, 161, 177, 4156 178, 306, 116, 133, 169, 179, 109, 131, 169, 131, 4157 133, 109, 133, 109, 133, 95, 133, 95, 133, 131, 4158 109, 294, 140, 138, 202, 109, 131, 116, 134, 134, 4159 169, 95, 115, 116, 134, 203, 204, 210, 131, 168, 4160 168, 203, 171, 195, 223, 362, 171, 195, 109, 133, 4161 109, 133, 114, 109, 115, 162, 111, 111, 161, 177, 4162 180, 182, 183, 133, 131, 180, 184, 185, 134, 108, 4163 118, 305, 353, 138, 134, 171, 195, 171, 195, 108, 4164 131, 138, 169, 174, 114, 180, 210, 168, 55, 174, 4165 187, 114, 180, 109, 225, 109, 134, 134, 288, 169, 4166 174, 131, 186, 187, 174, 187, 171, 171, 109, 109, 4167 109, 186, 134, 134, 171, 171, 134, 134 4128 161, 163, 165, 224, 275, 291, 365, 370, 226, 110, 4129 110, 110, 110, 110, 110, 110, 74, 75, 111, 224, 4130 271, 349, 367, 111, 119, 163, 216, 217, 223, 226, 4131 230, 231, 236, 239, 240, 242, 261, 262, 266, 267, 4132 268, 269, 283, 349, 361, 362, 363, 364, 369, 370, 4133 112, 109, 322, 326, 369, 109, 116, 132, 111, 114, 4134 119, 163, 277, 277, 115, 134, 116, 132, 109, 116, 4135 132, 116, 132, 116, 132, 311, 132, 318, 319, 320, 4136 321, 331, 332, 333, 334, 226, 317, 330, 64, 310, 4137 111, 311, 348, 349, 311, 311, 172, 134, 109, 311, 4138 348, 311, 311, 226, 308, 109, 109, 225, 226, 224, 4139 226, 112, 134, 224, 365, 370, 172, 134, 271, 276, 4140 216, 231, 322, 326, 172, 134, 293, 226, 236, 132, 4141 226, 226, 291, 40, 111, 224, 247, 248, 249, 250, 4142 365, 369, 245, 257, 273, 256, 226, 293, 132, 132, 4143 304, 134, 139, 270, 3, 135, 206, 207, 221, 223, 4144 226, 134, 310, 109, 310, 163, 318, 226, 109, 134, 4145 271, 114, 33, 34, 35, 224, 285, 286, 288, 134, 4146 129, 131, 290, 134, 227, 233, 234, 271, 314, 315, 4147 316, 109, 141, 109, 148, 109, 148, 150, 109, 148, 4148 109, 109, 148, 148, 139, 111, 163, 168, 172, 224, 4149 274, 365, 112, 134, 150, 150, 82, 85, 86, 87, 4150 109, 111, 113, 114, 97, 98, 99, 100, 101, 102, 4151 103, 104, 105, 106, 131, 167, 150, 119, 124, 125, 4152 121, 122, 88, 89, 90, 91, 126, 127, 92, 93, 4153 120, 128, 129, 94, 95, 130, 131, 372, 109, 119, 4154 344, 345, 346, 347, 348, 110, 116, 109, 348, 349, 4155 109, 348, 349, 134, 109, 224, 367, 112, 134, 111, 4156 119, 135, 224, 226, 360, 361, 369, 370, 135, 109, 4157 111, 119, 318, 335, 336, 337, 338, 339, 340, 341, 4158 342, 343, 349, 350, 351, 352, 353, 354, 355, 119, 4159 369, 226, 135, 135, 119, 224, 226, 362, 271, 224, 4160 349, 362, 271, 109, 134, 134, 134, 112, 134, 72, 4161 80, 111, 113, 140, 273, 277, 278, 279, 280, 281, 4162 134, 134, 134, 134, 134, 134, 308, 110, 110, 110, 4163 110, 110, 110, 110, 317, 330, 109, 276, 112, 206, 4164 134, 308, 168, 275, 168, 275, 308, 111, 206, 310, 4165 172, 134, 206, 110, 249, 250, 112, 134, 109, 117, 4166 119, 251, 253, 317, 318, 330, 348, 356, 357, 358, 4167 359, 115, 248, 116, 132, 116, 132, 273, 114, 116, 4168 371, 131, 258, 114, 226, 263, 264, 265, 268, 269, 4169 110, 116, 172, 134, 119, 163, 134, 223, 226, 262, 4170 361, 369, 302, 303, 109, 119, 335, 110, 116, 372, 4171 273, 285, 109, 114, 273, 275, 285, 110, 116, 109, 4172 141, 110, 117, 274, 274, 274, 111, 139, 145, 163, 4173 275, 274, 112, 134, 110, 116, 110, 109, 119, 356, 4174 110, 116, 163, 111, 139, 111, 144, 145, 134, 111, 4175 139, 144, 163, 163, 150, 150, 150, 151, 151, 152, 4176 152, 153, 153, 153, 153, 154, 154, 155, 156, 157, 4177 158, 159, 117, 168, 163, 134, 345, 346, 347, 226, 4178 344, 311, 311, 163, 275, 134, 270, 119, 134, 224, 4179 349, 362, 226, 230, 112, 134, 112, 369, 112, 109, 4180 134, 318, 336, 337, 338, 341, 351, 352, 353, 112, 4181 134, 226, 335, 339, 350, 109, 311, 354, 372, 311, 4182 311, 372, 109, 311, 354, 311, 311, 311, 311, 349, 4183 224, 360, 370, 271, 112, 116, 112, 116, 372, 224, 4184 362, 372, 259, 260, 261, 262, 259, 259, 271, 163, 4185 134, 111, 273, 117, 116, 371, 277, 80, 111, 117, 4186 281, 29, 208, 209, 271, 259, 139, 308, 139, 310, 4187 109, 348, 349, 109, 348, 349, 141, 349, 172, 263, 4188 110, 110, 110, 110, 112, 172, 206, 172, 114, 132, 4189 132, 111, 318, 357, 358, 359, 161, 162, 226, 356, 4190 252, 253, 252, 311, 311, 273, 311, 247, 273, 115, 4191 162, 257, 135, 135, 139, 221, 135, 135, 259, 109, 4192 119, 369, 135, 115, 226, 286, 287, 135, 134, 134, 4193 109, 135, 110, 315, 168, 169, 117, 132, 111, 141, 4194 199, 200, 201, 110, 116, 110, 134, 117, 110, 110, 4195 110, 163, 226, 114, 150, 165, 163, 164, 166, 116, 4196 135, 134, 134, 110, 116, 163, 134, 115, 161, 117, 4197 263, 110, 110, 110, 344, 263, 110, 259, 224, 362, 4198 111, 119, 163, 163, 226, 341, 263, 110, 110, 110, 4199 110, 110, 110, 110, 7, 226, 335, 339, 350, 134, 4200 134, 372, 134, 134, 110, 135, 135, 135, 135, 276, 4201 135, 161, 162, 163, 309, 134, 277, 279, 115, 134, 4202 210, 273, 40, 41, 43, 46, 47, 48, 49, 50, 4203 51, 52, 53, 57, 61, 62, 111, 128, 139, 169, 4204 170, 171, 172, 173, 174, 176, 177, 189, 191, 192, 4205 197, 211, 307, 29, 135, 131, 276, 134, 134, 110, 4206 135, 172, 247, 112, 110, 110, 110, 356, 251, 115, 4207 258, 371, 110, 116, 112, 112, 135, 226, 116, 372, 4208 289, 110, 285, 214, 216, 224, 297, 298, 299, 300, 4209 291, 110, 110, 117, 162, 109, 110, 117, 116, 139, 4210 163, 163, 278, 116, 135, 166, 112, 139, 146, 147, 4211 163, 145, 135, 146, 161, 165, 135, 109, 348, 349, 4212 135, 135, 134, 135, 135, 135, 163, 110, 135, 109, 4213 348, 349, 109, 354, 109, 354, 349, 225, 7, 119, 4214 135, 163, 263, 263, 262, 266, 266, 267, 116, 116, 4215 110, 110, 112, 96, 123, 135, 135, 146, 277, 163, 4216 116, 132, 211, 215, 226, 230, 109, 109, 170, 109, 4217 109, 132, 139, 132, 139, 119, 139, 169, 109, 172, 4218 164, 164, 112, 143, 117, 132, 135, 134, 135, 210, 4219 110, 163, 263, 263, 311, 110, 115, 109, 348, 349, 4220 115, 134, 110, 134, 135, 308, 115, 134, 135, 135, 4221 110, 114, 199, 112, 162, 132, 199, 201, 110, 116, 4222 135, 371, 164, 112, 135, 85, 113, 116, 135, 135, 4223 112, 135, 110, 134, 110, 110, 112, 112, 112, 135, 4224 110, 134, 134, 134, 163, 163, 135, 112, 135, 135, 4225 135, 135, 134, 134, 162, 162, 112, 112, 135, 135, 4226 273, 226, 168, 168, 47, 168, 134, 132, 132, 168, 4227 132, 132, 168, 58, 59, 60, 193, 194, 195, 132, 4228 63, 132, 114, 311, 174, 115, 132, 135, 135, 134, 4229 96, 268, 269, 110, 298, 116, 132, 116, 132, 115, 4230 296, 117, 141, 110, 110, 117, 166, 112, 115, 112, 4231 111, 147, 111, 147, 147, 112, 112, 112, 263, 112, 4232 263, 263, 263, 135, 135, 112, 112, 110, 110, 112, 4233 116, 96, 262, 96, 135, 112, 112, 110, 110, 109, 4234 110, 169, 190, 211, 132, 110, 109, 109, 172, 195, 4235 58, 59, 163, 144, 170, 110, 110, 263, 114, 134, 4236 134, 297, 141, 202, 109, 132, 202, 135, 117, 134, 4237 134, 135, 135, 135, 135, 112, 112, 134, 135, 112, 4238 170, 44, 45, 114, 180, 181, 182, 168, 170, 135, 4239 110, 169, 114, 182, 96, 134, 96, 134, 109, 109, 4240 132, 115, 135, 134, 271, 308, 115, 116, 117, 162, 4241 110, 112, 163, 146, 146, 110, 110, 110, 110, 266, 4242 42, 162, 178, 179, 309, 117, 134, 170, 180, 110, 4243 132, 170, 132, 134, 110, 134, 110, 134, 96, 134, 4244 96, 134, 132, 110, 297, 141, 139, 203, 110, 132, 4245 117, 135, 135, 170, 96, 116, 117, 135, 204, 205, 4246 211, 132, 169, 169, 204, 172, 196, 224, 365, 172, 4247 196, 110, 134, 110, 134, 115, 110, 116, 163, 112, 4248 112, 162, 178, 181, 183, 184, 134, 132, 181, 185, 4249 186, 135, 109, 119, 308, 356, 139, 135, 172, 196, 4250 172, 196, 109, 132, 139, 170, 175, 115, 181, 211, 4251 169, 56, 175, 188, 115, 181, 110, 226, 110, 135, 4252 135, 291, 170, 175, 132, 187, 188, 175, 188, 172, 4253 172, 110, 110, 110, 187, 135, 135, 172, 172, 135, 4254 135 4168 4255 }; 4169 4256 … … 5002 5089 5003 5090 /* Line 1806 of yacc.c */ 5004 #line 29 0"parser.yy"5091 #line 292 "parser.yy" 5005 5092 { 5006 5093 typedefTable.enterScope(); … … 5011 5098 5012 5099 /* Line 1806 of yacc.c */ 5013 #line 29 6"parser.yy"5100 #line 298 "parser.yy" 5014 5101 { 5015 5102 typedefTable.leaveScope(); … … 5020 5107 5021 5108 /* Line 1806 of yacc.c */ 5022 #line 30 5"parser.yy"5109 #line 307 "parser.yy" 5023 5110 { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); } 5024 5111 break; … … 5027 5114 5028 5115 /* Line 1806 of yacc.c */ 5029 #line 30 6"parser.yy"5116 #line 308 "parser.yy" 5030 5117 { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); } 5031 5118 break; … … 5034 5121 5035 5122 /* Line 1806 of yacc.c */ 5036 #line 30 7"parser.yy"5123 #line 309 "parser.yy" 5037 5124 { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); } 5038 5125 break; … … 5041 5128 5042 5129 /* Line 1806 of yacc.c */ 5043 #line 33 2"parser.yy"5130 #line 334 "parser.yy" 5044 5131 { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); } 5045 5132 break; … … 5048 5135 5049 5136 /* Line 1806 of yacc.c */ 5050 #line 33 3"parser.yy"5137 #line 335 "parser.yy" 5051 5138 { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); } 5052 5139 break; 5053 5140 5054 5141 case 18: 5055 5056 /* Line 1806 of yacc.c */5057 #line 340 "parser.yy"5058 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }5059 break;5060 5061 case 19:5062 5142 5063 5143 /* Line 1806 of yacc.c */ … … 5066 5146 break; 5067 5147 5148 case 19: 5149 5150 /* Line 1806 of yacc.c */ 5151 #line 344 "parser.yy" 5152 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5153 break; 5154 5068 5155 case 20: 5069 5156 5070 5157 /* Line 1806 of yacc.c */ 5071 #line 34 4"parser.yy"5158 #line 346 "parser.yy" 5072 5159 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5073 5160 break; … … 5076 5163 5077 5164 /* Line 1806 of yacc.c */ 5078 #line 34 6"parser.yy"5165 #line 348 "parser.yy" 5079 5166 { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); } 5080 5167 break; … … 5083 5170 5084 5171 /* Line 1806 of yacc.c */ 5085 #line 35 6"parser.yy"5172 #line 358 "parser.yy" 5086 5173 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); } 5087 5174 break; … … 5090 5177 5091 5178 /* Line 1806 of yacc.c */ 5092 #line 3 58"parser.yy"5179 #line 360 "parser.yy" 5093 5180 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); } 5094 5181 break; … … 5097 5184 5098 5185 /* Line 1806 of yacc.c */ 5099 #line 36 2"parser.yy"5186 #line 364 "parser.yy" 5100 5187 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5101 5188 break; … … 5104 5191 5105 5192 /* Line 1806 of yacc.c */ 5106 #line 36 5"parser.yy"5193 #line 367 "parser.yy" 5107 5194 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); } 5108 5195 break; … … 5111 5198 5112 5199 /* Line 1806 of yacc.c */ 5113 #line 3 68"parser.yy"5200 #line 370 "parser.yy" 5114 5201 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); } 5115 5202 break; … … 5118 5205 5119 5206 /* Line 1806 of yacc.c */ 5120 #line 37 0"parser.yy"5207 #line 372 "parser.yy" 5121 5208 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); } 5122 5209 break; … … 5125 5212 5126 5213 /* Line 1806 of yacc.c */ 5127 #line 37 2"parser.yy"5128 { (yyval.en) = 0; }5214 #line 374 "parser.yy" 5215 { (yyval.en) = new CompoundLiteralNode( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ); } 5129 5216 break; 5130 5217 … … 5132 5219 5133 5220 /* Line 1806 of yacc.c */ 5134 #line 37 4"parser.yy"5221 #line 376 "parser.yy" 5135 5222 { 5136 5223 Token fn; fn.str = new std::string( "?{}" ); // location undefined … … 5142 5229 5143 5230 /* Line 1806 of yacc.c */ 5144 #line 38 3"parser.yy"5231 #line 385 "parser.yy" 5145 5232 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 5146 5233 break; … … 5149 5236 5150 5237 /* Line 1806 of yacc.c */ 5151 #line 3 88"parser.yy"5238 #line 390 "parser.yy" 5152 5239 { (yyval.en) = 0; } 5153 5240 break; … … 5156 5243 5157 5244 /* Line 1806 of yacc.c */ 5158 #line 39 1"parser.yy"5245 #line 393 "parser.yy" 5159 5246 { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); } 5160 5247 break; … … 5163 5250 5164 5251 /* Line 1806 of yacc.c */ 5165 #line 39 6"parser.yy"5252 #line 398 "parser.yy" 5166 5253 { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); } 5167 5254 break; … … 5170 5257 5171 5258 /* Line 1806 of yacc.c */ 5172 #line 398"parser.yy"5259 #line 400 "parser.yy" 5173 5260 { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); } 5174 5261 break; … … 5177 5264 5178 5265 /* Line 1806 of yacc.c */ 5179 #line 40 3"parser.yy"5266 #line 405 "parser.yy" 5180 5267 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5181 5268 break; … … 5184 5271 5185 5272 /* Line 1806 of yacc.c */ 5186 #line 4 08"parser.yy"5273 #line 410 "parser.yy" 5187 5274 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); } 5188 5275 break; … … 5191 5278 5192 5279 /* Line 1806 of yacc.c */ 5193 #line 41 2"parser.yy"5280 #line 414 "parser.yy" 5194 5281 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5195 5282 break; … … 5198 5285 5199 5286 /* Line 1806 of yacc.c */ 5200 #line 41 4"parser.yy"5287 #line 416 "parser.yy" 5201 5288 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5202 5289 break; … … 5205 5292 5206 5293 /* Line 1806 of yacc.c */ 5207 #line 41 6"parser.yy"5294 #line 418 "parser.yy" 5208 5295 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); } 5209 5296 break; … … 5212 5299 5213 5300 /* Line 1806 of yacc.c */ 5214 #line 4 18"parser.yy"5301 #line 420 "parser.yy" 5215 5302 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); } 5216 5303 break; 5217 5304 5218 5305 case 48: 5219 5220 /* Line 1806 of yacc.c */5221 #line 426 "parser.yy"5222 { (yyval.en) = (yyvsp[(1) - (1)].constant); }5223 break;5224 5225 case 49:5226 5306 5227 5307 /* Line 1806 of yacc.c */ … … 5230 5310 break; 5231 5311 5312 case 49: 5313 5314 /* Line 1806 of yacc.c */ 5315 #line 430 "parser.yy" 5316 { (yyval.en) = (yyvsp[(1) - (1)].constant); } 5317 break; 5318 5232 5319 case 50: 5233 5320 5234 5321 /* Line 1806 of yacc.c */ 5235 #line 43 0"parser.yy"5322 #line 432 "parser.yy" 5236 5323 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); } 5237 5324 break; … … 5240 5327 5241 5328 /* Line 1806 of yacc.c */ 5242 #line 43 2"parser.yy"5329 #line 434 "parser.yy" 5243 5330 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); } 5244 5331 break; … … 5247 5334 5248 5335 /* Line 1806 of yacc.c */ 5249 #line 43 4"parser.yy"5336 #line 436 "parser.yy" 5250 5337 { (yyval.en) = (yyvsp[(2) - (2)].en); } 5251 5338 break; … … 5254 5341 5255 5342 /* Line 1806 of yacc.c */ 5256 #line 43 6"parser.yy"5343 #line 438 "parser.yy" 5257 5344 { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5258 5345 break; … … 5261 5348 5262 5349 /* Line 1806 of yacc.c */ 5263 #line 4 38"parser.yy"5350 #line 440 "parser.yy" 5264 5351 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); } 5265 5352 break; … … 5268 5355 5269 5356 /* Line 1806 of yacc.c */ 5270 #line 44 0"parser.yy"5357 #line 442 "parser.yy" 5271 5358 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); } 5272 5359 break; … … 5275 5362 5276 5363 /* Line 1806 of yacc.c */ 5277 #line 44 6"parser.yy"5364 #line 448 "parser.yy" 5278 5365 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); } 5279 5366 break; … … 5282 5369 5283 5370 /* Line 1806 of yacc.c */ 5284 #line 4 48"parser.yy"5371 #line 450 "parser.yy" 5285 5372 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5286 5373 break; … … 5289 5376 5290 5377 /* Line 1806 of yacc.c */ 5291 #line 45 0"parser.yy"5378 #line 452 "parser.yy" 5292 5379 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); } 5293 5380 break; … … 5296 5383 5297 5384 /* Line 1806 of yacc.c */ 5298 #line 45 2"parser.yy"5385 #line 454 "parser.yy" 5299 5386 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); } 5300 5387 break; … … 5303 5390 5304 5391 /* Line 1806 of yacc.c */ 5305 #line 45 4"parser.yy"5392 #line 456 "parser.yy" 5306 5393 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); } 5307 5394 break; … … 5310 5397 5311 5398 /* Line 1806 of yacc.c */ 5312 #line 45 6"parser.yy"5399 #line 458 "parser.yy" 5313 5400 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); } 5314 5401 break; … … 5317 5404 5318 5405 /* Line 1806 of yacc.c */ 5319 #line 4 58"parser.yy"5406 #line 460 "parser.yy" 5320 5407 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); } 5321 5408 break; … … 5324 5411 5325 5412 /* Line 1806 of yacc.c */ 5326 #line 46 0"parser.yy"5413 #line 462 "parser.yy" 5327 5414 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); } 5328 5415 break; … … 5331 5418 5332 5419 /* Line 1806 of yacc.c */ 5333 #line 46 2"parser.yy"5420 #line 464 "parser.yy" 5334 5421 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); } 5335 5422 break; … … 5338 5425 5339 5426 /* Line 1806 of yacc.c */ 5340 #line 46 6"parser.yy"5427 #line 468 "parser.yy" 5341 5428 { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); } 5342 5429 break; … … 5345 5432 5346 5433 /* Line 1806 of yacc.c */ 5347 #line 46 7"parser.yy"5434 #line 469 "parser.yy" 5348 5435 { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); } 5349 5436 break; … … 5352 5439 5353 5440 /* Line 1806 of yacc.c */ 5354 #line 4 68"parser.yy"5441 #line 470 "parser.yy" 5355 5442 { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); } 5356 5443 break; … … 5359 5446 5360 5447 /* Line 1806 of yacc.c */ 5361 #line 4 69"parser.yy"5448 #line 471 "parser.yy" 5362 5449 { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); } 5363 5450 break; 5364 5451 5365 5452 case 70: 5366 5367 /* Line 1806 of yacc.c */5368 #line 475 "parser.yy"5369 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }5370 break;5371 5372 case 71:5373 5453 5374 5454 /* Line 1806 of yacc.c */ … … 5377 5457 break; 5378 5458 5459 case 71: 5460 5461 /* Line 1806 of yacc.c */ 5462 #line 479 "parser.yy" 5463 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); } 5464 break; 5465 5379 5466 case 73: 5380 5467 5381 5468 /* Line 1806 of yacc.c */ 5382 #line 48 3"parser.yy"5469 #line 485 "parser.yy" 5383 5470 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5384 5471 break; … … 5387 5474 5388 5475 /* Line 1806 of yacc.c */ 5389 #line 48 5"parser.yy"5476 #line 487 "parser.yy" 5390 5477 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5391 5478 break; … … 5394 5481 5395 5482 /* Line 1806 of yacc.c */ 5396 #line 48 7"parser.yy"5483 #line 489 "parser.yy" 5397 5484 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5398 5485 break; … … 5401 5488 5402 5489 /* Line 1806 of yacc.c */ 5403 #line 49 3"parser.yy"5490 #line 495 "parser.yy" 5404 5491 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5405 5492 break; … … 5408 5495 5409 5496 /* Line 1806 of yacc.c */ 5410 #line 49 5"parser.yy"5497 #line 497 "parser.yy" 5411 5498 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5412 5499 break; … … 5415 5502 5416 5503 /* Line 1806 of yacc.c */ 5417 #line 50 1"parser.yy"5504 #line 503 "parser.yy" 5418 5505 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5419 5506 break; … … 5422 5509 5423 5510 /* Line 1806 of yacc.c */ 5424 #line 50 3"parser.yy"5511 #line 505 "parser.yy" 5425 5512 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5426 5513 break; … … 5429 5516 5430 5517 /* Line 1806 of yacc.c */ 5431 #line 5 09"parser.yy"5518 #line 511 "parser.yy" 5432 5519 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5433 5520 break; … … 5436 5523 5437 5524 /* Line 1806 of yacc.c */ 5438 #line 51 1"parser.yy"5525 #line 513 "parser.yy" 5439 5526 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5440 5527 break; … … 5443 5530 5444 5531 /* Line 1806 of yacc.c */ 5445 #line 51 3"parser.yy"5532 #line 515 "parser.yy" 5446 5533 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5447 5534 break; … … 5450 5537 5451 5538 /* Line 1806 of yacc.c */ 5452 #line 51 5"parser.yy"5539 #line 517 "parser.yy" 5453 5540 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5454 5541 break; … … 5457 5544 5458 5545 /* Line 1806 of yacc.c */ 5459 #line 52 1"parser.yy"5546 #line 523 "parser.yy" 5460 5547 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5461 5548 break; … … 5464 5551 5465 5552 /* Line 1806 of yacc.c */ 5466 #line 52 3"parser.yy"5553 #line 525 "parser.yy" 5467 5554 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5468 5555 break; … … 5471 5558 5472 5559 /* Line 1806 of yacc.c */ 5473 #line 5 29"parser.yy"5560 #line 531 "parser.yy" 5474 5561 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5475 5562 break; … … 5478 5565 5479 5566 /* Line 1806 of yacc.c */ 5480 #line 53 5"parser.yy"5567 #line 537 "parser.yy" 5481 5568 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5482 5569 break; … … 5485 5572 5486 5573 /* Line 1806 of yacc.c */ 5487 #line 54 1"parser.yy"5574 #line 543 "parser.yy" 5488 5575 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5489 5576 break; … … 5492 5579 5493 5580 /* Line 1806 of yacc.c */ 5494 #line 54 7"parser.yy"5581 #line 549 "parser.yy" 5495 5582 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5496 5583 break; … … 5499 5586 5500 5587 /* Line 1806 of yacc.c */ 5501 #line 55 3"parser.yy"5588 #line 555 "parser.yy" 5502 5589 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5503 5590 break; … … 5506 5593 5507 5594 /* Line 1806 of yacc.c */ 5508 #line 5 59"parser.yy"5595 #line 561 "parser.yy" 5509 5596 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5510 5597 break; … … 5513 5600 5514 5601 /* Line 1806 of yacc.c */ 5515 #line 56 1"parser.yy"5602 #line 563 "parser.yy" 5516 5603 { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5517 5604 break; … … 5520 5607 5521 5608 /* Line 1806 of yacc.c */ 5522 #line 56 3"parser.yy"5609 #line 565 "parser.yy" 5523 5610 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); } 5524 5611 break; … … 5527 5614 5528 5615 /* Line 1806 of yacc.c */ 5529 #line 57 4"parser.yy"5616 #line 576 "parser.yy" 5530 5617 { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5531 5618 break; … … 5534 5621 5535 5622 /* Line 1806 of yacc.c */ 5536 #line 57 6"parser.yy"5623 #line 578 "parser.yy" 5537 5624 { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5538 5625 break; … … 5541 5628 5542 5629 /* Line 1806 of yacc.c */ 5543 #line 5 78"parser.yy"5630 #line 580 "parser.yy" 5544 5631 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); } 5545 5632 break; … … 5548 5635 5549 5636 /* Line 1806 of yacc.c */ 5550 #line 58 3"parser.yy"5637 #line 585 "parser.yy" 5551 5638 { (yyval.en) = new NullExprNode; } 5552 5639 break; … … 5555 5642 5556 5643 /* Line 1806 of yacc.c */ 5557 #line 59 1"parser.yy"5644 #line 593 "parser.yy" 5558 5645 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); } 5559 5646 break; … … 5562 5649 5563 5650 /* Line 1806 of yacc.c */ 5564 #line 59 3"parser.yy"5651 #line 595 "parser.yy" 5565 5652 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); } 5566 5653 break; … … 5569 5656 5570 5657 /* Line 1806 of yacc.c */ 5571 #line 59 5"parser.yy"5658 #line 597 "parser.yy" 5572 5659 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); } 5573 5660 break; … … 5576 5663 5577 5664 /* Line 1806 of yacc.c */ 5578 #line 59 7"parser.yy"5665 #line 599 "parser.yy" 5579 5666 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); } 5580 5667 break; … … 5583 5670 5584 5671 /* Line 1806 of yacc.c */ 5585 #line 60 3"parser.yy"5672 #line 605 "parser.yy" 5586 5673 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 5587 5674 break; … … 5590 5677 5591 5678 /* Line 1806 of yacc.c */ 5592 #line 60 7"parser.yy"5679 #line 609 "parser.yy" 5593 5680 { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); } 5594 5681 break; … … 5597 5684 5598 5685 /* Line 1806 of yacc.c */ 5599 #line 6 08"parser.yy"5686 #line 610 "parser.yy" 5600 5687 { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); } 5601 5688 break; … … 5604 5691 5605 5692 /* Line 1806 of yacc.c */ 5606 #line 6 09"parser.yy"5693 #line 611 "parser.yy" 5607 5694 { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); } 5608 5695 break; … … 5611 5698 5612 5699 /* Line 1806 of yacc.c */ 5613 #line 61 0"parser.yy"5700 #line 612 "parser.yy" 5614 5701 { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); } 5615 5702 break; … … 5618 5705 5619 5706 /* Line 1806 of yacc.c */ 5620 #line 61 1"parser.yy"5707 #line 613 "parser.yy" 5621 5708 { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); } 5622 5709 break; … … 5625 5712 5626 5713 /* Line 1806 of yacc.c */ 5627 #line 61 2"parser.yy"5714 #line 614 "parser.yy" 5628 5715 { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); } 5629 5716 break; … … 5632 5719 5633 5720 /* Line 1806 of yacc.c */ 5634 #line 61 3"parser.yy"5721 #line 615 "parser.yy" 5635 5722 { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); } 5636 5723 break; … … 5639 5726 5640 5727 /* Line 1806 of yacc.c */ 5641 #line 61 4"parser.yy"5728 #line 616 "parser.yy" 5642 5729 { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); } 5643 5730 break; … … 5646 5733 5647 5734 /* Line 1806 of yacc.c */ 5648 #line 61 5"parser.yy"5735 #line 617 "parser.yy" 5649 5736 { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); } 5650 5737 break; … … 5653 5740 5654 5741 /* Line 1806 of yacc.c */ 5655 #line 61 6"parser.yy"5742 #line 618 "parser.yy" 5656 5743 { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); } 5657 5744 break; … … 5660 5747 5661 5748 /* Line 1806 of yacc.c */ 5662 #line 62 2"parser.yy"5749 #line 624 "parser.yy" 5663 5750 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5664 5751 break; … … 5667 5754 5668 5755 /* Line 1806 of yacc.c */ 5669 #line 62 7"parser.yy"5756 #line 629 "parser.yy" 5670 5757 { (yyval.en) = 0; } 5671 5758 break; … … 5674 5761 5675 5762 /* Line 1806 of yacc.c */ 5676 #line 63 6"parser.yy"5763 #line 638 "parser.yy" 5677 5764 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5678 5765 break; … … 5681 5768 5682 5769 /* Line 1806 of yacc.c */ 5683 #line 64 3"parser.yy"5770 #line 645 "parser.yy" 5684 5771 { 5685 5772 Token fn; fn.str = new std::string( "^?{}" ); // location undefined … … 5692 5779 5693 5780 /* Line 1806 of yacc.c */ 5694 #line 65 2"parser.yy"5781 #line 654 "parser.yy" 5695 5782 { 5696 5783 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5701 5788 5702 5789 /* Line 1806 of yacc.c */ 5703 #line 6 59"parser.yy"5790 #line 661 "parser.yy" 5704 5791 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5705 5792 break; … … 5708 5795 5709 5796 /* Line 1806 of yacc.c */ 5710 #line 66 6"parser.yy"5797 #line 668 "parser.yy" 5711 5798 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5712 5799 break; … … 5715 5802 5716 5803 /* Line 1806 of yacc.c */ 5717 #line 67 2"parser.yy"5804 #line 674 "parser.yy" 5718 5805 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5719 5806 break; … … 5722 5809 5723 5810 /* Line 1806 of yacc.c */ 5724 #line 67 7"parser.yy"5811 #line 679 "parser.yy" 5725 5812 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5726 5813 break; … … 5729 5816 5730 5817 /* Line 1806 of yacc.c */ 5731 #line 6 79"parser.yy"5818 #line 681 "parser.yy" 5732 5819 { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); } 5733 5820 break; … … 5736 5823 5737 5824 /* Line 1806 of yacc.c */ 5738 #line 68 1"parser.yy"5825 #line 683 "parser.yy" 5739 5826 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5740 5827 break; … … 5743 5830 5744 5831 /* Line 1806 of yacc.c */ 5745 #line 6 88"parser.yy"5832 #line 690 "parser.yy" 5746 5833 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5747 5834 break; … … 5750 5837 5751 5838 /* Line 1806 of yacc.c */ 5752 #line 69 3"parser.yy"5839 #line 695 "parser.yy" 5753 5840 { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); } 5754 5841 break; … … 5757 5844 5758 5845 /* Line 1806 of yacc.c */ 5759 #line 699"parser.yy"5846 #line 701 "parser.yy" 5760 5847 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5761 5848 break; … … 5764 5851 5765 5852 /* Line 1806 of yacc.c */ 5766 #line 70 1"parser.yy"5853 #line 703 "parser.yy" 5767 5854 { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); } 5768 5855 break; … … 5771 5858 5772 5859 /* Line 1806 of yacc.c */ 5773 #line 70 3"parser.yy"5860 #line 705 "parser.yy" 5774 5861 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5775 5862 break; … … 5778 5865 5779 5866 /* Line 1806 of yacc.c */ 5780 #line 70 5"parser.yy"5867 #line 707 "parser.yy" 5781 5868 { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ } 5782 5869 break; … … 5785 5872 5786 5873 /* Line 1806 of yacc.c */ 5787 #line 71 0"parser.yy"5874 #line 712 "parser.yy" 5788 5875 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5789 5876 break; … … 5792 5879 5793 5880 /* Line 1806 of yacc.c */ 5794 #line 71 2"parser.yy"5881 #line 714 "parser.yy" 5795 5882 { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); } 5796 5883 break; … … 5799 5886 5800 5887 /* Line 1806 of yacc.c */ 5801 #line 7 19"parser.yy"5888 #line 721 "parser.yy" 5802 5889 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5803 5890 break; … … 5806 5893 5807 5894 /* Line 1806 of yacc.c */ 5808 #line 72 1"parser.yy"5895 #line 723 "parser.yy" 5809 5896 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 5810 5897 break; … … 5813 5900 5814 5901 /* Line 1806 of yacc.c */ 5815 #line 7 28"parser.yy"5902 #line 730 "parser.yy" 5816 5903 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); } 5817 5904 break; … … 5820 5907 5821 5908 /* Line 1806 of yacc.c */ 5822 #line 73 2"parser.yy"5909 #line 734 "parser.yy" 5823 5910 { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); } 5824 5911 break; … … 5827 5914 5828 5915 /* Line 1806 of yacc.c */ 5829 #line 73 3"parser.yy"5916 #line 735 "parser.yy" 5830 5917 { (yyval.sn) = new StatementNode( StatementNode::Default ); } 5831 5918 break; … … 5834 5921 5835 5922 /* Line 1806 of yacc.c */ 5836 #line 7 39"parser.yy"5923 #line 741 "parser.yy" 5837 5924 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5838 5925 break; … … 5841 5928 5842 5929 /* Line 1806 of yacc.c */ 5843 #line 74 3"parser.yy"5930 #line 745 "parser.yy" 5844 5931 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5845 5932 break; … … 5848 5935 5849 5936 /* Line 1806 of yacc.c */ 5850 #line 7 48"parser.yy"5937 #line 750 "parser.yy" 5851 5938 { (yyval.sn) = 0; } 5852 5939 break; … … 5855 5942 5856 5943 /* Line 1806 of yacc.c */ 5857 #line 75 4"parser.yy"5944 #line 756 "parser.yy" 5858 5945 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5859 5946 break; … … 5862 5949 5863 5950 /* Line 1806 of yacc.c */ 5864 #line 75 6"parser.yy"5951 #line 758 "parser.yy" 5865 5952 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5866 5953 break; … … 5869 5956 5870 5957 /* Line 1806 of yacc.c */ 5871 #line 76 1"parser.yy"5958 #line 763 "parser.yy" 5872 5959 { (yyval.sn) = 0; } 5873 5960 break; … … 5876 5963 5877 5964 /* Line 1806 of yacc.c */ 5878 #line 76 7"parser.yy"5965 #line 769 "parser.yy" 5879 5966 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5880 5967 break; … … 5883 5970 5884 5971 /* Line 1806 of yacc.c */ 5885 #line 7 69"parser.yy"5972 #line 771 "parser.yy" 5886 5973 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); } 5887 5974 break; … … 5890 5977 5891 5978 /* Line 1806 of yacc.c */ 5892 #line 77 1"parser.yy"5979 #line 773 "parser.yy" 5893 5980 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5894 5981 break; … … 5897 5984 5898 5985 /* Line 1806 of yacc.c */ 5899 #line 77 3"parser.yy"5986 #line 775 "parser.yy" 5900 5987 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); } 5901 5988 break; … … 5904 5991 5905 5992 /* Line 1806 of yacc.c */ 5906 #line 7 78"parser.yy"5993 #line 780 "parser.yy" 5907 5994 { (yyval.sn) = 0; } 5908 5995 break; … … 5911 5998 5912 5999 /* Line 1806 of yacc.c */ 5913 #line 78 3"parser.yy"6000 #line 785 "parser.yy" 5914 6001 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5915 6002 break; … … 5918 6005 5919 6006 /* Line 1806 of yacc.c */ 5920 #line 78 4"parser.yy"6007 #line 786 "parser.yy" 5921 6008 { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); } 5922 6009 break; … … 5925 6012 5926 6013 /* Line 1806 of yacc.c */ 5927 #line 7 89"parser.yy"6014 #line 791 "parser.yy" 5928 6015 { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); } 5929 6016 break; … … 5932 6019 5933 6020 /* Line 1806 of yacc.c */ 5934 #line 79 1"parser.yy"6021 #line 793 "parser.yy" 5935 6022 { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); } 5936 6023 break; … … 5939 6026 5940 6027 /* Line 1806 of yacc.c */ 5941 #line 79 3"parser.yy"6028 #line 795 "parser.yy" 5942 6029 { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); } 5943 6030 break; … … 5946 6033 5947 6034 /* Line 1806 of yacc.c */ 5948 #line 798"parser.yy"6035 #line 800 "parser.yy" 5949 6036 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5950 6037 break; … … 5953 6040 5954 6041 /* Line 1806 of yacc.c */ 5955 #line 80 0"parser.yy"6042 #line 802 "parser.yy" 5956 6043 { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5957 6044 break; … … 5960 6047 5961 6048 /* Line 1806 of yacc.c */ 5962 #line 80 5"parser.yy"6049 #line 807 "parser.yy" 5963 6050 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); } 5964 6051 break; … … 5967 6054 5968 6055 /* Line 1806 of yacc.c */ 5969 #line 8 09"parser.yy"6056 #line 811 "parser.yy" 5970 6057 { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); } 5971 6058 break; … … 5974 6061 5975 6062 /* Line 1806 of yacc.c */ 5976 #line 81 2"parser.yy"6063 #line 814 "parser.yy" 5977 6064 { (yyval.sn) = new StatementNode( StatementNode::Continue ); } 5978 6065 break; … … 5981 6068 5982 6069 /* Line 1806 of yacc.c */ 5983 #line 81 6"parser.yy"6070 #line 818 "parser.yy" 5984 6071 { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); } 5985 6072 break; … … 5988 6075 5989 6076 /* Line 1806 of yacc.c */ 5990 #line 8 19"parser.yy"6077 #line 821 "parser.yy" 5991 6078 { (yyval.sn) = new StatementNode( StatementNode::Break ); } 5992 6079 break; … … 5995 6082 5996 6083 /* Line 1806 of yacc.c */ 5997 #line 82 3"parser.yy"6084 #line 825 "parser.yy" 5998 6085 { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); } 5999 6086 break; … … 6002 6089 6003 6090 /* Line 1806 of yacc.c */ 6004 #line 82 5"parser.yy"6091 #line 827 "parser.yy" 6005 6092 { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); } 6006 6093 break; … … 6009 6096 6010 6097 /* Line 1806 of yacc.c */ 6011 #line 82 7"parser.yy"6098 #line 829 "parser.yy" 6012 6099 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 6013 6100 break; … … 6016 6103 6017 6104 /* Line 1806 of yacc.c */ 6018 #line 83 1"parser.yy"6105 #line 833 "parser.yy" 6019 6106 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); } 6020 6107 break; … … 6023 6110 6024 6111 /* Line 1806 of yacc.c */ 6025 #line 83 3"parser.yy"6112 #line 835 "parser.yy" 6026 6113 { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); } 6027 6114 break; 6028 6115 6029 6116 case 197: 6030 6031 /* Line 1806 of yacc.c */6032 #line 840 "parser.yy"6033 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }6034 break;6035 6036 case 198:6037 6117 6038 6118 /* Line 1806 of yacc.c */ … … 6041 6121 break; 6042 6122 6123 case 198: 6124 6125 /* Line 1806 of yacc.c */ 6126 #line 844 "parser.yy" 6127 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); } 6128 break; 6129 6043 6130 case 199: 6044 6131 6045 6132 /* Line 1806 of yacc.c */ 6046 #line 84 4"parser.yy"6133 #line 846 "parser.yy" 6047 6134 { 6048 6135 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); … … 6054 6141 6055 6142 /* Line 1806 of yacc.c */ 6056 #line 85 5"parser.yy"6143 #line 857 "parser.yy" 6057 6144 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6058 6145 break; … … 6061 6148 6062 6149 /* Line 1806 of yacc.c */ 6063 #line 85 7"parser.yy"6150 #line 859 "parser.yy" 6064 6151 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6065 6152 break; … … 6068 6155 6069 6156 /* Line 1806 of yacc.c */ 6070 #line 8 59"parser.yy"6157 #line 861 "parser.yy" 6071 6158 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6072 6159 break; … … 6075 6162 6076 6163 /* Line 1806 of yacc.c */ 6077 #line 86 1"parser.yy"6164 #line 863 "parser.yy" 6078 6165 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6079 6166 break; … … 6082 6169 6083 6170 /* Line 1806 of yacc.c */ 6084 #line 86 6"parser.yy"6171 #line 868 "parser.yy" 6085 6172 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6086 6173 break; … … 6089 6176 6090 6177 /* Line 1806 of yacc.c */ 6091 #line 8 68"parser.yy"6178 #line 870 "parser.yy" 6092 6179 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6093 6180 break; … … 6096 6183 6097 6184 /* Line 1806 of yacc.c */ 6098 #line 87 0"parser.yy"6185 #line 872 "parser.yy" 6099 6186 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6100 6187 break; … … 6103 6190 6104 6191 /* Line 1806 of yacc.c */ 6105 #line 87 2"parser.yy"6192 #line 874 "parser.yy" 6106 6193 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6107 6194 break; … … 6110 6197 6111 6198 /* Line 1806 of yacc.c */ 6112 #line 87 7"parser.yy"6199 #line 879 "parser.yy" 6113 6200 { 6114 6201 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); … … 6120 6207 6121 6208 /* Line 1806 of yacc.c */ 6122 #line 89 1"parser.yy"6209 #line 893 "parser.yy" 6123 6210 { 6124 6211 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6130 6217 6131 6218 /* Line 1806 of yacc.c */ 6132 #line 89 6"parser.yy"6219 #line 898 "parser.yy" 6133 6220 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6134 6221 break; … … 6137 6224 6138 6225 /* Line 1806 of yacc.c */ 6139 #line 898"parser.yy"6226 #line 900 "parser.yy" 6140 6227 { 6141 6228 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6147 6234 6148 6235 /* Line 1806 of yacc.c */ 6149 #line 90 7"parser.yy"6236 #line 909 "parser.yy" 6150 6237 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); } 6151 6238 break; … … 6154 6241 6155 6242 /* Line 1806 of yacc.c */ 6156 #line 9 09"parser.yy"6243 #line 911 "parser.yy" 6157 6244 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); } 6158 6245 break; … … 6161 6248 6162 6249 /* Line 1806 of yacc.c */ 6163 #line 91 1"parser.yy"6250 #line 913 "parser.yy" 6164 6251 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6165 6252 break; … … 6168 6255 6169 6256 /* Line 1806 of yacc.c */ 6170 #line 91 3"parser.yy"6257 #line 915 "parser.yy" 6171 6258 { (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) ); } 6172 6259 break; … … 6175 6262 6176 6263 /* Line 1806 of yacc.c */ 6177 #line 91 5"parser.yy"6264 #line 917 "parser.yy" 6178 6265 { (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) ); } 6179 6266 break; … … 6182 6269 6183 6270 /* Line 1806 of yacc.c */ 6184 #line 92 0"parser.yy"6271 #line 922 "parser.yy" 6185 6272 { (yyval.flag) = false; } 6186 6273 break; … … 6189 6276 6190 6277 /* Line 1806 of yacc.c */ 6191 #line 92 2"parser.yy"6278 #line 924 "parser.yy" 6192 6279 { (yyval.flag) = true; } 6193 6280 break; … … 6196 6283 6197 6284 /* Line 1806 of yacc.c */ 6198 #line 92 7"parser.yy"6285 #line 929 "parser.yy" 6199 6286 { (yyval.en) = 0; } 6200 6287 break; … … 6203 6290 6204 6291 /* Line 1806 of yacc.c */ 6205 #line 93 4"parser.yy"6292 #line 936 "parser.yy" 6206 6293 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); } 6207 6294 break; … … 6210 6297 6211 6298 /* Line 1806 of yacc.c */ 6212 #line 9 39"parser.yy"6299 #line 941 "parser.yy" 6213 6300 { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); } 6214 6301 break; … … 6217 6304 6218 6305 /* Line 1806 of yacc.c */ 6219 #line 94 1"parser.yy"6306 #line 943 "parser.yy" 6220 6307 { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); } 6221 6308 break; … … 6224 6311 6225 6312 /* Line 1806 of yacc.c */ 6226 #line 94 6"parser.yy"6313 #line 948 "parser.yy" 6227 6314 { (yyval.constant) = 0; } 6228 6315 break; … … 6231 6318 6232 6319 /* Line 1806 of yacc.c */ 6233 #line 9 48"parser.yy"6320 #line 950 "parser.yy" 6234 6321 { (yyval.constant) = (yyvsp[(1) - (1)].constant); } 6235 6322 break; … … 6238 6325 6239 6326 /* Line 1806 of yacc.c */ 6240 #line 95 0"parser.yy"6327 #line 952 "parser.yy" 6241 6328 { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); } 6242 6329 break; … … 6245 6332 6246 6333 /* Line 1806 of yacc.c */ 6247 #line 95 5"parser.yy"6334 #line 957 "parser.yy" 6248 6335 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6249 6336 break; … … 6252 6339 6253 6340 /* Line 1806 of yacc.c */ 6254 #line 95 7"parser.yy"6341 #line 959 "parser.yy" 6255 6342 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6256 6343 break; … … 6259 6346 6260 6347 /* Line 1806 of yacc.c */ 6261 #line 96 4"parser.yy"6348 #line 966 "parser.yy" 6262 6349 { (yyval.decl) = 0; } 6263 6350 break; … … 6266 6353 6267 6354 /* Line 1806 of yacc.c */ 6268 #line 97 1"parser.yy"6355 #line 973 "parser.yy" 6269 6356 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6270 6357 break; … … 6273 6360 6274 6361 /* Line 1806 of yacc.c */ 6275 #line 97 6"parser.yy"6362 #line 978 "parser.yy" 6276 6363 { (yyval.decl) = 0; } 6277 6364 break; … … 6280 6367 6281 6368 /* Line 1806 of yacc.c */ 6282 #line 98 3"parser.yy"6369 #line 985 "parser.yy" 6283 6370 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6284 6371 break; … … 6287 6374 6288 6375 /* Line 1806 of yacc.c */ 6289 #line 99 7"parser.yy"6376 #line 999 "parser.yy" 6290 6377 {} 6291 6378 break; … … 6294 6381 6295 6382 /* Line 1806 of yacc.c */ 6296 #line 998"parser.yy"6383 #line 1000 "parser.yy" 6297 6384 {} 6298 6385 break; … … 6301 6388 6302 6389 /* Line 1806 of yacc.c */ 6303 #line 102 7"parser.yy"6390 #line 1029 "parser.yy" 6304 6391 { 6305 6392 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6306 (yyval.decl) = (yyvsp[(1) - (2)].decl) ;6393 (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) ); 6307 6394 } 6308 6395 break; … … 6311 6398 6312 6399 /* Line 1806 of yacc.c */ 6313 #line 103 4"parser.yy"6400 #line 1036 "parser.yy" 6314 6401 { 6315 6402 typedefTable.addToEnclosingScope( TypedefTable::ID ); 6316 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ) ;6403 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );; 6317 6404 } 6318 6405 break; … … 6321 6408 6322 6409 /* Line 1806 of yacc.c */ 6323 #line 10 39"parser.yy"6410 #line 1041 "parser.yy" 6324 6411 { 6325 6412 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); 6326 (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) ) );6413 (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) ); 6327 6414 } 6328 6415 break; … … 6331 6418 6332 6419 /* Line 1806 of yacc.c */ 6333 #line 10 49"parser.yy"6420 #line 1051 "parser.yy" 6334 6421 { 6335 6422 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6341 6428 6342 6429 /* Line 1806 of yacc.c */ 6343 #line 105 4"parser.yy"6430 #line 1056 "parser.yy" 6344 6431 { 6345 6432 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6351 6438 6352 6439 /* Line 1806 of yacc.c */ 6353 #line 10 59"parser.yy"6440 #line 1061 "parser.yy" 6354 6441 { 6355 6442 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6361 6448 6362 6449 /* Line 1806 of yacc.c */ 6363 #line 106 7"parser.yy"6450 #line 1069 "parser.yy" 6364 6451 { 6365 6452 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6371 6458 6372 6459 /* Line 1806 of yacc.c */ 6373 #line 107 2"parser.yy"6460 #line 1074 "parser.yy" 6374 6461 { 6375 6462 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6381 6468 6382 6469 /* Line 1806 of yacc.c */ 6383 #line 107 7"parser.yy"6470 #line 1079 "parser.yy" 6384 6471 { 6385 6472 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6391 6478 6392 6479 /* Line 1806 of yacc.c */ 6393 #line 108 2"parser.yy"6480 #line 1084 "parser.yy" 6394 6481 { 6395 6482 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6401 6488 6402 6489 /* Line 1806 of yacc.c */ 6403 #line 108 7"parser.yy"6490 #line 1089 "parser.yy" 6404 6491 { 6405 6492 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6411 6498 6412 6499 /* Line 1806 of yacc.c */ 6413 #line 109 5"parser.yy"6500 #line 1097 "parser.yy" 6414 6501 { 6415 6502 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6420 6507 6421 6508 /* Line 1806 of yacc.c */ 6422 #line 11 18"parser.yy"6509 #line 1120 "parser.yy" 6423 6510 { 6424 6511 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6429 6516 6430 6517 /* Line 1806 of yacc.c */ 6431 #line 112 2"parser.yy"6518 #line 1124 "parser.yy" 6432 6519 { 6433 6520 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6438 6525 6439 6526 /* Line 1806 of yacc.c */ 6440 #line 11 29"parser.yy"6527 #line 1131 "parser.yy" 6441 6528 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6442 6529 break; … … 6445 6532 6446 6533 /* Line 1806 of yacc.c */ 6447 #line 113 3"parser.yy"6534 #line 1135 "parser.yy" 6448 6535 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6449 6536 break; … … 6452 6539 6453 6540 /* Line 1806 of yacc.c */ 6454 #line 11 38"parser.yy"6541 #line 1140 "parser.yy" 6455 6542 { 6456 6543 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6462 6549 6463 6550 /* Line 1806 of yacc.c */ 6464 #line 114 3"parser.yy"6551 #line 1145 "parser.yy" 6465 6552 { 6466 6553 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6472 6559 6473 6560 /* Line 1806 of yacc.c */ 6474 #line 11 48"parser.yy"6561 #line 1150 "parser.yy" 6475 6562 { 6476 6563 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6482 6569 6483 6570 /* Line 1806 of yacc.c */ 6484 #line 11 59"parser.yy"6571 #line 1161 "parser.yy" 6485 6572 { 6486 6573 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6492 6579 6493 6580 /* Line 1806 of yacc.c */ 6494 #line 116 4"parser.yy"6581 #line 1166 "parser.yy" 6495 6582 { 6496 6583 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6502 6589 6503 6590 /* Line 1806 of yacc.c */ 6504 #line 11 69"parser.yy"6591 #line 1171 "parser.yy" 6505 6592 { 6506 6593 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6512 6599 6513 6600 /* Line 1806 of yacc.c */ 6514 #line 117 4"parser.yy"6601 #line 1176 "parser.yy" 6515 6602 { 6516 6603 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6522 6609 6523 6610 /* Line 1806 of yacc.c */ 6524 #line 11 79"parser.yy"6611 #line 1181 "parser.yy" 6525 6612 { 6526 6613 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6532 6619 6533 6620 /* Line 1806 of yacc.c */ 6534 #line 11 88"parser.yy"6621 #line 1190 "parser.yy" 6535 6622 { 6536 6623 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6542 6629 6543 6630 /* Line 1806 of yacc.c */ 6544 #line 119 3"parser.yy"6631 #line 1195 "parser.yy" 6545 6632 { 6546 6633 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6552 6639 6553 6640 /* Line 1806 of yacc.c */ 6554 #line 121 0"parser.yy"6641 #line 1212 "parser.yy" 6555 6642 { 6556 6643 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6562 6649 6563 6650 /* Line 1806 of yacc.c */ 6564 #line 121 5"parser.yy"6651 #line 1217 "parser.yy" 6565 6652 { 6566 6653 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6572 6659 6573 6660 /* Line 1806 of yacc.c */ 6574 #line 123 7"parser.yy"6661 #line 1239 "parser.yy" 6575 6662 { (yyval.decl) = 0; } 6576 6663 break; … … 6579 6666 6580 6667 /* Line 1806 of yacc.c */ 6581 #line 12 49"parser.yy"6668 #line 1251 "parser.yy" 6582 6669 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6583 6670 break; … … 6586 6673 6587 6674 /* Line 1806 of yacc.c */ 6588 #line 126 0"parser.yy"6675 #line 1262 "parser.yy" 6589 6676 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6590 6677 break; … … 6593 6680 6594 6681 /* Line 1806 of yacc.c */ 6595 #line 126 2"parser.yy"6682 #line 1264 "parser.yy" 6596 6683 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6597 6684 break; … … 6600 6687 6601 6688 /* Line 1806 of yacc.c */ 6602 #line 126 4"parser.yy"6689 #line 1266 "parser.yy" 6603 6690 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6604 6691 break; … … 6607 6694 6608 6695 /* Line 1806 of yacc.c */ 6609 #line 126 6"parser.yy"6696 #line 1268 "parser.yy" 6610 6697 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6611 6698 break; … … 6614 6701 6615 6702 /* Line 1806 of yacc.c */ 6616 #line 12 68"parser.yy"6703 #line 1270 "parser.yy" 6617 6704 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6618 6705 break; … … 6621 6708 6622 6709 /* Line 1806 of yacc.c */ 6623 #line 127 0"parser.yy"6710 #line 1272 "parser.yy" 6624 6711 { 6625 6712 typedefTable.enterScope(); … … 6630 6717 6631 6718 /* Line 1806 of yacc.c */ 6632 #line 127 4"parser.yy"6719 #line 1276 "parser.yy" 6633 6720 { 6634 6721 typedefTable.leaveScope(); … … 6640 6727 6641 6728 /* Line 1806 of yacc.c */ 6642 #line 128 3"parser.yy"6729 #line 1285 "parser.yy" 6643 6730 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6644 6731 break; … … 6647 6734 6648 6735 /* Line 1806 of yacc.c */ 6649 #line 128 5"parser.yy"6736 #line 1287 "parser.yy" 6650 6737 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6651 6738 break; … … 6654 6741 6655 6742 /* Line 1806 of yacc.c */ 6656 #line 129 6"parser.yy"6743 #line 1298 "parser.yy" 6657 6744 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6658 6745 break; … … 6661 6748 6662 6749 /* Line 1806 of yacc.c */ 6663 #line 130 5"parser.yy"6750 #line 1307 "parser.yy" 6664 6751 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6665 6752 break; … … 6668 6755 6669 6756 /* Line 1806 of yacc.c */ 6670 #line 130 7"parser.yy"6757 #line 1309 "parser.yy" 6671 6758 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6672 6759 break; … … 6675 6762 6676 6763 /* Line 1806 of yacc.c */ 6677 #line 13 09"parser.yy"6764 #line 1311 "parser.yy" 6678 6765 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6679 6766 break; … … 6682 6769 6683 6770 /* Line 1806 of yacc.c */ 6684 #line 131 1"parser.yy"6771 #line 1313 "parser.yy" 6685 6772 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6686 6773 break; … … 6689 6776 6690 6777 /* Line 1806 of yacc.c */ 6691 #line 131 3"parser.yy"6778 #line 1315 "parser.yy" 6692 6779 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 6693 6780 break; … … 6696 6783 6697 6784 /* Line 1806 of yacc.c */ 6698 #line 131 5"parser.yy"6785 #line 1317 "parser.yy" 6699 6786 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6700 6787 break; … … 6703 6790 6704 6791 /* Line 1806 of yacc.c */ 6705 #line 131 7"parser.yy"6792 #line 1319 "parser.yy" 6706 6793 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 6707 6794 break; … … 6710 6797 6711 6798 /* Line 1806 of yacc.c */ 6712 #line 13 19"parser.yy"6799 #line 1321 "parser.yy" 6713 6800 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } 6714 6801 break; … … 6717 6804 6718 6805 /* Line 1806 of yacc.c */ 6719 #line 132 4"parser.yy"6806 #line 1326 "parser.yy" 6720 6807 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); } 6721 6808 break; … … 6724 6811 6725 6812 /* Line 1806 of yacc.c */ 6726 #line 132 6"parser.yy"6813 #line 1328 "parser.yy" 6727 6814 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); } 6728 6815 break; … … 6731 6818 6732 6819 /* Line 1806 of yacc.c */ 6733 #line 13 28"parser.yy"6820 #line 1330 "parser.yy" 6734 6821 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); } 6735 6822 break; … … 6738 6825 6739 6826 /* Line 1806 of yacc.c */ 6740 #line 133 0"parser.yy"6827 #line 1332 "parser.yy" 6741 6828 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); } 6742 6829 break; … … 6745 6832 6746 6833 /* Line 1806 of yacc.c */ 6747 #line 133 2"parser.yy"6834 #line 1334 "parser.yy" 6748 6835 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); } 6749 6836 break; … … 6752 6839 6753 6840 /* Line 1806 of yacc.c */ 6754 #line 133 4"parser.yy"6841 #line 1336 "parser.yy" 6755 6842 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); } 6756 6843 break; … … 6759 6846 6760 6847 /* Line 1806 of yacc.c */ 6761 #line 133 6"parser.yy"6848 #line 1338 "parser.yy" 6762 6849 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); } 6763 6850 break; … … 6766 6853 6767 6854 /* Line 1806 of yacc.c */ 6768 #line 13 38"parser.yy"6855 #line 1340 "parser.yy" 6769 6856 { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); } 6770 6857 break; … … 6773 6860 6774 6861 /* Line 1806 of yacc.c */ 6775 #line 134 0"parser.yy"6862 #line 1342 "parser.yy" 6776 6863 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); } 6777 6864 break; … … 6780 6867 6781 6868 /* Line 1806 of yacc.c */ 6782 #line 134 2"parser.yy"6869 #line 1344 "parser.yy" 6783 6870 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); } 6784 6871 break; … … 6787 6874 6788 6875 /* Line 1806 of yacc.c */ 6789 #line 134 4"parser.yy"6876 #line 1346 "parser.yy" 6790 6877 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); } 6791 6878 break; … … 6794 6881 6795 6882 /* Line 1806 of yacc.c */ 6796 #line 134 6"parser.yy"6883 #line 1348 "parser.yy" 6797 6884 { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 6798 6885 break; 6799 6886 6800 case 334: 6801 6802 /* Line 1806 of yacc.c */ 6803 #line 1353 "parser.yy" 6887 case 333: 6888 6889 /* Line 1806 of yacc.c */ 6890 #line 1350 "parser.yy" 6891 { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); } 6892 break; 6893 6894 case 335: 6895 6896 /* Line 1806 of yacc.c */ 6897 #line 1357 "parser.yy" 6804 6898 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6805 6899 break; 6806 6900 6807 case 33 5:6808 6809 /* Line 1806 of yacc.c */ 6810 #line 135 5"parser.yy"6901 case 336: 6902 6903 /* Line 1806 of yacc.c */ 6904 #line 1359 "parser.yy" 6811 6905 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6812 6906 break; 6813 6907 6814 case 33 6:6815 6816 /* Line 1806 of yacc.c */ 6817 #line 13 57"parser.yy"6908 case 337: 6909 6910 /* Line 1806 of yacc.c */ 6911 #line 1361 "parser.yy" 6818 6912 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6819 6913 break; 6820 6914 6821 case 33 7:6822 6823 /* Line 1806 of yacc.c */ 6824 #line 13 59"parser.yy"6915 case 338: 6916 6917 /* Line 1806 of yacc.c */ 6918 #line 1363 "parser.yy" 6825 6919 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); } 6826 6920 break; 6827 6921 6828 case 3 39:6829 6830 /* Line 1806 of yacc.c */ 6831 #line 136 5"parser.yy"6922 case 340: 6923 6924 /* Line 1806 of yacc.c */ 6925 #line 1369 "parser.yy" 6832 6926 { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6833 6927 break; 6834 6928 6835 case 34 1:6836 6837 /* Line 1806 of yacc.c */ 6838 #line 137 2"parser.yy"6929 case 342: 6930 6931 /* Line 1806 of yacc.c */ 6932 #line 1376 "parser.yy" 6839 6933 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6840 6934 break; 6841 6935 6842 case 34 2:6843 6844 /* Line 1806 of yacc.c */ 6845 #line 137 4"parser.yy"6936 case 343: 6937 6938 /* Line 1806 of yacc.c */ 6939 #line 1378 "parser.yy" 6846 6940 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6847 6941 break; 6848 6942 6849 case 34 3:6850 6851 /* Line 1806 of yacc.c */ 6852 #line 13 76"parser.yy"6943 case 344: 6944 6945 /* Line 1806 of yacc.c */ 6946 #line 1380 "parser.yy" 6853 6947 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); } 6854 6948 break; 6855 6949 6856 case 34 4:6857 6858 /* Line 1806 of yacc.c */ 6859 #line 138 1"parser.yy"6950 case 345: 6951 6952 /* Line 1806 of yacc.c */ 6953 #line 1385 "parser.yy" 6860 6954 { (yyval.decl) = (yyvsp[(3) - (4)].decl); } 6861 6955 break; 6862 6956 6863 case 34 5:6864 6865 /* Line 1806 of yacc.c */ 6866 #line 138 3"parser.yy"6957 case 346: 6958 6959 /* Line 1806 of yacc.c */ 6960 #line 1387 "parser.yy" 6867 6961 { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); } 6868 6962 break; 6869 6963 6870 case 34 6:6871 6872 /* Line 1806 of yacc.c */ 6873 #line 138 5"parser.yy"6964 case 347: 6965 6966 /* Line 1806 of yacc.c */ 6967 #line 1389 "parser.yy" 6874 6968 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); } 6875 6969 break; 6876 6970 6877 case 34 7:6878 6879 /* Line 1806 of yacc.c */ 6880 #line 13 87"parser.yy"6971 case 348: 6972 6973 /* Line 1806 of yacc.c */ 6974 #line 1391 "parser.yy" 6881 6975 { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 6882 6976 break; 6883 6977 6884 case 3 49:6885 6886 /* Line 1806 of yacc.c */ 6887 #line 139 3"parser.yy"6978 case 350: 6979 6980 /* Line 1806 of yacc.c */ 6981 #line 1397 "parser.yy" 6888 6982 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6889 6983 break; 6890 6984 6891 case 35 0:6892 6893 /* Line 1806 of yacc.c */ 6894 #line 139 5"parser.yy"6985 case 351: 6986 6987 /* Line 1806 of yacc.c */ 6988 #line 1399 "parser.yy" 6895 6989 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6896 6990 break; 6897 6991 6898 case 35 1:6899 6900 /* Line 1806 of yacc.c */ 6901 #line 1 397"parser.yy"6992 case 352: 6993 6994 /* Line 1806 of yacc.c */ 6995 #line 1401 "parser.yy" 6902 6996 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6903 6997 break; 6904 6998 6905 case 35 3:6906 6907 /* Line 1806 of yacc.c */ 6908 #line 140 3"parser.yy"6999 case 354: 7000 7001 /* Line 1806 of yacc.c */ 7002 #line 1407 "parser.yy" 6909 7003 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6910 7004 break; 6911 7005 6912 case 35 4:6913 6914 /* Line 1806 of yacc.c */ 6915 #line 140 5"parser.yy"7006 case 355: 7007 7008 /* Line 1806 of yacc.c */ 7009 #line 1409 "parser.yy" 6916 7010 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6917 7011 break; 6918 7012 6919 case 35 6:6920 6921 /* Line 1806 of yacc.c */ 6922 #line 141 1"parser.yy"7013 case 357: 7014 7015 /* Line 1806 of yacc.c */ 7016 #line 1415 "parser.yy" 6923 7017 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6924 7018 break; 6925 7019 6926 case 35 7:6927 6928 /* Line 1806 of yacc.c */ 6929 #line 141 3"parser.yy"7020 case 358: 7021 7022 /* Line 1806 of yacc.c */ 7023 #line 1417 "parser.yy" 6930 7024 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6931 7025 break; 6932 7026 6933 case 35 8:6934 6935 /* Line 1806 of yacc.c */ 6936 #line 141 5"parser.yy"7027 case 359: 7028 7029 /* Line 1806 of yacc.c */ 7030 #line 1419 "parser.yy" 6937 7031 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6938 7032 break; 6939 7033 6940 case 3 59:6941 6942 /* Line 1806 of yacc.c */ 6943 #line 142 0"parser.yy"7034 case 360: 7035 7036 /* Line 1806 of yacc.c */ 7037 #line 1424 "parser.yy" 6944 7038 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); } 6945 7039 break; 6946 7040 6947 case 36 0:6948 6949 /* Line 1806 of yacc.c */ 6950 #line 142 2"parser.yy"7041 case 361: 7042 7043 /* Line 1806 of yacc.c */ 7044 #line 1426 "parser.yy" 6951 7045 { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 6952 7046 break; 6953 7047 6954 case 36 1:6955 6956 /* Line 1806 of yacc.c */ 6957 #line 142 4"parser.yy"7048 case 362: 7049 7050 /* Line 1806 of yacc.c */ 7051 #line 1428 "parser.yy" 6958 7052 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6959 7053 break; 6960 7054 6961 case 36 4:6962 6963 /* Line 1806 of yacc.c */ 6964 #line 143 4"parser.yy"7055 case 365: 7056 7057 /* Line 1806 of yacc.c */ 7058 #line 1438 "parser.yy" 6965 7059 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); } 6966 7060 break; 6967 7061 6968 case 365:6969 6970 /* Line 1806 of yacc.c */6971 #line 1436 "parser.yy"6972 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }6973 break;6974 6975 7062 case 366: 6976 7063 6977 7064 /* Line 1806 of yacc.c */ 6978 #line 1438 "parser.yy" 6979 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); } 7065 #line 1440 "parser.yy" 7066 { 7067 typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); 7068 (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); 7069 } 6980 7070 break; 6981 7071 … … 6983 7073 6984 7074 /* Line 1806 of yacc.c */ 6985 #line 1440 "parser.yy" 7075 #line 1445 "parser.yy" 7076 { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); } 7077 break; 7078 7079 case 368: 7080 7081 /* Line 1806 of yacc.c */ 7082 #line 1447 "parser.yy" 7083 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl)); } 7084 break; 7085 7086 case 369: 7087 7088 /* Line 1806 of yacc.c */ 7089 #line 1449 "parser.yy" 6986 7090 { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); } 6987 7091 break; 6988 7092 6989 case 3 68:6990 6991 /* Line 1806 of yacc.c */ 6992 #line 14 42"parser.yy"7093 case 370: 7094 7095 /* Line 1806 of yacc.c */ 7096 #line 1451 "parser.yy" 6993 7097 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 6994 7098 break; 6995 7099 6996 case 3 69:6997 6998 /* Line 1806 of yacc.c */ 6999 #line 14 47"parser.yy"7100 case 371: 7101 7102 /* Line 1806 of yacc.c */ 7103 #line 1456 "parser.yy" 7000 7104 { (yyval.aggKey) = DeclarationNode::Struct; } 7001 7105 break; 7002 7106 7003 case 37 0:7004 7005 /* Line 1806 of yacc.c */ 7006 #line 14 49"parser.yy"7107 case 372: 7108 7109 /* Line 1806 of yacc.c */ 7110 #line 1458 "parser.yy" 7007 7111 { (yyval.aggKey) = DeclarationNode::Union; } 7008 7112 break; 7009 7113 7010 case 37 1:7011 7012 /* Line 1806 of yacc.c */ 7013 #line 14 54"parser.yy"7114 case 373: 7115 7116 /* Line 1806 of yacc.c */ 7117 #line 1463 "parser.yy" 7014 7118 { (yyval.decl) = (yyvsp[(1) - (1)].decl); } 7015 7119 break; 7016 7120 7017 case 37 2:7018 7019 /* Line 1806 of yacc.c */ 7020 #line 14 56"parser.yy"7121 case 374: 7122 7123 /* Line 1806 of yacc.c */ 7124 #line 1465 "parser.yy" 7021 7125 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7022 7126 break; 7023 7127 7024 case 37 4:7025 7026 /* Line 1806 of yacc.c */ 7027 #line 14 62"parser.yy"7128 case 376: 7129 7130 /* Line 1806 of yacc.c */ 7131 #line 1471 "parser.yy" 7028 7132 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7029 7133 break; 7030 7134 7031 case 37 6:7032 7033 /* Line 1806 of yacc.c */ 7034 #line 14 65"parser.yy"7135 case 378: 7136 7137 /* Line 1806 of yacc.c */ 7138 #line 1474 "parser.yy" 7035 7139 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 7036 7140 break; 7037 7141 7038 case 3 78:7039 7040 /* Line 1806 of yacc.c */ 7041 #line 14 71"parser.yy"7142 case 380: 7143 7144 /* Line 1806 of yacc.c */ 7145 #line 1480 "parser.yy" 7042 7146 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); } 7043 7147 break; 7044 7148 7045 case 3 79:7046 7047 /* Line 1806 of yacc.c */ 7048 #line 14 73"parser.yy"7149 case 381: 7150 7151 /* Line 1806 of yacc.c */ 7152 #line 1482 "parser.yy" 7049 7153 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); } 7050 7154 break; 7051 7155 7052 case 38 0:7053 7054 /* Line 1806 of yacc.c */ 7055 #line 14 75"parser.yy"7156 case 382: 7157 7158 /* Line 1806 of yacc.c */ 7159 #line 1484 "parser.yy" 7056 7160 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); } 7057 7161 break; 7058 7162 7059 case 38 1:7060 7061 /* Line 1806 of yacc.c */ 7062 #line 148 0"parser.yy"7163 case 383: 7164 7165 /* Line 1806 of yacc.c */ 7166 #line 1489 "parser.yy" 7063 7167 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7064 7168 break; 7065 7169 7066 case 38 2:7067 7068 /* Line 1806 of yacc.c */ 7069 #line 14 82"parser.yy"7170 case 384: 7171 7172 /* Line 1806 of yacc.c */ 7173 #line 1491 "parser.yy" 7070 7174 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); } 7071 7175 break; 7072 7176 7073 case 38 3:7074 7075 /* Line 1806 of yacc.c */ 7076 #line 14 87"parser.yy"7177 case 385: 7178 7179 /* Line 1806 of yacc.c */ 7180 #line 1496 "parser.yy" 7077 7181 { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ } 7078 7182 break; 7079 7183 7080 case 38 4:7081 7082 /* Line 1806 of yacc.c */ 7083 #line 14 89"parser.yy"7184 case 386: 7185 7186 /* Line 1806 of yacc.c */ 7187 #line 1498 "parser.yy" 7084 7188 { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); } 7085 7189 break; 7086 7190 7087 case 38 5:7088 7089 /* Line 1806 of yacc.c */ 7090 #line 1 492"parser.yy"7191 case 387: 7192 7193 /* Line 1806 of yacc.c */ 7194 #line 1501 "parser.yy" 7091 7195 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7092 7196 break; 7093 7197 7094 case 38 6:7095 7096 /* Line 1806 of yacc.c */ 7097 #line 1 495"parser.yy"7198 case 388: 7199 7200 /* Line 1806 of yacc.c */ 7201 #line 1504 "parser.yy" 7098 7202 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); } 7099 7203 break; 7100 7204 7101 case 3 88:7102 7103 /* Line 1806 of yacc.c */ 7104 #line 15 01"parser.yy"7205 case 390: 7206 7207 /* Line 1806 of yacc.c */ 7208 #line 1510 "parser.yy" 7105 7209 { (yyval.en) = 0; } 7106 7210 break; 7107 7211 7108 case 3 89:7109 7110 /* Line 1806 of yacc.c */ 7111 #line 15 03"parser.yy"7212 case 391: 7213 7214 /* Line 1806 of yacc.c */ 7215 #line 1512 "parser.yy" 7112 7216 { (yyval.en) = (yyvsp[(1) - (1)].en); } 7113 7217 break; 7114 7218 7115 case 39 0:7116 7117 /* Line 1806 of yacc.c */ 7118 #line 15 08"parser.yy"7219 case 392: 7220 7221 /* Line 1806 of yacc.c */ 7222 #line 1517 "parser.yy" 7119 7223 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7120 7224 break; 7121 7225 7122 case 39 2:7123 7124 /* Line 1806 of yacc.c */ 7125 #line 15 17"parser.yy"7226 case 394: 7227 7228 /* Line 1806 of yacc.c */ 7229 #line 1526 "parser.yy" 7126 7230 { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); } 7127 7231 break; 7128 7232 7129 case 393:7130 7131 /* Line 1806 of yacc.c */7132 #line 1519 "parser.yy"7133 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }7134 break;7135 7136 case 394:7137 7138 /* Line 1806 of yacc.c */7139 #line 1521 "parser.yy"7140 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }7141 break;7142 7143 7233 case 395: 7144 7234 7145 7235 /* Line 1806 of yacc.c */ 7146 #line 1526 "parser.yy" 7236 #line 1528 "parser.yy" 7237 { 7238 typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); 7239 (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); 7240 } 7241 break; 7242 7243 case 396: 7244 7245 /* Line 1806 of yacc.c */ 7246 #line 1533 "parser.yy" 7247 { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); } 7248 break; 7249 7250 case 397: 7251 7252 /* Line 1806 of yacc.c */ 7253 #line 1535 "parser.yy" 7254 { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); } 7255 break; 7256 7257 case 398: 7258 7259 /* Line 1806 of yacc.c */ 7260 #line 1540 "parser.yy" 7147 7261 { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); } 7148 7262 break; 7149 7263 7150 case 39 6:7151 7152 /* Line 1806 of yacc.c */ 7153 #line 15 28"parser.yy"7264 case 399: 7265 7266 /* Line 1806 of yacc.c */ 7267 #line 1542 "parser.yy" 7154 7268 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); } 7155 7269 break; 7156 7270 7157 case 397:7158 7159 /* Line 1806 of yacc.c */ 7160 #line 15 33"parser.yy"7271 case 400: 7272 7273 /* Line 1806 of yacc.c */ 7274 #line 1547 "parser.yy" 7161 7275 { (yyval.en) = 0; } 7162 7276 break; 7163 7277 7164 case 398:7165 7166 /* Line 1806 of yacc.c */ 7167 #line 15 35"parser.yy"7278 case 401: 7279 7280 /* Line 1806 of yacc.c */ 7281 #line 1549 "parser.yy" 7168 7282 { (yyval.en) = (yyvsp[(2) - (2)].en); } 7169 7283 break; 7170 7284 7171 case 399:7172 7173 /* Line 1806 of yacc.c */ 7174 #line 15 42"parser.yy"7285 case 402: 7286 7287 /* Line 1806 of yacc.c */ 7288 #line 1556 "parser.yy" 7175 7289 { (yyval.decl) = 0; } 7176 7290 break; 7177 7291 7178 case 403: 7179 7180 /* Line 1806 of yacc.c */ 7181 #line 1550 "parser.yy" 7182 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7183 break; 7184 7185 case 404: 7186 7187 /* Line 1806 of yacc.c */ 7188 #line 1552 "parser.yy" 7189 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7190 break; 7191 7192 case 405: 7193 7194 /* Line 1806 of yacc.c */ 7195 #line 1554 "parser.yy" 7196 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7197 break; 7198 7199 case 407: 7200 7201 /* Line 1806 of yacc.c */ 7202 #line 1562 "parser.yy" 7203 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7204 break; 7205 7206 case 408: 7292 case 406: 7207 7293 7208 7294 /* Line 1806 of yacc.c */ … … 7211 7297 break; 7212 7298 7213 case 40 9:7299 case 407: 7214 7300 7215 7301 /* Line 1806 of yacc.c */ 7216 7302 #line 1566 "parser.yy" 7303 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7304 break; 7305 7306 case 408: 7307 7308 /* Line 1806 of yacc.c */ 7309 #line 1568 "parser.yy" 7310 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7311 break; 7312 7313 case 410: 7314 7315 /* Line 1806 of yacc.c */ 7316 #line 1576 "parser.yy" 7317 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7318 break; 7319 7320 case 411: 7321 7322 /* Line 1806 of yacc.c */ 7323 #line 1578 "parser.yy" 7324 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7325 break; 7326 7327 case 412: 7328 7329 /* Line 1806 of yacc.c */ 7330 #line 1580 "parser.yy" 7217 7331 { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); } 7218 7332 break; 7219 7333 7220 case 41 1:7221 7222 /* Line 1806 of yacc.c */ 7223 #line 15 72"parser.yy"7334 case 414: 7335 7336 /* Line 1806 of yacc.c */ 7337 #line 1586 "parser.yy" 7224 7338 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7225 7339 break; 7226 7340 7227 case 41 2:7228 7229 /* Line 1806 of yacc.c */ 7230 #line 15 77"parser.yy"7341 case 415: 7342 7343 /* Line 1806 of yacc.c */ 7344 #line 1591 "parser.yy" 7231 7345 { (yyval.decl) = 0; } 7232 7346 break; 7233 7347 7234 case 41 5:7235 7236 /* Line 1806 of yacc.c */ 7237 #line 15 84"parser.yy"7348 case 418: 7349 7350 /* Line 1806 of yacc.c */ 7351 #line 1598 "parser.yy" 7238 7352 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); } 7239 7353 break; 7240 7354 7241 case 4 18:7242 7243 /* Line 1806 of yacc.c */ 7244 #line 1 591"parser.yy"7355 case 421: 7356 7357 /* Line 1806 of yacc.c */ 7358 #line 1605 "parser.yy" 7245 7359 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7246 7360 break; 7247 7361 7248 case 4 19:7249 7250 /* Line 1806 of yacc.c */ 7251 #line 1 593"parser.yy"7362 case 422: 7363 7364 /* Line 1806 of yacc.c */ 7365 #line 1607 "parser.yy" 7252 7366 { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); } 7253 7367 break; 7254 7368 7255 case 42 1:7256 7257 /* Line 1806 of yacc.c */ 7258 #line 16 02"parser.yy"7369 case 424: 7370 7371 /* Line 1806 of yacc.c */ 7372 #line 1616 "parser.yy" 7259 7373 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7260 7374 break; 7261 7375 7262 case 42 2:7263 7264 /* Line 1806 of yacc.c */ 7265 #line 16 05"parser.yy"7376 case 425: 7377 7378 /* Line 1806 of yacc.c */ 7379 #line 1619 "parser.yy" 7266 7380 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); } 7267 7381 break; 7268 7382 7269 case 42 3:7270 7271 /* Line 1806 of yacc.c */ 7272 #line 16 07"parser.yy"7383 case 426: 7384 7385 /* Line 1806 of yacc.c */ 7386 #line 1621 "parser.yy" 7273 7387 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); } 7274 7388 break; 7275 7389 7276 case 4 28:7277 7278 /* Line 1806 of yacc.c */ 7279 #line 16 17"parser.yy"7390 case 431: 7391 7392 /* Line 1806 of yacc.c */ 7393 #line 1631 "parser.yy" 7280 7394 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7281 7395 break; 7282 7396 7283 case 43 0:7284 7285 /* Line 1806 of yacc.c */ 7286 #line 16 23"parser.yy"7397 case 433: 7398 7399 /* Line 1806 of yacc.c */ 7400 #line 1637 "parser.yy" 7287 7401 { 7288 7402 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7291 7405 break; 7292 7406 7293 case 43 1:7294 7295 /* Line 1806 of yacc.c */ 7296 #line 16 28"parser.yy"7407 case 434: 7408 7409 /* Line 1806 of yacc.c */ 7410 #line 1642 "parser.yy" 7297 7411 { 7298 7412 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7301 7415 break; 7302 7416 7303 case 43 3:7304 7305 /* Line 1806 of yacc.c */ 7306 #line 16 37"parser.yy"7417 case 436: 7418 7419 /* Line 1806 of yacc.c */ 7420 #line 1651 "parser.yy" 7307 7421 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7308 7422 break; 7309 7423 7310 case 43 4:7311 7312 /* Line 1806 of yacc.c */ 7313 #line 16 46"parser.yy"7424 case 437: 7425 7426 /* Line 1806 of yacc.c */ 7427 #line 1660 "parser.yy" 7314 7428 { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); } 7315 7429 break; 7316 7430 7317 case 43 5:7318 7319 /* Line 1806 of yacc.c */ 7320 #line 16 48"parser.yy"7431 case 438: 7432 7433 /* Line 1806 of yacc.c */ 7434 #line 1662 "parser.yy" 7321 7435 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); } 7322 7436 break; 7323 7437 7324 case 4 47:7325 7326 /* Line 1806 of yacc.c */ 7327 #line 16 73"parser.yy"7438 case 450: 7439 7440 /* Line 1806 of yacc.c */ 7441 #line 1687 "parser.yy" 7328 7442 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7329 7443 break; 7330 7444 7331 case 45 1:7332 7333 /* Line 1806 of yacc.c */ 7334 #line 16 81"parser.yy"7445 case 454: 7446 7447 /* Line 1806 of yacc.c */ 7448 #line 1695 "parser.yy" 7335 7449 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 7336 7450 break; 7337 7451 7338 case 452:7339 7340 /* Line 1806 of yacc.c */7341 #line 1686 "parser.yy"7342 { (yyval.in) = 0; }7343 break;7344 7345 case 453:7346 7347 /* Line 1806 of yacc.c */7348 #line 1688 "parser.yy"7349 { (yyval.in) = (yyvsp[(2) - (2)].in); }7350 break;7351 7352 case 454:7353 7354 /* Line 1806 of yacc.c */7355 #line 1690 "parser.yy"7356 { (yyval.in) = (yyvsp[(2) - (2)].in); }7357 break;7358 7359 7452 case 455: 7360 7361 /* Line 1806 of yacc.c */7362 #line 1694 "parser.yy"7363 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }7364 break;7365 7366 case 456:7367 7368 /* Line 1806 of yacc.c */7369 #line 1695 "parser.yy"7370 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }7371 break;7372 7373 case 457:7374 7453 7375 7454 /* Line 1806 of yacc.c */ … … 7378 7457 break; 7379 7458 7459 case 456: 7460 7461 /* Line 1806 of yacc.c */ 7462 #line 1702 "parser.yy" 7463 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7464 break; 7465 7466 case 457: 7467 7468 /* Line 1806 of yacc.c */ 7469 #line 1704 "parser.yy" 7470 { (yyval.in) = (yyvsp[(2) - (2)].in); } 7471 break; 7472 7473 case 458: 7474 7475 /* Line 1806 of yacc.c */ 7476 #line 1708 "parser.yy" 7477 { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); } 7478 break; 7479 7380 7480 case 459: 7381 7481 7382 7482 /* Line 1806 of yacc.c */ 7383 #line 1702 "parser.yy" 7483 #line 1709 "parser.yy" 7484 { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); } 7485 break; 7486 7487 case 460: 7488 7489 /* Line 1806 of yacc.c */ 7490 #line 1714 "parser.yy" 7491 { (yyval.in) = 0; } 7492 break; 7493 7494 case 462: 7495 7496 /* Line 1806 of yacc.c */ 7497 #line 1716 "parser.yy" 7384 7498 { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); } 7385 7499 break; 7386 7500 7387 case 46 0:7388 7389 /* Line 1806 of yacc.c */ 7390 #line 17 03"parser.yy"7501 case 463: 7502 7503 /* Line 1806 of yacc.c */ 7504 #line 1717 "parser.yy" 7391 7505 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); } 7392 7506 break; 7393 7507 7394 case 46 1:7395 7396 /* Line 1806 of yacc.c */ 7397 #line 17 05"parser.yy"7508 case 464: 7509 7510 /* Line 1806 of yacc.c */ 7511 #line 1719 "parser.yy" 7398 7512 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7399 7513 break; 7400 7514 7401 case 46 3:7402 7403 /* Line 1806 of yacc.c */ 7404 #line 17 21"parser.yy"7515 case 466: 7516 7517 /* Line 1806 of yacc.c */ 7518 #line 1735 "parser.yy" 7405 7519 { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); } 7406 7520 break; 7407 7521 7408 case 46 5:7409 7410 /* Line 1806 of yacc.c */ 7411 #line 17 27"parser.yy"7522 case 468: 7523 7524 /* Line 1806 of yacc.c */ 7525 #line 1741 "parser.yy" 7412 7526 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); } 7413 7527 break; 7414 7528 7415 case 46 6:7416 7417 /* Line 1806 of yacc.c */ 7418 #line 17 35"parser.yy"7529 case 469: 7530 7531 /* Line 1806 of yacc.c */ 7532 #line 1749 "parser.yy" 7419 7533 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); } 7420 7534 break; 7421 7535 7422 case 4 67:7423 7424 /* Line 1806 of yacc.c */ 7425 #line 17 37"parser.yy"7536 case 470: 7537 7538 /* Line 1806 of yacc.c */ 7539 #line 1751 "parser.yy" 7426 7540 { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); } 7427 7541 break; 7428 7542 7429 case 4 68:7430 7431 /* Line 1806 of yacc.c */ 7432 #line 17 40"parser.yy"7543 case 471: 7544 7545 /* Line 1806 of yacc.c */ 7546 #line 1754 "parser.yy" 7433 7547 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7434 7548 break; 7435 7549 7436 case 4 69:7437 7438 /* Line 1806 of yacc.c */ 7439 #line 17 42"parser.yy"7550 case 472: 7551 7552 /* Line 1806 of yacc.c */ 7553 #line 1756 "parser.yy" 7440 7554 { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); } 7441 7555 break; 7442 7556 7443 case 47 0:7444 7445 /* Line 1806 of yacc.c */ 7446 #line 17 44"parser.yy"7557 case 473: 7558 7559 /* Line 1806 of yacc.c */ 7560 #line 1758 "parser.yy" 7447 7561 { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); } 7448 7562 break; 7449 7563 7450 case 47 1:7451 7452 /* Line 1806 of yacc.c */ 7453 #line 17 46"parser.yy"7564 case 474: 7565 7566 /* Line 1806 of yacc.c */ 7567 #line 1760 "parser.yy" 7454 7568 { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); } 7455 7569 break; 7456 7570 7457 case 47 3:7458 7459 /* Line 1806 of yacc.c */ 7460 #line 17 70"parser.yy"7571 case 476: 7572 7573 /* Line 1806 of yacc.c */ 7574 #line 1784 "parser.yy" 7461 7575 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7462 7576 break; 7463 7577 7464 case 47 4:7465 7466 /* Line 1806 of yacc.c */ 7467 #line 17 72"parser.yy"7578 case 477: 7579 7580 /* Line 1806 of yacc.c */ 7581 #line 1786 "parser.yy" 7468 7582 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7469 7583 break; 7470 7584 7471 case 47 5:7472 7473 /* Line 1806 of yacc.c */ 7474 #line 17 74"parser.yy"7585 case 478: 7586 7587 /* Line 1806 of yacc.c */ 7588 #line 1788 "parser.yy" 7475 7589 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 7476 7590 break; 7477 7591 7478 case 4 77:7479 7480 /* Line 1806 of yacc.c */ 7481 #line 17 80"parser.yy"7592 case 480: 7593 7594 /* Line 1806 of yacc.c */ 7595 #line 1794 "parser.yy" 7482 7596 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7483 7597 break; 7484 7598 7485 case 4 78:7486 7487 /* Line 1806 of yacc.c */ 7488 #line 17 82"parser.yy"7599 case 481: 7600 7601 /* Line 1806 of yacc.c */ 7602 #line 1796 "parser.yy" 7489 7603 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7490 7604 break; 7491 7605 7492 case 4 79:7493 7494 /* Line 1806 of yacc.c */ 7495 #line 1 787"parser.yy"7606 case 482: 7607 7608 /* Line 1806 of yacc.c */ 7609 #line 1801 "parser.yy" 7496 7610 { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); } 7497 7611 break; 7498 7612 7499 case 48 1:7500 7501 /* Line 1806 of yacc.c */ 7502 #line 1 793"parser.yy"7613 case 484: 7614 7615 /* Line 1806 of yacc.c */ 7616 #line 1807 "parser.yy" 7503 7617 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); } 7504 7618 break; 7505 7619 7506 case 48 2:7507 7508 /* Line 1806 of yacc.c */ 7509 #line 1 798"parser.yy"7620 case 485: 7621 7622 /* Line 1806 of yacc.c */ 7623 #line 1812 "parser.yy" 7510 7624 { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); } 7511 7625 break; 7512 7626 7513 case 48 3:7514 7515 /* Line 1806 of yacc.c */ 7516 #line 18 00"parser.yy"7627 case 486: 7628 7629 /* Line 1806 of yacc.c */ 7630 #line 1814 "parser.yy" 7517 7631 { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); } 7518 7632 break; 7519 7633 7520 case 48 5:7521 7522 /* Line 1806 of yacc.c */ 7523 #line 18 06"parser.yy"7634 case 488: 7635 7636 /* Line 1806 of yacc.c */ 7637 #line 1820 "parser.yy" 7524 7638 { (yyval.tclass) = DeclarationNode::Type; } 7525 7639 break; 7526 7640 7527 case 48 6:7528 7529 /* Line 1806 of yacc.c */ 7530 #line 18 08"parser.yy"7641 case 489: 7642 7643 /* Line 1806 of yacc.c */ 7644 #line 1822 "parser.yy" 7531 7645 { (yyval.tclass) = DeclarationNode::Ftype; } 7532 7646 break; 7533 7647 7534 case 4 87:7535 7536 /* Line 1806 of yacc.c */ 7537 #line 18 10"parser.yy"7648 case 490: 7649 7650 /* Line 1806 of yacc.c */ 7651 #line 1824 "parser.yy" 7538 7652 { (yyval.tclass) = DeclarationNode::Dtype; } 7539 7653 break; 7540 7654 7541 case 488:7542 7543 /* Line 1806 of yacc.c */7544 #line 1815 "parser.yy"7545 { (yyval.decl) = 0; }7546 break;7547 7548 case 489:7549 7550 /* Line 1806 of yacc.c */7551 #line 1817 "parser.yy"7552 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }7553 break;7554 7555 case 490:7556 7557 /* Line 1806 of yacc.c */7558 #line 1822 "parser.yy"7559 {7560 typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );7561 (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );7562 }7563 break;7564 7565 7655 case 491: 7566 7567 /* Line 1806 of yacc.c */7568 #line 1827 "parser.yy"7569 { (yyval.decl) = (yyvsp[(4) - (5)].decl); }7570 break;7571 7572 case 492:7573 7656 7574 7657 /* Line 1806 of yacc.c */ … … 7577 7660 break; 7578 7661 7662 case 492: 7663 7664 /* Line 1806 of yacc.c */ 7665 #line 1831 "parser.yy" 7666 { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); } 7667 break; 7668 7579 7669 case 493: 7580 7670 7581 7671 /* Line 1806 of yacc.c */ 7582 #line 1834 "parser.yy" 7672 #line 1836 "parser.yy" 7673 { 7674 typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) ); 7675 (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) ); 7676 } 7677 break; 7678 7679 case 494: 7680 7681 /* Line 1806 of yacc.c */ 7682 #line 1841 "parser.yy" 7683 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7684 break; 7685 7686 case 495: 7687 7688 /* Line 1806 of yacc.c */ 7689 #line 1843 "parser.yy" 7690 { (yyval.decl) = 0; } 7691 break; 7692 7693 case 496: 7694 7695 /* Line 1806 of yacc.c */ 7696 #line 1848 "parser.yy" 7583 7697 { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); } 7584 7698 break; 7585 7699 7586 case 49 5:7587 7588 /* Line 1806 of yacc.c */ 7589 #line 18 37"parser.yy"7700 case 498: 7701 7702 /* Line 1806 of yacc.c */ 7703 #line 1851 "parser.yy" 7590 7704 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); } 7591 7705 break; 7592 7706 7593 case 49 6:7594 7595 /* Line 1806 of yacc.c */ 7596 #line 18 39"parser.yy"7707 case 499: 7708 7709 /* Line 1806 of yacc.c */ 7710 #line 1853 "parser.yy" 7597 7711 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); } 7598 7712 break; 7599 7713 7600 case 497:7601 7602 /* Line 1806 of yacc.c */ 7603 #line 18 44"parser.yy"7714 case 500: 7715 7716 /* Line 1806 of yacc.c */ 7717 #line 1858 "parser.yy" 7604 7718 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7605 7719 break; 7606 7720 7607 case 498:7608 7609 /* Line 1806 of yacc.c */ 7610 #line 18 46"parser.yy"7721 case 501: 7722 7723 /* Line 1806 of yacc.c */ 7724 #line 1860 "parser.yy" 7611 7725 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7612 7726 break; 7613 7727 7614 case 499:7615 7616 /* Line 1806 of yacc.c */ 7617 #line 18 48"parser.yy"7728 case 502: 7729 7730 /* Line 1806 of yacc.c */ 7731 #line 1862 "parser.yy" 7618 7732 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7619 7733 break; 7620 7734 7621 case 50 0:7622 7623 /* Line 1806 of yacc.c */ 7624 #line 18 53"parser.yy"7735 case 503: 7736 7737 /* Line 1806 of yacc.c */ 7738 #line 1867 "parser.yy" 7625 7739 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7626 7740 break; 7627 7741 7628 case 50 1:7629 7630 /* Line 1806 of yacc.c */ 7631 #line 18 55"parser.yy"7742 case 504: 7743 7744 /* Line 1806 of yacc.c */ 7745 #line 1869 "parser.yy" 7632 7746 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7633 7747 break; 7634 7748 7635 case 50 2:7636 7637 /* Line 1806 of yacc.c */ 7638 #line 18 60"parser.yy"7749 case 505: 7750 7751 /* Line 1806 of yacc.c */ 7752 #line 1874 "parser.yy" 7639 7753 { 7640 7754 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7643 7757 break; 7644 7758 7645 case 50 3:7646 7647 /* Line 1806 of yacc.c */ 7648 #line 18 65"parser.yy"7759 case 506: 7760 7761 /* Line 1806 of yacc.c */ 7762 #line 1879 "parser.yy" 7649 7763 { 7650 7764 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7653 7767 break; 7654 7768 7655 case 50 4:7656 7657 /* Line 1806 of yacc.c */ 7658 #line 18 73"parser.yy"7769 case 507: 7770 7771 /* Line 1806 of yacc.c */ 7772 #line 1887 "parser.yy" 7659 7773 { 7660 7774 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); 7661 (yyval.decl) = DeclarationNode::new Context( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );7775 (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 ); 7662 7776 } 7663 7777 break; 7664 7778 7665 case 50 5:7666 7667 /* Line 1806 of yacc.c */ 7668 #line 18 78"parser.yy"7779 case 508: 7780 7781 /* Line 1806 of yacc.c */ 7782 #line 1892 "parser.yy" 7669 7783 { 7670 typedefTable.enter Context( *(yyvsp[(2) - (8)].tok) );7784 typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) ); 7671 7785 typedefTable.enterScope(); 7672 7786 } 7673 7787 break; 7674 7788 7675 case 50 6:7676 7677 /* Line 1806 of yacc.c */ 7678 #line 18 83"parser.yy"7789 case 509: 7790 7791 /* Line 1806 of yacc.c */ 7792 #line 1897 "parser.yy" 7679 7793 { 7680 typedefTable.leave Context();7794 typedefTable.leaveTrait(); 7681 7795 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID ); 7682 (yyval.decl) = DeclarationNode::new Context( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );7796 (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) ); 7683 7797 } 7684 7798 break; 7685 7799 7686 case 5 08:7687 7688 /* Line 1806 of yacc.c */ 7689 #line 1 893"parser.yy"7800 case 511: 7801 7802 /* Line 1806 of yacc.c */ 7803 #line 1907 "parser.yy" 7690 7804 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7691 7805 break; 7692 7806 7693 case 51 1:7694 7695 /* Line 1806 of yacc.c */ 7696 #line 19 03"parser.yy"7807 case 514: 7808 7809 /* Line 1806 of yacc.c */ 7810 #line 1917 "parser.yy" 7697 7811 { 7698 7812 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7701 7815 break; 7702 7816 7703 case 51 2:7704 7705 /* Line 1806 of yacc.c */ 7706 #line 19 08"parser.yy"7817 case 515: 7818 7819 /* Line 1806 of yacc.c */ 7820 #line 1922 "parser.yy" 7707 7821 { 7708 7822 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7711 7825 break; 7712 7826 7713 case 51 3:7714 7715 /* Line 1806 of yacc.c */ 7716 #line 19 13"parser.yy"7827 case 516: 7828 7829 /* Line 1806 of yacc.c */ 7830 #line 1927 "parser.yy" 7717 7831 { 7718 7832 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7721 7835 break; 7722 7836 7723 case 51 4:7724 7725 /* Line 1806 of yacc.c */ 7726 #line 19 21"parser.yy"7837 case 517: 7838 7839 /* Line 1806 of yacc.c */ 7840 #line 1935 "parser.yy" 7727 7841 { 7728 7842 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7731 7845 break; 7732 7846 7733 case 51 5:7734 7735 /* Line 1806 of yacc.c */ 7736 #line 19 26"parser.yy"7847 case 518: 7848 7849 /* Line 1806 of yacc.c */ 7850 #line 1940 "parser.yy" 7737 7851 { 7738 7852 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7741 7855 break; 7742 7856 7743 case 51 6:7744 7745 /* Line 1806 of yacc.c */ 7746 #line 19 36"parser.yy"7857 case 519: 7858 7859 /* Line 1806 of yacc.c */ 7860 #line 1950 "parser.yy" 7747 7861 {} 7748 7862 break; 7749 7863 7750 case 5 17:7751 7752 /* Line 1806 of yacc.c */ 7753 #line 19 38"parser.yy"7864 case 520: 7865 7866 /* Line 1806 of yacc.c */ 7867 #line 1952 "parser.yy" 7754 7868 { 7755 7869 if ( theTree ) { … … 7761 7875 break; 7762 7876 7763 case 5 19:7764 7765 /* Line 1806 of yacc.c */ 7766 #line 19 50"parser.yy"7877 case 522: 7878 7879 /* Line 1806 of yacc.c */ 7880 #line 1964 "parser.yy" 7767 7881 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7768 7882 break; 7769 7883 7770 case 52 0:7771 7772 /* Line 1806 of yacc.c */ 7773 #line 19 55"parser.yy"7884 case 523: 7885 7886 /* Line 1806 of yacc.c */ 7887 #line 1969 "parser.yy" 7774 7888 { (yyval.decl) = 0; } 7775 7889 break; 7776 7890 7777 case 52 4:7778 7779 /* Line 1806 of yacc.c */ 7780 #line 19 63"parser.yy"7891 case 527: 7892 7893 /* Line 1806 of yacc.c */ 7894 #line 1977 "parser.yy" 7781 7895 {} 7782 7896 break; 7783 7897 7784 case 52 5:7785 7786 /* Line 1806 of yacc.c */ 7787 #line 19 65"parser.yy"7898 case 528: 7899 7900 /* Line 1806 of yacc.c */ 7901 #line 1979 "parser.yy" 7788 7902 { 7789 7903 linkageStack.push( linkage ); … … 7792 7906 break; 7793 7907 7794 case 52 6:7795 7796 /* Line 1806 of yacc.c */ 7797 #line 19 70"parser.yy"7908 case 529: 7909 7910 /* Line 1806 of yacc.c */ 7911 #line 1984 "parser.yy" 7798 7912 { 7799 7913 linkage = linkageStack.top(); … … 7803 7917 break; 7804 7918 7805 case 5 27:7806 7807 /* Line 1806 of yacc.c */ 7808 #line 19 76"parser.yy"7919 case 530: 7920 7921 /* Line 1806 of yacc.c */ 7922 #line 1990 "parser.yy" 7809 7923 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7810 7924 break; 7811 7925 7812 case 5 29:7813 7814 /* Line 1806 of yacc.c */ 7815 #line 1986"parser.yy"7926 case 532: 7927 7928 /* Line 1806 of yacc.c */ 7929 #line 2000 "parser.yy" 7816 7930 { 7817 7931 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7821 7935 break; 7822 7936 7823 case 53 0:7824 7825 /* Line 1806 of yacc.c */ 7826 #line 1992"parser.yy"7937 case 533: 7938 7939 /* Line 1806 of yacc.c */ 7940 #line 2006 "parser.yy" 7827 7941 { 7828 7942 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7832 7946 break; 7833 7947 7834 case 53 1:7835 7836 /* Line 1806 of yacc.c */ 7837 #line 20 01"parser.yy"7948 case 534: 7949 7950 /* Line 1806 of yacc.c */ 7951 #line 2015 "parser.yy" 7838 7952 { 7839 7953 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7843 7957 break; 7844 7958 7845 case 53 2:7846 7847 /* Line 1806 of yacc.c */ 7848 #line 20 07"parser.yy"7959 case 535: 7960 7961 /* Line 1806 of yacc.c */ 7962 #line 2021 "parser.yy" 7849 7963 { 7850 7964 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7854 7968 break; 7855 7969 7856 case 53 3:7857 7858 /* Line 1806 of yacc.c */ 7859 #line 20 13"parser.yy"7970 case 536: 7971 7972 /* Line 1806 of yacc.c */ 7973 #line 2027 "parser.yy" 7860 7974 { 7861 7975 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7865 7979 break; 7866 7980 7867 case 53 4:7868 7869 /* Line 1806 of yacc.c */ 7870 #line 20 19"parser.yy"7981 case 537: 7982 7983 /* Line 1806 of yacc.c */ 7984 #line 2033 "parser.yy" 7871 7985 { 7872 7986 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7876 7990 break; 7877 7991 7878 case 53 5:7879 7880 /* Line 1806 of yacc.c */ 7881 #line 20 25"parser.yy"7992 case 538: 7993 7994 /* Line 1806 of yacc.c */ 7995 #line 2039 "parser.yy" 7882 7996 { 7883 7997 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7887 8001 break; 7888 8002 7889 case 53 6:7890 7891 /* Line 1806 of yacc.c */ 7892 #line 20 33"parser.yy"8003 case 539: 8004 8005 /* Line 1806 of yacc.c */ 8006 #line 2047 "parser.yy" 7893 8007 { 7894 8008 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7898 8012 break; 7899 8013 7900 case 5 37:7901 7902 /* Line 1806 of yacc.c */ 7903 #line 20 39"parser.yy"8014 case 540: 8015 8016 /* Line 1806 of yacc.c */ 8017 #line 2053 "parser.yy" 7904 8018 { 7905 8019 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7909 8023 break; 7910 8024 7911 case 5 38:7912 7913 /* Line 1806 of yacc.c */ 7914 #line 20 47"parser.yy"8025 case 541: 8026 8027 /* Line 1806 of yacc.c */ 8028 #line 2061 "parser.yy" 7915 8029 { 7916 8030 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7920 8034 break; 7921 8035 7922 case 5 39:7923 7924 /* Line 1806 of yacc.c */ 7925 #line 20 53"parser.yy"8036 case 542: 8037 8038 /* Line 1806 of yacc.c */ 8039 #line 2067 "parser.yy" 7926 8040 { 7927 8041 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7931 8045 break; 7932 8046 7933 case 54 3:7934 7935 /* Line 1806 of yacc.c */ 7936 #line 20 68"parser.yy"8047 case 546: 8048 8049 /* Line 1806 of yacc.c */ 8050 #line 2082 "parser.yy" 7937 8051 { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); } 7938 8052 break; 7939 8053 7940 case 54 6:7941 7942 /* Line 1806 of yacc.c */ 7943 #line 20 78"parser.yy"8054 case 549: 8055 8056 /* Line 1806 of yacc.c */ 8057 #line 2092 "parser.yy" 7944 8058 { (yyval.decl) = 0; } 7945 8059 break; 7946 8060 7947 case 5 49:7948 7949 /* Line 1806 of yacc.c */ 7950 #line 20 85"parser.yy"8061 case 552: 8062 8063 /* Line 1806 of yacc.c */ 8064 #line 2099 "parser.yy" 7951 8065 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7952 8066 break; 7953 8067 7954 case 55 0:7955 7956 /* Line 1806 of yacc.c */ 7957 #line 2 091"parser.yy"8068 case 553: 8069 8070 /* Line 1806 of yacc.c */ 8071 #line 2105 "parser.yy" 7958 8072 { (yyval.decl) = 0; } 7959 8073 break; 7960 8074 7961 case 55 6:7962 7963 /* Line 1806 of yacc.c */ 7964 #line 21 06"parser.yy"8075 case 559: 8076 8077 /* Line 1806 of yacc.c */ 8078 #line 2120 "parser.yy" 7965 8079 {} 7966 8080 break; 7967 8081 7968 case 5 57:7969 7970 /* Line 1806 of yacc.c */ 7971 #line 21 07"parser.yy"8082 case 560: 8083 8084 /* Line 1806 of yacc.c */ 8085 #line 2121 "parser.yy" 7972 8086 {} 7973 8087 break; 7974 8088 7975 case 5 58:7976 7977 /* Line 1806 of yacc.c */ 7978 #line 21 08"parser.yy"8089 case 561: 8090 8091 /* Line 1806 of yacc.c */ 8092 #line 2122 "parser.yy" 7979 8093 {} 7980 8094 break; 7981 8095 7982 case 5 59:7983 7984 /* Line 1806 of yacc.c */ 7985 #line 21 09"parser.yy"8096 case 562: 8097 8098 /* Line 1806 of yacc.c */ 8099 #line 2123 "parser.yy" 7986 8100 {} 7987 8101 break; 7988 8102 7989 case 56 0:7990 7991 /* Line 1806 of yacc.c */ 7992 #line 21 44"parser.yy"8103 case 563: 8104 8105 /* Line 1806 of yacc.c */ 8106 #line 2158 "parser.yy" 7993 8107 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7994 8108 break; 7995 8109 7996 case 56 2:7997 7998 /* Line 1806 of yacc.c */ 7999 #line 21 47"parser.yy"8110 case 565: 8111 8112 /* Line 1806 of yacc.c */ 8113 #line 2161 "parser.yy" 8000 8114 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8001 8115 break; 8002 8116 8003 case 56 3:8004 8005 /* Line 1806 of yacc.c */ 8006 #line 21 49"parser.yy"8117 case 566: 8118 8119 /* Line 1806 of yacc.c */ 8120 #line 2163 "parser.yy" 8007 8121 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8008 8122 break; 8009 8123 8010 case 56 4:8011 8012 /* Line 1806 of yacc.c */ 8013 #line 21 54"parser.yy"8124 case 567: 8125 8126 /* Line 1806 of yacc.c */ 8127 #line 2168 "parser.yy" 8014 8128 { 8015 8129 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8018 8132 break; 8019 8133 8020 case 56 5:8021 8022 /* Line 1806 of yacc.c */ 8023 #line 21 59"parser.yy"8134 case 568: 8135 8136 /* Line 1806 of yacc.c */ 8137 #line 2173 "parser.yy" 8024 8138 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8025 8139 break; 8026 8140 8027 case 56 6:8028 8029 /* Line 1806 of yacc.c */ 8030 #line 21 64"parser.yy"8141 case 569: 8142 8143 /* Line 1806 of yacc.c */ 8144 #line 2178 "parser.yy" 8031 8145 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8032 8146 break; 8033 8147 8034 case 5 67:8035 8036 /* Line 1806 of yacc.c */ 8037 #line 21 66"parser.yy"8148 case 570: 8149 8150 /* Line 1806 of yacc.c */ 8151 #line 2180 "parser.yy" 8038 8152 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8039 8153 break; 8040 8154 8041 case 5 68:8042 8043 /* Line 1806 of yacc.c */ 8044 #line 21 68"parser.yy"8155 case 571: 8156 8157 /* Line 1806 of yacc.c */ 8158 #line 2182 "parser.yy" 8045 8159 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8046 8160 break; 8047 8161 8048 case 5 69:8049 8050 /* Line 1806 of yacc.c */ 8051 #line 21 73"parser.yy"8162 case 572: 8163 8164 /* Line 1806 of yacc.c */ 8165 #line 2187 "parser.yy" 8052 8166 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8053 8167 break; 8054 8168 8055 case 57 0:8056 8057 /* Line 1806 of yacc.c */ 8058 #line 21 75"parser.yy"8169 case 573: 8170 8171 /* Line 1806 of yacc.c */ 8172 #line 2189 "parser.yy" 8059 8173 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8060 8174 break; 8061 8175 8062 case 57 1:8063 8064 /* Line 1806 of yacc.c */ 8065 #line 21 77"parser.yy"8176 case 574: 8177 8178 /* Line 1806 of yacc.c */ 8179 #line 2191 "parser.yy" 8066 8180 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8067 8181 break; 8068 8182 8069 case 57 2:8070 8071 /* Line 1806 of yacc.c */ 8072 #line 21 79"parser.yy"8183 case 575: 8184 8185 /* Line 1806 of yacc.c */ 8186 #line 2193 "parser.yy" 8073 8187 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8074 8188 break; 8075 8189 8076 case 57 3:8077 8078 /* Line 1806 of yacc.c */ 8079 #line 21 84"parser.yy"8190 case 576: 8191 8192 /* Line 1806 of yacc.c */ 8193 #line 2198 "parser.yy" 8080 8194 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8081 8195 break; 8082 8196 8083 case 57 4:8084 8085 /* Line 1806 of yacc.c */ 8086 #line 2 186"parser.yy"8197 case 577: 8198 8199 /* Line 1806 of yacc.c */ 8200 #line 2200 "parser.yy" 8087 8201 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8088 8202 break; 8089 8203 8090 case 57 5:8091 8092 /* Line 1806 of yacc.c */ 8093 #line 2 196"parser.yy"8204 case 578: 8205 8206 /* Line 1806 of yacc.c */ 8207 #line 2210 "parser.yy" 8094 8208 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8095 8209 break; 8096 8210 8097 case 5 77:8098 8099 /* Line 1806 of yacc.c */ 8100 #line 2 199"parser.yy"8211 case 580: 8212 8213 /* Line 1806 of yacc.c */ 8214 #line 2213 "parser.yy" 8101 8215 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8102 8216 break; 8103 8217 8104 case 5 78:8105 8106 /* Line 1806 of yacc.c */ 8107 #line 22 04"parser.yy"8218 case 581: 8219 8220 /* Line 1806 of yacc.c */ 8221 #line 2218 "parser.yy" 8108 8222 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8109 8223 break; 8110 8224 8111 case 5 79:8112 8113 /* Line 1806 of yacc.c */ 8114 #line 22 06"parser.yy"8225 case 582: 8226 8227 /* Line 1806 of yacc.c */ 8228 #line 2220 "parser.yy" 8115 8229 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8116 8230 break; 8117 8231 8118 case 58 0:8119 8120 /* Line 1806 of yacc.c */ 8121 #line 22 08"parser.yy"8232 case 583: 8233 8234 /* Line 1806 of yacc.c */ 8235 #line 2222 "parser.yy" 8122 8236 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8123 8237 break; 8124 8238 8125 case 58 1:8126 8127 /* Line 1806 of yacc.c */ 8128 #line 22 13"parser.yy"8239 case 584: 8240 8241 /* Line 1806 of yacc.c */ 8242 #line 2227 "parser.yy" 8129 8243 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8130 8244 break; 8131 8245 8132 case 58 2:8133 8134 /* Line 1806 of yacc.c */ 8135 #line 22 15"parser.yy"8246 case 585: 8247 8248 /* Line 1806 of yacc.c */ 8249 #line 2229 "parser.yy" 8136 8250 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8137 8251 break; 8138 8252 8139 case 58 3:8140 8141 /* Line 1806 of yacc.c */ 8142 #line 22 17"parser.yy"8253 case 586: 8254 8255 /* Line 1806 of yacc.c */ 8256 #line 2231 "parser.yy" 8143 8257 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8144 8258 break; 8145 8259 8146 case 58 4:8147 8148 /* Line 1806 of yacc.c */ 8149 #line 22 22"parser.yy"8260 case 587: 8261 8262 /* Line 1806 of yacc.c */ 8263 #line 2236 "parser.yy" 8150 8264 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8151 8265 break; 8152 8266 8153 case 58 5:8154 8155 /* Line 1806 of yacc.c */ 8156 #line 22 24"parser.yy"8267 case 588: 8268 8269 /* Line 1806 of yacc.c */ 8270 #line 2238 "parser.yy" 8157 8271 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8158 8272 break; 8159 8273 8160 case 58 6:8161 8162 /* Line 1806 of yacc.c */ 8163 #line 22 26"parser.yy"8274 case 589: 8275 8276 /* Line 1806 of yacc.c */ 8277 #line 2240 "parser.yy" 8164 8278 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8165 8279 break; 8166 8280 8167 case 59 0:8168 8169 /* Line 1806 of yacc.c */ 8170 #line 22 41"parser.yy"8281 case 593: 8282 8283 /* Line 1806 of yacc.c */ 8284 #line 2255 "parser.yy" 8171 8285 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8172 8286 break; 8173 8287 8174 case 59 1:8175 8176 /* Line 1806 of yacc.c */ 8177 #line 22 43"parser.yy"8288 case 594: 8289 8290 /* Line 1806 of yacc.c */ 8291 #line 2257 "parser.yy" 8178 8292 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8179 8293 break; 8180 8294 8181 case 59 2:8182 8183 /* Line 1806 of yacc.c */ 8184 #line 22 45"parser.yy"8295 case 595: 8296 8297 /* Line 1806 of yacc.c */ 8298 #line 2259 "parser.yy" 8185 8299 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8186 8300 break; 8187 8301 8188 case 59 3:8189 8190 /* Line 1806 of yacc.c */ 8191 #line 22 50"parser.yy"8302 case 596: 8303 8304 /* Line 1806 of yacc.c */ 8305 #line 2264 "parser.yy" 8192 8306 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8193 8307 break; 8194 8308 8195 case 59 4:8196 8197 /* Line 1806 of yacc.c */ 8198 #line 22 52"parser.yy"8309 case 597: 8310 8311 /* Line 1806 of yacc.c */ 8312 #line 2266 "parser.yy" 8199 8313 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8200 8314 break; 8201 8315 8202 case 59 5:8203 8204 /* Line 1806 of yacc.c */ 8205 #line 22 54"parser.yy"8316 case 598: 8317 8318 /* Line 1806 of yacc.c */ 8319 #line 2268 "parser.yy" 8206 8320 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8207 8321 break; 8208 8322 8209 case 59 6:8210 8211 /* Line 1806 of yacc.c */ 8212 #line 22 59"parser.yy"8323 case 599: 8324 8325 /* Line 1806 of yacc.c */ 8326 #line 2273 "parser.yy" 8213 8327 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8214 8328 break; 8215 8329 8216 case 597:8217 8218 /* Line 1806 of yacc.c */ 8219 #line 22 61"parser.yy"8330 case 600: 8331 8332 /* Line 1806 of yacc.c */ 8333 #line 2275 "parser.yy" 8220 8334 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8221 8335 break; 8222 8336 8223 case 598:8224 8225 /* Line 1806 of yacc.c */ 8226 #line 22 63"parser.yy"8337 case 601: 8338 8339 /* Line 1806 of yacc.c */ 8340 #line 2277 "parser.yy" 8227 8341 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8228 8342 break; 8229 8343 8230 case 599:8231 8232 /* Line 1806 of yacc.c */ 8233 #line 22 78"parser.yy"8344 case 602: 8345 8346 /* Line 1806 of yacc.c */ 8347 #line 2292 "parser.yy" 8234 8348 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8235 8349 break; 8236 8350 8237 case 60 1:8238 8239 /* Line 1806 of yacc.c */ 8240 #line 22 81"parser.yy"8351 case 604: 8352 8353 /* Line 1806 of yacc.c */ 8354 #line 2295 "parser.yy" 8241 8355 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8242 8356 break; 8243 8357 8244 case 60 2:8245 8246 /* Line 1806 of yacc.c */ 8247 #line 22 83"parser.yy"8358 case 605: 8359 8360 /* Line 1806 of yacc.c */ 8361 #line 2297 "parser.yy" 8248 8362 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8249 8363 break; 8250 8364 8251 case 60 4:8252 8253 /* Line 1806 of yacc.c */ 8254 #line 2 289"parser.yy"8365 case 607: 8366 8367 /* Line 1806 of yacc.c */ 8368 #line 2303 "parser.yy" 8255 8369 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8256 8370 break; 8257 8371 8258 case 60 5:8259 8260 /* Line 1806 of yacc.c */ 8261 #line 2 294"parser.yy"8372 case 608: 8373 8374 /* Line 1806 of yacc.c */ 8375 #line 2308 "parser.yy" 8262 8376 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8263 8377 break; 8264 8378 8265 case 60 6:8266 8267 /* Line 1806 of yacc.c */ 8268 #line 2 296"parser.yy"8379 case 609: 8380 8381 /* Line 1806 of yacc.c */ 8382 #line 2310 "parser.yy" 8269 8383 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8270 8384 break; 8271 8385 8272 case 6 07:8273 8274 /* Line 1806 of yacc.c */ 8275 #line 2 298"parser.yy"8386 case 610: 8387 8388 /* Line 1806 of yacc.c */ 8389 #line 2312 "parser.yy" 8276 8390 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8277 8391 break; 8278 8392 8279 case 6 08:8280 8281 /* Line 1806 of yacc.c */ 8282 #line 23 03"parser.yy"8393 case 611: 8394 8395 /* Line 1806 of yacc.c */ 8396 #line 2317 "parser.yy" 8283 8397 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8284 8398 break; 8285 8399 8286 case 6 09:8287 8288 /* Line 1806 of yacc.c */ 8289 #line 23 05"parser.yy"8400 case 612: 8401 8402 /* Line 1806 of yacc.c */ 8403 #line 2319 "parser.yy" 8290 8404 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8291 8405 break; 8292 8406 8293 case 61 0:8294 8295 /* Line 1806 of yacc.c */ 8296 #line 23 07"parser.yy"8407 case 613: 8408 8409 /* Line 1806 of yacc.c */ 8410 #line 2321 "parser.yy" 8297 8411 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8298 8412 break; 8299 8413 8300 case 61 1:8301 8302 /* Line 1806 of yacc.c */ 8303 #line 23 09"parser.yy"8414 case 614: 8415 8416 /* Line 1806 of yacc.c */ 8417 #line 2323 "parser.yy" 8304 8418 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8305 8419 break; 8306 8420 8307 case 61 2:8308 8309 /* Line 1806 of yacc.c */ 8310 #line 23 14"parser.yy"8421 case 615: 8422 8423 /* Line 1806 of yacc.c */ 8424 #line 2328 "parser.yy" 8311 8425 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8312 8426 break; 8313 8427 8314 case 61 3:8315 8316 /* Line 1806 of yacc.c */ 8317 #line 23 16"parser.yy"8428 case 616: 8429 8430 /* Line 1806 of yacc.c */ 8431 #line 2330 "parser.yy" 8318 8432 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8319 8433 break; 8320 8434 8321 case 61 4:8322 8323 /* Line 1806 of yacc.c */ 8324 #line 23 18"parser.yy"8435 case 617: 8436 8437 /* Line 1806 of yacc.c */ 8438 #line 2332 "parser.yy" 8325 8439 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8326 8440 break; 8327 8441 8328 case 61 5:8329 8330 /* Line 1806 of yacc.c */ 8331 #line 23 28"parser.yy"8442 case 618: 8443 8444 /* Line 1806 of yacc.c */ 8445 #line 2342 "parser.yy" 8332 8446 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8333 8447 break; 8334 8448 8335 case 6 17:8336 8337 /* Line 1806 of yacc.c */ 8338 #line 23 31"parser.yy"8449 case 620: 8450 8451 /* Line 1806 of yacc.c */ 8452 #line 2345 "parser.yy" 8339 8453 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8340 8454 break; 8341 8455 8342 case 6 18:8343 8344 /* Line 1806 of yacc.c */ 8345 #line 23 33"parser.yy"8456 case 621: 8457 8458 /* Line 1806 of yacc.c */ 8459 #line 2347 "parser.yy" 8346 8460 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8347 8461 break; 8348 8462 8349 case 6 19:8350 8351 /* Line 1806 of yacc.c */ 8352 #line 23 38"parser.yy"8463 case 622: 8464 8465 /* Line 1806 of yacc.c */ 8466 #line 2352 "parser.yy" 8353 8467 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8354 8468 break; 8355 8469 8356 case 62 0:8357 8358 /* Line 1806 of yacc.c */ 8359 #line 23 40"parser.yy"8470 case 623: 8471 8472 /* Line 1806 of yacc.c */ 8473 #line 2354 "parser.yy" 8360 8474 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8361 8475 break; 8362 8476 8363 case 62 1:8364 8365 /* Line 1806 of yacc.c */ 8366 #line 23 42"parser.yy"8477 case 624: 8478 8479 /* Line 1806 of yacc.c */ 8480 #line 2356 "parser.yy" 8367 8481 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8368 8482 break; 8369 8483 8370 case 62 2:8371 8372 /* Line 1806 of yacc.c */ 8373 #line 23 47"parser.yy"8484 case 625: 8485 8486 /* Line 1806 of yacc.c */ 8487 #line 2361 "parser.yy" 8374 8488 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8375 8489 break; 8376 8490 8377 case 62 3:8378 8379 /* Line 1806 of yacc.c */ 8380 #line 23 49"parser.yy"8491 case 626: 8492 8493 /* Line 1806 of yacc.c */ 8494 #line 2363 "parser.yy" 8381 8495 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8382 8496 break; 8383 8497 8384 case 62 4:8385 8386 /* Line 1806 of yacc.c */ 8387 #line 23 51"parser.yy"8498 case 627: 8499 8500 /* Line 1806 of yacc.c */ 8501 #line 2365 "parser.yy" 8388 8502 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8389 8503 break; 8390 8504 8391 case 62 5:8392 8393 /* Line 1806 of yacc.c */ 8394 #line 23 53"parser.yy"8505 case 628: 8506 8507 /* Line 1806 of yacc.c */ 8508 #line 2367 "parser.yy" 8395 8509 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8396 8510 break; 8397 8511 8398 case 62 6:8399 8400 /* Line 1806 of yacc.c */ 8401 #line 23 58"parser.yy"8512 case 629: 8513 8514 /* Line 1806 of yacc.c */ 8515 #line 2372 "parser.yy" 8402 8516 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8403 8517 break; 8404 8518 8405 case 6 27:8406 8407 /* Line 1806 of yacc.c */ 8408 #line 23 60"parser.yy"8519 case 630: 8520 8521 /* Line 1806 of yacc.c */ 8522 #line 2374 "parser.yy" 8409 8523 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8410 8524 break; 8411 8525 8412 case 6 28:8413 8414 /* Line 1806 of yacc.c */ 8415 #line 23 62"parser.yy"8526 case 631: 8527 8528 /* Line 1806 of yacc.c */ 8529 #line 2376 "parser.yy" 8416 8530 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8417 8531 break; 8418 8532 8419 case 6 29:8420 8421 /* Line 1806 of yacc.c */ 8422 #line 2 393"parser.yy"8533 case 632: 8534 8535 /* Line 1806 of yacc.c */ 8536 #line 2407 "parser.yy" 8423 8537 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8424 8538 break; 8425 8539 8426 case 63 1:8427 8428 /* Line 1806 of yacc.c */ 8429 #line 2 396"parser.yy"8540 case 634: 8541 8542 /* Line 1806 of yacc.c */ 8543 #line 2410 "parser.yy" 8430 8544 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8431 8545 break; 8432 8546 8433 case 63 2:8434 8435 /* Line 1806 of yacc.c */ 8436 #line 2 398"parser.yy"8547 case 635: 8548 8549 /* Line 1806 of yacc.c */ 8550 #line 2412 "parser.yy" 8437 8551 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8438 8552 break; 8439 8553 8440 case 63 3:8441 8442 /* Line 1806 of yacc.c */ 8443 #line 24 03"parser.yy"8554 case 636: 8555 8556 /* Line 1806 of yacc.c */ 8557 #line 2417 "parser.yy" 8444 8558 { 8445 8559 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8448 8562 break; 8449 8563 8450 case 63 4:8451 8452 /* Line 1806 of yacc.c */ 8453 #line 24 08"parser.yy"8564 case 637: 8565 8566 /* Line 1806 of yacc.c */ 8567 #line 2422 "parser.yy" 8454 8568 { 8455 8569 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8458 8572 break; 8459 8573 8460 case 63 5:8461 8462 /* Line 1806 of yacc.c */ 8463 #line 24 16"parser.yy"8574 case 638: 8575 8576 /* Line 1806 of yacc.c */ 8577 #line 2430 "parser.yy" 8464 8578 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8465 8579 break; 8466 8580 8467 case 63 6:8468 8469 /* Line 1806 of yacc.c */ 8470 #line 24 18"parser.yy"8581 case 639: 8582 8583 /* Line 1806 of yacc.c */ 8584 #line 2432 "parser.yy" 8471 8585 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8472 8586 break; 8473 8587 8474 case 6 37:8475 8476 /* Line 1806 of yacc.c */ 8477 #line 24 20"parser.yy"8588 case 640: 8589 8590 /* Line 1806 of yacc.c */ 8591 #line 2434 "parser.yy" 8478 8592 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8479 8593 break; 8480 8594 8481 case 6 38:8482 8483 /* Line 1806 of yacc.c */ 8484 #line 24 25"parser.yy"8595 case 641: 8596 8597 /* Line 1806 of yacc.c */ 8598 #line 2439 "parser.yy" 8485 8599 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8486 8600 break; 8487 8601 8488 case 6 39:8489 8490 /* Line 1806 of yacc.c */ 8491 #line 24 27"parser.yy"8602 case 642: 8603 8604 /* Line 1806 of yacc.c */ 8605 #line 2441 "parser.yy" 8492 8606 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8493 8607 break; 8494 8608 8495 case 64 0:8496 8497 /* Line 1806 of yacc.c */ 8498 #line 24 32"parser.yy"8609 case 643: 8610 8611 /* Line 1806 of yacc.c */ 8612 #line 2446 "parser.yy" 8499 8613 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8500 8614 break; 8501 8615 8502 case 64 1:8503 8504 /* Line 1806 of yacc.c */ 8505 #line 24 34"parser.yy"8616 case 644: 8617 8618 /* Line 1806 of yacc.c */ 8619 #line 2448 "parser.yy" 8506 8620 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8507 8621 break; 8508 8622 8509 case 64 3:8510 8511 /* Line 1806 of yacc.c */ 8512 #line 24 49"parser.yy"8623 case 646: 8624 8625 /* Line 1806 of yacc.c */ 8626 #line 2463 "parser.yy" 8513 8627 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8514 8628 break; 8515 8629 8516 case 64 4:8517 8518 /* Line 1806 of yacc.c */ 8519 #line 24 51"parser.yy"8630 case 647: 8631 8632 /* Line 1806 of yacc.c */ 8633 #line 2465 "parser.yy" 8520 8634 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8521 8635 break; 8522 8636 8523 case 64 5:8524 8525 /* Line 1806 of yacc.c */ 8526 #line 24 56"parser.yy"8637 case 648: 8638 8639 /* Line 1806 of yacc.c */ 8640 #line 2470 "parser.yy" 8527 8641 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8528 8642 break; 8529 8643 8530 case 64 6:8531 8532 /* Line 1806 of yacc.c */ 8533 #line 24 58"parser.yy"8644 case 649: 8645 8646 /* Line 1806 of yacc.c */ 8647 #line 2472 "parser.yy" 8534 8648 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8535 8649 break; 8536 8650 8537 case 6 47:8538 8539 /* Line 1806 of yacc.c */ 8540 #line 24 60"parser.yy"8651 case 650: 8652 8653 /* Line 1806 of yacc.c */ 8654 #line 2474 "parser.yy" 8541 8655 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8542 8656 break; 8543 8657 8544 case 6 48:8545 8546 /* Line 1806 of yacc.c */ 8547 #line 24 62"parser.yy"8658 case 651: 8659 8660 /* Line 1806 of yacc.c */ 8661 #line 2476 "parser.yy" 8548 8662 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8549 8663 break; 8550 8664 8551 case 6 49:8552 8553 /* Line 1806 of yacc.c */ 8554 #line 24 64"parser.yy"8665 case 652: 8666 8667 /* Line 1806 of yacc.c */ 8668 #line 2478 "parser.yy" 8555 8669 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8556 8670 break; 8557 8671 8558 case 65 1:8559 8560 /* Line 1806 of yacc.c */ 8561 #line 24 70"parser.yy"8672 case 654: 8673 8674 /* Line 1806 of yacc.c */ 8675 #line 2484 "parser.yy" 8562 8676 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8563 8677 break; 8564 8678 8565 case 65 2:8566 8567 /* Line 1806 of yacc.c */ 8568 #line 24 72"parser.yy"8679 case 655: 8680 8681 /* Line 1806 of yacc.c */ 8682 #line 2486 "parser.yy" 8569 8683 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8570 8684 break; 8571 8685 8572 case 65 3:8573 8574 /* Line 1806 of yacc.c */ 8575 #line 24 74"parser.yy"8686 case 656: 8687 8688 /* Line 1806 of yacc.c */ 8689 #line 2488 "parser.yy" 8576 8690 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8577 8691 break; 8578 8692 8579 case 65 4:8580 8581 /* Line 1806 of yacc.c */ 8582 #line 24 79"parser.yy"8693 case 657: 8694 8695 /* Line 1806 of yacc.c */ 8696 #line 2493 "parser.yy" 8583 8697 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8584 8698 break; 8585 8699 8586 case 65 5:8587 8588 /* Line 1806 of yacc.c */ 8589 #line 24 81"parser.yy"8700 case 658: 8701 8702 /* Line 1806 of yacc.c */ 8703 #line 2495 "parser.yy" 8590 8704 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8591 8705 break; 8592 8706 8593 case 65 6:8594 8595 /* Line 1806 of yacc.c */ 8596 #line 24 83"parser.yy"8707 case 659: 8708 8709 /* Line 1806 of yacc.c */ 8710 #line 2497 "parser.yy" 8597 8711 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8598 8712 break; 8599 8713 8600 case 6 57:8601 8602 /* Line 1806 of yacc.c */ 8603 #line 2 489"parser.yy"8714 case 660: 8715 8716 /* Line 1806 of yacc.c */ 8717 #line 2503 "parser.yy" 8604 8718 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8605 8719 break; 8606 8720 8607 case 6 58:8608 8609 /* Line 1806 of yacc.c */ 8610 #line 2 491"parser.yy"8721 case 661: 8722 8723 /* Line 1806 of yacc.c */ 8724 #line 2505 "parser.yy" 8611 8725 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8612 8726 break; 8613 8727 8614 case 66 0:8615 8616 /* Line 1806 of yacc.c */ 8617 #line 2 497"parser.yy"8728 case 663: 8729 8730 /* Line 1806 of yacc.c */ 8731 #line 2511 "parser.yy" 8618 8732 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8619 8733 break; 8620 8734 8621 case 66 1:8622 8623 /* Line 1806 of yacc.c */ 8624 #line 2 499"parser.yy"8735 case 664: 8736 8737 /* Line 1806 of yacc.c */ 8738 #line 2513 "parser.yy" 8625 8739 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8626 8740 break; 8627 8741 8628 case 66 2:8629 8630 /* Line 1806 of yacc.c */ 8631 #line 25 01"parser.yy"8742 case 665: 8743 8744 /* Line 1806 of yacc.c */ 8745 #line 2515 "parser.yy" 8632 8746 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8633 8747 break; 8634 8748 8635 case 66 3:8636 8637 /* Line 1806 of yacc.c */ 8638 #line 25 03"parser.yy"8749 case 666: 8750 8751 /* Line 1806 of yacc.c */ 8752 #line 2517 "parser.yy" 8639 8753 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8640 8754 break; 8641 8755 8642 case 66 5:8643 8644 /* Line 1806 of yacc.c */ 8645 #line 25 18"parser.yy"8756 case 668: 8757 8758 /* Line 1806 of yacc.c */ 8759 #line 2532 "parser.yy" 8646 8760 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8647 8761 break; 8648 8762 8649 case 66 6:8650 8651 /* Line 1806 of yacc.c */ 8652 #line 25 20"parser.yy"8763 case 669: 8764 8765 /* Line 1806 of yacc.c */ 8766 #line 2534 "parser.yy" 8653 8767 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8654 8768 break; 8655 8769 8656 case 6 67:8657 8658 /* Line 1806 of yacc.c */ 8659 #line 25 25"parser.yy"8770 case 670: 8771 8772 /* Line 1806 of yacc.c */ 8773 #line 2539 "parser.yy" 8660 8774 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8661 8775 break; 8662 8776 8663 case 6 68:8664 8665 /* Line 1806 of yacc.c */ 8666 #line 25 27"parser.yy"8777 case 671: 8778 8779 /* Line 1806 of yacc.c */ 8780 #line 2541 "parser.yy" 8667 8781 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8668 8782 break; 8669 8783 8670 case 6 69:8671 8672 /* Line 1806 of yacc.c */ 8673 #line 25 29"parser.yy"8784 case 672: 8785 8786 /* Line 1806 of yacc.c */ 8787 #line 2543 "parser.yy" 8674 8788 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8675 8789 break; 8676 8790 8677 case 67 0:8678 8679 /* Line 1806 of yacc.c */ 8680 #line 25 31"parser.yy"8791 case 673: 8792 8793 /* Line 1806 of yacc.c */ 8794 #line 2545 "parser.yy" 8681 8795 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8682 8796 break; 8683 8797 8684 case 67 1:8685 8686 /* Line 1806 of yacc.c */ 8687 #line 25 33"parser.yy"8798 case 674: 8799 8800 /* Line 1806 of yacc.c */ 8801 #line 2547 "parser.yy" 8688 8802 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8689 8803 break; 8690 8804 8691 case 67 3:8692 8693 /* Line 1806 of yacc.c */ 8694 #line 25 39"parser.yy"8805 case 676: 8806 8807 /* Line 1806 of yacc.c */ 8808 #line 2553 "parser.yy" 8695 8809 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8696 8810 break; 8697 8811 8698 case 67 4:8699 8700 /* Line 1806 of yacc.c */ 8701 #line 25 41"parser.yy"8812 case 677: 8813 8814 /* Line 1806 of yacc.c */ 8815 #line 2555 "parser.yy" 8702 8816 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8703 8817 break; 8704 8818 8705 case 67 5:8706 8707 /* Line 1806 of yacc.c */ 8708 #line 25 43"parser.yy"8819 case 678: 8820 8821 /* Line 1806 of yacc.c */ 8822 #line 2557 "parser.yy" 8709 8823 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8710 8824 break; 8711 8825 8712 case 67 6:8713 8714 /* Line 1806 of yacc.c */ 8715 #line 25 48"parser.yy"8826 case 679: 8827 8828 /* Line 1806 of yacc.c */ 8829 #line 2562 "parser.yy" 8716 8830 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8717 8831 break; 8718 8832 8719 case 6 77:8720 8721 /* Line 1806 of yacc.c */ 8722 #line 25 50"parser.yy"8833 case 680: 8834 8835 /* Line 1806 of yacc.c */ 8836 #line 2564 "parser.yy" 8723 8837 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8724 8838 break; 8725 8839 8726 case 6 78:8727 8728 /* Line 1806 of yacc.c */ 8729 #line 25 52"parser.yy"8840 case 681: 8841 8842 /* Line 1806 of yacc.c */ 8843 #line 2566 "parser.yy" 8730 8844 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8731 8845 break; 8732 8846 8733 case 68 0:8734 8735 /* Line 1806 of yacc.c */ 8736 #line 25 59"parser.yy"8847 case 683: 8848 8849 /* Line 1806 of yacc.c */ 8850 #line 2573 "parser.yy" 8737 8851 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8738 8852 break; 8739 8853 8740 case 68 2:8741 8742 /* Line 1806 of yacc.c */ 8743 #line 25 70"parser.yy"8854 case 685: 8855 8856 /* Line 1806 of yacc.c */ 8857 #line 2584 "parser.yy" 8744 8858 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8745 8859 break; 8746 8860 8747 case 68 3:8748 8749 /* Line 1806 of yacc.c */ 8750 #line 25 73"parser.yy"8861 case 686: 8862 8863 /* Line 1806 of yacc.c */ 8864 #line 2587 "parser.yy" 8751 8865 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8752 8866 break; 8753 8867 8754 case 68 4:8755 8756 /* Line 1806 of yacc.c */ 8757 #line 25 75"parser.yy"8868 case 687: 8869 8870 /* Line 1806 of yacc.c */ 8871 #line 2589 "parser.yy" 8758 8872 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8759 8873 break; 8760 8874 8761 case 68 5:8762 8763 /* Line 1806 of yacc.c */ 8764 #line 25 78"parser.yy"8875 case 688: 8876 8877 /* Line 1806 of yacc.c */ 8878 #line 2592 "parser.yy" 8765 8879 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8766 8880 break; 8767 8881 8768 case 68 6:8769 8770 /* Line 1806 of yacc.c */ 8771 #line 25 80"parser.yy"8882 case 689: 8883 8884 /* Line 1806 of yacc.c */ 8885 #line 2594 "parser.yy" 8772 8886 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8773 8887 break; 8774 8888 8775 case 6 87:8776 8777 /* Line 1806 of yacc.c */ 8778 #line 25 82"parser.yy"8889 case 690: 8890 8891 /* Line 1806 of yacc.c */ 8892 #line 2596 "parser.yy" 8779 8893 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8780 8894 break; 8781 8895 8782 case 6 89:8783 8784 /* Line 1806 of yacc.c */ 8785 #line 2 596"parser.yy"8896 case 692: 8897 8898 /* Line 1806 of yacc.c */ 8899 #line 2610 "parser.yy" 8786 8900 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8787 8901 break; 8788 8902 8789 case 69 0:8790 8791 /* Line 1806 of yacc.c */ 8792 #line 2 598"parser.yy"8903 case 693: 8904 8905 /* Line 1806 of yacc.c */ 8906 #line 2612 "parser.yy" 8793 8907 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8794 8908 break; 8795 8909 8796 case 69 1:8797 8798 /* Line 1806 of yacc.c */ 8799 #line 26 03"parser.yy"8910 case 694: 8911 8912 /* Line 1806 of yacc.c */ 8913 #line 2617 "parser.yy" 8800 8914 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8801 8915 break; 8802 8916 8803 case 69 2:8804 8805 /* Line 1806 of yacc.c */ 8806 #line 26 05"parser.yy"8917 case 695: 8918 8919 /* Line 1806 of yacc.c */ 8920 #line 2619 "parser.yy" 8807 8921 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8808 8922 break; 8809 8923 8810 case 69 3:8811 8812 /* Line 1806 of yacc.c */ 8813 #line 26 07"parser.yy"8924 case 696: 8925 8926 /* Line 1806 of yacc.c */ 8927 #line 2621 "parser.yy" 8814 8928 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8815 8929 break; 8816 8930 8817 case 69 4:8818 8819 /* Line 1806 of yacc.c */ 8820 #line 26 09"parser.yy"8931 case 697: 8932 8933 /* Line 1806 of yacc.c */ 8934 #line 2623 "parser.yy" 8821 8935 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8822 8936 break; 8823 8937 8824 case 69 5:8825 8826 /* Line 1806 of yacc.c */ 8827 #line 26 11"parser.yy"8938 case 698: 8939 8940 /* Line 1806 of yacc.c */ 8941 #line 2625 "parser.yy" 8828 8942 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8829 8943 break; 8830 8944 8831 case 697:8832 8833 /* Line 1806 of yacc.c */ 8834 #line 26 17"parser.yy"8945 case 700: 8946 8947 /* Line 1806 of yacc.c */ 8948 #line 2631 "parser.yy" 8835 8949 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8836 8950 break; 8837 8951 8838 case 698:8839 8840 /* Line 1806 of yacc.c */ 8841 #line 26 19"parser.yy"8952 case 701: 8953 8954 /* Line 1806 of yacc.c */ 8955 #line 2633 "parser.yy" 8842 8956 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8843 8957 break; 8844 8958 8845 case 699:8846 8847 /* Line 1806 of yacc.c */ 8848 #line 26 21"parser.yy"8959 case 702: 8960 8961 /* Line 1806 of yacc.c */ 8962 #line 2635 "parser.yy" 8849 8963 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8850 8964 break; 8851 8965 8852 case 70 0:8853 8854 /* Line 1806 of yacc.c */ 8855 #line 26 26"parser.yy"8966 case 703: 8967 8968 /* Line 1806 of yacc.c */ 8969 #line 2640 "parser.yy" 8856 8970 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8857 8971 break; 8858 8972 8859 case 70 1:8860 8861 /* Line 1806 of yacc.c */ 8862 #line 26 28"parser.yy"8973 case 704: 8974 8975 /* Line 1806 of yacc.c */ 8976 #line 2642 "parser.yy" 8863 8977 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8864 8978 break; 8865 8979 8866 case 70 4:8867 8868 /* Line 1806 of yacc.c */ 8869 #line 26 38"parser.yy"8980 case 707: 8981 8982 /* Line 1806 of yacc.c */ 8983 #line 2652 "parser.yy" 8870 8984 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8871 8985 break; 8872 8986 8873 case 7 07:8874 8875 /* Line 1806 of yacc.c */ 8876 #line 26 48"parser.yy"8987 case 710: 8988 8989 /* Line 1806 of yacc.c */ 8990 #line 2662 "parser.yy" 8877 8991 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8878 8992 break; 8879 8993 8880 case 7 08:8881 8882 /* Line 1806 of yacc.c */ 8883 #line 26 50"parser.yy"8994 case 711: 8995 8996 /* Line 1806 of yacc.c */ 8997 #line 2664 "parser.yy" 8884 8998 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8885 8999 break; 8886 9000 8887 case 7 09:8888 8889 /* Line 1806 of yacc.c */ 8890 #line 26 52"parser.yy"9001 case 712: 9002 9003 /* Line 1806 of yacc.c */ 9004 #line 2666 "parser.yy" 8891 9005 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8892 9006 break; 8893 9007 8894 case 71 0:8895 8896 /* Line 1806 of yacc.c */ 8897 #line 26 54"parser.yy"9008 case 713: 9009 9010 /* Line 1806 of yacc.c */ 9011 #line 2668 "parser.yy" 8898 9012 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8899 9013 break; 8900 9014 8901 case 71 1:8902 8903 /* Line 1806 of yacc.c */ 8904 #line 26 56"parser.yy"9015 case 714: 9016 9017 /* Line 1806 of yacc.c */ 9018 #line 2670 "parser.yy" 8905 9019 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8906 9020 break; 8907 9021 8908 case 71 2:8909 8910 /* Line 1806 of yacc.c */ 8911 #line 26 58"parser.yy"9022 case 715: 9023 9024 /* Line 1806 of yacc.c */ 9025 #line 2672 "parser.yy" 8912 9026 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8913 9027 break; 8914 9028 8915 case 71 3:8916 8917 /* Line 1806 of yacc.c */ 8918 #line 26 65"parser.yy"9029 case 716: 9030 9031 /* Line 1806 of yacc.c */ 9032 #line 2679 "parser.yy" 8919 9033 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8920 9034 break; 8921 9035 8922 case 71 4:8923 8924 /* Line 1806 of yacc.c */ 8925 #line 26 67"parser.yy"9036 case 717: 9037 9038 /* Line 1806 of yacc.c */ 9039 #line 2681 "parser.yy" 8926 9040 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8927 9041 break; 8928 9042 8929 case 71 5:8930 8931 /* Line 1806 of yacc.c */ 8932 #line 26 69"parser.yy"9043 case 718: 9044 9045 /* Line 1806 of yacc.c */ 9046 #line 2683 "parser.yy" 8933 9047 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8934 9048 break; 8935 9049 8936 case 71 6:8937 8938 /* Line 1806 of yacc.c */ 8939 #line 26 71"parser.yy"9050 case 719: 9051 9052 /* Line 1806 of yacc.c */ 9053 #line 2685 "parser.yy" 8940 9054 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8941 9055 break; 8942 9056 8943 case 7 17:8944 8945 /* Line 1806 of yacc.c */ 8946 #line 26 73"parser.yy"9057 case 720: 9058 9059 /* Line 1806 of yacc.c */ 9060 #line 2687 "parser.yy" 8947 9061 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8948 9062 break; 8949 9063 8950 case 7 18:8951 8952 /* Line 1806 of yacc.c */ 8953 #line 26 75"parser.yy"9064 case 721: 9065 9066 /* Line 1806 of yacc.c */ 9067 #line 2689 "parser.yy" 8954 9068 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8955 9069 break; 8956 9070 8957 case 7 19:8958 8959 /* Line 1806 of yacc.c */ 8960 #line 26 77"parser.yy"9071 case 722: 9072 9073 /* Line 1806 of yacc.c */ 9074 #line 2691 "parser.yy" 8961 9075 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8962 9076 break; 8963 9077 8964 case 72 0:8965 8966 /* Line 1806 of yacc.c */ 8967 #line 26 79"parser.yy"9078 case 723: 9079 9080 /* Line 1806 of yacc.c */ 9081 #line 2693 "parser.yy" 8968 9082 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8969 9083 break; 8970 9084 8971 case 72 1:8972 8973 /* Line 1806 of yacc.c */ 8974 #line 26 81"parser.yy"9085 case 724: 9086 9087 /* Line 1806 of yacc.c */ 9088 #line 2695 "parser.yy" 8975 9089 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8976 9090 break; 8977 9091 8978 case 72 2:8979 8980 /* Line 1806 of yacc.c */ 8981 #line 26 83"parser.yy"9092 case 725: 9093 9094 /* Line 1806 of yacc.c */ 9095 #line 2697 "parser.yy" 8982 9096 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8983 9097 break; 8984 9098 8985 case 72 3:8986 8987 /* Line 1806 of yacc.c */ 8988 #line 2 688"parser.yy"9099 case 726: 9100 9101 /* Line 1806 of yacc.c */ 9102 #line 2702 "parser.yy" 8989 9103 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8990 9104 break; 8991 9105 8992 case 72 4:8993 8994 /* Line 1806 of yacc.c */ 8995 #line 2 690"parser.yy"9106 case 727: 9107 9108 /* Line 1806 of yacc.c */ 9109 #line 2704 "parser.yy" 8996 9110 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8997 9111 break; 8998 9112 8999 case 72 5:9000 9001 /* Line 1806 of yacc.c */ 9002 #line 2 695"parser.yy"9113 case 728: 9114 9115 /* Line 1806 of yacc.c */ 9116 #line 2709 "parser.yy" 9003 9117 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 9004 9118 break; 9005 9119 9006 case 72 6:9007 9008 /* Line 1806 of yacc.c */ 9009 #line 2 697"parser.yy"9120 case 729: 9121 9122 /* Line 1806 of yacc.c */ 9123 #line 2711 "parser.yy" 9010 9124 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 9011 9125 break; 9012 9126 9013 case 7 28:9014 9015 /* Line 1806 of yacc.c */ 9016 #line 27 24"parser.yy"9127 case 731: 9128 9129 /* Line 1806 of yacc.c */ 9130 #line 2738 "parser.yy" 9017 9131 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 9018 9132 break; 9019 9133 9020 case 73 2:9021 9022 /* Line 1806 of yacc.c */ 9023 #line 27 35"parser.yy"9134 case 735: 9135 9136 /* Line 1806 of yacc.c */ 9137 #line 2749 "parser.yy" 9024 9138 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9025 9139 break; 9026 9140 9027 case 73 3:9028 9029 /* Line 1806 of yacc.c */ 9030 #line 27 37"parser.yy"9141 case 736: 9142 9143 /* Line 1806 of yacc.c */ 9144 #line 2751 "parser.yy" 9031 9145 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9032 9146 break; 9033 9147 9034 case 73 4:9035 9036 /* Line 1806 of yacc.c */ 9037 #line 27 39"parser.yy"9148 case 737: 9149 9150 /* Line 1806 of yacc.c */ 9151 #line 2753 "parser.yy" 9038 9152 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9039 9153 break; 9040 9154 9041 case 73 5:9042 9043 /* Line 1806 of yacc.c */ 9044 #line 27 41"parser.yy"9155 case 738: 9156 9157 /* Line 1806 of yacc.c */ 9158 #line 2755 "parser.yy" 9045 9159 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9046 9160 break; 9047 9161 9048 case 73 6:9049 9050 /* Line 1806 of yacc.c */ 9051 #line 27 43"parser.yy"9162 case 739: 9163 9164 /* Line 1806 of yacc.c */ 9165 #line 2757 "parser.yy" 9052 9166 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9053 9167 break; 9054 9168 9055 case 7 37:9056 9057 /* Line 1806 of yacc.c */ 9058 #line 27 45"parser.yy"9169 case 740: 9170 9171 /* Line 1806 of yacc.c */ 9172 #line 2759 "parser.yy" 9059 9173 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9060 9174 break; 9061 9175 9062 case 7 38:9063 9064 /* Line 1806 of yacc.c */ 9065 #line 27 52"parser.yy"9176 case 741: 9177 9178 /* Line 1806 of yacc.c */ 9179 #line 2766 "parser.yy" 9066 9180 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9067 9181 break; 9068 9182 9069 case 7 39:9070 9071 /* Line 1806 of yacc.c */ 9072 #line 27 54"parser.yy"9183 case 742: 9184 9185 /* Line 1806 of yacc.c */ 9186 #line 2768 "parser.yy" 9073 9187 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9074 9188 break; 9075 9189 9076 case 74 0:9077 9078 /* Line 1806 of yacc.c */ 9079 #line 27 56"parser.yy"9190 case 743: 9191 9192 /* Line 1806 of yacc.c */ 9193 #line 2770 "parser.yy" 9080 9194 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9081 9195 break; 9082 9196 9083 case 74 1:9084 9085 /* Line 1806 of yacc.c */ 9086 #line 27 58"parser.yy"9197 case 744: 9198 9199 /* Line 1806 of yacc.c */ 9200 #line 2772 "parser.yy" 9087 9201 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9088 9202 break; 9089 9203 9090 case 74 2:9091 9092 /* Line 1806 of yacc.c */ 9093 #line 27 60"parser.yy"9204 case 745: 9205 9206 /* Line 1806 of yacc.c */ 9207 #line 2774 "parser.yy" 9094 9208 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9095 9209 break; 9096 9210 9097 case 74 3:9098 9099 /* Line 1806 of yacc.c */ 9100 #line 27 62"parser.yy"9211 case 746: 9212 9213 /* Line 1806 of yacc.c */ 9214 #line 2776 "parser.yy" 9101 9215 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9102 9216 break; 9103 9217 9104 case 74 4:9105 9106 /* Line 1806 of yacc.c */ 9107 #line 27 67"parser.yy"9218 case 747: 9219 9220 /* Line 1806 of yacc.c */ 9221 #line 2781 "parser.yy" 9108 9222 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9109 9223 break; 9110 9224 9111 case 74 5:9112 9113 /* Line 1806 of yacc.c */ 9114 #line 27 72"parser.yy"9225 case 748: 9226 9227 /* Line 1806 of yacc.c */ 9228 #line 2786 "parser.yy" 9115 9229 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9116 9230 break; 9117 9231 9118 case 74 6:9119 9120 /* Line 1806 of yacc.c */ 9121 #line 27 74"parser.yy"9232 case 749: 9233 9234 /* Line 1806 of yacc.c */ 9235 #line 2788 "parser.yy" 9122 9236 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9123 9237 break; 9124 9238 9125 case 7 47:9126 9127 /* Line 1806 of yacc.c */ 9128 #line 27 76"parser.yy"9239 case 750: 9240 9241 /* Line 1806 of yacc.c */ 9242 #line 2790 "parser.yy" 9129 9243 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9130 9244 break; 9131 9245 9132 case 75 0:9133 9134 /* Line 1806 of yacc.c */ 9135 #line 28 00"parser.yy"9246 case 753: 9247 9248 /* Line 1806 of yacc.c */ 9249 #line 2814 "parser.yy" 9136 9250 { (yyval.en) = 0; } 9137 9251 break; 9138 9252 9139 case 75 1:9140 9141 /* Line 1806 of yacc.c */ 9142 #line 28 02"parser.yy"9253 case 754: 9254 9255 /* Line 1806 of yacc.c */ 9256 #line 2816 "parser.yy" 9143 9257 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9144 9258 break; … … 9147 9261 9148 9262 /* Line 1806 of yacc.c */ 9149 #line 9 150"Parser/parser.cc"9263 #line 9264 "Parser/parser.cc" 9150 9264 default: break; 9151 9265 } … … 9378 9492 9379 9493 /* Line 2067 of yacc.c */ 9380 #line 28 05"parser.yy"9494 #line 2819 "parser.yy" 9381 9495 9382 9496 // ----end of grammar---- … … 9385 9499 std::cout << "Error "; 9386 9500 if ( yyfilename ) { 9387 9501 std::cout << "in file " << yyfilename << " "; 9388 9502 } // if 9389 9503 std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl; -
src/Parser/parser.h
rc5833e8 r0f9e4403 59 59 SIGNED = 277, 60 60 UNSIGNED = 278, 61 BOOL = 279, 62 COMPLEX = 280, 63 IMAGINARY = 281, 64 TYPEOF = 282, 65 LABEL = 283, 66 ENUM = 284, 67 STRUCT = 285, 68 UNION = 286, 69 TYPE = 287, 70 FTYPE = 288, 71 DTYPE = 289, 72 CONTEXT = 290, 73 SIZEOF = 291, 74 OFFSETOF = 292, 75 ATTRIBUTE = 293, 76 EXTENSION = 294, 77 IF = 295, 78 ELSE = 296, 79 SWITCH = 297, 80 CASE = 298, 81 DEFAULT = 299, 82 DO = 300, 83 WHILE = 301, 84 FOR = 302, 85 BREAK = 303, 86 CONTINUE = 304, 87 GOTO = 305, 88 RETURN = 306, 89 CHOOSE = 307, 90 DISABLE = 308, 91 ENABLE = 309, 92 FALLTHRU = 310, 93 TRY = 311, 94 CATCH = 312, 95 CATCHRESUME = 313, 96 FINALLY = 314, 97 THROW = 315, 98 THROWRESUME = 316, 99 AT = 317, 100 ASM = 318, 101 ALIGNAS = 319, 102 ALIGNOF = 320, 103 ATOMIC = 321, 104 GENERIC = 322, 105 NORETURN = 323, 106 STATICASSERT = 324, 107 THREADLOCAL = 325, 108 IDENTIFIER = 326, 109 QUOTED_IDENTIFIER = 327, 110 TYPEDEFname = 328, 111 TYPEGENname = 329, 112 ATTR_IDENTIFIER = 330, 113 ATTR_TYPEDEFname = 331, 114 ATTR_TYPEGENname = 332, 115 INTEGERconstant = 333, 116 FLOATINGconstant = 334, 117 CHARACTERconstant = 335, 118 STRINGliteral = 336, 119 ZERO = 337, 120 ONE = 338, 121 ARROW = 339, 122 ICR = 340, 123 DECR = 341, 124 LS = 342, 125 RS = 343, 126 LE = 344, 127 GE = 345, 128 EQ = 346, 129 NE = 347, 130 ANDAND = 348, 131 OROR = 349, 132 ELLIPSIS = 350, 133 MULTassign = 351, 134 DIVassign = 352, 135 MODassign = 353, 136 PLUSassign = 354, 137 MINUSassign = 355, 138 LSassign = 356, 139 RSassign = 357, 140 ANDassign = 358, 141 ERassign = 359, 142 ORassign = 360, 143 ATassign = 361, 144 THEN = 362 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 145 146 }; 146 147 #endif … … 167 168 #define SIGNED 277 168 169 #define UNSIGNED 278 169 #define BOOL 279 170 #define COMPLEX 280 171 #define IMAGINARY 281 172 #define TYPEOF 282 173 #define LABEL 283 174 #define ENUM 284 175 #define STRUCT 285 176 #define UNION 286 177 #define TYPE 287 178 #define FTYPE 288 179 #define DTYPE 289 180 #define CONTEXT 290 181 #define SIZEOF 291 182 #define OFFSETOF 292 183 #define ATTRIBUTE 293 184 #define EXTENSION 294 185 #define IF 295 186 #define ELSE 296 187 #define SWITCH 297 188 #define CASE 298 189 #define DEFAULT 299 190 #define DO 300 191 #define WHILE 301 192 #define FOR 302 193 #define BREAK 303 194 #define CONTINUE 304 195 #define GOTO 305 196 #define RETURN 306 197 #define CHOOSE 307 198 #define DISABLE 308 199 #define ENABLE 309 200 #define FALLTHRU 310 201 #define TRY 311 202 #define CATCH 312 203 #define CATCHRESUME 313 204 #define FINALLY 314 205 #define THROW 315 206 #define THROWRESUME 316 207 #define AT 317 208 #define ASM 318 209 #define ALIGNAS 319 210 #define ALIGNOF 320 211 #define ATOMIC 321 212 #define GENERIC 322 213 #define NORETURN 323 214 #define STATICASSERT 324 215 #define THREADLOCAL 325 216 #define IDENTIFIER 326 217 #define QUOTED_IDENTIFIER 327 218 #define TYPEDEFname 328 219 #define TYPEGENname 329 220 #define ATTR_IDENTIFIER 330 221 #define ATTR_TYPEDEFname 331 222 #define ATTR_TYPEGENname 332 223 #define INTEGERconstant 333 224 #define FLOATINGconstant 334 225 #define CHARACTERconstant 335 226 #define STRINGliteral 336 227 #define ZERO 337 228 #define ONE 338 229 #define ARROW 339 230 #define ICR 340 231 #define DECR 341 232 #define LS 342 233 #define RS 343 234 #define LE 344 235 #define GE 345 236 #define EQ 346 237 #define NE 347 238 #define ANDAND 348 239 #define OROR 349 240 #define ELLIPSIS 350 241 #define MULTassign 351 242 #define DIVassign 352 243 #define MODassign 353 244 #define PLUSassign 354 245 #define MINUSassign 355 246 #define LSassign 356 247 #define RSassign 357 248 #define ANDassign 358 249 #define ERassign 359 250 #define ORassign 360 251 #define ATassign 361 252 #define THEN 362 170 #define VALIST 279 171 #define BOOL 280 172 #define COMPLEX 281 173 #define IMAGINARY 282 174 #define TYPEOF 283 175 #define LABEL 284 176 #define ENUM 285 177 #define STRUCT 286 178 #define UNION 287 179 #define OTYPE 288 180 #define FTYPE 289 181 #define DTYPE 290 182 #define TRAIT 291 183 #define SIZEOF 292 184 #define OFFSETOF 293 185 #define ATTRIBUTE 294 186 #define EXTENSION 295 187 #define IF 296 188 #define ELSE 297 189 #define SWITCH 298 190 #define CASE 299 191 #define DEFAULT 300 192 #define DO 301 193 #define WHILE 302 194 #define FOR 303 195 #define BREAK 304 196 #define CONTINUE 305 197 #define GOTO 306 198 #define RETURN 307 199 #define CHOOSE 308 200 #define DISABLE 309 201 #define ENABLE 310 202 #define FALLTHRU 311 203 #define TRY 312 204 #define CATCH 313 205 #define CATCHRESUME 314 206 #define FINALLY 315 207 #define THROW 316 208 #define THROWRESUME 317 209 #define AT 318 210 #define ASM 319 211 #define ALIGNAS 320 212 #define ALIGNOF 321 213 #define ATOMIC 322 214 #define GENERIC 323 215 #define NORETURN 324 216 #define STATICASSERT 325 217 #define THREADLOCAL 326 218 #define IDENTIFIER 327 219 #define QUOTED_IDENTIFIER 328 220 #define TYPEDEFname 329 221 #define TYPEGENname 330 222 #define ATTR_IDENTIFIER 331 223 #define ATTR_TYPEDEFname 332 224 #define ATTR_TYPEGENname 333 225 #define INTEGERconstant 334 226 #define FLOATINGconstant 335 227 #define CHARACTERconstant 336 228 #define STRINGliteral 337 229 #define ZERO 338 230 #define ONE 339 231 #define ARROW 340 232 #define ICR 341 233 #define DECR 342 234 #define LS 343 235 #define RS 344 236 #define LE 345 237 #define GE 346 238 #define EQ 347 239 #define NE 348 240 #define ANDAND 349 241 #define OROR 350 242 #define ELLIPSIS 351 243 #define MULTassign 352 244 #define DIVassign 353 245 #define MODassign 354 246 #define PLUSassign 355 247 #define MINUSassign 356 248 #define LSassign 357 249 #define RSassign 358 250 #define ANDassign 359 251 #define ERassign 360 252 #define ORassign 361 253 #define ATassign 362 254 #define THEN 363 253 255 254 256 … … 260 262 261 263 /* Line 2068 of yacc.c */ 262 #line 11 0"parser.yy"264 #line 112 "parser.yy" 263 265 264 266 Token tok; … … 277 279 278 280 /* Line 2068 of yacc.c */ 279 #line 28 0"Parser/parser.h"281 #line 282 "Parser/parser.h" 280 282 } YYSTYPE; 281 283 # define YYSTYPE_IS_TRIVIAL 1 -
src/Parser/parser.yy
rc5833e8 r0f9e4403 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 1 18:22:42201613 // Update Count : 1 48312 // Last Modified On : Wed Apr 13 16:58:43 2016 13 // Update Count : 1519 14 14 // 15 15 … … 51 51 #include <cstdio> 52 52 #include <stack> 53 #include "lex.h" 54 #include "parser.h" 55 #include "ParseNode.h" 53 56 #include "TypedefTable.h" 54 #include "lex.h"55 #include "ParseNode.h"56 57 #include "TypeData.h" 57 58 #include "LinkageSpec.h" … … 74 75 %token FORALL LVALUE // CFA 75 76 %token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED 77 %token VALIST // GCC 76 78 %token BOOL COMPLEX IMAGINARY // C99 77 79 %token TYPEOF LABEL // GCC 78 80 %token ENUM STRUCT UNION 79 %token TYPE FTYPE DTYPE CONTEXT// CFA81 %token OTYPE FTYPE DTYPE TRAIT // CFA 80 82 %token SIZEOF OFFSETOF 81 83 %token ATTRIBUTE EXTENSION // GCC … … 171 173 %type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name 172 174 173 %type<decl> context_declaration context_declaration_list context_declaring_list context_specifier175 %type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier 174 176 175 177 %type<decl> declaration declaration_list declaration_list_opt declaration_qualifier_list … … 197 199 %type<decl> new_array_parameter_1st_dimension 198 200 199 %type<decl> new_ context_declaring_list new_declaration new_field_declaring_list201 %type<decl> new_trait_declaring_list new_declaration new_field_declaring_list 200 202 %type<decl> new_function_declaration new_function_return new_function_specifier 201 203 … … 370 372 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); } 371 373 | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99 372 { $$ = 0; }374 { $$ = new CompoundLiteralNode( $2, new InitializerNode( $5, true ) ); } 373 375 | postfix_expression '{' argument_expression_list '}' // CFA 374 376 { … … 448 450 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); } 449 451 | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')' 450 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( $3 ), new VarRefNode( $5 )); }452 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( $3 ), new VarRefNode( $5 )); } 451 453 | ATTR_IDENTIFIER 452 454 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); } … … 1020 1022 | new_function_declaration pop ';' 1021 1023 | type_declaring_list pop ';' 1022 | context_specifier pop ';'1024 | trait_specifier pop ';' 1023 1025 ; 1024 1026 … … 1027 1029 { 1028 1030 typedefTable.addToEnclosingScope( TypedefTable::ID ); 1029 $$ = $1 ;1031 $$ = $1->addInitializer( $2 ); 1030 1032 } 1031 1033 | declaration_qualifier_list new_variable_specifier initializer_opt … … 1034 1036 { 1035 1037 typedefTable.addToEnclosingScope( TypedefTable::ID ); 1036 $$ = $2->addQualifiers( $1 ) ;1038 $$ = $2->addQualifiers( $1 )->addInitializer( $3 );; 1037 1039 } 1038 1040 | new_variable_declaration pop ',' push identifier_or_type_name initializer_opt 1039 1041 { 1040 1042 typedefTable.addToEnclosingScope( *$5, TypedefTable::ID ); 1041 $$ = $1->appendList( $1->cloneType( $5 ) );1043 $$ = $1->appendList( $1->cloneType( $5 )->addInitializer( $6 ) ); 1042 1044 } 1043 1045 ; … … 1345 1347 | IMAGINARY // C99 1346 1348 { $$ = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); } 1349 | VALIST // GCC, __builtin_va_list 1350 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); } 1347 1351 ; 1348 1352 … … 1434 1438 { $$ = DeclarationNode::newAggregate( $1, 0, 0, $3 ); } 1435 1439 | aggregate_key no_attr_identifier_or_type_name 1436 { $$ = DeclarationNode::newAggregate( $1, $2, 0, 0 ); } 1437 | aggregate_key no_attr_identifier_or_type_name '{' field_declaration_list '}' 1438 { $$ = DeclarationNode::newAggregate( $1, $2, 0, $4 ); } 1440 { 1441 typedefTable.makeTypedef( *$2 ); 1442 $$ = DeclarationNode::newAggregate( $1, $2, 0, 0 ); 1443 } 1444 | aggregate_key no_attr_identifier_or_type_name 1445 { typedefTable.makeTypedef( *$2 ); } 1446 '{' field_declaration_list '}' 1447 { $$ = DeclarationNode::newAggregate( $1, $2, 0, $5); } 1439 1448 | aggregate_key '(' type_name_list ')' '{' field_declaration_list '}' // CFA 1440 1449 { $$ = DeclarationNode::newAggregate( $1, 0, $3, $6 ); } 1441 1450 | aggregate_key typegen_name // CFA, S/R conflict 1442 1451 { $$ = $2; } … … 1516 1525 enum_key '{' enumerator_list comma_opt '}' 1517 1526 { $$ = DeclarationNode::newEnum( 0, $3 ); } 1518 | enum_key no_attr_identifier_or_type_name '{' enumerator_list comma_opt '}'1519 { $$ = DeclarationNode::newEnum( $2, $4 ); }1520 1527 | enum_key no_attr_identifier_or_type_name 1521 { $$ = DeclarationNode::newEnum( $2, 0 ); } 1528 { 1529 typedefTable.makeTypedef( *$2 ); 1530 $$ = DeclarationNode::newEnum( $2, 0 ); 1531 } 1532 | enum_key no_attr_identifier_or_type_name 1533 { typedefTable.makeTypedef( *$2 ); } 1534 '{' enumerator_list comma_opt '}' 1535 { $$ = DeclarationNode::newEnum( $2, $5 ); } 1522 1536 ; 1523 1537 … … 1803 1817 1804 1818 type_class: // CFA 1805 TYPE1819 OTYPE 1806 1820 { $$ = DeclarationNode::Type; } 1807 1821 | DTYPE … … 1821 1835 '|' no_attr_identifier_or_type_name '(' type_name_list ')' 1822 1836 { 1823 typedefTable.open Context( *$2 );1824 $$ = DeclarationNode::new ContextUse( $2, $4 );1825 } 1826 | '|' '{' push context_declaration_list '}'1837 typedefTable.openTrait( *$2 ); 1838 $$ = DeclarationNode::newTraitUse( $2, $4 ); 1839 } 1840 | '|' '{' push trait_declaration_list '}' 1827 1841 { $$ = $4; } 1828 | '|' '(' push type_parameter_list pop ')' '{' push context_declaration_list '}' '(' type_name_list ')'1842 | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')' 1829 1843 { $$ = 0; } 1830 1844 ; … … 1841 1855 1842 1856 type_declaring_list: // CFA 1843 TYPE type_declarator1844 { $$ = $2; } 1845 | storage_class_list TYPE type_declarator1857 OTYPE type_declarator 1858 { $$ = $2; } 1859 | storage_class_list OTYPE type_declarator 1846 1860 { $$ = $3->addQualifiers( $1 ); } 1847 1861 | type_declaring_list ',' type_declarator … … 1869 1883 ; 1870 1884 1871 context_specifier: // CFA1872 CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'1885 trait_specifier: // CFA 1886 TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}' 1873 1887 { 1874 1888 typedefTable.addToEnclosingScope( *$2, TypedefTable::ID ); 1875 $$ = DeclarationNode::new Context( $2, $5, 0 );1876 } 1877 | CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'1878 { 1879 typedefTable.enter Context( *$2 );1889 $$ = DeclarationNode::newTrait( $2, $5, 0 ); 1890 } 1891 | TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' 1892 { 1893 typedefTable.enterTrait( *$2 ); 1880 1894 typedefTable.enterScope(); 1881 1895 } 1882 context_declaration_list '}'1883 { 1884 typedefTable.leave Context();1896 trait_declaration_list '}' 1897 { 1898 typedefTable.leaveTrait(); 1885 1899 typedefTable.addToEnclosingScope( *$2, TypedefTable::ID ); 1886 $$ = DeclarationNode::new Context( $2, $5, $10 );1887 } 1888 ; 1889 1890 context_declaration_list: // CFA1891 context_declaration1892 | context_declaration_list push context_declaration1900 $$ = DeclarationNode::newTrait( $2, $5, $10 ); 1901 } 1902 ; 1903 1904 trait_declaration_list: // CFA 1905 trait_declaration 1906 | trait_declaration_list push trait_declaration 1893 1907 { $$ = $1->appendList( $3 ); } 1894 1908 ; 1895 1909 1896 context_declaration: // CFA1897 new_ context_declaring_list pop ';'1898 | context_declaring_list pop ';'1899 ; 1900 1901 new_ context_declaring_list: // CFA1910 trait_declaration: // CFA 1911 new_trait_declaring_list pop ';' 1912 | trait_declaring_list pop ';' 1913 ; 1914 1915 new_trait_declaring_list: // CFA 1902 1916 new_variable_specifier 1903 1917 { … … 1910 1924 $$ = $1; 1911 1925 } 1912 | new_ context_declaring_list pop ',' push identifier_or_type_name1926 | new_trait_declaring_list pop ',' push identifier_or_type_name 1913 1927 { 1914 1928 typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID ); … … 1917 1931 ; 1918 1932 1919 context_declaring_list: // CFA1933 trait_declaring_list: // CFA 1920 1934 type_specifier declarator 1921 1935 { … … 1923 1937 $$ = $2->addType( $1 ); 1924 1938 } 1925 | context_declaring_list pop ',' push declarator1939 | trait_declaring_list pop ',' push declarator 1926 1940 { 1927 1941 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 2809 2823 std::cout << "Error "; 2810 2824 if ( yyfilename ) { 2811 2825 std::cout << "in file " << yyfilename << " "; 2812 2826 } // if 2813 2827 std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl; -
src/ResolvExpr/AdjustExprType.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sat May 16 23:41:42 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat May 16 23:54:02 201513 // Update Count : 312 // Last Modified On : Wed Mar 2 17:34:53 2016 13 // Update Count : 4 14 14 // 15 15 … … 33 33 virtual Type* mutate( UnionInstType *aggregateUseType ); 34 34 virtual Type* mutate( EnumInstType *aggregateUseType ); 35 virtual Type* mutate( ContextInstType *aggregateUseType );35 virtual Type* mutate( TraitInstType *aggregateUseType ); 36 36 virtual Type* mutate( TypeInstType *aggregateUseType ); 37 37 virtual Type* mutate( TupleType *tupleType ); 38 virtual Type* mutate( VarArgsType *varArgsType ); 38 39 39 40 const TypeEnvironment &env; … … 86 87 } 87 88 88 Type *AdjustExprType::mutate( ContextInstType *aggregateUseType ) {89 Type *AdjustExprType::mutate( TraitInstType *aggregateUseType ) { 89 90 return aggregateUseType; 90 91 } … … 111 112 return tupleType; 112 113 } 114 115 Type *AdjustExprType::mutate( VarArgsType *varArgsType ) { 116 return varArgsType; 117 } 113 118 } // namespace ResolvExpr 114 119 -
src/ResolvExpr/AlternativeFinder.cc
rc5833e8 r0f9e4403 848 848 } 849 849 850 void AlternativeFinder::visit( OffsetPackExpr *offsetPackExpr ) { 851 alternatives.push_back( Alternative( offsetPackExpr->clone(), env, Cost::zero ) ); 852 } 853 850 854 void AlternativeFinder::resolveAttr( DeclarationWithType *funcDecl, FunctionType *function, Type *argType, const TypeEnvironment &env ) { 851 855 // assume no polymorphism -
src/ResolvExpr/AlternativeFinder.h
rc5833e8 r0f9e4403 59 59 virtual void visit( UntypedOffsetofExpr *offsetofExpr ); 60 60 virtual void visit( OffsetofExpr *offsetofExpr ); 61 virtual void visit( OffsetPackExpr *offsetPackExpr ); 61 62 virtual void visit( AttrExpr *attrExpr ); 62 63 virtual void visit( LogicalExpr *logicalExpr ); -
src/ResolvExpr/CommonType.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 06:59:27 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 07:04:50 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 17:35:34 2016 13 // Update Count : 3 14 14 // 15 15 … … 35 35 virtual void visit( UnionInstType *aggregateUseType ); 36 36 virtual void visit( EnumInstType *aggregateUseType ); 37 virtual void visit( ContextInstType *aggregateUseType );37 virtual void visit( TraitInstType *aggregateUseType ); 38 38 virtual void visit( TypeInstType *aggregateUseType ); 39 39 virtual void visit( TupleType *tupleType ); 40 virtual void visit( VarArgsType *varArgsType ); 40 41 41 42 template< typename RefType > void handleRefType( RefType *inst, Type *other ); … … 185 186 } 186 187 187 void CommonType::visit( ContextInstType *aggregateUseType ) {188 void CommonType::visit( TraitInstType *aggregateUseType ) { 188 189 } 189 190 … … 213 214 void CommonType::visit( TupleType *tupleType ) { 214 215 } 216 217 void CommonType::visit( VarArgsType *varArgsType ) { 218 } 215 219 } // namespace ResolvExpr 216 220 -
src/ResolvExpr/ConversionCost.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 07:06:19 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 07:22:19 201513 // Update Count : 412 // Last Modified On : Wed Mar 2 17:35:46 2016 13 // Update Count : 6 14 14 // 15 15 … … 206 206 } 207 207 208 void ConversionCost::visit( ContextInstType *inst) {208 void ConversionCost::visit(TraitInstType *inst) { 209 209 } 210 210 … … 247 247 } // if 248 248 } 249 250 void ConversionCost::visit(VarArgsType *varArgsType) { 251 if ( dynamic_cast< VarArgsType* >( dest ) ) { 252 cost = Cost::zero; 253 } 254 } 249 255 } // namespace ResolvExpr 250 256 -
src/ResolvExpr/ConversionCost.h
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 09:37:28 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 09:39:23 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 17:35:56 2016 13 // Update Count : 3 14 14 // 15 15 … … 37 37 virtual void visit(UnionInstType *aggregateUseType); 38 38 virtual void visit(EnumInstType *aggregateUseType); 39 virtual void visit( ContextInstType *aggregateUseType);39 virtual void visit(TraitInstType *aggregateUseType); 40 40 virtual void visit(TypeInstType *aggregateUseType); 41 41 virtual void visit(TupleType *tupleType); 42 virtual void visit(VarArgsType *varArgsType); 42 43 protected: 43 44 Type *dest; -
src/ResolvExpr/PtrsAssignable.cc
rc5833e8 r0f9e4403 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 11:44:11 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Mon Sep 21 14:34:58 201513 // Update Count : 711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:36:05 2016 13 // Update Count : 8 14 14 // 15 15 … … 35 35 virtual void visit( UnionInstType *inst ); 36 36 virtual void visit( EnumInstType *inst ); 37 virtual void visit( ContextInstType *inst );37 virtual void visit( TraitInstType *inst ); 38 38 virtual void visit( TypeInstType *inst ); 39 39 virtual void visit( TupleType *tupleType ); 40 virtual void visit( VarArgsType *varArgsType ); 40 41 private: 41 42 Type *dest; … … 100 101 } 101 102 102 void PtrsAssignable::visit( ContextInstType *inst ) {103 void PtrsAssignable::visit( TraitInstType *inst ) { 103 104 // I definitely don't think we should be doing anything here 104 105 } … … 137 138 /// } 138 139 } 140 141 void PtrsAssignable::visit( VarArgsType *varArgsType ) { 142 } 139 143 } // namespace ResolvExpr 140 144 -
src/ResolvExpr/PtrsCastable.cc
rc5833e8 r0f9e4403 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 11:48:00 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Mon Oct 05 14:49:12 201513 // Update Count : 711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:36:18 2016 13 // Update Count : 8 14 14 // 15 15 … … 36 36 virtual void visit(UnionInstType *inst); 37 37 virtual void visit(EnumInstType *inst); 38 virtual void visit( ContextInstType *inst);38 virtual void visit(TraitInstType *inst); 39 39 virtual void visit(TypeInstType *inst); 40 40 virtual void visit(TupleType *tupleType); 41 virtual void visit(VarArgsType *varArgsType); 41 42 private: 42 43 Type *dest; … … 115 116 116 117 void PtrsCastable::visit(EnumInstType *inst) { 117 if ( dynamic_cast< EnumInstType* >( inst ) ) {118 if ( dynamic_cast< EnumInstType* >( dest ) ) { 118 119 result = 1; 119 } else if ( BasicType *bt = dynamic_cast< BasicType* >( inst ) ) {120 } else if ( BasicType *bt = dynamic_cast< BasicType* >( dest ) ) { 120 121 if ( bt->get_kind() == BasicType::SignedInt ) { 121 122 result = 0; … … 128 129 } 129 130 130 void PtrsCastable::visit( ContextInstType *inst) {131 void PtrsCastable::visit(TraitInstType *inst) { 131 132 // I definitely don't think we should be doing anything here 132 133 } … … 139 140 result = objectCast( dest, env, indexer ); 140 141 } 142 143 void PtrsCastable::visit(VarArgsType *varArgsType) { 144 result = objectCast( dest, env, indexer ); 145 } 141 146 } // namespace ResolvExpr 142 147 -
src/ResolvExpr/RenameVars.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 12:05:18 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jun 8 14:51:35 201513 // Update Count : 412 // Last Modified On : Wed Mar 2 17:36:32 2016 13 // Update Count : 5 14 14 // 15 15 … … 86 86 } 87 87 88 void RenameVars::visit( ContextInstType *aggregateUseType ) {88 void RenameVars::visit( TraitInstType *aggregateUseType ) { 89 89 typeBefore( aggregateUseType ); 90 90 acceptAll( aggregateUseType->get_parameters(), *this ); … … 111 111 acceptAll( tupleType->get_types(), *this ); 112 112 typeAfter( tupleType ); 113 } 114 115 void RenameVars::visit( VarArgsType *varArgsType ) { 116 typeBefore( varArgsType ); 117 typeAfter( varArgsType ); 113 118 } 114 119 -
src/ResolvExpr/RenameVars.h
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 12:10:28 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 12:11:53 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 17:36:39 2016 13 // Update Count : 3 14 14 // 15 15 … … 40 40 virtual void visit( UnionInstType *aggregateUseType ); 41 41 virtual void visit( EnumInstType *aggregateUseType ); 42 virtual void visit( ContextInstType *aggregateUseType );42 virtual void visit( TraitInstType *aggregateUseType ); 43 43 virtual void visit( TypeInstType *aggregateUseType ); 44 44 virtual void visit( TupleType *tupleType ); 45 virtual void visit( VarArgsType *varArgsType ); 45 46 46 47 void typeBefore( Type *type ); -
src/ResolvExpr/Resolver.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 12:17:01 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue Feb 9 21:57:52201613 // Update Count : 1 7912 // Last Modified On : Thu Mar 24 16:43:11 2016 13 // Update Count : 181 14 14 // 15 15 … … 165 165 Type *new_type = resolveTypeof( objectDecl->get_type(), *this ); 166 166 objectDecl->set_type( new_type ); 167 // To handle initialization of routine pointers, e.g., int (*fp)(int) = foo(), means that class-variable 168 // initContext is changed multiple time because the LHS is analysed twice. The second analysis changes 169 // initContext because of a function type can contain object declarations in the return and parameter types. So 170 // each value of initContext is retained, so the type on the first analysis is preserved and used for selecting 171 // the RHS. 172 Type *temp = initContext; 167 173 initContext = new_type; 168 174 SymTab::Indexer::visit( objectDecl ); 175 initContext = temp; 169 176 } 170 177 -
src/ResolvExpr/Unify.cc
rc5833e8 r0f9e4403 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Unify.cc -- 7 // Unify.cc -- 8 8 // 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 12:27:10 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Sep 02 14:43:22 201513 // Update Count : 3 611 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:37:05 2016 13 // Update Count : 37 14 14 // 15 15 … … 38 38 WidenMode operator&( const WidenMode &other ) { WidenMode newWM( *this ); newWM &= other; return newWM; } 39 39 operator bool() { return widenFirst && widenSecond; } 40 40 41 41 bool widenFirst : 1, widenSecond : 1; 42 42 }; … … 45 45 public: 46 46 Unify( Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer ); 47 47 48 48 bool get_result() const { return result; } 49 49 private: … … 56 56 virtual void visit(UnionInstType *aggregateUseType); 57 57 virtual void visit(EnumInstType *aggregateUseType); 58 virtual void visit( ContextInstType *aggregateUseType);58 virtual void visit(TraitInstType *aggregateUseType); 59 59 virtual void visit(TypeInstType *aggregateUseType); 60 60 virtual void visit(TupleType *tupleType); 61 virtual void visit(VarArgsType *varArgsType); 61 62 62 63 template< typename RefType > void handleRefType( RefType *inst, Type *other ); … … 78 79 bool unifyInexact( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer, Type *&common ); 79 80 bool unifyExact( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer ); 80 81 81 82 bool typesCompatible( Type *first, Type *second, const SymTab::Indexer &indexer, const TypeEnvironment &env ) { 82 83 TypeEnvironment newEnv; … … 136 137 case TypeDecl::Dtype: 137 138 return ! isFtype( type, indexer ); 138 139 139 140 case TypeDecl::Ftype: 140 141 return isFtype( type, indexer ); … … 195 196 bool widen1 = false, widen2 = false; 196 197 Type *type1 = 0, *type2 = 0; 197 198 198 199 if ( env.lookup( var1->get_name(), class1 ) ) { 199 200 hasClass1 = true; … … 216 217 widen2 = widenMode.widenSecond && class2.allowWidening; 217 218 } // if 218 219 219 220 if ( type1 && type2 ) { 220 221 // std::cout << "has type1 && type2" << std::endl; … … 435 436 // to unify, array types must both be VLA or both not VLA 436 437 // and must both have a dimension expression or not have a dimension 437 if ( otherArray && arrayType->get_isVarLen() == otherArray->get_isVarLen() 438 && ((arrayType->get_dimension() != 0 && otherArray->get_dimension() != 0) 439 || (arrayType->get_dimension() == 0 && otherArray->get_dimension() == 0))) { 438 if ( otherArray && arrayType->get_isVarLen() == otherArray->get_isVarLen() ) { 440 439 441 440 // not positive this is correct in all cases, but it's needed for typedefs … … 448 447 ConstantExpr * ce1 = dynamic_cast< ConstantExpr * >( arrayType->get_dimension() ); 449 448 ConstantExpr * ce2 = dynamic_cast< ConstantExpr * >( otherArray->get_dimension() ); 450 assert(ce1 && ce2); 451 452 Constant * c1 = ce1->get_constant(); 453 Constant * c2 = ce2->get_constant(); 454 455 if ( c1->get_value() != c2->get_value() ) { 456 // does not unify if the dimension is different 457 return; 449 // see C11 Reference Manual 6.7.6.2.6 450 // two array types with size specifiers that are integer constant expressions are 451 // compatible if both size specifiers have the same constant value 452 if ( ce1 && ce2 ) { 453 Constant * c1 = ce1->get_constant(); 454 Constant * c2 = ce2->get_constant(); 455 456 if ( c1->get_value() != c2->get_value() ) { 457 // does not unify if the dimension is different 458 return; 459 } 458 460 } 459 461 } … … 484 486 485 487 if ( unifyDeclList( functionType->get_parameters().begin(), functionType->get_parameters().end(), otherFunction->get_parameters().begin(), otherFunction->get_parameters().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) { 486 488 487 489 if ( unifyDeclList( functionType->get_returnVals().begin(), functionType->get_returnVals().end(), otherFunction->get_returnVals().begin(), otherFunction->get_returnVals().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) { 488 490 … … 539 541 } 540 542 541 void Unify::visit( ContextInstType *contextInst) {543 void Unify::visit(TraitInstType *contextInst) { 542 544 handleRefType( contextInst, type2 ); 543 545 } … … 582 584 } 583 585 586 void Unify::visit(VarArgsType *varArgsType) { 587 result = dynamic_cast< VarArgsType* >( type2 ); 588 } 589 584 590 } // namespace ResolvExpr 585 591 -
src/SymTab/AddVisit.h
rc5833e8 r0f9e4403 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 16:14:32 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : T ue Jul 14 12:26:17 201513 // Update Count : 411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Apr 7 14:42:21 2016 13 // Update Count : 5 14 14 // 15 15 … … 27 27 28 28 template< typename Visitor > 29 inline void addVisitStatement( Statement *stmt, Visitor &visitor ) {30 maybeAccept( stmt, visitor );31 /// if ( ! declsToAdd.empty() ) {32 /// CompoundStmt *compound = new CompoundStmt( noLabels );33 /// compound->get_kids().push_back( stmt );34 /// addDecls( declsToAdd, compound->get_kids(), compound->get_kids().end() );35 /// }36 }37 38 template< typename Visitor >39 29 inline void addVisit(CompoundStmt *compoundStmt, Visitor &visitor) { 40 30 addVisitStatementList( compoundStmt->get_kids(), visitor ); 41 }42 43 template< typename Visitor >44 inline void addVisit(IfStmt *ifStmt, Visitor &visitor) {45 addVisitStatement( ifStmt->get_thenPart(), visitor );46 addVisitStatement( ifStmt->get_elsePart(), visitor );47 maybeAccept( ifStmt->get_condition(), visitor );48 }49 50 template< typename Visitor >51 inline void addVisit(WhileStmt *whileStmt, Visitor &visitor) {52 addVisitStatement( whileStmt->get_body(), visitor );53 maybeAccept( whileStmt->get_condition(), visitor );54 }55 56 template< typename Visitor >57 inline void addVisit(ForStmt *forStmt, Visitor &visitor) {58 addVisitStatement( forStmt->get_body(), visitor );59 acceptAll( forStmt->get_initialization(), visitor );60 maybeAccept( forStmt->get_condition(), visitor );61 maybeAccept( forStmt->get_increment(), visitor );62 31 } 63 32 … … 74 43 } 75 44 76 template< typename Visitor > 77 inline void addVisit(CaseStmt *caseStmt, Visitor &visitor) { 78 addVisitStatementList( caseStmt->get_statements(), visitor ); 79 maybeAccept( caseStmt->get_condition(), visitor ); 80 } 81 82 template< typename Visitor > 83 inline void addVisit(CatchStmt *cathStmt, Visitor &visitor) { 84 addVisitStatement( cathStmt->get_body(), visitor ); 85 maybeAccept( cathStmt->get_decl(), visitor ); 86 } 45 // template< typename Visitor > 46 // inline void addVisit(CaseStmt *caseStmt, Visitor &visitor) { 47 // addVisitStatementList( caseStmt->get_statements(), visitor ); 48 // maybeAccept( caseStmt->get_condition(), visitor ); 49 // } 87 50 } // namespace SymTab 88 51 -
src/SymTab/FixFunction.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 16:19:49 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 16:22:54 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 17:31:10 2016 13 // Update Count : 3 14 14 // 15 15 … … 61 61 } 62 62 63 Type * FixFunction::mutate( ContextInstType *aggregateUseType) {63 Type * FixFunction::mutate(TraitInstType *aggregateUseType) { 64 64 return aggregateUseType; 65 65 } … … 72 72 return tupleType; 73 73 } 74 75 Type * FixFunction::mutate(VarArgsType *varArgsType) { 76 return varArgsType; 77 } 74 78 } // namespace SymTab 75 79 -
src/SymTab/FixFunction.h
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 17:02:08 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 17:03:43 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 17:34:06 2016 13 // Update Count : 3 14 14 // 15 15 … … 38 38 virtual Type* mutate(UnionInstType *aggregateUseType); 39 39 virtual Type* mutate(EnumInstType *aggregateUseType); 40 virtual Type* mutate( ContextInstType *aggregateUseType);40 virtual Type* mutate(TraitInstType *aggregateUseType); 41 41 virtual Type* mutate(TypeInstType *aggregateUseType); 42 42 virtual Type* mutate(TupleType *tupleType); 43 virtual Type* mutate(VarArgsType *varArgsType); 43 44 44 45 bool isVoid; -
src/SymTab/ImplementationType.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 21:32:01 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun May 17 21:34:40 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 17:31:20 2016 13 // Update Count : 3 14 14 // 15 15 … … 37 37 virtual void visit(UnionInstType *aggregateUseType); 38 38 virtual void visit(EnumInstType *aggregateUseType); 39 virtual void visit( ContextInstType *aggregateUseType);39 virtual void visit(TraitInstType *aggregateUseType); 40 40 virtual void visit(TypeInstType *aggregateUseType); 41 41 virtual void visit(TupleType *tupleType); 42 virtual void visit(VarArgsType *varArgsType); 42 43 43 44 Type *result; // synthesized … … 95 96 } 96 97 97 void ImplementationType::visit( ContextInstType *aggregateUseType) {98 void ImplementationType::visit(TraitInstType *aggregateUseType) { 98 99 } 99 100 … … 116 117 result = newType; 117 118 } 119 120 void ImplementationType::visit(VarArgsType *varArgsType) { 121 } 118 122 } // namespace SymTab 119 123 -
src/SymTab/Indexer.cc
rc5833e8 r0f9e4403 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:37:33 2015 11 // Last Modified By : Rob Schluntz 12 // Last Modified On : Wed Aug 05 13:52:42 2015 13 // Update Count : 10 14 // 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:31:29 2016 13 // Update Count : 11 14 // 15 16 #include "Indexer.h" 17 18 #include <string> 19 #include <typeinfo> 20 #include <unordered_map> 21 #include <unordered_set> 22 #include <utility> 23 24 #include "Mangler.h" 25 26 #include "Common/utility.h" 27 28 #include "ResolvExpr/typeops.h" 15 29 16 30 #include "SynTree/Declaration.h" … … 19 33 #include "SynTree/Initializer.h" 20 34 #include "SynTree/Statement.h" 21 #include "Indexer.h"22 #include <typeinfo>23 #include "Common/utility.h"24 35 25 36 #define debugPrint(x) if ( doDebug ) { std::cout << x; } … … 33 44 } 34 45 35 Indexer::Indexer( bool useDebug ) : doDebug( useDebug ) {} 36 37 Indexer::~Indexer() {} 46 typedef std::unordered_map< std::string, DeclarationWithType* > MangleTable; 47 typedef std::unordered_map< std::string, MangleTable > IdTable; 48 typedef std::unordered_map< std::string, NamedTypeDecl* > TypeTable; 49 typedef std::unordered_map< std::string, StructDecl* > StructTable; 50 typedef std::unordered_map< std::string, EnumDecl* > EnumTable; 51 typedef std::unordered_map< std::string, UnionDecl* > UnionTable; 52 typedef std::unordered_map< std::string, TraitDecl* > TraitTable; 53 54 void dump( const IdTable &table, std::ostream &os ) { 55 for ( IdTable::const_iterator id = table.begin(); id != table.end(); ++id ) { 56 for ( MangleTable::const_iterator mangle = id->second.begin(); mangle != id->second.end(); ++mangle ) { 57 os << mangle->second << std::endl; 58 } 59 } 60 } 61 62 template< typename Decl > 63 void dump( const std::unordered_map< std::string, Decl* > &table, std::ostream &os ) { 64 for ( typename std::unordered_map< std::string, Decl* >::const_iterator it = table.begin(); it != table.end(); ++it ) { 65 os << it->second << std::endl; 66 } // for 67 } 68 69 struct Indexer::Impl { 70 Impl( unsigned long _scope ) : refCount(1), scope( _scope ), size( 0 ), base(), 71 idTable(), typeTable(), structTable(), enumTable(), unionTable(), traitTable() {} 72 Impl( unsigned long _scope, Indexer &&_base ) : refCount(1), scope( _scope ), size( 0 ), base( _base ), 73 idTable(), typeTable(), structTable(), enumTable(), unionTable(), traitTable() {} 74 unsigned long refCount; ///< Number of references to these tables 75 unsigned long scope; ///< Scope these tables are associated with 76 unsigned long size; ///< Number of elements stored in this table 77 const Indexer base; ///< Base indexer this extends 78 79 IdTable idTable; ///< Identifier namespace 80 TypeTable typeTable; ///< Type namespace 81 StructTable structTable; ///< Struct namespace 82 EnumTable enumTable; ///< Enum namespace 83 UnionTable unionTable; ///< Union namespace 84 TraitTable traitTable; ///< Trait namespace 85 }; 86 87 Indexer::Impl *Indexer::newRef( Indexer::Impl *toClone ) { 88 if ( ! toClone ) return 0; 89 90 // shorten the search chain by skipping empty links 91 Indexer::Impl *ret = toClone->size == 0 ? toClone->base.tables : toClone; 92 if ( ret ) { ++ret->refCount; } 93 94 return ret; 95 } 96 97 void Indexer::deleteRef( Indexer::Impl *toFree ) { 98 if ( ! toFree ) return; 99 100 if ( --toFree->refCount == 0 ) delete toFree; 101 } 102 103 void Indexer::makeWritable() { 104 if ( ! tables ) { 105 // create indexer if not yet set 106 tables = new Indexer::Impl( scope ); 107 } else if ( tables->refCount > 1 || tables->scope != scope ) { 108 // make this indexer the base of a fresh indexer at the current scope 109 tables = new Indexer::Impl( scope, std::move( *this ) ); 110 } 111 } 112 113 Indexer::Indexer( bool _doDebug ) : tables( 0 ), scope( 0 ), doDebug( _doDebug ) {} 114 115 Indexer::Indexer( const Indexer &that ) : tables( newRef( that.tables ) ), scope( that.scope ), doDebug( that.doDebug ) {} 116 117 Indexer::Indexer( Indexer &&that ) : tables( that.tables ), scope( that.scope ), doDebug( that.doDebug ) { 118 that.tables = 0; 119 } 120 121 Indexer::~Indexer() { 122 deleteRef( tables ); 123 } 124 125 Indexer& Indexer::operator= ( const Indexer &that ) { 126 deleteRef( tables ); 127 128 tables = newRef( that.tables ); 129 scope = that.scope; 130 doDebug = that.doDebug; 131 132 return *this; 133 } 134 135 Indexer& Indexer::operator= ( Indexer &&that ) { 136 deleteRef( tables ); 137 138 tables = that.tables; 139 scope = that.scope; 140 doDebug = that.doDebug; 141 142 that.tables = 0; 143 144 return *this; 145 } 38 146 39 147 void Indexer::visit( ObjectDecl *objectDecl ) { … … 45 153 if ( objectDecl->get_name() != "" ) { 46 154 debugPrint( "Adding object " << objectDecl->get_name() << std::endl ); 47 idTable.addDecl( objectDecl );155 addId( objectDecl ); 48 156 } // if 49 157 } … … 52 160 if ( functionDecl->get_name() == "" ) return; 53 161 debugPrint( "Adding function " << functionDecl->get_name() << std::endl ); 54 idTable.addDecl( functionDecl );162 addId( functionDecl ); 55 163 enterScope(); 56 164 maybeAccept( functionDecl->get_functionType(), *this ); … … 90 198 leaveScope(); 91 199 debugPrint( "Adding type " << typeDecl->get_name() << std::endl ); 92 typeTable.add( typeDecl );200 addType( typeDecl ); 93 201 acceptAll( typeDecl->get_assertions(), *this ); 94 202 } … … 100 208 leaveScope(); 101 209 debugPrint( "Adding typedef " << typeDecl->get_name() << std::endl ); 102 typeTable.add( typeDecl );210 addType( typeDecl ); 103 211 } 104 212 … … 108 216 cloneAll( aggregateDecl->get_parameters(), fwdDecl.get_parameters() ); 109 217 debugPrint( "Adding fwd decl for struct " << fwdDecl.get_name() << std::endl ); 110 structTable.add( &fwdDecl );218 addStruct( &fwdDecl ); 111 219 112 220 enterScope(); … … 117 225 debugPrint( "Adding struct " << aggregateDecl->get_name() << std::endl ); 118 226 // this addition replaces the forward declaration 119 structTable.add( aggregateDecl );227 addStruct( aggregateDecl ); 120 228 } 121 229 … … 125 233 cloneAll( aggregateDecl->get_parameters(), fwdDecl.get_parameters() ); 126 234 debugPrint( "Adding fwd decl for union " << fwdDecl.get_name() << std::endl ); 127 unionTable.add( &fwdDecl );235 addUnion( &fwdDecl ); 128 236 129 237 enterScope(); … … 133 241 134 242 debugPrint( "Adding union " << aggregateDecl->get_name() << std::endl ); 135 unionTable.add( aggregateDecl );243 addUnion( aggregateDecl ); 136 244 } 137 245 138 246 void Indexer::visit( EnumDecl *aggregateDecl ) { 139 247 debugPrint( "Adding enum " << aggregateDecl->get_name() << std::endl ); 140 enumTable.add( aggregateDecl );248 addEnum( aggregateDecl ); 141 249 // unlike structs, contexts, and unions, enums inject their members into the global scope 142 250 acceptAll( aggregateDecl->get_members(), *this ); 143 251 } 144 252 145 void Indexer::visit( ContextDecl *aggregateDecl ) {253 void Indexer::visit( TraitDecl *aggregateDecl ) { 146 254 enterScope(); 147 255 acceptAll( aggregateDecl->get_parameters(), *this ); … … 150 258 151 259 debugPrint( "Adding context " << aggregateDecl->get_name() << std::endl ); 152 contextTable.add( aggregateDecl );260 addTrait( aggregateDecl ); 153 261 } 154 262 … … 236 344 maybeAccept( offsetofExpr->get_type(), *this ); 237 345 maybeAccept( offsetofExpr->get_member(), *this ); 346 } 347 348 void Indexer::visit( OffsetPackExpr *offsetPackExpr ) { 349 acceptAllNewScope( offsetPackExpr->get_results(), *this ); 350 maybeAccept( offsetPackExpr->get_type(), *this ); 238 351 } 239 352 … … 293 406 294 407 295 void Indexer::visit( ContextInstType *contextInst ) {408 void Indexer::visit( TraitInstType *contextInst ) { 296 409 acceptAll( contextInst->get_parameters(), *this ); 297 410 acceptAll( contextInst->get_members(), *this ); … … 299 412 300 413 void Indexer::visit( StructInstType *structInst ) { 301 if ( ! structTable.lookup( structInst->get_name() ) ) {414 if ( ! lookupStruct( structInst->get_name() ) ) { 302 415 debugPrint( "Adding struct " << structInst->get_name() << " from implicit forward declaration" << std::endl ); 303 structTable.add( structInst->get_name() );416 addStruct( structInst->get_name() ); 304 417 } 305 418 enterScope(); … … 309 422 310 423 void Indexer::visit( UnionInstType *unionInst ) { 311 if ( ! unionTable.lookup( unionInst->get_name() ) ) {424 if ( ! lookupUnion( unionInst->get_name() ) ) { 312 425 debugPrint( "Adding union " << unionInst->get_name() << " from implicit forward declaration" << std::endl ); 313 unionTable.add( unionInst->get_name() );426 addUnion( unionInst->get_name() ); 314 427 } 315 428 enterScope(); … … 325 438 } 326 439 327 328 void Indexer::lookupId( const std::string &id, std::list< DeclarationWithType* > &list ) const { 329 idTable.lookupId( id, list ); 330 } 331 332 DeclarationWithType* Indexer::lookupId( const std::string &id) const { 333 return idTable.lookupId(id); 440 441 442 void Indexer::lookupId( const std::string &id, std::list< DeclarationWithType* > &out ) const { 443 std::unordered_set< std::string > foundMangleNames; 444 445 Indexer::Impl *searchTables = tables; 446 while ( searchTables ) { 447 448 IdTable::const_iterator decls = searchTables->idTable.find( id ); 449 if ( decls != searchTables->idTable.end() ) { 450 const MangleTable &mangleTable = decls->second; 451 for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) { 452 // mark the mangled name as found, skipping this insertion if a declaration for that name has already been found 453 if ( foundMangleNames.insert( decl->first ).second == false ) continue; 454 455 out.push_back( decl->second ); 456 } 457 } 458 459 // get declarations from base indexers 460 searchTables = searchTables->base.tables; 461 } 334 462 } 335 463 336 464 NamedTypeDecl *Indexer::lookupType( const std::string &id ) const { 337 return typeTable.lookup( id ); 465 if ( ! tables ) return 0; 466 467 TypeTable::const_iterator ret = tables->typeTable.find( id ); 468 return ret != tables->typeTable.end() ? ret->second : tables->base.lookupType( id ); 338 469 } 339 470 340 471 StructDecl *Indexer::lookupStruct( const std::string &id ) const { 341 return structTable.lookup( id ); 472 if ( ! tables ) return 0; 473 474 StructTable::const_iterator ret = tables->structTable.find( id ); 475 return ret != tables->structTable.end() ? ret->second : tables->base.lookupStruct( id ); 342 476 } 343 477 344 478 EnumDecl *Indexer::lookupEnum( const std::string &id ) const { 345 return enumTable.lookup( id ); 479 if ( ! tables ) return 0; 480 481 EnumTable::const_iterator ret = tables->enumTable.find( id ); 482 return ret != tables->enumTable.end() ? ret->second : tables->base.lookupEnum( id ); 346 483 } 347 484 348 485 UnionDecl *Indexer::lookupUnion( const std::string &id ) const { 349 return unionTable.lookup( id ); 350 } 351 352 ContextDecl * Indexer::lookupContext( const std::string &id ) const { 353 return contextTable.lookup( id ); 486 if ( ! tables ) return 0; 487 488 UnionTable::const_iterator ret = tables->unionTable.find( id ); 489 return ret != tables->unionTable.end() ? ret->second : tables->base.lookupUnion( id ); 490 } 491 492 TraitDecl *Indexer::lookupTrait( const std::string &id ) const { 493 if ( ! tables ) return 0; 494 495 TraitTable::const_iterator ret = tables->traitTable.find( id ); 496 return ret != tables->traitTable.end() ? ret->second : tables->base.lookupTrait( id ); 497 } 498 499 DeclarationWithType *Indexer::lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ) const { 500 if ( ! tables ) return 0; 501 if ( tables->scope < scope ) return 0; 502 503 IdTable::const_iterator decls = tables->idTable.find( id ); 504 if ( decls != tables->idTable.end() ) { 505 const MangleTable &mangleTable = decls->second; 506 MangleTable::const_iterator decl = mangleTable.find( mangleName ); 507 if ( decl != mangleTable.end() ) return decl->second; 508 } 509 510 return tables->base.lookupIdAtScope( id, mangleName, scope ); 511 } 512 513 bool Indexer::hasIncompatibleCDecl( const std::string &id, const std::string &mangleName ) const { 514 if ( ! tables ) return false; 515 516 IdTable::const_iterator decls = tables->idTable.find( id ); 517 if ( decls != tables->idTable.end() ) { 518 const MangleTable &mangleTable = decls->second; 519 for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) { 520 // check for C decls with the same name, skipping 521 // those with a compatible type (by mangleName) 522 if ( decl->second->get_linkage() == LinkageSpec::C && decl->first != mangleName ) return true; 523 } 524 } 525 526 return tables->base.hasIncompatibleCDecl( id, mangleName ); 527 } 528 529 NamedTypeDecl *Indexer::lookupTypeAtScope( const std::string &id, unsigned long scope ) const { 530 if ( ! tables ) return 0; 531 if ( tables->scope < scope ) return 0; 532 533 TypeTable::const_iterator ret = tables->typeTable.find( id ); 534 return ret != tables->typeTable.end() ? ret->second : tables->base.lookupTypeAtScope( id, scope ); 535 } 536 537 StructDecl *Indexer::lookupStructAtScope( const std::string &id, unsigned long scope ) const { 538 if ( ! tables ) return 0; 539 if ( tables->scope < scope ) return 0; 540 541 StructTable::const_iterator ret = tables->structTable.find( id ); 542 return ret != tables->structTable.end() ? ret->second : tables->base.lookupStructAtScope( id, scope ); 543 } 544 545 EnumDecl *Indexer::lookupEnumAtScope( const std::string &id, unsigned long scope ) const { 546 if ( ! tables ) return 0; 547 if ( tables->scope < scope ) return 0; 548 549 EnumTable::const_iterator ret = tables->enumTable.find( id ); 550 return ret != tables->enumTable.end() ? ret->second : tables->base.lookupEnumAtScope( id, scope ); 551 } 552 553 UnionDecl *Indexer::lookupUnionAtScope( const std::string &id, unsigned long scope ) const { 554 if ( ! tables ) return 0; 555 if ( tables->scope < scope ) return 0; 556 557 UnionTable::const_iterator ret = tables->unionTable.find( id ); 558 return ret != tables->unionTable.end() ? ret->second : tables->base.lookupUnionAtScope( id, scope ); 559 } 560 561 TraitDecl *Indexer::lookupTraitAtScope( const std::string &id, unsigned long scope ) const { 562 if ( ! tables ) return 0; 563 if ( tables->scope < scope ) return 0; 564 565 TraitTable::const_iterator ret = tables->traitTable.find( id ); 566 return ret != tables->traitTable.end() ? ret->second : tables->base.lookupTraitAtScope( id, scope ); 567 } 568 569 bool addedIdConflicts( DeclarationWithType *existing, DeclarationWithType *added ) { 570 // if we're giving the same name mangling to things of different types then there is something wrong 571 assert( (dynamic_cast<ObjectDecl*>( added ) && dynamic_cast<ObjectDecl*>( existing ) ) 572 || (dynamic_cast<FunctionDecl*>( added ) && dynamic_cast<FunctionDecl*>( existing ) ) ); 573 574 if ( LinkageSpec::isOverridable( existing->get_linkage() ) ) { 575 // new definition shadows the autogenerated one, even at the same scope 576 return false; 577 } else if ( added->get_linkage() != LinkageSpec::C || ResolvExpr::typesCompatible( added->get_type(), existing->get_type(), Indexer() ) ) { 578 // typesCompatible doesn't really do the right thing here. When checking compatibility of function types, 579 // we should ignore outermost pointer qualifiers, except _Atomic? 580 FunctionDecl *newentry = dynamic_cast< FunctionDecl* >( added ); 581 FunctionDecl *oldentry = dynamic_cast< FunctionDecl* >( existing ); 582 if ( newentry && oldentry ) { 583 if ( newentry->get_statements() && oldentry->get_statements() ) { 584 throw SemanticError( "duplicate function definition for ", added ); 585 } // if 586 } else { 587 // two objects with the same mangled name defined in the same scope. 588 // both objects must be marked extern or both must be intrinsic for this to be okay 589 // xxx - perhaps it's actually if either is intrinsic then this is okay? 590 // might also need to be same storage class? 591 ObjectDecl *newobj = dynamic_cast< ObjectDecl* >( added ); 592 ObjectDecl *oldobj = dynamic_cast< ObjectDecl* >( existing ); 593 if ( newobj->get_storageClass() != DeclarationNode::Extern && oldobj->get_storageClass() != DeclarationNode::Extern ) { 594 throw SemanticError( "duplicate object definition for ", added ); 595 } // if 596 } // if 597 } else { 598 throw SemanticError( "duplicate definition for ", added ); 599 } // if 600 601 return true; 602 } 603 604 void Indexer::addId( DeclarationWithType *decl ) { 605 makeWritable(); 606 607 const std::string &name = decl->get_name(); 608 std::string mangleName; 609 if ( LinkageSpec::isOverridable( decl->get_linkage() ) ) { 610 // mangle the name without including the appropriate suffix, so overridable routines are placed into the 611 // same "bucket" as their user defined versions. 612 mangleName = Mangler::mangle( decl, false ); 613 } else { 614 mangleName = Mangler::mangle( decl ); 615 } // if 616 617 DeclarationWithType *existing = lookupIdAtScope( name, mangleName, scope ); 618 if ( ! existing || ! addedIdConflicts( existing, decl ) ) { 619 // this ensures that no two declarations with the same unmangled name both have C linkage 620 if ( decl->get_linkage() == LinkageSpec::C && hasIncompatibleCDecl( name, mangleName ) ) { 621 throw SemanticError( "invalid overload of C function ", decl ); 622 } // NOTE this is broken in Richard's original code in such a way that it never triggers (it 623 // doesn't check decls that have the same manglename, and all C-linkage decls are defined to 624 // have their name as their manglename, hence the error can never trigger). 625 // The code here is closer to correct, but name mangling would have to be completely 626 // isomorphic to C type-compatibility, which it may not be. 627 628 tables->idTable[ name ][ mangleName ] = decl; 629 ++tables->size; 630 } 631 } 632 633 bool addedTypeConflicts( NamedTypeDecl *existing, NamedTypeDecl *added ) { 634 if ( existing->get_base() == 0 ) { 635 return false; 636 } else if ( added->get_base() == 0 ) { 637 return true; 638 } else { 639 throw SemanticError( "redeclaration of ", added ); 640 } 641 } 642 643 void Indexer::addType( NamedTypeDecl *decl ) { 644 makeWritable(); 645 646 const std::string &id = decl->get_name(); 647 TypeTable::iterator existing = tables->typeTable.find( id ); 648 if ( existing == tables->typeTable.end() ) { 649 NamedTypeDecl *parent = tables->base.lookupTypeAtScope( id, scope ); 650 if ( ! parent || ! addedTypeConflicts( parent, decl ) ) { 651 tables->typeTable.insert( existing, std::make_pair( id, decl ) ); 652 ++tables->size; 653 } 654 } else { 655 if ( ! addedTypeConflicts( existing->second, decl ) ) { 656 existing->second = decl; 657 } 658 } 659 } 660 661 bool addedDeclConflicts( AggregateDecl *existing, AggregateDecl *added ) { 662 if ( existing->get_members().empty() ) { 663 return false; 664 } else if ( ! added->get_members().empty() ) { 665 throw SemanticError( "redeclaration of ", added ); 666 } // if 667 return true; 668 } 669 670 void Indexer::addStruct( const std::string &id ) { 671 addStruct( new StructDecl( id ) ); 672 } 673 674 void Indexer::addStruct( StructDecl *decl ) { 675 makeWritable(); 676 677 const std::string &id = decl->get_name(); 678 StructTable::iterator existing = tables->structTable.find( id ); 679 if ( existing == tables->structTable.end() ) { 680 StructDecl *parent = tables->base.lookupStructAtScope( id, scope ); 681 if ( ! parent || ! addedDeclConflicts( parent, decl ) ) { 682 tables->structTable.insert( existing, std::make_pair( id, decl ) ); 683 ++tables->size; 684 } 685 } else { 686 if ( ! addedDeclConflicts( existing->second, decl ) ) { 687 existing->second = decl; 688 } 689 } 690 } 691 692 void Indexer::addEnum( EnumDecl *decl ) { 693 makeWritable(); 694 695 const std::string &id = decl->get_name(); 696 EnumTable::iterator existing = tables->enumTable.find( id ); 697 if ( existing == tables->enumTable.end() ) { 698 EnumDecl *parent = tables->base.lookupEnumAtScope( id, scope ); 699 if ( ! parent || ! addedDeclConflicts( parent, decl ) ) { 700 tables->enumTable.insert( existing, std::make_pair( id, decl ) ); 701 ++tables->size; 702 } 703 } else { 704 if ( ! addedDeclConflicts( existing->second, decl ) ) { 705 existing->second = decl; 706 } 707 } 708 } 709 710 void Indexer::addUnion( const std::string &id ) { 711 addUnion( new UnionDecl( id ) ); 712 } 713 714 void Indexer::addUnion( UnionDecl *decl ) { 715 makeWritable(); 716 717 const std::string &id = decl->get_name(); 718 UnionTable::iterator existing = tables->unionTable.find( id ); 719 if ( existing == tables->unionTable.end() ) { 720 UnionDecl *parent = tables->base.lookupUnionAtScope( id, scope ); 721 if ( ! parent || ! addedDeclConflicts( parent, decl ) ) { 722 tables->unionTable.insert( existing, std::make_pair( id, decl ) ); 723 ++tables->size; 724 } 725 } else { 726 if ( ! addedDeclConflicts( existing->second, decl ) ) { 727 existing->second = decl; 728 } 729 } 730 } 731 732 void Indexer::addTrait( TraitDecl *decl ) { 733 makeWritable(); 734 735 const std::string &id = decl->get_name(); 736 TraitTable::iterator existing = tables->traitTable.find( id ); 737 if ( existing == tables->traitTable.end() ) { 738 TraitDecl *parent = tables->base.lookupTraitAtScope( id, scope ); 739 if ( ! parent || ! addedDeclConflicts( parent, decl ) ) { 740 tables->traitTable.insert( existing, std::make_pair( id, decl ) ); 741 ++tables->size; 742 } 743 } else { 744 if ( ! addedDeclConflicts( existing->second, decl ) ) { 745 existing->second = decl; 746 } 747 } 354 748 } 355 749 356 750 void Indexer::enterScope() { 751 ++scope; 752 357 753 if ( doDebug ) { 358 std::cout << "--- Entering scope" << std::endl; 359 } 360 idTable.enterScope(); 361 typeTable.enterScope(); 362 structTable.enterScope(); 363 enumTable.enterScope(); 364 unionTable.enterScope(); 365 contextTable.enterScope(); 754 std::cout << "--- Entering scope " << scope << std::endl; 755 } 366 756 } 367 757 368 758 void Indexer::leaveScope() { 369 759 using std::cout; 370 using std::endl; 371 372 if ( doDebug ) { 373 cout << "--- Leaving scope containing" << endl; 374 idTable.dump( cout ); 375 typeTable.dump( cout ); 376 structTable.dump( cout ); 377 enumTable.dump( cout ); 378 unionTable.dump( cout ); 379 contextTable.dump( cout ); 380 } 381 idTable.leaveScope(); 382 typeTable.leaveScope(); 383 structTable.leaveScope(); 384 enumTable.leaveScope(); 385 unionTable.leaveScope(); 386 contextTable.leaveScope(); 760 761 assert( scope > 0 && "cannot leave initial scope" ); 762 --scope; 763 764 while ( tables && tables->scope > scope ) { 765 if ( doDebug ) { 766 cout << "--- Leaving scope " << tables->scope << " containing" << std::endl; 767 dump( tables->idTable, cout ); 768 dump( tables->typeTable, cout ); 769 dump( tables->structTable, cout ); 770 dump( tables->enumTable, cout ); 771 dump( tables->unionTable, cout ); 772 dump( tables->traitTable, cout ); 773 } 774 775 // swap tables for base table until we find one at an appropriate scope 776 Indexer::Impl *base = newRef( tables->base.tables ); 777 deleteRef( tables ); 778 tables = base; 779 } 387 780 } 388 781 389 782 void Indexer::print( std::ostream &os, int indent ) const { 390 783 using std::cerr; 391 using std::endl; 392 393 cerr << "===idTable===" << endl; 394 idTable.dump( os ); 395 cerr << "===typeTable===" << endl; 396 typeTable.dump( os ); 397 cerr << "===structTable===" << endl; 398 structTable.dump( os ); 399 cerr << "===enumTable===" << endl; 400 enumTable.dump( os ); 401 cerr << "===unionTable===" << endl; 402 unionTable.dump( os ); 403 cerr << "===contextTable===" << endl; 404 contextTable.dump( os ); 405 #if 0 406 idTable.dump( os ); 407 typeTable.dump( os ); 408 structTable.dump( os ); 409 enumTable.dump( os ); 410 unionTable.dump( os ); 411 contextTable.dump( os ); 412 #endif 784 785 cerr << "===idTable===" << std::endl; 786 if ( tables ) dump( tables->idTable, os ); 787 cerr << "===typeTable===" << std::endl; 788 if ( tables ) dump( tables->typeTable, os ); 789 cerr << "===structTable===" << std::endl; 790 if ( tables ) dump( tables->structTable, os ); 791 cerr << "===enumTable===" << std::endl; 792 if ( tables ) dump( tables->enumTable, os ); 793 cerr << "===unionTable===" << std::endl; 794 if ( tables ) dump( tables->unionTable, os ); 795 cerr << "===contextTable===" << std::endl; 796 if ( tables ) dump( tables->traitTable, os ); 413 797 } 414 798 } // namespace SymTab -
src/SymTab/Indexer.h
rc5833e8 r0f9e4403 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 21:38:55 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Thu Sep 17 16:05:38 201513 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:34:14 2016 13 // Update Count : 6 14 14 // 15 15 … … 21 21 22 22 #include "SynTree/Visitor.h" 23 #include "IdTable.h"24 #include "AggregateTable.h"25 #include "TypeTable.h"26 23 27 24 namespace SymTab { … … 29 26 public: 30 27 Indexer( bool useDebug = false ); 28 29 Indexer( const Indexer &that ); 30 Indexer( Indexer &&that ); 31 31 virtual ~Indexer(); 32 Indexer& operator= ( const Indexer &that ); 33 Indexer& operator= ( Indexer &&that ); 32 34 33 35 //using Visitor::visit; … … 39 41 virtual void visit( UnionDecl *aggregateDecl ); 40 42 virtual void visit( EnumDecl *aggregateDecl ); 41 virtual void visit( ContextDecl *aggregateDecl );43 virtual void visit( TraitDecl *aggregateDecl ); 42 44 43 45 virtual void visit( CompoundStmt *compoundStmt ); … … 57 59 virtual void visit( UntypedOffsetofExpr *offsetofExpr ); 58 60 virtual void visit( OffsetofExpr *offsetofExpr ); 61 virtual void visit( OffsetPackExpr *offsetPackExpr ); 59 62 virtual void visit( AttrExpr *attrExpr ); 60 63 virtual void visit( LogicalExpr *logicalExpr ); … … 67 70 virtual void visit( UntypedValofExpr *valofExpr ); 68 71 69 virtual void visit( ContextInstType *contextInst );72 virtual void visit( TraitInstType *contextInst ); 70 73 virtual void visit( StructInstType *contextInst ); 71 74 virtual void visit( UnionInstType *contextInst ); … … 78 81 void leaveScope(); 79 82 80 void lookupId( const std::string &id, std::list< DeclarationWithType* >& ) const; 81 DeclarationWithType* lookupId( const std::string &id) const; 83 /// Gets all declarations with the given ID 84 void lookupId( const std::string &id, std::list< DeclarationWithType* > &out ) const; 85 /// Gets the top-most type declaration with the given ID 82 86 NamedTypeDecl *lookupType( const std::string &id ) const; 87 /// Gets the top-most struct declaration with the given ID 83 88 StructDecl *lookupStruct( const std::string &id ) const; 89 /// Gets the top-most enum declaration with the given ID 84 90 EnumDecl *lookupEnum( const std::string &id ) const; 91 /// Gets the top-most union declaration with the given ID 85 92 UnionDecl *lookupUnion( const std::string &id ) const; 86 ContextDecl *lookupContext( const std::string &id ) const; 93 /// Gets the top-most trait declaration with the given ID 94 TraitDecl *lookupTrait( const std::string &id ) const; 87 95 88 96 void print( std::ostream &os, int indent = 0 ) const; 89 97 private: 90 IdTable idTable; 91 TypeTable typeTable; 92 StructTable structTable; 93 EnumTable enumTable; 94 UnionTable unionTable; 95 ContextTable contextTable; 96 97 bool doDebug; // display debugging trace 98 /// looks up a specific mangled ID at the given scope 99 DeclarationWithType *lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ) const; 100 /// returns true if there exists a declaration with C linkage and the given name with a different mangled name 101 bool hasIncompatibleCDecl( const std::string &id, const std::string &mangleName ) const; 102 // equivalents to lookup functions that only look at tables at scope `scope` (which should be >= tables->scope) 103 NamedTypeDecl *lookupTypeAtScope( const std::string &id, unsigned long scope ) const; 104 StructDecl *lookupStructAtScope( const std::string &id, unsigned long scope ) const; 105 EnumDecl *lookupEnumAtScope( const std::string &id, unsigned long scope ) const; 106 UnionDecl *lookupUnionAtScope( const std::string &id, unsigned long scope ) const; 107 TraitDecl *lookupTraitAtScope( const std::string &id, unsigned long scope ) const; 108 109 void addId( DeclarationWithType *decl ); 110 void addType( NamedTypeDecl *decl ); 111 void addStruct( const std::string &id ); 112 void addStruct( StructDecl *decl ); 113 void addEnum( EnumDecl *decl ); 114 void addUnion( const std::string &id ); 115 void addUnion( UnionDecl *decl ); 116 void addTrait( TraitDecl *decl ); 117 118 struct Impl; 119 Impl *tables; ///< Copy-on-write instance of table data structure 120 unsigned long scope; ///< Scope index of this pointer 121 bool doDebug; ///< Display debugging trace? 122 123 /// Takes a new ref to a table (returns null if null) 124 static Impl *newRef( Impl *toClone ); 125 /// Clears a ref to a table (does nothing if null) 126 static void deleteRef( Impl *toFree ); 127 128 /// Ensures that tables variable is writable (i.e. allocated, uniquely owned by this Indexer, and at the current scope) 129 void makeWritable(); 98 130 }; 99 131 } // namespace SymTab -
src/SymTab/Mangler.cc
rc5833e8 r0f9e4403 224 224 acceptAll( tupleType->get_types(), *this ); 225 225 mangleName << "_"; 226 } 227 228 void Mangler::visit( VarArgsType *varArgsType ) { 229 printQualifiers( varArgsType ); 230 mangleName << "VARGS"; 226 231 } 227 232 -
src/SymTab/Mangler.h
rc5833e8 r0f9e4403 45 45 virtual void visit( TypeInstType *aggregateUseType ); 46 46 virtual void visit( TupleType *tupleType ); 47 virtual void visit( VarArgsType *varArgsType ); 47 48 48 49 std::string get_mangleName() { return mangleName.str(); } -
src/SymTab/TypeEquality.cc
rc5833e8 r0f9e4403 41 41 virtual void visit( EnumInstType *enumInst ); 42 42 virtual void visit( TypeInstType *typeInst ); 43 virtual void visit( VarArgsType *varArgsType ); 43 44 44 45 void handleQualifiers( Type * t ); … … 191 192 } 192 193 } 194 195 void TypeEquality::visit( VarArgsType *varArgsType ) { 196 handleQualifiers( varArgsType ); 197 if ( ! dynamic_cast< VarArgsType * >( other ) ) { 198 result = false; 199 } 200 } 193 201 } // namespace SymTab -
src/SymTab/Validate.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 21:50:04 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jan 27 22:03:12201613 // Update Count : 2 2512 // Last Modified On : Wed Apr 13 16:39:30 2016 13 // Update Count : 251 14 14 // 15 15 … … 40 40 #include <list> 41 41 #include <iterator> 42 #include "Common/utility.h" 43 #include "Common/UniqueName.h" 42 44 #include "Validate.h" 43 45 #include "SynTree/Visitor.h" 44 46 #include "SynTree/Mutator.h" 45 47 #include "SynTree/Type.h" 48 #include "SynTree/Expression.h" 46 49 #include "SynTree/Statement.h" 47 50 #include "SynTree/TypeSubstitution.h" … … 49 52 #include "FixFunction.h" 50 53 // #include "ImplementationType.h" 51 #include "Common/utility.h" 52 #include "Common/UniqueName.h" 54 #include "GenPoly/DeclMutator.h" 53 55 #include "AddVisit.h" 54 56 #include "MakeLibCfa.h" … … 70 72 71 73 virtual void visit( CompoundStmt *compoundStmt ); 72 virtual void visit( IfStmt *ifStmt );73 virtual void visit( WhileStmt *whileStmt );74 virtual void visit( ForStmt *forStmt );75 74 virtual void visit( SwitchStmt *switchStmt ); 76 75 virtual void visit( ChooseStmt *chooseStmt ); 77 virtual void visit( CaseStmt *caseStmt ); 78 virtual void visit( CatchStmt *catchStmt ); 76 // virtual void visit( CaseStmt *caseStmt ); 79 77 private: 80 78 HoistStruct(); … … 101 99 virtual void visit( StructInstType *structInst ); 102 100 virtual void visit( UnionInstType *unionInst ); 103 virtual void visit( ContextInstType *contextInst );101 virtual void visit( TraitInstType *contextInst ); 104 102 virtual void visit( StructDecl *structDecl ); 105 103 virtual void visit( UnionDecl *unionDecl ); … … 137 135 virtual void visit( UnionDecl *structDecl ); 138 136 virtual void visit( TypeDecl *typeDecl ); 139 virtual void visit( ContextDecl *ctxDecl );137 virtual void visit( TraitDecl *ctxDecl ); 140 138 virtual void visit( FunctionDecl *functionDecl ); 141 139 … … 144 142 145 143 virtual void visit( CompoundStmt *compoundStmt ); 146 virtual void visit( IfStmt *ifStmt );147 virtual void visit( WhileStmt *whileStmt );148 virtual void visit( ForStmt *forStmt );149 144 virtual void visit( SwitchStmt *switchStmt ); 150 145 virtual void visit( ChooseStmt *chooseStmt ); 151 virtual void visit( CaseStmt *caseStmt ); 152 virtual void visit( CatchStmt *catchStmt ); 146 // virtual void visit( CaseStmt *caseStmt ); 153 147 154 148 AutogenerateRoutines() : functionNesting( 0 ) {} … … 166 160 /// and return something if the return type is non-void. 167 161 static void checkFunctionReturns( std::list< Declaration * > & translationUnit ); 168 169 162 private: 170 163 virtual void visit( FunctionDecl * functionDecl ); … … 192 185 virtual Declaration *mutate( UnionDecl * unionDecl ); 193 186 virtual Declaration *mutate( EnumDecl * enumDecl ); 194 virtual Declaration *mutate( ContextDecl * contextDecl );187 virtual Declaration *mutate( TraitDecl * contextDecl ); 195 188 196 189 template<typename AggDecl> 197 190 AggDecl *handleAggregate( AggDecl * aggDecl ); 198 191 192 template<typename AggDecl> 193 void addImplicitTypedef( AggDecl * aggDecl ); 194 199 195 typedef std::map< std::string, std::pair< TypedefDecl *, int > > TypedefMap; 200 196 TypedefMap typedefNames; … … 202 198 }; 203 199 200 class CompoundLiteral : public GenPoly::DeclMutator { 201 DeclarationNode::StorageClass storageclass = DeclarationNode::NoStorageClass; 202 203 virtual DeclarationWithType * mutate( ObjectDecl *objectDecl ); 204 virtual Expression *mutate( CompoundLiteralExpr *compLitExpr ); 205 }; 206 204 207 void validate( std::list< Declaration * > &translationUnit, bool doDebug ) { 205 208 Pass1 pass1; 206 209 Pass2 pass2( doDebug, 0 ); 207 210 Pass3 pass3( 0 ); 211 CompoundLiteral compoundliteral; 212 208 213 EliminateTypedef::eliminateTypedef( translationUnit ); 209 214 HoistStruct::hoistStruct( translationUnit ); … … 211 216 acceptAll( translationUnit, pass2 ); 212 217 ReturnChecker::checkFunctionReturns( translationUnit ); 218 mutateAll( translationUnit, compoundliteral ); 213 219 AutogenerateRoutines::autogenerateRoutines( translationUnit ); 214 220 acceptAll( translationUnit, pass3 ); … … 292 298 } 293 299 294 void HoistStruct::visit( IfStmt *ifStmt ) {295 addVisit( ifStmt, *this );296 }297 298 void HoistStruct::visit( WhileStmt *whileStmt ) {299 addVisit( whileStmt, *this );300 }301 302 void HoistStruct::visit( ForStmt *forStmt ) {303 addVisit( forStmt, *this );304 }305 306 300 void HoistStruct::visit( SwitchStmt *switchStmt ) { 307 301 addVisit( switchStmt, *this ); … … 312 306 } 313 307 314 void HoistStruct::visit( CaseStmt *caseStmt ) { 315 addVisit( caseStmt, *this ); 316 } 317 318 void HoistStruct::visit( CatchStmt *cathStmt ) { 319 addVisit( cathStmt, *this ); 320 } 308 // void HoistStruct::visit( CaseStmt *caseStmt ) { 309 // addVisit( caseStmt, *this ); 310 // } 321 311 322 312 void Pass1::visit( EnumDecl *enumDecl ) { … … 404 394 } 405 395 406 void Pass2::visit( ContextInstType *contextInst ) {396 void Pass2::visit( TraitInstType *contextInst ) { 407 397 Parent::visit( contextInst ); 408 ContextDecl *ctx = indexer->lookupContext( contextInst->get_name() );398 TraitDecl *ctx = indexer->lookupTrait( contextInst->get_name() ); 409 399 if ( ! ctx ) { 410 400 throw SemanticError( "use of undeclared context " + contextInst->get_name() ); … … 412 402 for ( std::list< TypeDecl * >::const_iterator i = ctx->get_parameters().begin(); i != ctx->get_parameters().end(); ++i ) { 413 403 for ( std::list< DeclarationWithType * >::const_iterator assert = (*i )->get_assertions().begin(); assert != (*i )->get_assertions().end(); ++assert ) { 414 if ( ContextInstType *otherCtx = dynamic_cast< ContextInstType * >(*assert ) ) {404 if ( TraitInstType *otherCtx = dynamic_cast< TraitInstType * >(*assert ) ) { 415 405 cloneAll( otherCtx->get_members(), contextInst->get_members() ); 416 406 } else { … … 476 466 while ( ! toBeDone.empty() ) { 477 467 for ( std::list< DeclarationWithType * >::iterator assertion = toBeDone.begin(); assertion != toBeDone.end(); ++assertion ) { 478 if ( ContextInstType *ctx = dynamic_cast< ContextInstType * >( (*assertion )->get_type() ) ) {468 if ( TraitInstType *ctx = dynamic_cast< TraitInstType * >( (*assertion )->get_type() ) ) { 479 469 for ( std::list< Declaration * >::const_iterator i = ctx->get_members().begin(); i != ctx->get_members().end(); ++i ) { 480 470 DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *i ); … … 851 841 } 852 842 853 void AutogenerateRoutines::visit( ContextDecl *) {843 void AutogenerateRoutines::visit( TraitDecl *) { 854 844 // ensure that we don't add assignment ops for types defined as part of the context 855 845 } … … 874 864 } 875 865 876 void AutogenerateRoutines::visit( IfStmt *ifStmt ) {877 visitStatement( ifStmt );878 }879 880 void AutogenerateRoutines::visit( WhileStmt *whileStmt ) {881 visitStatement( whileStmt );882 }883 884 void AutogenerateRoutines::visit( ForStmt *forStmt ) {885 visitStatement( forStmt );886 }887 888 866 void AutogenerateRoutines::visit( SwitchStmt *switchStmt ) { 889 867 visitStatement( switchStmt ); … … 894 872 } 895 873 896 void AutogenerateRoutines::visit( CaseStmt *caseStmt ) { 897 visitStatement( caseStmt ); 898 } 899 900 void AutogenerateRoutines::visit( CatchStmt *cathStmt ) { 901 visitStatement( cathStmt ); 902 } 874 // void AutogenerateRoutines::visit( CaseStmt *caseStmt ) { 875 // visitStatement( caseStmt ); 876 // } 903 877 904 878 void ReturnChecker::checkFunctionReturns( std::list< Declaration * > & translationUnit ) { … … 1043 1017 } 1044 1018 1045 // there may be typedefs nested within aggregates 1046 // in order for everything to work properly, these 1047 // should be removed as well 1019 // there may be typedefs nested within aggregates in order for everything to work properly, these should be removed 1020 // as well 1048 1021 template<typename AggDecl> 1049 1022 AggDecl *EliminateTypedef::handleAggregate( AggDecl * aggDecl ) { … … 1059 1032 return aggDecl; 1060 1033 } 1061 1034 1035 template<typename AggDecl> 1036 void EliminateTypedef::addImplicitTypedef( AggDecl * aggDecl ) { 1037 if ( typedefNames.count( aggDecl->get_name() ) == 0 ) { 1038 Type *type; 1039 if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( aggDecl ) ) { 1040 type = new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ); 1041 } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( aggDecl ) ) { 1042 type = new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ); 1043 } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( aggDecl ) ) { 1044 type = new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ); 1045 } // if 1046 TypedefDecl * tyDecl = new TypedefDecl( aggDecl->get_name(), DeclarationNode::NoStorageClass, type ); 1047 typedefNames[ aggDecl->get_name() ] = std::make_pair( tyDecl, scopeLevel ); 1048 } // if 1049 } 1062 1050 Declaration *EliminateTypedef::mutate( StructDecl * structDecl ) { 1051 addImplicitTypedef( structDecl ); 1063 1052 Mutator::mutate( structDecl ); 1064 1053 return handleAggregate( structDecl ); … … 1066 1055 1067 1056 Declaration *EliminateTypedef::mutate( UnionDecl * unionDecl ) { 1057 addImplicitTypedef( unionDecl ); 1068 1058 Mutator::mutate( unionDecl ); 1069 1059 return handleAggregate( unionDecl ); … … 1071 1061 1072 1062 Declaration *EliminateTypedef::mutate( EnumDecl * enumDecl ) { 1063 addImplicitTypedef( enumDecl ); 1073 1064 Mutator::mutate( enumDecl ); 1074 1065 return handleAggregate( enumDecl ); 1075 1066 } 1076 1067 1077 Declaration *EliminateTypedef::mutate( ContextDecl * contextDecl ) {1068 Declaration *EliminateTypedef::mutate( TraitDecl * contextDecl ) { 1078 1069 Mutator::mutate( contextDecl ); 1079 1070 return handleAggregate( contextDecl ); 1080 1071 } 1081 1072 1073 DeclarationWithType * CompoundLiteral::mutate( ObjectDecl *objectDecl ) { 1074 storageclass = objectDecl->get_storageClass(); 1075 DeclarationWithType * temp = Mutator::mutate( objectDecl ); 1076 storageclass = DeclarationNode::NoStorageClass; 1077 return temp; 1078 } 1079 1080 Expression *CompoundLiteral::mutate( CompoundLiteralExpr *compLitExpr ) { 1081 // transform [storage_class] ... (struct S){ 3, ... }; 1082 // into [storage_class] struct S temp = { 3, ... }; 1083 static UniqueName indexName( "_compLit" ); 1084 1085 ObjectDecl *tempvar = new ObjectDecl( indexName.newName(), storageclass, LinkageSpec::C, 0, compLitExpr->get_type(), compLitExpr->get_initializer() ); 1086 compLitExpr->set_type( 0 ); 1087 compLitExpr->set_initializer( 0 ); 1088 delete compLitExpr; 1089 DeclarationWithType * newtempvar = mutate( tempvar ); 1090 addDeclaration( newtempvar ); // add modified temporary to current block 1091 return new VariableExpr( newtempvar ); 1092 } 1082 1093 } // namespace SymTab 1083 1094 -
src/SymTab/module.mk
rc5833e8 r0f9e4403 15 15 ############################################################################### 16 16 17 SRC += SymTab/IdTable.cc \ 18 SymTab/Indexer.cc \ 17 SRC += SymTab/Indexer.cc \ 19 18 SymTab/Mangler.cc \ 20 19 SymTab/Validate.cc \ -
src/SynTree/AggregateDecl.cc
rc5833e8 r0f9e4403 10 10 // Created On : Sun May 17 23:56:39 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jun 13 08:12:49 201513 // Update Count : 612 // Last Modified On : Wed Mar 2 17:28:00 2016 13 // Update Count : 7 14 14 // 15 15 … … 64 64 std::string EnumDecl::typeString() const { return "enum"; } 65 65 66 std::string ContextDecl::typeString() const { return "context"; }66 std::string TraitDecl::typeString() const { return "context"; } 67 67 68 68 // Local Variables: // -
src/SynTree/Constant.cc
rc5833e8 r0f9e4403 16 16 #include <iostream> 17 17 #include <list> 18 #include <string> 18 19 19 20 #include "Constant.h" … … 28 29 29 30 Constant::~Constant() { delete type; } 31 32 Constant Constant::from( int i ) { 33 return Constant( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), std::to_string( i ) ); 34 } 35 36 Constant Constant::from( unsigned long i ) { 37 return Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), std::to_string( i ) ); 38 } 39 40 Constant Constant::from( double d ) { 41 return Constant( new BasicType( Type::Qualifiers(), BasicType::Double ), std::to_string( d ) ); 42 } 30 43 31 44 Constant *Constant::clone() const { assert( false ); return 0; } -
src/SynTree/Constant.h
rc5833e8 r0f9e4403 32 32 void set_value( std::string newValue ) { value = newValue; } 33 33 34 /// generates an integer constant of the given int 35 static Constant from( int i ); 36 /// generates an integer constant of the given unsigned long int 37 static Constant from( unsigned long i ); 38 /// generates a floating point constant of the given double 39 static Constant from( double d ); 40 34 41 virtual Constant *clone() const; 35 42 virtual void accept( Visitor &v ) { v.visit( this ); } -
src/SynTree/Declaration.h
rc5833e8 r0f9e4403 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:22 201513 // Update Count : 3 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:28:11 2016 13 // Update Count : 33 14 14 // 15 15 … … 246 246 }; 247 247 248 class ContextDecl : public AggregateDecl {249 typedef AggregateDecl Parent; 250 public: 251 ContextDecl( const std::string &name ) : Parent( name ) {}252 ContextDecl( const ContextDecl &other ) : Parent( other ) {}253 254 virtual ContextDecl *clone() const { return new ContextDecl( *this ); }248 class TraitDecl : public AggregateDecl { 249 typedef AggregateDecl Parent; 250 public: 251 TraitDecl( const std::string &name ) : Parent( name ) {} 252 TraitDecl( const TraitDecl &other ) : Parent( other ) {} 253 254 virtual TraitDecl *clone() const { return new TraitDecl( *this ); } 255 255 virtual void accept( Visitor &v ) { v.visit( this ); } 256 256 virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); } -
src/SynTree/Expression.cc
rc5833e8 r0f9e4403 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Expression.cc -- 7 // Expression.cc -- 8 8 // 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:10:29 201513 // Update Count : 3411 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Apr 8 17:16:23 2016 13 // Update Count : 40 14 14 // 15 15 … … 22 22 23 23 #include "Type.h" 24 #include "Initializer.h" 24 25 #include "Expression.h" 25 26 #include "Declaration.h" … … 211 212 212 213 os << " of "; 214 215 if ( type ) { 216 type->print(os, indent + 2); 217 } else { 218 os << "<NULL>"; 219 } 220 221 os << std::endl; 222 Expression::print( os, indent ); 223 } 224 225 OffsetPackExpr::OffsetPackExpr( StructInstType *type_, Expression *aname_ ) : Expression( aname_ ), type( type_ ) { 226 add_result( new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0, false, false ) ); 227 } 228 229 OffsetPackExpr::OffsetPackExpr( const OffsetPackExpr &other ) : Expression( other ), type( maybeClone( other.type ) ) {} 230 231 OffsetPackExpr::~OffsetPackExpr() { delete type; } 232 233 void OffsetPackExpr::print( std::ostream &os, int indent ) const { 234 os << std::string( indent, ' ' ) << "Offset pack expression on "; 213 235 214 236 if ( type ) { … … 422 444 } 423 445 446 AsmExpr::AsmExpr( const AsmExpr & other ) : inout( maybeClone( other.inout ) ), constraint( maybeClone( other.constraint ) ), operand( maybeClone( other.operand ) ) {} 447 448 424 449 void AsmExpr::print( std::ostream &os, int indent ) const { 425 450 os << "Asm Expression: " << std::endl; … … 429 454 } 430 455 456 UntypedValofExpr::UntypedValofExpr( const UntypedValofExpr & other ) : Expression( other ), body ( maybeClone( other.body ) ) {} 457 458 UntypedValofExpr::~UntypedValofExpr() { delete body; } 459 431 460 void UntypedValofExpr::print( std::ostream &os, int indent ) const { 432 461 os << std::string( indent, ' ' ) << "Valof Expression: " << std::endl; … … 434 463 get_body()->print( os, indent + 2 ); 435 464 } 465 466 467 CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : type( type ), initializer( initializer ) { 468 add_result( type->clone() ); 469 } 470 471 CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), type( maybeClone( other.type ) ), initializer( maybeClone( other.initializer ) ) {} 472 473 CompoundLiteralExpr::~CompoundLiteralExpr() { 474 delete initializer; 475 delete type; 476 } 477 478 void CompoundLiteralExpr::print( std::ostream &os, int indent ) const { 479 os << "Compound Literal Expression: " << std::endl; 480 if ( type ) type->print( os, indent + 2 ); 481 if ( initializer ) initializer->print( os, indent + 2 ); 482 } 483 436 484 437 485 std::ostream & operator<<( std::ostream & out, Expression * expr ) { -
src/SynTree/Expression.h
rc5833e8 r0f9e4403 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Expression.h -- 7 // Expression.h -- 8 8 // 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:10:21 201513 // Update Count : 1911 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Apr 8 17:18:06 2016 13 // Update Count : 21 14 14 // 15 15 … … 155 155 }; 156 156 157 // xxx - this doesn't appear to actually be hooked in anywhere. We should use this instead of the "&&"" UntypedExpr hack 157 158 class LabelAddressExpr : public Expression { 158 159 public: 159 160 LabelAddressExpr( Expression *arg ); 160 LabelAddressExpr( const AddressExpr &other );161 LabelAddressExpr( const LabelAddressExpr &other ); 161 162 virtual ~LabelAddressExpr(); 162 163 … … 251 252 }; 252 253 253 /// ConstantExpr represents an expression that simply refers to the value of a constant 254 /// ConstantExpr represents an expression that simply refers to the value of a constant 254 255 class ConstantExpr : public Expression { 255 256 public: … … 359 360 Type *type; 360 361 DeclarationWithType *member; 362 }; 363 364 /// Expression representing a pack of field-offsets for a generic type 365 class OffsetPackExpr : public Expression { 366 public: 367 OffsetPackExpr( StructInstType *type_, Expression *aname_ = 0 ); 368 OffsetPackExpr( const OffsetPackExpr &other ); 369 virtual ~OffsetPackExpr(); 370 371 StructInstType *get_type() const { return type; } 372 void set_type( StructInstType *newValue ) { type = newValue; } 373 374 virtual OffsetPackExpr *clone() const { return new OffsetPackExpr( *this ); } 375 virtual void accept( Visitor &v ) { v.visit( this ); } 376 virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); } 377 378 virtual void print( std::ostream &os, int indent = 0 ) const; 379 380 private: 381 StructInstType *type; 361 382 }; 362 383 … … 515 536 public: 516 537 AsmExpr( Expression *inout, ConstantExpr *constraint, Expression *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {} 538 AsmExpr( const AsmExpr & other ); 517 539 virtual ~AsmExpr() { delete inout; delete constraint; delete operand; }; 518 540 … … 541 563 public: 542 564 UntypedValofExpr( Statement *_body, Expression *_aname = 0 ) : Expression( _aname ), body ( _body ) {} 543 virtual ~UntypedValofExpr() {} 565 UntypedValofExpr( const UntypedValofExpr & other ); 566 virtual ~UntypedValofExpr(); 544 567 545 568 Expression *get_value(); … … 552 575 private: 553 576 Statement *body; 577 }; 578 579 /// CompoundLiteralExpr represents a C99 'compound literal' 580 class CompoundLiteralExpr : public Expression { 581 public: 582 CompoundLiteralExpr( Type * type, Initializer * initializer ); 583 CompoundLiteralExpr( const CompoundLiteralExpr &other ); 584 ~CompoundLiteralExpr(); 585 586 Type * get_type() const { return type; } 587 void set_type( Type * t ) { type = t; } 588 589 Initializer * get_initializer() const { return initializer; } 590 void set_initializer( Initializer * i ) { initializer = i; } 591 592 virtual CompoundLiteralExpr *clone() const { return new CompoundLiteralExpr( *this ); } 593 virtual void accept( Visitor &v ) { v.visit( this ); } 594 virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); } 595 virtual void print( std::ostream &os, int indent = 0 ) const; 596 private: 597 Type * type; 598 Initializer * initializer; 554 599 }; 555 600 -
src/SynTree/Mutator.cc
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jul 25 19:21:33 201513 // Update Count : 1 112 // Last Modified On : Fri Apr 1 18:05:16 2016 13 // Update Count : 16 14 14 // 15 15 … … 63 63 } 64 64 65 Declaration *Mutator::mutate( ContextDecl *aggregateDecl ) {65 Declaration *Mutator::mutate( TraitDecl *aggregateDecl ) { 66 66 handleAggregateDecl( aggregateDecl ); 67 67 return aggregateDecl; … … 274 274 } 275 275 276 Expression *Mutator::mutate( OffsetPackExpr *offsetPackExpr ) { 277 mutateAll( offsetPackExpr->get_results(), *this ); 278 offsetPackExpr->set_type( maybeMutate( offsetPackExpr->get_type(), *this ) ); 279 return offsetPackExpr; 280 } 281 276 282 Expression *Mutator::mutate( AttrExpr *attrExpr ) { 277 283 mutateAll( attrExpr->get_results(), *this ); … … 336 342 } 337 343 344 Expression *Mutator::mutate( CompoundLiteralExpr *compLitExpr ) { 345 mutateAll( compLitExpr->get_results(), *this ); 346 compLitExpr->set_type( maybeMutate( compLitExpr->get_type(), *this ) ); 347 compLitExpr->set_initializer( maybeMutate( compLitExpr->get_initializer(), *this ) ); 348 return compLitExpr; 349 } 350 338 351 Type *Mutator::mutate( VoidType *voidType ) { 339 352 mutateAll( voidType->get_forall(), *this ); … … 387 400 } 388 401 389 Type *Mutator::mutate( ContextInstType *aggregateUseType ) {402 Type *Mutator::mutate( TraitInstType *aggregateUseType ) { 390 403 handleReferenceToType( aggregateUseType ); 391 404 mutateAll( aggregateUseType->get_members(), *this ); … … 421 434 } 422 435 436 Type *Mutator::mutate( VarArgsType *varArgsType ) { 437 mutateAll( varArgsType->get_forall(), *this ); 438 return varArgsType; 439 } 440 423 441 Initializer *Mutator::mutate( SingleInit *singleInit ) { 424 442 singleInit->set_value( singleInit->get_value()->acceptMutator( *this ) ); -
src/SynTree/Mutator.h
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Nov 19 22:26:16 201513 // Update Count : 812 // Last Modified On : Fri Apr 1 17:26:56 2016 13 // Update Count : 10 14 14 // 15 15 #include <cassert> … … 31 31 virtual Declaration* mutate( UnionDecl *aggregateDecl ); 32 32 virtual Declaration* mutate( EnumDecl *aggregateDecl ); 33 virtual Declaration* mutate( ContextDecl *aggregateDecl );33 virtual Declaration* mutate( TraitDecl *aggregateDecl ); 34 34 virtual TypeDecl* mutate( TypeDecl *typeDecl ); 35 35 virtual Declaration* mutate( TypedefDecl *typeDecl ); … … 67 67 virtual Expression* mutate( UntypedOffsetofExpr *offsetofExpr ); 68 68 virtual Expression* mutate( OffsetofExpr *offsetofExpr ); 69 virtual Expression* mutate( OffsetPackExpr *offsetPackExpr ); 69 70 virtual Expression* mutate( AttrExpr *attrExpr ); 70 71 virtual Expression* mutate( LogicalExpr *logicalExpr ); … … 76 77 virtual Expression* mutate( AsmExpr *asmExpr ); 77 78 virtual Expression* mutate( UntypedValofExpr *valofExpr ); 79 virtual Expression* mutate( CompoundLiteralExpr *compLitExpr ); 78 80 79 81 virtual Type* mutate( VoidType *basicType ); … … 85 87 virtual Type* mutate( UnionInstType *aggregateUseType ); 86 88 virtual Type* mutate( EnumInstType *aggregateUseType ); 87 virtual Type* mutate( ContextInstType *aggregateUseType );89 virtual Type* mutate( TraitInstType *aggregateUseType ); 88 90 virtual Type* mutate( TypeInstType *aggregateUseType ); 89 91 virtual Type* mutate( TupleType *tupleType ); 90 92 virtual Type* mutate( TypeofType *typeofType ); 91 93 virtual Type* mutate( AttrType *attrType ); 94 virtual Type* mutate( VarArgsType *varArgsType ); 92 95 93 96 virtual Initializer* mutate( SingleInit *singleInit ); -
src/SynTree/ReferenceToType.cc
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Jun 7 08:31:48 201513 // Update Count : 412 // Last Modified On : Wed Mar 2 17:28:51 2016 13 // Update Count : 5 14 14 // 15 15 … … 83 83 std::string EnumInstType::typeString() const { return "enum"; } 84 84 85 std::string ContextInstType::typeString() const { return "context"; }85 std::string TraitInstType::typeString() const { return "context"; } 86 86 87 ContextInstType::ContextInstType( const ContextInstType &other ) : Parent( other ) {87 TraitInstType::TraitInstType( const TraitInstType &other ) : Parent( other ) { 88 88 cloneAll( other.members, members ); 89 89 } 90 90 91 ContextInstType::~ContextInstType() {91 TraitInstType::~TraitInstType() { 92 92 deleteAll( members ); 93 93 } -
src/SynTree/Statement.cc
rc5833e8 r0f9e4403 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Statement.cc -- 7 // Statement.cc -- 8 8 // 9 9 // Author : Richard C. Bilson … … 36 36 ExprStmt::ExprStmt( std::list<Label> _labels, Expression *_expr ) : Statement( _labels ), expr( _expr ) {} 37 37 38 ExprStmt::~ExprStmt() {} 38 ExprStmt::ExprStmt( const ExprStmt &other ) : Statement( other ), expr( maybeClone( other.expr ) ) {} 39 40 ExprStmt::~ExprStmt() { 41 delete expr; 42 } 39 43 40 44 void ExprStmt::print( std::ostream &os, int indent ) const { 41 45 os << string( indent, ' ' ) << "Expression Statement:" << endl; 42 46 expr->print( os, indent + 2 ); 43 } 47 } 44 48 45 49 46 50 AsmStmt::AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ) : Statement( labels ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ), gotolabels( gotolabels ) {} 51 52 AsmStmt::AsmStmt( const AsmStmt & other ) : Statement( other ), voltile( other.voltile ), instruction( maybeClone( other.instruction ) ), gotolabels( other.gotolabels ) { 53 cloneAll( other.output, output ); 54 cloneAll( other.input, input ); 55 cloneAll( other.clobber, clobber ); 56 } 47 57 48 58 AsmStmt::~AsmStmt() { … … 60 70 os << endl << std::string( indent, ' ' ) << "output: " << endl; 61 71 printAll( output, os, indent + 2 ); 62 } // if 72 } // if 63 73 if ( ! input.empty() ) { 64 74 os << std::string( indent, ' ' ) << "input: " << endl << std::string( indent, ' ' ); … … 69 79 printAll( clobber, os, indent + 2 ); 70 80 } // if 71 } 81 } 72 82 73 83 … … 93 103 ReturnStmt::ReturnStmt( std::list<Label> labels, Expression *_expr, bool throwP ) : Statement( labels ), expr( _expr ), isThrow( throwP ) {} 94 104 105 ReturnStmt::ReturnStmt( const ReturnStmt & other ) : Statement( other ), expr( maybeClone( other.expr ) ), isThrow( other.isThrow ) {} 106 95 107 ReturnStmt::~ReturnStmt() { 96 108 delete expr; … … 106 118 Statement( _labels ), condition( _condition ), thenPart( _thenPart ), elsePart( _elsePart ) {} 107 119 120 IfStmt::IfStmt( const IfStmt & other ) : 121 Statement( other ), condition( maybeClone( other.condition ) ), thenPart( maybeClone( other.thenPart ) ), elsePart( maybeClone( other.elsePart ) ) {} 122 108 123 IfStmt::~IfStmt() {} 109 124 … … 123 138 SwitchStmt::SwitchStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ): 124 139 Statement( _labels ), condition( _condition ), branches( _branches ) { 140 } 141 142 SwitchStmt::SwitchStmt( const SwitchStmt & other ): 143 Statement( other ), condition( maybeClone( other.condition ) ) { 144 cloneAll( other.branches, branches ); 125 145 } 126 146 … … 145 165 } 146 166 147 CaseStmt::CaseStmt( std::list<Label> _labels, Expression *_condition, std::list<Statement *> &_statements, bool deflt ) throw ( SemanticError ) : 167 CaseStmt::CaseStmt( std::list<Label> _labels, Expression *_condition, std::list<Statement *> &_statements, bool deflt ) throw ( SemanticError ) : 148 168 Statement( _labels ), condition( _condition ), stmts( _statements ), _isDefault( deflt ) { 149 169 if ( isDefault() && condition != 0 ) 150 170 throw SemanticError("default with conditions"); 171 } 172 173 CaseStmt::CaseStmt( const CaseStmt & other ) : 174 Statement( other ), condition( maybeClone(other.condition ) ), _isDefault( other._isDefault ) { 175 cloneAll( other.stmts, stmts ); 151 176 } 152 177 … … 181 206 } 182 207 208 ChooseStmt::ChooseStmt( const ChooseStmt & other ): 209 Statement( other ), condition( maybeClone( other.condition ) ) { 210 cloneAll( other.branches, branches ); 211 } 212 183 213 ChooseStmt::~ChooseStmt() { 184 214 delete condition; … … 208 238 } 209 239 240 WhileStmt::WhileStmt( const WhileStmt & other ): 241 Statement( other ), condition( maybeClone( other.condition ) ), body( maybeClone( other.body ) ), isDoWhile( other.isDoWhile ) { 242 } 243 210 244 WhileStmt::~WhileStmt() { 211 245 delete body; … … 223 257 ForStmt::ForStmt( std::list<Label> labels, std::list<Statement *> initialization_, Expression *condition_, Expression *increment_, Statement *body_ ): 224 258 Statement( labels ), initialization( initialization_ ), condition( condition_ ), increment( increment_ ), body( body_ ) { 259 } 260 261 ForStmt::ForStmt( const ForStmt & other ): 262 Statement( other ), condition( maybeClone( other.condition ) ), increment( maybeClone( other.increment ) ), body( maybeClone( other.body ) ) { 263 cloneAll( other.initialization, initialization ); 264 225 265 } 226 266 … … 241 281 os << string( indent, ' ' ) << "For Statement" << endl ; 242 282 243 os << string( indent + 2, ' ' ) << "initialization: \n"; 283 os << string( indent + 2, ' ' ) << "initialization: \n"; 244 284 for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) { 245 285 (*it)->print( os, indent + 4 ); 246 286 } 247 287 248 os << "\n" << string( indent + 2, ' ' ) << "condition: \n"; 288 os << "\n" << string( indent + 2, ' ' ) << "condition: \n"; 249 289 if ( condition != 0 ) 250 290 condition->print( os, indent + 4 ); 251 291 252 os << "\n" << string( indent + 2, ' ' ) << "increment: \n"; 292 os << "\n" << string( indent + 2, ' ' ) << "increment: \n"; 253 293 if ( increment != 0 ) 254 294 increment->print( os, indent + 4 ); 255 295 256 os << "\n" << string( indent + 2, ' ' ) << "statement block: \n"; 296 os << "\n" << string( indent + 2, ' ' ) << "statement block: \n"; 257 297 if ( body != 0 ) 258 298 body->print( os, indent + 4 ); … … 265 305 } 266 306 267 TryStmt::TryStmt( const TryStmt &other ) : Statement( other.labels ) { 268 block = other.block; 269 std::copy( other.handlers.begin(), other.handlers.end(), back_inserter( handlers ) ); 270 finallyBlock = other.finallyBlock; 307 TryStmt::TryStmt( const TryStmt &other ) : Statement( other ), block( maybeClone( other.block ) ), finallyBlock( maybeClone( other.finallyBlock ) ) { 308 cloneAll( other.handlers, handlers ); 271 309 } 272 310 … … 294 332 CatchStmt::CatchStmt( std::list<Label> labels, Declaration *_decl, Statement *_body, bool isCatchRest ) : 295 333 Statement( labels ), decl ( _decl ), body( _body ), catchRest ( isCatchRest ) { 334 } 335 336 CatchStmt::CatchStmt( const CatchStmt & other ) : 337 Statement( other ), decl ( maybeClone( other.decl ) ), body( maybeClone( other.body ) ), catchRest ( other.catchRest ) { 296 338 } 297 339 … … 319 361 } 320 362 363 FinallyStmt::FinallyStmt( const FinallyStmt & other ) : Statement( other ), block( maybeClone( other.block ) ) { 364 } 365 321 366 FinallyStmt::~FinallyStmt() { 322 367 delete block; … … 331 376 NullStmt::NullStmt( std::list<Label> labels ) : CompoundStmt( labels ) {} 332 377 NullStmt::NullStmt() : CompoundStmt( std::list<Label>() ) {} 333 NullStmt::~NullStmt() {}334 378 335 379 void NullStmt::print( std::ostream &os, int indent ) const { -
src/SynTree/Statement.h
rc5833e8 r0f9e4403 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Statement.h -- 7 // Statement.h -- 8 8 // 9 9 // Author : Richard C. Bilson … … 57 57 public: 58 58 ExprStmt( std::list<Label> labels, Expression *expr ); 59 ExprStmt( const ExprStmt &other ); 59 60 virtual ~ExprStmt(); 60 61 … … 73 74 public: 74 75 AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> input, std::list<Expression *> output, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ); 76 AsmStmt( const AsmStmt &other ); 75 77 virtual ~AsmStmt(); 76 78 … … 103 105 public: 104 106 IfStmt( std::list<Label> labels, Expression *condition, Statement *thenPart, Statement *elsePart ); 107 IfStmt( const IfStmt &other ); 105 108 virtual ~IfStmt(); 106 109 … … 111 114 Statement *get_elsePart() { return elsePart; } 112 115 void set_elsePart( Statement *newValue ) { elsePart = newValue; } 113 116 114 117 virtual IfStmt *clone() const { return new IfStmt( *this ); } 115 118 virtual void accept( Visitor &v ) { v.visit( this ); } … … 125 128 public: 126 129 SwitchStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &branches ); 130 SwitchStmt( const SwitchStmt &other ); 127 131 virtual ~SwitchStmt(); 128 132 … … 146 150 public: 147 151 ChooseStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &branches ); 152 ChooseStmt( const ChooseStmt &other ); 148 153 virtual ~ChooseStmt(); 149 154 … … 177 182 class CaseStmt : public Statement { 178 183 public: 179 CaseStmt( std::list<Label> labels, Expression *conditions, 184 CaseStmt( std::list<Label> labels, Expression *conditions, 180 185 std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError); 186 CaseStmt( const CaseStmt &other ); 181 187 virtual ~CaseStmt(); 182 188 … … 192 198 std::list<Statement *> &get_statements() { return stmts; } 193 199 void set_statements( std::list<Statement *> &newValue ) { stmts = newValue; } 194 200 195 201 virtual void accept( Visitor &v ) { v.visit( this ); } 196 202 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } … … 208 214 WhileStmt( std::list<Label> labels, Expression *condition, 209 215 Statement *body, bool isDoWhile = false ); 216 WhileStmt( const WhileStmt &other ); 210 217 virtual ~WhileStmt(); 211 218 … … 216 223 bool get_isDoWhile() { return isDoWhile; } 217 224 void set_isDoWhile( bool newValue ) { isDoWhile = newValue; } 218 225 219 226 virtual WhileStmt *clone() const { return new WhileStmt( *this ); } 220 227 virtual void accept( Visitor &v ) { v.visit( this ); } … … 231 238 ForStmt( std::list<Label> labels, std::list<Statement *> initialization, 232 239 Expression *condition = 0, Expression *increment = 0, Statement *body = 0 ); 240 ForStmt( const ForStmt &other ); 233 241 virtual ~ForStmt(); 234 242 … … 241 249 Statement *get_body() { return body; } 242 250 void set_body( Statement *newValue ) { body = newValue; } 243 251 244 252 virtual ForStmt *clone() const { return new ForStmt( *this ); } 245 253 virtual void accept( Visitor &v ) { v.visit( this ); } … … 259 267 BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError); 260 268 BranchStmt( std::list<Label> labels, Expression *computedTarget, Type ) throw (SemanticError); 261 virtual ~BranchStmt() {}262 269 263 270 Label get_originalTarget() { return originalTarget; } 264 271 Label get_target() { return target; } 265 272 void set_target( Label newValue ) { target = newValue; } 266 273 267 274 Expression *get_computedTarget() { return computedTarget; } 268 275 void set_target( Expression * newValue ) { computedTarget = newValue; } … … 286 293 public: 287 294 ReturnStmt( std::list<Label> labels, Expression *expr, bool throwP = false ); 295 ReturnStmt( const ReturnStmt &other ); 288 296 virtual ~ReturnStmt(); 289 297 290 298 Expression *get_expr() { return expr; } 291 299 void set_expr( Expression *newValue ) { expr = newValue; } 292 300 293 301 virtual ReturnStmt *clone() const { return new ReturnStmt( *this ); } 294 302 virtual void accept( Visitor &v ) { v.visit( this ); } … … 305 313 NullStmt(); 306 314 NullStmt( std::list<Label> labels ); 307 virtual ~NullStmt();308 315 309 316 virtual NullStmt *clone() const { return new NullStmt( *this ); } … … 311 318 virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); } 312 319 virtual void print( std::ostream &os, int indent = 0 ) const; 313 314 private: 315 }; 316 317 class TryStmt : public Statement { 320 321 private: 322 }; 323 324 class TryStmt : public Statement { 318 325 public: 319 326 TryStmt( std::list<Label> labels, CompoundStmt *tryBlock, std::list<Statement *> &handlers, FinallyStmt *finallyBlock = 0 ); … … 332 339 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 333 340 virtual void print( std::ostream &os, int indent = 0 ) const; 334 341 335 342 private: 336 343 CompoundStmt *block; 337 344 std::list<Statement *> handlers; 338 345 FinallyStmt *finallyBlock; 339 }; 346 }; 340 347 341 348 class CatchStmt : public Statement { 342 349 public: 343 350 CatchStmt( std::list<Label> labels, Declaration *decl, Statement *body, bool isCatchRest = false ); 351 CatchStmt( const CatchStmt &other ); 344 352 virtual ~CatchStmt(); 345 353 … … 349 357 Statement *get_body() { return body; } 350 358 void set_body( Statement *newValue ) { body = newValue; } 351 359 352 360 virtual CatchStmt *clone() const { return new CatchStmt( *this ); } 353 361 virtual void accept( Visitor &v ) { v.visit( this ); } 354 362 virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); } 355 363 virtual void print( std::ostream &os, int indent = 0 ) const; 356 364 357 365 private: 358 366 Declaration *decl; … … 361 369 }; 362 370 363 class FinallyStmt : public Statement { 371 class FinallyStmt : public Statement { 364 372 public: 365 373 FinallyStmt( std::list<Label> labels, CompoundStmt *block ); 374 FinallyStmt( const FinallyStmt &other ); 366 375 virtual ~FinallyStmt(); 367 376 368 377 CompoundStmt *get_block() const { return block; } 369 378 void set_block( CompoundStmt *newValue ) { block = newValue; } 370 379 371 380 virtual FinallyStmt *clone() const { return new FinallyStmt( *this ); } 372 381 virtual void accept( Visitor &v ) { v.visit( this ); } … … 375 384 private: 376 385 CompoundStmt *block; 377 }; 386 }; 378 387 379 388 -
src/SynTree/SynTree.h
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 23 23:25:04 201513 // Update Count : 312 // Last Modified On : Fri Apr 1 16:47:44 2016 13 // Update Count : 5 14 14 // 15 15 … … 30 30 class UnionDecl; 31 31 class EnumDecl; 32 class ContextDecl;32 class TraitDecl; 33 33 class NamedTypeDecl; 34 34 class TypeDecl; … … 72 72 class UntypedOffsetofExpr; 73 73 class OffsetofExpr; 74 class OffsetPackExpr; 74 75 class AttrExpr; 75 76 class LogicalExpr; … … 81 82 class AsmExpr; 82 83 class UntypedValofExpr; 84 class CompoundLiteralExpr; 83 85 84 86 class Type; … … 92 94 class UnionInstType; 93 95 class EnumInstType; 94 class ContextInstType;96 class TraitInstType; 95 97 class TypeInstType; 96 98 class TupleType; 97 99 class TypeofType; 98 100 class AttrType; 101 class VarArgsType; 99 102 100 103 class Initializer; -
src/SynTree/Type.h
rc5833e8 r0f9e4403 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 Dec 18 14:46:18 201513 // Update Count : 1811 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Mar 2 17:29:08 2016 13 // Update Count : 21 14 14 // 15 15 … … 296 296 }; 297 297 298 class ContextInstType : public ReferenceToType {298 class TraitInstType : public ReferenceToType { 299 299 typedef ReferenceToType Parent; 300 300 public: 301 ContextInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ) {}302 ContextInstType( const ContextInstType &other );303 ~ ContextInstType();301 TraitInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ) {} 302 TraitInstType( const TraitInstType &other ); 303 ~TraitInstType(); 304 304 305 305 std::list< Declaration* >& get_members() { return members; } 306 306 307 virtual ContextInstType *clone() const { return new ContextInstType( *this ); }307 virtual TraitInstType *clone() const { return new TraitInstType( *this ); } 308 308 virtual void accept( Visitor &v ) { v.visit( this ); } 309 309 virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); } … … 400 400 }; 401 401 402 /// Represents the GCC built-in varargs type 403 class VarArgsType : public Type { 404 public: 405 VarArgsType(); 406 VarArgsType( Type::Qualifiers tq ); 407 408 virtual VarArgsType *clone() const { return new VarArgsType( *this ); } 409 virtual void accept( Visitor &v ) { v.visit( this ); } 410 virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); } 411 virtual void print( std::ostream &os, int indent = 0 ) const; 412 }; 413 402 414 inline Type::Qualifiers &Type::Qualifiers::operator+=( const Type::Qualifiers &other ) { 403 415 isConst |= other.isConst; -
src/SynTree/TypeSubstitution.cc
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 11:10:04 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 17:29:15 2016 13 // Update Count : 3 14 14 // 15 15 … … 190 190 } 191 191 192 Type * TypeSubstitution::mutate( ContextInstType *aggregateUseType ) {192 Type * TypeSubstitution::mutate( TraitInstType *aggregateUseType ) { 193 193 return handleType( aggregateUseType ); 194 194 } … … 196 196 Type * TypeSubstitution::mutate( TupleType *tupleType ) { 197 197 return handleType( tupleType ); 198 } 199 200 Type * TypeSubstitution::mutate( VarArgsType *varArgsType ) { 201 return handleType( varArgsType ); 198 202 } 199 203 -
src/SynTree/TypeSubstitution.h
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon May 18 11:12:30 201513 // Update Count : 112 // Last Modified On : Wed Mar 2 17:33:19 2016 13 // Update Count : 2 14 14 // 15 15 … … 72 72 virtual Type* mutate(UnionInstType *aggregateUseType); 73 73 virtual Type* mutate(EnumInstType *aggregateUseType); 74 virtual Type* mutate( ContextInstType *aggregateUseType);74 virtual Type* mutate(TraitInstType *aggregateUseType); 75 75 virtual Type* mutate(TupleType *tupleType); 76 virtual Type* mutate(VarArgsType *varArgsType); 76 77 77 78 // TODO: worry about traversing into a forall-qualified function type or type decl with assertions -
src/SynTree/Visitor.cc
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jul 24 16:11:05 201513 // Update Count : 1 512 // Last Modified On : Fri Apr 1 18:05:13 2016 13 // Update Count : 18 14 14 // 15 15 … … 56 56 } 57 57 58 void Visitor::visit( ContextDecl *aggregateDecl ) {58 void Visitor::visit( TraitDecl *aggregateDecl ) { 59 59 visit( static_cast< AggregateDecl* >( aggregateDecl ) ); 60 60 } … … 230 230 } 231 231 232 void Visitor::visit( OffsetPackExpr *offsetPackExpr ) { 233 acceptAll( offsetPackExpr->get_results(), *this ); 234 maybeAccept( offsetPackExpr->get_type(), *this ); 235 } 236 232 237 void Visitor::visit( AttrExpr *attrExpr ) { 233 238 acceptAll( attrExpr->get_results(), *this ); … … 284 289 } 285 290 291 void Visitor::visit( CompoundLiteralExpr *compLitExpr ) { 292 acceptAll( compLitExpr->get_results(), *this ); 293 maybeAccept( compLitExpr->get_type(), *this ); 294 maybeAccept( compLitExpr->get_initializer(), *this ); 295 } 296 286 297 void Visitor::visit( VoidType *voidType ) { 287 298 acceptAll( voidType->get_forall(), *this ); … … 326 337 } 327 338 328 void Visitor::visit( ContextInstType *aggregateUseType ) {339 void Visitor::visit( TraitInstType *aggregateUseType ) { 329 340 visit( static_cast< ReferenceToType * >( aggregateUseType ) ); 330 341 acceptAll( aggregateUseType->get_members(), *this ); … … 355 366 } 356 367 368 void Visitor::visit( VarArgsType *varArgsType ) { 369 acceptAll( varArgsType->get_forall(), *this ); 370 } 371 357 372 void Visitor::visit( SingleInit *singleInit ) { 358 373 singleInit->get_value()->accept( *this ); -
src/SynTree/Visitor.h
rc5833e8 r0f9e4403 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jan 25 21:20:44201613 // Update Count : 512 // Last Modified On : Fri Apr 1 17:26:55 2016 13 // Update Count : 7 14 14 // 15 15 … … 31 31 virtual void visit( UnionDecl *aggregateDecl ); 32 32 virtual void visit( EnumDecl *aggregateDecl ); 33 virtual void visit( ContextDecl *aggregateDecl );33 virtual void visit( TraitDecl *aggregateDecl ); 34 34 virtual void visit( TypeDecl *typeDecl ); 35 35 virtual void visit( TypedefDecl *typeDecl ); … … 67 67 virtual void visit( UntypedOffsetofExpr *offsetofExpr ); 68 68 virtual void visit( OffsetofExpr *offsetofExpr ); 69 virtual void visit( OffsetPackExpr *offsetPackExpr ); 69 70 virtual void visit( AttrExpr *attrExpr ); 70 71 virtual void visit( LogicalExpr *logicalExpr ); … … 76 77 virtual void visit( AsmExpr *asmExpr ); 77 78 virtual void visit( UntypedValofExpr *valofExpr ); 79 virtual void visit( CompoundLiteralExpr *compLitExpr ); 78 80 79 81 virtual void visit( VoidType *basicType ); … … 85 87 virtual void visit( UnionInstType *aggregateUseType ); 86 88 virtual void visit( EnumInstType *aggregateUseType ); 87 virtual void visit( ContextInstType *aggregateUseType );89 virtual void visit( TraitInstType *aggregateUseType ); 88 90 virtual void visit( TypeInstType *aggregateUseType ); 89 91 virtual void visit( TupleType *tupleType ); 90 92 virtual void visit( TypeofType *typeofType ); 91 93 virtual void visit( AttrType *attrType ); 94 virtual void visit( VarArgsType *varArgsType ); 92 95 93 96 virtual void visit( SingleInit *singleInit ); -
src/SynTree/module.mk
rc5833e8 r0f9e4403 25 25 SynTree/TypeofType.cc \ 26 26 SynTree/AttrType.cc \ 27 SynTree/VarArgsType.cc \ 27 28 SynTree/Constant.cc \ 28 29 SynTree/Expression.cc \ … … 45 46 SynTree/Visitor.cc \ 46 47 SynTree/Mutator.cc \ 47 SynTree/CodeGenVisitor.cc \48 48 SynTree/TypeSubstitution.cc 49 49 -
src/Tuples/FlattenTuple.cc
rc5833e8 r0f9e4403 49 49 void FlattenTuple::CollectArgs::visit( UntypedOffsetofExpr *expr ) { currentArgs.insert( currentArgs.end(), expr ); } 50 50 void FlattenTuple::CollectArgs::visit( OffsetofExpr *expr ) { currentArgs.insert( currentArgs.end(), expr ); } 51 void FlattenTuple::CollectArgs::visit( OffsetPackExpr *expr ) { currentArgs.insert( currentArgs.end(), expr ); } 51 52 void FlattenTuple::CollectArgs::visit( AttrExpr *expr ) { currentArgs.insert( currentArgs.end(), expr ); } 52 53 void FlattenTuple::CollectArgs::visit( LogicalExpr *expr ) { currentArgs.insert( currentArgs.end(), expr ); } -
src/Tuples/FlattenTuple.h
rc5833e8 r0f9e4403 45 45 virtual void visit( UntypedOffsetofExpr * ); 46 46 virtual void visit( OffsetofExpr * ); 47 virtual void visit( OffsetPackExpr * ); 47 48 virtual void visit( AttrExpr * ); 48 49 virtual void visit( LogicalExpr * ); -
src/driver/Makefile.in
rc5833e8 r0f9e4403 196 196 esac; \ 197 197 done; \ 198 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/driver/Makefile'; \198 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/driver/Makefile'; \ 199 199 $(am__cd) $(top_srcdir) && \ 200 $(AUTOMAKE) -- gnusrc/driver/Makefile200 $(AUTOMAKE) --foreign src/driver/Makefile 201 201 .PRECIOUS: Makefile 202 202 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -
src/driver/cfa.cc
rc5833e8 r0f9e4403 10 10 // Created On : Tue Aug 20 13:44:49 2002 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jan 28 18:24:06201613 // Update Count : 1 2712 // Last Modified On : Wed Apr 6 14:04:22 2016 13 // Update Count : 132 14 14 // 15 15 … … 165 165 nargs += 1; 166 166 } else if ( prefix( arg, "-std=" ) ) { 167 std_flag = true; // std=XX provided167 std_flag = true; // -std=XX provided 168 168 args[nargs] = argv[i]; // pass the argument along 169 169 nargs += 1; … … 307 307 nargs += 1; 308 308 if ( ! std_flag ) { // default c99, if none specified 309 args[nargs] = "-std= c99";309 args[nargs] = "-std=gnu99"; 310 310 nargs += 1; 311 311 } // if -
src/examples/Makefile.in
rc5833e8 r0f9e4403 189 189 esac; \ 190 190 done; \ 191 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/examples/Makefile'; \191 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/examples/Makefile'; \ 192 192 $(am__cd) $(top_srcdir) && \ 193 $(AUTOMAKE) -- gnusrc/examples/Makefile193 $(AUTOMAKE) --foreign src/examples/Makefile 194 194 .PRECIOUS: Makefile 195 195 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -
src/examples/abs.c
rc5833e8 r0f9e4403 10 10 // Created On : Thu Jan 28 18:26:16 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 09:32:04201613 // Update Count : 4412 // Last Modified On : Wed Mar 2 15:07:26 2016 13 // Update Count : 51 14 14 // 15 15 … … 20 20 char ch = -65; 21 21 sout | "char\t\t\t" | ch | "\tabs " | abs( ch ) | endl; 22 sout | "signed int\t\t" | -65 | "\tabs 23 sout | "signed long int\t\t" | -65l | "\tabs 24 sout | "signed long long int\t" | -65ll | "\tabs 25 sout | "float\t\t\t" | -65.0f | "\tabs 26 sout | "double\t\t\t" | -65.0 | "\tabs 27 sout | "long double\t\t" | -65.0l | "\tabs 28 sout | "float _Complex\t\t" | -65.0F-2.0iF | "\tabs 29 sout | "double _Complex\t\t" | -65.0D-2.0iD | "\tabs 30 sout | "long double _Complex\t" | -65.0L-2.0iL | "\tabs 22 sout | "signed int\t\t" | -65 | "\tabs" | abs( -65 ) | endl; 23 sout | "signed long int\t\t" | -65l | "\tabs" | abs( -65l ) | endl; 24 sout | "signed long long int\t" | -65ll | "\tabs" | abs( -65ll ) | endl; 25 sout | "float\t\t\t" | -65.0f | "\tabs" | abs( -65.0f ) | endl; 26 sout | "double\t\t\t" | -65.0 | "\tabs" | abs( -65.0 ) | endl; 27 sout | "long double\t\t" | -65.0l | "\tabs" | abs( -65.0l ) | endl; 28 sout | "float _Complex\t\t" | -65.0F-2.0iF | "\tabs" | abs( -65.0F-2.0iF ) | endl; 29 sout | "double _Complex\t\t" | -65.0D-2.0iD | "\tabs" | abs( -65.0D-2.0iD ) | endl; 30 sout | "long double _Complex\t" | -65.0L-2.0iL | "\tabs" | abs( -65.0L-2.0iL ) | endl; 31 31 } // main 32 32 -
src/examples/array.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Ma y 27 18:10:13 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 18:13:52 2016 13 // Update Count : 3 14 14 // 15 15 16 16 #include "array.h" 17 17 18 /// forall( type array_type, elt_type | bounded_array( array_type, elt_type ) )18 /// forall( otype array_type, elt_type | bounded_array( array_type, elt_type ) ) 19 19 /// [ array_iterator begin, array_iterator end ] 20 20 /// get_iterators( array_type array ) … … 25 25 26 26 // The first element is always at index 0. 27 forall( type array_type,type elt_type | bounded_array( array_type, elt_type ) )27 forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) ) 28 28 elt_type * begin( array_type array ) { 29 29 return &array[ 0 ]; … … 31 31 32 32 // The end iterator should point one past the last element. 33 forall( type array_type,type elt_type | bounded_array( array_type, elt_type ) )33 forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) ) 34 34 elt_type * end( array_type array ) { 35 35 return &array[ last( array ) ] + 1; -
src/examples/array.h
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jan 26 17:09:29201613 // Update Count : 312 // Last Modified On : Wed Mar 2 18:13:35 2016 13 // Update Count : 5 14 14 // 15 15 … … 21 21 // An array has contiguous elements accessible in any order using integer indicies. The first 22 22 // element has index 0. 23 context array( type array_type,type elt_type ) {23 trait array( otype array_type, otype elt_type ) { 24 24 lvalue elt_type ?[?]( array_type, int ); 25 25 }; 26 26 27 27 // A bounded array is an array that carries its maximum index with it. 28 context bounded_array( type array_type,type elt_type | array( array_type, elt_type ) ) {28 trait bounded_array( otype array_type, otype elt_type | array( array_type, elt_type ) ) { 29 29 int last( array_type ); 30 30 }; … … 34 34 typedef int array_iterator; 35 35 36 /// forall( type array_type, elt_type | bounded_array( array_type, elt_type ) )36 /// forall( otype array_type, elt_type | bounded_array( array_type, elt_type ) ) 37 37 /// [ array_iterator begin, array_iterator end ] get_iterators( array_type ); 38 38 … … 40 40 // A bounded array can be iterated over by using a pointer to the element type. These functions 41 41 // return iterators corresponding to the first element and the one-past-the-end element, STL-style. 42 forall( type array_type,type elt_type | bounded_array( array_type, elt_type ) )42 forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) ) 43 43 elt_type *begin( array_type ); 44 44 45 forall( type array_type,type elt_type | bounded_array( array_type, elt_type ) )45 forall( otype array_type, otype elt_type | bounded_array( array_type, elt_type ) ) 46 46 elt_type *end( array_type ); 47 47 -
src/examples/ato.c
rc5833e8 r0f9e4403 11 11 // Created On : Thu Feb 4 08:10:57 2016 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Wed Feb 17 11:44:03201614 // Update Count : 4 213 // Last Modified On : Mon Feb 29 17:57:35 2016 14 // Update Count : 44 15 15 // 16 16 … … 24 24 int main( void ) { 25 25 int i = ato( "-123" ); 26 sout | i | ' ' |"-123" | endl;26 sout | i | "-123" | endl; 27 27 unsigned int ui = ato( "123" ); 28 sout | ui | ' ' |"123" | endl;28 sout | ui | "123" | endl; 29 29 long int li = ato( "-123" ); 30 sout | li | ' ' |"-123" | endl;30 sout | li | "-123" | endl; 31 31 unsigned long int uli = ato( "123" ); 32 sout | uli | ' ' |"123" | endl;32 sout | uli | "123" | endl; 33 33 long long int lli = ato( "-123" ); 34 sout | lli | ' ' |"-123" | endl;34 sout | lli | "-123" | endl; 35 35 unsigned long long int ulli = ato( "123" ); 36 sout | ulli | ' ' |"123" | endl;36 sout | ulli | "123" | endl; 37 37 float f = ato( "-123.456" ); 38 sout | f | ' ' |"-123.456" | endl;38 sout | f | "-123.456" | endl; 39 39 double d = ato( "-123.4567890123456" ); 40 sout | d | ' ' |"-123.4567890123456" | endl;40 sout | d | "-123.4567890123456" | endl; 41 41 long double ld = ato( "-123.45678901234567890123456789" ); 42 sout | ld | ' ' |"-123.45678901234567890123456789" | endl;42 sout | ld | "-123.45678901234567890123456789" | endl; 43 43 float _Complex fc = ato( "-123.456-123.456i" ); 44 sout | fc | ' ' |"-123.456-123.456i" | endl;44 sout | fc | "-123.456-123.456i" | endl; 45 45 double _Complex dc = ato( "-123.4567890123456+123.4567890123456i" ); 46 sout | dc | ' ' |"-123.4567890123456+123.4567890123456i" | endl;46 sout | dc | "-123.4567890123456+123.4567890123456i" | endl; 47 47 long double _Complex ldc = ato( "123.45678901234567890123456789-123.45678901234567890123456789i" ); 48 sout | ldc | ' ' |"123.45678901234567890123456789-123.45678901234567890123456789i" | endl;48 sout | ldc | "123.45678901234567890123456789-123.45678901234567890123456789i" | endl; 49 49 long double _Complex ldc2 = ato( "123.45678901234-123.4567890i" ); 50 sout | ldc2 | ' ' | "123.45678901234567890123456789-123.45678901234567890123456789i" | endl;50 sout | ldc2 | "123.45678901234-123.4567890i" | endl; 51 51 } // main 52 52 -
src/examples/constants.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jan 25 23:44:12201613 // Update Count : 7612 // Last Modified On : Fri Mar 11 16:27:38 2016 13 // Update Count : 81 14 14 // 15 15 … … 44 44 0x_ff_FF_ff_FF_ff_FF_ff_FF; 45 45 9_223_372_036_854_775_807; 46 18_446_744_073_709_551_615 ;46 18_446_744_073_709_551_615UL; 47 47 3.141_59f; 48 48 3.14159; … … 53 53 L'\x_ff_ee'; 54 54 L_"\x_ff_ee"; 55 L"a_b\r\ Qyc\u_00_40 x_y_z\xff_AA";56 L_"a_b\r\ Qyc\u_00_40\55 L"a_b\r\vyc\u_00_40 x_y_z\xff_AA"; 56 L_"a_b\r\vyc\u_00_40\ 57 57 x_y_z\xff_AA"; 58 58 "abc" "def" "ghi"; -
src/examples/ctxts.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Ma y 27 18:11:19 201513 // Update Count : 212 // Last Modified On : Wed Mar 2 18:10:21 2016 13 // Update Count : 3 14 14 // 15 15 16 context has_f( type T ) {16 trait has_f( type T ) { 17 17 T f( T ); 18 18 }; 19 19 20 context has_g( type U | has_f( U ) ) {20 trait has_g( type U | has_f( U ) ) { 21 21 U g( U ); 22 22 }; -
src/examples/fstream_test.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 11:45:43201613 // Update Count : 4312 // Last Modified On : Sun Mar 6 20:58:29 2016 13 // Update Count : 54 14 14 // 15 15 … … 18 18 int main( void ) { 19 19 int nombre; 20 sout | "Entrez un nombre, s'il vous plaît: \n";20 sout | "Entrez un nombre, s'il vous plaît:" | endl; 21 21 sin | &nombre; 22 sout | "Vous avez entré " | nombre | " stocké à l'adresse " | &nombre | endl; 23 sout | "nombre " | nombre | " est " 24 | (nombre > 0 ? "plus grand que" : 25 nombre == 0 ? "égal à" : "moins de") 26 | " zéro" | endl; 22 sout | "Vous avez entré" | nombre | "stocké à l'adresse" | &nombre | endl; 23 sout | "nombre" | nombre | "est" 24 | (nombre > 0 ? "plus grand que" : nombre == 0 ? "égal à" : "moins de") 25 | "zéro" | endl; 27 26 28 sout | "Entrez trois nombres, s'il vous plaît: \n";27 sout | "Entrez trois nombres, s'il vous plaît: " | endl; 29 28 int i, j, k; 30 29 sin | &i | &j | &k; 31 sout | "Vous avez entré " | "i:" | i | " j:" | j | " k:" | k | endl; 32 33 sout | 3 | ' ' | 3.5 | ' ' | 'a' | ' ' | "abc" | endl; 30 sout | "Vous avez entré" | "i:" | "" | i | "j:" | "" | j | "k:" | "" | k | endl; 34 31 } 35 32 -
src/examples/hello.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 12:11:45201613 // Update Count : 812 // Last Modified On : Mon Feb 29 18:06:17 2016 13 // Update Count : 10 14 14 // 15 15 … … 17 17 18 18 int main() { 19 sout | "Bonjour au monde! \n";19 sout | "Bonjour au monde!" | endl; 20 20 } 21 21 -
src/examples/huge.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 27 18:15:34 201513 // Update Count : 112 // Last Modified On : Tue Mar 8 22:16:32 2016 13 // Update Count : 2 14 14 // 15 15 16 int huge( int n, forall( type T ) T (*f)( T ) ) {16 int huge( int n, forall( otype T ) T (*f)( T ) ) { 17 17 if ( n <= 0 ) 18 18 return f( 0 ); -
src/examples/identity.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 12:17:32201613 // Update Count : 1 012 // Last Modified On : Tue Mar 8 22:15:08 2016 13 // Update Count : 13 14 14 // 15 15 16 16 #include <fstream> 17 17 18 forall( type T )18 forall( otype T ) 19 19 T identity( T t ) { 20 20 return t; -
src/examples/includes.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Dec 21 13:54:09 201513 // Update Count : 32 212 // Last Modified On : Wed Mar 2 23:28:02 2016 13 // Update Count : 328 14 14 // 15 15 … … 43 43 #include <ctype.h> 44 44 #include <curses.h> 45 #include <demangle.h> // enum / contains "type"46 #include <dialog.h> // enum / contains "type"45 #include <demangle.h> 46 #include <dialog.h> 47 47 #include <dirent.h> 48 48 #include <dis-asm.h> … … 56 56 #include <err.h> 57 57 #include <errno.h> 58 #if 0 58 59 #include <error.h> 60 #endif 61 #include <eti.h> 62 #include <evdns.h> 63 #include <event.h> 64 #include <evhttp.h> 59 65 #if 0 60 #include <eti.h>61 #include <evdns.h> // subdirectory event2 contains "type"62 #include <event.h>63 #include <evhttp.h> // enum / subdirectory event2 contains "type"64 66 #include <evrpc.h> 65 67 #include <evutil.h> 66 68 #include <execinfo.h> 67 #include <expat.h> // enum / contains "type" and "context"69 #include <expat.h> 68 70 #include <expat_config.h> 69 71 #include <expat_external.h> … … 74 76 #include <fmtmsg.h> 75 77 #include <fnmatch.h> 76 #include <form.h> // contains "type"78 #include <form.h> 77 79 #include <fpu_control.h> 78 80 #include <fstab.h> … … 81 83 #include <ftw.h> 82 84 #include <gconv.h> 83 //#include <gcrypt.h> // enum / contains "type"85 //#include <gcrypt.h> 84 86 //#include <gcrypt-module.h> 85 87 #include <getopt.h> … … 107 109 #include <limits.h> 108 110 #include <locale.h> 109 #include <math.h> // contains "type"111 #include <math.h> 110 112 #include <ncurses.h> 111 113 #include <setjmp.h> -
src/examples/index.h
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Ma y 27 18:17:31 201513 // Update Count : 112 // Last Modified On : Wed Mar 2 18:10:46 2016 13 // Update Count : 2 14 14 // 15 15 16 context index( type T ) {16 trait index( type T ) { 17 17 T ?+?( T, T ); 18 18 T ?-?( T, T ); -
src/examples/it_out.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 27 18:41:23 201513 // Update Count : 412 // Last Modified On : Tue Mar 8 22:14:39 2016 13 // Update Count : 8 14 14 // 15 15 16 16 typedef unsigned long streamsize_type; 17 17 18 context ostream( dtype os_type ) {18 trait ostream( dtype os_type ) { 19 19 os_type *write( os_type *, const char *, streamsize_type ); 20 20 int fail( os_type * ); 21 21 }; 22 22 23 context writeable(type T ) {23 trait writeable( otype T ) { 24 24 forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, T ); 25 25 }; … … 29 29 forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, const char * ); 30 30 31 context istream( dtype is_type ) {31 trait istream( dtype is_type ) { 32 32 is_type *read( is_type *, char *, streamsize_type ); 33 33 is_type *unread( is_type *, char ); … … 36 36 }; 37 37 38 context readable(type T ) {38 trait readable( otype T ) { 39 39 forall( dtype is_type | istream( is_type ) ) is_type * ?<<?( is_type *, T ); 40 40 }; … … 43 43 forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, int* ); 44 44 45 context iterator( type iterator_type,type elt_type ) {45 trait iterator( otype iterator_type, otype elt_type ) { 46 46 iterator_type ?++( iterator_type* ); 47 47 iterator_type ++?( iterator_type* ); … … 52 52 }; 53 53 54 forall( type elt_type | writeable( elt_type ),55 type iterator_type | iterator( iterator_type, elt_type ),54 forall( otype elt_type | writeable( elt_type ), 55 otype iterator_type | iterator( iterator_type, elt_type ), 56 56 dtype os_type | ostream( os_type ) ) 57 57 void write_all( iterator_type begin, iterator_type end, os_type *os ); 58 58 59 forall( type elt_type | writeable( elt_type ),60 type iterator_type | iterator( iterator_type, elt_type ),59 forall( otype elt_type | writeable( elt_type ), 60 otype iterator_type | iterator( iterator_type, elt_type ), 61 61 dtype os_type | ostream( os_type ) ) 62 62 void write_all( elt_type begin, iterator_type end, os_type *os ) { -
src/examples/limits.c
rc5833e8 r0f9e4403 98 98 // Local Variables: // 99 99 // tab-width: 4 // 100 // compile-command: "cfa min.c" //100 // compile-command: "cfa limits.c" // 101 101 // End: // -
src/examples/minmax.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 12:17:53201613 // Update Count : 4 712 // Last Modified On : Mon Feb 29 23:45:16 2016 13 // Update Count : 49 14 14 // 15 15 … … 23 23 24 24 sout | "char\t\t\t" | 'z' | ' ' | 'a' | "\tmin " | min( 'z', 'a' ) | endl; 25 sout | "signed int\t\t" | 4 | ' ' | 3 | "\tmin" | min( 4, 3 ) | endl;26 sout | "unsigned int\t\t" | 4u | ' ' | 3u | "\tmin" | min( 4u, 3u ) | endl;27 sout | "signed long int\t\t" | 4l | ' ' | 3l | "\tmin" | min( 4l, 3l ) | endl;28 sout | "unsigned long int\t" | 4ul | ' ' | 3ul | "\tmin" | min( 4ul, 3ul ) | endl;29 sout | "signed long long int\t" | 4ll | ' ' | 3ll | "\tmin" | min( 4ll, 3ll ) | endl;30 sout | "unsigned long long int\t" | 4ull | ' ' | 3ull | "\tmin" | min( 4ull, 3ull ) | endl;31 sout | "float\t\t\t" | 4.0f | ' ' | 3.1f | "\tmin" | min( 4.0f, 3.1f ) | endl;32 sout | "double\t\t\t" | 4.0 | ' ' | 3.1 | "\tmin" | min( 4.0, 3.1 ) | endl;33 sout | "long double\t\t" | 4.0l | ' ' | 3.1l | "\tmin" | min( 4.0l, 3.1l ) | endl;25 sout | "signed int\t\t" | 4 | 3 | "\tmin" | min( 4, 3 ) | endl; 26 sout | "unsigned int\t\t" | 4u | 3u | "\tmin" | min( 4u, 3u ) | endl; 27 sout | "signed long int\t\t" | 4l | 3l | "\tmin" | min( 4l, 3l ) | endl; 28 sout | "unsigned long int\t" | 4ul | 3ul | "\tmin" | min( 4ul, 3ul ) | endl; 29 sout | "signed long long int\t" | 4ll | 3ll | "\tmin" | min( 4ll, 3ll ) | endl; 30 sout | "unsigned long long int\t" | 4ull | 3ull | "\tmin" | min( 4ull, 3ull ) | endl; 31 sout | "float\t\t\t" | 4.0f | 3.1f | "\tmin" | min( 4.0f, 3.1f ) | endl; 32 sout | "double\t\t\t" | 4.0 | 3.1 | "\tmin" | min( 4.0, 3.1 ) | endl; 33 sout | "long double\t\t" | 4.0l | 3.1l | "\tmin" | min( 4.0l, 3.1l ) | endl; 34 34 35 35 sout | endl; 36 36 37 37 sout | "char\t\t\t" | 'z' | ' ' | 'a' | "\tmax " | max( 'z', 'a' ) | endl; 38 sout | "signed int\t\t" | 4 | ' ' | 3 | "\tmax" | max( 4, 3 ) | endl;39 sout | "unsigned int\t\t" | 4u | ' ' | 3u | "\tmax" | max( 4u, 3u ) | endl;40 sout | "signed long int\t\t" | 4l | ' ' | 3l | "\tmax" | max( 4l, 3l ) | endl;41 sout | "unsigned long int\t" | 4ul | ' ' | 3ul | "\tmax" | max( 4ul, 3ul ) | endl;42 sout | "signed long long int\t" | 4ll | ' ' | 3ll | "\tmax" | max( 4ll, 3ll ) | endl;43 sout | "unsigned long long int\t" | 4ull | ' ' | 3ull | "\tmax" | max( 4ull, 3ull ) | endl;44 sout | "float\t\t\t" | 4.0f | ' ' | 3.1f | "\tmax" | max( 4.0f, 3.1f ) | endl;45 sout | "double\t\t\t" | 4.0 | ' ' | 3.1 | "\tmax" | max( 4.0, 3.1 ) | endl;46 sout | "long double\t\t" | 4.0l | ' ' | 3.1l | "\tmax" | max( 4.0l, 3.1l ) | endl;38 sout | "signed int\t\t" | 4 | 3 | "\tmax" | max( 4, 3 ) | endl; 39 sout | "unsigned int\t\t" | 4u | 3u | "\tmax" | max( 4u, 3u ) | endl; 40 sout | "signed long int\t\t" | 4l | 3l | "\tmax" | max( 4l, 3l ) | endl; 41 sout | "unsigned long int\t" | 4ul | 3ul | "\tmax" | max( 4ul, 3ul ) | endl; 42 sout | "signed long long int\t" | 4ll | 3ll | "\tmax" | max( 4ll, 3ll ) | endl; 43 sout | "unsigned long long int\t" | 4ull | 3ull | "\tmax" | max( 4ull, 3ull ) | endl; 44 sout | "float\t\t\t" | 4.0f | 3.1f | "\tmax" | max( 4.0f, 3.1f ) | endl; 45 sout | "double\t\t\t" | 4.0 | 3.1 | "\tmax" | max( 4.0, 3.1 ) | endl; 46 sout | "long double\t\t" | 4.0l | 3.1l | "\tmax" | max( 4.0l, 3.1l ) | endl; 47 47 } // main 48 48 -
src/examples/new.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jan 25 23:33:55201613 // Update Count : 212 // Last Modified On : Tue Mar 8 22:13:20 2016 13 // Update Count : 4 14 14 // 15 15 16 forall( type T )16 forall( otype T ) 17 17 void f( T *t ) { 18 18 t--; -
src/examples/prolog.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 27 18:25:52 201513 // Update Count : 112 // Last Modified On : Tue Mar 8 22:09:39 2016 13 // Update Count : 5 14 14 // 15 15 16 extern "C" { extern int printf( const char *fmt, ... ); } 16 #include <fstream> 17 17 18 void printResult( int x ) { printf( "int\n" ); }19 void printResult( double x ) { printf( "double\n" ); }20 void printResult( char * x ) { printf( "char*\n" ); }18 void printResult( int x ) { sout | "int" | endl; } 19 void printResult( double x ) { sout | "double" | endl; } 20 void printResult( char * x ) { sout | "char*" | endl; } 21 21 22 22 void is_arithmetic( int x ) {} … … 25 25 void is_integer( int x ) {} 26 26 27 context ArithmeticType(type T ) {27 trait ArithmeticType( otype T ) { 28 28 void is_arithmetic( T ); 29 29 }; 30 30 31 context IntegralType(type T | ArithmeticType( T ) ) {31 trait IntegralType( otype T | ArithmeticType( T ) ) { 32 32 void is_integer( T ); 33 33 }; 34 34 35 forall( type T | IntegralType( T ) | { void printResult( T ); } )35 forall( otype T | IntegralType( T ) | { void printResult( T ); } ) 36 36 void hornclause( T param ) { 37 37 printResult( param ); -
src/examples/quad.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 12:19:24201613 // Update Count : 612 // Last Modified On : Tue Mar 8 22:07:02 2016 13 // Update Count : 8 14 14 // 15 15 16 16 #include <fstream> 17 17 18 forall( type T | { T ?*?( T, T ); } )18 forall( otype T | { T ?*?( T, T ); } ) 19 19 T square( T t ) { 20 20 return t * t; 21 21 } 22 22 23 forall( type U | { U square( U ); } )23 forall( otype U | { U square( U ); } ) 24 24 U quad( U u ) { 25 25 return square( square( u ) ); … … 28 28 int main() { 29 29 int N = 2; 30 sout | "result of quad of " | N | " is" | quad( N ) | endl;30 sout | "result of quad of" | N | "is" | quad( N ) | endl; 31 31 } 32 32 -
src/examples/random.c
rc5833e8 r0f9e4403 7 7 8 8 int main() { 9 rand seed( getpid() ); // set random seed9 rand48seed( getpid() ); // set random seed 10 10 11 11 // test polymorphic calls to random and stream 12 char c = rand om();12 char c = rand48(); 13 13 sout | c | endl; 14 int i = rand om();14 int i = rand48(); 15 15 sout | i | endl; 16 unsigned int ui = rand om();16 unsigned int ui = rand48(); 17 17 sout | ui | endl; 18 long int li = rand om();18 long int li = rand48(); 19 19 sout | li | endl; 20 unsigned long int uli = rand om();20 unsigned long int uli = rand48(); 21 21 sout | uli | endl; 22 float f = rand om();22 float f = rand48(); 23 23 sout | f | endl; 24 double d = rand om();24 double d = rand48(); 25 25 sout | d | endl; 26 float _Complex fc = rand om();26 float _Complex fc = rand48(); 27 27 sout | fc | endl; 28 double _Complex dc = rand om();28 double _Complex dc = rand48(); 29 29 sout | dc | endl; 30 long double _Complex ldc = rand om();30 long double _Complex ldc = rand48(); 31 31 sout | ldc | endl; 32 32 } // main -
src/examples/searchsort.c
rc5833e8 r0f9e4403 11 11 // Created On : Thu Feb 4 18:17:50 2016 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : Wed Feb 17 12:21:04201614 // Update Count : 4613 // Last Modified On : Tue Mar 22 22:16:46 2016 14 // Update Count : 55 15 15 // 16 16 … … 36 36 sout | *v | ", "; 37 37 } // for 38 sout | endl | endl; 39 40 // descending sort/search by changing < to > 41 for ( unsigned int i = 0; i < size; i += 1 ) { 42 iarr[i] = i + 1; 43 sout | iarr[i] | ", "; 44 } // for 45 sout | endl; 46 { 47 int ?<?( int x, int y ) { return x > y; } 48 qsort( iarr, size ); 49 for ( unsigned int i = 0; i < size; i += 1 ) { 50 sout | iarr[i] | ", "; 51 } // for 52 sout | endl; 53 for ( unsigned int i = 0; i < size; i += 1 ) { 54 int *v = bsearch( size - i, iarr, size ); 55 sout | *v | ", "; 56 } // for 57 } 38 58 sout | endl | endl; 39 59 -
src/examples/simplePoly.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 27 18:31:17 201513 // Update Count : 212 // Last Modified On : Tue Mar 8 22:06:41 2016 13 // Update Count : 3 14 14 // 15 15 16 forall( type T,type U | { T f( T, U ); } )16 forall( otype T, otype U | { T f( T, U ); } ) 17 17 T q( T t, U u ) { 18 18 return f( t, u ); -
src/examples/simpler.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 27 18:31:48 201513 // Update Count : 112 // Last Modified On : Tue Mar 8 22:06:30 2016 13 // Update Count : 2 14 14 // 15 15 16 forall( type T ) T id( T, T );16 forall( otype T ) T id( T, T ); 17 17 18 18 int main() { -
src/examples/specialize.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed May 27 18:32:26 201513 // Update Count : 212 // Last Modified On : Tue Mar 8 22:06:17 2016 13 // Update Count : 3 14 14 // 15 15 … … 39 39 } 40 40 41 forall( type T ) T f( T t )41 forall( otype T ) T f( T t ) 42 42 { 43 43 printf( "in f; sizeof T is %d\n", sizeof( T ) ); -
src/examples/square.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 12:21:58 201613 // Update Count : 2 612 // Last Modified On : Tue Mar 8 22:05:48 2016 13 // Update Count : 27 14 14 // 15 15 16 16 #include <fstream> 17 17 18 forall( type T | { T ?*?( T, T ); } )18 forall( otype T | { T ?*?( T, T ); } ) 19 19 T square( T t ) { 20 20 return t * t; -
src/examples/sum.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Feb 16 23:49:31201613 // Update Count : 1 8912 // Last Modified On : Fri Mar 4 15:06:47 2016 13 // Update Count : 196 14 14 // 15 15 16 16 #include <fstream> 17 17 18 context sumable(type T ) {18 trait sumable( otype T ) { 19 19 const T 0; 20 20 T ?+?( T, T ); … … 24 24 }; // sumable 25 25 26 forall( type T | sumable( T ) )26 forall( otype T | sumable( T ) ) 27 27 T sum( unsigned int n, T a[] ) { 28 28 T total = 0; // instantiate T, select 0 … … 47 47 a[i] = v; 48 48 } // for 49 sout | "sum from " | low | " to " | High | " is"50 | (int)sum( size, a ) | " , check" | (int)s | endl;49 sout | "sum from" | low | "to" | High | "is" 50 | (int)sum( size, a ) | "" | ", check" | (int)s | endl; 51 51 52 52 int s = 0, a[size], v = low; … … 55 55 a[i] = (int)v; 56 56 } // for 57 sout | "sum from " | low | " to " | High | " is"58 | sum( size, (int *)a ) | " , check" | (int)s | endl;57 sout | "sum from" | low | "to" | High | "is" 58 | sum( size, (int *)a ) | "" | ", check" | (int)s | endl; 59 59 60 60 float s = 0.0, a[size], v = low / 10.0; … … 63 63 a[i] = (float)v; 64 64 } // for 65 sout | "sum from " | low / 10.0 | " to " | High / 10.0 | " is"66 | sum( size, (float *)a ) | " , check" | (float)s | endl;65 sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is" 66 | sum( size, (float *)a ) | "" | ", check" | (float)s | endl; 67 67 68 68 double s = 0, a[size], v = low / 10.0; … … 71 71 a[i] = (double)v; 72 72 } // for 73 sout | "sum from " | low / 10.0 | " to " | High / 10.0 | " is"74 | sum( size, (double *)a ) | " , check" | (double)s | endl;73 sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is" 74 | sum( size, (double *)a ) | "" | ", check" | (double)s | endl; 75 75 76 76 struct S { int i, j; } 0 = { 0, 0 }, 1 = { 1, 1 }; … … 79 79 S ++?( S *t ) { *t += 1; return *t; } 80 80 S ?++( S *t ) { S temp = *t; *t += 1; return temp; } 81 ofstream * ?|?( ofstream * os, S v ) { return os | v.i | ' ' |v.j; }81 ofstream * ?|?( ofstream * os, S v ) { return os | v.i | v.j; } 82 82 83 83 S s = 0, a[size], v = { low, low }; … … 86 86 a[i] = (S)v; 87 87 } // for 88 sout | "sum from " | low | " to " | High | " is"89 | sum( size, (S *)a ) | " , check" | (S)s | endl;88 sout | "sum from" | low | "to" | High | "is" 89 | sum( size, (S *)a ) | "" | ", check" | (S)s | endl; 90 90 } // main 91 91 -
src/examples/swap.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 12:22:12201613 // Update Count : 6 412 // Last Modified On : Wed Mar 2 16:15:11 2016 13 // Update Count : 65 14 14 // 15 15 … … 54 54 55 55 float f1 = 1.5, f2 = 2.5; 56 sout | "float\t\t\t" | f1 | ' ' | f2 | "\t\t \tswap ";56 sout | "float\t\t\t" | f1 | ' ' | f2 | "\t\tswap "; 57 57 swap( &f1, &f2 ); 58 58 sout | '\t' | f1 | ' ' | f2 | endl; 59 59 60 60 double d1 = 1.5, d2 = 2.5; 61 sout | "double\t\t\t" | d1 | ' ' | d2 | "\t\t \tswap ";61 sout | "double\t\t\t" | d1 | ' ' | d2 | "\t\tswap "; 62 62 swap( &d1, &d2 ); 63 63 sout | '\t' | d1 | ' ' | d2 | endl; 64 64 65 65 long double ld1 = 1.5, ld2 = 2.5; 66 sout | "long double\t\t" | ld1 | ' ' | ld2 | "\t\t \tswap ";66 sout | "long double\t\t" | ld1 | ' ' | ld2 | "\t\tswap "; 67 67 swap( &ld1, &ld2 ); 68 68 sout | '\t' | ld1 | ' ' | ld2 | endl; -
src/examples/tests/vector_test.out.txt
rc5833e8 r0f9e4403 1 1 enter N elements and C-d on a separate line: 2 2 Array elements: 3 1 2 3 4 5 3 1 2 3 4 5 4 4 Array elements reversed: 5 5 4 3 2 1 5 5 4 3 2 1 -
src/examples/twice.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 12:23:25201613 // Update Count : 1 312 // Last Modified On : Tue Mar 8 22:04:58 2016 13 // Update Count : 16 14 14 // 15 15 16 16 #include <fstream> 17 17 18 forall( type T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } )18 forall( otype T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } ) 19 19 T twice( const T t ) { 20 20 return t + t; … … 27 27 char ?++( char *op ) { char temp = *op; *op += 1; return temp; } 28 28 29 sout | twice( 'a' ) | ' ' | twice( 1 ) | ' ' |twice( 3.2 ) | endl;29 sout | twice( 'a' ) | ' ' | twice( 1 ) | twice( 3.2 ) | endl; 30 30 } 31 31 -
src/libcfa/Makefile.am
rc5833e8 r0f9e4403 11 11 ## Created On : Sun May 31 08:54:01 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Wed Feb 3 11:19:35201614 ## Update Count : 1 1713 ## Last Modified On : Wed Apr 6 21:10:44 2016 14 ## Update Count : 123 15 15 ############################################################################### 16 16 … … 60 60 ${CC} ${CFLAGS} -c -o $@ $< 61 61 62 libs = stdlib iostream fstream iterator62 libs = limits stdlib iostream fstream iterator rational 63 63 libcfa_a_SOURCES = libcfa-prelude.c ${libs:=.c} 64 64 65 cheaders = bfd bfdlink demangle dialog evdns evhttp evrpc expat fcntl form gcrypt math66 cfaheaders = limits65 cheaders = # expat 66 cfaheaders = # limits 67 67 include_HEADERS = ${cheaders:=.h} ${libs} ${cfaheaders} 68 68 -
src/libcfa/Makefile.in
rc5833e8 r0f9e4403 83 83 libcfa_a_AR = $(AR) $(ARFLAGS) 84 84 libcfa_a_LIBADD = 85 am__objects_1 = stdlib.$(OBJEXT) iostream.$(OBJEXT) fstream.$(OBJEXT) \86 iterator.$(OBJEXT)85 am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) iostream.$(OBJEXT) \ 86 fstream.$(OBJEXT) iterator.$(OBJEXT) rational.$(OBJEXT) 87 87 am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1) 88 88 libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS) … … 213 213 MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} \ 214 214 ${addprefix ${libdir}/,${lib_LIBRARIES}} ${includedir}/* 215 libs = stdlib iostream fstream iterator215 libs = limits stdlib iostream fstream iterator rational 216 216 libcfa_a_SOURCES = libcfa-prelude.c ${libs:=.c} 217 cheaders = bfd bfdlink demangle dialog evdns evhttp evrpc expat fcntl form gcrypt math218 cfaheaders = limits217 cheaders = # expat 218 cfaheaders = # limits 219 219 include_HEADERS = ${cheaders:=.h} ${libs} ${cfaheaders} 220 220 all: all-am … … 231 231 esac; \ 232 232 done; \ 233 echo ' cd $(top_srcdir) && $(AUTOMAKE) -- gnusrc/libcfa/Makefile'; \233 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcfa/Makefile'; \ 234 234 $(am__cd) $(top_srcdir) && \ 235 $(AUTOMAKE) -- gnusrc/libcfa/Makefile235 $(AUTOMAKE) --foreign src/libcfa/Makefile 236 236 .PRECIOUS: Makefile 237 237 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status … … 297 297 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iterator.Po@am__quote@ 298 298 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa-prelude.Po@am__quote@ 299 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Po@am__quote@ 300 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@ 299 301 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@ 300 302 -
src/libcfa/builtins.cf
rc5833e8 r0f9e4403 390 390 int __builtin_sprintf(char *, const char *, ...); 391 391 int __builtin_sscanf(const char *, const char *, ...); 392 int __builtin_vfprintf(struct _IO_FILE *, const char *, void **);393 int __builtin_vfscanf(struct _IO_FILE *, const char *, void **);394 int __builtin_vprintf(const char *, void **);395 int __builtin_vscanf(const char *, void **);396 int __builtin_vsnprintf(char *, unsigned long, const char *, void **);397 int __builtin_vsprintf(char *, const char *, void **);398 int __builtin_vsscanf(const char *, const char *, void **);392 int __builtin_vfprintf(struct _IO_FILE *, const char *, __builtin_va_list); 393 int __builtin_vfscanf(struct _IO_FILE *, const char *, __builtin_va_list); 394 int __builtin_vprintf(const char *, __builtin_va_list); 395 int __builtin_vscanf(const char *, __builtin_va_list); 396 int __builtin_vsnprintf(char *, unsigned long, const char *, __builtin_va_list); 397 int __builtin_vsprintf(char *, const char *, __builtin_va_list); 398 int __builtin_vsscanf(const char *, const char *, __builtin_va_list); 399 399 int __builtin_isalnum(int); 400 400 int __builtin_isalpha(int); … … 534 534 void __builtin_unwind_init(); 535 535 void __builtin_update_setjmp_buf(void *, int); 536 void __builtin_va_copy( void **, void **);537 void __builtin_va_end( void **);538 void __builtin_va_start( void **, ...);536 void __builtin_va_copy(__builtin_va_list, __builtin_va_list); 537 void __builtin_va_end(__builtin_va_list); 538 void __builtin_va_start(__builtin_va_list, ...); 539 539 int __builtin_va_arg_pack(); 540 540 int __builtin_va_arg_pack_len(); … … 563 563 int __builtin___snprintf_chk(char *, unsigned long, int, unsigned long, const char *, ...); 564 564 int __builtin___sprintf_chk(char *, int, unsigned long, const char *, ...); 565 int __builtin___vsnprintf_chk(char *, unsigned long, int, unsigned long, const char *, void **);566 int __builtin___vsprintf_chk(char *, int, unsigned long, const char *, void **);565 int __builtin___vsnprintf_chk(char *, unsigned long, int, unsigned long, const char *, __builtin_va_list); 566 int __builtin___vsprintf_chk(char *, int, unsigned long, const char *, __builtin_va_list); 567 567 int __builtin___fprintf_chk(struct _IO_FILE *, int, const char *, ...); 568 568 int __builtin___printf_chk(int, const char *, ...); 569 int __builtin___vfprintf_chk(struct _IO_FILE *, int, const char *, void **);570 int __builtin___vprintf_chk(int, const char *, void **);569 int __builtin___vfprintf_chk(struct _IO_FILE *, int, const char *, __builtin_va_list); 570 int __builtin___vprintf_chk(int, const char *, __builtin_va_list); 571 571 void __cyg_profile_func_enter(void *, void *); 572 572 void __cyg_profile_func_exit(void *, void *); … … 583 583 const char * __builtin_FUNCTION(); 584 584 int __builtin_LINE(); 585 typedef void ** __builtin_va_list;586 585 extern const char *__PRETTY_FUNCTION__; 587 typedef int wchar_t; -
src/libcfa/fstream
rc5833e8 r0f9e4403 7 7 // fstream -- 8 8 // 9 // Author : Richard C. Bilson9 // Author : Peter A. Buhr 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 14:02:01201613 // Update Count : 2212 // Last Modified On : Tue Apr 5 22:37:12 2016 13 // Update Count : 82 14 14 // 15 15 … … 19 19 #include "iostream" 20 20 21 // implement context ostream 22 struct ofstream; 21 enum { separateSize = 16 }; 22 struct ofstream { 23 void *file; 24 _Bool sepDefault; 25 _Bool sepOnOff; 26 char separator[separateSize]; 27 }; // ofstream 23 28 24 int fail( ofstream * os ); 25 int flush( ofstream * os ); 26 void open( ofstream ** os, const char * name, const char * mode ); 27 void close( ofstream * os ); 28 ofstream * write( ofstream * os, const char * data, streamsize_type size ); 29 _Bool sepPrt( ofstream * ); 30 void sepOn( ofstream * ); 31 void sepOff( ofstream * ); 32 void sepReset( ofstream * ); 33 void sepReset( ofstream *, _Bool ); 34 void sepSet( ofstream *, const char * ); 35 const char * sepGet( ofstream * ); 36 _Bool sepDisable( ofstream * ); 37 _Bool sepEnable( ofstream * ); 38 int fail( ofstream * ); 39 int flush( ofstream * ); 40 void open( ofstream *, const char * name, const char * mode ); 41 void close( ofstream * ); 42 ofstream * write( ofstream *, const char * data, unsigned long int size ); 43 int prtfmt( ofstream *, const char fmt[], ... ); 29 44 30 45 extern ofstream * sout, * serr; 31 46 32 47 // implement context istream 33 struct ifstream; 48 struct ifstream { 49 void *file; 50 }; // ifstream 34 51 35 52 int fail( ifstream * is ); 36 53 int eof( ifstream * is ); 37 void open( ifstream * *is, const char * name, const char * mode );54 void open( ifstream * is, const char * name, const char * mode ); 38 55 void close( ifstream * is ); 39 ifstream * get( ifstream * is, int * data ); 40 ifstream * read( ifstream * is, char * data, streamsize_type size ); 56 ifstream * read( ifstream * is, char * data, unsigned long int size ); 41 57 ifstream * ungetc( ifstream * is, char c ); 58 int scanfmt( ifstream *, const char fmt[], ... ); 42 59 43 60 extern ifstream *sin; … … 49 66 // tab-width: 4 // 50 67 // End: // 68 -
src/libcfa/fstream.c
rc5833e8 r0f9e4403 7 7 // fstream.c -- 8 8 // 9 // Author : Richard C. Bilson9 // Author : Peter A. Buhr 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 14:03:05201613 // Update Count : 7612 // Last Modified On : Wed Apr 6 17:55:27 2016 13 // Update Count : 176 14 14 // 15 15 … … 17 17 18 18 extern "C" { 19 #include <stdio.h> 20 #include <stdlib.h> 19 #include <stdio.h> // vfprintf, vfscanf 20 #include <stdlib.h> // exit 21 #include <stdarg.h> // varargs 22 #include <string.h> // strlen 23 #include <float.h> // DBL_DIG, LDBL_DIG 24 #include <complex.h> // creal, cimag 21 25 } 22 26 23 struct ofstream { 24 FILE *file; 25 }; 27 #define IO_MSG "I/O error: " 26 28 27 #define IO_MSG "I/O error " 29 _Bool sepPrt( ofstream * os ) { return os->sepOnOff; } 30 void sepOn( ofstream * os ) { os->sepOnOff = 1; } 31 void sepOff( ofstream * os ) { os->sepOnOff = 0; } 32 void sepReset( ofstream * os ) { os->sepOnOff = os->sepDefault; } 33 void sepReset( ofstream * os, _Bool reset ) { os->sepDefault = reset; os->sepOnOff = os->sepDefault; } 34 void sepSet( ofstream * os, const char * s ) { 35 strncpy( &(os->separator[0]), s, separateSize - 1 ); 36 os->separator[separateSize - 1] = '\0'; 37 } // sepSet 38 const char * sepGet( ofstream * os ) { return &(os->separator[0]); } 39 _Bool sepDisable( ofstream *os ) { 40 _Bool temp = os->sepDefault; 41 os->sepDefault = 0; 42 sepReset( os ); 43 return temp; 44 } // sepDisable 45 _Bool sepEnable( ofstream *os ) { 46 _Bool temp = os->sepDefault; 47 os->sepDefault = 1; 48 sepReset( os ); 49 return temp; 50 } // sepEnable 28 51 29 52 int fail( ofstream * os ) { 30 return ferror( os->file);53 return ferror( (FILE *)(os->file) ); 31 54 } // fail 32 55 33 56 int flush( ofstream * os ) { 34 return fflush( os->file);57 return fflush( (FILE *)(os->file) ); 35 58 } // flush 36 59 37 void open( ofstream ** os, const char * name, const char * mode ) { 38 FILE *t = fopen( name, mode ); 39 if ( t == 0 ) { // do not change unless successful 40 perror( IO_MSG "open output" ); 60 void open( ofstream * os, const char * name, const char * mode ) { 61 FILE *file = fopen( name, mode ); 62 if ( file == 0 ) { // do not change unless successful 63 fprintf( stderr, IO_MSG "open output file \"%s\", ", name ); 64 perror( 0 ); 41 65 exit( EXIT_FAILURE ); 42 66 } // if 43 (*os)->file = t; 67 os->file = file; 68 sepOff( os ); 69 sepSet( os, " " ); 44 70 } // open 45 71 46 72 void close( ofstream * os ) { 47 if ( os->file == stdout || os->file== stderr ) return;73 if ( (FILE *)(os->file) == stdout || (FILE *)(os->file) == stderr ) return; 48 74 49 if ( fclose( os->file) == EOF ) {75 if ( fclose( (FILE *)(os->file) ) == EOF ) { 50 76 perror( IO_MSG "close output" ); 51 77 } // if 52 78 } // close 53 79 54 ofstream * write( ofstream * os, const char * data, streamsize_typesize ) {80 ofstream * write( ofstream * os, const char * data, unsigned long int size ) { 55 81 if ( fail( os ) ) { 56 82 fprintf( stderr, "attempt write I/O on failed stream\n" ); … … 58 84 } // if 59 85 60 if ( fwrite( data, 1, size, os->file) != size ) {86 if ( fwrite( data, 1, size, (FILE *)(os->file) ) != size ) { 61 87 perror( IO_MSG "write" ); 62 88 exit( EXIT_FAILURE ); … … 65 91 } // write 66 92 67 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_) }; 93 int prtfmt( ofstream * os, const char fmt[], ... ) { 94 va_list args; 95 96 va_start( args, fmt ); 97 int len = vfprintf( (FILE *)(os->file), fmt, args ); 98 if ( len == EOF ) { 99 if ( ferror( (FILE *)(os->file) ) ) { 100 fprintf( stderr, "invalid write\n" ); 101 exit( EXIT_FAILURE ); 102 } // if 103 } // if 104 va_end( args ); 105 return len; 106 } // prtfmt 107 108 109 static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), 1, 0, { ' ', '\0' } }; 68 110 ofstream *sout = &soutFile; 69 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_) };111 static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), 1, 0, { ' ', '\0' } }; 70 112 ofstream *serr = &serrFile; 113 71 114 72 115 //--------------------------------------- 73 116 74 struct ifstream {75 FILE *file;76 };77 117 78 118 int fail( ifstream * is ) { 79 return ferror( is->file);119 return ferror( (FILE *)(is->file) ); 80 120 } // fail 81 121 82 122 int eof( ifstream * is ) { 83 return feof( is->file);123 return feof( (FILE *)(is->file) ); 84 124 } // eof 85 125 86 ifstream * get( ifstream * is, int * data) {87 if ( fscanf( is->file, "%d", data ) == EOF ) {88 if ( ferror( is->file ) ) {89 fprintf( stderr, "invalid int read\n");90 exit( EXIT_FAILURE);91 } // if126 void open( ifstream * is, const char * name, const char * mode ) { 127 FILE *t = fopen( name, mode ); 128 if ( t == 0 ) { // do not change unless successful 129 fprintf( stderr, IO_MSG "open input file \"%s\", ", name ); 130 perror( 0 ); 131 exit( EXIT_FAILURE ); 92 132 } // if 93 return is;94 } // read133 is->file = t; 134 } // open 95 135 96 ifstream * read( ifstream * is, char * data, streamsize_type size ) { 136 void close( ifstream * is ) { 137 if ( (FILE *)(is->file) == stdin ) return; 138 139 if ( fclose( (FILE *)(is->file) ) == EOF ) { 140 perror( IO_MSG "close input" ); 141 } // if 142 } // close 143 144 ifstream * read( ifstream * is, char * data, unsigned long int size ) { 97 145 if ( fail( is ) ) { 98 146 fprintf( stderr, "attempt read I/O on failed stream\n" ); … … 100 148 } // if 101 149 102 if ( fread( data, size, 1, is->file) == 0 ) {150 if ( fread( data, size, 1, (FILE *)(is->file) ) == 0 ) { 103 151 perror( IO_MSG "read" ); 104 152 exit( EXIT_FAILURE ); … … 113 161 } // if 114 162 115 if ( ungetc( c, is->file) == EOF ) {163 if ( ungetc( c, (FILE *)(is->file) ) == EOF ) { 116 164 perror( IO_MSG "ungetc" ); 117 165 exit( EXIT_FAILURE ); … … 120 168 } // ungetc 121 169 122 void open( ifstream ** is, const char * name, const char * mode ) { 123 FILE *t = fopen( name, mode ); 124 if ( t == 0 ) { // do not change unless successful 125 perror( IO_MSG "open input" ); 126 exit( EXIT_FAILURE ); 170 int scanfmt( ifstream * is, const char fmt[], ... ) { 171 va_list args; 172 173 va_start( args, fmt ); 174 int len = vfscanf( (FILE *)(is->file), fmt, args ); 175 if ( len == EOF ) { 176 if ( ferror( (FILE *)(is->file) ) ) { 177 fprintf( stderr, "invalid read\n" ); 178 exit( EXIT_FAILURE ); 179 } // if 127 180 } // if 128 (*is)->file = t; 129 } // open 181 va_end( args ); 182 return len; 183 } // prtfmt 130 184 131 void close( ifstream * is ) {132 if ( is->file == stdin ) return;133 134 if ( fclose( is->file ) == EOF ) {135 perror( IO_MSG "close input" );136 } // if137 } // close138 185 139 186 static ifstream sinFile = { (FILE *)(&_IO_2_1_stdin_) }; … … 142 189 // Local Variables: // 143 190 // tab-width: 4 // 144 // compile-command: "cfa fstream.c" //145 191 // End: // -
src/libcfa/iostream
rc5833e8 r0f9e4403 7 7 // iostream -- 8 8 // 9 // Author : Richard C. Bilson9 // Author : Peter A. Buhr 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 14:04:24201613 // Update Count : 3212 // Last Modified On : Sun Apr 10 23:00:12 2016 13 // Update Count : 92 14 14 // 15 15 16 #ifndef IOSTREAM_H17 #define IOSTREAM_H16 #ifndef __IOSTREAM_H__ 17 #define __IOSTREAM_H__ 18 18 19 19 #include "iterator" 20 20 21 typedef unsigned long streamsize_type; 21 trait ostream( dtype ostype ) { 22 _Bool sepPrt( ostype * ); // return separator state (on/off) 23 void sepOn( ostype * ); // turn separator state on 24 void sepOff( ostype * ); // turn separator state off 25 void sepReset( ostype * ); // set separator state to default state 26 void sepReset( ostype *, _Bool ); // set separator and default state 27 void sepSet( ostype *, const char * ); // set separator to string (15 character maximum) 28 const char * sepGet( ostype * ); // get separator string 29 _Bool sepDisable( ostype * ); // set default state to off, and return previous state 30 _Bool sepEnable( ostype * ); // set default state to on, and return previous state 22 31 23 context ostream( dtype ostype ) {24 32 int fail( ostype * ); 25 33 int flush( ostype * ); 26 ostype * write( ostype *, const char *, streamsize_type ); 34 void open( ostype * os, const char * name, const char * mode ); 35 void close( ostype * os ); 36 ostype * write( ostype *, const char *, unsigned long int ); 37 int prtfmt( ostype *, const char fmt[], ... ); 27 38 }; 28 context writeable( type T ) { 39 40 trait writeable( otype T ) { 29 41 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, T ); 30 42 }; … … 33 45 34 46 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, char ); 47 48 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, short int ); 49 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned short int ); 35 50 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, int ); 36 51 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned int ); … … 39 54 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long int ); 40 55 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, unsigned long long int ); 56 41 57 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float ); // FIX ME: should not be required 42 58 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double ); 43 59 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double ); 60 44 61 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, float _Complex ); 45 62 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, double _Complex ); 46 63 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, long double _Complex ); 64 47 65 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const char * ); 48 66 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, const void * ); 49 67 50 forall( dtype ostype , dtype retostype | ostream( ostype ) | ostream( retostype ) ) retostype * ?|?( ostype *os, retostype * (* manip)(ostype*) );68 forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, ostype * (*)( ostype * ) ); 51 69 forall( dtype ostype | ostream( ostype ) ) ostype * endl( ostype * ); 70 forall( dtype ostype | ostream( ostype ) ) ostype * sepOn( ostype * ); 71 forall( dtype ostype | ostream( ostype ) ) ostype * sepOff( ostype * ); 72 forall( dtype ostype | ostream( ostype ) ) ostype * sepDisable( ostype * ); 73 forall( dtype ostype | ostream( ostype ) ) ostype * sepEnable( ostype * ); 52 74 53 75 // writes the range [begin, end) to the given stream 54 forall( type elt_type | writeable( elt_type ),type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )76 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) ) 55 77 void write( iterator_type begin, iterator_type end, os_type *os ); 56 78 57 forall( type elt_type | writeable( elt_type ),type iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) )79 forall( otype elt_type | writeable( elt_type ), otype iterator_type | iterator( iterator_type, elt_type ), dtype os_type | ostream( os_type ) ) 58 80 void write_reverse( iterator_type begin, iterator_type end, os_type *os ); 59 81 60 82 //--------------------------------------- 61 83 62 context istream( dtype istype ) {84 trait istream( dtype istype ) { 63 85 int fail( istype * ); 64 86 int eof( istype * ); 65 istype * get( istype *, int * ); 66 istype * read( istype *, char *, streamsize_type ); 87 void open( istype * is, const char * name, const char * mode ); 88 void close( istype * is ); 89 istype * read( istype *, char *, unsigned long int ); 67 90 istype * ungetc( istype *, char ); 91 int scanfmt( istype *, const char fmt[], ... ); 68 92 }; 69 93 70 context readable(type T ) {94 trait readable( otype T ) { 71 95 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, T ); 72 96 }; 73 97 74 forall( dtype istype | istream( istype ) ) 75 istype * ?|?( istype *, char * ); 98 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, char * ); 76 99 77 forall( dtype istype | istream( istype ) ) 78 istype * ?|?( istype *, int * ); 100 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, short int * ); 101 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned short int * ); 102 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, int * ); 103 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned int * ); 104 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long int * ); 105 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long long int * ); 106 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long int * ); 107 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, unsigned long long int * ); 79 108 80 #endif // IOSTREAM_H 109 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float * ); 110 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double * ); 111 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double * ); 112 113 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, float _Complex * ); 114 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, double _Complex * ); 115 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, long double _Complex * ); 116 117 struct _Istream_cstrUC { char * s; }; 118 _Istream_cstrUC cstr( char * ); 119 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, _Istream_cstrUC ); 120 121 struct _Istream_cstrC { char * s; int size; }; 122 _Istream_cstrC cstr( char *, int size ); 123 forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, _Istream_cstrC ); 124 125 #endif // __IOSTREAM_H__ 81 126 82 127 // Local Variables: // -
src/libcfa/iostream.c
rc5833e8 r0f9e4403 7 7 // iostream.c -- 8 8 // 9 // Author : Richard C. Bilson9 // Author : Peter A. Buhr 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 17 14:19:56201613 // Update Count : 7612 // Last Modified On : Wed Apr 6 16:13:29 2016 13 // Update Count : 278 14 14 // 15 15 … … 21 21 #include <float.h> // DBL_DIG, LDBL_DIG 22 22 #include <complex.h> // creal, cimag 23 #include <ctype.h> // isspace, ispunct 23 24 } 24 25 25 26 forall( dtype ostype | ostream( ostype ) ) 26 27 ostype * ?|?( ostype *os, char c ) { 27 return write( os, &c, 1 ); 28 prtfmt( os, "%c", c ); 29 sepOff( os ); 30 return os; 31 } // ?|? 32 33 forall( dtype ostype | ostream( ostype ) ) 34 ostype * ?|?( ostype *os, short int si ) { 35 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 36 sepReset( os ); 37 prtfmt( os, "%hd", si ); 38 return os; 39 } // ?|? 40 41 forall( dtype ostype | ostream( ostype ) ) 42 ostype * ?|?( ostype *os, unsigned short int usi ) { 43 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 44 sepReset( os ); 45 prtfmt( os, "%hu", usi ); 46 return os; 28 47 } // ?|? 29 48 30 49 forall( dtype ostype | ostream( ostype ) ) 31 50 ostype * ?|?( ostype *os, int i ) { 32 char buffer[32]; 33 return write( os, buffer, sprintf( buffer, "%d", i ) ); 34 } // ?|? 35 36 forall( dtype ostype | ostream( ostype ) ) 37 ostype * ?|?( ostype *os, unsigned int i ) { 38 char buffer[32]; 39 return write( os, buffer, sprintf( buffer, "%u", i ) ); 40 } // ?|? 41 42 forall( dtype ostype | ostream( ostype ) ) 43 ostype * ?|?( ostype *os, long int i ) { 44 char buffer[32]; 45 return write( os, buffer, sprintf( buffer, "%ld", i ) ); 46 } // ?|? 47 48 forall( dtype ostype | ostream( ostype ) ) 49 ostype * ?|?( ostype *os, long long int i ) { 50 char buffer[32]; 51 return write( os, buffer, sprintf( buffer, "%lld", i ) ); 52 } // ?|? 53 54 forall( dtype ostype | ostream( ostype ) ) 55 ostype * ?|?( ostype *os, unsigned long int i ) { 56 char buffer[32]; 57 return write( os, buffer, sprintf( buffer, "%lu", i ) ); 58 } // ?|? 59 60 forall( dtype ostype | ostream( ostype ) ) 61 ostype * ?|?( ostype *os, unsigned long long int i ) { 62 char buffer[32]; 63 return write( os, buffer, sprintf( buffer, "%llu", i ) ); 51 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 52 sepReset( os ); 53 prtfmt( os, "%d", i ); 54 return os; 55 } // ?|? 56 57 forall( dtype ostype | ostream( ostype ) ) 58 ostype * ?|?( ostype *os, unsigned int ui ) { 59 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 60 sepReset( os ); 61 prtfmt( os, "%u", ui ); 62 return os; 63 } // ?|? 64 65 forall( dtype ostype | ostream( ostype ) ) 66 ostype * ?|?( ostype *os, long int li ) { 67 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 68 sepReset( os ); 69 prtfmt( os, "%ld", li ); 70 return os; 71 } // ?|? 72 73 forall( dtype ostype | ostream( ostype ) ) 74 ostype * ?|?( ostype *os, unsigned long int uli ) { 75 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 76 sepReset( os ); 77 prtfmt( os, "%lu", uli ); 78 return os; 79 } // ?|? 80 81 forall( dtype ostype | ostream( ostype ) ) 82 ostype * ?|?( ostype *os, long long int lli ) { 83 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 84 sepReset( os ); 85 prtfmt( os, "%lld", lli ); 86 return os; 87 } // ?|? 88 89 forall( dtype ostype | ostream( ostype ) ) 90 ostype * ?|?( ostype *os, unsigned long long int ulli ) { 91 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 92 sepReset( os ); 93 prtfmt( os, "%llu", ulli ); 94 return os; 64 95 } // ?|? 65 96 66 97 forall( dtype ostype | ostream( ostype ) ) 67 98 ostype * ?|?( ostype *os, float f ) { 68 char buffer[32]; 69 return write( os, buffer, sprintf( buffer, "%g", f ) ); 99 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 100 sepReset( os ); 101 prtfmt( os, "%g", f ); 102 return os; 70 103 } // ?|? 71 104 72 105 forall( dtype ostype | ostream( ostype ) ) 73 106 ostype * ?|?( ostype *os, double d ) { 74 char buffer[32]; 75 return write( os, buffer, sprintf( buffer, "%.*lg", DBL_DIG, d ) ); 76 } // ?|? 77 78 forall( dtype ostype | ostream( ostype ) ) 79 ostype * ?|?( ostype *os, long double d ) { 80 char buffer[32]; 81 return write( os, buffer, sprintf( buffer, "%.*Lg", LDBL_DIG, d ) ); 82 } // ?|? 83 84 forall( dtype ostype | ostream( ostype ) ) 85 ostype * ?|?( ostype *os, float _Complex c ) { 86 return os | crealf( c ) | (cimagf( c ) < 0 ? "" : "+") | cimagf( c ) | 'i'; 87 } // ?|? 88 89 forall( dtype ostype | ostream( ostype ) ) 90 ostype * ?|?( ostype *os, double _Complex c ) { 91 return os | creal( c ) | (cimag( c ) < 0 ? "" : "+") | cimag( c ) | 'i'; 92 } // ?|? 93 94 forall( dtype ostype | ostream( ostype ) ) 95 ostype * ?|?( ostype *os, long double _Complex c ) { 96 return os | creall( c ) | (cimagl( c ) < 0 ? "" : "+") | cimagl( c ) | 'i'; 107 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 108 sepReset( os ); 109 prtfmt( os, "%.*lg", DBL_DIG, d ); 110 return os; 111 } // ?|? 112 113 forall( dtype ostype | ostream( ostype ) ) 114 ostype * ?|?( ostype *os, long double ld ) { 115 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 116 sepReset( os ); 117 prtfmt( os, "%.*Lg", LDBL_DIG, ld ); 118 return os; 119 } // ?|? 120 121 forall( dtype ostype | ostream( ostype ) ) 122 ostype * ?|?( ostype *os, float _Complex fc ) { 123 os | crealf( fc ); 124 _Bool temp = sepDisable( os ); // disable separators within complex value 125 if ( cimagf( fc ) >= 0 ) os | '+'; // negative value prints '-' 126 os | cimagf( fc ) | 'i'; 127 sepReset( os, temp ); // reset separator 128 return os; 129 } // ?|? 130 131 forall( dtype ostype | ostream( ostype ) ) 132 ostype * ?|?( ostype *os, double _Complex dc ) { 133 os | creal( dc ); 134 _Bool temp = sepDisable( os ); // disable separators within complex value 135 if ( cimag( dc ) >= 0 ) os | '+'; // negative value prints '-' 136 os | cimag( dc ) | 'i'; 137 sepReset( os, temp ); // reset separator 138 return os; 139 } // ?|? 140 141 forall( dtype ostype | ostream( ostype ) ) 142 ostype * ?|?( ostype *os, long double _Complex ldc ) { 143 os | creall( ldc ); 144 _Bool temp = sepDisable( os ); // disable separators within complex value 145 if ( cimagl( ldc ) >= 0 ) os | '+'; // negative value prints '-' 146 os | cimagl( ldc ) | 'i'; 147 sepReset( os, temp ); // reset separator 148 return os; 149 } // ?|? 150 151 forall( dtype ostype | ostream( ostype ) ) 152 ostype * ?|?( ostype *os, const char *cp ) { 153 enum { Open = 1, Close, OpenClose }; 154 static const unsigned char mask[256] = { 155 // opening delimiters 156 ['('] : Open, ['['] : Open, ['{'] : Open, 157 ['$'] : Open, [(unsigned char)'£'] : Open, [(unsigned char)'¥'] : Open, [(unsigned char)'¿'] : Open, [(unsigned char)'«'] : Open, 158 // closing delimiters 159 [','] : Close, ['.'] : Close, [':'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close, 160 [')'] : Close, [']'] : Close, ['}'] : Close, 161 ['%'] : Close, [(unsigned char)'¢'] : Close, [(unsigned char)'»'] : Close, 162 // opening-closing delimiters 163 ['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose, 164 ['\f'] : OpenClose, ['\n'] : OpenClose, ['\r'] : OpenClose, ['\t'] : OpenClose, ['\v'] : OpenClose, // isspace 165 }; // mask 166 167 int len = strlen( cp ); 168 // null string => no separator 169 if ( len == 0 ) { sepOff( os ); return os; } 170 // first character IS NOT spacing or closing punctuation => add left separator 171 unsigned char ch = cp[0]; // must make unsigned 172 if ( sepPrt( os ) && mask[ ch ] != Close && mask[ ch ] != OpenClose ) { 173 prtfmt( os, "%s", sepGet( os ) ); 174 } // if 175 // last character IS spacing or opening punctuation => turn off separator for next item 176 unsigned int posn = len - 1; 177 ch = cp[posn]; // must make unsigned 178 if ( mask[ ch ] == Open || mask[ ch ] == OpenClose ) { 179 sepOff( os ); 180 } else { 181 sepOn( os ); 182 } // if 183 return write( os, cp, len ); 97 184 } // ?|? 98 185 99 186 forall( dtype ostype | ostream( ostype ) ) 100 187 ostype * ?|?( ostype *os, const void *p ) { 101 char buffer[32]; 102 return write( os, buffer, sprintf( buffer, "%p", p ) ); 103 } // ?|? 104 105 forall( dtype ostype | ostream( ostype ) ) 106 ostype * ?|?( ostype *os, const char *cp ) { 107 return write( os, cp, strlen( cp ) ); 108 } // ?|? 109 110 111 forall( dtype ostype, dtype retostype | ostream( ostype ) | ostream( retostype ) ) 112 retostype * ?|?( ostype *os, retostype * (*manip)(ostype*) ) { 113 return manip( os ); 114 } 188 if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) ); 189 sepReset( os ); 190 prtfmt( os, "%p", p ); 191 return os; 192 } // ?|? 193 194 195 forall( dtype ostype | ostream( ostype ) ) 196 ostype * ?|?( ostype *os, ostype * (* manip)( ostype * ) ) { 197 return manip( os ); 198 } // ?|? 115 199 116 200 forall( dtype ostype | ostream( ostype ) ) 117 201 ostype * endl( ostype * os ) { 118 os | "\n";202 os | '\n'; 119 203 flush( os ); 204 sepOff( os ); 120 205 return os; 121 206 } // endl 122 207 208 forall( dtype ostype | ostream( ostype ) ) 209 ostype * sepOn( ostype * os ) { 210 sepOn( os ); 211 return os; 212 } // sepOn 213 214 forall( dtype ostype | ostream( ostype ) ) 215 ostype * sepOff( ostype * os ) { 216 sepOff( os ); 217 return os; 218 } // sepOff 219 220 forall( dtype ostype | ostream( ostype ) ) 221 ostype * sepEnable( ostype * os ) { 222 sepEnable( os ); 223 return os; 224 } // sepEnable 225 226 forall( dtype ostype | ostream( ostype ) ) 227 ostype * sepDisable( ostype * os ) { 228 sepDisable( os ); 229 return os; 230 } // sepDisable 231 123 232 //--------------------------------------- 124 233 125 forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), 126 dtype os_type | ostream( os_type ) ) 127 void write( iterator_type begin, iterator_type end, os_type *os ) { 128 void print( elt_type i ) { os | i | ' '; } 234 forall( otype elttype | writeable( elttype ), otype iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) ) 235 void write( iteratortype begin, iteratortype end, ostype *os ) { 236 void print( elttype i ) { os | i; } 129 237 for_each( begin, end, print ); 130 238 } // ?|? 131 239 132 forall( type elt_type | writeable( elt_type ), type iterator_type | iterator( iterator_type, elt_type ), 133 dtype os_type | ostream( os_type ) ) 134 void write_reverse( iterator_type begin, iterator_type end, os_type *os ) { 135 void print( elt_type i ) { os | i | ' '; } 240 forall( otype elttype | writeable( elttype ), otype iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) ) 241 void write_reverse( iteratortype begin, iteratortype end, ostype *os ) { 242 void print( elttype i ) { os | i; } 136 243 for_each_reverse( begin, end, print ); 137 244 } // ?|? … … 140 247 141 248 forall( dtype istype | istream( istype ) ) 142 istype * ?|?( istype *is, char *cp ) { 143 return read( is, cp, 1 ); 144 } // ?|? 145 146 forall( dtype istype | istream( istype ) ) 147 istype * ?|?( istype *is, int *ip ) { 148 return get( is, ip ); 149 } // ?|? 249 istype * ?|?( istype * is, char * c ) { 250 scanfmt( is, "%c", c ); 251 return is; 252 } // ?|? 253 254 forall( dtype istype | istream( istype ) ) 255 istype * ?|?( istype * is, short int * si ) { 256 scanfmt( is, "%hd", si ); 257 return is; 258 } // ?|? 259 260 forall( dtype istype | istream( istype ) ) 261 istype * ?|?( istype * is, unsigned short int * usi ) { 262 scanfmt( is, "%hu", usi ); 263 return is; 264 } // ?|? 265 266 forall( dtype istype | istream( istype ) ) 267 istype * ?|?( istype * is, int * i ) { 268 scanfmt( is, "%d", i ); 269 return is; 270 } // ?|? 271 272 forall( dtype istype | istream( istype ) ) 273 istype * ?|?( istype * is, unsigned int * ui ) { 274 scanfmt( is, "%u", ui ); 275 return is; 276 } // ?|? 277 278 forall( dtype istype | istream( istype ) ) 279 istype * ?|?( istype * is, long int * li ) { 280 scanfmt( is, "%ld", li ); 281 return is; 282 } // ?|? 283 284 forall( dtype istype | istream( istype ) ) 285 istype * ?|?( istype * is, unsigned long int * ulli ) { 286 scanfmt( is, "%lu", ulli ); 287 return is; 288 } // ?|? 289 290 forall( dtype istype | istream( istype ) ) 291 istype * ?|?( istype * is, long long int * lli ) { 292 scanfmt( is, "%lld", lli ); 293 return is; 294 } // ?|? 295 296 forall( dtype istype | istream( istype ) ) 297 istype * ?|?( istype * is, unsigned long long int * ulli ) { 298 scanfmt( is, "%llu", ulli ); 299 return is; 300 } // ?|? 301 302 303 forall( dtype istype | istream( istype ) ) 304 istype * ?|?( istype * is, float * f ) { 305 scanfmt( is, "%f", f ); 306 return is; 307 } // ?|? 308 309 forall( dtype istype | istream( istype ) ) 310 istype * ?|?( istype * is, double * d ) { 311 scanfmt( is, "%lf", d ); 312 return is; 313 } // ?|? 314 315 forall( dtype istype | istream( istype ) ) 316 istype * ?|?( istype * is, long double * ld ) { 317 scanfmt( is, "%Lf", ld ); 318 return is; 319 } // ?|? 320 321 322 forall( dtype istype | istream( istype ) ) 323 istype * ?|?( istype * is, float _Complex * fc ) { 324 float re, im; 325 scanfmt( is, "%g%gi", &re, &im ); 326 *fc = re + im * _Complex_I; 327 return is; 328 } // ?|? 329 330 forall( dtype istype | istream( istype ) ) 331 istype * ?|?( istype * is, double _Complex * dc ) { 332 double re, im; 333 scanfmt( is, "%lf%lfi", &re, &im ); 334 *dc = re + im * _Complex_I; 335 return is; 336 } // ?|? 337 338 forall( dtype istype | istream( istype ) ) 339 istype * ?|?( istype * is, long double _Complex * ldc ) { 340 long double re, im; 341 scanfmt( is, "%Lf%Lfi", &re, &im ); 342 *ldc = re + im * _Complex_I; 343 return is; 344 } // ?|? 345 346 _Istream_cstrUC cstr( char * s ) { _Istream_cstrUC s = { s }; return s; } 347 forall( dtype istype | istream( istype ) ) 348 istype * ?|?( istype * is, _Istream_cstrUC cstr ) { 349 scanfmt( is, "%s", cstr.s ); 350 return is; 351 } // cstr 352 353 _Istream_cstrC cstr( char * s, int size ) { _Istream_cstrC s = { s, size }; return s; } 354 forall( dtype istype | istream( istype ) ) 355 istype * ?|?( istype * is, _Istream_cstrC cstr ) { 356 char buf[16]; 357 sprintf( buf, "%%%ds", cstr.size ); 358 scanfmt( is, buf, cstr.s ); 359 return is; 360 } // cstr 150 361 151 362 // Local Variables: // -
src/libcfa/iterator
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Jan 27 23:49:13201613 // Update Count : 712 // Last Modified On : Wed Mar 2 18:06:05 2016 13 // Update Count : 9 14 14 // 15 15 … … 18 18 19 19 // An iterator can be used to traverse a data structure. 20 context iterator( type iterator_type,type elt_type ) {20 trait iterator( otype iterator_type, otype elt_type ) { 21 21 // point to the next element 22 22 // iterator_type ?++( iterator_type * ); … … 32 32 }; 33 33 34 context iterator_for( type iterator_type, type collection_type,type elt_type | iterator( iterator_type, elt_type ) ) {34 trait iterator_for( otype iterator_type, otype collection_type, otype elt_type | iterator( iterator_type, elt_type ) ) { 35 35 // [ iterator_type begin, iterator_type end ] get_iterators( collection_type ); 36 36 iterator_type begin( collection_type ); … … 38 38 }; 39 39 40 forall( type iterator_type,type elt_type | iterator( iterator_type, elt_type ) )40 forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) ) 41 41 void for_each( iterator_type begin, iterator_type end, void (*func)( elt_type ) ); 42 42 43 forall( type iterator_type,type elt_type | iterator( iterator_type, elt_type ) )43 forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) ) 44 44 void for_each_reverse( iterator_type begin, iterator_type end, void (*func)( elt_type ) ); 45 45 -
src/libcfa/iterator.c
rc5833e8 r0f9e4403 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jan 26 17:16:07201613 // Update Count : 2 612 // Last Modified On : Wed Mar 2 18:08:11 2016 13 // Update Count : 27 14 14 // 15 15 16 16 #include "iterator" 17 17 18 forall( type iterator_type,type elt_type | iterator( iterator_type, elt_type ) )18 forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) ) 19 19 void for_each( iterator_type begin, iterator_type end, void (*func)( elt_type ) ) { 20 20 for ( iterator_type i = begin; i != end; ++i ) { … … 23 23 } 24 24 25 forall( type iterator_type,type elt_type | iterator( iterator_type, elt_type ) )25 forall( otype iterator_type, otype elt_type | iterator( iterator_type, elt_type ) ) 26 26 void for_each_reverse( iterator_type begin, iterator_type end, void (*func)( elt_type ) ) { 27 27 for ( iterator_type i = end; i != begin; ) { -
src/libcfa/limits
rc5833e8 r0f9e4403 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 // limits -- 8 // 9 // Author : Peter A. Buhr 10 // Created On : Wed Apr 6 18:06:52 2016 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Apr 6 21:08:16 2016 13 // Update Count : 6 14 // 15 1 16 // Integral Constants 2 17 3 const short int MIN = -32768;4 const int MIN = -2147483648;5 const long int MIN = -9223372036854775807L - 1L;6 const long long int MIN = -9223372036854775807LL - 1LL;18 extern const short int MIN; 19 extern const int MIN; 20 extern const long int MIN; 21 extern const long long int MIN; 7 22 8 const short int MAX = 32767;9 const unsigned short int MAX = 65535;10 const int MAX = 2147483647;11 const unsigned int MAX = 4294967295_U;12 const long int MAX = 9223372036854775807_L;13 const unsigned long int MAX = 4294967295_U;14 const long long int MAX = 9223372036854775807_LL;15 const unsigned long long int MAX = 18446744073709551615_ULL;23 extern const short int MAX; 24 extern const unsigned short int MAX; 25 extern const int MAX; 26 extern const unsigned int MAX; 27 extern const long int MAX; 28 extern const unsigned long int MAX; 29 extern const long long int MAX; 30 extern const unsigned long long int MAX; 16 31 17 32 // Floating-Point Constants 18 33 19 const float PI = 3.141592_F;// pi20 const float PI_2 = 1.570796_F;// pi / 221 const float PI_4 = 0.7853981_F;// pi / 422 const float _1_PI = 0.3183098_F;// 1 / pi23 const float _2_PI = 0.6366197_F;// 2 / pi24 const float _2_SQRT_PI = 1.128379_F;// 2 / sqrt(pi)34 extern const float PI; // pi 35 extern const float PI_2; // pi / 2 36 extern const float PI_4; // pi / 4 37 extern const float _1_PI; // 1 / pi 38 extern const float _2_PI; // 2 / pi 39 extern const float _2_SQRT_PI; // 2 / sqrt(pi) 25 40 26 const double PI = 3.14159265358979323846_D;// pi27 const double PI_2 = 1.57079632679489661923_D;// pi / 228 const double PI_4 = 0.78539816339744830962_D;// pi / 429 const double _1_PI = 0.31830988618379067154_D;// 1 / pi30 const double _2_PI = 0.63661977236758134308_D;// 2 / pi31 const double _2_SQRT_PI = 1.12837916709551257390_D;// 2 / sqrt(pi)41 extern const double PI; // pi 42 extern const double PI_2; // pi / 2 43 extern const double PI_4; // pi / 4 44 extern const double _1_PI; // 1 / pi 45 extern const double _2_PI; // 2 / pi 46 extern const double _2_SQRT_PI; // 2 / sqrt(pi) 32 47 33 const long double PI = 3.1415926535897932384626433832795029_DL;// pi34 const long double PI_2 = 1.5707963267948966192313216916397514_DL;// pi / 235 const long double PI_4 = 0.7853981633974483096156608458198757_DL;// pi / 436 const long double _1_PI = 0.3183098861837906715377675267450287_DL;// 1 / pi37 const long double _2_PI = 0.6366197723675813430755350534900574_DL;// 2 / pi38 const long double _2_SQRT_PI = 1.1283791670955125738961589031215452_DL;// 2 / sqrt(pi)48 extern const long double PI; // pi 49 extern const long double PI_2; // pi / 2 50 extern const long double PI_4; // pi / 4 51 extern const long double _1_PI; // 1 / pi 52 extern const long double _2_PI; // 2 / pi 53 extern const long double _2_SQRT_PI; // 2 / sqrt(pi) 39 54 40 const _Complex PI = 3.14159265358979323846_D+0.0_iD;// pi41 const _Complex PI_2 = 1.57079632679489661923_D+0.0_iD;// pi / 242 const _Complex PI_4 = 0.78539816339744830962_D+0.0_iD;// pi / 443 const _Complex _1_PI = 0.31830988618379067154_D+0.0_iD;// 1 / pi44 const _Complex _2_PI = 0.63661977236758134308_D+0.0_iD;// 2 / pi45 const _Complex _2_SQRT_PI = 1.12837916709551257390_D+0.0_iD;// 2 / sqrt(pi)55 extern const _Complex PI; // pi 56 extern const _Complex PI_2; // pi / 2 57 extern const _Complex PI_4; // pi / 4 58 extern const _Complex _1_PI; // 1 / pi 59 extern const _Complex _2_PI; // 2 / pi 60 extern const _Complex _2_SQRT_PI; // 2 / sqrt(pi) 46 61 47 const long _Complex PI = 3.1415926535897932384626433832795029_L+0.0iL;// pi48 const long _Complex PI_2 = 1.5707963267948966192313216916397514_L+0.0iL;// pi / 249 const long _Complex PI_4 = 0.7853981633974483096156608458198757_L+0.0iL;// pi / 450 const long _Complex _1_PI = 0.3183098861837906715377675267450287_L+0.0iL;// 1 / pi51 const long _Complex _2_PI = 0.6366197723675813430755350534900574_L+0.0iL;// 2 / pi52 const long _Complex _2_SQRT_PI = 1.1283791670955125738961589031215452_L+0.0iL;// 2 / sqrt(pi)62 extern const long _Complex PI; // pi 63 extern const long _Complex PI_2; // pi / 2 64 extern const long _Complex PI_4; // pi / 4 65 extern const long _Complex _1_PI; // 1 / pi 66 extern const long _Complex _2_PI; // 2 / pi 67 extern const long _Complex _2_SQRT_PI; // 2 / sqrt(pi) 53 68 54 const float E = 2.718281;// e55 const float LOG2_E = 1.442695;// log_2(e)56 const float LOG10_E = 0.4342944;// log_10(e)57 const float LN_2 = 0.6931471;// log_e(2)58 const float LN_10 = 2.302585;// log_e(10)59 const float SQRT_2 = 1.414213;// sqrt(2)60 const float _1_SQRT_2 = 0.7071067;// 1 / sqrt(2)69 extern const float E; // e 70 extern const float LOG2_E; // log_2(e) 71 extern const float LOG10_E; // log_10(e) 72 extern const float LN_2; // log_e(2) 73 extern const float LN_10; // log_e(10) 74 extern const float SQRT_2; // sqrt(2) 75 extern const float _1_SQRT_2; // 1 / sqrt(2) 61 76 62 const double E = 2.7182818284590452354_D;// e63 const double LOG2_E = 1.4426950408889634074_D;// log_2(e)64 const double LOG10_E = 0.43429448190325182765_D;// log_10(e)65 const double LN_2 = 0.69314718055994530942_D;// log_e(2)66 const double LN_10 = 2.30258509299404568402_D;// log_e(10)67 const double SQRT_2 = 1.41421356237309504880_D;// sqrt(2)68 const double _1_SQRT_2 = 0.70710678118654752440_D;// 1 / sqrt(2)77 extern const double E; // e 78 extern const double LOG2_E; // log_2(e) 79 extern const double LOG10_E; // log_10(e) 80 extern const double LN_2; // log_e(2) 81 extern const double LN_10; // log_e(10) 82 extern const double SQRT_2; // sqrt(2) 83 extern const double _1_SQRT_2; // 1 / sqrt(2) 69 84 70 const long double E = 2.7182818284590452353602874713526625_DL;// e71 const long double LOG2_E = 1.4426950408889634073599246810018921_DL;// log_2(e)72 const long double LOG10_E = 0.4342944819032518276511289189166051_DL;// log_10(e)73 const long double LN_2 = 0.6931471805599453094172321214581766_DL;// log_e(2)74 const long double LN_10 = 2.3025850929940456840179914546843642_DL;// log_e(10)75 const long double SQRT_2 = 1.4142135623730950488016887242096981_DL;// sqrt(2)76 const long double _1_SQRT_2 = 0.7071067811865475244008443621048490_DL;// 1/sqrt(2)85 extern const long double E; // e 86 extern const long double LOG2_E; // log_2(e) 87 extern const long double LOG10_E; // log_10(e) 88 extern const long double LN_2; // log_e(2) 89 extern const long double LN_10; // log_e(10) 90 extern const long double SQRT_2; // sqrt(2) 91 extern const long double _1_SQRT_2; // 1/sqrt(2) 77 92 78 const _Complex E = 2.7182818284590452354_D+0.0_iD;// e79 const _Complex LOG2_E = 1.4426950408889634074_D+0.0_iD;// log_2(e)80 const _Complex LOG10_E = 0.43429448190325182765_D+0.0_iD;// log_10(e)81 const _Complex LN_2 = 0.69314718055994530942_D+0.0_iD;// log_e(2)82 const _Complex LN_10 = 2.30258509299404568402_D+0.0_iD;// log_e(10)83 const _Complex SQRT_2 = 1.41421356237309504880_D+0.0_iD;// sqrt(2)84 const _Complex _1_SQRT_2 = 0.70710678118654752440_D+0.0_iD;// 1 / sqrt(2)93 extern const _Complex E; // e 94 extern const _Complex LOG2_E; // log_2(e) 95 extern const _Complex LOG10_E; // log_10(e) 96 extern const _Complex LN_2; // log_e(2) 97 extern const _Complex LN_10; // log_e(10) 98 extern const _Complex SQRT_2; // sqrt(2) 99 extern const _Complex _1_SQRT_2; // 1 / sqrt(2) 85 100 86 const long _Complex E = 2.7182818284590452353602874713526625_L+0.0_iL; // e 87 const long _Complex LOG2_E = 1.4426950408889634073599246810018921_L+0.0_iL; // log_2(e) 88 const long _Complex LOG10_E = 0.4342944819032518276511289189166051_L+0.0_iL; // log_10(e) 89 const long _Complex LN_2 = 0.6931471805599453094172321214581766_L+0.0_iL; // log_e(2) 90 const long _Complex LN_10 = 2.3025850929940456840179914546843642_L+0.0_iL; // log_e(10) 91 const long _Complex SQRT_2 = 1.4142135623730950488016887242096981_L+0.0_iL; // sqrt(2) 92 const long _Complex _1_SQRT_2 = 0.7071067811865475244008443621048490_L+0.0_iL; // 1 / sqrt(2) 101 extern const long _Complex E; // e 102 extern const long _Complex LOG2_E; // log_2(e) 103 extern const long _Complex LOG10_E; // log_10(e) 104 extern const long _Complex LN_2; // log_e(2) 105 extern const long _Complex LN_10; // log_e(10) 106 extern const long _Complex SQRT_2; // sqrt(2) 107 extern const long _Complex _1_SQRT_2; // 1 / sqrt(2) 108 109 // Local Variables: // 110 // mode: c // 111 // tab-width: 4 // 112 // End: // -
src/libcfa/prelude.cf
rc5833e8 r0f9e4403 1 # 2 "prelude.cf" // needed for error messages from this file 1 2 // -*- Mode: C -*- 2 3 // … … 8 9 // Created On : Sat Nov 29 07:23:41 2014 9 10 // Last Modified By : Peter A. Buhr 10 // Last Modified On : Mon Jan 4 11:13:26201611 // Update Count : 8 111 // Last Modified On : Wed Mar 2 18:03:41 2016 12 // Update Count : 89 12 13 // 13 14 … … 63 64 long double _Complex ?--( long double _Complex * ), ?--( volatile long double _Complex * ); 64 65 65 forall( type T ) T * ?++( T ** );66 forall( type T ) const T * ?++( const T ** );67 forall( type T ) volatile T * ?++( volatile T ** );68 forall( type T ) const volatile T * ?++( const volatile T ** );69 forall( type T ) T * ?--( T ** );70 forall( type T ) const T * ?--( const T ** );71 forall( type T ) volatile T * ?--( volatile T ** );72 forall( type T ) const volatile T * ?--( const volatile T ** );73 74 forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );75 forall( type T ) const lvalue T?[?]( const T *, ptrdiff_t );76 forall( type T ) volatile lvalue T ?[?]( volatile T *, ptrdiff_t );77 forall( type T ) const volatile lvalue T ?[?]( const volatile T *, ptrdiff_t );78 forall( type T ) lvalue T ?[?]( ptrdiff_t, T * );79 forall( type T ) const lvalue T?[?]( ptrdiff_t, const T * );80 forall( type T ) volatile lvalue T ?[?]( ptrdiff_t, volatile T * );81 forall( type T ) const volatile lvalue T ?[?]( ptrdiff_t, const volatile T * );66 forall( otype T ) T * ?++( T ** ); 67 forall( otype T ) const T * ?++( const T ** ); 68 forall( otype T ) volatile T * ?++( volatile T ** ); 69 forall( otype T ) const volatile T * ?++( const volatile T ** ); 70 forall( otype T ) T * ?--( T ** ); 71 forall( otype T ) const T * ?--( const T ** ); 72 forall( otype T ) volatile T * ?--( volatile T ** ); 73 forall( otype T ) const volatile T * ?--( const volatile T ** ); 74 75 forall( otype T ) lvalue T ?[?]( T *, ptrdiff_t ); 76 forall( otype T ) const lvalue T ?[?]( const T *, ptrdiff_t ); 77 forall( otype T ) volatile lvalue T ?[?]( volatile T *, ptrdiff_t ); 78 forall( otype T ) const volatile lvalue T ?[?]( const volatile T *, ptrdiff_t ); 79 forall( otype T ) lvalue T ?[?]( ptrdiff_t, T * ); 80 forall( otype T ) const lvalue T ?[?]( ptrdiff_t, const T * ); 81 forall( otype T ) volatile lvalue T ?[?]( ptrdiff_t, volatile T * ); 82 forall( otype T ) const volatile lvalue T ?[?]( ptrdiff_t, const volatile T * ); 82 83 83 84 // ------------------------------------------------------------ … … 101 102 long double _Complex ++?( long double _Complex * ), --?( long double _Complex * ); 102 103 103 forall( type T ) T * ++?( T ** );104 forall( type T ) const T * ++?( const T ** );105 forall( type T ) volatile T * ++?( volatile T ** );106 forall( type T ) const volatile T * ++?( const volatile T ** );107 forall( type T ) T * --?( T ** );108 forall( type T ) const T * --?( const T ** );109 forall( type T ) volatile T * --?( volatile T ** );110 forall( type T ) const volatile T * --?( const volatile T ** );111 112 forall( type T ) lvalue T *?( T * );113 forall( type T ) const lvalue T *?( const T * );114 forall( type T ) volatile lvalue T *?( volatile T * );115 forall( type T ) const volatile lvalue T *?( const volatile T * );104 forall( otype T ) T * ++?( T ** ); 105 forall( otype T ) const T * ++?( const T ** ); 106 forall( otype T ) volatile T * ++?( volatile T ** ); 107 forall( otype T ) const volatile T * ++?( const volatile T ** ); 108 forall( otype T ) T * --?( T ** ); 109 forall( otype T ) const T * --?( const T ** ); 110 forall( otype T ) volatile T * --?( volatile T ** ); 111 forall( otype T ) const volatile T * --?( const volatile T ** ); 112 113 forall( otype T ) lvalue T *?( T * ); 114 forall( otype T ) const lvalue T *?( const T * ); 115 forall( otype T ) volatile lvalue T *?( volatile T * ); 116 forall( otype T ) const volatile lvalue T *?( const volatile T * ); 116 117 forall( ftype FT ) lvalue FT *?( FT * ); 117 118 … … 183 184 long double _Complex ?+?( long double _Complex, long double _Complex ), ?-?( long double _Complex, long double _Complex ); 184 185 185 forall( type T ) T * ?+?( T *, ptrdiff_t );186 forall( type T ) T * ?+?( ptrdiff_t, T * );187 forall( type T ) const T * ?+?( const T *, ptrdiff_t );188 forall( type T ) const T * ?+?( ptrdiff_t, const T * );189 forall( type T ) volatile T * ?+?( volatile T *, ptrdiff_t );190 forall( type T ) volatile T * ?+?( ptrdiff_t, volatile T * );191 forall( type T ) const volatile T * ?+?( const volatile T *, ptrdiff_t );192 forall( type T ) const volatile T * ?+?( ptrdiff_t, const volatile T * );193 forall( type T ) T * ?-?( T *, ptrdiff_t );194 forall( type T ) const T * ?-?( const T *, ptrdiff_t );195 forall( type T ) volatile T * ?-?( volatile T *, ptrdiff_t );196 forall( type T ) const volatile T * ?-?( const volatile T *, ptrdiff_t );197 forall( type T ) ptrdiff_t ?-?( const volatile T *, const volatile T * );186 forall( otype T ) T * ?+?( T *, ptrdiff_t ); 187 forall( otype T ) T * ?+?( ptrdiff_t, T * ); 188 forall( otype T ) const T * ?+?( const T *, ptrdiff_t ); 189 forall( otype T ) const T * ?+?( ptrdiff_t, const T * ); 190 forall( otype T ) volatile T * ?+?( volatile T *, ptrdiff_t ); 191 forall( otype T ) volatile T * ?+?( ptrdiff_t, volatile T * ); 192 forall( otype T ) const volatile T * ?+?( const volatile T *, ptrdiff_t ); 193 forall( otype T ) const volatile T * ?+?( ptrdiff_t, const volatile T * ); 194 forall( otype T ) T * ?-?( T *, ptrdiff_t ); 195 forall( otype T ) const T * ?-?( const T *, ptrdiff_t ); 196 forall( otype T ) volatile T * ?-?( volatile T *, ptrdiff_t ); 197 forall( otype T ) const volatile T * ?-?( const volatile T *, ptrdiff_t ); 198 forall( otype T ) ptrdiff_t ?-?( const volatile T *, const volatile T * ); 198 199 199 200 // ------------------------------------------------------------ … … 431 432 forall( ftype FT ) FT * ?=?( FT * volatile *, forall( ftype FT2 ) FT2 * ); 432 433 433 forall( type T ) T * ?+=?( T * *, ptrdiff_t );434 forall( type T ) T * ?+=?( T * volatile *, ptrdiff_t );435 forall( type T ) const T * ?+=?( const T * *, ptrdiff_t );436 forall( type T ) const T * ?+=?( const T * volatile *, ptrdiff_t );437 forall( type T ) volatile T * ?+=?( volatile T * *, ptrdiff_t );438 forall( type T ) volatile T * ?+=?( volatile T * volatile *, ptrdiff_t );439 forall( type T ) const volatile T * ?+=?( const volatile T * *, ptrdiff_t );440 forall( type T ) const volatile T * ?+=?( const volatile T * volatile *, ptrdiff_t );441 forall( type T ) T * ?-=?( T * *, ptrdiff_t );442 forall( type T ) T * ?-=?( T * volatile *, ptrdiff_t );443 forall( type T ) const T * ?-=?( const T * *, ptrdiff_t );444 forall( type T ) const T * ?-=?( const T * volatile *, ptrdiff_t );445 forall( type T ) volatile T * ?-=?( volatile T * *, ptrdiff_t );446 forall( type T ) volatile T * ?-=?( volatile T * volatile *, ptrdiff_t );447 forall( type T ) const volatile T * ?-=?( const volatile T * *, ptrdiff_t );448 forall( type T ) const volatile T * ?-=?( const volatile T * volatile *, ptrdiff_t );434 forall( otype T ) T * ?+=?( T * *, ptrdiff_t ); 435 forall( otype T ) T * ?+=?( T * volatile *, ptrdiff_t ); 436 forall( otype T ) const T * ?+=?( const T * *, ptrdiff_t ); 437 forall( otype T ) const T * ?+=?( const T * volatile *, ptrdiff_t ); 438 forall( otype T ) volatile T * ?+=?( volatile T * *, ptrdiff_t ); 439 forall( otype T ) volatile T * ?+=?( volatile T * volatile *, ptrdiff_t ); 440 forall( otype T ) const volatile T * ?+=?( const volatile T * *, ptrdiff_t ); 441 forall( otype T ) const volatile T * ?+=?( const volatile T * volatile *, ptrdiff_t ); 442 forall( otype T ) T * ?-=?( T * *, ptrdiff_t ); 443 forall( otype T ) T * ?-=?( T * volatile *, ptrdiff_t ); 444 forall( otype T ) const T * ?-=?( const T * *, ptrdiff_t ); 445 forall( otype T ) const T * ?-=?( const T * volatile *, ptrdiff_t ); 446 forall( otype T ) volatile T * ?-=?( volatile T * *, ptrdiff_t ); 447 forall( otype T ) volatile T * ?-=?( volatile T * volatile *, ptrdiff_t ); 448 forall( otype T ) const volatile T * ?-=?( const volatile T * *, ptrdiff_t ); 449 forall( otype T ) const volatile T * ?-=?( const volatile T * volatile *, ptrdiff_t ); 449 450 450 451 _Bool ?=?( _Bool *, _Bool ), ?=?( volatile _Bool *, _Bool ); -
src/libcfa/stdlib
rc5833e8 r0f9e4403 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Feb 5 15:21:18201613 // Update Count : 6112 // Last Modified On : Wed Apr 13 14:45:53 2016 13 // Update Count : 85 14 14 // 15 15 … … 20 20 } // extern "C" 21 21 22 forall( type T ) T * memset( T * ptr, unsigned char fill ); // use default value '\0' for fill 23 forall( type T ) T * memset( T * ptr ); // remove when default value available 22 //--------------------------------------- 24 23 25 forall( type T ) T * malloc( void ); 26 forall( type T ) T * malloc( char fill ); 27 forall( type T ) T * malloc( size_t size ); 28 forall( type T ) T * malloc( T * ptr, size_t size ); 29 forall( type T ) T * malloc( T * ptr, size_t size, unsigned char fill ); 30 forall( type T ) T * calloc( size_t size ); 31 forall( type T ) T * realloc( T * ptr, size_t size ); 32 forall( type T ) T * realloc( T * ptr, size_t size, unsigned char fill ); 24 extern "C" { 25 #ifndef EXIT_FAILURE 26 #define EXIT_FAILURE 1 // failing exit status 27 #define EXIT_SUCCESS 0 // successful exit status 28 #endif // ! EXIT_FAILURE 29 void exit( int rc ); 30 } // extern "C" 33 31 34 forall( type T ) T * aligned_alloc( size_t alignment ); 35 forall( type T ) T * memalign( size_t alignment ); // deprecated 36 forall( type T ) int posix_memalign( T ** ptr, size_t alignment ); 32 //--------------------------------------- 33 34 extern "C" { 35 void * malloc( size_t ); // use default C routine for void * 36 } // extern "C" 37 forall( otype T ) T * malloc( void ); 38 forall( otype T ) T * malloc( char fill ); 39 forall( otype T ) T * malloc( T * ptr, size_t size ); 40 forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill ); 41 extern "C" { 42 void * calloc( size_t nmemb, size_t size ); // use default C routine for void * 43 } // extern "C" 44 forall( otype T ) T * calloc( size_t nmemb ); 45 extern "C" { 46 void * realloc( void * ptr, size_t size ); // use default C routine for void * 47 } // extern "C" 48 forall( otype T ) T * realloc( T * ptr, size_t size ); 49 forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill ); 50 51 forall( otype T ) T * aligned_alloc( size_t alignment ); 52 forall( otype T ) T * memalign( size_t alignment ); // deprecated 53 forall( otype T ) int posix_memalign( T ** ptr, size_t alignment ); 54 55 forall( otype T ) T * memset( T * ptr, unsigned char fill ); // use default value '\0' for fill 56 forall( otype T ) T * memset( T * ptr ); // remove when default value available 37 57 38 58 //--------------------------------------- … … 66 86 //--------------------------------------- 67 87 68 forall( type T | { int ?<?( T, T ); } )88 forall( otype T | { int ?<?( T, T ); } ) 69 89 T * bsearch( const T key, const T * arr, size_t dimension ); 70 90 71 forall( type T | { int ?<?( T, T ); } )91 forall( otype T | { int ?<?( T, T ); } ) 72 92 void qsort( const T * arr, size_t dimension ); 73 93 74 94 //--------------------------------------- 75 95 76 forall( type T | { T ?/?( T, T ); T ?%?( T, T ); } )96 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } ) 77 97 [ T, T ] div( T t1, T t2 ); 78 98 … … 81 101 char abs( char ); 82 102 extern "C" { 83 int abs( int ); // use default C routine for int84 } // extern 103 int abs( int ); // use default C routine for int 104 } // extern "C" 85 105 long int abs( long int ); 86 106 long long int abs( long long int ); … … 94 114 //--------------------------------------- 95 115 96 void randseed( long int s);97 char random(); 98 int random(); 99 unsigned int random(); 100 long int random();101 unsigned long int random(); 102 float random();103 double random(); 104 float _Complex random(); 105 double _Complex random(); 106 long double _Complex random();116 float floor( float ); 117 extern "C" { 118 double floor( double ); // use C routine for double 119 } // extern "C" 120 long double floor( long double ); 121 122 float ceil( float ); 123 extern "C" { 124 double ceil( double ); // use C routine for double 125 } // extern "C" 126 long double ceil( long double ); 107 127 108 128 //--------------------------------------- 109 129 110 forall( type T | { int ?<?( T, T ); } ) 130 void rand48seed( long int s ); 131 char rand48(); 132 int rand48(); 133 unsigned int rand48(); 134 long int rand48(); 135 unsigned long int rand48(); 136 float rand48(); 137 double rand48(); 138 float _Complex rand48(); 139 double _Complex rand48(); 140 long double _Complex rand48(); 141 142 //--------------------------------------- 143 144 forall( otype T | { int ?<?( T, T ); } ) 111 145 T min( const T t1, const T t2 ); 112 146 113 forall( type T | { int ?>?( T, T ); } )147 forall( otype T | { int ?>?( T, T ); } ) 114 148 T max( const T t1, const T t2 ); 115 149 116 forall( type T )150 forall( otype T ) 117 151 void swap( T * t1, T * t2 ); 118 152 -
src/libcfa/stdlib.c
rc5833e8 r0f9e4403 10 10 // Created On : Thu Jan 28 17:10:29 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Feb 10 15:45:56201613 // Update Count : 1 4012 // Last Modified On : Wed Apr 13 14:49:58 2016 13 // Update Count : 155 14 14 // 15 15 … … 27 27 } // extern "C" 28 28 29 forall( type T ) T * memset( T * ptr, unsigned char fill ) { // use default value '\0' for fill 30 printf( "memset1\n" ); 31 return (T *)memset( ptr, (int)fill, malloc_usable_size( ptr ) ); 32 } // memset 33 forall( type T ) T * memset( T * ptr ) { // remove when default value available 34 printf( "memset2\n" ); 35 return (T *)memset( ptr, 0, malloc_usable_size( ptr ) ); 36 } // memset 37 38 forall( type T ) T * malloc( void ) { 39 printf( "malloc1\n" ); 29 forall( otype T ) T * malloc( void ) { 30 //printf( "malloc1\n" ); 40 31 return (T *)malloc( sizeof(T) ); 41 32 } // malloc 42 forall( type T ) T * malloc( size_t size ) { 43 printf( "malloc2\n" ); 44 return (T *)(void *)malloc( size ); 45 } // malloc 46 forall( type T ) T * malloc( char fill ) { 47 printf( "malloc3\n" ); 33 forall( otype T ) T * malloc( char fill ) { 34 //printf( "malloc3\n" ); 48 35 T * ptr = (T *)malloc( sizeof(T) ); 49 36 return memset( ptr ); 50 37 } // malloc 51 38 52 forall( type T ) T * calloc( size_t size) {53 printf( "calloc\n" );54 return (T *)calloc( size, sizeof(T) );39 forall( otype T ) T * calloc( size_t nmemb ) { 40 //printf( "calloc\n" ); 41 return (T *)calloc( nmemb, sizeof(T) ); 55 42 } // calloc 56 43 57 forall( type T ) T * realloc( T * ptr, size_t size ) {58 printf( "realloc1\n" );44 forall( otype T ) T * realloc( T * ptr, size_t size ) { 45 //printf( "realloc1\n" ); 59 46 return (T *)(void *)realloc( (void *)ptr, size ); 60 47 } // realloc 61 forall( type T ) T * realloc( T * ptr, size_t size, unsigned char fill ) {62 printf( "realloc2\n" );48 forall( otype T ) T * realloc( T * ptr, size_t size, unsigned char fill ) { 49 //printf( "realloc2\n" ); 63 50 char * nptr = (T *)(void *)realloc( (void *)ptr, size ); 64 51 size_t unused = malloc_usable_size( nptr ); … … 67 54 } // realloc 68 55 69 forall( type T ) T * malloc( T * ptr, size_t size ) {70 printf( "malloc4\n" );56 forall( otype T ) T * malloc( T * ptr, size_t size ) { 57 //printf( "malloc4\n" ); 71 58 return (T *)realloc( ptr, size ); 72 59 } // malloc 73 forall( type T ) T * malloc( T * ptr, size_t size, unsigned char fill ) {74 printf( "malloc5\n" );60 forall( otype T ) T * malloc( T * ptr, size_t size, unsigned char fill ) { 61 //printf( "malloc5\n" ); 75 62 return (T *)realloc( ptr, size, fill ); 76 63 } // malloc 77 64 78 forall( type T ) T * aligned_alloc( size_t alignment ) {79 printf( "aligned_alloc\n" );65 forall( otype T ) T * aligned_alloc( size_t alignment ) { 66 //printf( "aligned_alloc\n" ); 80 67 return (T *)memalign( alignment, sizeof(T) ); 81 68 } // aligned_alloc 82 69 83 forall( type T ) T * memalign( size_t alignment ) {84 printf( "memalign\n" );70 forall( otype T ) T * memalign( size_t alignment ) { 71 //printf( "memalign\n" ); 85 72 return (T *)memalign( alignment, sizeof(T) ); 86 73 } // memalign 87 74 88 forall( type T ) int posix_memalign( T ** ptr, size_t alignment ) {89 printf( "posix_memalign\n" );75 forall( otype T ) int posix_memalign( T ** ptr, size_t alignment ) { 76 //printf( "posix_memalign\n" ); 90 77 return posix_memalign( (void **)ptr, alignment, sizeof(T) ); 91 78 } // posix_memalign 79 80 forall( otype T ) T * memset( T * ptr, unsigned char fill ) { // use default value '\0' for fill 81 //printf( "memset1\n" ); 82 return (T *)memset( ptr, (int)fill, malloc_usable_size( ptr ) ); 83 } // memset 84 forall( otype T ) T * memset( T * ptr ) { // remove when default value available 85 //printf( "memset2\n" ); 86 return (T *)memset( ptr, 0, malloc_usable_size( ptr ) ); 87 } // memset 92 88 93 89 //--------------------------------------- … … 123 119 return ulli; 124 120 } 121 125 122 float ato( const char * ptr ) { 126 123 float f; … … 138 135 return ld; 139 136 } 137 140 138 float _Complex ato( const char * ptr ) { 141 139 float re, im; … … 172 170 return strtoull( sptr, eptr, base ); 173 171 } 172 174 173 float strto( const char * sptr, char ** eptr ) { 175 174 return strtof( sptr, eptr ); … … 181 180 return strtold( sptr, eptr ); 182 181 } 182 183 183 float _Complex strto( const char * sptr, char ** eptr ) { 184 184 float re, im; … … 208 208 //--------------------------------------- 209 209 210 forall( type T | { int ?<?( T, T ); } )210 forall( otype T | { int ?<?( T, T ); } ) 211 211 T * bsearch( const T key, const T * arr, size_t dimension ) { 212 212 int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; } … … 214 214 } // bsearch 215 215 216 forall( type T | { int ?<?( T, T ); } )216 forall( otype T | { int ?<?( T, T ); } ) 217 217 void qsort( const T * arr, size_t dimension ) { 218 218 int comp( const void * t1, const void * t2 ) { return *(T *)t1 < *(T *)t2 ? -1 : *(T *)t2 < *(T *)t1 ? 1 : 0; } … … 222 222 //--------------------------------------- 223 223 224 forall( type T | { T ?/?( T, T ); T ?%?( T, T ); } )224 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } ) 225 225 [ T, T ] div( T t1, T t2 ) { /* return [ t1 / t2, t1 % t2 ]; */ } 226 226 … … 239 239 //--------------------------------------- 240 240 241 void randseed( long int s ) { srand48( s ); } 242 char random() { return lrand48(); } 243 int random() { return mrand48(); } 244 unsigned int random() { return lrand48(); } 245 long int random() { return mrand48(); } 246 unsigned long int random() { return lrand48(); } 247 float random() { return (float)drand48(); } // otherwise float uses lrand48 248 double random() { return drand48(); } 249 float _Complex random() { return (float)drand48() + (float _Complex)(drand48() * _Complex_I); } 250 double _Complex random() { return drand48() + (double _Complex)(drand48() * _Complex_I); } 251 long double _Complex random() { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); } 252 253 //--------------------------------------- 254 255 forall( type T | { int ?<?( T, T ); } ) 241 float floor( float v ) { return floorf( v ); } 242 long double floor( long double v ) { return floorl( v ); } 243 244 float ceil( float v ) { return ceilf( v ); } 245 long double ceil( long double v ) { return ceill( v ); } 246 247 //--------------------------------------- 248 249 void rand48seed( long int s ) { srand48( s ); } 250 char rand48() { return mrand48(); } 251 int rand48() { return mrand48(); } 252 unsigned int rand48() { return lrand48(); } 253 long int rand48() { return mrand48(); } 254 unsigned long int rand48() { return lrand48(); } 255 float rand48() { return (float)drand48(); } // otherwise float uses lrand48 256 double rand48() { return drand48(); } 257 float _Complex rand48() { return (float)drand48() + (float _Complex)(drand48() * _Complex_I); } 258 double _Complex rand48() { return drand48() + (double _Complex)(drand48() * _Complex_I); } 259 long double _Complex rand48() { return (long double)drand48() + (long double _Complex)(drand48() * _Complex_I); } 260 261 //--------------------------------------- 262 263 forall( otype T | { int ?<?( T, T ); } ) 256 264 T min( const T t1, const T t2 ) { 257 265 return t1 < t2 ? t1 : t2; 258 266 } // min 259 267 260 forall( type T | { int ?>?( T, T ); } )268 forall( otype T | { int ?>?( T, T ); } ) 261 269 T max( const T t1, const T t2 ) { 262 270 return t1 > t2 ? t1 : t2; 263 271 } // max 264 272 265 forall( type T )273 forall( otype T ) 266 274 void swap( T * t1, T * t2 ) { 267 275 T temp = *t1;
Note:
See TracChangeset
for help on using the changeset viewer.