Changeset 6943a987 for src/Parser
- Timestamp:
- Aug 29, 2016, 10:33:05 AM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 5e644d3e
- Parents:
- 79841be (diff), 413ad05 (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/Parser
- Files:
-
- 2 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/DeclarationNode.cc
r79841be r6943a987 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 9 08:39:20201613 // Update Count : 16912 // Last Modified On : Sun Aug 28 22:12:44 2016 13 // Update Count : 278 14 14 // 15 15 … … 25 25 #include "SynTree/Expression.h" 26 26 27 #include "Parser.h"28 27 #include "TypedefTable.h" 29 28 extern TypedefTable typedefTable; … … 42 41 UniqueName DeclarationNode::anonymous( "__anonymous" ); 43 42 44 extern LinkageSpec:: Typelinkage; // defined in parser.yy43 extern LinkageSpec::Spec linkage; // defined in parser.yy 45 44 46 45 DeclarationNode *DeclarationNode::clone() const { … … 48 47 newnode->type = maybeClone( type ); 49 48 newnode->name = name; 50 newnode->storageClasses = storageClasses; 51 //PAB newnode->bitfieldWidth = maybeClone( bitfieldWidth ); 52 newnode->bitfieldWidth = bitfieldWidth; 49 newnode->storageClass = storageClass; 50 newnode->isInline = isInline; 51 newnode->isNoreturn = isNoreturn; 52 newnode->bitfieldWidth = maybeClone( bitfieldWidth ); 53 53 newnode->hasEllipsis = hasEllipsis; 54 newnode->initializer = initializer;55 newnode-> next = maybeClone( next);54 newnode->initializer = maybeClone( initializer ); 55 newnode->set_next( maybeClone( get_next() ) ); 56 56 newnode->linkage = linkage; 57 57 return newnode; 58 58 } // DeclarationNode::clone 59 59 60 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) { 60 DeclarationNode::DeclarationNode() 61 : type( 0 ) 62 , storageClass( NoStorageClass ) 63 , isInline( false ) 64 , isNoreturn( false ) 65 , bitfieldWidth( 0 ) 66 , initializer( 0 ) 67 , hasEllipsis( false ) 68 , linkage( ::linkage ) 69 , extension( false ) 70 , error() { 61 71 } 62 72 … … 83 93 } // if 84 94 85 printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os ); 95 if ( storageClass != NoStorageClass ) os << DeclarationNode::storageName[storageClass] << ' '; 96 if ( isInline ) os << DeclarationNode::storageName[Inline] << ' '; 97 if ( isNoreturn ) os << DeclarationNode::storageName[Noreturn] << ' '; 86 98 if ( type ) { 87 99 type->print( os, indent ); … … 135 147 } // DeclarationNode::newFunction 136 148 137 DeclarationNode * DeclarationNode::newQualifier( Qualifier q ) {149 DeclarationNode * DeclarationNode::newQualifier( Qualifier q ) { 138 150 DeclarationNode *newnode = new DeclarationNode; 139 151 newnode->type = new TypeData(); 140 newnode->type->qualifiers .push_back( q );152 newnode->type->qualifiers[ q ] = 1; 141 153 return newnode; 142 154 } // DeclarationNode::newQualifier 143 155 144 DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) { 145 DeclarationNode *newnode = new DeclarationNode; 146 newnode->storageClasses.push_back( sc ); 156 DeclarationNode * DeclarationNode::newForall( DeclarationNode *forall ) { 157 DeclarationNode *newnode = new DeclarationNode; 158 newnode->type = new TypeData( TypeData::Unknown ); 159 newnode->type->forall = forall; 160 return newnode; 161 } // DeclarationNode::newForall 162 163 DeclarationNode * DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) { 164 DeclarationNode *newnode = new DeclarationNode; 165 //switch (sc) { 166 // case Inline: newnode->isInline = true; break; 167 // case Noreturn: newnode->isNoreturn = true; break; 168 // default: newnode->storageClass = sc; break; 169 //} 170 newnode->storageClass = sc; 147 171 return newnode; 148 172 } // DeclarationNode::newStorageClass 149 173 150 DeclarationNode * DeclarationNode::newBasicType( BasicType bt ) {174 DeclarationNode * DeclarationNode::newBasicType( BasicType bt ) { 151 175 DeclarationNode *newnode = new DeclarationNode; 152 176 newnode->type = new TypeData( TypeData::Basic ); … … 155 179 } // DeclarationNode::newBasicType 156 180 157 DeclarationNode *DeclarationNode::newBuiltinType( BuiltinType bt ) { 181 DeclarationNode * DeclarationNode::newModifier( Modifier mod ) { 182 DeclarationNode *newnode = new DeclarationNode; 183 newnode->type = new TypeData( TypeData::Basic ); 184 newnode->type->basic->modifiers.push_back( mod ); 185 return newnode; 186 } // DeclarationNode::newModifier 187 188 DeclarationNode * DeclarationNode::newBuiltinType( BuiltinType bt ) { 158 189 DeclarationNode *newnode = new DeclarationNode; 159 190 newnode->type = new TypeData( TypeData::Builtin ); … … 162 193 } // DeclarationNode::newBuiltinType 163 194 164 DeclarationNode *DeclarationNode::newModifier( Modifier mod ) { 165 DeclarationNode *newnode = new DeclarationNode; 166 newnode->type = new TypeData( TypeData::Basic ); 167 newnode->type->basic->modifiers.push_back( mod ); 168 return newnode; 169 } // DeclarationNode::newModifier 170 171 DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) { 172 DeclarationNode *newnode = new DeclarationNode; 173 newnode->type = new TypeData( TypeData::Unknown ); 174 newnode->type->forall = forall; 175 return newnode; 176 } // DeclarationNode::newForall 177 178 DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) { 195 DeclarationNode * DeclarationNode::newFromTypedef( std::string *name ) { 179 196 DeclarationNode *newnode = new DeclarationNode; 180 197 newnode->type = new TypeData( TypeData::SymbolicInst ); … … 185 202 } // DeclarationNode::newFromTypedef 186 203 187 DeclarationNode * DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ) {204 DeclarationNode * DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ) { 188 205 DeclarationNode *newnode = new DeclarationNode; 189 206 newnode->type = new TypeData( TypeData::Aggregate ); … … 214 231 DeclarationNode *newnode = new DeclarationNode; 215 232 newnode->name = assign_strptr( name ); 216 newnode->enumeratorValue = constant;233 newnode->enumeratorValue.reset( constant ); 217 234 typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID ); 218 235 return newnode; … … 284 301 newnode->type->array->dimension = size; 285 302 newnode->type->array->isStatic = isStatic; 286 if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantExpr *>( newnode->type->array->dimension->build()) ) {303 if ( newnode->type->array->dimension == 0 || newnode->type->array->dimension->isExpressionType<ConstantExpr *>() ) { 287 304 newnode->type->array->isVarLen = false; 288 305 } else { … … 353 370 src = 0; 354 371 } else { 355 dst->qualifiers.splice( dst->qualifiers.end(), src->qualifiers ); 356 } // if 357 } // if 358 } 372 dst->qualifiers |= src->qualifiers; 373 } // if 374 } // if 375 } 376 377 void DeclarationNode::checkQualifiers( const TypeData *src, const TypeData *dst ) { 378 TypeData::Qualifiers qsrc = src->qualifiers, qdst = dst->qualifiers; 379 380 if ( (qsrc & qdst).any() ) { // common bits between qualifier masks ? 381 error = "duplicate qualifier "; 382 int j = 0; // separator detector 383 for ( int i = 0; i < DeclarationNode::NoOfQualifier; i += 1 ) { 384 if ( qsrc[i] & qdst[i] ) { // find specific qualifiers in common 385 if ( j > 0 ) error += ", "; 386 error += DeclarationNode::qualifierName[i]; 387 j += 1; 388 } // if 389 } // for 390 error += " in declaration of "; 391 } // if 392 } // DeclarationNode::checkQualifiers 359 393 360 394 DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) { 361 395 if ( q ) { 362 storageClasses.splice( storageClasses.end(), q->storageClasses);396 copyStorageClasses(q); 363 397 if ( q->type ) { 364 398 if ( ! type ) { 365 399 type = new TypeData; 400 } else { 401 checkQualifiers( q->type, type ); 366 402 } // if 367 403 addQualifiersToType( q->type, type ); … … 387 423 388 424 DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) { 389 storageClasses = q->storageClasses; 425 isInline = isInline || q->isInline; 426 isNoreturn = isNoreturn || q->isNoreturn; 427 if ( storageClass == NoStorageClass ) { 428 storageClass = q->storageClass; 429 } else if ( q->storageClass != NoStorageClass ) { 430 q->error = "invalid combination of storage classes in declaration of "; 431 } // if 432 if ( error.empty() ) error = q->error; 390 433 return this; 391 434 } … … 406 449 switch ( dst->kind ) { 407 450 case TypeData::Unknown: 408 src->qualifiers .splice( src->qualifiers.end(), dst->qualifiers );451 src->qualifiers |= dst->qualifiers; 409 452 dst = src; 410 453 src = 0; 411 454 break; 412 455 case TypeData::Basic: 413 dst->qualifiers .splice( dst->qualifiers.end(), src->qualifiers );456 dst->qualifiers |= src->qualifiers; 414 457 if ( src->kind != TypeData::Unknown ) { 415 458 assert( src->kind == TypeData::Basic ); … … 427 470 dst->base->aggInst->params = maybeClone( src->aggregate->actuals ); 428 471 } // if 429 dst->base->qualifiers .splice( dst->base->qualifiers.end(), src->qualifiers );472 dst->base->qualifiers |= src->qualifiers; 430 473 src = 0; 431 474 break; … … 447 490 DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) { 448 491 if ( o ) { 449 storageClasses.splice( storageClasses.end(), o->storageClasses);492 copyStorageClasses( o ); 450 493 if ( o->type ) { 451 494 if ( ! type ) { … … 456 499 type->aggInst->params = maybeClone( o->type->aggregate->actuals ); 457 500 } // if 458 type->qualifiers .splice( type->qualifiers.end(), o->type->qualifiers );501 type->qualifiers |= o->type->qualifiers; 459 502 } else { 460 503 type = o->type; … … 470 513 471 514 // there may be typedefs chained onto the type 472 if ( o->get_ link() ) {473 set_l ink( o->get_link()->clone() );515 if ( o->get_next() ) { 516 set_last( o->get_next()->clone() ); 474 517 } // if 475 518 } // if … … 591 634 p->type->base->aggInst->params = maybeClone( type->aggregate->actuals ); 592 635 } // if 593 p->type->base->qualifiers .splice( p->type->base->qualifiers.end(), type->qualifiers );636 p->type->base->qualifiers |= type->qualifiers; 594 637 break; 595 638 … … 628 671 lastArray->base->aggInst->params = maybeClone( type->aggregate->actuals ); 629 672 } // if 630 lastArray->base->qualifiers .splice( lastArray->base->qualifiers.end(), type->qualifiers );673 lastArray->base->qualifiers |= type->qualifiers; 631 674 break; 632 675 default: … … 694 737 } // if 695 738 newnode->type->forall = maybeClone( type->forall ); 696 newnode-> storageClasses = storageClasses;739 newnode->copyStorageClasses( this ); 697 740 newnode->name = assign_strptr( newName ); 698 741 return newnode; … … 701 744 DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) { 702 745 if ( o ) { 703 o-> storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end());746 o->copyStorageClasses( this ); 704 747 if ( type ) { 705 748 TypeData *srcType = type; … … 734 777 DeclarationNode *newnode = new DeclarationNode; 735 778 newnode->type = maybeClone( type ); 736 newnode-> storageClasses = storageClasses;779 newnode->copyStorageClasses( this ); 737 780 newnode->name = assign_strptr( newName ); 738 781 return newnode; … … 741 784 DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) { 742 785 if ( o ) { 743 o-> storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end());786 o->copyStorageClasses( this ); 744 787 if ( type ) { 745 788 TypeData *newType = type->clone(); … … 752 795 } // if 753 796 } // if 797 delete o; 754 798 return o; 755 }756 757 DeclarationNode *DeclarationNode::appendList( DeclarationNode *node ) {758 if ( node != 0 ) {759 set_link( node );760 } // if761 return this;762 799 } 763 800 764 801 DeclarationNode *DeclarationNode::extractAggregate() const { 765 802 if ( type ) { 766 TypeData *ret = type ->extractAggregate();803 TypeData *ret = typeextractAggregate( type ); 767 804 if ( ret ) { 768 805 DeclarationNode *newnode = new DeclarationNode; … … 776 813 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) { 777 814 SemanticError errors; 778 std::back_insert_iterator< std::list< Declaration * > > out( outputList );815 std::back_insert_iterator< std::list< Declaration * > > out( outputList ); 779 816 const DeclarationNode *cur = firstNode; 780 817 while ( cur ) { … … 786 823 *out++ = decl; 787 824 } // if 825 delete extr; 788 826 } // if 789 827 Declaration *decl = cur->build(); … … 794 832 errors.append( e ); 795 833 } // try 796 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );834 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 797 835 } // while 798 836 if ( ! errors.isEmpty() ) { … … 801 839 } 802 840 803 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {841 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) { 804 842 SemanticError errors; 805 std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );843 std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList ); 806 844 const DeclarationNode *cur = firstNode; 807 845 while ( cur ) { … … 817 855 Declaration *decl = cur->build(); 818 856 if ( decl ) { 819 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {857 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) { 820 858 *out++ = dwt; 821 } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {859 } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) { 822 860 StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() ); 823 861 *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 ); 824 862 delete agg; 825 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {863 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) { 826 864 UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() ); 827 865 *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 ); … … 831 869 errors.append( e ); 832 870 } // try 833 cur = dynamic_cast< DeclarationNode * >( cur->get_link() );871 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 834 872 } // while 835 873 if ( ! errors.isEmpty() ) { … … 838 876 } 839 877 840 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {878 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) { 841 879 SemanticError errors; 842 std::back_insert_iterator< std::list< Type * > > out( outputList );880 std::back_insert_iterator< std::list< Type * > > out( outputList ); 843 881 const DeclarationNode *cur = firstNode; 844 882 while ( cur ) { … … 848 886 errors.append( e ); 849 887 } // try 850 cur = dynamic_cast< DeclarationNode * >( cur->get_link() );888 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 851 889 } // while 852 890 if ( ! errors.isEmpty() ) { … … 856 894 857 895 Declaration *DeclarationNode::build() const { 896 if ( ! error.empty() ) throw SemanticError( error, this ); 858 897 if ( type ) { 859 return type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );860 } // if 861 if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn )) {862 return (new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );898 return buildDecl( type, name, storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension ); 899 } // if 900 if ( ! isInline && ! isNoreturn ) { 901 return (new ObjectDecl( name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension ); 863 902 } // if 864 903 throw SemanticError( "invalid function specifier in declaration of ", this ); … … 870 909 switch ( type->kind ) { 871 910 case TypeData::Enum: 872 return new EnumInstType( type->buildQualifiers(), type->enumeration->name );911 return new EnumInstType( buildQualifiers( type ), type->enumeration->name ); 873 912 case TypeData::Aggregate: { 874 913 ReferenceToType *ret; 875 914 switch ( type->aggregate->kind ) { 876 915 case DeclarationNode::Struct: 877 ret = new StructInstType( type->buildQualifiers(), type->aggregate->name );916 ret = new StructInstType( buildQualifiers( type ), type->aggregate->name ); 878 917 break; 879 918 case DeclarationNode::Union: 880 ret = new UnionInstType( type->buildQualifiers(), type->aggregate->name );919 ret = new UnionInstType( buildQualifiers( type ), type->aggregate->name ); 881 920 break; 882 921 case DeclarationNode::Trait: 883 ret = new TraitInstType( type->buildQualifiers(), type->aggregate->name );922 ret = new TraitInstType( buildQualifiers( type ), type->aggregate->name ); 884 923 break; 885 924 default: … … 890 929 } 891 930 case TypeData::Symbolic: { 892 TypeInstType *ret = new TypeInstType( type->buildQualifiers(), type->symbolic->name, false );931 TypeInstType *ret = new TypeInstType( buildQualifiers( type ), type->symbolic->name, false ); 893 932 buildList( type->symbolic->actuals, ret->get_parameters() ); 894 933 return ret; 895 934 } 896 935 default: 897 return type ->build();936 return typebuild( type ); 898 937 } // switch 899 938 } 900 939 901 DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {902 DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;903 for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {904 if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers905 if ( ret != DeclarationNode::NoStorageClass ) { // already have a valid storage class ?906 throw SemanticError( "invalid combination of storage classes in declaration of ", this );907 } // if908 ret = *i;909 } // for910 return ret;911 }912 913 bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {914 std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );915 if ( first == storageClasses.end() ) return false; // not found916 first = std::find( ++first, storageClasses.end(), key ); // found917 if ( first == storageClasses.end() ) return true; // not found again918 throw SemanticError( "duplicate function specifier in declaration of ", this );919 }940 // DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const { 941 // DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass; 942 // for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) { 943 // if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers 944 // if ( ret != DeclarationNode::NoStorageClass ) { // already have a valid storage class ? 945 // throw SemanticError( "invalid combination of storage classes in declaration of ", this ); 946 // } // if 947 // ret = *i; 948 // } // for 949 // return ret; 950 // } 951 952 // bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const { 953 // std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key ); 954 // if ( first == storageClasses.end() ) return false; // not found 955 // first = std::find( ++first, storageClasses.end(), key ); // found 956 // if ( first == storageClasses.end() ) return true; // not found again 957 // throw SemanticError( "duplicate function specifier in declaration of ", this ); 958 // } 920 959 921 960 // Local Variables: // -
src/Parser/ExpressionNode.cc
r79841be r6943a987 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 10 11:07:38201613 // Update Count : 48612 // Last Modified On : Thu Aug 25 21:39:40 2016 13 // Update Count : 503 14 14 // 15 15 … … 32 32 using namespace std; 33 33 34 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other. name), extension( other.extension ) {}34 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {} 35 35 36 36 //############################################################################## … … 57 57 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; } 58 58 59 Expression *build_constantInteger( std::string & str ) {59 Expression *build_constantInteger( const std::string & str ) { 60 60 static const BasicType::Kind kind[2][3] = { 61 61 { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt }, … … 120 120 } // if 121 121 122 return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) ); 122 Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ) ); 123 delete &str; // created by lex 124 return ret; 123 125 } // build_constantInteger 124 126 125 Expression *build_constantFloat( std::string & str ) {127 Expression *build_constantFloat( const std::string & str ) { 126 128 static const BasicType::Kind kind[2][3] = { 127 129 { BasicType::Float, BasicType::Double, BasicType::LongDouble }, … … 150 152 } // if 151 153 152 return new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) ); 154 Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ) ); 155 delete &str; // created by lex 156 return ret; 153 157 } // build_constantFloat 154 158 155 Expression *build_constantChar( std::string & str ) { 156 return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) ); 159 Expression *build_constantChar( const std::string & str ) { 160 Expression * ret = new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) ); 161 delete &str; // created by lex 162 return ret; 157 163 } // build_constantChar 158 164 159 ConstantExpr *build_constantStr( std::string & str ) {165 ConstantExpr *build_constantStr( const std::string & str ) { 160 166 // string should probably be a primitive type 161 167 ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ), … … 163 169 toString( str.size()+1-2 ) ) ), // +1 for '\0' and -2 for '"' 164 170 false, false ); 165 return new ConstantExpr( Constant( at, str ) ); 171 ConstantExpr * ret = new ConstantExpr( Constant( at, str ) ); 172 delete &str; // created by lex 173 return ret; 166 174 } // build_constantStr 167 175 168 //##############################################################################169 170 176 NameExpr * build_varref( const string *name, bool labelp ) { 171 returnnew NameExpr( *name, nullptr );172 } 173 174 //############################################################################## 177 NameExpr *expr = new NameExpr( *name, nullptr ); 178 delete name; 179 return expr; 180 } 175 181 176 182 static const char *OperName[] = { … … 178 184 "SizeOf", "AlignOf", "OffsetOf", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&", 179 185 "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?", 180 "?=?", "? *=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",186 "?=?", "?@=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?", 181 187 "?[?]", "...", 182 188 // monadic … … 184 190 }; 185 191 186 //##############################################################################187 188 192 Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) { 189 Type *targetType = decl_node->buildType();193 Type *targetType = maybeMoveBuildType( decl_node ); 190 194 if ( dynamic_cast< VoidType * >( targetType ) ) { 191 195 delete targetType; 192 return new CastExpr( maybe Build<Expression>(expr_node) );196 return new CastExpr( maybeMoveBuild< Expression >(expr_node) ); 193 197 } else { 194 return new CastExpr( maybe Build<Expression>(expr_node), targetType );198 return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType ); 195 199 } // if 196 200 } 197 201 198 202 Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) { 199 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybe Build<Expression>(expr_node) );203 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) ); 200 204 delete member; 201 205 return ret; … … 204 208 Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) { 205 209 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) ); 206 deref->get_args().push_back( maybe Build<Expression>(expr_node) );210 deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) ); 207 211 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref ); 208 212 delete member; … … 211 215 212 216 Expression *build_addressOf( ExpressionNode *expr_node ) { 213 return new AddressExpr( maybe Build<Expression>(expr_node) );217 return new AddressExpr( maybeMoveBuild< Expression >(expr_node) ); 214 218 } 215 219 Expression *build_sizeOfexpr( ExpressionNode *expr_node ) { 216 return new SizeofExpr( maybe Build<Expression>(expr_node) );220 return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) ); 217 221 } 218 222 Expression *build_sizeOftype( DeclarationNode *decl_node ) { 219 return new SizeofExpr( decl_node->buildType() );223 return new SizeofExpr( maybeMoveBuildType( decl_node ) ); 220 224 } 221 225 Expression *build_alignOfexpr( ExpressionNode *expr_node ) { 222 return new AlignofExpr( maybe Build<Expression>(expr_node) );226 return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) ); 223 227 } 224 228 Expression *build_alignOftype( DeclarationNode *decl_node ) { 225 return new AlignofExpr( decl_node->buildType() );229 return new AlignofExpr( maybeMoveBuildType( decl_node) ); 226 230 } 227 231 Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) { 228 return new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() ); 232 Expression* ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() ); 233 delete member; 234 return ret; 229 235 } 230 236 231 237 Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) { 232 return new LogicalExpr( notZeroExpr( maybe Build<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );238 return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind ); 233 239 } 234 240 235 241 Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) { 236 std::list< Expression *> args;237 args.push_back( maybe Build<Expression>(expr_node) );242 std::list< Expression * > args; 243 args.push_back( maybeMoveBuild< Expression >(expr_node) ); 238 244 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 239 245 } 240 246 Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) { 241 std::list< Expression *> args;242 args.push_back( new AddressExpr( maybe Build<Expression>(expr_node) ) );247 std::list< Expression * > args; 248 args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) ); 243 249 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 244 250 } 245 251 Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 246 std::list< Expression *> args;247 args.push_back( maybe Build<Expression>(expr_node1) );248 args.push_back( maybe Build<Expression>(expr_node2) );252 std::list< Expression * > args; 253 args.push_back( maybeMoveBuild< Expression >(expr_node1) ); 254 args.push_back( maybeMoveBuild< Expression >(expr_node2) ); 249 255 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 250 256 } 251 257 Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 252 std::list< Expression *> args;253 args.push_back( new AddressExpr( maybe Build<Expression>(expr_node1) ) );254 args.push_back( maybe Build<Expression>(expr_node2) );258 std::list< Expression * > args; 259 args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) ); 260 args.push_back( maybeMoveBuild< Expression >(expr_node2) ); 255 261 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 256 262 } 257 263 258 264 Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) { 259 return new ConditionalExpr( notZeroExpr( maybe Build<Expression>(expr_node1) ), maybeBuild<Expression>(expr_node2), maybeBuild<Expression>(expr_node3) );265 return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) ); 260 266 } 261 267 262 268 Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 263 return new CommaExpr( maybe Build<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );269 return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) ); 264 270 } 265 271 266 272 Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) { 267 return new AttrExpr( var, maybe Build<Expression>(expr_node) );273 return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) ); 268 274 } 269 275 Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) { 270 return new AttrExpr( var, decl_node->buildType() );276 return new AttrExpr( var, maybeMoveBuildType( decl_node ) ); 271 277 } 272 278 273 279 Expression *build_tuple( ExpressionNode * expr_node ) { 274 280 TupleExpr *ret = new TupleExpr(); 275 build List( expr_node, ret->get_exprs() );281 buildMoveList( expr_node, ret->get_exprs() ); 276 282 return ret; 277 283 } 278 284 279 285 Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) { 280 std::list<Expression *> args; 281 282 buildList( expr_node, args ); 283 return new UntypedExpr( maybeBuild<Expression>(function), args, nullptr ); 286 std::list< Expression * > args; 287 buildMoveList( expr_node, args ); 288 return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr ); 284 289 } 285 290 286 291 Expression *build_range( ExpressionNode * low, ExpressionNode *high ) { 287 Expression *low_cexpr = maybeBuild<Expression>( low ); 288 Expression *high_cexpr = maybeBuild<Expression>( high ); 289 return new RangeExpr( low_cexpr, high_cexpr ); 290 } 291 292 //############################################################################## 293 294 Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) { 295 return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild<Expression>(operand) ); 296 } 297 298 //############################################################################## 299 300 void LabelNode::print( std::ostream &os, int indent ) const {} 301 302 void LabelNode::printOneLine( std::ostream &os, int indent ) const {} 303 304 //############################################################################## 292 return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) ); 293 } 294 295 Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) { 296 return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) ); 297 } 305 298 306 299 Expression *build_valexpr( StatementNode *s ) { 307 return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr ); 308 } 309 310 //############################################################################## 311 312 // ForCtlExprNode::ForCtlExprNode( ParseNode *init_, ExpressionNode *cond, ExpressionNode *incr ) throw ( SemanticError ) : condition( cond ), change( incr ) { 313 // if ( init_ == 0 ) 314 // init = 0; 315 // else { 316 // DeclarationNode *decl; 317 // ExpressionNode *exp; 318 319 // if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0) 320 // init = new StatementNode( decl ); 321 // else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0) 322 // init = new StatementNode( StatementNode::Exp, exp ); 323 // else 324 // throw SemanticError("Error in for control expression"); 325 // } 326 // } 327 328 // ForCtlExprNode::ForCtlExprNode( const ForCtlExprNode &other ) 329 // : ExpressionNode( other ), init( maybeClone( other.init ) ), condition( maybeClone( other.condition ) ), change( maybeClone( other.change ) ) { 330 // } 331 332 // ForCtlExprNode::~ForCtlExprNode() { 333 // delete init; 334 // delete condition; 335 // delete change; 336 // } 337 338 // Expression *ForCtlExprNode::build() const { 339 // // this shouldn't be used! 340 // assert( false ); 341 // return 0; 342 // } 343 344 // void ForCtlExprNode::print( std::ostream &os, int indent ) const{ 345 // os << string( indent,' ' ) << "For Control Expression -- :" << endl; 346 347 // os << string( indent + 2, ' ' ) << "initialization:" << endl; 348 // if ( init != 0 ) 349 // init->printList( os, indent + 4 ); 350 351 // os << string( indent + 2, ' ' ) << "condition: " << endl; 352 // if ( condition != 0 ) 353 // condition->print( os, indent + 4 ); 354 // os << string( indent + 2, ' ' ) << "increment: " << endl; 355 // if ( change != 0 ) 356 // change->print( os, indent + 4 ); 357 // } 358 359 // void ForCtlExprNode::printOneLine( std::ostream &, int indent ) const { 360 // assert( false ); 361 // } 362 363 //############################################################################## 364 300 return new UntypedValofExpr( maybeMoveBuild< Statement >(s), nullptr ); 301 } 365 302 Expression *build_typevalue( DeclarationNode *decl ) { 366 return new TypeExpr( decl->buildType() ); 367 } 368 369 //############################################################################## 303 return new TypeExpr( maybeMoveBuildType( decl ) ); 304 } 370 305 371 306 Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) { 372 Declaration * newDecl = maybeBuild< Declaration>(decl_node); // compound literal type307 Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type 373 308 if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type 374 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybe Build<Initializer>(kids) );309 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) ); 375 310 // these types do not have associated type information 376 311 } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl ) ) { 377 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybe Build<Initializer>(kids) );312 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 378 313 } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl ) ) { 379 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybe Build<Initializer>(kids) );314 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 380 315 } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl ) ) { 381 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybe Build<Initializer>(kids) );316 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 382 317 } else { 383 318 assert( false ); -
src/Parser/InitializerNode.cc
r79841be r6943a987 10 10 // Created On : Sat May 16 13:20:24 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jul 4 15:37:15201613 // Update Count : 1512 // Last Modified On : Mon Aug 15 18:27:02 2016 13 // Update Count : 20 14 14 // 15 15 … … 25 25 : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) { 26 26 if ( aggrp ) 27 kids = dynamic_cast< InitializerNode * >( get_link() );27 kids = dynamic_cast< InitializerNode * >( get_next() ); 28 28 29 29 if ( kids != 0 ) 30 set_l ink( 0 );30 set_last( 0 ); 31 31 } 32 32 … … 34 34 : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) { 35 35 if ( init != 0 ) 36 set_l ink(init);36 set_last( init ); 37 37 38 38 if ( aggrp ) 39 kids = dynamic_cast< InitializerNode * >( get_link() );39 kids = dynamic_cast< InitializerNode * >( get_next() ); 40 40 41 41 if ( kids != 0 ) … … 45 45 InitializerNode::~InitializerNode() { 46 46 delete expr; 47 delete designator; 48 delete kids; 47 49 } 48 50 … … 58 60 while ( curdes != 0) { 59 61 curdes->printOneLine(os); 60 curdes = (ExpressionNode *)(curdes->get_ link());62 curdes = (ExpressionNode *)(curdes->get_next()); 61 63 if ( curdes ) os << ", "; 62 64 } // while … … 72 74 73 75 InitializerNode *moreInit; 74 if ( get_ link() != 0 && ((moreInit = dynamic_cast< InitializerNode * >( get_link() ) ) != 0) )76 if ( get_next() != 0 && ((moreInit = dynamic_cast< InitializerNode * >( get_next() ) ) != 0) ) 75 77 moreInit->printOneLine( os ); 76 78 } … … 82 84 //assert( next_init() != 0 ); 83 85 84 std::list< Initializer * > initlist;85 buildList< Initializer, InitializerNode>( next_init(), initlist );86 std::list< Initializer * > initlist; 87 buildList< Initializer, InitializerNode >( next_init(), initlist ); 86 88 87 std::list< Expression * > designlist;89 std::list< Expression * > designlist; 88 90 89 91 if ( designator != 0 ) { 90 buildList< Expression, ExpressionNode>( designator, designlist );92 buildList< Expression, ExpressionNode >( designator, designlist ); 91 93 } // if 92 94 93 95 return new ListInit( initlist, designlist, maybeConstructed ); 94 96 } else { 95 std::list< Expression * > designators;97 std::list< Expression * > designators; 96 98 97 99 if ( designator != 0 ) 98 buildList< Expression, ExpressionNode>( designator, designators );100 buildList< Expression, ExpressionNode >( designator, designators ); 99 101 100 102 if ( get_expression() != 0) 101 return new SingleInit( maybeBuild< Expression>( get_expression() ), designators, maybeConstructed );103 return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed ); 102 104 } // if 103 105 -
src/Parser/LinkageSpec.cc
r79841be r6943a987 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // LinkageSpec.cc -- 8 // 7 // LinkageSpec.cc -- 8 // 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:22:09 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 19 15:53:05 201513 // Update Count : 514 // 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 21 12:32:53 2016 13 // Update Count : 17 14 // 15 15 16 16 #include <string> … … 20 20 #include "Common/SemanticError.h" 21 21 22 LinkageSpec:: Type LinkageSpec::fromString( const std::string &stringSpec ) {23 if ( s tringSpec == "\"Cforall\"" ) {22 LinkageSpec::Spec LinkageSpec::fromString( const std::string &spec ) { 23 if ( spec == "\"Cforall\"" ) { 24 24 return Cforall; 25 } else if ( s tringSpec == "\"C\"" ) {25 } else if ( spec == "\"C\"" ) { 26 26 return C; 27 27 } else { 28 throw SemanticError( "Invalid linkage specifier " + stringSpec ); 29 } 28 throw SemanticError( "Invalid linkage specifier " + spec ); 29 } // if 30 delete &spec; // allocated by lexer 30 31 } 31 32 32 std::string LinkageSpec::toString( LinkageSpec::Type linkage ) { 33 switch ( linkage ) { 34 case Intrinsic: 35 return "intrinsic"; 36 case Cforall: 37 return "Cforall"; 38 case C: 39 return "C"; 40 case AutoGen: 41 return "automatically generated"; 42 case Compiler: 43 return "compiler built-in"; 44 } 45 assert( false ); 46 return ""; 33 std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) { 34 assert( linkage >= 0 && linkage < LinkageSpec::NoOfSpecs ); 35 static const char *linkageKinds[LinkageSpec::NoOfSpecs] = { 36 "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in", 37 }; 38 return linkageKinds[linkage]; 47 39 } 48 40 49 bool LinkageSpec::isDecoratable( Type t ) { 50 switch ( t ) { 51 case Intrinsic: 52 case Cforall: 53 case AutoGen: 54 return true; 55 case C: 56 case Compiler: 57 return false; 58 } 59 assert( false ); 60 return false; 41 bool LinkageSpec::isDecoratable( Spec spec ) { 42 assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs ); 43 static bool decoratable[LinkageSpec::NoOfSpecs] = { 44 // Intrinsic, Cforall, C, AutoGen, Compiler 45 true, true, false, true, false, 46 }; 47 return decoratable[spec]; 61 48 } 62 49 63 bool LinkageSpec::isGeneratable( Type t ) { 64 switch ( t ) { 65 case Intrinsic: 66 case Cforall: 67 case AutoGen: 68 case C: 69 return true; 70 case Compiler: 71 return false; 72 } 73 assert( false ); 74 return false; 50 bool LinkageSpec::isGeneratable( Spec spec ) { 51 assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs ); 52 static bool generatable[LinkageSpec::NoOfSpecs] = { 53 // Intrinsic, Cforall, C, AutoGen, Compiler 54 true, true, true, true, false, 55 }; 56 return generatable[spec]; 75 57 } 76 58 77 bool LinkageSpec::isOverloadable( Type t ) { 78 return isDecoratable( t ); 59 bool LinkageSpec::isOverridable( Spec spec ) { 60 assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs ); 61 static bool overridable[LinkageSpec::NoOfSpecs] = { 62 // Intrinsic, Cforall, C, AutoGen, Compiler 63 true, false, false, true, false, 64 }; 65 return overridable[spec]; 79 66 } 80 67 81 82 bool LinkageSpec::isOverridable( Type t ) { 83 switch ( t ) { 84 case Intrinsic: 85 case AutoGen: 86 return true; 87 case Cforall: 88 case C: 89 case Compiler: 90 return false; 91 } 92 assert( false ); 93 return false; 94 } 95 96 bool LinkageSpec::isBuiltin( Type t ) { 97 switch ( t ) { 98 case Cforall: 99 case AutoGen: 100 case C: 101 return false; 102 case Intrinsic: 103 case Compiler: 104 return true; 105 } 106 assert( false ); 107 return false; 68 bool LinkageSpec::isBuiltin( Spec spec ) { 69 assert( spec >= 0 && spec < LinkageSpec::NoOfSpecs ); 70 static bool builtin[LinkageSpec::NoOfSpecs] = { 71 // Intrinsic, Cforall, C, AutoGen, Compiler 72 true, false, false, false, true, 73 }; 74 return builtin[spec]; 108 75 } 109 76 -
src/Parser/LinkageSpec.h
r79841be r6943a987 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:24:28 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Tue Aug 18 14:11:55 201513 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Aug 20 19:22:23 2016 13 // Update Count : 8 14 14 // 15 15 … … 20 20 21 21 struct LinkageSpec { 22 enum Type{22 enum Spec { 23 23 Intrinsic, // C built-in defined in prelude 24 24 Cforall, // ordinary 25 25 C, // not overloadable, not mangled 26 26 AutoGen, // built by translator (struct assignment) 27 Compiler // gcc internal 27 Compiler, // gcc internal 28 NoOfSpecs 28 29 }; 29 30 30 static TypefromString( const std::string & );31 static std::string toString( Type);31 static Spec fromString( const std::string & ); 32 static std::string toString( Spec ); 32 33 33 static bool isDecoratable( Type ); 34 static bool isGeneratable( Type ); 35 static bool isOverloadable( Type ); 36 static bool isOverridable( Type ); 37 static bool isBuiltin( Type ); 34 static bool isDecoratable( Spec ); 35 static bool isGeneratable( Spec ); 36 static bool isOverridable( Spec ); 37 static bool isBuiltin( Spec ); 38 38 }; 39 39 -
src/Parser/ParseNode.cc
r79841be r6943a987 10 10 // Created On : Sat May 16 13:26:29 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 23:32:47201613 // Update Count : 9412 // Last Modified On : Wed Aug 17 23:14:16 2016 13 // Update Count : 126 14 14 // 15 15 … … 17 17 using namespace std; 18 18 19 // Builder20 19 int ParseNode::indent_by = 4; 21 22 ParseNode::ParseNode() : next( 0 ) {};23 ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }24 ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }25 26 ParseNode::~ParseNode() {27 delete next;28 };29 30 ParseNode *ParseNode::get_last() {31 ParseNode *current = this;32 33 while ( current->get_link() != 0 )34 current = current->get_link();35 36 return current;37 }38 39 ParseNode *ParseNode::set_link( ParseNode *next_ ) {40 if ( next_ != 0 ) get_last()->next = next_;41 return this;42 }43 44 void ParseNode::print( std::ostream &os, int indent ) const {}45 46 47 void ParseNode::printList( std::ostream &os, int indent ) const {48 print( os, indent );49 50 if ( next ) {51 next->printList( os, indent );52 } // if53 }54 55 ParseNode &ParseNode::operator,( ParseNode &p ) {56 set_link( &p );57 58 return *this;59 }60 61 ParseNode *mkList( ParseNode &pn ) {62 // it just relies on `operator,' to take care of the "arguments" and provides a nice interface to an awful-looking63 // address-of, rendering, for example (StatementNode *)(&(*$5 + *$7)) into (StatementNode *)mkList(($5, $7))64 // (although "nice" is probably not the word)65 return &pn;66 }67 20 68 21 // Local Variables: // -
src/Parser/ParseNode.h
r79841be r6943a987 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 11 12:24:11 201613 // Update Count : 44312 // Last Modified On : Sun Aug 28 21:14:51 2016 13 // Update Count : 575 14 14 // 15 15 … … 22 22 #include <memory> 23 23 24 #include "Common/utility.h"25 24 #include "Parser/LinkageSpec.h" 26 25 #include "SynTree/Type.h" 27 26 #include "SynTree/Expression.h" 28 27 #include "SynTree/Statement.h" 29 //#include "SynTree/Declaration.h" 28 #include "SynTree/Label.h" 29 #include "Common/utility.h" 30 30 #include "Common/UniqueName.h" 31 #include "SynTree/Label.h"32 31 33 32 class StatementNode; … … 37 36 class InitializerNode; 38 37 39 // Builder 38 //############################################################################## 39 40 40 class ParseNode { 41 41 public: 42 ParseNode(); 43 ParseNode( const std::string * ); 44 ParseNode( const std::string & ); // for copy constructing subclasses 45 virtual ~ParseNode(); 46 47 ParseNode *get_link() const { return next; } 48 ParseNode *get_last(); 49 ParseNode *set_link( ParseNode * ); 50 void set_next( ParseNode *newlink ) { next = newlink; } 51 52 virtual ParseNode *clone() const { return 0; }; 42 ParseNode() {}; 43 ParseNode( const std::string *name ) : name( *name ) { assert( false ); delete name; } 44 ParseNode( const std::string &name ) : name( name ) { assert( false ); } 45 virtual ~ParseNode() { delete next; }; 46 virtual ParseNode *clone() const = 0; 47 48 ParseNode *get_next() const { return next; } 49 ParseNode *set_next( ParseNode *newlink ) { next = newlink; return this; } 50 ParseNode *get_last() { 51 ParseNode *current; 52 for ( current = this; current->get_next() != 0; current = current->get_next() ); 53 return current; 54 } 55 ParseNode *set_last( ParseNode *newlast ) { 56 if ( newlast != 0 ) get_last()->set_next( newlast ); 57 return this; 58 } 53 59 54 60 const std::string &get_name() const { return name; } 55 61 void set_name( const std::string &newValue ) { name = newValue; } 56 62 57 virtual void print( std::ostream &os, int indent = 0 ) const; 58 virtual void printList( std::ostream &os, int indent = 0 ) const; 59 60 ParseNode &operator,( ParseNode & ); 61 protected: 63 virtual void print( std::ostream &os, int indent = 0 ) const {} 64 virtual void printList( std::ostream &os, int indent = 0 ) const {} 65 private: 66 static int indent_by; 67 68 ParseNode *next = nullptr; 62 69 std::string name; 63 static int indent_by; 64 ParseNode *next; 65 }; 66 67 ParseNode *mkList( ParseNode & ); 70 }; // ParseNode 68 71 69 72 //############################################################################## … … 74 77 InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 ); 75 78 ~InitializerNode(); 79 virtual InitializerNode *clone() const { assert( false ); return nullptr; } 76 80 77 81 ExpressionNode *get_expression() const { return expr; } … … 92 96 ExpressionNode *expr; 93 97 bool aggregate; 94 ExpressionNode *designator; 98 ExpressionNode *designator; // may be list 95 99 InitializerNode *kids; 96 100 bool maybeConstructed; 97 }; 98 99 //############################################################################## 100 101 class ExpressionNode : public ParseNode {101 }; // InitializerNode 102 103 //############################################################################## 104 105 class ExpressionNode final : public ParseNode { 102 106 public: 103 107 ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {} … … 105 109 ExpressionNode( const ExpressionNode &other ); 106 110 virtual ~ExpressionNode() {} 107 108 virtual ExpressionNode *clone() const { return 0; } 111 virtual ExpressionNode *clone() const { return expr ? new ExpressionNode( expr->clone() ) : nullptr; } 109 112 110 113 bool get_extension() const { return extension; } 111 114 ExpressionNode *set_extension( bool exten ) { extension = exten; return this; } 112 115 113 virtual void print( std::ostream &os, int indent = 0 ) const {} 114 virtual void printOneLine( std::ostream &os, int indent = 0 ) const {} 115 116 virtual Expression *build() const { return expr; } 116 void print( std::ostream &os, int indent = 0 ) const {} 117 void printOneLine( std::ostream &os, int indent = 0 ) const {} 118 119 template<typename T> 120 bool isExpressionType() const { 121 return nullptr != dynamic_cast<T>(expr.get()); 122 } 123 124 Expression *build() const { return const_cast<ExpressionNode*>(this)->expr.release(); } 117 125 private: 118 126 bool extension = false; 119 Expression *expr;120 }; 127 std::unique_ptr<Expression> expr; 128 }; // ExpressionNode 121 129 122 130 template< typename T > 123 struct maybeBuild_t< Expression, T> {131 struct maybeBuild_t< Expression, T > { 124 132 static inline Expression * doit( const T *orig ) { 125 133 if ( orig ) { … … 128 136 return p; 129 137 } else { 130 return 0;138 return nullptr; 131 139 } // if 132 140 } 133 141 }; 134 135 //##############################################################################136 137 Expression *build_constantInteger( std::string &str );138 Expression *build_constantFloat( std::string &str );139 Expression *build_constantChar( std::string &str );140 ConstantExpr *build_constantStr( std::string &str );141 142 //##############################################################################143 144 NameExpr *build_varref( const std::string *name, bool labelp = false );145 146 //##############################################################################147 148 Expression *build_typevalue( DeclarationNode *decl );149 150 //##############################################################################151 142 152 143 enum class OperKinds { … … 154 145 SizeOf, AlignOf, OffsetOf, Plus, Minus, Mul, Div, Mod, Or, And, 155 146 BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq, 156 Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,147 Assign, AtAssn, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn, 157 148 Index, Range, 158 149 // monadic 159 150 UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost, LabelAddress, 160 151 Ctor, Dtor, 152 }; // OperKinds 153 154 struct LabelNode { 155 std::list< Label > labels; 161 156 }; 157 158 Expression *build_constantInteger( const std::string &str ); 159 Expression *build_constantFloat( const std::string &str ); 160 Expression *build_constantChar( const std::string &str ); 161 ConstantExpr *build_constantStr( const std::string &str ); 162 163 NameExpr *build_varref( const std::string *name, bool labelp = false ); 164 Expression *build_typevalue( DeclarationNode *decl ); 162 165 163 166 Expression *build_cast( DeclarationNode * decl_node, ExpressionNode *expr_node ); … … 183 186 Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ); 184 187 Expression *build_range( ExpressionNode * low, ExpressionNode *high ); 185 186 //############################################################################## 187 188 Expression *build_asm( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ); 189 190 //############################################################################## 191 192 class LabelNode : public ExpressionNode { 193 public: 194 virtual Expression *build() const { return NULL; } 195 virtual LabelNode *clone() const { assert( false ); return new LabelNode( *this ); } 196 197 virtual void print( std::ostream &os, int indent = 0) const; 198 virtual void printOneLine( std::ostream &os, int indent = 0) const; 199 200 const std::list< Label > &get_labels() const { return labels; }; 201 void append_label( std::string * label ) { labels.push_back( *label ); delete label; } 202 private: 203 std::list< Label > labels; 204 }; 205 206 //############################################################################## 207 188 Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ); 208 189 Expression *build_valexpr( StatementNode *s ); 209 210 //##############################################################################211 212 190 Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ); 213 191 … … 218 196 class DeclarationNode : public ParseNode { 219 197 public: 220 enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic };198 enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, NoOfQualifier }; 221 199 enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, }; 222 200 enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary }; … … 226 204 enum BuiltinType { Valist }; 227 205 206 static const char *qualifierName[]; 228 207 static const char *storageName[]; 229 static const char *qualifierName[];230 208 static const char *basicTypeName[]; 231 209 static const char *modifierName[]; … … 236 214 static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false ); 237 215 static DeclarationNode *newQualifier( Qualifier ); 216 static DeclarationNode *newForall( DeclarationNode *); 238 217 static DeclarationNode *newStorageClass( StorageClass ); 239 218 static DeclarationNode *newBasicType( BasicType ); 240 219 static DeclarationNode *newModifier( Modifier ); 241 static DeclarationNode *new Forall( DeclarationNode *);220 static DeclarationNode *newBuiltinType( BuiltinType ); 242 221 static DeclarationNode *newFromTypedef( std::string *); 243 222 static DeclarationNode *newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ); … … 258 237 static DeclarationNode *newAttr( std::string *, ExpressionNode *expr ); 259 238 static DeclarationNode *newAttr( std::string *, DeclarationNode *type ); 260 static DeclarationNode *newBuiltinType( BuiltinType ); 239 240 DeclarationNode(); 241 ~DeclarationNode(); 242 DeclarationNode *clone() const; 261 243 262 244 DeclarationNode *addQualifiers( DeclarationNode *); 245 void checkQualifiers( const TypeData *, const TypeData * ); 263 246 DeclarationNode *copyStorageClasses( DeclarationNode *); 264 247 DeclarationNode *addType( DeclarationNode *); … … 275 258 DeclarationNode *addNewArray( DeclarationNode *array ); 276 259 DeclarationNode *addParamList( DeclarationNode *list ); 277 DeclarationNode *addIdList( DeclarationNode *list ); 260 DeclarationNode *addIdList( DeclarationNode *list ); // old-style functions 278 261 DeclarationNode *addInitializer( InitializerNode *init ); 279 262 … … 284 267 DeclarationNode *cloneBaseType( DeclarationNode *newdecl ); 285 268 286 DeclarationNode *appendList( DeclarationNode * ); 287 288 DeclarationNode *clone() const; 269 DeclarationNode *appendList( DeclarationNode *node ) { 270 return (DeclarationNode *)set_last( node ); 271 } 272 289 273 void print( std::ostream &os, int indent = 0 ) const; 290 274 void printList( std::ostream &os, int indent = 0 ) const; … … 295 279 bool get_hasEllipsis() const; 296 280 const std::string &get_name() const { return name; } 297 LinkageSpec:: Typeget_linkage() const { return linkage; }281 LinkageSpec::Spec get_linkage() const { return linkage; } 298 282 DeclarationNode *extractAggregate() const; 299 ExpressionNode *get_enumeratorValue() const { return enumeratorValue; } 283 bool has_enumeratorValue() const { return (bool)enumeratorValue; } 284 ExpressionNode *consume_enumeratorValue() const { return const_cast<DeclarationNode*>(this)->enumeratorValue.release(); } 300 285 301 286 bool get_extension() const { return extension; } 302 287 DeclarationNode *set_extension( bool exten ) { extension = exten; return this; } 303 304 DeclarationNode(); 305 ~DeclarationNode(); 306 private: 307 StorageClass buildStorageClass() const; 308 bool buildFuncSpecifier( StorageClass key ) const; 288 public: 289 // StorageClass buildStorageClass() const; 290 // bool buildFuncSpecifier( StorageClass key ) const; 309 291 310 292 TypeData *type; 311 293 std::string name; 312 std::list< StorageClass > storageClasses; 294 // std::list< StorageClass > storageClasses; 295 StorageClass storageClass; 296 bool isInline, isNoreturn; 313 297 std::list< std::string > attributes; 314 298 ExpressionNode *bitfieldWidth; 315 ExpressionNode *enumeratorValue;299 std::unique_ptr<ExpressionNode> enumeratorValue; 316 300 InitializerNode *initializer; 317 301 bool hasEllipsis; 318 LinkageSpec:: Typelinkage;302 LinkageSpec::Spec linkage; 319 303 bool extension = false; 304 std::string error; 320 305 321 306 static UniqueName anonymous; … … 323 308 324 309 Type *buildType( TypeData *type ); 325 326 //############################################################################## 327 328 class StatementNode : public ParseNode { 329 public: 330 enum Type { Exp, If, Switch, Case, Default, Choose, Fallthru, 331 While, Do, For, 332 Goto, Continue, Break, Return, Throw, 333 Try, Catch, Finally, Asm, 334 Decl 335 }; 336 337 StatementNode(); 338 StatementNode( const std::string *name ); 339 StatementNode( Type t, ExpressionNode *control = 0, StatementNode *block = 0 ); 340 StatementNode( Type t, std::string *target ); 310 //Type::Qualifiers buildQualifiers( const TypeData::Qualifiers & qualifiers ); 311 312 static inline Type * maybeMoveBuildType( const DeclarationNode *orig ) { 313 Type* ret = orig ? orig->buildType() : nullptr; 314 delete orig; 315 return ret; 316 } 317 318 //############################################################################## 319 320 class StatementNode final : public ParseNode { 321 public: 322 StatementNode() { stmt = nullptr; } 323 StatementNode( Statement *stmt ) : stmt( stmt ) {} 341 324 StatementNode( DeclarationNode *decl ); 342 343 ~StatementNode(); 344 345 static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false ); 346 347 StatementNode *set_block( StatementNode *b ) { block = b; return this; } 348 StatementNode *get_block() const { return block; } 349 350 void set_control( ExpressionNode *c ) { control = c; } 351 ExpressionNode *get_control() const { return control; } 352 353 StatementNode::Type get_type() const { return type; } 354 355 virtual StatementNode *add_label( const std::string * ); 356 virtual std::list<std::string> get_labels() const { return labels; } 357 358 void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; } 359 void setCatchRest( bool newVal ) { isCatchRest = newVal; } 360 361 std::string get_target() const; 362 363 // StatementNode *add_controlexp( ExpressionNode * ); 364 StatementNode *append_block( StatementNode * ); 325 virtual ~StatementNode() {} 326 327 virtual StatementNode *clone() const final { assert( false ); return nullptr; } 328 Statement *build() const { return const_cast<StatementNode*>(this)->stmt.release(); } 329 330 virtual StatementNode *add_label( const std::string * name ) { 331 stmt->get_labels().emplace_back( *name ); 332 delete name; 333 return this; 334 } 335 365 336 virtual StatementNode *append_last_case( StatementNode * ); 366 367 void print( std::ostream &os, int indent = 0) const;368 virtual StatementNode *clone() const;369 virtual Statement *build() const;370 private:371 static const char *StType[];372 Type type;373 ExpressionNode *control;374 StatementNode *block;375 std::list<std::string> labels;376 std::string *target; // target label for jump statements377 DeclarationNode *decl;378 bool isCatchRest;379 }; // StatementNode380 381 class StatementNode2 : public StatementNode {382 public:383 StatementNode2() {}384 StatementNode2( Statement *stmt ) : stmt( stmt ) {}385 virtual ~StatementNode2() {}386 387 virtual StatementNode2 *clone() const { assert( false ); return nullptr; }388 virtual Statement *build() const { return stmt; }389 390 virtual StatementNode2 *add_label( const std::string * name ) {391 stmt->get_labels().emplace_back( *name );392 return this;393 }394 virtual StatementNode *append_last_case( StatementNode * );395 virtual std::list<std::string> get_labels() const { assert( false ); return StatementNode::get_labels(); }396 337 397 338 virtual void print( std::ostream &os, int indent = 0 ) {} 398 339 virtual void printList( std::ostream &os, int indent = 0 ) {} 399 340 private: 400 Statement *stmt;341 std::unique_ptr<Statement> stmt; 401 342 }; // StatementNode 343 344 Statement *build_expr( ExpressionNode *ctl ); 402 345 403 346 struct ForCtl { 404 347 ForCtl( ExpressionNode *expr, ExpressionNode *condition, ExpressionNode *change ) : 405 init( new StatementNode( StatementNode::Exp, expr) ), condition( condition ), change( change ) {}348 init( new StatementNode( build_expr( expr ) ) ), condition( condition ), change( change ) {} 406 349 ForCtl( DeclarationNode *decl, ExpressionNode *condition, ExpressionNode *change ) : 407 350 init( new StatementNode( decl ) ), condition( condition ), change( change ) {} … … 412 355 }; 413 356 414 Statement *build_expr( ExpressionNode *ctl );415 357 Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ); 416 358 Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ); … … 419 361 Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind = false ); 420 362 Statement *build_for( ForCtl *forctl, StatementNode *stmt ); 421 Statement *build_branch( std::string identifier, BranchStmt::Type kind ); 363 Statement *build_branch( BranchStmt::Type kind ); 364 Statement *build_branch( std::string *identifier, BranchStmt::Type kind ); 422 365 Statement *build_computedgoto( ExpressionNode *ctl ); 423 366 Statement *build_return( ExpressionNode *ctl ); 424 367 Statement *build_throw( ExpressionNode *ctl ); 425 426 //############################################################################## 427 428 class CompoundStmtNode : public StatementNode { 429 public: 430 CompoundStmtNode(); 431 CompoundStmtNode( const std::string * ); 432 CompoundStmtNode( StatementNode * ); 433 ~CompoundStmtNode(); 434 435 void add_statement( StatementNode * ); 436 437 void print( std::ostream &os, int indent = 0 ) const; 438 virtual Statement *build() const; 439 private: 440 StatementNode *first, *last; 441 }; 442 443 //############################################################################## 444 445 class AsmStmtNode : public StatementNode { 446 public: 447 AsmStmtNode( Type, bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 ); 448 ~AsmStmtNode(); 449 450 void print( std::ostream &os, int indent = 0 ) const; 451 Statement *build() const; 452 private: 453 bool voltile; 454 ConstantExpr *instruction; 455 ExpressionNode *output, *input; 456 ExpressionNode *clobber; 457 std::list< Label > gotolabels; 458 }; 368 Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ); 369 Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny = false ); 370 Statement *build_finally( StatementNode *stmt ); 371 Statement *build_compound( StatementNode *first ); 372 Statement *build_asmstmt( bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 ); 459 373 460 374 //############################################################################## … … 463 377 void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) { 464 378 SemanticError errors; 465 std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );379 std::back_insert_iterator< std::list< SynTreeType * > > out( outputList ); 466 380 const NodeType *cur = firstNode; 467 381 468 382 while ( cur ) { 469 383 try { 470 // SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild<typename std::result_of<decltype(&NodeType::build)(NodeType)>::type>( cur ) );471 SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild<typename std::pointer_traits<decltype(cur->build())>::element_type>( cur ) );384 // SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::result_of< decltype(&NodeType::build)(NodeType)>::type >( cur ) ); 385 SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::pointer_traits< decltype(cur->build())>::element_type >( cur ) ); 472 386 if ( result ) { 473 387 *out++ = result; … … 477 391 errors.append( e ); 478 392 } // try 479 cur = dynamic_cast< NodeType * >( cur->get_link() );393 cur = dynamic_cast< NodeType * >( cur->get_next() ); 480 394 } // while 481 395 if ( ! errors.isEmpty() ) { … … 486 400 // in DeclarationNode.cc 487 401 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ); 488 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList );402 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ); 489 403 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ); 404 405 template< typename SynTreeType, typename NodeType > 406 void buildMoveList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) { 407 buildList(firstNode, outputList); 408 delete firstNode; 409 } 410 490 411 491 412 #endif // PARSENODE_H -
src/Parser/StatementNode.cc
r79841be r6943a987 10 10 // Created On : Sat May 16 14:59:41 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 11 16:19:45201613 // Update Count : 21012 // Last Modified On : Sun Aug 21 11:59:37 2016 13 // Update Count : 325 14 14 // 15 15 … … 26 26 using namespace std; 27 27 28 const char *StatementNode::StType[] = { 29 "Exp", "If", "Switch", "Case", "Default", "Choose", "Fallthru", 30 "While", "Do", "For", 31 "Goto", "Continue", "Break", "Return", "Throw", 32 "Try", "Catch", "Finally", "Asm", 33 "Decl" 34 }; 35 36 StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {} 37 38 StatementNode::StatementNode( const string *name ) : ParseNode( name ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {} 39 40 StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), isCatchRest ( false ) { 28 29 StatementNode::StatementNode( DeclarationNode *decl ) { 41 30 if ( decl ) { 42 if ( DeclarationNode *agg = decl->extractAggregate() ) { 43 this->decl = agg; 44 StatementNode *nextStmt = new StatementNode; 45 nextStmt->type = Decl; 46 nextStmt->decl = decl; 47 next = nextStmt; 48 if ( decl->get_link() ) { 49 next->set_next( new StatementNode( dynamic_cast< DeclarationNode* >( decl->get_link() ) ) ); 31 DeclarationNode *agg = decl->extractAggregate(); 32 if ( agg ) { 33 StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) ); 34 set_next( nextStmt ); 35 if ( decl->get_next() ) { 36 get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) ); 50 37 decl->set_next( 0 ); 51 38 } // if 52 39 } else { 53 if ( decl->get_ link() ) {54 next = new StatementNode( dynamic_cast< DeclarationNode* >( decl->get_link() ) );40 if ( decl->get_next() ) { 41 set_next(new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) ); 55 42 decl->set_next( 0 ); 56 43 } // if 57 this->decl= decl;44 agg = decl; 58 45 } // if 46 stmt.reset( new DeclStmt( noLabels, maybeMoveBuild< Declaration >(agg) ) ); 47 } else { 48 assert( false ); 59 49 } // if 60 50 } 61 51 62 StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block ) : type( t ), control( ctrl_label ), block( block ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {63 this->control = ( t == Default ) ? 0 : control;64 }65 66 StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), isCatchRest ( false ) {}67 68 StatementNode::~StatementNode() {69 delete control;70 delete block;71 delete target;72 delete decl;73 }74 75 StatementNode * StatementNode::newCatchStmt( DeclarationNode *d, StatementNode *s, bool catchRestP ) {76 StatementNode *ret = new StatementNode( StatementNode::Catch, 0, s );77 ret->addDeclaration( d );78 ret->setCatchRest( catchRestP );79 80 return ret;81 }82 83 std::string StatementNode::get_target() const{84 if ( target )85 return *target;86 87 return string("");88 }89 90 StatementNode * StatementNode::clone() const {91 StatementNode *newnode = new StatementNode( type, maybeClone( control ), maybeClone( block ) );92 if ( target ) {93 newnode->target = new string( *target );94 } else {95 newnode->target = 0;96 } // if97 newnode->decl = maybeClone( decl );98 return newnode;99 }100 101 StatementNode *StatementNode::add_label( const std::string *l ) {102 if ( l != 0 ) {103 labels.push_front( *l );104 delete l;105 } // if106 return this;107 }108 109 StatementNode *StatementNode::append_block( StatementNode *stmt ) {110 if ( stmt != 0 ) {111 if ( block == 0 )112 block = stmt;113 else114 block->set_link( stmt );115 } // if116 return this;117 }118 119 52 StatementNode *StatementNode::append_last_case( StatementNode *stmt ) { 120 assert( false );121 if ( stmt != 0 ) {122 StatementNode *next = ( StatementNode *)get_link();123 if ( next && ( next->get_type() == StatementNode::Case || next->get_type() == StatementNode::Default ) )124 next->append_last_case( stmt );125 else126 if ( block == 0 )127 block = stmt;128 else129 block->set_link( stmt );130 } // if131 return this;132 }133 134 StatementNode *StatementNode2::append_last_case( StatementNode *stmt ) {135 53 StatementNode *prev = this; 136 for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_link() ) {137 StatementNode2 *node = dynamic_cast<StatementNode2 *>(curr);138 assert( node);139 assert( dynamic_cast< CaseStmt *>(node->stmt) );54 // find end of list and maintain previous pointer 55 for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_next() ) { 56 StatementNode *node = safe_dynamic_cast< StatementNode * >(curr); 57 assert( dynamic_cast< CaseStmt * >(node->stmt.get()) ); 140 58 prev = curr; 141 59 } // for 142 StatementNode2 *node = dynamic_cast<StatementNode2 *>(prev); 143 std::list<Statement *> stmts; 144 buildList( stmt, stmts ); 145 CaseStmt * caseStmt; 146 caseStmt = dynamic_cast<CaseStmt *>(node->stmt); 60 // convert from StatementNode list to Statement list 61 StatementNode *node = dynamic_cast< StatementNode * >(prev); 62 std::list< Statement * > stmts; 63 buildMoveList( stmt, stmts ); 64 // splice any new Statements to end of current Statements 65 CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt.get()); 147 66 caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts ); 148 67 return this; 149 68 } 150 69 151 void StatementNode::print( std::ostream &os, int indent ) const {152 if ( ! labels.empty() ) {153 std::list<std::string>::const_iterator i;154 155 os << string( indent, ' ' );156 for ( i = labels.begin(); i != labels.end(); i++ )157 os << *i << ":";158 os << endl;159 } // if160 161 switch ( type ) {162 case Decl:163 decl->print( os, indent );164 break;165 case Exp:166 if ( control ) {167 os << string( indent, ' ' );168 control->print( os, indent );169 os << endl;170 } else171 os << string( indent, ' ' ) << "Null Statement" << endl;172 break;173 default:174 os << string( indent, ' ' ) << StatementNode::StType[type] << endl;175 if ( type == Catch ) {176 if ( decl ) {177 os << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;178 decl->print( os, indent + 2 * ParseNode::indent_by );179 } else if ( isCatchRest ) {180 os << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;181 } else {182 ; // should never reach here183 } // if184 } // if185 if ( control ) {186 os << string( indent + ParseNode::indent_by, ' ' ) << "Control: " << endl;187 control->printList( os, indent + 2 * ParseNode::indent_by );188 } // if189 if ( block ) {190 os << string( indent + ParseNode::indent_by, ' ' ) << "Cases: " << endl;191 block->printList( os, indent + 2 * ParseNode::indent_by );192 } // if193 if ( target ) {194 os << string( indent + ParseNode::indent_by, ' ' ) << "Target: " << get_target() << endl;195 } // if196 break;197 } // switch198 }199 200 Statement *StatementNode::build() const {201 std::list<Statement *> branches;202 std::list<Expression *> exps;203 std::list<Label> labs;204 205 if ( ! labels.empty() ) {206 std::back_insert_iterator< std::list<Label> > lab_it( labs );207 copy( labels.begin(), labels.end(), lab_it );208 } // if209 210 // try {211 buildList<Statement, StatementNode>( get_block(), branches );212 213 switch ( type ) {214 case Decl:215 return new DeclStmt( labs, maybeBuild< Declaration >( decl ) );216 case Exp:217 {218 Expression *e = maybeBuild< Expression >( get_control() );219 220 if ( e )221 return new ExprStmt( labs, e );222 else223 return new NullStmt( labs );224 }225 assert( false );226 case If:227 // {228 // Statement *thenb = 0, *elseb = 0;229 // assert( branches.size() >= 1 );230 231 // thenb = branches.front();232 // branches.pop_front();233 // if ( ! branches.empty() ) {234 // elseb = branches.front();235 // branches.pop_front();236 // } // if237 // return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );238 // }239 assert( false );240 case Switch:241 // return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );242 assert( false );243 case Case:244 //return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches );245 assert( false );246 case Default:247 //return new CaseStmt( labs, 0, branches, true );248 assert( false );249 case While:250 // assert( branches.size() == 1 );251 // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );252 assert( false );253 case Do:254 // assert( branches.size() == 1 );255 // return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );256 assert( false );257 case For:258 // {259 // assert( branches.size() == 1 );260 261 // ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() );262 // assert( ctl != 0 );263 264 // std::list<Statement *> init;265 // if ( ctl->get_init() != 0 ) {266 // buildList( ctl->get_init(), init );267 // } // if268 269 // Expression *cond = 0;270 // if ( ctl->get_condition() != 0 )271 // cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );272 273 // Expression *incr = 0;274 // if ( ctl->get_change() != 0 )275 // incr = maybeBuild<Expression>(ctl->get_change());276 277 // return new ForStmt( labs, init, cond, incr, branches.front() );278 // }279 assert( false );280 case Goto:281 // {282 // if ( get_target() == "" ) { // computed goto283 // assert( get_control() != 0 );284 // return new BranchStmt( labs, maybeBuild<Expression>(get_control()), BranchStmt::Goto );285 // } // if286 287 // return new BranchStmt( labs, get_target(), BranchStmt::Goto );288 // }289 assert( false );290 case Break:291 // return new BranchStmt( labs, get_target(), BranchStmt::Break );292 assert( false );293 case Continue:294 // return new BranchStmt( labs, get_target(), BranchStmt::Continue );295 assert( false );296 case Return:297 case Throw :298 // buildList( get_control(), exps );299 // if ( exps.size() ==0 )300 // return new ReturnStmt( labs, 0, type == Throw );301 // if ( exps.size() > 0 )302 // return new ReturnStmt( labs, exps.back(), type == Throw );303 assert( false );304 case Try:305 {306 assert( branches.size() >= 0 );307 CompoundStmt *tryBlock = dynamic_cast<CompoundStmt *>( branches.front());308 branches.pop_front();309 FinallyStmt *finallyBlock = 0;310 if ( ( finallyBlock = dynamic_cast<FinallyStmt *>( branches.back())) ) {311 branches.pop_back();312 } // if313 return new TryStmt( labs, tryBlock, branches, finallyBlock );314 }315 case Catch:316 {317 assert( branches.size() == 1 );318 319 return new CatchStmt( labs, maybeBuild< Declaration >( decl ), branches.front(), isCatchRest );320 }321 case Finally:322 {323 assert( branches.size() == 1 );324 CompoundStmt *block = dynamic_cast<CompoundStmt *>( branches.front() );325 assert( block != 0 );326 327 return new FinallyStmt( labs, block );328 }329 case Asm:330 assert( false );331 default:332 // shouldn't be here333 return 0;334 } // switch335 }336 337 70 Statement *build_expr( ExpressionNode *ctl ) { 338 Expression *e = maybe Build< Expression >( ctl );71 Expression *e = maybeMoveBuild< Expression >( ctl ); 339 72 340 73 if ( e ) … … 346 79 Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) { 347 80 Statement *thenb, *elseb = 0; 348 std::list< Statement *> branches;349 build List<Statement, StatementNode>( then_stmt, branches );81 std::list< Statement * > branches; 82 buildMoveList< Statement, StatementNode >( then_stmt, branches ); 350 83 assert( branches.size() == 1 ); 351 84 thenb = branches.front(); 352 85 353 86 if ( else_stmt ) { 354 std::list< Statement *> branches;355 build List<Statement, StatementNode>( else_stmt, branches );87 std::list< Statement * > branches; 88 buildMoveList< Statement, StatementNode >( else_stmt, branches ); 356 89 assert( branches.size() == 1 ); 357 90 elseb = branches.front(); 358 91 } // if 359 return new IfStmt( noLabels, notZeroExpr( maybe Build<Expression>(ctl) ), thenb, elseb );92 return new IfStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), thenb, elseb ); 360 93 } 361 94 362 95 Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) { 363 std::list< Statement *> branches;364 build List<Statement, StatementNode>( stmt, branches );96 std::list< Statement * > branches; 97 buildMoveList< Statement, StatementNode >( stmt, branches ); 365 98 assert( branches.size() >= 0 ); // size == 0 for switch (...) {}, i.e., no declaration or statements 366 return new SwitchStmt( noLabels, maybe Build<Expression>(ctl), branches );99 return new SwitchStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches ); 367 100 } 368 101 Statement *build_case( ExpressionNode *ctl ) { 369 std::list< Statement *> branches;370 return new CaseStmt( noLabels, maybe Build<Expression>(ctl), branches );102 std::list< Statement * > branches; 103 return new CaseStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches ); 371 104 } 372 105 Statement *build_default() { 373 std::list< Statement *> branches;106 std::list< Statement * > branches; 374 107 return new CaseStmt( noLabels, nullptr, branches, true ); 375 108 } 376 109 377 110 Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) { 378 std::list< Statement *> branches;379 build List<Statement, StatementNode>( stmt, branches );380 assert( branches.size() == 1 ); 381 return new WhileStmt( noLabels, notZeroExpr( maybe Build<Expression>(ctl) ), branches.front(), kind );111 std::list< Statement * > branches; 112 buildMoveList< Statement, StatementNode >( stmt, branches ); 113 assert( branches.size() == 1 ); 114 return new WhileStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), branches.front(), kind ); 382 115 } 383 116 384 117 Statement *build_for( ForCtl *forctl, StatementNode *stmt ) { 385 std::list< Statement *> branches;386 build List<Statement, StatementNode>( stmt, branches );387 assert( branches.size() == 1 ); 388 389 std::list< Statement *> init;118 std::list< Statement * > branches; 119 buildMoveList< Statement, StatementNode >( stmt, branches ); 120 assert( branches.size() == 1 ); 121 122 std::list< Statement * > init; 390 123 if ( forctl->init != 0 ) { 391 build List( forctl->init, init );124 buildMoveList( forctl->init, init ); 392 125 } // if 393 126 394 127 Expression *cond = 0; 395 128 if ( forctl->condition != 0 ) 396 cond = notZeroExpr( maybe Build<Expression>(forctl->condition) );129 cond = notZeroExpr( maybeMoveBuild< Expression >(forctl->condition) ); 397 130 398 131 Expression *incr = 0; 399 132 if ( forctl->change != 0 ) 400 incr = maybe Build<Expression>(forctl->change);133 incr = maybeMoveBuild< Expression >(forctl->change); 401 134 402 135 delete forctl; … … 404 137 } 405 138 406 Statement *build_branch( std::string identifier, BranchStmt::Type kind ) { 407 return new BranchStmt( noLabels, identifier, kind ); 139 Statement *build_branch( BranchStmt::Type kind ) { 140 Statement * ret = new BranchStmt( noLabels, "", kind ); 141 return ret; 142 } 143 Statement *build_branch( std::string *identifier, BranchStmt::Type kind ) { 144 Statement * ret = new BranchStmt( noLabels, *identifier, kind ); 145 delete identifier; // allocated by lexer 146 return ret; 408 147 } 409 148 Statement *build_computedgoto( ExpressionNode *ctl ) { 410 return new BranchStmt( noLabels, maybe Build<Expression>(ctl), BranchStmt::Goto );149 return new BranchStmt( noLabels, maybeMoveBuild< Expression >(ctl), BranchStmt::Goto ); 411 150 } 412 151 413 152 Statement *build_return( ExpressionNode *ctl ) { 414 std::list< Expression *> exps;415 build List( ctl, exps );153 std::list< Expression * > exps; 154 buildMoveList( ctl, exps ); 416 155 return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr ); 417 156 } 418 157 Statement *build_throw( ExpressionNode *ctl ) { 419 std::list<Expression *> exps; 420 buildList( ctl, exps ); 421 return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr, true ); 422 } 423 424 425 CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {} 426 427 CompoundStmtNode::CompoundStmtNode( const string *name_ ) : StatementNode( name_ ), first( 0 ), last( 0 ) {} 428 429 CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ) : first( stmt ) { 430 if ( first ) { 431 last = ( StatementNode *)( stmt->get_last()); 432 } else { 433 last = 0; 434 } // if 435 } 436 437 CompoundStmtNode::~CompoundStmtNode() { 438 delete first; 439 } 440 441 void CompoundStmtNode::add_statement( StatementNode *stmt ) { 442 if ( stmt != 0 ) { 443 last->set_link( stmt ); 444 last = ( StatementNode *)( stmt->get_link()); 445 } // if 446 } 447 448 void CompoundStmtNode::print( ostream &os, int indent ) const { 449 if ( first ) { 450 first->printList( os, indent+2 ); 451 } // if 452 } 453 454 Statement *CompoundStmtNode::build() const { 455 std::list<Label> labs; 456 const std::list<std::string> &labels = get_labels(); 457 458 if ( ! labels.empty() ) { 459 std::back_insert_iterator< std::list<Label> > lab_it( labs ); 460 copy( labels.begin(), labels.end(), lab_it ); 461 } // if 462 463 CompoundStmt *cs = new CompoundStmt( labs ); 464 buildList( first, cs->get_kids() ); 158 std::list< Expression * > exps; 159 buildMoveList( ctl, exps ); 160 assertf( exps.size() < 2, "This means we are leaking memory"); 161 return new ReturnStmt( noLabels, !exps.empty() ? exps.back() : nullptr, true ); 162 } 163 164 Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) { 165 std::list< Statement * > branches; 166 buildMoveList< Statement, StatementNode >( catch_stmt, branches ); 167 CompoundStmt *tryBlock = safe_dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt)); 168 FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) ); 169 return new TryStmt( noLabels, tryBlock, branches, finallyBlock ); 170 } 171 Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny ) { 172 std::list< Statement * > branches; 173 buildMoveList< Statement, StatementNode >( stmt, branches ); 174 assert( branches.size() == 1 ); 175 return new CatchStmt( noLabels, maybeMoveBuild< Declaration >(decl), branches.front(), catchAny ); 176 } 177 Statement *build_finally( StatementNode *stmt ) { 178 std::list< Statement * > branches; 179 buildMoveList< Statement, StatementNode >( stmt, branches ); 180 assert( branches.size() == 1 ); 181 return new FinallyStmt( noLabels, dynamic_cast< CompoundStmt * >( branches.front() ) ); 182 } 183 184 Statement *build_compound( StatementNode *first ) { 185 CompoundStmt *cs = new CompoundStmt( noLabels ); 186 buildMoveList( first, cs->get_kids() ); 465 187 return cs; 466 188 } 467 189 468 469 AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) : 470 StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) { 471 if ( gotolabels ) { 472 this->gotolabels = gotolabels->get_labels(); 473 delete gotolabels; 474 } // if 475 } 476 477 AsmStmtNode::~AsmStmtNode() { 478 delete output; delete input; delete clobber; 479 } 480 481 void AsmStmtNode::print( std::ostream &os, int indent ) const { 482 StatementNode::print( os, indent ); // print statement labels 483 os << string( indent + ParseNode::indent_by, ' ' ) << "volatile:" << voltile << endl; 484 if ( instruction ) { 485 os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl; 486 // instruction->printList( os, indent + 2 * ParseNode::indent_by ); 487 } // if 488 if ( output ) { 489 os << string( indent + ParseNode::indent_by, ' ' ) << "Output:" << endl; 490 output->printList( os, indent + 2 * ParseNode::indent_by ); 491 } // if 492 if ( input ) { 493 os << string( indent + ParseNode::indent_by, ' ' ) << "Input:" << endl; 494 input->printList( os, indent + 2 * ParseNode::indent_by ); 495 } // if 496 if ( clobber ) { 497 os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl; 498 // clobber->printList( os, indent + 2 * ParseNode::indent_by ); 499 } // if 500 if ( ! gotolabels.empty() ) { 501 os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl; 502 os << string( indent + 2 * ParseNode::indent_by, ' ' ); 503 for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) { 504 os << *i; 505 i++; 506 if ( i == gotolabels.end() ) break; 507 os << ", "; 508 } 509 os << endl; 510 } // if 511 } 512 513 Statement *AsmStmtNode::build() const { 514 std::list<Label> labs; 515 516 if ( ! get_labels().empty() ) { 517 std::back_insert_iterator< std::list<Label> > lab_it( labs ); 518 copy( get_labels().begin(), get_labels().end(), lab_it ); 519 } // if 520 190 Statement *build_asmstmt( bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) { 521 191 std::list< Expression * > out, in; 522 192 std::list< ConstantExpr * > clob; 523 buildList( output, out ); 524 build List( input, in);525 build List( clobber, clob);526 std::list< Label > gotolabs = gotolabels;527 return new AsmStmt( labs, voltile, instruction, out, in, clob, gotolabs );193 194 buildMoveList( output, out ); 195 buildMoveList( input, in ); 196 buildMoveList( clobber, clob ); 197 return new AsmStmt( noLabels, voltile, instruction, out, in, clob, gotolabels ? gotolabels->labels : noLabels ); 528 198 } 529 199 -
src/Parser/TypeData.cc
r79841be r6943a987 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Aug 7 07:51:48 201613 // Update Count : 5812 // Last Modified On : Sun Aug 28 18:28:58 2016 13 // Update Count : 223 14 14 // 15 15 … … 94 94 break; 95 95 } // switch 96 } 96 } // TypeData::TypeData 97 97 98 98 TypeData::~TypeData() { … … 163 163 break; 164 164 } // switch 165 } 166 167 TypeData * TypeData::clone() const {168 TypeData * newtype = new TypeData( kind );165 } // TypeData::~TypeData 166 167 TypeData * TypeData::clone() const { 168 TypeData * newtype = new TypeData( kind ); 169 169 newtype->qualifiers = qualifiers; 170 170 newtype->base = maybeClone( base ); … … 182 182 break; 183 183 case Array: 184 //PAB newtype->array->dimension = maybeClone( array->dimension ); 185 newtype->array->dimension = array->dimension; 184 newtype->array->dimension = maybeClone( array->dimension ); 186 185 newtype->array->isVarLen = array->isVarLen; 187 186 newtype->array->isStatic = array->isStatic; … … 239 238 } // switch 240 239 return newtype; 241 } 240 } // TypeData::clone 242 241 243 242 void TypeData::print( std::ostream &os, int indent ) const { … … 245 244 using std::string; 246 245 247 printEnums( qualifiers.begin(), qualifiers.end(), DeclarationNode::qualifierName, os ); 246 for ( int i = 0; i < DeclarationNode::NoOfQualifier; i += 1 ) { 247 if ( qualifiers[i] ) os << DeclarationNode::qualifierName[ i ] << ' '; 248 } // for 248 249 249 250 if ( forall ) { … … 417 418 assert( false ); 418 419 } // switch 419 } 420 421 TypeData *TypeData::extractAggregate( bool toplevel ) const { 422 TypeData *ret = 0; 423 424 switch ( kind ) { 425 case Aggregate: 426 if ( ! toplevel && aggregate->fields ) { 427 ret = clone(); 428 ret->qualifiers.clear(); 429 } // if 430 break; 431 case Enum: 432 if ( ! toplevel && enumeration->constants ) { 433 ret = clone(); 434 ret->qualifiers.clear(); 435 } // if 436 break; 437 case AggregateInst: 438 if ( aggInst->aggregate ) { 439 ret = aggInst->aggregate->extractAggregate( false ); 440 } // if 441 break; 442 default: 443 if ( base ) { 444 ret = base->extractAggregate( false ); 445 } // if 446 } // switch 447 return ret; 448 } 449 450 void buildForall( const DeclarationNode *firstNode, std::list< TypeDecl* > &outputList ) { 420 } // TypeData::print 421 422 void buildForall( const DeclarationNode * firstNode, std::list< TypeDecl* > &outputList ) { 451 423 buildList( firstNode, outputList ); 452 424 for ( std::list< TypeDecl* >::iterator i = outputList.begin(); i != outputList.end(); ++i ) { … … 454 426 // add assertion parameters to `type' tyvars in reverse order 455 427 // add dtor: void ^?{}(T *) 456 FunctionType * dtorType = new FunctionType( Type::Qualifiers(), false );428 FunctionType * dtorType = new FunctionType( Type::Qualifiers(), false ); 457 429 dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) ); 458 430 (*i)->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, 0, false, false ) ); 459 431 460 432 // add copy ctor: void ?{}(T *, T) 461 FunctionType * copyCtorType = new FunctionType( Type::Qualifiers(), false );433 FunctionType * copyCtorType = new FunctionType( Type::Qualifiers(), false ); 462 434 copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) ); 463 435 copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) ); … … 465 437 466 438 // add default ctor: void ?{}(T *) 467 FunctionType * ctorType = new FunctionType( Type::Qualifiers(), false );439 FunctionType * ctorType = new FunctionType( Type::Qualifiers(), false ); 468 440 ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) ); 469 441 (*i)->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, 0, false, false ) ); 470 442 471 443 // add assignment operator: T * ?=?(T *, T) 472 FunctionType * assignType = new FunctionType( Type::Qualifiers(), false );444 FunctionType * assignType = new FunctionType( Type::Qualifiers(), false ); 473 445 assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), 0 ) ); 474 446 assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) ); … … 479 451 } 480 452 481 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init ) const { 482 if ( kind == TypeData::Function ) { 483 FunctionDecl *decl; 484 if ( function->hasBody ) { 485 if ( function->body ) { 486 Statement *stmt = function->body->build(); 487 CompoundStmt *body = dynamic_cast< CompoundStmt* >( stmt ); 488 assert( body ); 489 decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn ); 490 } else { 491 // std::list<Label> ls; 492 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn ); 493 } // if 494 } else { 495 decl = new FunctionDecl( name, sc, linkage, buildFunction(), 0, isInline, isNoreturn ); 496 } // if 497 for ( DeclarationNode *cur = function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_link() ) ) { 498 if ( cur->get_name() != "" ) { 499 decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() ); 500 } // if 501 } // for 502 buildList( function->oldDeclList, decl->get_oldDecls() ); 503 return decl; 504 } else if ( kind == TypeData::Aggregate ) { 505 return buildAggregate(); 506 } else if ( kind == TypeData::Enum ) { 507 return buildEnum(); 508 } else if ( kind == TypeData::Symbolic ) { 509 return buildSymbolic( name, sc ); 510 } else if ( kind == TypeData::Variable ) { 511 return buildVariable(); 512 } else { 513 return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, std::list< Attribute * >(), isInline, isNoreturn ); 514 } // if 515 return 0; 516 } 517 518 Type *TypeData::build() const { 519 switch ( kind ) { 520 case Unknown: 453 Type * typebuild( const TypeData * td ) { 454 assert( td ); 455 switch ( td->kind ) { 456 case TypeData::Unknown: 521 457 // fill in implicit int 522 return new BasicType( buildQualifiers( ), BasicType::SignedInt );523 case Basic:524 return buildBasicType( );525 case Pointer:526 return buildPointer( );527 case Array:528 return buildArray( );529 case Function:530 return buildFunction( );531 case AggregateInst:532 return buildAggInst( );533 case EnumConstant:458 return new BasicType( buildQualifiers( td ), BasicType::SignedInt ); 459 case TypeData::Basic: 460 return buildBasicType( td ); 461 case TypeData::Pointer: 462 return buildPointer( td ); 463 case TypeData::Array: 464 return buildArray( td ); 465 case TypeData::Function: 466 return buildFunction( td ); 467 case TypeData::AggregateInst: 468 return buildAggInst( td ); 469 case TypeData::EnumConstant: 534 470 // the name gets filled in later -- by SymTab::Validate 535 return new EnumInstType( buildQualifiers( ), "" );536 case SymbolicInst:537 return buildSymbolicInst( );;538 case T uple:539 return buildTuple( );540 case Type of:541 return buildTypeof( );542 case Builtin:543 return new VarArgsType( buildQualifiers( ) );544 case Attr:545 return buildAttr( );546 case Symbolic:547 case Enum:548 case Aggregate:549 case Variable:471 return new EnumInstType( buildQualifiers( td ), "" ); 472 case TypeData::SymbolicInst: 473 return buildSymbolicInst( td );; 474 case TypeData::Tuple: 475 return buildTuple( td ); 476 case TypeData::Typeof: 477 return buildTypeof( td ); 478 case TypeData::Builtin: 479 return new VarArgsType( buildQualifiers( td ) ); 480 case TypeData::Attr: 481 return buildAttr( td ); 482 case TypeData::Symbolic: 483 case TypeData::Enum: 484 case TypeData::Aggregate: 485 case TypeData::Variable: 550 486 assert( false ); 551 487 } // switch 552 488 return 0; 553 } 554 555 Type::Qualifiers TypeData::buildQualifiers() const { 489 } // typebuild 490 491 TypeData * typeextractAggregate( const TypeData * td, bool toplevel ) { 492 TypeData * ret = 0; 493 494 switch ( td->kind ) { 495 case TypeData::Aggregate: 496 if ( ! toplevel && td->aggregate->fields ) { 497 ret = td->clone(); 498 } // if 499 break; 500 case TypeData::Enum: 501 if ( ! toplevel && td->enumeration->constants ) { 502 ret = td->clone(); 503 } // if 504 break; 505 case TypeData::AggregateInst: 506 if ( td->aggInst->aggregate ) { 507 ret = typeextractAggregate( td->aggInst->aggregate, false ); 508 } // if 509 break; 510 default: 511 if ( td->base ) { 512 ret = typeextractAggregate( td->base, false ); 513 } // if 514 } // switch 515 return ret; 516 } // typeextractAggregate 517 518 Type::Qualifiers buildQualifiers( const TypeData * td ) { 556 519 Type::Qualifiers q; 557 for ( std::list< DeclarationNode::Qualifier >::const_iterator i = qualifiers.begin(); i != qualifiers.end(); ++i ) { 558 switch ( *i ) { 559 case DeclarationNode::Const: 560 q.isConst = true; 561 break; 562 case DeclarationNode::Volatile: 563 q.isVolatile = true; 564 break; 565 case DeclarationNode::Restrict: 566 q.isRestrict = true; 567 break; 568 case DeclarationNode::Lvalue: 569 q.isLvalue = true; 570 break; 571 case DeclarationNode::Atomic: 572 q.isAtomic = true; 573 break; 574 } // switch 575 } // for 520 q.isConst = td->qualifiers[ DeclarationNode::Const ]; 521 q.isVolatile = td->qualifiers[ DeclarationNode::Volatile ]; 522 q.isRestrict = td->qualifiers[ DeclarationNode::Restrict ]; 523 q.isLvalue = td->qualifiers[ DeclarationNode::Lvalue ]; 524 q.isAtomic = td->qualifiers[ DeclarationNode::Atomic ];; 576 525 return q; 577 } 578 579 Type * TypeData::buildBasicType() const{526 } // buildQualifiers 527 528 Type * buildBasicType( const TypeData * td ) { 580 529 static const BasicType::Kind kindMap[] = { BasicType::Char, BasicType::SignedInt, BasicType::Float, BasicType::Double, 581 530 BasicType::Char /* void */, BasicType::Bool, BasicType::DoubleComplex, … … 586 535 BasicType::Kind ret; 587 536 588 for ( std::list< DeclarationNode::BasicType >::const_iterator i = basic->typeSpec.begin(); i !=basic->typeSpec.end(); ++i ) {537 for ( std::list< DeclarationNode::BasicType >::const_iterator i = td->basic->typeSpec.begin(); i != td->basic->typeSpec.end(); ++i ) { 589 538 if ( ! init ) { 590 539 init = true; 591 540 if ( *i == DeclarationNode::Void ) { 592 if ( basic->typeSpec.size() != 1 || !basic->modifiers.empty() ) {593 throw SemanticError( "invalid type specifier \"void\" in type: ", t his);541 if ( td->basic->typeSpec.size() != 1 || ! td->basic->modifiers.empty() ) { 542 throw SemanticError( "invalid type specifier \"void\" in type: ", td ); 594 543 } else { 595 return new VoidType( buildQualifiers( ) );544 return new VoidType( buildQualifiers( td ) ); 596 545 } // if 597 546 } else { … … 602 551 case DeclarationNode::Float: 603 552 if ( sawDouble ) { 604 throw SemanticError( "invalid type specifier \"float\" in type: ", t his);553 throw SemanticError( "invalid type specifier \"float\" in type: ", td ); 605 554 } else { 606 555 switch ( ret ) { … … 612 561 break; 613 562 default: 614 throw SemanticError( "invalid type specifier \"float\" in type: ", t his);563 throw SemanticError( "invalid type specifier \"float\" in type: ", td ); 615 564 } // switch 616 565 } // if … … 618 567 case DeclarationNode::Double: 619 568 if ( sawDouble ) { 620 throw SemanticError( "duplicate type specifier \"double\" in type: ", t his);569 throw SemanticError( "duplicate type specifier \"double\" in type: ", td ); 621 570 } else { 622 571 switch ( ret ) { … … 625 574 break; 626 575 default: 627 throw SemanticError( "invalid type specifier \"double\" in type: ", t his);576 throw SemanticError( "invalid type specifier \"double\" in type: ", td ); 628 577 } // switch 629 578 } // if … … 638 587 break; 639 588 default: 640 throw SemanticError( "invalid type specifier \"_Complex\" in type: ", t his);589 throw SemanticError( "invalid type specifier \"_Complex\" in type: ", td ); 641 590 } // switch 642 591 break; … … 650 599 break; 651 600 default: 652 throw SemanticError( "invalid type specifier \"_Imaginary\" in type: ", t his);601 throw SemanticError( "invalid type specifier \"_Imaginary\" in type: ", td ); 653 602 } // switch 654 603 break; 655 604 default: 656 throw SemanticError( std::string( "invalid type specifier \"" ) + DeclarationNode::basicTypeName[ *i ] + "\" in type: ", t his);605 throw SemanticError( std::string( "invalid type specifier \"" ) + DeclarationNode::basicTypeName[ *i ] + "\" in type: ", td ); 657 606 } // switch 658 607 } // if … … 662 611 } // for 663 612 664 for ( std::list< DeclarationNode::Modifier >::const_iterator i = basic->modifiers.begin(); i !=basic->modifiers.end(); ++i ) {613 for ( std::list< DeclarationNode::Modifier >::const_iterator i = td->basic->modifiers.begin(); i != td->basic->modifiers.end(); ++i ) { 665 614 switch ( *i ) { 666 615 case DeclarationNode::Long: … … 692 641 break; 693 642 default: 694 throw SemanticError( "invalid type modifier \"long\" in type: ", t his);643 throw SemanticError( "invalid type modifier \"long\" in type: ", td ); 695 644 } // switch 696 645 } // if … … 709 658 break; 710 659 default: 711 throw SemanticError( "invalid type modifier \"short\" in type: ", t his);660 throw SemanticError( "invalid type modifier \"short\" in type: ", td ); 712 661 } // switch 713 662 } // if … … 718 667 ret = BasicType::SignedInt; 719 668 } else if ( sawSigned ) { 720 throw SemanticError( "duplicate type modifer \"signed\" in type: ", t his);669 throw SemanticError( "duplicate type modifer \"signed\" in type: ", td ); 721 670 } else { 722 671 switch ( ret ) { … … 734 683 break; 735 684 default: 736 throw SemanticError( "invalid type modifer \"signed\" in type: ", t his);685 throw SemanticError( "invalid type modifer \"signed\" in type: ", td ); 737 686 } // switch 738 687 } // if … … 743 692 ret = BasicType::UnsignedInt; 744 693 } else if ( sawSigned ) { 745 throw SemanticError( "invalid type modifer \"unsigned\" in type: ", t his);694 throw SemanticError( "invalid type modifer \"unsigned\" in type: ", td ); 746 695 } else { 747 696 switch ( ret ) { … … 762 711 break; 763 712 default: 764 throw SemanticError( "invalid type modifer \"unsigned\" in type: ", t his);713 throw SemanticError( "invalid type modifer \"unsigned\" in type: ", td ); 765 714 } // switch 766 715 } // if … … 773 722 } // for 774 723 775 BasicType * bt;724 BasicType * bt; 776 725 if ( ! init ) { 777 bt = new BasicType( buildQualifiers( ), BasicType::SignedInt );726 bt = new BasicType( buildQualifiers( td ), BasicType::SignedInt ); 778 727 } else { 779 bt = new BasicType( buildQualifiers( ), ret );728 bt = new BasicType( buildQualifiers( td ), ret ); 780 729 } // if 781 buildForall( forall, bt->get_forall() );730 buildForall( td->forall, bt->get_forall() ); 782 731 return bt; 783 } 784 785 786 PointerType *TypeData::buildPointer() const { 787 PointerType *pt; 788 if ( base ) { 789 pt = new PointerType( buildQualifiers(), base->build() ); 732 } // buildBasicType 733 734 PointerType * buildPointer( const TypeData * td ) { 735 PointerType * pt; 736 if ( td->base ) { 737 pt = new PointerType( buildQualifiers( td ), typebuild( td->base ) ); 790 738 } else { 791 pt = new PointerType( buildQualifiers( ), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );739 pt = new PointerType( buildQualifiers( td ), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) ); 792 740 } // if 793 buildForall( forall, pt->get_forall() );741 buildForall( td->forall, pt->get_forall() ); 794 742 return pt; 795 } 796 797 ArrayType * TypeData::buildArray() const{798 ArrayType * at;799 if ( base ) {800 at = new ArrayType( buildQualifiers( ), base->build(), maybeBuild< Expression >(array->dimension ),801 array->isVarLen,array->isStatic );743 } // buildPointer 744 745 ArrayType * buildArray( const TypeData * td ) { 746 ArrayType * at; 747 if ( td->base ) { 748 at = new ArrayType( buildQualifiers( td ), typebuild( td->base ), maybeBuild< Expression >( td->array->dimension ), 749 td->array->isVarLen, td->array->isStatic ); 802 750 } else { 803 at = new ArrayType( buildQualifiers( ), new BasicType( Type::Qualifiers(), BasicType::SignedInt ),804 maybeBuild< Expression >( array->dimension ), array->isVarLen,array->isStatic );751 at = new ArrayType( buildQualifiers( td ), new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 752 maybeBuild< Expression >( td->array->dimension ), td->array->isVarLen, td->array->isStatic ); 805 753 } // if 806 buildForall( forall, at->get_forall() );754 buildForall( td->forall, at->get_forall() ); 807 755 return at; 808 } 809 810 FunctionType *TypeData::buildFunction() const { 811 assert( kind == Function ); 812 bool hasEllipsis = function->params ? function->params->get_hasEllipsis() : true; 813 if ( ! function->params ) hasEllipsis = ! function->newStyle; 814 FunctionType *ft = new FunctionType( buildQualifiers(), hasEllipsis ); 815 buildList( function->params, ft->get_parameters() ); 816 buildForall( forall, ft->get_forall() ); 817 if ( base ) { 818 switch ( base->kind ) { 819 case Tuple: 820 buildList( base->tuple->members, ft->get_returnVals() ); 756 } // buildPointer 757 758 AggregateDecl * buildAggregate( const TypeData * td ) { 759 assert( td->kind == TypeData::Aggregate ); 760 AggregateDecl * at; 761 switch ( td->aggregate->kind ) { 762 case DeclarationNode::Struct: 763 at = new StructDecl( td->aggregate->name ); 764 buildForall( td->aggregate->params, at->get_parameters() ); 765 break; 766 case DeclarationNode::Union: 767 at = new UnionDecl( td->aggregate->name ); 768 buildForall( td->aggregate->params, at->get_parameters() ); 769 break; 770 case DeclarationNode::Trait: 771 at = new TraitDecl( td->aggregate->name ); 772 buildList( td->aggregate->params, at->get_parameters() ); 773 break; 774 default: 775 assert( false ); 776 } // switch 777 778 buildList( td->aggregate->fields, at->get_members() ); 779 at->set_body( td->aggregate->body ); 780 781 return at; 782 } // buildAggregate 783 784 ReferenceToType * buildAggInst( const TypeData * td ) { 785 assert( td->kind == TypeData::AggregateInst ); 786 787 ReferenceToType * ret; 788 if ( td->aggInst->aggregate->kind == TypeData::Enum ) { 789 ret = new EnumInstType( buildQualifiers( td ), td->aggInst->aggregate->enumeration->name ); 790 } else { 791 assert( td->aggInst->aggregate->kind == TypeData::Aggregate ); 792 switch ( td->aggInst->aggregate->aggregate->kind ) { 793 case DeclarationNode::Struct: 794 ret = new StructInstType( buildQualifiers( td ), td->aggInst->aggregate->aggregate->name ); 795 break; 796 case DeclarationNode::Union: 797 ret = new UnionInstType( buildQualifiers( td ), td->aggInst->aggregate->aggregate->name ); 798 break; 799 case DeclarationNode::Trait: 800 ret = new TraitInstType( buildQualifiers( td ), td->aggInst->aggregate->aggregate->name ); 821 801 break; 822 802 default: 823 ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( base->buildDecl( "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) ); 803 assert( false ); 804 } // switch 805 } // if 806 buildList( td->aggInst->params, ret->get_parameters() ); 807 buildForall( td->forall, ret->get_forall() ); 808 return ret; 809 } // buildAggInst 810 811 NamedTypeDecl * buildSymbolic( const TypeData * td, const std::string & name, DeclarationNode::StorageClass sc ) { 812 assert( td->kind == TypeData::Symbolic ); 813 NamedTypeDecl * ret; 814 assert( td->base ); 815 if ( td->symbolic->isTypedef ) { 816 ret = new TypedefDecl( name, sc, typebuild( td->base ) ); 817 } else { 818 ret = new TypeDecl( name, sc, typebuild( td->base ), TypeDecl::Any ); 819 } // if 820 buildList( td->symbolic->params, ret->get_parameters() ); 821 buildList( td->symbolic->assertions, ret->get_assertions() ); 822 return ret; 823 } // buildSymbolic 824 825 TypeDecl * buildVariable( const TypeData * td ) { 826 assert( td->kind == TypeData::Variable ); 827 static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype }; 828 829 TypeDecl * ret = new TypeDecl( td->variable->name, DeclarationNode::NoStorageClass, 0, kindMap[ td->variable->tyClass ] ); 830 buildList( td->variable->assertions, ret->get_assertions() ); 831 return ret; 832 } // buildSymbolic 833 834 EnumDecl * buildEnum( const TypeData * td ) { 835 assert( td->kind == TypeData::Enum ); 836 EnumDecl * ret = new EnumDecl( td->enumeration->name ); 837 buildList( td->enumeration->constants, ret->get_members() ); 838 std::list< Declaration * >::iterator members = ret->get_members().begin(); 839 for ( const DeclarationNode * cur = td->enumeration-> constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) { 840 if ( cur->has_enumeratorValue() ) { 841 ObjectDecl * member = dynamic_cast< ObjectDecl * >(* members); 842 member->set_init( new SingleInit( maybeMoveBuild< Expression >( cur->consume_enumeratorValue() ), std::list< Expression * >() ) ); 843 } // if 844 } // for 845 return ret; 846 } // buildEnum 847 848 TypeInstType * buildSymbolicInst( const TypeData * td ) { 849 assert( td->kind == TypeData::SymbolicInst ); 850 TypeInstType * ret = new TypeInstType( buildQualifiers( td ), td->symbolic->name, false ); 851 buildList( td->symbolic->actuals, ret->get_parameters() ); 852 buildForall( td->forall, ret->get_forall() ); 853 return ret; 854 } // buildSymbolicInst 855 856 TupleType * buildTuple( const TypeData * td ) { 857 assert( td->kind == TypeData::Tuple ); 858 TupleType * ret = new TupleType( buildQualifiers( td ) ); 859 buildTypeList( td->tuple->members, ret->get_types() ); 860 buildForall( td->forall, ret->get_forall() ); 861 return ret; 862 } // buildTuple 863 864 TypeofType * buildTypeof( const TypeData * td ) { 865 assert( td->kind == TypeData::Typeof ); 866 assert( td->typeexpr ); 867 assert( td->typeexpr->expr ); 868 return new TypeofType( buildQualifiers( td ), td->typeexpr->expr->build() ); 869 } // buildTypeof 870 871 AttrType * buildAttr( const TypeData * td ) { 872 assert( td->kind == TypeData::Attr ); 873 assert( td->attr ); 874 AttrType * ret; 875 if ( td->attr->expr ) { 876 ret = new AttrType( buildQualifiers( td ), td->attr->name, td->attr->expr->build() ); 877 } else { 878 assert( td->attr->type ); 879 ret = new AttrType( buildQualifiers( td ), td->attr->name, td->attr->type->buildType() ); 880 } // if 881 return ret; 882 } // buildAttr 883 884 Declaration * buildDecl( const TypeData * td, std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) { 885 if ( td->kind == TypeData::Function ) { 886 FunctionDecl * decl; 887 if ( td->function->hasBody ) { 888 if ( td->function->body ) { 889 Statement * stmt = td->function->body->build(); 890 CompoundStmt * body = dynamic_cast< CompoundStmt* >( stmt ); 891 assert( body ); 892 decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), body, isInline, isNoreturn ); 893 } else { 894 // std::list< Label > ls; 895 decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn ); 896 } // if 897 } else { 898 decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), 0, isInline, isNoreturn ); 899 } // if 900 for ( DeclarationNode * cur = td->function->idList; cur != 0; cur = dynamic_cast< DeclarationNode* >( cur->get_next() ) ) { 901 if ( cur->get_name() != "" ) { 902 decl->get_oldIdents().insert( decl->get_oldIdents().end(), cur->get_name() ); 903 } // if 904 } // for 905 buildList( td->function->oldDeclList, decl->get_oldDecls() ); 906 return decl; 907 } else if ( td->kind == TypeData::Aggregate ) { 908 return buildAggregate( td ); 909 } else if ( td->kind == TypeData::Enum ) { 910 return buildEnum( td ); 911 } else if ( td->kind == TypeData::Symbolic ) { 912 return buildSymbolic( td, name, sc ); 913 } else if ( td->kind == TypeData::Variable ) { 914 return buildVariable( td ); 915 } else { 916 return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, std::list< Attribute * >(), isInline, isNoreturn ); 917 } // if 918 return 0; 919 } // buildDecl 920 921 FunctionType * buildFunction( const TypeData * td ) { 922 assert( td->kind == TypeData::Function ); 923 bool hasEllipsis = td->function->params ? td->function->params->get_hasEllipsis() : true; 924 if ( ! td->function->params ) hasEllipsis = ! td->function->newStyle; 925 FunctionType * ft = new FunctionType( buildQualifiers( td ), hasEllipsis ); 926 buildList( td->function->params, ft->get_parameters() ); 927 buildForall( td->forall, ft->get_forall() ); 928 if ( td->base ) { 929 switch ( td->base->kind ) { 930 case TypeData::Tuple: 931 buildList( td->base->tuple->members, ft->get_returnVals() ); 932 break; 933 default: 934 ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base, "", DeclarationNode::NoStorageClass, 0, false, false, LinkageSpec::Cforall ) ) ); 824 935 } // switch 825 936 } else { … … 827 938 } // if 828 939 return ft; 829 } 830 831 AggregateDecl *TypeData::buildAggregate() const { 832 assert( kind == Aggregate ); 833 AggregateDecl *at; 834 switch ( aggregate->kind ) { 835 case DeclarationNode::Struct: 836 at = new StructDecl( aggregate->name ); 837 buildForall( aggregate->params, at->get_parameters() ); 838 break; 839 case DeclarationNode::Union: 840 at = new UnionDecl( aggregate->name ); 841 buildForall( aggregate->params, at->get_parameters() ); 842 break; 843 case DeclarationNode::Trait: 844 at = new TraitDecl( aggregate->name ); 845 buildList( aggregate->params, at->get_parameters() ); 846 break; 847 default: 848 assert( false ); 849 } // switch 850 851 buildList( aggregate->fields, at->get_members() ); 852 at->set_body( aggregate->body ); 853 854 return at; 855 } 856 857 ReferenceToType *TypeData::buildAggInst() const { 858 assert( kind == AggregateInst ); 859 860 ReferenceToType *ret; 861 if ( aggInst->aggregate->kind == Enum ) { 862 ret = new EnumInstType( buildQualifiers(), aggInst->aggregate->enumeration->name ); 863 } else { 864 assert( aggInst->aggregate->kind == Aggregate ); 865 switch ( aggInst->aggregate->aggregate->kind ) { 866 case DeclarationNode::Struct: 867 ret = new StructInstType( buildQualifiers(), aggInst->aggregate->aggregate->name ); 868 break; 869 case DeclarationNode::Union: 870 ret = new UnionInstType( buildQualifiers(), aggInst->aggregate->aggregate->name ); 871 break; 872 case DeclarationNode::Trait: 873 ret = new TraitInstType( buildQualifiers(), aggInst->aggregate->aggregate->name ); 874 break; 875 default: 876 assert( false ); 877 } // switch 878 } // if 879 buildList( aggInst->params, ret->get_parameters() ); 880 buildForall( forall, ret->get_forall() ); 881 return ret; 882 } 883 884 NamedTypeDecl *TypeData::buildSymbolic( const std::string &name, DeclarationNode::StorageClass sc ) const { 885 assert( kind == Symbolic ); 886 NamedTypeDecl *ret; 887 if ( symbolic->isTypedef ) { 888 ret = new TypedefDecl( name, sc, maybeBuild< Type >( base ) ); 889 } else { 890 ret = new TypeDecl( name, sc, maybeBuild< Type >( base ), TypeDecl::Any ); 891 } // if 892 buildList( symbolic->params, ret->get_parameters() ); 893 buildList( symbolic->assertions, ret->get_assertions() ); 894 return ret; 895 } 896 897 TypeDecl *TypeData::buildVariable() const { 898 assert( kind == Variable ); 899 static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype }; 900 901 TypeDecl *ret = new TypeDecl( variable->name, DeclarationNode::NoStorageClass, 0, kindMap[ variable->tyClass ] ); 902 buildList( variable->assertions, ret->get_assertions() ); 903 return ret; 904 } 905 906 EnumDecl *TypeData::buildEnum() const { 907 assert( kind == Enum ); 908 EnumDecl *ret = new EnumDecl( enumeration->name ); 909 buildList( enumeration->constants, ret->get_members() ); 910 std::list< Declaration * >::iterator members = ret->get_members().begin(); 911 for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_link() ), ++members ) { 912 if ( cur->get_enumeratorValue() != NULL ) { 913 ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members); 914 member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) ); 915 } // if 916 } // for 917 return ret; 918 } 919 920 TypeInstType *TypeData::buildSymbolicInst() const { 921 assert( kind == SymbolicInst ); 922 TypeInstType *ret = new TypeInstType( buildQualifiers(), symbolic->name, false ); 923 buildList( symbolic->actuals, ret->get_parameters() ); 924 buildForall( forall, ret->get_forall() ); 925 return ret; 926 } 927 928 TupleType *TypeData::buildTuple() const { 929 assert( kind == Tuple ); 930 TupleType *ret = new TupleType( buildQualifiers() ); 931 buildTypeList( tuple->members, ret->get_types() ); 932 buildForall( forall, ret->get_forall() ); 933 return ret; 934 } 935 936 TypeofType *TypeData::buildTypeof() const { 937 assert( kind == Typeof ); 938 assert( typeexpr ); 939 assert( typeexpr->expr ); 940 TypeofType *ret = new TypeofType( buildQualifiers(), typeexpr->expr->build() ); 941 return ret; 942 } 943 944 AttrType *TypeData::buildAttr() const { 945 assert( kind == Attr ); 946 assert( attr ); 947 AttrType *ret; 948 if ( attr->expr ) { 949 ret = new AttrType( buildQualifiers(), attr->name, attr->expr->build() ); 950 } else { 951 assert( attr->type ); 952 ret = new AttrType( buildQualifiers(), attr->name, attr->type->buildType() ); 953 } // if 954 return ret; 955 } 940 } // buildFunction 956 941 957 942 // Local Variables: // -
src/Parser/TypeData.h
r79841be r6943a987 10 10 // Created On : Sat May 16 15:18:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jul 12 20:52:02201613 // Update Count : 2012 // Last Modified On : Sun Aug 28 22:39:00 2016 13 // Update Count : 85 14 14 // 15 15 … … 17 17 #define TYPEDATA_H 18 18 19 #include < list>19 #include <bitset> 20 20 21 21 #include "ParseNode.h" … … 25 25 enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst, 26 26 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr } kind; 27 28 TypeData( Kind k = Unknown );29 ~TypeData();30 void print( std::ostream &, int indent = 0 ) const;31 TypeData * clone() const;32 33 Type * build() const;34 FunctionType * buildFunction() const;35 36 TypeData * base;37 std::list< DeclarationNode::Qualifier > qualifiers;38 DeclarationNode * forall;39 27 40 28 struct Basic_t { … … 109 97 }; 110 98 99 TypeData * base; 100 typedef std::bitset< DeclarationNode::NoOfQualifier > Qualifiers; 101 Qualifiers qualifiers; 102 DeclarationNode * forall; 103 111 104 union { 112 105 Basic_t * basic; … … 124 117 }; 125 118 126 TypeData * extractAggregate( bool toplevel = true ) const; 127 // helper function for DeclNodeImpl::build 128 Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer * init = 0 ) const; 129 // helper functions for build() 130 Type::Qualifiers buildQualifiers() const; 131 Type * buildBasicType() const; 132 PointerType * buildPointer() const; 133 ArrayType * buildArray() const; 134 AggregateDecl * buildAggregate() const; 135 ReferenceToType * buildAggInst() const; 136 NamedTypeDecl * buildSymbolic( const std::string &name, DeclarationNode::StorageClass sc ) const; 137 TypeDecl* buildVariable() const; 138 EnumDecl* buildEnum() const; 139 TypeInstType * buildSymbolicInst() const; 140 TupleType * buildTuple() const; 141 TypeofType * buildTypeof() const; 142 AttrType * buildAttr() const; 119 TypeData( Kind k = Unknown ); 120 ~TypeData(); 121 void print( std::ostream &, int indent = 0 ) const; 122 TypeData * clone() const; 143 123 }; 124 125 Type * typebuild( const TypeData * ); 126 TypeData * typeextractAggregate( const TypeData * td, bool toplevel = true ); 127 Type::Qualifiers buildQualifiers( const TypeData * td ); 128 Type * buildBasicType( const TypeData * ); 129 PointerType * buildPointer( const TypeData * ); 130 ArrayType * buildArray( const TypeData * ); 131 AggregateDecl * buildAggregate( const TypeData * ); 132 ReferenceToType * buildAggInst( const TypeData * ); 133 NamedTypeDecl * buildSymbolic( const TypeData *, const std::string &name, DeclarationNode::StorageClass sc ); 134 TypeDecl * buildVariable( const TypeData * ); 135 EnumDecl * buildEnum( const TypeData * ); 136 TypeInstType * buildSymbolicInst( const TypeData * ); 137 TupleType * buildTuple( const TypeData * ); 138 TypeofType * buildTypeof( const TypeData * ); 139 AttrType * buildAttr( const TypeData * ); 140 Declaration * buildDecl( const TypeData *, std::string, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = 0 ); 141 FunctionType * buildFunction( const TypeData * ); 144 142 145 143 #endif // TYPEDATA_H -
src/Parser/TypedefTable.cc
r79841be r6943a987 10 10 // Created On : Sat May 16 15:20:13 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Apr 13 16:57:30201613 // Update Count : 2 412 // Last Modified On : Mon Aug 15 18:24:42 2016 13 // Update Count : 25 14 14 // 15 15 … … 64 64 tableType::iterator curPos = table.find( identifier ); 65 65 if ( curPos == table.end()) { 66 list< Entry> newList;66 list< Entry > newList; 67 67 newList.push_front( newEntry ); 68 68 table[identifier] = newList; 69 69 } else { 70 list< Entry>::iterator listPos = (*curPos ).second.begin();70 list< Entry >::iterator listPos = (*curPos ).second.begin(); 71 71 while ( listPos != (*curPos ).second.end() && listPos->scope > scope ) { 72 72 listPos++; … … 127 127 debugPrint( "Leaving scope " << currentScope << endl ); 128 128 for ( tableType::iterator i = table.begin(); i != table.end(); ) { 129 list< Entry> &declList = (*i).second;129 list< Entry > &declList = (*i).second; 130 130 while ( ! declList.empty() && declList.front().scope == currentScope ) { 131 131 declList.pop_front(); … … 157 157 for ( tableType::const_iterator i = table.begin(); i != table.end(); i++) { 158 158 debugPrint( (*i ).first << ": " ); 159 list< Entry> declList = (*i).second;160 for ( list< Entry>::const_iterator j = declList.begin(); j != declList.end(); j++ ) {159 list< Entry > declList = (*i).second; 160 for ( list< Entry >::const_iterator j = declList.begin(); j != declList.end(); j++ ) { 161 161 debugPrint( "(" << (*j).scope << " " << (*j).kind << ") " ); 162 162 } -
src/Parser/TypedefTable.h
r79841be r6943a987 10 10 // Created On : Sat May 16 15:24:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Apr 13 16:59:56201613 // Update Count : 2 712 // Last Modified On : Mon Aug 15 18:25:04 2016 13 // Update Count : 28 14 14 // 15 15 … … 39 39 }; 40 40 41 typedef std::map< std::string, std::list<Entry> > tableType;41 typedef std::map< std::string, std::list< Entry > > tableType; 42 42 tableType table; 43 43 -
src/Parser/lex.cc
r79841be r6943a987 1468 1468 * Author : Peter A. Buhr 1469 1469 * Created On : Sat Sep 22 08:58:10 2001 1470 * Last Modified By : 1471 * Last Modified On : Sun Jul 31 07:19:3620161472 * Update Count : 4 591470 * Last Modified By : Peter A. Buhr 1471 * Last Modified On : Wed Aug 24 13:27:04 2016 1472 * Update Count : 487 1473 1473 */ 1474 1474 #line 20 "lex.ll" … … 1480 1480 1481 1481 #include <string> 1482 #include <cstdio> // FILENAME_MAX 1482 1483 1483 1484 #include "lex.h" … … 1491 1492 #define RETURN_LOCN(x) yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x ) 1492 1493 #define RETURN_VAL(x) yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x ) 1493 #define RETURN_CHAR(x) yylval.tok.str = NULL; RETURN_LOCN( x )1494 #define RETURN_CHAR(x) yylval.tok.str = nullptr; RETURN_LOCN( x ) 1494 1495 #define RETURN_STR(x) yylval.tok.str = strtext; RETURN_LOCN( x ) 1495 1496 1496 #define WHITE_RETURN(x) 1497 #define WHITE_RETURN(x) // do nothing 1497 1498 #define NEWLINE_RETURN() WHITE_RETURN( '\n' ) 1498 1499 #define ASCIIOP_RETURN() RETURN_CHAR( (int)yytext[0] ) // single character operator 1499 #define NAMEDOP_RETURN(x) RETURN_ VAL( x )// multichar operator, with a name1500 #define NAMEDOP_RETURN(x) RETURN_CHAR( x ) // multichar operator, with a name 1500 1501 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 1501 1502 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword … … 1531 1532 1532 1533 1533 #line 153 4"Parser/lex.cc"1534 #line 1535 "Parser/lex.cc" 1534 1535 1535 1536 #define INITIAL 0 … … 1723 1724 register int yy_act; 1724 1725 1725 #line 13 8"lex.ll"1726 #line 139 "lex.ll" 1726 1727 1727 1728 /* line directives */ 1728 #line 17 29"Parser/lex.cc"1729 #line 1730 "Parser/lex.cc" 1729 1730 1730 1731 if ( !(yy_init) ) … … 1823 1824 /* rule 1 can match eol */ 1824 1825 YY_RULE_SETUP 1825 #line 14 0"lex.ll"1826 #line 141 "lex.ll" 1826 1827 { 1827 1828 /* " stop highlighting */ 1829 static char filename[FILENAME_MAX]; // temporarily store current source-file name 1828 1830 char *end_num; 1829 1831 char *begin_string, *end_string; 1830 char *filename;1831 1832 long lineno, length; 1832 1833 lineno = strtol( yytext + 1, &end_num, 0 ); 1833 1834 begin_string = strchr( end_num, '"' ); 1834 if ( begin_string ) { 1835 end_string = strchr( begin_string + 1, '"' ); 1836 if ( end_string ) { 1837 length = end_string - begin_string - 1; 1838 filename = new char[ length + 1 ]; 1839 memcpy( filename, begin_string + 1, length ); 1840 filename[ length ] = '\0'; 1841 //std::cout << "file " << filename << " line " << lineno << std::endl; 1842 yylineno = lineno; 1843 yyfilename = filename; 1844 } // if 1835 if ( begin_string ) { // file name ? 1836 end_string = strchr( begin_string + 1, '"' ); // look for ending delimiter 1837 assert( end_string ); // closing quote ? 1838 length = end_string - begin_string - 1; // file-name length without quotes or sentinel 1839 assert( length < FILENAME_MAX ); // room for sentinel ? 1840 memcpy( &filename, begin_string + 1, length ); // copy file name from yytext 1841 filename[ length ] = '\0'; // terminate string with sentinel 1842 //std::cout << "file " << filename << " line " << lineno << std::endl; 1843 yylineno = lineno; 1844 yyfilename = filename; 1845 1845 } // if 1846 1846 } … … 2426 2426 YY_RULE_SETUP 2427 2427 #line 290 "lex.ll" 2428 { BEGIN QUOTE; rm_underscore(); strtext = new std::string ; *strtext += std::string( yytext); }2428 { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); } 2429 2429 YY_BREAK 2430 2430 case 116: 2431 2431 YY_RULE_SETUP 2432 2432 #line 291 "lex.ll" 2433 { *strtext += std::string( yytext); }2433 { strtext->append( yytext, yyleng ); } 2434 2434 YY_BREAK 2435 2435 case 117: … … 2437 2437 YY_RULE_SETUP 2438 2438 #line 292 "lex.ll" 2439 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }2439 { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); } 2440 2440 YY_BREAK 2441 2441 /* ' stop highlighting */ … … 2444 2444 YY_RULE_SETUP 2445 2445 #line 296 "lex.ll" 2446 { BEGIN STRING; rm_underscore(); strtext = new std::string ; *strtext += std::string( yytext); }2446 { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); } 2447 2447 YY_BREAK 2448 2448 case 119: 2449 2449 YY_RULE_SETUP 2450 2450 #line 297 "lex.ll" 2451 { *strtext += std::string( yytext); }2451 { strtext->append( yytext, yyleng ); } 2452 2452 YY_BREAK 2453 2453 case 120: … … 2455 2455 YY_RULE_SETUP 2456 2456 #line 298 "lex.ll" 2457 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(STRINGliteral); }2457 { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); } 2458 2458 YY_BREAK 2459 2459 /* " stop highlighting */ … … 2462 2462 YY_RULE_SETUP 2463 2463 #line 302 "lex.ll" 2464 { rm_underscore(); *strtext += std::string( yytext); }2464 { rm_underscore(); strtext->append( yytext, yyleng ); } 2465 2465 YY_BREAK 2466 2466 case 122: … … 2473 2473 YY_RULE_SETUP 2474 2474 #line 304 "lex.ll" 2475 { *strtext += std::string( yytext); } // unknown escape character2475 { strtext->append( yytext, yyleng ); } // unknown escape character 2476 2476 YY_BREAK 2477 2477 /* punctuation */ -
src/Parser/lex.h
r79841be r6943a987 10 10 // Created On : Sat Sep 22 08:58:10 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Mar 21 18:18:06201613 // Update Count : 34 612 // Last Modified On : Sun Aug 21 11:28:47 2016 13 // Update Count : 347 14 14 // 15 15 … … 33 33 char *file; 34 34 int line; 35 }; 35 }; // Location 36 36 37 class Token { 38 public: 37 struct Token { 39 38 std::string *str; // must be pointer as used in union 40 39 Location loc; 41 40 42 41 operator std::string *() { return str; } 43 }; 42 }; // Token 44 43 45 44 #endif // PARSER_LEX_H -
src/Parser/lex.ll
r79841be r6943a987 9 9 * Author : Peter A. Buhr 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 * Last Modified By : 12 * Last Modified On : Sun Jul 31 07:19:36201613 * Update Count : 4 5911 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Wed Aug 24 13:27:04 2016 13 * Update Count : 487 14 14 */ 15 15 … … 25 25 26 26 #include <string> 27 #include <cstdio> // FILENAME_MAX 27 28 28 29 #include "lex.h" … … 36 37 #define RETURN_LOCN(x) yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x ) 37 38 #define RETURN_VAL(x) yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x ) 38 #define RETURN_CHAR(x) yylval.tok.str = NULL; RETURN_LOCN( x )39 #define RETURN_CHAR(x) yylval.tok.str = nullptr; RETURN_LOCN( x ) 39 40 #define RETURN_STR(x) yylval.tok.str = strtext; RETURN_LOCN( x ) 40 41 41 #define WHITE_RETURN(x) 42 #define WHITE_RETURN(x) // do nothing 42 43 #define NEWLINE_RETURN() WHITE_RETURN( '\n' ) 43 44 #define ASCIIOP_RETURN() RETURN_CHAR( (int)yytext[0] ) // single character operator 44 #define NAMEDOP_RETURN(x) RETURN_ VAL( x )// multichar operator, with a name45 #define NAMEDOP_RETURN(x) RETURN_CHAR( x ) // multichar operator, with a name 45 46 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 46 47 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword … … 140 141 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" { 141 142 /* " stop highlighting */ 143 static char filename[FILENAME_MAX]; // temporarily store current source-file name 142 144 char *end_num; 143 145 char *begin_string, *end_string; 144 char *filename;145 146 long lineno, length; 146 147 lineno = strtol( yytext + 1, &end_num, 0 ); 147 148 begin_string = strchr( end_num, '"' ); 148 if ( begin_string ) { 149 end_string = strchr( begin_string + 1, '"' ); 150 if ( end_string ) { 151 length = end_string - begin_string - 1; 152 filename = new char[ length + 1 ]; 153 memcpy( filename, begin_string + 1, length ); 154 filename[ length ] = '\0'; 155 //std::cout << "file " << filename << " line " << lineno << std::endl; 156 yylineno = lineno; 157 yyfilename = filename; 158 } // if 149 if ( begin_string ) { // file name ? 150 end_string = strchr( begin_string + 1, '"' ); // look for ending delimiter 151 assert( end_string ); // closing quote ? 152 length = end_string - begin_string - 1; // file-name length without quotes or sentinel 153 assert( length < FILENAME_MAX ); // room for sentinel ? 154 memcpy( &filename, begin_string + 1, length ); // copy file name from yytext 155 filename[ length ] = '\0'; // terminate string with sentinel 156 //std::cout << "file " << filename << " line " << lineno << std::endl; 157 yylineno = lineno; 158 yyfilename = filename; 159 159 } // if 160 160 } … … 288 288 289 289 /* character constant, allows empty value */ 290 ({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new std::string ; *strtext += std::string( yytext); }291 <QUOTE>[^'\\\n]* { *strtext += std::string( yytext); }292 <QUOTE>['\n] { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }290 ({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); } 291 <QUOTE>[^'\\\n]* { strtext->append( yytext, yyleng ); } 292 <QUOTE>['\n] { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); } 293 293 /* ' stop highlighting */ 294 294 295 295 /* string constant */ 296 ({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new std::string ; *strtext += std::string( yytext); }297 <STRING>[^"\\\n]* { *strtext += std::string( yytext); }298 <STRING>["\n] { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(STRINGliteral); }296 ({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); } 297 <STRING>[^"\\\n]* { strtext->append( yytext, yyleng ); } 298 <STRING>["\n] { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); } 299 299 /* " stop highlighting */ 300 300 301 301 /* common character/string constant */ 302 <QUOTE,STRING>{escape_seq} { rm_underscore(); *strtext += std::string( yytext); }302 <QUOTE,STRING>{escape_seq} { rm_underscore(); strtext->append( yytext, yyleng ); } 303 303 <QUOTE,STRING>"\\"{h_white}*"\n" {} // continuation (ALSO HANDLED BY CPP) 304 <QUOTE,STRING>"\\" { *strtext += std::string( yytext); } // unknown escape character304 <QUOTE,STRING>"\\" { strtext->append( yytext, yyleng ); } // unknown escape character 305 305 306 306 /* punctuation */ -
src/Parser/module.mk
r79841be r6943a987 11 11 ## Created On : Sat May 16 15:29:09 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : T hu Jan 28 11:57:23201614 ## Update Count : 10 013 ## Last Modified On : Tue Aug 16 17:28:34 2016 14 ## Update Count : 101 15 15 ############################################################################### 16 16 … … 29 29 Parser/TypeData.cc \ 30 30 Parser/LinkageSpec.cc \ 31 Parser/parseutility.cc \ 32 Parser/Parser.cc 31 Parser/parseutility.cc 33 32 34 33 MAINTAINERCLEANFILES += Parser/parser.output -
src/Parser/parser.cc
r79841be r6943a987 71 71 #define YYDEBUG_LEXER_TEXT (yylval) // lexer loads this up each time 72 72 #define YYDEBUG 1 // get the pretty debugging code to compile 73 extern char *yytext;74 73 75 74 #undef __GNUC_MINOR__ … … 84 83 #include "LinkageSpec.h" 85 84 86 DeclarationNode *theTree = 0; // the resulting parse tree 87 LinkageSpec::Type linkage = LinkageSpec::Cforall; 88 std::stack< LinkageSpec::Type > linkageStack; 89 TypedefTable typedefTable; 90 91 void appendStr( std::string &to, std::string *from ) { 85 extern DeclarationNode * parseTree; 86 extern LinkageSpec::Spec linkage; 87 extern TypedefTable typedefTable; 88 89 std::stack< LinkageSpec::Spec > linkageStack; 90 91 void appendStr( std::string *to, std::string *from ) { 92 92 // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string. 93 to .insert( to.length() - 1, from->substr( 1, from->length() - 2 ) );93 to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) ); 94 94 } // appendStr 95 95 … … 361 361 InitializerNode *in; 362 362 OperKinds op; 363 std::string *str; 363 364 bool flag; 364 365 … … 366 367 367 368 /* Line 293 of yacc.c */ 368 #line 3 69"Parser/parser.cc"369 #line 370 "Parser/parser.cc" 369 370 } YYSTYPE; 370 371 # define YYSTYPE_IS_TRIVIAL 1 … … 378 379 379 380 /* Line 343 of yacc.c */ 380 #line 38 1"Parser/parser.cc"381 #line 382 "Parser/parser.cc" 381 382 382 383 #ifdef short … … 595 596 596 597 /* YYFINAL -- State number of the termination state. */ 597 #define YYFINAL 25 1598 #define YYFINAL 250 598 599 /* YYLAST -- Last index in YYTABLE. */ 599 #define YYLAST 108 16600 #define YYLAST 10863 600 601 601 602 /* YYNTOKENS -- Number of terminals. */ … … 604 605 #define YYNNTS 241 605 606 /* YYNRULES -- Number of rules. */ 606 #define YYNRULES 75 0607 #define YYNRULES 751 607 608 /* YYNRULES -- Number of states. */ 608 #define YYNSTATES 155 4609 #define YYNSTATES 1555 609 610 610 611 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ … … 663 664 { 664 665 0, 0, 3, 4, 5, 7, 9, 11, 13, 15, 665 17, 19, 21, 23, 25, 27, 29, 31, 3 4, 36,666 38, 4 2, 46, 48, 55, 60, 64, 72, 76, 84,667 8 7, 90, 98, 103, 105, 109, 110, 112, 114, 118,668 120, 12 4, 132, 136, 144, 146, 148, 150, 153, 156,669 15 9, 162, 165, 168, 173, 176, 181, 188, 190, 195,670 200, 202, 204, 206, 208, 210, 212, 214, 219, 224,671 226, 2 30, 234, 238, 240, 244, 248, 250, 254, 258,672 260, 26 4, 268, 272, 276, 278, 282, 286, 288, 292,673 294, 29 8, 300, 304, 306, 310, 312, 316, 318, 324,674 32 9, 335, 337, 339, 343, 346, 347, 349, 351, 353,675 355, 357, 359, 361, 363, 365, 367, 369, 371, 37 4,676 3 80, 387, 395, 397, 401, 403, 407, 408, 410, 412,677 414, 416, 418, 420, 422, 424, 426, 4 33, 438, 441,678 44 9, 451, 455, 457, 460, 462, 465, 467, 470, 473,679 47 9, 487, 493, 503, 509, 519, 521, 525, 527, 529,680 53 3, 537, 540, 542, 545, 548, 549, 551, 554, 558,681 55 9, 561, 564, 568, 572, 577, 578, 580, 582, 585,682 5 91, 599, 606, 613, 618, 622, 627, 630, 634, 637,683 6 41, 645, 649, 653, 659, 663, 667, 672, 674, 680,684 6 87, 693, 700, 710, 721, 731, 742, 745, 747, 750,685 75 3, 756, 758, 765, 774, 785, 798, 813, 814, 816,686 81 7, 819, 821, 825, 830, 838, 839, 841, 845, 847,687 8 51, 853, 855, 857, 861, 863, 865, 867, 871, 872,688 87 4, 878, 883, 885, 889, 891, 893, 897, 901, 905,689 90 9, 913, 916, 920, 927, 931, 935, 940, 942, 945,690 94 8, 952, 958, 967, 975, 983, 989, 999, 1002, 1005,691 10 11, 1015, 1021, 1026, 1030, 1035, 1040, 1048, 1052, 1056,692 10 60, 1064, 1069, 1076, 1078, 1080, 1082, 1084, 1086, 1088,693 1090, 1092, 109 3, 1095, 1097, 1100, 1102, 1104, 1106, 1108,694 1110, 1112, 1114, 111 5, 1121, 1123, 1126, 1130, 1132, 1135,695 113 7, 1139, 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155,666 17, 19, 21, 23, 25, 27, 29, 31, 33, 36, 667 38, 40, 44, 48, 50, 57, 62, 66, 74, 78, 668 86, 89, 92, 100, 105, 107, 111, 112, 114, 116, 669 120, 122, 126, 134, 138, 146, 148, 150, 152, 155, 670 158, 161, 164, 167, 170, 175, 178, 183, 190, 192, 671 197, 202, 204, 206, 208, 210, 212, 214, 216, 221, 672 226, 228, 232, 236, 240, 242, 246, 250, 252, 256, 673 260, 262, 266, 270, 274, 278, 280, 284, 288, 290, 674 294, 296, 300, 302, 306, 308, 312, 314, 318, 320, 675 326, 331, 337, 339, 341, 345, 348, 349, 351, 353, 676 355, 357, 359, 361, 363, 365, 367, 369, 371, 373, 677 375, 378, 384, 391, 399, 401, 405, 407, 411, 412, 678 414, 416, 418, 420, 422, 424, 426, 428, 430, 437, 679 442, 445, 453, 455, 459, 461, 464, 466, 469, 471, 680 474, 477, 483, 491, 497, 507, 513, 523, 525, 529, 681 531, 533, 537, 541, 544, 546, 549, 552, 553, 555, 682 558, 562, 563, 565, 568, 572, 576, 581, 582, 584, 683 586, 589, 595, 603, 610, 617, 622, 626, 631, 634, 684 638, 641, 645, 649, 653, 657, 663, 667, 671, 676, 685 678, 684, 691, 697, 704, 714, 725, 735, 746, 749, 686 751, 754, 757, 760, 762, 769, 778, 789, 802, 817, 687 818, 820, 821, 823, 825, 829, 834, 842, 843, 845, 688 849, 851, 855, 857, 859, 861, 865, 867, 869, 871, 689 875, 876, 878, 882, 887, 889, 893, 895, 897, 901, 690 905, 909, 913, 917, 920, 924, 931, 935, 939, 944, 691 946, 949, 952, 956, 962, 971, 979, 987, 993, 1003, 692 1006, 1009, 1015, 1019, 1025, 1030, 1034, 1039, 1044, 1052, 693 1056, 1060, 1064, 1068, 1073, 1080, 1082, 1084, 1086, 1088, 694 1090, 1092, 1094, 1096, 1097, 1099, 1101, 1104, 1106, 1108, 695 1110, 1112, 1114, 1116, 1118, 1119, 1125, 1127, 1130, 1134, 696 1136, 1139, 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155, 696 697 1157, 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, 697 1177, 1179, 1181, 118 4, 1187, 1191, 1195, 1197, 1201, 1203,698 120 6, 1209, 1212, 1217, 1222, 1227, 1232, 1234, 1237, 1240,699 124 4, 1246, 1249, 1252, 1254, 1257, 1260, 1264, 1266, 1269,700 127 2, 1274, 1276, 1281, 1284, 1285, 1292, 1300, 1303, 1306,701 130 9, 1310, 1313, 1316, 1320, 1323, 1327, 1329, 1332, 1336,702 133 9, 1342, 1347, 1348, 1350, 1353, 1356, 1358, 1359, 1361,703 136 4, 1367, 1373, 1376, 1377, 1385, 1388, 1393, 1394, 1397,704 139 8, 1400, 1402, 1404, 1410, 1416, 1422, 1424, 1430, 1436,705 14 46, 1448, 1454, 1455, 1457, 1459, 1465, 1467, 1469, 1475,706 14 81, 1483, 1487, 1491, 1496, 1498, 1500, 1502, 1504, 1507,707 1509, 151 3, 1517, 1519, 1522, 1524, 1528, 1530, 1532, 1534,708 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1550, 155 3, 1555,709 1557, 1559, 156 2, 1563, 1566, 1569, 1571, 1576, 1577, 1579,710 158 2, 1586, 1591, 1594, 1597, 1599, 1602, 1605, 1611, 1617,711 16 25, 1632, 1634, 1637, 1640, 1644, 1646, 1649, 1652, 1657,712 16 60, 1665, 1666, 1671, 1674, 1676, 1678, 1680, 1681, 1684,713 16 90, 1696, 1710, 1712, 1714, 1718, 1722, 1725, 1729, 1733,714 173 6, 1741, 1743, 1750, 1760, 1761, 1773, 1775, 1779, 1783,715 178 7, 1789, 1791, 1797, 1800, 1806, 1807, 1809, 1811, 1815,716 181 6, 1818, 1820, 1822, 1824, 1825, 1832, 1835, 1837, 1840,717 184 5, 1848, 1852, 1856, 1860, 1865, 1871, 1877, 1883, 1890,718 1892, 1894, 1896, 1 900, 1901, 1907, 1908, 1910, 1912, 1915,719 19 22, 1924, 1928, 1929, 1931, 1936, 1938, 1940, 1942, 1944,720 194 7, 1949, 1952, 1955, 1957, 1961, 1964, 1968, 1972, 1975,721 19 80, 1985, 1989, 1998, 2002, 2005, 2007, 2010, 2017, 2026,722 20 30, 2033, 2037, 2041, 2046, 2051, 2055, 2057, 2059, 2061,723 206 6, 2073, 2077, 2080, 2084, 2088, 2093, 2098, 2102, 2105,724 2107, 21 10, 2113, 2115, 2119, 2122, 2126, 2130, 2133, 2138,725 214 3, 2147, 2154, 2163, 2167, 2170, 2172, 2175, 2178, 2181,726 218 5, 2189, 2192, 2197, 2202, 2206, 2213, 2222, 2226, 2229,727 2231, 223 4, 2237, 2239, 2241, 2244, 2248, 2252, 2255, 2260,728 226 7, 2276, 2278, 2281, 2284, 2286, 2289, 2292, 2296, 2300,729 2302, 230 7, 2312, 2316, 2322, 2331, 2335, 2338, 2342, 2344,730 23 50, 2356, 2363, 2370, 2372, 2375, 2378, 2380, 2383, 2386,731 23 90, 2394, 2396, 2401, 2406, 2410, 2416, 2425, 2429, 2431,732 243 4, 2436, 2439, 2446, 2452, 2459, 2467, 2475, 2477, 2480,733 248 3, 2485, 2488, 2491, 2495, 2499, 2501, 2506, 2511, 2515,734 25 24, 2528, 2530, 2532, 2535, 2537, 2539, 2542, 2546, 2549,735 255 3, 2556, 2560, 2564, 2567, 2572, 2576, 2579, 2583, 2586,736 25 91, 2595, 2598, 2605, 2612, 2619, 2627, 2629, 2632, 2634,737 2636, 2638, 264 1, 2645, 2648, 2652, 2655, 2659, 2663, 2668,738 267 1, 2675, 2680, 2683, 2689, 2695, 2702, 2709, 2710, 2712,739 271 3698 1177, 1179, 1181, 1183, 1186, 1189, 1193, 1197, 1199, 1203, 699 1205, 1208, 1211, 1214, 1219, 1224, 1229, 1234, 1236, 1239, 700 1242, 1246, 1248, 1251, 1254, 1256, 1259, 1262, 1266, 1268, 701 1271, 1274, 1276, 1278, 1283, 1286, 1287, 1294, 1302, 1305, 702 1308, 1311, 1312, 1315, 1318, 1322, 1325, 1329, 1331, 1334, 703 1338, 1341, 1344, 1349, 1350, 1352, 1355, 1358, 1360, 1361, 704 1363, 1366, 1369, 1375, 1378, 1379, 1387, 1390, 1395, 1396, 705 1399, 1400, 1402, 1404, 1406, 1412, 1418, 1424, 1426, 1432, 706 1438, 1448, 1450, 1456, 1457, 1459, 1461, 1467, 1469, 1471, 707 1477, 1483, 1485, 1489, 1493, 1498, 1500, 1502, 1504, 1506, 708 1509, 1511, 1515, 1519, 1521, 1524, 1526, 1530, 1532, 1534, 709 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1550, 1552, 1555, 710 1557, 1559, 1561, 1564, 1565, 1568, 1571, 1573, 1578, 1579, 711 1581, 1584, 1588, 1593, 1596, 1599, 1601, 1604, 1607, 1613, 712 1619, 1627, 1634, 1636, 1639, 1642, 1646, 1648, 1651, 1654, 713 1659, 1662, 1667, 1668, 1673, 1676, 1678, 1680, 1682, 1683, 714 1686, 1692, 1698, 1712, 1714, 1716, 1720, 1724, 1727, 1731, 715 1735, 1738, 1743, 1745, 1752, 1762, 1763, 1775, 1777, 1781, 716 1785, 1789, 1791, 1793, 1799, 1802, 1808, 1809, 1811, 1813, 717 1817, 1818, 1820, 1822, 1824, 1826, 1827, 1834, 1837, 1839, 718 1842, 1847, 1850, 1854, 1858, 1862, 1867, 1873, 1879, 1885, 719 1892, 1894, 1896, 1898, 1902, 1903, 1909, 1910, 1912, 1914, 720 1917, 1924, 1926, 1930, 1931, 1933, 1938, 1940, 1942, 1944, 721 1946, 1949, 1951, 1954, 1957, 1959, 1963, 1966, 1970, 1974, 722 1977, 1982, 1987, 1991, 2000, 2004, 2007, 2009, 2012, 2019, 723 2028, 2032, 2035, 2039, 2043, 2048, 2053, 2057, 2059, 2061, 724 2063, 2068, 2075, 2079, 2082, 2086, 2090, 2095, 2100, 2104, 725 2107, 2109, 2112, 2115, 2117, 2121, 2124, 2128, 2132, 2135, 726 2140, 2145, 2149, 2156, 2165, 2169, 2172, 2174, 2177, 2180, 727 2183, 2187, 2191, 2194, 2199, 2204, 2208, 2215, 2224, 2228, 728 2231, 2233, 2236, 2239, 2241, 2243, 2246, 2250, 2254, 2257, 729 2262, 2269, 2278, 2280, 2283, 2286, 2288, 2291, 2294, 2298, 730 2302, 2304, 2309, 2314, 2318, 2324, 2333, 2337, 2340, 2344, 731 2346, 2352, 2358, 2365, 2372, 2374, 2377, 2380, 2382, 2385, 732 2388, 2392, 2396, 2398, 2403, 2408, 2412, 2418, 2427, 2431, 733 2433, 2436, 2438, 2441, 2448, 2454, 2461, 2469, 2477, 2479, 734 2482, 2485, 2487, 2490, 2493, 2497, 2501, 2503, 2508, 2513, 735 2517, 2526, 2530, 2532, 2534, 2537, 2539, 2541, 2544, 2548, 736 2551, 2555, 2558, 2562, 2566, 2569, 2574, 2578, 2581, 2585, 737 2588, 2593, 2597, 2600, 2607, 2614, 2621, 2629, 2631, 2634, 738 2636, 2638, 2640, 2643, 2647, 2650, 2654, 2657, 2661, 2665, 739 2670, 2673, 2677, 2682, 2685, 2691, 2697, 2704, 2711, 2712, 740 2714, 2715 740 741 }; 741 742 … … 745 746 302, 0, -1, -1, -1, 79, -1, 80, -1, 81, 746 747 -1, 72, -1, 76, -1, 140, -1, 72, -1, 76, 747 -1, 72, -1, 140, -1, 83, -1, 84, -1, 82,748 -1, 141, 82, -1, 72, -1, 140, -1, 109, 169,749 1 10, -1, 109, 173, 110, -1, 142, -1, 143, 111,750 1 34, 164, 135, 112, -1, 143, 109, 144, 110, -1,751 1 43, 113, 139, -1, 143, 113, 111, 134, 146, 135,752 1 12, -1, 143, 85, 139, -1, 143, 85, 111, 134,753 1 46, 135, 112, -1, 143, 86, -1, 143, 87, -1,754 109, 275, 110, 114, 279, 372, 115, -1, 143, 114,755 144, 11 5, -1, 145, -1, 144, 116, 145, -1, -1,756 164, -1, 147, -1, 146, 116, 147, -1, 139, -1,757 139, 113, 147, -1, 139, 113, 111, 134, 146, 135,758 1 12, -1, 139, 85, 147, -1, 139, 85, 111, 134,759 1 46, 135, 112, -1, 143, -1, 136, -1, 141, -1,760 40, 151, -1, 149, 151, -1, 150, 151, -1, 86,761 148, -1, 87, 148, -1, 37, 148, -1, 37, 109,762 275, 110, -1, 66, 148, -1, 66, 109, 275, 110,763 -1, 38, 109, 275, 116, 139, 110, -1, 76, -1,764 76, 109, 145, 110, -1, 76, 109, 276, 110, -1,765 11 7, -1, 118, -1, 119, -1, 120, -1, 121, -1,766 12 2, -1, 148, -1, 109, 275, 110, 151, -1, 109,767 275, 110, 167, -1, 151, -1, 152, 117, 151, -1,768 152, 123, 151, -1, 152, 124, 151, -1, 152, -1,769 153, 119, 152, -1, 153, 120, 152, -1, 153, -1,770 154, 88, 153, -1, 154, 89, 153, -1, 154, -1,771 155, 125, 154, -1, 155, 126, 154, -1, 155, 90,772 15 4, -1, 155, 91, 154, -1, 155, -1, 156, 92,773 15 5, -1, 156, 93, 155, -1, 156, -1, 157, 118,774 15 6, -1, 157, -1, 158, 127, 157, -1, 158, -1,775 159, 128, 158, -1, 159, -1, 160, 94, 159, -1,776 160, -1, 161, 95, 160, -1, 161, -1, 161, 129,777 16 9, 130, 162, -1, 161, 129, 130, 162, -1, 161,778 129, 169, 130, 167, -1, 162, -1, 162, -1, 148,779 166, 164, -1, 167, 373, -1, -1, 164, -1, 131,780 -1, 97, -1, 98, -1, 99, -1, 100, -1, 101,781 -1, 10 2, -1, 103, -1, 104, -1, 105, -1, 106,782 -1, 1 11, 112, -1, 111, 134, 164, 135, 112, -1,783 1 11, 134, 116, 168, 135, 112, -1, 111, 134, 164,784 116, 168, 135, 112, -1, 165, -1, 168, 116, 165,785 -1, 16 4, -1, 169, 116, 164, -1, -1, 169, -1,786 172, -1, 173, -1, 177, -1, 178, -1, 190, -1,787 1 92, -1, 193, -1, 198, -1, 127, 143, 114, 144,788 1 15, 132, -1, 72, 130, 312, 171, -1, 114, 115,789 -1, 114, 134, 134, 209, 174, 135, 115, -1, 175,790 -1, 174, 134, 175, -1, 212, -1, 40, 212, -1,791 308, -1, 171, 135, -1, 171, -1, 176, 171, -1,792 170, 132, -1, 41, 109, 169, 110, 171, -1, 41,793 1 09, 169, 110, 171, 42, 171, -1, 43, 109, 169,794 110, 183, -1, 43, 109, 169, 110, 114, 134, 205,795 1 84, 115, -1, 53, 109, 169, 110, 183, -1, 53,796 1 09, 169, 110, 114, 134, 205, 186, 115, -1, 163,797 -1, 163, 96, 163, -1, 310, -1, 179, -1, 180,798 116, 179, -1, 44, 180, 130, -1, 45, 130, -1,799 181, -1, 182, 181, -1, 182, 171, -1, -1, 185,800 -1, 182, 176, -1, 185, 182, 176, -1, -1, 187,801 -1, 182, 189, -1, 182, 176, 188, -1, 187, 182,802 189, -1, 18 7, 182, 176, 188, -1, -1, 189, -1,803 56, -1, 56, 132, -1, 47, 109, 169, 110, 171,804 -1, 46, 171, 47, 109, 169, 110, 132, -1, 48,805 1 09, 134, 191, 110, 171, -1, 170, 135, 132, 170,806 1 32, 170, -1, 212, 170, 132, 170, -1, 51, 72,807 1 32, -1, 51, 117, 169, 132, -1, 50, 132, -1,808 50, 72, 132, -1, 49, 132, -1, 49, 72, 132,809 -1, 52, 170, 132, -1, 61, 165, 132, -1, 62,810 16 5, 132, -1, 62, 165, 63, 164, 132, -1, 57,811 1 73, 194, -1, 57, 173, 196, -1, 57, 173, 194,812 196, -1, 195, -1, 58, 109, 96, 110, 173, -1,813 195, 58, 109, 96, 110, 173, -1, 59, 109, 96,814 110, 173, -1, 195, 59, 109, 96, 110, 173, -1,815 58, 109, 134, 134, 197, 135, 110, 173, 135, -1,816 1 95, 58, 109, 134, 134, 197, 135, 110, 173, 135,817 -1, 59, 109, 134, 134, 197, 135, 110, 173, 135,818 -1, 195, 59, 109, 134, 134, 197, 135, 110, 173,819 1 35, -1, 60, 173, -1, 225, -1, 225, 309, -1,820 225, 357, -1, 366, 139, -1, 366, -1, 64, 199,821 109, 141, 110, 132, -1, 64, 199, 109, 141, 130,822 200, 1 10, 132, -1, 64, 199, 109, 141, 130, 200,823 1 30, 200, 110, 132, -1, 64, 199, 109, 141, 130,824 200, 1 30, 200, 130, 203, 110, 132, -1, 64, 199,825 51, 109, 141, 130, 130, 200, 130, 203, 130, 204,826 1 10, 132, -1, -1, 11, -1, -1, 201, -1, 202,827 -1, 20 1, 116, 202, -1, 141, 109, 163, 110, -1,828 1 11, 163, 112, 141, 109, 163, 110, -1, -1, 141,829 -1, 203, 116, 141, -1, 139, -1, 204, 116, 139,830 -1, 135, -1, 206, -1, 212, -1, 206, 134, 212,831 -1, 135, -1, 208, -1, 222, -1, 208, 134, 222,832 -1, -1, 210, -1, 29, 211, 132, -1, 210, 29,833 211, 132, -1, 274, -1, 211, 116, 274, -1, 213,834 -1, 222, -1, 214, 135, 132, -1, 219, 135, 132,835 -1, 2 16, 135, 132, -1, 293, 135, 132, -1, 296,836 135, 132, -1, 2 15, 277, -1, 231, 215, 277, -1,837 2 14, 135, 116, 134, 272, 277, -1, 367, 272, 311,838 -1, 3 70, 272, 311, -1, 227, 370, 272, 311, -1,839 217, -1, 227, 217, -1, 231, 217, -1, 231, 227,840 21 7, -1, 216, 135, 116, 134, 272, -1, 111, 112,841 272, 109, 134, 260, 135, 110, -1, 370, 272, 109,842 134, 260, 135, 110, -1, 218, 272, 109, 134, 260,843 135, 110, -1, 111, 134, 262, 135, 112, -1, 111,844 13 4, 262, 135, 116, 134, 263, 135, 112, -1,3,845 215, -1, 3, 217, -1, 219, 135, 116, 134, 139,846 -1, 3, 225, 309, -1, 220, 135, 116, 134, 309,847 -1, 227, 3, 225, 309, -1, 225, 3, 309, -1,848 22 5, 3, 227, 309, -1, 3, 139, 131, 164, -1,849 221, 135, 116, 134, 139, 131, 164, -1, 223, 135,850 1 32, -1, 220, 135, 132, -1, 221, 135, 132, -1,851 2 40, 135, 132, -1, 224, 309, 311, 277, -1, 223,852 116, 312, 309, 311, 277, -1, 236, -1, 240, -1,853 2 42, -1, 283, -1, 237, -1, 241, -1, 243, -1,854 2 84, -1, -1, 227, -1, 228, -1, 227, 228, -1,855 229, -1, 314, -1, 10, -1, 12, -1, 11, -1,856 1 4, -1, 67, -1, -1, 13, 109, 230, 286, 110,857 -1, 232, -1, 227, 232, -1, 231, 227, 232, -1,858 23 3, -1, 232, 233, -1, 234, -1, 5, -1, 7,859 -1, 4, -1, 6, -1, 8, -1, 9, -1, 69,860 -1, 71, -1, 16, -1, 21, -1, 20, -1, 18,861 -1, 1 9, -1, 17, -1, 22, -1, 23, -1, 15,862 -1, 25, -1, 26, -1, 27, -1, 24, -1, 237,863 -1, 23 1, 237, -1, 236, 233, -1, 236, 233, 227,864 -1, 236, 233, 237, -1, 238, -1, 226, 239, 226,865 -1, 235, -1, 227, 235, -1, 238, 228, -1, 238,866 235, -1, 28, 109, 276, 110, -1, 28, 109, 169,867 1 10, -1, 78, 109, 276, 110, -1, 78, 109, 169,868 1 10, -1, 241, -1, 231, 241, -1, 240, 233, -1,869 2 40, 233, 227, -1, 244, -1, 227, 244, -1, 241,870 228, -1, 243, -1, 231, 243, -1, 242, 233, -1,871 2 42, 233, 227, -1, 74, -1, 227, 74, -1, 243,872 228, -1, 245, -1, 256, -1, 247, 114, 248, 115,873 -1, 247, 274, -1, -1, 247, 274, 246, 114, 248,874 11 5, -1, 247, 109, 292, 110, 114, 248, 115, -1,875 247, 285, -1, 31, 312, -1, 32, 312, -1, -1,876 248, 249, -1, 250, 132, -1, 40, 250, 132, -1,877 251, 132, -1, 40, 251, 132, -1, 366, -1, 366,878 274, -1, 250, 116, 274, -1, 250, 116, -1, 225,879 252, -1, 251, 116, 312, 252, -1, -1, 254, -1,880 318, 253, -1, 331, 253, -1, 357, -1, -1, 254,881 -1, 130, 163, -1, 30, 312, -1, 255, 114, 258,882 372, 115, -1, 255, 274, -1, -1, 255, 274, 257,883 114, 258, 372, 115, -1, 274, 259, -1, 258, 116,884 2 74, 259, -1, -1, 131, 163, -1, -1, 261, -1,885 26 3, -1, 262, -1, 262, 135, 116, 134, 263, -1,886 263, 135, 116, 134, 96, -1, 262, 135, 116, 134,887 96, -1, 267, -1, 263, 135, 116, 134, 267, -1,888 26 2, 135, 116, 134, 267, -1, 262, 135, 116, 134,889 263, 135, 116, 134, 267, -1, 268, -1, 263, 135,890 116, 134, 268, -1, -1, 265, -1, 266, -1, 266,891 135, 116, 134, 96, -1, 270, -1, 269, -1, 266,892 135, 116, 134, 270, -1, 266, 135, 116, 134, 269,893 -1, 269, -1, 362, 272, 373, -1, 370, 272, 373,894 -1, 227, 370, 272, 373, -1, 217, -1, 270, -1,895 362, -1, 370, -1, 227, 370, -1, 371, -1, 224,896 336, 373, -1, 224, 340, 373, -1, 224, -1, 224,897 351, -1, 139, -1, 271, 116, 139, -1, 137, -1,898 74, -1, 75, -1, 138, -1, 74, -1, 75, -1,899 139, -1, 74, -1, 75, -1, 366, -1, 225, -1,900 22 5, 357, -1, 366, -1, 371, -1, 225, -1, 225,901 345, -1, -1, 131, 278, -1, 107, 278, -1, 164,902 -1, 1 14, 279, 372, 115, -1, -1, 278, -1, 280,903 278, -1, 279, 116, 278, -1, 279, 116, 280, 278,904 -1, 281, 130, -1, 274, 130, -1, 282, -1, 281,905 282, -1, 113, 274, -1, 111, 134, 164, 135, 112,906 -1, 111, 134, 310, 135, 112, -1, 111, 134, 163,907 96, 163, 135, 112, -1, 113, 111, 134, 146, 135,908 1 12, -1, 284, -1, 231, 284, -1, 283, 233, -1,909 2 83, 233, 227, -1, 285, -1, 227, 285, -1, 284,910 228, -1, 75, 109, 292, 110, -1, 287, 373, -1,911 286, 116, 287, 373, -1, -1, 289, 274, 288, 290,912 -1, 225, 336, -1, 33, -1, 35, -1, 34, -1,913 -1, 290, 291, -1, 128, 274, 109, 292, 110, -1,914 1 28, 114, 134, 298, 115, -1, 128, 109, 134, 286,915 13 5, 110, 114, 134, 298, 115, 109, 292, 110, -1,916 276, -1, 164, -1, 292, 116, 276, -1, 292, 116,917 164, -1, 33, 294, -1, 232, 33, 294, -1, 293,918 116, 294, -1, 295, 290, -1, 295, 290, 131, 276,919 -1, 274, -1, 273, 109, 134, 286, 135, 110, -1,920 36, 274, 109, 134, 286, 135, 110, 114, 115, -1,921 -1, 36, 274, 109, 134, 286, 135, 110, 114, 297,922 298, 115, -1, 299, -1, 298, 134, 299, -1, 300,923 135, 132, -1, 301, 135, 132, -1, 215, -1, 217,924 -1, 300, 135, 116, 134, 272, -1, 225, 309, -1,925 30 1, 135, 116, 134, 309, -1, -1, 303, -1, 305,926 -1, 30 3, 134, 305, -1, -1, 303, -1, 212, -1,927 307, -1, 198, -1, -1, 5, 82, 306, 114, 304,928 11 5, -1, 40, 305, -1, 308, -1, 323, 173, -1,929 327, 134, 207, 173, -1, 216, 173, -1, 224, 323,930 173, -1, 227, 323, 173, -1, 231, 323, 173, -1,931 231, 227, 323, 173, -1, 224, 327, 134, 207, 173,932 -1, 227, 327, 134, 207, 173, -1, 231, 327, 134,933 207, 173, -1, 231, 227, 327, 134, 207, 173, -1,934 318, -1, 331, -1, 323, -1, 163, 122, 163, -1,935 -1, 64, 109, 141, 110, 312, -1, -1, 313, -1,936 31 4, -1, 313, 314, -1, 39, 109, 109, 315, 110,937 110, -1, 316, -1, 315, 116, 316, -1, -1, 317,938 -1, 317, 109, 170, 110, -1, 272, -1, 234, -1,939 23 5, -1, 228, -1, 319, 312, -1, 320, -1, 321,940 312, -1, 322, 312, -1, 137, -1, 109, 319, 110,941 -1, 149, 318, -1, 149, 227, 318, -1, 109, 320,942 1 10, -1, 319, 349, -1, 109, 320, 110, 349, -1,943 109, 321, 110, 350, -1, 109, 321, 110, -1, 109,944 320, 110, 109, 134, 264, 135, 110, -1, 109, 322,945 1 10, -1, 324, 312, -1, 325, -1, 326, 312, -1,946 31 9, 109, 134, 264, 135, 110, -1, 109, 325, 110,947 109, 134, 264, 135, 110, -1, 109, 324, 110, -1,948 1 49, 323, -1, 149, 227, 323, -1, 109, 325, 110,949 -1, 109, 325, 110, 349, -1, 109, 326, 110, 350,950 -1, 109, 326, 110, -1, 328, -1, 329, -1, 330,951 -1, 3 19, 109, 271, 110, -1, 109, 329, 110, 109,952 271, 110, -1, 109, 328, 110, -1, 149, 327, -1,953 149, 227, 327, -1, 109, 329, 110, -1, 109, 329,954 1 10, 349, -1, 109, 330, 110, 350, -1, 109, 330,955 1 10, -1, 332, 312, -1, 333, -1, 334, 312, -1,956 3 35, 312, -1, 341, -1, 109, 332, 110, -1, 149,957 331, -1, 149, 227, 331, -1, 109, 333, 110, -1,958 332, 349, -1, 109, 333, 110, 349, -1, 109, 334,959 1 10, 350, -1, 109, 334, 110, -1, 332, 109, 134,960 264, 135, 110, -1, 109, 333, 110, 109, 134, 264,961 13 5, 110, -1, 109, 335, 110, -1, 319, 312, -1,962 3 37, -1, 338, 312, -1, 339, 312, -1, 149, 336,963 -1, 149, 227, 336, -1, 109, 337, 110, -1, 319,964 355, -1, 109, 337, 110, 349, -1, 109, 338, 110,965 3 50, -1, 109, 338, 110, -1, 319, 109, 134, 264,966 13 5, 110, -1, 109, 337, 110, 109, 134, 264, 135,967 110, -1, 109, 339, 110, -1, 341, 312, -1, 342,968 -1, 34 3, 312, -1, 344, 312, -1, 74, -1, 75,969 -1, 149, 340, -1, 149, 227, 340, -1, 109, 342,970 1 10, -1, 341, 355, -1, 109, 342, 110, 355, -1,971 3 41, 109, 134, 264, 135, 110, -1, 109, 342, 110,972 109, 134, 264, 135, 110, -1, 346, -1, 347, 312,973 -1, 348, 312, -1, 149, -1, 149, 227, -1, 149,974 345, -1, 149, 227, 345, -1, 109, 346, 110, -1,975 349, -1, 109, 346, 110, 349, -1, 109, 347, 110,976 3 50, -1, 109, 347, 110, -1, 109, 134, 264, 135,977 110, -1, 109, 346, 110, 109, 134, 264, 135, 110,978 -1, 109, 348, 110, -1, 111, 112, -1, 111, 112,979 350, -1, 350, -1, 111, 134, 164, 135, 112, -1,980 11 1, 134, 117, 135, 112, -1, 350, 111, 134, 164,981 13 5, 112, -1, 350, 111, 134, 117, 135, 112, -1,982 352, -1, 353, 312, -1, 354, 312, -1, 149, -1,983 1 49, 227, -1, 149, 351, -1, 149, 227, 351, -1,984 109, 352, 110, -1, 355, -1, 109, 352, 110, 355,985 -1, 109, 353, 110, 350, -1, 109, 353, 110, -1,986 1 09, 134, 264, 135, 110, -1, 109, 352, 110, 109,987 1 34, 264, 135, 110, -1, 109, 354, 110, -1, 356,988 -1, 356, 350, -1, 350, -1, 111, 112, -1, 111,989 134, 227, 117, 135, 112, -1, 111, 134, 227, 135,990 112, -1, 111, 134, 227, 164, 135, 112, -1, 111,991 134, 7, 226, 164, 135, 112, -1, 111, 134, 227,992 7, 164, 135, 112, -1, 358, -1, 359, 312, -1,993 3 60, 312, -1, 149, -1, 149, 227, -1, 149, 357,994 -1, 149, 227, 357, -1, 109, 358, 110, -1, 349,995 -1, 109, 358, 110, 349, -1, 109, 359, 110, 350,996 -1, 109, 359, 110, -1, 109, 358, 110, 109, 134,997 264, 135, 110, -1, 109, 360, 110, -1, 362, -1,998 3 70, -1, 227, 370, -1, 363, -1, 364, -1, 149,999 225, -1, 227, 149, 225, -1, 149, 371, -1, 227,1000 149, 371, -1, 149, 361, -1, 227, 149, 361, -1,1001 111, 112, 225, -1, 365, 225, -1, 111, 112, 350,1002 225, -1, 365, 350, 225, -1, 350, 225, -1, 111,1003 112, 363, -1, 365, 363, -1, 111, 112, 350, 363,1004 -1, 365, 350, 363, -1, 350, 363, -1, 111, 134,1005 227, 117, 135, 112, -1, 111, 134, 227, 164, 135,1006 1 12, -1, 111, 134, 231, 164, 135, 112, -1, 111,1007 134, 231, 227, 164, 135, 112, -1, 370, -1, 227,1008 370, -1, 367, -1, 368, -1, 369, -1, 149, 225,1009 -1, 227, 149, 225, -1, 149, 371, -1, 227, 149,1010 371, -1, 149, 366, -1, 227, 149, 366, -1, 111,1011 112, 225, -1, 111, 112, 350, 225, -1, 350, 225,1012 -1, 111, 112, 368, -1, 111, 112, 350, 368, -1,1013 3 50, 368, -1, 111, 134, 263, 135, 112, -1, 111,1014 112, 109, 260, 110, -1, 370, 109, 134, 260, 135,1015 110, -1, 218, 109, 134, 260, 135, 110, -1, -1,1016 116, -1, -1, 131, 164, -1748 -1, 72, -1, 140, -1, 83, -1, 84, -1, 142, 749 -1, 82, -1, 142, 82, -1, 72, -1, 140, -1, 750 109, 170, 110, -1, 109, 174, 110, -1, 143, -1, 751 144, 111, 134, 165, 135, 112, -1, 144, 109, 145, 752 110, -1, 144, 113, 139, -1, 144, 113, 111, 134, 753 147, 135, 112, -1, 144, 85, 139, -1, 144, 85, 754 111, 134, 147, 135, 112, -1, 144, 86, -1, 144, 755 87, -1, 109, 275, 110, 114, 279, 372, 115, -1, 756 144, 114, 145, 115, -1, 146, -1, 145, 116, 146, 757 -1, -1, 165, -1, 148, -1, 147, 116, 148, -1, 758 139, -1, 139, 113, 148, -1, 139, 113, 111, 134, 759 147, 135, 112, -1, 139, 85, 148, -1, 139, 85, 760 111, 134, 147, 135, 112, -1, 144, -1, 136, -1, 761 141, -1, 40, 152, -1, 150, 152, -1, 151, 152, 762 -1, 86, 149, -1, 87, 149, -1, 37, 149, -1, 763 37, 109, 275, 110, -1, 66, 149, -1, 66, 109, 764 275, 110, -1, 38, 109, 275, 116, 139, 110, -1, 765 76, -1, 76, 109, 146, 110, -1, 76, 109, 276, 766 110, -1, 117, -1, 118, -1, 119, -1, 120, -1, 767 121, -1, 122, -1, 149, -1, 109, 275, 110, 152, 768 -1, 109, 275, 110, 168, -1, 152, -1, 153, 117, 769 152, -1, 153, 123, 152, -1, 153, 124, 152, -1, 770 153, -1, 154, 119, 153, -1, 154, 120, 153, -1, 771 154, -1, 155, 88, 154, -1, 155, 89, 154, -1, 772 155, -1, 156, 125, 155, -1, 156, 126, 155, -1, 773 156, 90, 155, -1, 156, 91, 155, -1, 156, -1, 774 157, 92, 156, -1, 157, 93, 156, -1, 157, -1, 775 158, 118, 157, -1, 158, -1, 159, 127, 158, -1, 776 159, -1, 160, 128, 159, -1, 160, -1, 161, 94, 777 160, -1, 161, -1, 162, 95, 161, -1, 162, -1, 778 162, 129, 170, 130, 163, -1, 162, 129, 130, 163, 779 -1, 162, 129, 170, 130, 168, -1, 163, -1, 163, 780 -1, 149, 167, 165, -1, 168, 373, -1, -1, 165, 781 -1, 131, -1, 107, -1, 97, -1, 98, -1, 99, 782 -1, 100, -1, 101, -1, 102, -1, 103, -1, 104, 783 -1, 105, -1, 106, -1, 111, 112, -1, 111, 134, 784 165, 135, 112, -1, 111, 134, 116, 169, 135, 112, 785 -1, 111, 134, 165, 116, 169, 135, 112, -1, 166, 786 -1, 169, 116, 166, -1, 165, -1, 170, 116, 165, 787 -1, -1, 170, -1, 173, -1, 174, -1, 178, -1, 788 179, -1, 191, -1, 193, -1, 194, -1, 199, -1, 789 127, 144, 114, 145, 115, 132, -1, 72, 130, 312, 790 172, -1, 114, 115, -1, 114, 134, 134, 210, 175, 791 135, 115, -1, 176, -1, 175, 134, 176, -1, 213, 792 -1, 40, 213, -1, 308, -1, 172, 135, -1, 172, 793 -1, 177, 172, -1, 171, 132, -1, 41, 109, 170, 794 110, 172, -1, 41, 109, 170, 110, 172, 42, 172, 795 -1, 43, 109, 170, 110, 184, -1, 43, 109, 170, 796 110, 114, 134, 206, 185, 115, -1, 53, 109, 170, 797 110, 184, -1, 53, 109, 170, 110, 114, 134, 206, 798 187, 115, -1, 164, -1, 164, 96, 164, -1, 310, 799 -1, 180, -1, 181, 116, 180, -1, 44, 181, 130, 800 -1, 45, 130, -1, 182, -1, 183, 182, -1, 183, 801 172, -1, -1, 186, -1, 183, 177, -1, 186, 183, 802 177, -1, -1, 188, -1, 183, 190, -1, 183, 177, 803 189, -1, 188, 183, 190, -1, 188, 183, 177, 189, 804 -1, -1, 190, -1, 56, -1, 56, 132, -1, 47, 805 109, 170, 110, 172, -1, 46, 172, 47, 109, 170, 806 110, 132, -1, 48, 109, 134, 192, 110, 172, -1, 807 171, 135, 132, 171, 132, 171, -1, 213, 171, 132, 808 171, -1, 51, 72, 132, -1, 51, 117, 170, 132, 809 -1, 50, 132, -1, 50, 72, 132, -1, 49, 132, 810 -1, 49, 72, 132, -1, 52, 171, 132, -1, 61, 811 166, 132, -1, 62, 166, 132, -1, 62, 166, 63, 812 165, 132, -1, 57, 174, 195, -1, 57, 174, 197, 813 -1, 57, 174, 195, 197, -1, 196, -1, 58, 109, 814 96, 110, 174, -1, 196, 58, 109, 96, 110, 174, 815 -1, 59, 109, 96, 110, 174, -1, 196, 59, 109, 816 96, 110, 174, -1, 58, 109, 134, 134, 198, 135, 817 110, 174, 135, -1, 196, 58, 109, 134, 134, 198, 818 135, 110, 174, 135, -1, 59, 109, 134, 134, 198, 819 135, 110, 174, 135, -1, 196, 59, 109, 134, 134, 820 198, 135, 110, 174, 135, -1, 60, 174, -1, 226, 821 -1, 226, 309, -1, 226, 357, -1, 366, 139, -1, 822 366, -1, 64, 200, 109, 141, 110, 132, -1, 64, 823 200, 109, 141, 130, 201, 110, 132, -1, 64, 200, 824 109, 141, 130, 201, 130, 201, 110, 132, -1, 64, 825 200, 109, 141, 130, 201, 130, 201, 130, 204, 110, 826 132, -1, 64, 200, 51, 109, 141, 130, 130, 201, 827 130, 204, 130, 205, 110, 132, -1, -1, 11, -1, 828 -1, 202, -1, 203, -1, 202, 116, 203, -1, 141, 829 109, 164, 110, -1, 111, 164, 112, 141, 109, 164, 830 110, -1, -1, 141, -1, 204, 116, 141, -1, 139, 831 -1, 205, 116, 139, -1, 135, -1, 207, -1, 213, 832 -1, 207, 134, 213, -1, 135, -1, 209, -1, 223, 833 -1, 209, 134, 223, -1, -1, 211, -1, 29, 212, 834 132, -1, 211, 29, 212, 132, -1, 274, -1, 212, 835 116, 274, -1, 214, -1, 223, -1, 215, 135, 132, 836 -1, 220, 135, 132, -1, 217, 135, 132, -1, 293, 837 135, 132, -1, 296, 135, 132, -1, 216, 277, -1, 838 232, 216, 277, -1, 215, 135, 116, 134, 272, 277, 839 -1, 367, 272, 311, -1, 370, 272, 311, -1, 228, 840 370, 272, 311, -1, 218, -1, 228, 218, -1, 232, 841 218, -1, 232, 228, 218, -1, 217, 135, 116, 134, 842 272, -1, 111, 112, 272, 109, 134, 260, 135, 110, 843 -1, 370, 272, 109, 134, 260, 135, 110, -1, 219, 844 272, 109, 134, 260, 135, 110, -1, 111, 134, 262, 845 135, 112, -1, 111, 134, 262, 135, 116, 134, 263, 846 135, 112, -1, 3, 216, -1, 3, 218, -1, 220, 847 135, 116, 134, 139, -1, 3, 226, 309, -1, 221, 848 135, 116, 134, 309, -1, 228, 3, 226, 309, -1, 849 226, 3, 309, -1, 226, 3, 228, 309, -1, 3, 850 139, 131, 165, -1, 222, 135, 116, 134, 139, 131, 851 165, -1, 224, 135, 132, -1, 221, 135, 132, -1, 852 222, 135, 132, -1, 240, 135, 132, -1, 225, 309, 853 311, 277, -1, 224, 116, 312, 309, 311, 277, -1, 854 236, -1, 240, -1, 242, -1, 283, -1, 237, -1, 855 241, -1, 243, -1, 284, -1, -1, 228, -1, 229, 856 -1, 228, 229, -1, 230, -1, 314, -1, 10, -1, 857 12, -1, 11, -1, 14, -1, 67, -1, -1, 13, 858 109, 231, 286, 110, -1, 233, -1, 228, 233, -1, 859 232, 228, 233, -1, 234, -1, 233, 234, -1, 5, 860 -1, 7, -1, 4, -1, 6, -1, 8, -1, 9, 861 -1, 69, -1, 71, -1, 16, -1, 21, -1, 20, 862 -1, 18, -1, 19, -1, 17, -1, 22, -1, 23, 863 -1, 15, -1, 25, -1, 26, -1, 27, -1, 24, 864 -1, 237, -1, 232, 237, -1, 236, 234, -1, 236, 865 234, 228, -1, 236, 234, 237, -1, 238, -1, 227, 866 239, 227, -1, 235, -1, 228, 235, -1, 238, 229, 867 -1, 238, 235, -1, 28, 109, 276, 110, -1, 28, 868 109, 170, 110, -1, 78, 109, 276, 110, -1, 78, 869 109, 170, 110, -1, 241, -1, 232, 241, -1, 240, 870 234, -1, 240, 234, 228, -1, 244, -1, 228, 244, 871 -1, 241, 229, -1, 243, -1, 232, 243, -1, 242, 872 234, -1, 242, 234, 228, -1, 74, -1, 228, 74, 873 -1, 243, 229, -1, 245, -1, 256, -1, 247, 114, 874 248, 115, -1, 247, 274, -1, -1, 247, 274, 246, 875 114, 248, 115, -1, 247, 109, 292, 110, 114, 248, 876 115, -1, 247, 285, -1, 31, 312, -1, 32, 312, 877 -1, -1, 248, 249, -1, 250, 132, -1, 40, 250, 878 132, -1, 251, 132, -1, 40, 251, 132, -1, 366, 879 -1, 366, 274, -1, 250, 116, 274, -1, 250, 116, 880 -1, 226, 252, -1, 251, 116, 312, 252, -1, -1, 881 254, -1, 318, 253, -1, 331, 253, -1, 357, -1, 882 -1, 254, -1, 130, 164, -1, 30, 312, -1, 255, 883 114, 258, 372, 115, -1, 255, 274, -1, -1, 255, 884 274, 257, 114, 258, 372, 115, -1, 274, 259, -1, 885 258, 116, 274, 259, -1, -1, 131, 164, -1, -1, 886 261, -1, 263, -1, 262, -1, 262, 135, 116, 134, 887 263, -1, 263, 135, 116, 134, 96, -1, 262, 135, 888 116, 134, 96, -1, 267, -1, 263, 135, 116, 134, 889 267, -1, 262, 135, 116, 134, 267, -1, 262, 135, 890 116, 134, 263, 135, 116, 134, 267, -1, 268, -1, 891 263, 135, 116, 134, 268, -1, -1, 265, -1, 266, 892 -1, 266, 135, 116, 134, 96, -1, 270, -1, 269, 893 -1, 266, 135, 116, 134, 270, -1, 266, 135, 116, 894 134, 269, -1, 269, -1, 362, 272, 373, -1, 370, 895 272, 373, -1, 228, 370, 272, 373, -1, 218, -1, 896 270, -1, 362, -1, 370, -1, 228, 370, -1, 371, 897 -1, 225, 336, 373, -1, 225, 340, 373, -1, 225, 898 -1, 225, 351, -1, 139, -1, 271, 116, 139, -1, 899 137, -1, 74, -1, 75, -1, 138, -1, 74, -1, 900 75, -1, 139, -1, 74, -1, 75, -1, 366, -1, 901 226, -1, 226, 357, -1, 366, -1, 371, -1, 226, 902 -1, 226, 345, -1, -1, 131, 278, -1, 107, 278, 903 -1, 165, -1, 114, 279, 372, 115, -1, -1, 278, 904 -1, 280, 278, -1, 279, 116, 278, -1, 279, 116, 905 280, 278, -1, 281, 130, -1, 274, 130, -1, 282, 906 -1, 281, 282, -1, 113, 274, -1, 111, 134, 165, 907 135, 112, -1, 111, 134, 310, 135, 112, -1, 111, 908 134, 164, 96, 164, 135, 112, -1, 113, 111, 134, 909 147, 135, 112, -1, 284, -1, 232, 284, -1, 283, 910 234, -1, 283, 234, 228, -1, 285, -1, 228, 285, 911 -1, 284, 229, -1, 75, 109, 292, 110, -1, 287, 912 373, -1, 286, 116, 287, 373, -1, -1, 289, 274, 913 288, 290, -1, 226, 336, -1, 33, -1, 35, -1, 914 34, -1, -1, 290, 291, -1, 128, 274, 109, 292, 915 110, -1, 128, 114, 134, 298, 115, -1, 128, 109, 916 134, 286, 135, 110, 114, 134, 298, 115, 109, 292, 917 110, -1, 276, -1, 165, -1, 292, 116, 276, -1, 918 292, 116, 165, -1, 33, 294, -1, 233, 33, 294, 919 -1, 293, 116, 294, -1, 295, 290, -1, 295, 290, 920 131, 276, -1, 274, -1, 273, 109, 134, 286, 135, 921 110, -1, 36, 274, 109, 134, 286, 135, 110, 114, 922 115, -1, -1, 36, 274, 109, 134, 286, 135, 110, 923 114, 297, 298, 115, -1, 299, -1, 298, 134, 299, 924 -1, 300, 135, 132, -1, 301, 135, 132, -1, 216, 925 -1, 218, -1, 300, 135, 116, 134, 272, -1, 226, 926 309, -1, 301, 135, 116, 134, 309, -1, -1, 303, 927 -1, 305, -1, 303, 134, 305, -1, -1, 303, -1, 928 213, -1, 307, -1, 199, -1, -1, 5, 82, 306, 929 114, 304, 115, -1, 40, 305, -1, 308, -1, 323, 930 174, -1, 327, 134, 208, 174, -1, 217, 174, -1, 931 225, 323, 174, -1, 228, 323, 174, -1, 232, 323, 932 174, -1, 232, 228, 323, 174, -1, 225, 327, 134, 933 208, 174, -1, 228, 327, 134, 208, 174, -1, 232, 934 327, 134, 208, 174, -1, 232, 228, 327, 134, 208, 935 174, -1, 318, -1, 331, -1, 323, -1, 164, 122, 936 164, -1, -1, 64, 109, 142, 110, 312, -1, -1, 937 313, -1, 314, -1, 313, 314, -1, 39, 109, 109, 938 315, 110, 110, -1, 316, -1, 315, 116, 316, -1, 939 -1, 317, -1, 317, 109, 171, 110, -1, 272, -1, 940 234, -1, 235, -1, 229, -1, 319, 312, -1, 320, 941 -1, 321, 312, -1, 322, 312, -1, 137, -1, 109, 942 319, 110, -1, 150, 318, -1, 150, 228, 318, -1, 943 109, 320, 110, -1, 319, 349, -1, 109, 320, 110, 944 349, -1, 109, 321, 110, 350, -1, 109, 321, 110, 945 -1, 109, 320, 110, 109, 134, 264, 135, 110, -1, 946 109, 322, 110, -1, 324, 312, -1, 325, -1, 326, 947 312, -1, 319, 109, 134, 264, 135, 110, -1, 109, 948 325, 110, 109, 134, 264, 135, 110, -1, 109, 324, 949 110, -1, 150, 323, -1, 150, 228, 323, -1, 109, 950 325, 110, -1, 109, 325, 110, 349, -1, 109, 326, 951 110, 350, -1, 109, 326, 110, -1, 328, -1, 329, 952 -1, 330, -1, 319, 109, 271, 110, -1, 109, 329, 953 110, 109, 271, 110, -1, 109, 328, 110, -1, 150, 954 327, -1, 150, 228, 327, -1, 109, 329, 110, -1, 955 109, 329, 110, 349, -1, 109, 330, 110, 350, -1, 956 109, 330, 110, -1, 332, 312, -1, 333, -1, 334, 957 312, -1, 335, 312, -1, 341, -1, 109, 332, 110, 958 -1, 150, 331, -1, 150, 228, 331, -1, 109, 333, 959 110, -1, 332, 349, -1, 109, 333, 110, 349, -1, 960 109, 334, 110, 350, -1, 109, 334, 110, -1, 332, 961 109, 134, 264, 135, 110, -1, 109, 333, 110, 109, 962 134, 264, 135, 110, -1, 109, 335, 110, -1, 319, 963 312, -1, 337, -1, 338, 312, -1, 339, 312, -1, 964 150, 336, -1, 150, 228, 336, -1, 109, 337, 110, 965 -1, 319, 355, -1, 109, 337, 110, 349, -1, 109, 966 338, 110, 350, -1, 109, 338, 110, -1, 319, 109, 967 134, 264, 135, 110, -1, 109, 337, 110, 109, 134, 968 264, 135, 110, -1, 109, 339, 110, -1, 341, 312, 969 -1, 342, -1, 343, 312, -1, 344, 312, -1, 74, 970 -1, 75, -1, 150, 340, -1, 150, 228, 340, -1, 971 109, 342, 110, -1, 341, 355, -1, 109, 342, 110, 972 355, -1, 341, 109, 134, 264, 135, 110, -1, 109, 973 342, 110, 109, 134, 264, 135, 110, -1, 346, -1, 974 347, 312, -1, 348, 312, -1, 150, -1, 150, 228, 975 -1, 150, 345, -1, 150, 228, 345, -1, 109, 346, 976 110, -1, 349, -1, 109, 346, 110, 349, -1, 109, 977 347, 110, 350, -1, 109, 347, 110, -1, 109, 134, 978 264, 135, 110, -1, 109, 346, 110, 109, 134, 264, 979 135, 110, -1, 109, 348, 110, -1, 111, 112, -1, 980 111, 112, 350, -1, 350, -1, 111, 134, 165, 135, 981 112, -1, 111, 134, 117, 135, 112, -1, 350, 111, 982 134, 165, 135, 112, -1, 350, 111, 134, 117, 135, 983 112, -1, 352, -1, 353, 312, -1, 354, 312, -1, 984 150, -1, 150, 228, -1, 150, 351, -1, 150, 228, 985 351, -1, 109, 352, 110, -1, 355, -1, 109, 352, 986 110, 355, -1, 109, 353, 110, 350, -1, 109, 353, 987 110, -1, 109, 134, 264, 135, 110, -1, 109, 352, 988 110, 109, 134, 264, 135, 110, -1, 109, 354, 110, 989 -1, 356, -1, 356, 350, -1, 350, -1, 111, 112, 990 -1, 111, 134, 228, 117, 135, 112, -1, 111, 134, 991 228, 135, 112, -1, 111, 134, 228, 165, 135, 112, 992 -1, 111, 134, 7, 227, 165, 135, 112, -1, 111, 993 134, 228, 7, 165, 135, 112, -1, 358, -1, 359, 994 312, -1, 360, 312, -1, 150, -1, 150, 228, -1, 995 150, 357, -1, 150, 228, 357, -1, 109, 358, 110, 996 -1, 349, -1, 109, 358, 110, 349, -1, 109, 359, 997 110, 350, -1, 109, 359, 110, -1, 109, 358, 110, 998 109, 134, 264, 135, 110, -1, 109, 360, 110, -1, 999 362, -1, 370, -1, 228, 370, -1, 363, -1, 364, 1000 -1, 150, 226, -1, 228, 150, 226, -1, 150, 371, 1001 -1, 228, 150, 371, -1, 150, 361, -1, 228, 150, 1002 361, -1, 111, 112, 226, -1, 365, 226, -1, 111, 1003 112, 350, 226, -1, 365, 350, 226, -1, 350, 226, 1004 -1, 111, 112, 363, -1, 365, 363, -1, 111, 112, 1005 350, 363, -1, 365, 350, 363, -1, 350, 363, -1, 1006 111, 134, 228, 117, 135, 112, -1, 111, 134, 228, 1007 165, 135, 112, -1, 111, 134, 232, 165, 135, 112, 1008 -1, 111, 134, 232, 228, 165, 135, 112, -1, 370, 1009 -1, 228, 370, -1, 367, -1, 368, -1, 369, -1, 1010 150, 226, -1, 228, 150, 226, -1, 150, 371, -1, 1011 228, 150, 371, -1, 150, 366, -1, 228, 150, 366, 1012 -1, 111, 112, 226, -1, 111, 112, 350, 226, -1, 1013 350, 226, -1, 111, 112, 368, -1, 111, 112, 350, 1014 368, -1, 350, 368, -1, 111, 134, 263, 135, 112, 1015 -1, 111, 112, 109, 260, 110, -1, 370, 109, 134, 1016 260, 135, 110, -1, 219, 109, 134, 260, 135, 110, 1017 -1, -1, 116, -1, -1, 131, 165, -1 1017 1018 }; 1018 1019 … … 1020 1021 static const yytype_uint16 yyrline[] = 1021 1022 { 1022 0, 299, 299, 305, 314, 315, 316, 320, 321, 322,1023 32 6, 327, 331, 332, 336, 337, 341, 342, 353, 355,1024 35 7, 359, 364, 365, 371, 375, 377, 378, 380, 381,1025 38 3, 385, 387, 396, 397, 403, 404, 408, 409, 413,1026 41 7, 419, 421, 423, 428, 431, 433, 435, 440, 453,1027 45 5, 457, 459, 461, 463, 465, 467, 469, 471, 473,1028 4 80, 481, 487, 488, 489, 490, 494, 495, 497, 502,1029 503, 50 5, 507, 512, 513, 515, 520, 521, 523, 528,1030 529, 53 1, 533, 535, 540, 541, 543, 548, 549, 554,1031 555, 5 60, 561, 566, 567, 572, 573, 578, 579, 582,1032 58 4, 589, 594, 595, 597, 603, 604, 608, 609, 610,1033 611, 612, 613, 614, 615, 616, 617, 618, 6 24, 626,1034 62 8, 630, 635, 636, 641, 642, 648, 649, 655, 656,1035 657, 658, 659, 660, 661, 662, 663, 6 73, 680, 682,1036 6 92, 693, 698, 700, 706, 708, 712, 713, 718, 723,1037 72 6, 728, 730, 740, 742, 753, 754, 756, 761, 763,1038 76 7, 768, 773, 774, 778, 783, 784, 788, 790, 796,1039 79 7, 801, 803, 805, 807, 813, 814, 818, 820, 825,1040 82 7, 829, 834, 836, 841, 843, 847, 850, 854, 857,1041 8 61, 863, 865, 867, 872, 874, 876, 885, 887, 889,1042 8 91, 893, 898, 900, 902, 904, 909, 922, 923, 928,1043 9 30, 935, 939, 941, 943, 945, 947, 953, 954, 960,1044 9 61, 965, 966, 971, 973, 979, 980, 982, 987, 989,1045 9 96, 998, 1002, 1003, 1008, 1010, 1014, 1015, 1019, 1021,1046 102 5, 1026, 1030, 1031, 1035, 1036, 1051, 1052, 1053, 1054,1047 1055, 105 9, 1064, 1071, 1081, 1086, 1091, 1099, 1104, 1109,1048 11 14, 1119, 1127, 1149, 1154, 1161, 1163, 1170, 1175, 1180,1049 11 91, 1196, 1201, 1206, 1211, 1220, 1225, 1233, 1234, 1235,1050 1236, 12 42, 1247, 1255, 1256, 1257, 1258, 1262, 1263, 1264,1051 1265, 12 70, 1271, 1280, 1281, 1286, 1287, 1292, 1294, 1296,1052 129 8, 1300, 1303, 1302, 1314, 1315, 1317, 1327, 1328, 1333,1053 133 7, 1339, 1341, 1343, 1345, 1347, 1349, 1351, 1356, 1358,1054 13 60, 1362, 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1378,1055 13 80, 1386, 1387, 1389, 1391, 1393, 1398, 1399, 1405, 1406,1056 140 8, 1410, 1415, 1417, 1419, 1421, 1426, 1427, 1429, 1431,1057 143 6, 1437, 1439, 1444, 1445, 1447, 1449, 1454, 1456, 1458,1058 14 63, 1464, 1468, 1470, 1476, 1475, 1479, 1481, 1486, 1488,1059 14 94, 1495, 1500, 1501, 1503, 1504, 1513, 1514, 1516, 1518,1060 15 23, 1525, 1531, 1532, 1534, 1537, 1540, 1545, 1546, 1551,1061 155 6, 1560, 1562, 1568, 1567, 1574, 1576, 1582, 1583, 1591,1062 159 2, 1596, 1597, 1598, 1600, 1602, 1609, 1610, 1612, 1614,1063 161 9, 1620, 1626, 1627, 1631, 1632, 1637, 1638, 1639, 1641,1064 164 9, 1650, 1652, 1655, 1657, 1661, 1662, 1663, 1665, 1667,1065 16 71, 1676, 1684, 1685, 1694, 1696, 1701, 1702, 1703, 1707,1066 170 8, 1709, 1713, 1714, 1715, 1719, 1720, 1721, 1726, 1727,1067 172 8, 1729, 1735, 1736, 1738, 1743, 1744, 1749, 1750, 1751,1068 175 2, 1753, 1768, 1769, 1774, 1775, 1781, 1783, 1786, 1788,1069 17 90, 1813, 1814, 1816, 1818, 1823, 1824, 1826, 1831, 1836,1070 183 7, 1843, 1842, 1846, 1850, 1852, 1854, 1860, 1861, 1866,1071 18 71, 1873, 1878, 1880, 1881, 1883, 1888, 1890, 1892, 1897,1072 189 9, 1904, 1909, 1917, 1923, 1922, 1936, 1937, 1942, 1943,1073 194 7, 1952, 1957, 1965, 1970, 1981, 1982, 1993, 1994, 2000,1074 2001, 2005, 2006, 2007, 2010, 2009, 2020, 2029, 2035, 2041,1075 20 50, 2056, 2062, 2068, 2074, 2082, 2088, 2096, 2102, 2111,1076 21 12, 2113, 2117, 2121, 2123, 2128, 2129, 2133, 2134, 2139,1077 21 45, 2146, 2149, 2151, 2152, 2156, 2157, 2158, 2159, 2193,1078 21 95, 2196, 2198, 2203, 2208, 2213, 2215, 2217, 2222, 2224,1079 22 26, 2228, 2233, 2235, 2244, 2246, 2247, 2252, 2254, 2256,1080 22 61, 2263, 2265, 2270, 2272, 2274, 2283, 2284, 2285, 2289,1081 22 91, 2293, 2298, 2300, 2302, 2307, 2309, 2311, 2326, 2328,1082 232 9, 2331, 2336, 2337, 2342, 2344, 2346, 2351, 2353, 2355,1083 23 57, 2362, 2364, 2366, 2376, 2378, 2379, 2381, 2386, 2388,1084 23 90, 2395, 2397, 2399, 2401, 2406, 2408, 2410, 2441, 2443,1085 24 44, 2446, 2451, 2456, 2464, 2466, 2468, 2473, 2475, 2480,1086 24 82, 2496, 2497, 2499, 2504, 2506, 2508, 2510, 2512, 2517,1087 251 8, 2520, 2522, 2527, 2529, 2531, 2537, 2539, 2541, 2545,1088 25 47, 2549, 2551, 2565, 2566, 2568, 2573, 2575, 2577, 2579,1089 25 81, 2586, 2587, 2589, 2591, 2596, 2598, 2600, 2606, 2607,1090 260 9, 2618, 2621, 2623, 2626, 2628, 2630, 2643, 2644, 2646,1091 26 51, 2653, 2655, 2657, 2659, 2664, 2665, 2667, 2669, 2674,1092 26 76, 2684, 2685, 2686, 2691, 2692, 2696, 2698, 2700, 2702,1093 2 704, 2706, 2713, 2715, 2717, 2719, 2721, 2723, 2725, 2727,1094 272 9, 2731, 2736, 2738, 2740, 2745, 2771, 2772, 2774, 2778,1095 277 9, 2783, 2785, 2787, 2789, 2791, 2793, 2800, 2802, 2804,1096 2 806, 2808, 2810, 2815, 2820, 2822, 2824, 2842, 2844, 2849,1097 28 501023 0, 300, 300, 304, 311, 312, 313, 317, 318, 319, 1024 323, 324, 328, 329, 333, 334, 338, 342, 343, 354, 1025 356, 358, 360, 365, 366, 372, 376, 378, 379, 381, 1026 382, 384, 386, 388, 397, 398, 404, 405, 409, 410, 1027 414, 418, 420, 422, 424, 429, 432, 434, 436, 441, 1028 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 1029 474, 481, 482, 488, 489, 490, 491, 495, 496, 498, 1030 503, 504, 506, 508, 513, 514, 516, 521, 522, 524, 1031 529, 530, 532, 534, 536, 541, 542, 544, 549, 550, 1032 555, 556, 561, 562, 567, 568, 573, 574, 579, 580, 1033 583, 585, 590, 595, 596, 598, 604, 605, 609, 610, 1034 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 1035 626, 628, 630, 632, 637, 638, 643, 644, 650, 651, 1036 657, 658, 659, 660, 661, 662, 663, 664, 665, 675, 1037 682, 684, 694, 695, 700, 702, 708, 710, 714, 715, 1038 720, 725, 728, 730, 732, 742, 744, 755, 756, 758, 1039 762, 764, 768, 769, 774, 775, 779, 784, 785, 789, 1040 791, 797, 798, 802, 804, 806, 808, 814, 815, 819, 1041 821, 826, 828, 830, 835, 837, 842, 844, 848, 851, 1042 855, 858, 862, 864, 866, 868, 873, 875, 877, 882, 1043 884, 886, 888, 890, 895, 897, 899, 901, 906, 918, 1044 919, 924, 926, 931, 935, 937, 939, 941, 943, 949, 1045 950, 956, 957, 961, 962, 967, 969, 975, 976, 978, 1046 983, 988, 998, 1000, 1004, 1005, 1010, 1012, 1016, 1017, 1047 1021, 1023, 1027, 1028, 1032, 1033, 1037, 1038, 1053, 1054, 1048 1055, 1056, 1057, 1061, 1066, 1073, 1083, 1088, 1093, 1101, 1049 1106, 1111, 1116, 1121, 1129, 1151, 1156, 1163, 1165, 1172, 1050 1177, 1182, 1193, 1198, 1203, 1208, 1213, 1222, 1227, 1235, 1051 1236, 1237, 1238, 1244, 1249, 1257, 1258, 1259, 1260, 1264, 1052 1265, 1266, 1267, 1272, 1273, 1282, 1283, 1288, 1289, 1294, 1053 1296, 1298, 1300, 1302, 1305, 1304, 1316, 1317, 1319, 1329, 1054 1330, 1335, 1337, 1339, 1341, 1343, 1346, 1348, 1351, 1356, 1055 1358, 1360, 1362, 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1056 1378, 1380, 1386, 1387, 1389, 1391, 1393, 1398, 1399, 1405, 1057 1406, 1408, 1410, 1415, 1417, 1419, 1421, 1426, 1427, 1429, 1058 1431, 1436, 1437, 1439, 1444, 1445, 1447, 1449, 1454, 1456, 1059 1458, 1463, 1464, 1468, 1470, 1476, 1475, 1479, 1481, 1486, 1060 1488, 1494, 1495, 1500, 1501, 1503, 1504, 1513, 1514, 1516, 1061 1518, 1523, 1525, 1531, 1532, 1534, 1537, 1540, 1545, 1546, 1062 1551, 1556, 1560, 1562, 1568, 1567, 1574, 1576, 1582, 1583, 1063 1591, 1592, 1596, 1597, 1598, 1600, 1602, 1609, 1610, 1612, 1064 1614, 1619, 1620, 1626, 1627, 1631, 1632, 1637, 1638, 1639, 1065 1641, 1649, 1650, 1652, 1655, 1657, 1661, 1662, 1663, 1665, 1066 1667, 1671, 1676, 1684, 1685, 1694, 1696, 1701, 1702, 1703, 1067 1707, 1708, 1709, 1713, 1714, 1715, 1719, 1720, 1721, 1726, 1068 1727, 1728, 1729, 1735, 1736, 1738, 1743, 1744, 1749, 1750, 1069 1751, 1752, 1753, 1768, 1769, 1774, 1775, 1781, 1783, 1786, 1070 1788, 1790, 1813, 1814, 1816, 1818, 1823, 1824, 1826, 1831, 1071 1836, 1837, 1843, 1842, 1846, 1850, 1852, 1854, 1860, 1861, 1072 1866, 1871, 1873, 1878, 1880, 1881, 1883, 1888, 1890, 1892, 1073 1897, 1899, 1904, 1909, 1917, 1923, 1922, 1936, 1937, 1942, 1074 1943, 1947, 1952, 1957, 1965, 1970, 1981, 1982, 1987, 1988, 1075 1994, 1995, 1999, 2000, 2001, 2004, 2003, 2014, 2023, 2029, 1076 2035, 2044, 2050, 2056, 2062, 2068, 2076, 2082, 2090, 2096, 1077 2105, 2106, 2107, 2111, 2115, 2117, 2122, 2123, 2127, 2128, 1078 2133, 2139, 2140, 2143, 2145, 2146, 2150, 2151, 2152, 2153, 1079 2187, 2189, 2190, 2192, 2197, 2202, 2207, 2209, 2211, 2216, 1080 2218, 2220, 2222, 2227, 2229, 2238, 2240, 2241, 2246, 2248, 1081 2250, 2255, 2257, 2259, 2264, 2266, 2268, 2277, 2278, 2279, 1082 2283, 2285, 2287, 2292, 2294, 2296, 2301, 2303, 2305, 2320, 1083 2322, 2323, 2325, 2330, 2331, 2336, 2338, 2340, 2345, 2347, 1084 2349, 2351, 2356, 2358, 2360, 2370, 2372, 2373, 2375, 2380, 1085 2382, 2384, 2389, 2391, 2393, 2395, 2400, 2402, 2404, 2435, 1086 2437, 2438, 2440, 2445, 2450, 2458, 2460, 2462, 2467, 2469, 1087 2474, 2476, 2490, 2491, 2493, 2498, 2500, 2502, 2504, 2506, 1088 2511, 2512, 2514, 2516, 2521, 2523, 2525, 2531, 2533, 2535, 1089 2539, 2541, 2543, 2545, 2559, 2560, 2562, 2567, 2569, 2571, 1090 2573, 2575, 2580, 2581, 2583, 2585, 2590, 2592, 2594, 2600, 1091 2601, 2603, 2612, 2615, 2617, 2620, 2622, 2624, 2637, 2638, 1092 2640, 2645, 2647, 2649, 2651, 2653, 2658, 2659, 2661, 2663, 1093 2668, 2670, 2678, 2679, 2680, 2685, 2686, 2690, 2692, 2694, 1094 2696, 2698, 2700, 2707, 2709, 2711, 2713, 2715, 2717, 2719, 1095 2721, 2723, 2725, 2730, 2732, 2734, 2739, 2765, 2766, 2768, 1096 2772, 2773, 2777, 2779, 2781, 2783, 2785, 2787, 2794, 2796, 1097 2798, 2800, 2802, 2804, 2809, 2814, 2816, 2818, 2836, 2838, 1098 2843, 2844 1098 1099 }; 1099 1100 #endif … … 1125 1126 "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant", 1126 1127 "identifier", "no_01_identifier", "no_attr_identifier", "zero_one", 1127 "string_literal_list", "primary_expression", "postfix_expression", 1128 "argument_expression_list", "argument_expression", "field_list", "field", 1129 "unary_expression", "ptrref_operator", "unary_operator", 1130 "cast_expression", "multiplicative_expression", "additive_expression", 1131 "shift_expression", "relational_expression", "equality_expression", 1132 "AND_expression", "exclusive_OR_expression", "inclusive_OR_expression", 1133 "logical_AND_expression", "logical_OR_expression", 1134 "conditional_expression", "constant_expression", "assignment_expression", 1135 "assignment_expression_opt", "assignment_operator", "tuple", 1136 "tuple_expression_list", "comma_expression", "comma_expression_opt", 1137 "statement", "labeled_statement", "compound_statement", 1138 "block_item_list", "block_item", "statement_list", 1139 "expression_statement", "selection_statement", "case_value", 1140 "case_value_list", "case_label", "case_label_list", "case_clause", 1141 "switch_clause_list_opt", "switch_clause_list", "choose_clause_list_opt", 1142 "choose_clause_list", "fall_through_opt", "fall_through", 1143 "iteration_statement", "for_control_expression", "jump_statement", 1144 "exception_statement", "handler_list", "handler_clause", 1145 "finally_clause", "exception_declaration", "asm_statement", 1146 "asm_volatile_opt", "asm_operands_opt", "asm_operands_list", 1147 "asm_operand", "asm_clobbers_list_opt", "label_list", 1148 "declaration_list_opt", "declaration_list", "old_declaration_list_opt", 1149 "old_declaration_list", "local_label_declaration_opt", 1150 "local_label_declaration_list", "local_label_list", "declaration", 1151 "new_declaration", "new_variable_declaration", "new_variable_specifier", 1128 "string_literal", "string_literal_list", "primary_expression", 1129 "postfix_expression", "argument_expression_list", "argument_expression", 1130 "field_list", "field", "unary_expression", "ptrref_operator", 1131 "unary_operator", "cast_expression", "multiplicative_expression", 1132 "additive_expression", "shift_expression", "relational_expression", 1133 "equality_expression", "AND_expression", "exclusive_OR_expression", 1134 "inclusive_OR_expression", "logical_AND_expression", 1135 "logical_OR_expression", "conditional_expression", "constant_expression", 1136 "assignment_expression", "assignment_expression_opt", 1137 "assignment_operator", "tuple", "tuple_expression_list", 1138 "comma_expression", "comma_expression_opt", "statement", 1139 "labeled_statement", "compound_statement", "block_item_list", 1140 "block_item", "statement_list", "expression_statement", 1141 "selection_statement", "case_value", "case_value_list", "case_label", 1142 "case_label_list", "case_clause", "switch_clause_list_opt", 1143 "switch_clause_list", "choose_clause_list_opt", "choose_clause_list", 1144 "fall_through_opt", "fall_through", "iteration_statement", 1145 "for_control_expression", "jump_statement", "exception_statement", 1146 "handler_list", "handler_clause", "finally_clause", 1147 "exception_declaration", "asm_statement", "asm_volatile_opt", 1148 "asm_operands_opt", "asm_operands_list", "asm_operand", 1149 "asm_clobbers_list_opt", "label_list", "declaration_list_opt", 1150 "declaration_list", "old_declaration_list_opt", "old_declaration_list", 1151 "local_label_declaration_opt", "local_label_declaration_list", 1152 "local_label_list", "declaration", "new_declaration", 1153 "new_variable_declaration", "new_variable_specifier", 1152 1154 "new_function_declaration", "new_function_specifier", 1153 1155 "new_function_return", "new_typedef_declaration", "typedef_declaration", … … 1156 1158 "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1", 1157 1159 "declaration_qualifier_list", "storage_class_list", "storage_class", 1158 "storage_class_name", "basic_type_name", "basic_declaration_specifier", 1159 "basic_type_specifier", "direct_type_name", "indirect_type_name", 1160 "sue_declaration_specifier", "sue_type_specifier", 1161 "typedef_declaration_specifier", "typedef_type_specifier", 1162 "elaborated_type_name", "aggregate_name", "$@2", "aggregate_key", 1163 "field_declaration_list", "field_declaration", 1160 "basic_type_name", "basic_declaration_specifier", "basic_type_specifier", 1161 "direct_type_name", "indirect_type_name", "sue_declaration_specifier", 1162 "sue_type_specifier", "typedef_declaration_specifier", 1163 "typedef_type_specifier", "elaborated_type_name", "aggregate_name", 1164 "$@2", "aggregate_key", "field_declaration_list", "field_declaration", 1164 1165 "new_field_declaring_list", "field_declaring_list", "field_declarator", 1165 1166 "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name", … … 1238 1239 { 1239 1240 0, 133, 134, 135, 136, 136, 136, 137, 137, 137, 1240 138, 138, 139, 139, 140, 140, 141, 14 1, 142, 142,1241 14 2, 142, 143, 143, 143, 143, 143, 143, 143, 143,1242 14 3, 143, 143, 144, 144, 145, 145, 146, 146, 147,1243 14 7, 147, 147, 147, 148, 148, 148, 148, 148, 148,1244 14 8, 148, 148, 148, 148, 148, 148, 148, 148, 148,1245 149, 1 49, 150, 150, 150, 150, 151, 151, 151, 152,1246 15 2, 152, 152, 153, 153, 153, 154, 154, 154, 155,1247 15 5, 155, 155, 155, 156, 156, 156, 157, 157, 158,1248 15 8, 159, 159, 160, 160, 161, 161, 162, 162, 162,1249 16 2, 163, 164, 164, 164, 165, 165, 166, 166, 166,1250 16 6, 166, 166, 166, 166, 166, 166, 166, 167, 167,1251 16 7, 167, 168, 168, 169, 169, 170, 170, 171, 171,1252 17 1, 171, 171, 171, 171, 171, 171, 172, 173, 173,1253 174, 174, 175, 175, 17 5, 175, 176, 176, 177, 178,1254 178, 17 8, 178, 178, 178, 179, 179, 179, 180, 180,1255 181, 181, 182, 182, 183, 18 4, 184, 185, 185, 186,1256 186, 187, 187, 18 7, 187, 188, 188, 189, 189, 190,1257 190, 19 0, 191, 191, 192, 192, 192, 192, 192, 192,1258 19 2, 192, 192, 192, 193, 193, 193, 194, 194, 194,1259 19 4, 194, 195, 195, 195, 195, 196, 197, 197, 197,1260 19 7, 197, 198, 198, 198, 198, 198, 199, 199, 200,1261 200, 201, 201, 202, 202, 203, 203, 20 3, 204, 204,1241 138, 138, 139, 139, 140, 140, 141, 142, 142, 143, 1242 143, 143, 143, 144, 144, 144, 144, 144, 144, 144, 1243 144, 144, 144, 144, 145, 145, 146, 146, 147, 147, 1244 148, 148, 148, 148, 148, 149, 149, 149, 149, 149, 1245 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 1246 149, 150, 150, 151, 151, 151, 151, 152, 152, 152, 1247 153, 153, 153, 153, 154, 154, 154, 155, 155, 155, 1248 156, 156, 156, 156, 156, 157, 157, 157, 158, 158, 1249 159, 159, 160, 160, 161, 161, 162, 162, 163, 163, 1250 163, 163, 164, 165, 165, 165, 166, 166, 167, 167, 1251 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 1252 168, 168, 168, 168, 169, 169, 170, 170, 171, 171, 1253 172, 172, 172, 172, 172, 172, 172, 172, 172, 173, 1254 174, 174, 175, 175, 176, 176, 176, 176, 177, 177, 1255 178, 179, 179, 179, 179, 179, 179, 180, 180, 180, 1256 181, 181, 182, 182, 183, 183, 184, 185, 185, 186, 1257 186, 187, 187, 188, 188, 188, 188, 189, 189, 190, 1258 190, 191, 191, 191, 192, 192, 193, 193, 193, 193, 1259 193, 193, 193, 193, 193, 193, 194, 194, 194, 195, 1260 195, 195, 195, 195, 196, 196, 196, 196, 197, 198, 1261 198, 198, 198, 198, 199, 199, 199, 199, 199, 200, 1262 200, 201, 201, 202, 202, 203, 203, 204, 204, 204, 1262 1263 205, 205, 206, 206, 207, 207, 208, 208, 209, 209, 1263 210, 210, 211, 211, 212, 212, 213, 213, 21 3, 213,1264 21 3, 214, 214, 214, 215, 215, 215, 216, 216, 216,1265 21 6, 216, 217, 217, 217, 218, 218, 219, 219, 219,1266 220, 220, 22 0, 220, 220, 221, 221, 222, 222, 222,1267 22 2, 223, 223, 224, 224, 224, 224, 225, 225, 225,1268 22 5, 226, 226, 227, 227, 228, 228, 229, 229, 229,1269 2 29, 229, 230, 229, 231, 231, 231, 232, 232, 233,1270 23 4, 234, 234, 234, 234, 234, 234, 234, 235, 235,1264 210, 210, 211, 211, 212, 212, 213, 213, 214, 214, 1265 214, 214, 214, 215, 215, 215, 216, 216, 216, 217, 1266 217, 217, 217, 217, 218, 218, 218, 219, 219, 220, 1267 220, 220, 221, 221, 221, 221, 221, 222, 222, 223, 1268 223, 223, 223, 224, 224, 225, 225, 225, 225, 226, 1269 226, 226, 226, 227, 227, 228, 228, 229, 229, 230, 1270 230, 230, 230, 230, 231, 230, 232, 232, 232, 233, 1271 233, 234, 234, 234, 234, 234, 234, 234, 234, 235, 1271 1272 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 1272 235, 23 6, 236, 236, 236, 236, 237, 237, 238, 238,1273 238, 238, 23 9, 239, 239, 239, 240, 240, 240, 240,1274 24 1, 241, 241, 242, 242, 242, 242, 243, 243, 243,1275 24 4, 244, 245, 245, 246, 245, 245, 245, 247, 247,1276 24 8, 248, 249, 249, 249, 249, 250, 250, 250, 250,1277 25 1, 251, 252, 252, 252, 252, 252, 253, 253, 254,1278 25 5, 256, 256, 257, 256, 258, 258, 259, 259, 260,1279 260, 26 1, 261, 261, 261, 261, 262, 262, 262, 262,1280 26 3, 263, 264, 264, 265, 265, 266, 266, 266, 266,1281 26 7, 267, 267, 267, 267, 268, 268, 268, 268, 268,1282 26 9, 269, 270, 270, 271, 271, 272, 272, 272, 273,1283 273, 273, 27 4, 274, 274, 275, 275, 275, 276, 276,1284 276, 276, 27 7, 277, 277, 278, 278, 279, 279, 279,1285 279, 279, 2 80, 280, 281, 281, 282, 282, 282, 282,1286 282, 28 3, 283, 283, 283, 284, 284, 284, 285, 286,1287 286, 28 8, 287, 287, 289, 289, 289, 290, 290, 291,1288 291, 291, 29 2, 292, 292, 292, 293, 293, 293, 294,1289 294, 29 5, 295, 296, 297, 296, 298, 298, 299, 299,1290 300, 300, 300, 301, 301, 302, 302, 303, 303, 304,1291 304, 30 5, 305, 305, 306, 305, 305, 307, 307, 307,1292 30 8, 308, 308, 308, 308, 308, 308, 308, 308, 309,1293 309, 309, 3 10, 311, 311, 312, 312, 313, 313, 314,1294 31 5, 315, 316, 316, 316, 317, 317, 317, 317, 318,1295 318, 318, 318, 31 9, 319, 320, 320, 320, 321, 321,1296 321, 321, 32 2, 322, 323, 323, 323, 324, 324, 324,1297 32 5, 325, 325, 326, 326, 326, 327, 327, 327, 328,1298 328, 328, 32 9, 329, 329, 330, 330, 330, 331, 331,1299 331, 331, 33 2, 332, 333, 333, 333, 334, 334, 334,1300 334, 33 5, 335, 335, 336, 336, 336, 336, 337, 337,1301 337, 33 8, 338, 338, 338, 339, 339, 339, 340, 340,1302 340, 340, 34 1, 341, 342, 342, 342, 343, 343, 344,1303 344, 34 5, 345, 345, 346, 346, 346, 346, 346, 347,1304 347, 347, 347, 34 8, 348, 348, 349, 349, 349, 350,1305 350, 350, 350, 35 1, 351, 351, 352, 352, 352, 352,1306 352, 35 3, 353, 353, 353, 354, 354, 354, 355, 355,1307 355, 35 6, 356, 356, 356, 356, 356, 357, 357, 357,1308 35 8, 358, 358, 358, 358, 359, 359, 359, 359, 360,1309 360, 36 1, 361, 361, 362, 362, 363, 363, 363, 363,1310 363, 363, 36 4, 364, 364, 364, 364, 364, 364, 364,1311 364, 364, 36 5, 365, 365, 365, 366, 366, 366, 367,1312 367, 36 8, 368, 368, 368, 368, 368, 369, 369, 369,1313 369, 369, 369, 3 70, 371, 371, 371, 372, 372, 373,1314 373 1273 235, 235, 236, 236, 236, 236, 236, 237, 237, 238, 1274 238, 238, 238, 239, 239, 239, 239, 240, 240, 240, 1275 240, 241, 241, 241, 242, 242, 242, 242, 243, 243, 1276 243, 244, 244, 245, 245, 246, 245, 245, 245, 247, 1277 247, 248, 248, 249, 249, 249, 249, 250, 250, 250, 1278 250, 251, 251, 252, 252, 252, 252, 252, 253, 253, 1279 254, 255, 256, 256, 257, 256, 258, 258, 259, 259, 1280 260, 260, 261, 261, 261, 261, 261, 262, 262, 262, 1281 262, 263, 263, 264, 264, 265, 265, 266, 266, 266, 1282 266, 267, 267, 267, 267, 267, 268, 268, 268, 268, 1283 268, 269, 269, 270, 270, 271, 271, 272, 272, 272, 1284 273, 273, 273, 274, 274, 274, 275, 275, 275, 276, 1285 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, 1286 279, 279, 279, 280, 280, 281, 281, 282, 282, 282, 1287 282, 282, 283, 283, 283, 283, 284, 284, 284, 285, 1288 286, 286, 288, 287, 287, 289, 289, 289, 290, 290, 1289 291, 291, 291, 292, 292, 292, 292, 293, 293, 293, 1290 294, 294, 295, 295, 296, 297, 296, 298, 298, 299, 1291 299, 300, 300, 300, 301, 301, 302, 302, 303, 303, 1292 304, 304, 305, 305, 305, 306, 305, 305, 307, 307, 1293 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 1294 309, 309, 309, 310, 311, 311, 312, 312, 313, 313, 1295 314, 315, 315, 316, 316, 316, 317, 317, 317, 317, 1296 318, 318, 318, 318, 319, 319, 320, 320, 320, 321, 1297 321, 321, 321, 322, 322, 323, 323, 323, 324, 324, 1298 324, 325, 325, 325, 326, 326, 326, 327, 327, 327, 1299 328, 328, 328, 329, 329, 329, 330, 330, 330, 331, 1300 331, 331, 331, 332, 332, 333, 333, 333, 334, 334, 1301 334, 334, 335, 335, 335, 336, 336, 336, 336, 337, 1302 337, 337, 338, 338, 338, 338, 339, 339, 339, 340, 1303 340, 340, 340, 341, 341, 342, 342, 342, 343, 343, 1304 344, 344, 345, 345, 345, 346, 346, 346, 346, 346, 1305 347, 347, 347, 347, 348, 348, 348, 349, 349, 349, 1306 350, 350, 350, 350, 351, 351, 351, 352, 352, 352, 1307 352, 352, 353, 353, 353, 353, 354, 354, 354, 355, 1308 355, 355, 356, 356, 356, 356, 356, 356, 357, 357, 1309 357, 358, 358, 358, 358, 358, 359, 359, 359, 359, 1310 360, 360, 361, 361, 361, 362, 362, 363, 363, 363, 1311 363, 363, 363, 364, 364, 364, 364, 364, 364, 364, 1312 364, 364, 364, 365, 365, 365, 365, 366, 366, 366, 1313 367, 367, 368, 368, 368, 368, 368, 368, 369, 369, 1314 369, 369, 369, 369, 370, 371, 371, 371, 372, 372, 1315 373, 373 1315 1316 }; 1316 1317 … … 1319 1320 { 1320 1321 0, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1321 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1322 3, 3, 1, 6, 4, 3, 7, 3, 7, 2, 1323 2, 7, 4, 1, 3, 0, 1, 1, 3, 1, 1324 3, 7, 3, 7, 1, 1, 1, 2, 2, 2, 1325 2, 2, 2, 4, 2, 4, 6, 1, 4, 4, 1326 1, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1327 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 1328 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1329 3, 1, 3, 1, 3, 1, 3, 1, 5, 4, 1330 5, 1, 1, 3, 2, 0, 1, 1, 1, 1, 1331 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 1332 6, 7, 1, 3, 1, 3, 0, 1, 1, 1, 1333 1, 1, 1, 1, 1, 1, 6, 4, 2, 7, 1334 1, 3, 1, 2, 1, 2, 1, 2, 2, 5, 1335 7, 5, 9, 5, 9, 1, 3, 1, 1, 3, 1336 3, 2, 1, 2, 2, 0, 1, 2, 3, 0, 1337 1, 2, 3, 3, 4, 0, 1, 1, 2, 5, 1338 7, 6, 6, 4, 3, 4, 2, 3, 2, 3, 1339 3, 3, 3, 5, 3, 3, 4, 1, 5, 6, 1340 5, 6, 9, 10, 9, 10, 2, 1, 2, 2, 1341 2, 1, 6, 8, 10, 12, 14, 0, 1, 0, 1342 1, 1, 3, 4, 7, 0, 1, 3, 1, 3, 1343 1, 1, 1, 3, 1, 1, 1, 3, 0, 1, 1344 3, 4, 1, 3, 1, 1, 3, 3, 3, 3, 1345 3, 2, 3, 6, 3, 3, 4, 1, 2, 2, 1346 3, 5, 8, 7, 7, 5, 9, 2, 2, 5, 1347 3, 5, 4, 3, 4, 4, 7, 3, 3, 3, 1348 3, 4, 6, 1, 1, 1, 1, 1, 1, 1, 1349 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1350 1, 1, 0, 5, 1, 2, 3, 1, 2, 1, 1322 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1323 1, 3, 3, 1, 6, 4, 3, 7, 3, 7, 1324 2, 2, 7, 4, 1, 3, 0, 1, 1, 3, 1325 1, 3, 7, 3, 7, 1, 1, 1, 2, 2, 1326 2, 2, 2, 2, 4, 2, 4, 6, 1, 4, 1327 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 1328 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1329 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1330 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1331 4, 5, 1, 1, 3, 2, 0, 1, 1, 1, 1351 1332 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1333 2, 5, 6, 7, 1, 3, 1, 3, 0, 1, 1334 1, 1, 1, 1, 1, 1, 1, 1, 6, 4, 1335 2, 7, 1, 3, 1, 2, 1, 2, 1, 2, 1336 2, 5, 7, 5, 9, 5, 9, 1, 3, 1, 1337 1, 3, 3, 2, 1, 2, 2, 0, 1, 2, 1338 3, 0, 1, 2, 3, 3, 4, 0, 1, 1, 1339 2, 5, 7, 6, 6, 4, 3, 4, 2, 3, 1340 2, 3, 3, 3, 3, 5, 3, 3, 4, 1, 1341 5, 6, 5, 6, 9, 10, 9, 10, 2, 1, 1342 2, 2, 2, 1, 6, 8, 10, 12, 14, 0, 1343 1, 0, 1, 1, 3, 4, 7, 0, 1, 3, 1344 1, 3, 1, 1, 1, 3, 1, 1, 1, 3, 1345 0, 1, 3, 4, 1, 3, 1, 1, 3, 3, 1346 3, 3, 3, 2, 3, 6, 3, 3, 4, 1, 1347 2, 2, 3, 5, 8, 7, 7, 5, 9, 2, 1348 2, 5, 3, 5, 4, 3, 4, 4, 7, 3, 1349 3, 3, 3, 4, 6, 1, 1, 1, 1, 1, 1350 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1351 1, 1, 1, 1, 0, 5, 1, 2, 3, 1, 1352 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1352 1353 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1353 1, 1, 2, 2, 3, 3, 1, 3, 1, 2, 1354 2, 2, 4, 4, 4, 4, 1, 2, 2, 3, 1355 1, 2, 2, 1, 2, 2, 3, 1, 2, 2, 1356 1, 1, 4, 2, 0, 6, 7, 2, 2, 2, 1357 0, 2, 2, 3, 2, 3, 1, 2, 3, 2, 1358 2, 4, 0, 1, 2, 2, 1, 0, 1, 2, 1359 2, 5, 2, 0, 7, 2, 4, 0, 2, 0, 1360 1, 1, 1, 5, 5, 5, 1, 5, 5, 9, 1361 1, 5, 0, 1, 1, 5, 1, 1, 5, 5, 1362 1, 3, 3, 4, 1, 1, 1, 1, 2, 1, 1363 3, 3, 1, 2, 1, 3, 1, 1, 1, 1, 1364 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1365 1, 2, 0, 2, 2, 1, 4, 0, 1, 2, 1366 3, 4, 2, 2, 1, 2, 2, 5, 5, 7, 1367 6, 1, 2, 2, 3, 1, 2, 2, 4, 2, 1368 4, 0, 4, 2, 1, 1, 1, 0, 2, 5, 1369 5, 13, 1, 1, 3, 3, 2, 3, 3, 2, 1370 4, 1, 6, 9, 0, 11, 1, 3, 3, 3, 1371 1, 1, 5, 2, 5, 0, 1, 1, 3, 0, 1372 1, 1, 1, 1, 0, 6, 2, 1, 2, 4, 1373 2, 3, 3, 3, 4, 5, 5, 5, 6, 1, 1374 1, 1, 3, 0, 5, 0, 1, 1, 2, 6, 1375 1, 3, 0, 1, 4, 1, 1, 1, 1, 2, 1354 1, 1, 1, 2, 2, 3, 3, 1, 3, 1, 1355 2, 2, 2, 4, 4, 4, 4, 1, 2, 2, 1356 3, 1, 2, 2, 1, 2, 2, 3, 1, 2, 1357 2, 1, 1, 4, 2, 0, 6, 7, 2, 2, 1358 2, 0, 2, 2, 3, 2, 3, 1, 2, 3, 1359 2, 2, 4, 0, 1, 2, 2, 1, 0, 1, 1360 2, 2, 5, 2, 0, 7, 2, 4, 0, 2, 1361 0, 1, 1, 1, 5, 5, 5, 1, 5, 5, 1362 9, 1, 5, 0, 1, 1, 5, 1, 1, 5, 1363 5, 1, 3, 3, 4, 1, 1, 1, 1, 2, 1364 1, 3, 3, 1, 2, 1, 3, 1, 1, 1, 1365 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1366 1, 1, 2, 0, 2, 2, 1, 4, 0, 1, 1367 2, 3, 4, 2, 2, 1, 2, 2, 5, 5, 1368 7, 6, 1, 2, 2, 3, 1, 2, 2, 4, 1369 2, 4, 0, 4, 2, 1, 1, 1, 0, 2, 1370 5, 5, 13, 1, 1, 3, 3, 2, 3, 3, 1371 2, 4, 1, 6, 9, 0, 11, 1, 3, 3, 1372 3, 1, 1, 5, 2, 5, 0, 1, 1, 3, 1373 0, 1, 1, 1, 1, 0, 6, 2, 1, 2, 1374 4, 2, 3, 3, 3, 4, 5, 5, 5, 6, 1375 1, 1, 1, 3, 0, 5, 0, 1, 1, 2, 1376 6, 1, 3, 0, 1, 4, 1, 1, 1, 1, 1377 2, 1, 2, 2, 1, 3, 2, 3, 3, 2, 1378 4, 4, 3, 8, 3, 2, 1, 2, 6, 8, 1379 3, 2, 3, 3, 4, 4, 3, 1, 1, 1, 1380 4, 6, 3, 2, 3, 3, 4, 4, 3, 2, 1376 1381 1, 2, 2, 1, 3, 2, 3, 3, 2, 4, 1377 4, 3, 8, 3, 2, 1, 2, 6, 8, 3, 1378 2, 3, 3, 4, 4, 3, 1, 1, 1, 4, 1379 6, 3, 2, 3, 3, 4, 4, 3, 2, 1, 1380 2, 2, 1, 3, 2, 3, 3, 2, 4, 4, 1381 3, 6, 8, 3, 2, 1, 2, 2, 2, 3, 1382 3, 2, 4, 4, 3, 6, 8, 3, 2, 1, 1383 2, 2, 1, 1, 2, 3, 3, 2, 4, 6, 1384 8, 1, 2, 2, 1, 2, 2, 3, 3, 1, 1385 4, 4, 3, 5, 8, 3, 2, 3, 1, 5, 1386 5, 6, 6, 1, 2, 2, 1, 2, 2, 3, 1387 3, 1, 4, 4, 3, 5, 8, 3, 1, 2, 1388 1, 2, 6, 5, 6, 7, 7, 1, 2, 2, 1389 1, 2, 2, 3, 3, 1, 4, 4, 3, 8, 1390 3, 1, 1, 2, 1, 1, 2, 3, 2, 3, 1391 2, 3, 3, 2, 4, 3, 2, 3, 2, 4, 1392 3, 2, 6, 6, 6, 7, 1, 2, 1, 1, 1393 1, 2, 3, 2, 3, 2, 3, 3, 4, 2, 1394 3, 4, 2, 5, 5, 6, 6, 0, 1, 0, 1395 2 1382 4, 3, 6, 8, 3, 2, 1, 2, 2, 2, 1383 3, 3, 2, 4, 4, 3, 6, 8, 3, 2, 1384 1, 2, 2, 1, 1, 2, 3, 3, 2, 4, 1385 6, 8, 1, 2, 2, 1, 2, 2, 3, 3, 1386 1, 4, 4, 3, 5, 8, 3, 2, 3, 1, 1387 5, 5, 6, 6, 1, 2, 2, 1, 2, 2, 1388 3, 3, 1, 4, 4, 3, 5, 8, 3, 1, 1389 2, 1, 2, 6, 5, 6, 7, 7, 1, 2, 1390 2, 1, 2, 2, 3, 3, 1, 4, 4, 3, 1391 8, 3, 1, 1, 2, 1, 1, 2, 3, 2, 1392 3, 2, 3, 3, 2, 4, 3, 2, 3, 2, 1393 4, 3, 2, 6, 6, 6, 7, 1, 2, 1, 1394 1, 1, 2, 3, 2, 3, 2, 3, 3, 4, 1395 2, 3, 4, 2, 5, 5, 6, 6, 0, 1, 1396 0, 2 1396 1397 }; 1397 1398 … … 1401 1402 static const yytype_uint16 yydefact[] = 1402 1403 { 1403 29 1, 291, 312, 310, 313, 311, 314, 315, 297, 299,1404 298, 0, 300, 326, 318, 323, 321, 322, 320, 319,1405 32 4, 325, 330, 327, 328, 329, 545, 545, 545, 0,1406 0, 0, 29 1, 217, 301, 316, 317, 7, 357, 0,1407 8, 14, 15, 0, 2, 6 0, 61, 563, 9, 291,1408 52 3, 521, 244, 3, 452, 3, 257, 0, 3, 3,1409 3, 24 5, 3, 0, 0, 0, 292, 293, 295, 291,1410 30 4, 307, 309, 338, 283, 331, 336, 284, 346, 285,1411 35 3, 350, 360, 0, 0, 361, 286, 471, 475, 3,1412 3, 0, 2, 517, 522, 527, 296, 0, 0, 545,1413 5 75, 545, 2, 586, 587, 588, 291, 0, 729, 730,1414 0, 12, 0, 13, 291, 267, 268, 0, 292, 287,1415 2 88, 289, 290, 524, 302, 390, 546, 547, 368, 369,1416 12, 443, 444, 11, 439, 442, 0, 501, 496, 487,1417 44 3, 444, 0, 0, 526, 218, 0, 291, 0, 0,1418 0, 0, 0, 0, 0, 0, 291, 291, 2, 0,1419 731, 292, 580, 592, 735, 728, 726, 733, 0, 0,1420 0, 251, 2, 0, 530, 437, 438, 436, 0, 0,1421 0, 0, 545, 0, 632, 633, 0, 0, 543, 539,1422 5 45, 560, 545, 545, 541, 2, 540, 545, 599, 545,1423 545, 602, 0, 0, 0, 291, 291, 310, 358, 2,1424 2 91, 258, 294, 305, 339, 351, 476, 0, 2, 0,1425 452, 259, 292, 332, 347, 354, 472, 0, 2,0,1426 3 08, 333, 340, 341, 0, 348, 352, 355, 359, 444,1427 291, 370, 363, 367, 0, 392, 473, 477, 0, 0,1428 0, 1, 291, 2, 528, 574, 576, 291, 2, 739,1429 292, 742, 543, 543, 0, 292, 0, 0, 270, 545,1430 541, 2, 291, 0, 0, 291, 548, 2, 499, 2,1431 552, 0, 0, 0, 0, 0, 0, 18, 57, 4,1432 5, 6, 16, 0, 0, 291, 2, 62, 63, 64,1433 65, 45, 19, 46, 22, 44, 66, 291, 0, 69,1434 7 3, 76, 79, 84, 87, 89, 91, 93, 95, 97,1435 10 2, 493, 749, 450, 492, 0, 448, 449, 0, 564,1436 5 79, 582, 585, 591, 594, 597, 357, 0, 2, 737,1437 0, 29 1, 740, 2, 60, 291, 3, 424, 0, 432,1438 29 2, 291, 304, 331, 284, 346, 353, 3, 3, 406,1439 41 0, 420, 425, 471, 291, 426, 704, 705, 291, 427,1440 4 29, 291, 2, 581, 593, 727, 2, 2, 246, 2,1441 45 7, 0, 455, 454, 453, 138, 2, 2, 248, 2,1442 2, 24 7, 2, 278, 2, 279, 0, 277, 0, 0,1443 0, 0, 0, 0, 0, 0, 0, 56 5, 604, 0,1444 45 2, 2, 559, 568, 658, 561, 562, 531, 291, 2,1445 59 8, 607, 600, 601, 0, 273, 291, 291, 337, 292,1446 0, 29 2, 0, 291, 732, 736, 734, 532, 291, 543,1447 25 2, 260, 306, 0, 2, 533, 291, 497, 334, 335,1448 28 0, 349, 356, 0, 291, 0, 747, 397, 0, 474,1449 49 8, 249, 250, 518, 291, 434, 0, 291, 234, 0,1450 2, 23 6, 0, 292, 0, 254, 2, 255, 275, 0,1451 0, 2, 29 1, 543, 291, 484, 486, 485, 0, 0,1452 7 49, 0, 291, 0, 291, 488, 291, 558, 556, 557,1453 55 5, 0, 550, 553, 0, 0, 291, 52, 291, 66,1454 4 7, 291, 54, 291, 291, 50, 51, 2, 124, 0,1455 0, 44 6, 0, 445, 726, 118, 291, 17, 0, 29,1456 3 0, 35, 2, 0, 35, 108, 109, 110, 111, 112,1457 11 3, 114, 115, 116, 117, 107, 0, 48, 49,0,1404 293, 293, 313, 311, 314, 312, 315, 316, 299, 301, 1405 300, 0, 302, 327, 319, 324, 322, 323, 321, 320, 1406 325, 326, 331, 328, 329, 330, 546, 546, 546, 0, 1407 0, 0, 293, 219, 303, 317, 318, 7, 358, 0, 1408 8, 14, 15, 0, 2, 61, 62, 564, 9, 293, 1409 524, 522, 246, 3, 453, 3, 259, 0, 3, 3, 1410 3, 247, 3, 0, 0, 0, 294, 295, 297, 293, 1411 306, 309, 339, 285, 332, 337, 286, 347, 287, 354, 1412 351, 361, 0, 0, 362, 288, 472, 476, 3, 3, 1413 0, 2, 518, 523, 528, 298, 0, 0, 546, 576, 1414 546, 2, 587, 588, 589, 293, 0, 730, 731, 0, 1415 12, 0, 13, 293, 269, 270, 0, 294, 289, 290, 1416 291, 292, 525, 304, 391, 547, 548, 369, 370, 12, 1417 444, 445, 11, 440, 443, 0, 502, 497, 488, 444, 1418 445, 0, 0, 527, 220, 0, 293, 0, 0, 0, 1419 0, 0, 0, 0, 0, 293, 293, 2, 0, 732, 1420 294, 581, 593, 736, 729, 727, 734, 0, 0, 0, 1421 253, 2, 0, 531, 438, 439, 437, 0, 0, 0, 1422 0, 546, 0, 633, 634, 0, 0, 544, 540, 546, 1423 561, 546, 546, 542, 2, 541, 546, 600, 546, 546, 1424 603, 0, 0, 0, 293, 293, 311, 359, 2, 293, 1425 260, 296, 307, 340, 352, 477, 0, 2, 0, 453, 1426 261, 294, 333, 348, 355, 473, 0, 2, 0, 310, 1427 334, 341, 342, 0, 349, 353, 356, 360, 445, 293, 1428 371, 364, 368, 0, 393, 474, 478, 0, 0, 0, 1429 1, 293, 2, 529, 575, 577, 293, 2, 740, 294, 1430 743, 544, 544, 0, 294, 0, 0, 272, 546, 542, 1431 2, 293, 0, 0, 293, 549, 2, 500, 2, 553, 1432 0, 0, 0, 0, 0, 0, 19, 58, 4, 5, 1433 6, 17, 0, 0, 293, 2, 63, 64, 65, 66, 1434 46, 20, 47, 16, 23, 45, 67, 293, 0, 70, 1435 74, 77, 80, 85, 88, 90, 92, 94, 96, 98, 1436 103, 494, 750, 451, 493, 0, 449, 450, 0, 565, 1437 580, 583, 586, 592, 595, 598, 358, 0, 2, 738, 1438 0, 293, 741, 2, 61, 293, 3, 425, 0, 433, 1439 294, 293, 306, 332, 286, 347, 354, 3, 3, 407, 1440 411, 421, 426, 472, 293, 427, 705, 706, 293, 428, 1441 430, 293, 2, 582, 594, 728, 2, 2, 248, 2, 1442 458, 0, 456, 455, 454, 140, 2, 2, 250, 2, 1443 2, 249, 2, 280, 2, 281, 0, 279, 0, 0, 1444 0, 0, 0, 0, 0, 0, 0, 566, 605, 0, 1445 453, 2, 560, 569, 659, 562, 563, 532, 293, 2, 1446 599, 608, 601, 602, 0, 275, 293, 293, 338, 294, 1447 0, 294, 0, 293, 733, 737, 735, 533, 293, 544, 1448 254, 262, 308, 0, 2, 534, 293, 498, 335, 336, 1449 282, 350, 357, 0, 293, 0, 748, 398, 0, 475, 1450 499, 251, 252, 519, 293, 435, 0, 293, 236, 0, 1451 2, 238, 0, 294, 0, 256, 2, 257, 277, 0, 1452 0, 2, 293, 544, 293, 485, 487, 486, 0, 0, 1453 750, 0, 293, 0, 293, 489, 293, 559, 557, 558, 1454 556, 0, 551, 554, 0, 0, 293, 53, 293, 67, 1455 48, 293, 55, 293, 293, 51, 52, 2, 126, 0, 1456 0, 447, 0, 446, 727, 120, 293, 18, 0, 30, 1457 31, 36, 2, 0, 36, 110, 111, 112, 113, 114, 1458 115, 116, 117, 118, 119, 109, 108, 0, 49, 50, 1458 1459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1459 0, 0, 0, 0, 0, 0, 0, 0, 0, 104,1460 2, 644, 451, 641, 545, 545, 649, 478, 291, 2,1461 583, 584, 0, 595, 596, 0, 2, 738, 741, 118,1462 291, 0, 2, 706, 292, 710, 701, 702, 708, 0,1463 2, 2, 666, 545, 749, 615, 545, 545, 749, 545,1464 629, 545, 545, 680, 433, 663, 545, 545, 671, 678,1465 291, 428, 292, 0, 0, 291, 716, 292, 721, 749,1466 7 13, 291, 718, 749, 291, 291, 291, 0, 118,0,1467 18, 2, 0, 19, 0, 458, 747, 0, 0, 464,1468 238, 0, 291, 0, 0, 0, 543, 567, 571, 573,1469 603, 606, 610, 613, 566, 605, 0, 281, 656, 0,1470 291, 274, 0, 0, 0, 0, 272, 2, 0, 256,1471 534, 291, 0, 0, 291, 2, 362, 382, 371, 0,1472 0, 376, 370, 748, 0, 0, 395, 0, 292, 3,1473 413, 3, 417, 416, 589, 0, 529, 291, 60, 3,1474 291, 432, 292, 3, 426, 427, 2, 0, 0, 0,1475 483, 303, 291, 479, 481, 3, 2, 2, 0, 500,1476 3, 0, 552, 126, 0, 0, 219, 0, 0, 0,1477 0, 36, 0, 0, 118, 291, 20, 0, 21, 0,1478 690, 695, 447, 687, 545, 545, 0, 105, 3, 2,1479 27, 0, 33, 0, 2, 25, 0, 103, 70, 71,1480 72, 7 4, 75, 77, 78, 82, 83, 80, 81, 85,1481 86, 8 8, 90, 92, 94, 96, 0, 0, 750, 291,1482 0, 0, 0, 645, 646, 642, 643, 495, 494, 291,1483 0, 291, 712, 291, 717, 292, 291, 660, 291, 291,1484 703, 659, 2, 291, 0, 0, 0, 0, 0, 0,1485 0, 0, 681, 0, 667, 618, 634, 668, 2, 614,1486 6 21, 430, 616, 617, 431, 2, 628, 637, 630, 631,1487 6 64, 665, 679, 707, 711, 709, 749, 265, 2, 743,1488 2, 421, 715, 720, 422, 0, 400, 3, 3, 3,1489 3, 452, 3, 0, 2, 466, 463, 748, 0, 459,1490 2, 462, 465, 0, 291, 239, 261, 3, 269, 271,1491 0, 452, 2, 569, 570, 2, 608, 609, 0, 657,1492 535, 3, 343, 342, 345, 344, 291, 536, 0, 537,1493 370, 0, 0, 291, 291, 0, 0, 690, 380, 383,1494 38 7, 545, 387, 386, 379, 372, 545, 374, 377, 291,1495 397, 391, 101, 398, 747, 0, 0, 435, 237, 0,1496 0, 3, 2, 666, 428, 0, 525, 0, 749, 487,1497 0, 291, 291, 291, 0, 549, 551, 127, 0, 0,1498 212, 0, 0, 0, 220, 221, 53, 0, 55, 58,1499 59, 0, 2, 125, 0, 0, 0, 691, 692, 688,1500 689, 457, 67, 68, 106, 122, 3, 105, 0, 0,1501 24, 35, 3, 0, 32, 99, 0, 3, 648, 652,1502 65 5, 647, 3, 590, 3, 714, 719, 2, 60, 291,1503 3, 3, 292, 0, 3, 620, 624, 627, 636, 670,1504 67 4, 677, 291, 3, 619, 635, 669, 291, 291, 423,1505 291, 291, 744, 0, 0, 0, 0, 253, 0, 101,1506 0, 3, 3, 0, 460, 0, 456, 0, 0, 242,1507 2 91, 0, 0, 126, 0, 0, 0, 0, 0, 126,1508 0, 0, 105, 105, 18, 2, 0, 0, 3, 128,1509 1 29, 2, 140, 130, 131, 132, 133, 134, 135, 142,1510 144, 0, 0, 0, 282, 291, 291, 545, 0, 538,1511 291, 373, 375, 0, 389, 691, 384, 388, 385, 378,1512 3 82, 365, 396, 0, 577, 2, 662, 661, 0, 667,1513 2, 480, 482, 502, 3, 510, 511, 0, 2, 506,1514 3, 3, 0, 0, 554, 219, 0, 0, 0, 219,1515 0, 0, 118, 694, 698, 700, 693, 747, 105, 0,1516 3, 659, 39, 3, 37, 34, 0, 3, 98, 100,1517 0, 2, 650, 651, 0, 0, 291, 0, 0, 0,1518 3, 636, 0, 2, 622, 623, 2, 638, 2, 672,1519 673, 0, 0, 60, 0, 3, 3, 3, 3, 408,1520 40 7, 411, 2, 2, 746, 745, 119, 0, 0, 0,1521 0, 3, 461, 3, 0, 240, 143, 3, 292, 291,1522 0, 0, 0, 0, 2, 0, 188, 0, 186, 0,1523 0, 0, 0, 0, 0, 0, 545, 118, 0, 148,1524 1 45, 291, 0, 0, 264, 276, 3, 3, 544, 611,1525 366, 381, 394, 291, 263, 291, 0, 513, 490, 291,1526 0, 0, 489, 504, 0, 0, 0, 213, 0, 222,1527 56, 2, 696, 697, 0, 123, 120, 0, 0, 0,1528 0, 0, 23, 0, 653, 291, 578, 262, 722, 723,1529 724, 0, 675, 291, 291, 291, 3, 3, 0, 683,1530 0, 0, 0, 0, 291, 291, 3, 542, 119, 468,1531 0, 0, 243, 292, 0, 0, 0, 0, 291, 189,1532 1 87, 184, 0, 190, 0, 0, 0, 0, 194, 197,1533 19 5, 191, 0, 192, 126, 35, 141, 139, 241, 0,1534 0, 415, 419, 418, 0, 507, 2, 508, 2, 509,1535 5 03, 291, 225, 0, 223, 0, 225, 291, 31, 121,1536 2, 42, 2, 40, 38, 28, 26, 3, 725, 3,1537 3, 3, 0, 0, 682, 684, 625, 639, 266, 2,1538 405, 3, 404, 0, 470, 467, 126, 0, 0, 126,1539 3, 0, 126, 185, 0, 2, 2, 206, 196, 0,1540 0, 0, 137, 0, 572, 612, 2, 0, 0, 2,1541 226, 0, 0, 214, 0, 3, 0, 0, 0, 0,1542 0, 0, 685, 686, 291, 0, 469, 149, 0, 0,1543 2, 162, 126, 151, 0, 179, 0, 126, 0, 2,1544 153, 0, 2, 0, 2, 2, 2, 193, 32, 291,1545 512, 514, 505, 0, 0, 0, 0, 0, 3, 3,1546 654, 626, 640, 676, 409, 126, 155, 158, 0, 157,1547 1 61, 3, 164, 163, 0, 126, 181, 126, 3, 0,1548 291, 0, 291, 0, 2, 0, 2, 136, 2, 227,1549 22 8, 0, 224, 215, 699, 0, 0, 150, 0, 0,1550 160, 230, 165, 2, 232, 180, 0, 183, 169, 198,1551 3, 207, 211, 200, 3, 0, 291, 0, 291, 0,1552 0, 0, 43, 41, 156, 159, 126, 0, 166, 291,1553 126, 126, 0, 170, 0, 0, 690, 208, 209, 210,1554 0, 199, 3, 201, 3, 291, 216, 229, 146, 167,1555 1 52, 126, 233, 182, 177, 175, 171, 154, 126, 0,1556 691, 0, 0, 0, 0, 147, 168, 178, 172, 176,1557 17 5, 173, 3, 3, 0, 0, 491, 174, 202, 204,1558 3, 3, 203, 2051460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1461 105, 2, 645, 452, 642, 546, 546, 650, 479, 293, 1462 2, 584, 585, 0, 596, 597, 0, 2, 739, 742, 1463 120, 293, 0, 2, 707, 294, 711, 702, 703, 709, 1464 0, 2, 2, 667, 546, 750, 616, 546, 546, 750, 1465 546, 630, 546, 546, 681, 434, 664, 546, 546, 672, 1466 679, 293, 429, 294, 0, 0, 293, 717, 294, 722, 1467 750, 714, 293, 719, 750, 293, 293, 293, 0, 120, 1468 0, 19, 2, 0, 20, 0, 459, 748, 0, 0, 1469 465, 240, 0, 293, 0, 0, 0, 544, 568, 572, 1470 574, 604, 607, 611, 614, 567, 606, 0, 283, 657, 1471 0, 293, 276, 0, 0, 0, 0, 274, 2, 0, 1472 258, 535, 293, 0, 0, 293, 2, 363, 383, 372, 1473 0, 0, 377, 371, 749, 0, 0, 396, 0, 294, 1474 3, 414, 3, 418, 417, 590, 0, 530, 293, 61, 1475 3, 293, 433, 294, 3, 427, 428, 2, 0, 0, 1476 0, 484, 305, 293, 480, 482, 3, 2, 2, 0, 1477 501, 3, 0, 553, 128, 0, 0, 221, 0, 0, 1478 0, 0, 37, 0, 0, 120, 293, 21, 0, 22, 1479 0, 691, 696, 448, 688, 546, 546, 0, 106, 3, 1480 2, 28, 0, 34, 0, 2, 26, 0, 104, 71, 1481 72, 73, 75, 76, 78, 79, 83, 84, 81, 82, 1482 86, 87, 89, 91, 93, 95, 97, 0, 0, 751, 1483 293, 0, 0, 0, 646, 647, 643, 644, 496, 495, 1484 293, 0, 293, 713, 293, 718, 294, 293, 661, 293, 1485 293, 704, 660, 2, 293, 0, 0, 0, 0, 0, 1486 0, 0, 0, 682, 0, 668, 619, 635, 669, 2, 1487 615, 622, 431, 617, 618, 432, 2, 629, 638, 631, 1488 632, 665, 666, 680, 708, 712, 710, 750, 267, 2, 1489 744, 2, 422, 716, 721, 423, 0, 401, 3, 3, 1490 3, 3, 453, 3, 0, 2, 467, 464, 749, 0, 1491 460, 2, 463, 466, 0, 293, 241, 263, 3, 271, 1492 273, 0, 453, 2, 570, 571, 2, 609, 610, 0, 1493 658, 536, 3, 344, 343, 346, 345, 293, 537, 0, 1494 538, 371, 0, 0, 293, 293, 0, 0, 691, 381, 1495 384, 388, 546, 388, 387, 380, 373, 546, 375, 378, 1496 293, 398, 392, 102, 399, 748, 0, 0, 436, 239, 1497 0, 0, 3, 2, 667, 429, 0, 526, 0, 750, 1498 488, 0, 293, 293, 293, 0, 550, 552, 129, 0, 1499 0, 214, 0, 0, 0, 222, 223, 54, 0, 56, 1500 59, 60, 0, 2, 127, 0, 0, 0, 692, 693, 1501 689, 690, 458, 68, 69, 107, 124, 3, 106, 0, 1502 0, 25, 36, 3, 0, 33, 100, 0, 3, 649, 1503 653, 656, 648, 3, 591, 3, 715, 720, 2, 61, 1504 293, 3, 3, 294, 0, 3, 621, 625, 628, 637, 1505 671, 675, 678, 293, 3, 620, 636, 670, 293, 293, 1506 424, 293, 293, 745, 0, 0, 0, 0, 255, 0, 1507 102, 0, 3, 3, 0, 461, 0, 457, 0, 0, 1508 244, 293, 0, 0, 128, 0, 0, 0, 0, 0, 1509 128, 0, 0, 106, 106, 19, 2, 0, 0, 3, 1510 130, 131, 2, 142, 132, 133, 134, 135, 136, 137, 1511 144, 146, 0, 0, 0, 284, 293, 293, 546, 0, 1512 539, 293, 374, 376, 0, 390, 692, 385, 389, 386, 1513 379, 383, 366, 397, 0, 578, 2, 663, 662, 0, 1514 668, 2, 481, 483, 503, 3, 511, 512, 0, 2, 1515 507, 3, 3, 0, 0, 555, 221, 0, 0, 0, 1516 221, 0, 0, 120, 695, 699, 701, 694, 748, 106, 1517 0, 3, 660, 40, 3, 38, 35, 0, 3, 99, 1518 101, 0, 2, 651, 652, 0, 0, 293, 0, 0, 1519 0, 3, 637, 0, 2, 623, 624, 2, 639, 2, 1520 673, 674, 0, 0, 61, 0, 3, 3, 3, 3, 1521 409, 408, 412, 2, 2, 747, 746, 121, 0, 0, 1522 0, 0, 3, 462, 3, 0, 242, 145, 3, 294, 1523 293, 0, 0, 0, 0, 2, 0, 190, 0, 188, 1524 0, 0, 0, 0, 0, 0, 0, 546, 120, 0, 1525 150, 147, 293, 0, 0, 266, 278, 3, 3, 545, 1526 612, 367, 382, 395, 293, 265, 293, 0, 514, 491, 1527 293, 0, 0, 490, 505, 0, 0, 0, 215, 0, 1528 224, 57, 2, 697, 698, 0, 125, 122, 0, 0, 1529 0, 0, 0, 24, 0, 654, 293, 579, 264, 723, 1530 724, 725, 0, 676, 293, 293, 293, 3, 3, 0, 1531 684, 0, 0, 0, 0, 293, 293, 3, 543, 121, 1532 469, 0, 0, 245, 294, 0, 0, 0, 0, 293, 1533 191, 189, 186, 0, 192, 0, 0, 0, 0, 196, 1534 199, 197, 193, 0, 194, 128, 36, 143, 141, 243, 1535 0, 0, 416, 420, 419, 0, 508, 2, 509, 2, 1536 510, 504, 293, 227, 0, 225, 0, 227, 293, 32, 1537 123, 2, 43, 2, 41, 39, 29, 27, 3, 726, 1538 3, 3, 3, 0, 0, 683, 685, 626, 640, 268, 1539 2, 406, 3, 405, 0, 471, 468, 128, 0, 0, 1540 128, 3, 0, 128, 187, 0, 2, 2, 208, 198, 1541 0, 0, 0, 139, 0, 573, 613, 2, 0, 0, 1542 2, 228, 0, 0, 216, 0, 3, 0, 0, 0, 1543 0, 0, 0, 686, 687, 293, 0, 470, 151, 0, 1544 0, 2, 164, 128, 153, 0, 181, 0, 128, 0, 1545 2, 155, 0, 2, 0, 2, 2, 2, 195, 33, 1546 293, 513, 515, 506, 0, 0, 0, 0, 0, 3, 1547 3, 655, 627, 641, 677, 410, 128, 157, 160, 0, 1548 159, 163, 3, 166, 165, 0, 128, 183, 128, 3, 1549 0, 293, 0, 293, 0, 2, 0, 2, 138, 2, 1550 229, 230, 0, 226, 217, 700, 0, 0, 152, 0, 1551 0, 162, 232, 167, 2, 234, 182, 0, 185, 171, 1552 200, 3, 209, 213, 202, 3, 0, 293, 0, 293, 1553 0, 0, 0, 44, 42, 158, 161, 128, 0, 168, 1554 293, 128, 128, 0, 172, 0, 0, 691, 210, 211, 1555 212, 0, 201, 3, 203, 3, 293, 218, 231, 148, 1556 169, 154, 128, 235, 184, 179, 177, 173, 156, 128, 1557 0, 692, 0, 0, 0, 0, 149, 170, 180, 174, 1558 178, 177, 175, 3, 3, 0, 0, 492, 176, 204, 1559 206, 3, 3, 205, 207 1559 1560 }; 1560 1561 … … 1562 1563 static const yytype_int16 yydefgoto[] = 1563 1564 { 1564 -1, 81 3, 468, 301, 47, 134, 135, 302, 303, 304,1565 30 5, 761, 762, 1133, 1134, 306, 381, 308, 309, 310,1566 31 1, 312, 313, 314, 315, 316, 317, 318, 319, 320,1567 1030, 518, 975, 546, 322, 976, 947, 1057, 1518, 1059,1568 1060, 1061, 1062, 1 519, 1063, 1064, 1437, 1438, 1401, 1402,1569 1403, 14 97, 1498, 1502, 1503, 1538, 1539, 1065, 1361, 1066,1570 1067, 1 298, 1299, 1300, 1480, 1068, 146, 953, 954, 955,1571 1381, 1461, 1472, 1473, 469, 470, 874, 875, 1038, 51,1572 5 2, 53, 54, 55, 347, 159, 58, 59, 60, 61,1573 6 2, 349, 64, 65, 265, 67, 68, 275, 351, 352,1574 71, 72, 73, 74, 119, 76, 205, 354, 120, 79,1575 12 1, 81, 82, 455, 83, 454, 688, 689, 690, 908,1576 108 6, 909, 84, 85, 458, 456, 696, 855, 856, 857,1577 85 8, 699, 700, 701, 359, 360, 361, 362, 466, 340,1578 13 6, 137, 522, 324, 171, 645, 646, 647, 648, 649,1579 8 6, 122, 88, 489, 490, 939, 491, 278, 495, 325,1580 8 9, 138, 139, 90, 1321, 1108, 1109, 1110, 1111, 91,1581 9 2, 717, 93, 274, 94, 95, 188, 1032, 679, 412,1582 12 6, 96, 501, 502, 503, 189, 269, 191, 192, 193,1583 2 70, 99, 100, 101, 102, 103, 104, 105, 196, 197,1584 19 8, 199, 200, 825, 605, 606, 607, 608, 201, 610,1585 61 1, 612, 572, 573, 574, 575, 751, 106, 614, 615,1586 61 6, 617, 618, 619, 968, 753, 754, 755, 595, 365,1587 366, 367, 368, 326, 16 5, 108, 109, 110, 370, 694,1588 5 691565 -1, 814, 468, 300, 47, 133, 134, 301, 302, 303, 1566 304, 305, 762, 763, 1134, 1135, 306, 381, 308, 309, 1567 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 1568 320, 1031, 518, 976, 547, 322, 977, 948, 1058, 1519, 1569 1060, 1061, 1062, 1063, 1520, 1064, 1065, 1438, 1439, 1402, 1570 1403, 1404, 1498, 1499, 1503, 1504, 1539, 1540, 1066, 1362, 1571 1067, 1068, 1299, 1300, 1301, 1481, 1069, 145, 954, 955, 1572 956, 1382, 1462, 1473, 1474, 469, 470, 875, 876, 1039, 1573 51, 52, 53, 54, 55, 347, 158, 58, 59, 60, 1574 61, 62, 349, 64, 65, 264, 67, 68, 274, 351, 1575 352, 71, 72, 73, 118, 75, 204, 354, 119, 78, 1576 120, 80, 81, 455, 82, 454, 689, 690, 691, 909, 1577 1087, 910, 83, 84, 458, 456, 697, 856, 857, 858, 1578 859, 700, 701, 702, 359, 360, 361, 362, 466, 340, 1579 135, 136, 522, 324, 170, 646, 647, 648, 649, 650, 1580 85, 121, 87, 489, 490, 940, 491, 277, 495, 325, 1581 88, 137, 138, 89, 1322, 1109, 1110, 1111, 1112, 90, 1582 91, 718, 92, 273, 93, 94, 187, 1033, 680, 412, 1583 125, 95, 501, 502, 503, 188, 268, 190, 191, 192, 1584 269, 98, 99, 100, 101, 102, 103, 104, 195, 196, 1585 197, 198, 199, 826, 606, 607, 608, 609, 200, 611, 1586 612, 613, 573, 574, 575, 576, 752, 105, 615, 616, 1587 617, 618, 619, 620, 969, 754, 755, 756, 596, 365, 1588 366, 367, 368, 326, 164, 107, 108, 109, 370, 695, 1589 570 1589 1590 }; 1590 1591 1591 1592 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1592 1593 STATE-NUM. */ 1593 #define YYPACT_NINF -13 101594 #define YYPACT_NINF -1323 1594 1595 static const yytype_int16 yypact[] = 1595 1596 { 1596 73 16, 8697, -1310, 16, -1310, -1310, -1310, -1310, -1310, -1310,1597 -13 10, 22, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,1598 -13 10, -1310, -1310, -1310, -1310, -1310, 101, 101, 101, 1152,1599 941, 64, 7548, 141, -1310, -1310, -1310, -1310, -1310, 87,1600 -13 10, -1310, -1310, 868, 134, -1310, -1310, -1310, -1310, 9158,1601 -13 10, -1310, -1310, -1310, 149, 144, -1310, 1337, -1310, -1310,1602 -13 10, -1310, 139, 935, 260, 102, 2892, -1310, -1310, 9196,1603 790, -1310, -1310, -1310, 904, 293, 5512, 547, 778, 904,1604 1166, -1310, -1310, 554, 624, -1310, 904, 1343, -1310, 187,1605 -1310, 308, 336, -1310, -1310, -1310, -1310, 251, 144, 101,1606 -1310, 101, -1310, -1310, -1310, -1310, 8923, 1337, -1310, -1310,1607 1337, -1310, 337, -1310, 9043, -1310, -1310, 1053, 9381, -1310,1608 1729, 1729, 1729, -1310, -1310, -1310, 101, -1310, -1310, -1310,1609 410, 413, 418, -1310, -1310, -1310, 433, -1310, -1310, -1310,1610 -13 10, -1310, 468, 477, -1310, -1310, 37, 8666, 2607, 742,1611 369, 496, 509, 523, 530, 535, 8584, 6836, 536, 546,1612 -1310, 9234, -1310, -1310, -1310, -1310, 561, -1310, 245, 4633,1613 4633, -1310, 562, 361, -1310, -1310, -1310, -1310, 574, 383,1614 408, 429, 101, 577, -1310, -1310, 935, 3015, 664, -1310,1615 86, -1310, 101, 101, 144, -1310, -1310, 89, -1310, 101,1616 101, -1310, 3541, 634, 653, 1729, 6748, -1310, -1310, 623,1617 9158, -1310, -1310, 904, -1310, -1310, -1310, 144, -1310, 1337,1618 149, -1310, 7737, -1310, 1729, 1729, 1729, 144, -1310, 1152,1619 -1310, 5996, -1310, -1310, 642, 1729, -1310, 1729, -1310, 87,1620 8666, -1310, 672, -1310, 941, 697, 1729, -1310, 1152, 699,1621 702, -1310, 7548, 567, -1310, -1310, -1310, 9125, -1310, -1310,1622 4167, -1310, 664, 10, 5116, 9381, 1053, 3541, -1310, 94,1623 -13 10, -1310, 9043, 1337, 715, 10741, -1310, -1310, 11, -1310,1624 10483, 740, 772, 10231, 759, 10288, 10307, -1310, 763, -1310,1625 -13 10, -1310, -1310, 10364, 10364, 8440, 765, -1310, -1310, -1310,1626 -13 10, -1310, -1310, 799, -1310, 616, 2256, 8779, 10288, -1310,1627 475, 860, 810, 276, 913, 766, 767, 793, 832, 41,1628 -13 10, -1310, 807, 704, -1310, 331, -1310, -1310, 2607, -1310,1629 -13 10, 242, 835, -1310, 421, 835, 841, 87, -1310, -1310,1630 846, 8923, -1310, 847, 857, 8892, -1310, -1310, 1352, 2069,1631 8 155, 6748, 904, -1310, 904, 1729, 1729, -1310, -1310, -1310,1632 -13 10, -1310, -1310, 1729, 8923, 1337, -1310, -1310, 9419, 1457,1633 -13 10, 7886, -1310, -1310, -1310, -1310, -1310, -1310, -1310, 875,1634 10098, 10288, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,1635 -13 10, -1310, -1310, -1310, -1310, -1310, 1053, -1310, 928, 862,1636 891, 893, 1023, 916, 937, 951, 3015, -1310, -1310, 942,1637 149, 958, -1310, -1310, 970, -1310, -1310, -1310, 9125, -1310,1638 -13 10, -1310, -1310, -1310, 3541, -1310, 8666, 8666, -1310, 1729,1639 1 053, 6867, 1337, 8228, -1310, -1310, -1310, -1310, 9125, 10,1640 -13 10, -1310, 904, 144, -1310, -1310, 9125, -1310, 6513, -1310,1641 -13 10, 1729, 1729, 382, 5342, 969, 972, 960, 1031, 1729,1642 -13 10, -1310, -1310, -1310, 9605, -1310, 450, 6629, -1310, 144,1643 10 33, -1310, 1053, 10565, 10155, -1310, -1310, -1310, -1310, 1039,1644 3541, -1310, 8301, 664, 7432, -1310, -1310, -1310, 984, 626,1645 807, 941, 10741, 606, 9043, -1310, 10741, -1310, -1310, -1310,1646 -13 10, 690, -1310, 1044, 772, 255, 8440, -1310, 9457, -1310,1647 -13 10, 8440, -1310, 8553, 8440, -1310, -1310, 1042, -1310, 722,1648 10 47, 818, 1048, -1310, -1310, 9310, 6479, -1310, 321, -1310,1649 -13 10, 5116, -1310, 602, 5116, -1310, -1310, -1310, -1310, -1310,1650 -13 10, -1310, -1310, -1310, -1310, -1310, 5116, -1310, -1310, 10288,1651 10 288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288,1652 10 288, 10288, 10288, 10288, 10288, 10288, 10288, 2426, 5116, -1310,1653 704, 830, -1310, -1310, 101, 101, -1310, -1310, 8666, -1310,1654 -13 10, 970, 567, -1310, 970, 10212, -1310, -1310, -1310, 4524,1655 6479, 1049, 1054, -1310, 9381, -1310, -1310, 561, -1310, 1056,1656 774, 1073, 2515, 95, 807, -1310, 101, 101, 807, 98,1657 -1310, 101, 101, 970, -1310, -1310, 101, 101, -1310, 835,1658 9490, 1337, 10710, 283, 326, 9490, -1310, 4167, -1310, 807,1659 -1310, 8923, -1310, 80, 7852, 7852, 7852, 1337, -1310, 4787,1660 1065, 875, 744, 1066, 1067, -1310, 1070, 4633, 333, -1310,1661 1134, 1337, 7852, 567, 1053, 567, 664, 494, 835, -1310,1662 -13 10, 584, 835, -1310, -1310, -1310, 772, -1310, 835, 144,1663 9605, -1310, 737, 1083, 750, 1090, -1310, 1089, 144, -1310,1664 -13 10, 9125, 144, 1088, 9457, 1092, -1310, 1677, -1310, 441,1665 448, 941, -1310, 941, 1091, 10288, -1310, 941, 10710, -1310,1666 -13 10, 1098, -1310, -1310, -1310, 567, -1310, 10638, 857, -1310,1667 7852, 853, 8155, -1310, -1310, 561, 1095, 1097, 984, 3316,1668 -1310, -1310, 10741, -1310, -1310, 1099, -1310, -1310, 1105, -1310,1669 1099, 1111, 10483, 5116, 62, 1102, 167, 1113, 1121, 1129,1670 11 30, -1310, 1131, 1132, 9348, 6598, -1310, 5116, -1310, 818,1671 978, -1310, -1310, -1310, 101, 101, 5540, 5116, 1135, -1310,1672 -13 10, 757, -1310, 5116, -1310, -1310, 914, -1310, -1310, -1310,1673 -13 10, 475, 475, 860, 860, 810, 810, 810, 810, 276,1674 276, 913, 766, 767, 793, 832, 10288, 282, -1310, 9605,1675 1136, 1137, 1140, 830, -1310, -1310, -1310, -1310, -1310, 9605,1676 779, 7852, -1310, 8923, -1310, 6955, 9005, -1310, 7886, 6836,1677 -1310, -1310, 774, 9605, 1063, 1142, 1143, 1145, 1146, 1147,1678 114 8, 1154, -1310, 3759, 2515, -1310, -1310, -1310, -1310, -1310,1679 -13 10, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,1680 -13 10, -1310, 970, -1310, -1310, -1310, 807, -1310, -1310, -1310,1681 -13 10, -1310, -1310, -1310, -1310, 1156, -1310, 1159, 1160, -1310,1682 -13 10, 149, 1135, 4787, -1310, -1310, -1310, 10098, 1157, -1310,1683 -13 10, -1310, -1310, 941, 6225, 1247, -1310, -1310, -1310, -1310,1684 1150, 149, -1310, -1310, 970, -1310, -1310, 970, 137, 970,1685 -1310, -1310, -1310, -1310, -1310, -1310, 9272, -1310, 144, -1310,1686 -13 10, 451, 452, 9419, 7074, 2178, 10288, 3429, -1310, -1310,1687 1149, 39, 1149, -1310, 941, -1310, 101, -1310, -1310, 8073,1688 960, -1310, -1310, -1310, 972, 1168, 1169, -1310, -1310, 1170,1689 117 2, -1310, 853, 1305, -1310, 359, -1310, 3316, 807, -1310,1690 1177, 10741, 9528, 8666, 1180, -1310, -1310, 1175, 1182, 1164,1691 -1310, 10288, 56, 233, 1179, -1310, 1183, 567, 1183, -1310,1692 -13 10, 1183, 1184, -1310, 1189, 1190, 1192, 978, -1310, -1310,1693 -13 10, 10098, -1310, -1310, -1310, -1310, 1188, 5116, 1193, 567,1694 -1310, 5116, -1310, 567, -1310, -1310, 5116, -1310, 595, 835,1695 -1310, -1310, -1310, -1310, -1310, -1310, -1310, 875, 857, 8892,1696 -1310, -1310, 7193, 1196, -1310, 622, 835, -1310, 644, 649,1697 8 35, -1310, 1729, 4053, -1310, -1310, -1310, 9605, 9605, -1310,1698 8228, 8228, -1310, 1194, 1195, 1198, 1199, -1310, 1200, 531,1699 27, 1135, -1310, 567, -1310, 4633, -1310, 5116, 453, -1310,1700 6359, 1213, 1217, 10041, 1222, 1223, 43, 49, 106, 5116,1701 1228, 144, 5116, 5116, 1208, 1237, 142, 1218, -1310, -1310,1702 -13 10, 1236, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,1703 -13 10, 941, 1249, 5116, -1310, 9605, 9605, 101, 1252, -1310,1704 8810, -1310, -1310, 987, -1310, 3429, -1310, -1310, -1310, -1310,1705 1677, -1310, -1310, 1253, -1310, -1310, -1310, -1310, 1254, 1305,1706 -1310, -1310, 1239, -1310, 1099, -1310, -1310, 1053, 1258, -1310,1707 -13 10, -1310, 806, 1262, -1310, 167, 1267, 10288, 1248, 167,1708 167, 1273, 9310, 693, 835, -1310, -1310, 1070, 5116, 1274,1709 1 188, 208, 157, 1269, -1310, -1310, 1278, 1269, -1310, -1310,1710 1282, -1310, -1310, 970, 1286, 1288, 6717, 1287, 1289, 1291,1711 -1310, -1310, 1290, -1310, -1310, 970, -1310, -1310, -1310, -1310,1712 970, 5116, 5116, 857, 1292, -1310, -1310, -1310, -1310, -1310,1713 -13 10, -1310, -1310, -1310, -1310, -1310, -1310, 10288, 10288, 1294,1714 1 295, 1269, -1310, -1310, 941, -1310, -1310, -1310, 5073, 9528,1715 5116, 5116, 1370, 5116, -1310, 1298, -1310, 1299, -1310, 1302,1716 5116, 1306, 5116, 1123, 1307, 30, 101, 5821, 1435, -1310,1717 -13 10, 6225, 1303, 456, -1310, -1310, -1310, -1310, -1310, -1310,1718 -13 10, -1310, -1310, 9861, -1310, 8301, 1330, -1310, -1310, 9528,1719 463, 481, -1310, 1328, 1314, 772, 1341, -1310, 306, -1310,1720 -13 10, -1310, -1310, 970, 1332, -1310, -1310, 1342, 753, 834,1721 5 67, 1345, -1310, 1350, -1310, 9605, -1310, -1310, -1310, -1310,1722 -13 10, 1351, -1310, 9605, 9605, 9605, -1310, -1310, 1359, -1310,1723 1362, 1365, 1366, 557, 7925, 8040, -1310, -1310, 420, -1310,1724 1368, 1371, -1310, 8374, 815, 844, 1346, 866, 6094, -1310,1725 -13 10, -1310, 485, -1310, 888, 1369, 1375, 144, 1417, 1051,1726 -1310, -1310, 5116, -1310, 10041, 5116, -1310, -1310, -1310, 1377,1727 137 9, -1310, -1310, -1310, 1376, -1310, -1310, -1310, -1310, -1310,1728 -13 10, 9528, 772, 195, -1310, 1353, 772, 9605, -1310, -1310,1729 -13 10, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,1730 -13 10, -1310, 1384, 1388, -1310, -1310, -1310, -1310, -1310, -1310,1731 -13 10, 1394, -1310, 1397, -1310, -1310, 10041, 217, 5116, 10041,1732 -1310, 1400, 5116, -1310, 289, 1421, 1423, -1310, -1310, 1403,1733 1 415, 1393, -1310, 1001, -1310, -1310, -1310, 1337, 1053, 1412,1734 799, 323, 10288, -1310, 953, -1310, 567, 567, 1418, 1425,1735 14 26, 1428, -1310, -1310, 8228, 1427, -1310, 1497, 10288, 1420,1736 -1310, -1310, 9953, -1310, 955, -1310, 1419, 10041, 1424, -1310,1737 -13 10, 1442, -1310, 1445, -1310, 1461, 1462, -1310, 1430, 9528,1738 -1310, -1310, -1310, 772, 567, 1453, 1436, 1459, 1269, 1269,1739 -1310, -1310, -1310, -1310, -1310, 10041, 204, -1310, 370, -1310,1740 -13 10, 3684, -1310, -1310, 1439, 5116, -1310, 5116, 3684, 144,1741 9457, 144, 9457, 1463, -1310, 1465, -1310, -1310, 1464, 799,1742 -13 10, 968, -1310, -1310, -1310, 1460, 1466, -1310, 10288, 10288,1743 -1310, -1310, 1075, 122, -1310, -1310, 1444, -1310, 1075, -1310,1744 -13 10, 2191, 567, -1310, -1310, 144, 9457, 144, 9457, 1472,1745 145 0, 567, -1310, -1310, -1310, -1310, 9953, 1469, 1075, 7664,1746 5116, 9865, 1470, 1075, 1479, 2191, 3509, -1310, -1310, -1310,1747 1482, -1310, -1310, -1310, -1310, 8666, -1310, -1310, -1310, 9732,1748 -1310, 9953, -1310, -1310, 1468, 9644, -1310, -1310, 9865, 144,1749 3509, 144, 1484, 1486, 976, -1310, 9732, -1310, -1310, -1310,1750 9644, -1310, -1310, -1310, 144, 144, -1310, -1310, -1310, -1310,1751 -13 10, -1310, -1310, -13101597 7329, 8828, -1323, 37, -1323, -1323, -1323, -1323, -1323, -1323, 1598 -1323, 109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 1599 -1323, -1323, -1323, -1323, -1323, -1323, 85, 85, 85, 873, 1600 733, 178, 7561, 370, -1323, -1323, -1323, -1323, -1323, 191, 1601 -1323, -1323, -1323, 614, 225, -1323, -1323, -1323, -1323, 4615, 1602 -1323, -1323, -1323, -1323, 229, 285, -1323, 934, -1323, -1323, 1603 -1323, -1323, 435, 1196, 579, 110, 7677, -1323, -1323, 4858, 1604 1038, -1323, -1323, 580, 596, 6761, 1021, 875, 580, 1103, 1605 -1323, -1323, 1317, 308, -1323, 580, 1224, -1323, 495, -1323, 1606 616, 623, -1323, -1323, -1323, -1323, 547, 285, 85, -1323, 1607 85, -1323, -1323, -1323, -1323, 9174, 934, -1323, -1323, 934, 1608 -1323, 551, -1323, 9403, -1323, -1323, 1899, 9436, -1323, 844, 1609 844, 844, -1323, -1323, -1323, 85, -1323, -1323, -1323, 584, 1610 608, 632, -1323, -1323, -1323, 646, -1323, -1323, -1323, -1323, 1611 -1323, 664, 687, -1323, -1323, -28, 8797, 2908, 117, 701, 1612 717, 726, 771, 786, 799, 8715, 6849, 731, 757, -1323, 1613 5600, -1323, -1323, -1323, -1323, 804, -1323, 223, 5225, 5225, 1614 -1323, 802, 365, -1323, -1323, -1323, -1323, 816, 443, 480, 1615 534, 85, 827, -1323, -1323, 1196, 4341, 868, -1323, 50, 1616 -1323, 85, 85, 285, -1323, -1323, 61, -1323, 85, 85, 1617 -1323, 4647, 857, 864, 844, 6523, -1323, -1323, 869, 4615, 1618 -1323, -1323, 580, -1323, -1323, -1323, 285, -1323, 934, 229, 1619 -1323, 7868, -1323, 844, 844, 844, 285, -1323, 873, -1323, 1620 5676, -1323, -1323, 852, 844, -1323, 844, -1323, 191, 8797, 1621 -1323, 884, -1323, 733, 890, 844, -1323, 873, 888, 892, 1622 -1323, 7561, 631, -1323, -1323, -1323, 9256, -1323, -1323, 9621, 1623 -1323, 868, 151, 10214, 9436, 1899, 4647, -1323, 88, -1323, 1624 -1323, 9403, 934, 891, 7708, -1323, -1323, 347, -1323, 10561, 1625 922, 956, 10347, 945, 10366, 10423, -1323, 954, -1323, -1323, 1626 -1323, -1323, 10442, 10442, 8571, 952, -1323, -1323, -1323, -1323, 1627 -1323, -1323, -1323, 988, -1323, 966, 1946, 8910, 10366, -1323, 1628 756, 338, 485, 411, 635, 955, 947, 957, 984, 237, 1629 -1323, -1323, 962, 647, -1323, 302, -1323, -1323, 2908, -1323, 1630 -1323, 235, 985, -1323, 312, 985, 989, 191, -1323, -1323, 1631 990, 9174, -1323, 999, 1006, 9023, -1323, -1323, 1335, 2030, 1632 8286, 6523, 580, -1323, 580, 844, 844, -1323, -1323, -1323, 1633 -1323, -1323, -1323, 844, 9174, 934, -1323, -1323, 9474, 1575, 1634 -1323, 8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 1008, 1635 5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 1636 -1323, -1323, -1323, -1323, -1323, -1323, 1899, -1323, 973, 991, 1637 992, 1012, 978, 1017, 1018, 1020, 4341, -1323, -1323, 1029, 1638 229, 1031, -1323, -1323, 1033, -1323, -1323, -1323, 9256, -1323, 1639 -1323, -1323, -1323, -1323, 4647, -1323, 8797, 8797, -1323, 844, 1640 1899, 6642, 934, 8359, -1323, -1323, -1323, -1323, 9256, 151, 1641 -1323, -1323, 580, 285, -1323, -1323, 9256, -1323, 5770, -1323, 1642 -1323, 844, 844, 337, 8204, 1032, 1036, 1023, 1042, 844, 1643 -1323, -1323, -1323, -1323, 9660, -1323, 367, 6404, -1323, 285, 1644 1044, -1323, 1899, 10643, 10271, -1323, -1323, -1323, -1323, 1015, 1645 4647, -1323, 8432, 868, 7445, -1323, -1323, -1323, 843, 436, 1646 962, 733, 7708, 1341, 9403, -1323, 7708, -1323, -1323, -1323, 1647 -1323, 508, -1323, 1051, 956, 248, 8571, -1323, 9512, -1323, 1648 -1323, 8571, -1323, 8684, 8571, -1323, -1323, 1049, -1323, 606, 1649 1057, 682, 1059, -1323, -1323, 3527, 6492, -1323, 362, -1323, 1650 -1323, 10214, -1323, 368, 10214, -1323, -1323, -1323, -1323, -1323, 1651 -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323, 1652 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 1653 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 3593, 10214, 1654 -1323, 647, 1677, -1323, -1323, 85, 85, -1323, -1323, 8797, 1655 -1323, -1323, 1033, 631, -1323, 1033, 10290, -1323, -1323, -1323, 1656 5046, 6492, 1060, 1063, -1323, 9436, -1323, -1323, 804, -1323, 1657 1067, 750, 1068, 2627, 125, 962, -1323, 85, 85, 962, 1658 132, -1323, 85, 85, 1033, -1323, -1323, 85, 85, -1323, 1659 985, 9545, 934, 10788, 532, 656, 9545, -1323, 9621, -1323, 1660 962, -1323, 9174, -1323, 238, 7983, 7983, 7983, 934, -1323, 1661 5791, 1047, 1008, 493, 1058, 1061, -1323, 1076, 5225, 528, 1662 -1323, 1165, 934, 7983, 631, 1899, 631, 868, 430, 985, 1663 -1323, -1323, 536, 985, -1323, -1323, -1323, 956, -1323, 985, 1664 285, 9660, -1323, 619, 1086, 633, 1088, -1323, 1087, 285, 1665 -1323, -1323, 9256, 285, 1089, 9512, 1092, -1323, 1065, -1323, 1666 538, 552, 733, -1323, 733, 1085, 10366, -1323, 733, 10788, 1667 -1323, -1323, 1096, -1323, -1323, -1323, 631, -1323, 10716, 1006, 1668 -1323, 7983, 703, 8286, -1323, -1323, 804, 1095, 1098, 843, 1669 5016, -1323, -1323, 7708, -1323, -1323, 1091, -1323, -1323, 1102, 1670 -1323, 1091, 1104, 10561, 10214, 1090, 1093, 94, 1109, 1107, 1671 1111, 1114, -1323, 1118, 1129, 9365, 6611, -1323, 10214, -1323, 1672 682, 1717, -1323, -1323, -1323, 85, 85, 10157, 10214, 1125, 1673 -1323, -1323, 653, -1323, 10214, -1323, -1323, 736, -1323, -1323, 1674 -1323, -1323, 756, 756, 338, 338, 485, 485, 485, 485, 1675 411, 411, 635, 955, 947, 957, 984, 10366, 260, -1323, 1676 9660, 1132, 1136, 1137, 1677, -1323, -1323, -1323, -1323, -1323, 1677 9660, 708, 7983, -1323, 9174, -1323, 6968, 9136, -1323, 8017, 1678 6849, -1323, -1323, 750, 9660, 1022, 1140, 1141, 1142, 1143, 1679 1146, 1149, 1154, -1323, 3715, 2627, -1323, -1323, -1323, -1323, 1680 -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 1681 -1323, -1323, -1323, 1033, -1323, -1323, -1323, 962, -1323, -1323, 1682 -1323, -1323, -1323, -1323, -1323, -1323, 1155, -1323, 1157, 1159, 1683 -1323, -1323, 229, 1125, 5791, -1323, -1323, -1323, 5958, 1158, 1684 -1323, -1323, -1323, -1323, 733, 6174, 1248, -1323, -1323, -1323, 1685 -1323, 1151, 229, -1323, -1323, 1033, -1323, -1323, 1033, 84, 1686 1033, -1323, -1323, -1323, -1323, -1323, -1323, 9327, -1323, 285, 1687 -1323, -1323, 559, 562, 9474, 7087, 2137, 10366, 3114, -1323, 1688 -1323, 1156, 51, 1156, -1323, 733, -1323, 85, -1323, -1323, 1689 8941, 1023, -1323, -1323, -1323, 1036, 1175, 1171, -1323, -1323, 1690 1178, 1181, -1323, 703, 1901, -1323, 672, -1323, 5016, 962, 1691 -1323, 1184, 7708, 9583, 8797, 1185, -1323, -1323, 1180, 1187, 1692 1170, -1323, 10366, 1197, 326, 1194, -1323, 1202, 631, 1202, 1693 -1323, -1323, 1202, 1199, -1323, 1208, 1210, 1211, 1717, -1323, 1694 -1323, -1323, 5958, -1323, -1323, -1323, -1323, 1209, 10214, 1212, 1695 631, -1323, 10214, -1323, 631, -1323, -1323, 10214, -1323, 558, 1696 985, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 1008, 1006, 1697 9023, -1323, -1323, 7206, 1218, -1323, 674, 985, -1323, 813, 1698 861, 985, -1323, 844, 4029, -1323, -1323, -1323, 9660, 9660, 1699 -1323, 8359, 8359, -1323, 1215, 1216, 1225, 1230, -1323, 1232, 1700 685, 82, 1125, -1323, 631, -1323, 5225, -1323, 10214, 564, 1701 -1323, 6373, 1236, 1240, 10100, 1242, 1243, 70, 79, 96, 1702 10214, 1244, 285, 10214, 10214, 1227, 1249, 522, 1222, -1323, 1703 -1323, -1323, 1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 1704 -1323, -1323, 733, 1254, 10214, -1323, 9660, 9660, 85, 1257, 1705 -1323, 9054, -1323, -1323, 752, -1323, 3114, -1323, -1323, -1323, 1706 -1323, 1065, -1323, -1323, 1255, -1323, -1323, -1323, -1323, 1258, 1707 1901, -1323, -1323, 1245, -1323, 1091, -1323, -1323, 1899, 1260, 1708 -1323, -1323, -1323, 713, 1264, -1323, 94, 1269, 10366, 1252, 1709 94, 94, 1262, 3527, 879, 985, -1323, -1323, 1076, 10214, 1710 1273, 1209, 358, 204, 1270, -1323, -1323, 1275, 1270, -1323, 1711 -1323, 1278, -1323, -1323, 1033, 1280, 1284, 6730, 1285, 1290, 1712 1291, -1323, -1323, 1286, -1323, -1323, 1033, -1323, -1323, -1323, 1713 -1323, 1033, 10214, 10214, 1006, 1294, -1323, -1323, -1323, -1323, 1714 -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366, 1715 1300, 1302, 1270, -1323, -1323, 733, -1323, -1323, -1323, 5213, 1716 9583, 10214, 10214, 1374, 10214, -1323, 1295, -1323, 1296, -1323, 1717 1297, 10214, 1301, 10214, 1105, 1304, 12, 85, 9289, 1625, 1718 -1323, -1323, 6174, 1322, 573, -1323, -1323, -1323, -1323, -1323, 1719 -1323, -1323, -1323, -1323, 9920, -1323, 8432, 1330, -1323, -1323, 1720 9583, 576, 602, -1323, 1331, 1315, 956, 1337, -1323, 329, 1721 -1323, -1323, -1323, -1323, 1033, 1339, -1323, -1323, 1320, 486, 1722 509, 631, 1340, -1323, 1344, -1323, 9660, -1323, -1323, -1323, 1723 -1323, -1323, 1347, -1323, 9660, 9660, 9660, -1323, -1323, 1348, 1724 -1323, 1351, 1354, 1355, 716, 8056, 8171, -1323, -1323, 529, 1725 -1323, 1357, 1362, -1323, 8505, 721, 730, 1358, 761, 3837, 1726 -1323, -1323, -1323, 605, -1323, 766, 1366, 1367, 285, 1419, 1727 834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323, 1728 1370, 1375, -1323, -1323, -1323, 1372, -1323, -1323, -1323, -1323, 1729 -1323, -1323, 9583, 956, 1379, -1323, 1352, 956, 9660, -1323, 1730 -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 1731 -1323, -1323, -1323, 1378, 1382, -1323, -1323, -1323, -1323, -1323, 1732 -1323, -1323, 1387, -1323, 1386, -1323, -1323, 10100, 289, 10214, 1733 10100, -1323, 1389, 10214, -1323, 318, 1405, 1406, -1323, -1323, 1734 1399, 1400, 1380, -1323, 821, -1323, -1323, -1323, 934, 1899, 1735 1396, -1323, 402, 10366, -1323, 785, -1323, 631, 631, 1407, 1736 1408, 1413, 1415, -1323, -1323, 8359, 1414, -1323, 1490, 10366, 1737 1385, -1323, -1323, 10012, -1323, 800, -1323, 1402, 10100, 1403, 1738 -1323, -1323, 1426, -1323, 1427, -1323, 1445, 1446, -1323, 1411, 1739 9583, -1323, -1323, -1323, 956, 631, 1434, 1417, 1435, 1270, 1740 1270, -1323, -1323, -1323, -1323, -1323, 10100, 107, -1323, 433, 1741 -1323, -1323, 7793, -1323, -1323, 1418, 10214, -1323, 10214, 7793, 1742 285, 9512, 285, 9512, 1436, -1323, 1442, -1323, -1323, 1440, 1743 -1323, -1323, 825, -1323, -1323, -1323, 1444, 1449, -1323, 10366, 1744 10366, -1323, -1323, 909, 211, -1323, -1323, 1425, -1323, 909, 1745 -1323, -1323, 2166, 631, -1323, -1323, 285, 9512, 285, 9512, 1746 1453, 1431, 631, -1323, -1323, -1323, -1323, 10012, 1443, 909, 1747 6091, 10214, 9924, 1452, 909, 1454, 2166, 3344, -1323, -1323, 1748 -1323, 1458, -1323, -1323, -1323, -1323, 8797, -1323, -1323, -1323, 1749 9791, -1323, 10012, -1323, -1323, 1438, 9703, -1323, -1323, 9924, 1750 285, 3344, 285, 1464, 1466, 853, -1323, 9791, -1323, -1323, 1751 -1323, 9703, -1323, -1323, -1323, 285, 285, -1323, -1323, -1323, 1752 -1323, -1323, -1323, -1323, -1323 1752 1753 }; 1753 1754 … … 1755 1756 static const yytype_int16 yypgoto[] = 1756 1757 { 1757 -13 10, 4585, 3220, -1310, 1680, -1310, 79, 965, -162, -1310,1758 542, -525, -472, -928, -58, 5006, 0, -1310, 115, 571,1759 588, 220, 578, 1041, 1045, 1037, 1040, 1043, -1310, 682,1760 - 568, 4467, -949, -1310, -743, 627, -136, -680, 399, -1310,1761 364, -1310, 400, -1052, -1310, -1310, 143, -1310, -1280, -1058,1762 249, -1310, -1310, -1310, -1310, 74, -1199, -1310, -1310, -1310,1763 -13 10, -1310, -1310, 317, -1213, 36, -1310, -398, -1310, 501,1764 296, -1310, 175, -1310, -322, -1310, -1310, -1310, 558, -827,1765 -1310, -1310, 14, -963, 60, 1949, -1310, -1310, -1310, -66,1766 -1310, 19, 1219, -202, 1852, 4238, -1310, -1310, 54, 75,1767 689, -242, 1416, -1310, 1975, -1310, -1310, 158, 2131, -1310,1768 2 701, 1038, -1310, -1310, -1310, -621, -1310, 944, 946, 541,1769 713, -254, -1310, -1310, -1310, 938, 714, -169, -1310, -117,1770 -134, 1167, -1310, -1310, -857, -878, 837, 910, 1055, 25,1771 -13 10, 900, 597, -39, -190, -145, 668, 773, -1310, 993,1772 -13 10, 2728, 1561, -434, 920, -1310, -1310, 708, -1310, -238,1773 -13 10, 241, -1310, -1310, -1310, -1226, 414, -1310, -1310, -1310,1774 11 65, -1310, 35, -1310, -1310, -830, -111, -1309, -151, 3288,1775 -13 10, 3069, -1310, 921, -1310, -170, 169, -182, -181, -166,1776 7, - 35, -33, -32, 813, 2, 29, 44, -122, -165,1777 -1 64, -158, -153, -314, -519, -491, -490, -538, -301, -501,1778 -13 10, -1310, -512, 1078, 1084, 1085, 2540, 5063, -571, -588,1779 -5 58, -543, -557, -1310, -503, -733, -723, -722, -570, -311,1780 - 274, -1310, -1310, 240, 176, -77, -1310, 3991, 136, -632,1781 - 2221758 -1323, 4572, 3263, -1323, 197, -1323, 601, 950, -251, 910, 1759 -1323, 521, -520, -467, -853, -64, 3183, 0, -1323, -150, 1760 423, 446, 477, 450, 1016, 1025, 1019, 1026, 1028, -1323, 1761 -622, -408, 5012, -745, -1323, -735, 604, 472, -656, 413, 1762 -1323, 1279, -1323, 374, -1058, -1323, -1323, 126, -1323, -823, 1763 -1106, 222, -1323, -1323, -1323, -1323, 58, -1209, -1323, -1323, 1764 -1323, -1323, -1323, -1323, 301, -1149, 35, -1323, -933, -1323, 1765 482, 274, -1323, 159, -1323, -303, -1323, -1323, -1323, 535, 1766 -827, -1323, -1323, 15, -1007, 71, 28, -1323, -1323, -1323, 1767 -21, -1323, 357, 1253, -198, 1636, 4113, -1323, -1323, 80, 1768 54, 422, 1473, -1323, 1886, -1323, -1323, 192, 2183, -1323, 1769 2495, 898, -1323, -1323, -1323, -638, -1323, 924, 925, 524, 1770 699, 83, -1323, -1323, -1323, 915, 695, -339, -1323, -106, 1771 34, 1281, -1323, -1323, -847, -986, 1046, 1127, 1039, 5, 1772 -1323, 1536, 481, -165, -210, -124, 651, 758, -1323, 979, 1773 -1323, 2789, 1548, -413, 904, -1323, -1323, 689, -1323, -235, 1774 -1323, 158, -1323, -1323, -1323, -1257, 401, -1323, -1323, -1323, 1775 1148, -1323, 21, -1323, -1323, -858, -105, -1322, -129, 2267, 1776 -1323, 2391, -1323, 906, -1323, -184, 59, -180, -173, -170, 1777 7, -40, -35, -33, 60, -6, 25, 93, -168, -164, 1778 -158, -147, -144, -292, -471, -462, -452, -551, -302, -537, 1779 -1323, -1323, -511, 1069, 1072, 1074, 2608, 4844, -578, -514, 1780 -502, -495, -500, -1323, -508, -724, -717, -708, -590, -305, 1781 -195, -1323, -1323, 246, 19, 36, -1323, 3865, 104, -623, 1782 -397 1782 1783 }; 1783 1784 … … 1785 1786 positive, shift that token. If negative, reduce the rule which 1786 1787 number is the opposite. If YYTABLE_NINF, syntax error. */ 1787 #define YYTABLE_NINF -52 11788 #define YYTABLE_NINF -522 1788 1789 static const yytype_int16 yytable[] = 1789 1790 { 1790 49, 114, 453, 428, 399, 400, 268, 98, 150, 766, 1791 151, 152, 819, 973, 868, 115, 964, 407, 752, 63, 1792 401, 402, 403, 358, 383, 384, 965, 966, 404, 261, 1793 440, 827, 49, 405, 596, 604, 50, 410, 498, 98, 1794 357, 740, 820, 148, 1070, 153, 830, 1069, 609, 49, 1795 844, 63, 837, 948, 69, 1137, 162, 821, 725, 794, 1796 56, 116, 730, 187, 826, 408, 210, 144, 50, 49, 1797 194, 919, 154, 217, 409, 70, 227, 1187, 31, 342, 1798 112, 815, 178, 220, 399, 400, 69, 155, 281, 1439, 1799 628, 425, 56, 1302, 632, 1379, 669, 407, 123, 818, 1800 401, 402, 403, 1204, 1205, 1181, 114, 70, 404, 816, 1801 817, 475, 477, 405, 114, 1195, 678, 267, 272, 476, 1802 505, 1197, 1443, 1177, 682, 31, 211, 923, 31, 221, 1803 203, 124, 262, 31, 31, 263, 566, 31, 527, 493, 1804 31, 213, 494, 1171, 527, 408, 282, 307, 148, 1178, 1805 411, 150, 145, 151, 152, 162, 114, 345, 77, 519, 1806 1439, 210, 1303, 1169, 1170, 1117, -231, -231, 373, 97, 1807 567, 714, 964, 143, 720, 1196, 107, 107, 1199, 1245, 1808 204, 1198, 965, 966, 913, 167, 187, 187, 153, 476, 1809 77, 471, 949, 1458, 162, 253, 147, 411, 419, 815, 1810 411, 97, 267, 481, 828, 411, 601, 835, 107, 601, 1811 49, 568, 149, 1186, 287, 154, 1443, 162, 97, 527, 1812 667, 1443, 210, 1200, 819, 41, 42, 816, 817, 443, 1813 155, 150, 190, 151, 152, 97, 664, -231, 97, 1484, 1814 307, 1443, 1248, 1139, 439, 107, 156, 1077, 1443, 292, 1815 167, 514, 49, 1016, 820, 182, 169, 830, 172, 98, 1816 272, 1398, 1399, 202, 588, 272, 267, 267, 723, 821, 1817 1249, 63, 114, 1512, 162, 1514, 472, 527, 951, 1080, 1818 170, 991, 441, 327, 665, 656, 1015, 463, 50, 164, 1819 672, 674, 1093, 815, 342, 307, -287, 442, 483, 358, 1820 1468, 609, 1526, 248, 1382, 500, 69, 307, 251, 596, 1821 664, 1003, 56, 671, 596, 804, 357, 97, -119, 676, 1822 -119, 816, 817, 571, -119, 1187, 1178, 70, 148, 1541, 1823 97, 1400, 465, 1398, 1399, 373, -516, 527, 1084, -119, 1824 -119, 114, 734, 1118, 819, 345, 436, 1171, 713, 602, 1825 620, 579, 471, 411, 164, 398, 190, 853, 665, 898, 1826 253, 377, 827, 1119, 625, 735, 556, 557, 625, 1201, 1827 519, 114, 471, 178, 820, 519, 327, 378, 519, 97, 1828 471, 1070, 831, 1116, 1069, 736, 834, 673, 675, 821, 1829 629, 97, 358, 111, 633, 847, 267, 1171, 747, 848, 1830 510, 558, 559, 1409, 41, 42, 187, 851, 436, 357, 1831 77, 854, 986, 373, 1496, 77, 1325, 1169, 1170, 174, 1832 1501, 97, 547, 548, 267, 213, 307, 307, 107, 844, 1833 267, 787, 759, 625, 714, 479, 1326, 472, 849, 1423, 1834 1521, 577, 850, 167, 870, 1528, 642, 578, 342, 1525, 1835 435, 1157, 1159, 1424, 114, 729, 358, 472, 1428, 1429, 1836 547, 1362, 254, 871, 1126, 472, 859, 860, 264, 1536, 1837 447, 849, 267, 357, 742, 1100, 1540, 387, 1187, 330, 1838 267, 598, 625, 877, 49, 1187, 1469, 373, 719, 460, 1839 498, 98, 683, 388, 114, 1244, 547, 97, 578, 390, 1840 1470, 711, 869, 63, 888, 881, 307, 1104, 114, 1135, 1841 1014, 307, 435, 307, 307, 391, 1171, 910, 603, -10, 1842 50, 750, -440, 609, 392, 114, 345, -441, 1016, 996, 1843 582, -467, 411, -467, 804, 523, 1187, 1434, 69, 798, 1844 393, 931, 277, 879, 56, 394, 112, 164, 213, 1236, 1845 -467, 2, 207, 4, 5, 6, 7, 914, 417, 70, 1846 704, 395, 327, 327, 916, 912, 705, 914, 916, 1184, 1847 571, 571, 1184, 915, 952, 190, 77, 279, 307, 1316, 1848 917, 437, 1126, 1081, 1082, 1185, 280, 913, 1308, 625, 1849 345, 445, 549, 714, 620, 1317, 77, 1318, 550, 551, 1850 602, 747, 602, 882, 77, 411, 331, 760, 1360, 1276, 1851 1277, 713, 765, 1319, 1474, 471, 35, 1363, 36, 332, 1852 625, 1474, 804, 1014, 1019, 625, 111, 620, 140, 239, 1853 327, 625, 994, 333, 625, 625, 625, 41, 42, 111, 1854 334, 928, 77, -102, 806, 335, 846, -102, 371, 327, 1855 41, 42, 625, 97, 267, 372, 1087, 603, 1087, 520, 1856 107, 465, 861, 240, 768, 769, 770, 342, 241, 1348, 1857 376, 1027, 1522, 1349, 111, 358, 876, 385, 111, -3, 1858 140, 141, 1408, 389, 114, 41, 42, 907, 596, 41, 1859 42, 1074, 357, 885, 691, 411, 111, 442, 140, 141, 1860 472, 528, 529, 530, 1141, 1112, 411, 41, 42, 397, 1861 625, 933, 620, 764, 327, 726, 1101, 1234, 719, 719, 1862 727, 1238, 1034, 399, 400, 531, 472, 532, 409, 533, 1863 534, 1153, 878, 411, 880, 432, 721, 407, 244, 401, 1864 402, 403, 722, 426, 114, 345, 523, 404, 523, 750, 1865 750, 523, 405, 1156, 523, 601, 845, 500, 1158, 230, 1866 601, 598, 427, 231, 711, 1476, 235, 1477, 237, 814, 1867 713, 603, 964, 213, 450, 246, 775, 776, 777, 778, 1868 1373, -288, 965, 966, 927, 408, -364, 213, 8, 9, 1869 10, 11, 12, 571, 2, 207, 4, 5, 6, 7, 1870 731, 625, 1241, 625, 411, 999, 732, 680, 625, 345, 1871 1161, -393, 602, 570, 1425, 411, 111, 31, 140, 141, 1872 1523, 45, 46, 229, 602, 111, 342, 41, 42, 484, 1873 1436, 461, 746, 706, 462, 714, 41, 42, 747, 77, 1874 8, 9, 10, 11, 12, 34, 37, 892, 804, 504, 1875 40, 253, 329, 747, 292, 864, 911, 41, 42, 35, 1876 894, 36, 163, 806, 1330, 77, 747, 980, 508, 31, 1877 520, 972, 513, 981, 307, 520, 195, 525, 520, 218, 1878 213, 527, 228, 812, 562, 601, 1168, 814, 603, 993, 1879 1182, 45, 46, 63, 563, 705, 625, 34, 554, 555, 1880 1494, 1436, 230, 114, 345, 907, 111, 907, 2, 207, 1881 4, 5, 6, 7, 714, 664, 1232, 41, 42, 114, 1882 910, 564, 578, 711, 691, 1356, 565, 749, 69, 411, 1883 142, 747, 933, 933, 56, 45, 46, 719, 568, 570, 1884 37, 411, 114, 307, 40, 1332, 338, 45, 46, 70, 1885 -437, 41, 42, 952, 1357, 586, 1105, 952, 952, 589, 1886 747, 163, 932, 665, 601, 48, 113, 750, 912, -3, 1887 45, 46, 657, 35, 374, 36, 1359, 43, 1508, 552, 1888 553, 814, 747, 242, 245, 45, 46, 638, 8, 9, 1889 10, 11, 12, 603, 113, 113, 1227, 48, 1364, 345, 1890 163, 658, 1106, 659, 747, 560, 561, 37, 48, 184, 1891 185, 40, 713, 111, 48, 140, 141, 31, 41, 42, 1892 625, 625, 48, 163, 41, 42, 661, 1126, 48, 984, 1893 981, 48, 77, 890, 48, 444, 1121, 253, 329, 411, 1894 307, 230, 897, 235, 186, 34, 899, 662, 113, 113, 1895 107, 666, 45, 46, 1284, 1285, 37, 1287, 1132, 472, 1896 40, 663, 1132, 1426, 1292, 1444, 1294, 41, 42, 1423, 1897 668, 747, 48, 1323, 1083, 48, 911, 442, 1490, 327, 1898 114, 258, 48, 692, 1491, 907, 1546, 749, 693, 411, 1899 907, 695, 578, 718, 1189, 45, 46, 329, 411, 933, 1900 56, 45, 46, 737, 215, 738, 603, 267, 739, 1369, 1901 1370, 743, 1132, 48, 547, 70, 1418, 981, 107, 1398, 1902 1399, 48, 625, 771, 772, 37, 48, 184, 185, 40, 1903 342, 230, 419, 660, 411, 845, 41, 42, 779, 780, 1904 1351, 374, 773, 774, 457, 697, 345, -235, 481, 329, 1905 411, 48, 48, 733, 744, 510, 215, 748, 756, 691, 1906 1380, 807, 266, 873, 1380, 711, 808, 48, 811, -289, 1907 45, 46, 828, 329, 601, 48, 8, 9, 10, 11, 1908 12, 1295, 1296, 1297, 48, 822, 867, 48, 272, 114, 1909 1331, 1333, 1334, 893, 113, -12, -13, 866, 77, 215, 1910 895, 896, 900, 220, 903, 31, 921, 114, -414, 113, 1911 -520, 307, 936, 113, 943, 722, 107, 48, 113, 374, 1912 117, 945, 1404, 956, 130, 625, 131, 132, 133, 114, 1913 63, 48, 48, 34, 950, 41, 42, 957, 48, 958, 1914 959, 960, 961, 1105, 711, 48, 988, 989, 211, 221, 1915 990, 977, 1005, 1006, 911, 1007, 1008, 1009, 1010, 911, 1916 215, 1459, 1079, 213, 1011, 69, 1022, 1421, 160, -402, 1917 -401, 56, 1036, 1058, 625, 625, 1071, 1534, 1094, 906, 1918 644, 1073, 1096, 272, 1097, 1095, 70, 1103, 307, 1106, 1919 1113, 747, 1114, 48, 1115, 1120, 1122, 971, 215, 1123, 1920 1124, 702, 1125, 215, 1128, 1131, 1151, 472, 1174, 1175, 1921 1172, 1173, 1176, 48, 48, 8, 9, 10, 11, 12, 1922 691, 114, 1190, 399, 400, 259, 1191, 1132, 1132, 1132, 1923 48, 1193, 1194, 160, 48, 1105, 407, 1202, 1206, 401, 1924 402, 403, 1189, 441, 31, 643, -290, 404, 56, 1207, 1925 1209, -3, 405, 8, 9, 10, 11, 12, 442, 1214, 1926 664, 48, 1219, 70, 1224, 107, 323, 493, 1222, 77, 1927 1507, 48, 34, 1228, 703, 339, 1233, 922, 267, 1235, 1928 1237, 1106, 31, 1240, 408, 1250, 1246, 107, 215, 48, 1929 1252, 724, 1254, 728, 625, 48, 1256, 48, 1257, 1258, 1930 1262, 1259, 1420, 1260, 1269, 107, 1278, 1279, 665, 37, 1931 34, 175, 176, 40, 932, 1203, 601, 1286, 1307, 114, 1932 41, 42, 45, 46, 37, 430, 175, 176, 40, 434, 1933 1289, 1290, 113, 1105, 1291, 41, 42, 48, 1293, 1301, 1934 1314, 114, 1192, 1320, 1322, 48, 77, 1328, 114, 48, 1935 114, 1324, 114, 48, 1329, 1358, 113, 1335, 113, 323, 1936 472, 372, 1336, 1338, 107, 1132, 1132, 472, 985, 215, 1937 150, 1344, 151, 152, 1345, 1346, 1347, 1297, 1365, 1106, 1938 1354, 1506, 214, 1355, 1366, 1383, 114, 1374, 114, 1375, 1939 1376, 434, 233, 113, 488, 1189, 1392, 107, 113, 114, 1940 1393, 56, 1189, 1460, -403, 1506, 1506, 702, 56, 1396, 1941 1407, 215, 1415, 162, 521, 307, 70, 1411, 472, 1413, 1942 528, 529, 530, 70, 1416, 1417, 160, 1422, 1430, 37, 1943 1506, 175, 176, 40, 214, 1431, 1432, 373, 1433, 1435, 1944 41, 42, 865, 1349, 531, 1029, 532, 113, 533, 1305, 1945 1440, 1445, 1449, 1189, 48, 1451, 1447, 1453, 1455, 56, 1946 587, 1509, 1457, 1462, 593, 48, 376, 48, 1463, 1464, 1947 1517, 1475, 1492, 1485, 70, 1487, 1500, 214, 1493, 1489, 1948 703, 1515, 1516, 626, 1520, 1527, 48, 630, 922, 1529, 1949 339, 918, 1531, 920, 1544, 107, 1545, 457, 1208, 77, 1950 1537, 783, 48, 781, 1130, 784, 77, 113, 782, 785, 1951 1058, 1306, 1495, 1410, 1547, 1368, 48, 107, 113, 48, 1952 113, 1239, 1384, 1478, 107, 1088, 702, 216, 901, 1213, 1953 902, 1221, 215, 922, 1092, 924, 702, 800, 214, 1127, 1954 1035, 872, 938, 1315, 243, 323, 323, 1102, 790, 716, 1955 702, 327, 48, 946, 791, 792, 113, 77, 113, 0, 1956 215, 1367, 113, 0, 0, 215, 0, 0, 1138, 0, 1957 113, 0, 0, 687, 479, 107, 214, 0, 0, 216, 1958 0, 214, 0, 48, 48, 0, 117, 0, 0, 0, 1959 1482, 0, 1482, 0, 0, 0, 499, 48, 0, 703, 1960 0, 0, 0, 1372, 0, 0, 0, 0, 0, 703, 1961 0, 488, 0, 323, 0, 488, 0, 0, 0, 1029, 1962 0, 0, 216, 703, 0, 521, 1482, 521, 1482, 0, 1963 521, 0, 323, 521, 0, 0, 215, 177, 0, 8, 1964 9, 10, 11, 12, 339, 0, 0, 0, 0, 37, 1965 215, 184, 185, 40, 0, 1397, 0, 0, 1405, 0, 1966 41, 42, 0, 0, 0, 0, 214, 644, 31, 0, 1967 0, 0, 0, 1039, 0, 0, 0, 48, 0, 0, 1968 0, 0, 0, 216, 0, 0, 905, 177, 411, 48, 1969 177, 0, 0, 0, 45, 46, 34, 323, 0, 922, 1970 0, 1442, 0, 0, 0, 0, 1446, 906, 802, 0, 1971 0, 0, 0, 1479, 1089, 1483, 0, 0, 0, 0, 1972 0, 216, 0, 0, 0, 0, 216, 0, 0, 0, 1973 0, 0, 643, 0, 1467, 0, 177, 891, 113, 843, 1974 0, 0, 0, 215, 593, 0, 0, 214, 0, 1511, 1975 852, 1513, 66, 118, 702, 702, 0, 0, 0, 922, 1976 922, 48, 0, 0, 214, 0, 0, 0, 0, 0, 1977 48, 644, 48, 0, 0, 0, 0, 0, 0, 113, 1978 0, 0, 0, 0, 66, 0, 0, 0, 0, 214, 1979 0, 0, 0, 1542, 0, 1543, 0, 0, 0, 177, 1980 0, 161, 48, 687, 0, 0, 0, 0, 1550, 1551, 1981 0, 216, 702, 702, 0, 0, 0, 0, 1535, 0, 1982 0, 222, 113, 0, 1535, 0, 0, 703, 703, 0, 1983 0, 0, 0, 0, 0, 1535, 643, 0, 0, 1535, 1984 0, 488, 0, 0, 113, 0, 0, 0, 113, 57, 1985 57, 0, 0, 177, 0, 0, 987, 0, 260, 0, 1986 177, 0, 0, 339, 0, 0, 992, 0, 0, 0, 1987 0, 1039, 0, 0, 0, 75, 0, 0, 0, 0, 1988 1004, 57, 0, 0, 0, 703, 703, 0, 0, 0, 1989 0, 0, 216, 0, 0, 0, 0, 0, 113, 0, 1990 328, 0, 0, 0, 0, 0, 0, 75, 260, 350, 1991 214, 0, 0, 0, 0, 57, 0, 0, 57, 0, 1992 0, 0, 995, 0, 0, 0, 0, 802, 177, 0, 1993 0, 0, 0, 0, 216, 0, 113, 0, 214, 406, 1994 215, 0, 0, 214, 223, 177, 0, 0, 0, 177, 1995 48, 0, 0, 0, 424, 48, 0, 429, 431, 0, 1996 1312, 0, 161, 0, 922, 0, 0, 0, 0, 0, 1997 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 1998 922, 0, 0, 448, 1282, 0, 0, 451, 0, 452, 1999 0, 0, 702, 0, 0, 0, 0, 0, 459, 0, 2000 702, 702, 702, 0, 66, 0, 348, 0, 0, 473, 2001 0, 0, 177, 0, 214, 802, 0, 0, 0, 480, 2002 0, 0, 339, 0, 0, 0, 0, 431, 214, 0, 2003 0, 78, 353, 1313, 0, 0, 0, 0, 687, 0, 2004 0, 37, 0, 184, 185, 40, 0, 0, 499, 113, 2005 922, 922, 41, 42, 0, 216, 0, 0, 0, 0, 2006 488, 1107, 323, 78, 702, 703, 0, 0, 0, 0, 2007 0, 57, 48, 703, 703, 703, 0, 0, 600, 0, 2008 601, 0, 0, 216, 1166, 1167, 45, 46, 216, 0, 2009 0, 0, 0, 260, 0, 0, 0, 594, 0, 0, 2010 224, 57, 0, 622, 0, 0, 449, 0, 0, 0, 2011 0, 0, 0, 113, 113, 113, 627, 0, 843, 0, 2012 627, 214, 0, 260, 0, 0, 215, 75, 0, 0, 2013 0, 0, 75, 0, 0, 0, 0, 703, 0, 0, 2014 0, 0, 1216, 1217, 0, 0, 0, 0, 0, 0, 2015 37, 0, 184, 185, 40, 0, 0, 0, 0, 216, 2016 0, 41, 42, 37, 0, 184, 185, 40, 0, 177, 2017 473, 0, 0, 216, 41, 42, 0, 0, 0, 0, 2018 0, 0, 0, 0, 0, 350, 0, 905, 355, 411, 2019 473, 0, 0, 0, 0, 45, 46, 0, 473, 687, 2020 1505, 177, 411, 0, 0, 0, 0, 0, 45, 46, 2021 0, 0, 0, 0, 0, 0, 698, 177, 0, 431, 2022 0, 215, 0, 0, 0, 0, 223, 0, 0, 0, 2023 0, 177, 0, 0, 712, 0, 66, 0, 0, 0, 2024 0, 802, 48, 48, 431, 0, 0, 0, 431, 0, 2025 0, 113, 113, 535, 536, 537, 538, 539, 540, 541, 2026 542, 543, 544, 0, 0, 0, 216, 0, 0, 0, 2027 0, 0, 0, 0, 0, 0, 0, 260, 350, 0, 2028 0, 0, 348, 78, 0, 0, 0, 545, 78, 113, 2029 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 2030 0, 0, 0, 0, 0, 0, 0, 0, 353, 0, 2031 0, 0, 177, 75, 0, 0, 0, 0, 214, 0, 2032 0, 75, 1337, 793, 0, 0, 339, 0, 0, 0, 2033 1339, 1340, 1341, 57, 0, 0, 0, 0, 0, 353, 2034 0, 627, 805, 0, 0, 0, 48, 113, 1107, 0, 2035 0, 0, 0, 0, 824, 0, 113, 353, 0, 75, 2036 0, 0, 0, 283, 284, 0, 285, 0, 0, 0, 2037 48, 48, 594, 0, 0, 348, 0, 594, 0, 0, 2038 0, 0, 224, 627, 0, 0, 350, 350, 350, 0, 2039 0, 0, 286, 0, 1385, 48, 0, 0, 287, 0, 2040 0, 353, 288, 0, 350, 289, 290, 291, 292, 41, 2041 42, 0, 293, 294, 0, 0, 0, 0, 0, 0, 2042 0, 0, 698, 0, 0, 8, 9, 10, 11, 12, 2043 0, 0, 0, 473, 0, 295, 0, 379, 0, 348, 2044 1107, 0, 0, 45, 46, 297, 298, 299, 300, 78, 2045 0, 0, 0, 0, 31, 0, 786, 0, 0, 473, 2046 0, 0, 350, 216, 355, 353, 0, 0, 0, 78, 2047 0, 937, 0, 0, 431, 0, 177, 78, 0, 0, 2048 0, 0, 34, 348, 348, 348, 0, 37, 0, 184, 2049 185, 40, 0, 0, 0, 355, 260, 712, 41, 42, 2050 0, 348, 967, 0, 214, 0, 0, 0, 0, 353, 2051 353, 353, 0, 355, 0, 78, 0, 8, 9, 10, 2052 11, 12, 0, 0, 600, 0, 601, 353, 0, 0, 2053 0, 0, 45, 46, 0, 0, 0, 0, 1107, 0, 2054 0, 698, 0, 0, 0, 353, 31, 0, 0, 0, 2055 0, 698, 0, 350, 0, 627, 75, 355, 1002, 348, 2056 627, 805, 0, 0, 0, 698, 0, 0, 0, 1481, 2057 0, 1481, 0, 0, 34, 1013, 0, 0, 0, 37, 2058 0, 0, 75, 40, 0, 353, 0, 0, 0, 0, 2059 41, 42, 0, 0, 0, 0, 0, 0, 0, 214, 2060 0, 80, 0, 0, 0, 1481, 0, 1481, 0, 0, 2061 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 2062 353, 355, 0, 0, 45, 46, 66, 0, 87, 0, 2063 413, 0, 0, 80, 323, 0, 0, 421, 0, 0, 2064 0, 0, 0, 0, 0, 0, 0, 0, 627, 216, 2065 348, 0, 0, 0, 0, 260, 712, 0, 348, 1085, 2066 87, 0, 0, 0, 353, 355, 355, 355, 0, 0, 2067 225, 0, 0, 0, 353, 0, 353, 0, 0, 0, 2068 0, 223, 0, 355, 353, 1099, 0, 0, 353, 0, 2069 0, 0, 0, 431, 118, 0, 0, 226, 0, 0, 2070 0, 355, 0, 0, 0, 0, 0, 0, 0, 413, 2071 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 2072 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 2073 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 2074 0, 355, 0, 0, 216, 0, 0, 0, 0, 75, 2075 0, 594, 0, 0, 0, 0, 0, 0, 356, 0, 2076 0, 0, 0, 576, 429, 0, 0, 0, 0, 698, 2077 698, 580, 350, 350, 583, 0, 355, 0, 0, 353, 2078 0, 0, 0, 0, 0, 363, 0, 177, 0, 0, 2079 0, 57, 1188, 0, 0, 206, 2, 207, 4, 5, 1791 49, 113, 407, 149, 453, 399, 428, 97, 150, 440, 1792 151, 267, 400, 753, 767, 401, 114, 1071, 408, 106, 1793 106, 402, 974, 280, 869, 828, 965, 403, 57, 57, 1794 505, 845, 49, 966, 1188, 50, 1172, 152, 404, 97, 1795 597, 405, 967, 147, 383, 384, 741, 610, 1070, 49, 1796 357, 106, 827, 143, 70, 920, 161, 605, 410, 96, 1797 57, 795, 177, 186, 819, 1380, 209, 50, 153, 49, 1798 193, 56, 115, 216, 923, 1303, 226, 1440, 949, 726, 1799 69, 281, 407, 731, 219, 399, 70, 820, 106, 31, 1800 31, 96, 400, 724, 57, 401, 425, 57, 408, 821, 1801 31, 402, 148, 56, 831, 113, 822, 403, 96, 162, 1802 838, 261, 69, 113, 262, 670, 266, 271, 404, 122, 1803 212, 405, 189, 194, 31, 96, 217, 31, 96, 227, 1804 816, 1138, 475, 477, 510, 679, 154, 210, 202, 817, 1805 220, 260, 1196, 683, 1304, 149, 307, 147, 1440, 818, 1806 150, 1198, 151, 166, 161, 113, 345, 548, 549, 252, 1807 209, 411, 411, 1459, 31, 986, 527, 373, 1200, 629, 1808 419, 31, 411, 633, 1170, 1171, 291, 715, 1178, 152, 1809 914, 1182, 965, 1235, 348, 186, 186, 1239, 203, 966, 1810 358, 342, 76, 161, 1078, 548, 721, 481, 967, 411, 1811 668, 266, 1197, 1469, 1179, 952, 96, 162, 832, 49, 1812 153, 1199, 835, 1201, 1187, 409, 161, 166, 123, 96, 1813 374, 209, 665, 439, 76, 149, 252, 329, 443, 1179, 1814 150, 548, 151, 852, 829, 471, 602, 855, 666, 307, 1815 1172, 836, 1030, 602, 398, 189, 162, 1017, 816, 57, 1816 327, 49, 1140, 735, 176, -233, -233, 817, 97, 271, 1817 476, 674, 676, 1081, 271, 266, 266, 818, 96, 162, 1818 106, 113, 463, 161, 1016, 442, 1004, 483, 154, 57, 1819 96, 444, 1188, 992, 500, 923, 50, 142, 924, 1249, 1820 1172, 657, 441, 1527, 307, 163, 665, 860, 861, 820, 1821 146, 610, 1094, 176, 1485, 70, 176, 307, 1205, 1206, 1822 96, 821, 666, 436, 878, 831, 597, 1250, 822, 672, 1823 1542, 597, 56, 572, 479, 677, -233, 357, 147, 730, 1824 923, 69, 567, 1399, 1400, 373, 168, 155, 1513, 377, 1825 1515, 113, 816, 327, 580, 345, 411, 476, 743, 603, 1826 621, 817, 176, 177, 1071, 378, 828, 63, 736, 163, 1827 169, 818, 1399, 1400, 626, 1139, 568, 1497, 626, 569, 1828 630, 113, 932, 1502, 634, 436, 748, 589, 737, 899, 1829 110, 144, 139, 140, 1246, 1070, 447, 96, 374, 63, 1830 987, 41, 42, 1522, 1202, 805, 266, 471, 1529, 171, 1831 769, 770, 771, 1401, 212, 460, 186, 342, 604, 1172, 1832 845, 166, 578, 373, 799, 176, 1030, 471, 579, 820, 1833 357, 583, 243, 411, 266, 471, 307, 307, 1170, 1171, 1834 266, 821, 1410, 626, 110, 1188, 1119, 854, 822, 1326, 1835 110, 715, 1188, 76, 1526, 41, 42, 684, 76, 599, 1836 1020, 41, 42, 579, 113, 435, 1120, 553, 554, 1327, 1837 1127, 348, 1363, 995, 1537, 189, 374, 358, -121, 176, 1838 -121, 1541, 266, 760, -121, 493, 176, 705, 494, 765, 1839 266, 387, 626, 706, 49, 357, 953, 373, 720, -121, 1840 -121, 97, 229, 1188, 113, 230, 923, 388, 234, 1085, 1841 236, 557, 558, 106, 911, 1245, 307, 245, 113, 1158, 1842 1160, 307, 57, 307, 307, 1136, 714, 435, 1424, 50, 1843 913, 751, 1017, 610, 870, 113, 345, 212, 882, 1105, 1844 327, 327, 1425, 1015, 1429, 1430, 559, 560, 70, 883, 1845 523, 411, 1102, 96, 1117, 176, 722, 604, 1435, 1470, 1846 880, 181, 723, 163, 348, 56, 923, 923, 110, 390, 1847 358, 342, 176, 1471, 69, 110, 176, 139, 140, 41, 1848 42, 572, 572, 555, 556, 391, 41, 42, 1127, 307, 1849 1444, 110, 201, 914, 2, 206, 4, 5, 6, 7, 1850 626, 345, 41, 42, 286, 621, 392, 1331, 327, -289, 1851 715, 603, 111, 603, 865, 41, 42, 973, 63, 997, 1852 76, 247, 393, 472, 805, 1475, 250, 327, 732, 348, 1853 1333, 626, 1475, -517, 733, 358, 626, 847, 621, 176, 1854 76, 514, 626, 1361, 229, 626, 626, 626, 76, 871, 1855 -468, 643, -468, 862, 848, 886, 1015, 411, 849, 35, 1856 394, 36, 1028, 626, 915, 266, 252, 877, 872, -468, 1857 815, 471, 604, 348, 348, 348, 395, 1142, 917, 411, 1858 916, 807, 1075, 1523, 1444, 915, 76, 442, 917, 1444, 1859 1185, 348, 263, 327, 918, 113, 37, 929, 908, 1185, 1860 40, 1082, 1317, -10, 1083, 597, 1186, 41, 42, 1444, 1861 692, 498, 805, 110, 357, 1309, 1444, 1409, 1318, 1113, 1862 1237, 626, 934, 621, 41, 42, 747, -441, 1319, 720, 1863 720, 748, 748, 43, 407, 846, 399, 561, 562, 893, 1864 599, 45, 46, 400, 1320, 748, 401, 1364, 500, 348, 1865 408, -442, 402, 895, 1035, 113, 345, 912, 403, 748, 1866 751, 751, 523, 212, 523, 276, 571, 523, 411, 404, 1867 523, 923, 405, 981, 45, 46, 519, 212, 850, 982, 1868 1277, 1278, 851, 278, 229, 472, 234, 923, 815, 604, 1869 714, 342, 965, 1154, 850, 411, 1374, 176, 1101, 966, 1870 1477, 750, 1478, 411, 572, 472, 279, -103, 967, 45, 1871 46, -103, 626, 472, 626, 110, 1000, 139, 140, 626, 1872 345, 330, 933, 603, 602, 1162, 41, 42, 994, 176, 1873 45, 46, 37, 1233, 706, 603, 40, 331, 1349, 579, 1874 348, 1357, 1350, 41, 42, 176, 332, 748, 348, 712, 1875 1358, 63, 715, 371, 358, 1524, 748, 923, 923, 176, 1876 548, 985, 982, 465, 8, 9, 10, 11, 12, 813, 1877 212, 602, 329, 411, 229, 953, 372, 45, 46, 953, 1878 953, 1360, 815, 550, 76, 307, 1365, 748, -290, 551, 1879 552, 333, 748, 31, 604, 8, 9, 10, 11, 12, 1880 807, 510, 1370, 1371, 106, 1427, 334, 626, 673, 675, 1881 76, 1424, 665, 57, 113, 345, 908, 911, 908, 335, 1882 1445, 34, 1183, 376, 31, 37, 748, 385, 666, 40, 1883 113, 715, 1157, 913, 602, 389, 41, 42, 805, 70, 1884 176, 692, 409, 934, 934, 1491, 1419, 982, 720, 714, 1885 342, 1492, 34, 113, 307, 129, 56, 130, 131, 132, 1886 48, 112, 719, 1399, 1400, 69, 41, 42, 1106, 397, 1887 45, 46, 106, 1547, 214, 1084, 426, 912, 751, 579, 1888 1159, 57, 602, 427, 1509, 1426, 772, 773, 519, 112, 1889 112, 432, 48, 519, 450, 1324, 519, 738, 1242, 739, 1890 411, 1437, 740, 48, 1088, 744, 1088, 604, -365, 48, 1891 345, 774, 775, 1228, -394, 484, 37, 48, 174, 175, 1892 40, 780, 781, 48, 1107, 214, 48, 41, 42, 48, 1893 461, 626, 626, 1127, 462, 2, 206, 4, 5, 6, 1894 7, 504, 112, 112, 776, 777, 778, 779, 291, 472, 1895 788, 307, 2, 206, 4, 5, 6, 7, 327, 348, 1896 348, 528, 529, 530, 508, 1169, 48, 442, 214, 48, 1897 106, 1495, 1437, 513, 525, 472, 48, 76, 111, 57, 1898 527, 228, 1381, 563, 564, 531, 1381, 532, 566, 533, 1899 534, 113, 252, 329, 411, 565, 908, 419, 661, 411, 1900 35, 908, 36, 569, 176, 70, 338, 48, -438, 587, 1901 934, 658, 659, 712, 846, 48, -291, 35, 266, 36, 1902 48, 590, 56, 8, 9, 10, 11, 12, -3, 214, 1903 639, 1190, 660, 626, 481, 329, 411, 662, 663, 761, 1904 664, 829, 329, 602, 766, 48, 48, 37, 667, 183, 1905 184, 40, 31, 669, 257, 912, 693, 345, 41, 42, 1906 912, 48, 694, -3, 696, 498, 698, 214, -237, 48, 1907 734, 745, 214, 1296, 1297, 1298, 692, 749, 48, 757, 1908 34, 48, 808, 1460, 906, 809, 411, -12, 112, 812, 1909 823, 714, 45, 46, 465, 1332, 1334, 1335, -13, 271, 1910 113, 867, 868, 112, 874, 907, 894, 112, 896, 897, 1911 922, 48, 112, 901, 904, 219, -415, 723, 113, 106, 1912 -521, 944, 307, 937, 946, 48, 48, 57, 57, 957, 1913 950, 959, 48, 958, 960, 951, 626, -292, 961, 48, 1914 113, 106, 63, 76, 8, 9, 10, 11, 12, 962, 1915 57, 978, 989, 212, 342, 1106, 990, 991, 214, 106, 1916 1006, 1007, 1008, 1009, 116, 879, 1010, 881, 57, 1011, 1917 210, 220, 712, 31, 1012, 1023, 70, -403, 37, -402, 1918 183, 184, 40, 1037, 1422, 626, 626, 1072, 48, 41, 1919 42, 1535, 1074, 56, 271, 1095, 907, 1096, 1059, 307, 1920 1097, 34, 69, 1098, 1104, 1114, 748, 1115, 48, 48, 1921 1116, 1107, 159, 348, 348, 185, 1118, 928, 106, 1352, 1922 1121, 1123, 57, 45, 46, 48, 972, 57, 1124, 48, 1923 1125, 1126, 113, 407, 1132, 1129, 399, 692, 1152, 214, 1924 644, 1173, 1174, 400, 173, 1175, 401, 1106, 442, 408, 1925 1176, 106, 402, 70, 1177, 1191, 48, 665, 403, 1192, 1926 57, 1194, 1195, 1203, 1210, 441, 48, 1207, 258, 404, 1927 56, 1208, 405, 666, 1215, -3, 159, 1220, 1225, 1190, 1928 1223, 214, 1241, 493, 48, 1229, 253, 1508, 1234, 266, 1929 48, 1236, 48, 1421, 1238, 1247, 1251, 1253, 1255, 110, 1930 1257, 139, 238, 1107, 1258, 626, 1263, 1259, 472, 323, 1931 41, 42, 1260, 1261, 76, 176, 1270, 37, 339, 174, 1932 175, 40, 1279, 110, 1280, 139, 140, 112, 41, 42, 1933 113, 1287, 48, 348, 41, 42, 239, 1290, 1291, 1292, 1934 48, 240, 1330, 1294, 48, 1106, 1302, 1308, 48, 106, 1935 1315, 112, 113, 112, 372, 1323, 1321, 1325, 57, 113, 1936 727, 113, 1336, 113, 1329, 728, 1337, 1193, 430, 1339, 1937 1345, 106, 434, 1346, 1347, 1348, 149, 1359, 106, 1355, 1938 57, 150, 417, 151, 1356, 1366, 1367, 57, 112, 1298, 1939 1375, 76, 1507, 112, 1384, 1376, 1377, 113, 1383, 113, 1940 1393, 1107, 323, 214, 1394, 437, 70, -404, 1397, 1408, 1941 113, 1412, 1414, 70, 712, 445, 1507, 1507, 1416, 1417, 1942 703, 1423, 1418, 56, 161, 1441, 307, 1431, 1432, 106, 1943 56, 214, 1190, 1433, 434, 1434, 214, 488, 57, 1190, 1944 1350, 1507, 1436, 112, 1446, 1448, 1450, 1452, 373, 213, 1945 48, 1454, 1456, 1458, 1463, 1465, 1486, 521, 232, 1464, 1946 1476, 48, 1488, 48, 70, 1490, 1493, 1501, 1521, 1122, 1947 159, 1494, 1516, 1517, 1530, 479, 141, 1528, 1532, 63, 1948 1538, 56, 48, 520, 1545, 176, 1546, 889, 1209, 782, 1949 1190, 1133, 1131, 712, 784, 1133, 1307, 1411, 48, 783, 1950 213, 704, 785, 112, 588, 786, 1496, 214, 594, 1548, 1951 1369, 1385, 48, 1240, 112, 48, 112, 1214, 1479, 902, 1952 903, 214, 1089, 925, 215, 1222, 1093, 627, 241, 244, 1953 327, 631, 801, 1128, 339, 1059, 1036, 939, 873, 1103, 1954 242, 1316, 717, 213, 76, 1133, 66, 117, 48, 947, 1955 791, 76, 112, 792, 112, 793, 472, 37, 112, 174, 1956 175, 40, 0, 0, 0, 0, 112, 0, 41, 42, 1957 0, 0, 0, 1285, 1286, 215, 1288, 0, 66, 48, 1958 48, 0, 0, 1293, 0, 1295, 0, 0, 0, 323, 1959 323, 0, 0, 48, 376, 160, 0, 8, 9, 10, 1960 11, 12, 76, 0, 213, 0, 0, 1483, 0, 1483, 1961 0, 0, 0, 0, 214, 221, 0, 688, 215, 0, 1962 528, 529, 530, 0, 0, 0, 31, 703, 1373, 0, 1963 116, 0, 681, 0, 0, 0, 0, 8, 9, 10, 1964 11, 12, 213, 1483, 531, 1483, 532, 213, 533, 1306, 1965 0, 259, 0, 0, 34, 488, 0, 323, 707, 488, 1966 0, 0, 499, 0, 0, 0, 31, 0, 0, 521, 1967 0, 521, 0, 48, 521, 0, 323, 521, 0, 215, 1968 1398, 0, 0, 1406, 0, 48, 0, 0, 339, 457, 1969 0, 0, 0, 328, 34, 520, 571, 0, 411, 0, 1970 520, 259, 350, 520, 45, 46, 0, 0, 704, 472, 1971 0, 0, 0, 0, 0, 0, 472, 215, 0, 0, 1972 0, 0, 215, 0, 0, 0, 1443, 0, 644, 0, 1973 0, 1447, 406, 213, 112, 0, 750, 0, 411, 0, 1974 0, 1405, 323, 0, 45, 46, 703, 424, 0, 0, 1975 429, 431, 0, 803, 0, 160, 703, 48, 0, 1468, 1976 1133, 1133, 1133, 0, 0, 0, 48, 472, 48, 0, 1977 703, 0, 0, 0, 0, 112, 448, 0, 0, 0, 1978 451, 0, 452, 0, 844, 0, 0, 0, 0, 594, 1979 0, 459, 0, 0, 0, 853, 74, 66, 48, 0, 1980 0, 0, 473, 0, 0, 0, 0, 0, 215, 0, 1981 0, 214, 480, 0, 213, 0, 0, 0, 112, 0, 1982 431, 8, 9, 10, 11, 12, 645, 704, 74, 0, 1983 0, 213, 644, 0, 0, 0, 0, 704, 0, 0, 1984 112, 0, 0, 1536, 112, 0, 0, 0, 688, 1536, 1985 31, 704, 0, 0, 0, 0, 213, 0, 0, 891, 1986 1536, 0, 892, 0, 1536, 222, 0, 0, 898, 0, 1987 0, 0, 900, 0, 0, 0, 0, 0, 34, 0, 1988 0, 37, 0, 183, 184, 40, 488, 259, 0, 215, 1989 0, 595, 41, 42, 112, 0, 0, 623, 1133, 1133, 1990 0, 0, 0, 0, 0, 0, 0, 0, 339, 0, 1991 628, 0, 0, 0, 628, 0, 0, 259, 265, 0, 1992 933, 0, 602, 0, 0, 0, 45, 46, 45, 46, 1993 0, 215, 112, 0, 0, 0, 1461, 725, 0, 729, 1994 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 1995 0, 48, 353, 535, 536, 537, 538, 539, 540, 541, 1996 542, 543, 544, 545, 473, 0, 0, 996, 48, 0, 1997 0, 0, 803, 0, 703, 703, 0, 0, 213, 350, 1998 0, 988, 0, 0, 473, 0, 0, 546, 0, 0, 1999 0, 993, 473, 0, 1510, 0, 0, 214, 0, 0, 2000 0, 0, 0, 1518, 0, 1005, 213, 0, 0, 0, 2001 699, 213, 37, 431, 183, 184, 40, 0, 0, 0, 2002 0, 0, 0, 41, 42, 0, 449, 0, 713, 0, 2003 66, 0, 703, 703, 0, 0, 0, 0, 431, 0, 2004 0, 0, 431, 0, 0, 112, 0, 74, 0, 601, 2005 0, 602, 74, 215, 0, 704, 704, 45, 46, 0, 2006 803, 0, 0, 0, 0, 0, 0, 339, 48, 0, 2007 0, 259, 350, 0, 0, 0, 0, 0, 0, 0, 2008 0, 215, 213, 688, 0, 0, 215, 0, 1080, 866, 2009 0, 0, 214, 77, 0, 0, 213, 0, 0, 0, 2010 0, 0, 0, 0, 0, 488, 1108, 323, 0, 112, 2011 112, 112, 0, 704, 704, 0, 499, 0, 794, 37, 2012 0, 183, 184, 40, 0, 77, 0, 0, 0, 0, 2013 41, 42, 0, 0, 0, 0, 628, 806, 919, 0, 2014 921, 0, 0, 0, 457, 0, 0, 222, 37, 825, 2015 183, 184, 40, 0, 0, 0, 906, 215, 411, 41, 2016 42, 0, 223, 844, 45, 46, 0, 595, 0, 0, 2017 0, 215, 595, 0, 0, 0, 0, 0, 628, 0, 2018 1313, 350, 350, 350, 0, 1506, 0, 411, 0, 213, 2019 0, 0, 0, 45, 46, 0, 0, 0, 0, 350, 2020 0, 0, 0, 124, 127, 128, 0, 0, 0, 1167, 2021 1168, 0, 703, 0, 74, 0, 0, 699, 0, 0, 2022 703, 703, 703, 0, 0, 0, 0, 0, 473, 353, 2023 0, 0, 0, 0, 74, 0, 0, 0, 48, 48, 2024 0, 1204, 74, 0, 688, 0, 0, 112, 112, 355, 2025 0, 0, 0, 0, 473, 0, 0, 350, 0, 0, 2026 353, 1314, 0, 0, 215, 0, 938, 1217, 1218, 431, 2027 0, 0, 0, 0, 0, 254, 0, 255, 353, 0, 2028 74, 0, 0, 0, 703, 112, 803, 0, 0, 0, 2029 0, 259, 713, 704, 0, 0, 0, 968, 0, 0, 2030 0, 704, 704, 704, 0, 0, 0, 0, 0, 0, 2031 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 2032 1040, 0, 353, 0, 0, 0, 0, 126, 126, 126, 2033 0, 0, 0, 0, 0, 0, 699, 0, 0, 0, 2034 0, 0, 48, 112, 77, 0, 699, 0, 350, 77, 2035 628, 0, 112, 1003, 0, 628, 806, 0, 396, 0, 2036 699, 1090, 0, 0, 0, 704, 48, 48, 415, 416, 2037 1014, 339, 0, 420, 0, 422, 423, 0, 0, 0, 2038 0, 0, 0, 0, 0, 0, 213, 353, 0, 0, 2039 0, 48, 0, 1108, 0, 0, 0, 0, 0, 126, 2040 0, 126, 0, 0, 0, 79, 0, 0, 0, 0, 2041 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 2042 0, 66, 0, 0, 0, 0, 275, 0, 0, 0, 2043 0, 353, 353, 353, 0, 0, 0, 79, 0, 0, 2044 0, 0, 0, 628, 223, 0, 0, 1338, 0, 353, 2045 259, 713, 0, 0, 1086, 1340, 1341, 1342, 0, 0, 2046 0, 215, 0, 0, 0, 0, 0, 353, 0, 0, 2047 0, 0, 0, 0, 224, 0, 0, 0, 74, 0, 2048 1100, 0, 126, 0, 0, 1108, 0, 1368, 431, 117, 2049 126, 0, 126, 126, 0, 0, 0, 126, 0, 126, 2050 126, 0, 0, 0, 74, 0, 0, 353, 0, 0, 2051 0, 77, 0, 0, 0, 0, 0, 0, 1040, 1386, 2052 0, 0, 0, 0, 0, 0, 355, 0, 0, 0, 2053 0, 77, 0, 0, 0, 0, 0, 0, 0, 77, 2054 0, 0, 353, 0, 0, 0, 595, 8, 9, 10, 2055 11, 12, 0, 0, 0, 0, 0, 355, 0, 429, 2056 0, 356, 0, 0, 699, 699, 0, 350, 350, 126, 2057 0, 0, 213, 0, 0, 355, 31, 77, 0, 0, 2058 0, 0, 0, 1108, 0, 0, 353, 1189, 0, 0, 2059 0, 0, 0, 0, 0, 0, 353, 0, 353, 0, 2060 0, 0, 0, 222, 34, 0, 353, 0, 0, 37, 2061 353, 183, 184, 40, 1482, 0, 1482, 0, 0, 355, 2062 41, 42, 699, 699, 0, 0, 0, 0, 0, 0, 2063 0, 1283, 0, 0, 0, 0, 0, 0, 0, 1480, 2064 0, 1484, 0, 0, 0, 0, 601, 215, 602, 0, 2065 1482, 0, 1482, 0, 45, 46, 79, 0, 0, 0, 2066 0, 79, 0, 0, 0, 0, 0, 213, 0, 628, 2067 0, 74, 0, 0, 0, 1512, 0, 1514, 0, 323, 2068 0, 0, 0, 0, 355, 0, 0, 0, 0, 0, 2069 0, 0, 0, 713, 0, 0, 0, 0, 0, 86, 2070 0, 353, 0, 0, 0, 0, 0, 413, 0, 0, 2071 0, 0, 0, 0, 421, 0, 0, 0, 0, 1543, 2072 0, 1544, 0, 0, 0, 0, 0, 0, 355, 355, 2073 355, 86, 0, 0, 1551, 1552, 1284, 0, 0, 0, 2074 0, 0, 215, 0, 0, 0, 355, 0, 0, 0, 2075 0, 0, 796, 797, 259, 0, 224, 0, 66, 0, 2076 0, 0, 0, 0, 355, 0, 0, 0, 225, 0, 2077 699, 0, 713, 0, 0, 77, 117, 0, 0, 0, 2078 0, 830, 0, 0, 833, 834, 413, 837, 0, 839, 2079 840, 0, 0, 0, 841, 842, 0, 0, 0, 0, 2080 0, 77, 699, 0, 355, 0, 0, 0, 0, 0, 2081 699, 699, 699, 0, 353, 353, 0, 353, 353, 0, 2082 0, 350, 350, 79, 0, 0, 0, 0, 8, 9, 2083 10, 11, 12, 0, 0, 1189, 0, 74, 356, 355, 2084 0, 577, 0, 79, 0, 0, 0, 0, 0, 581, 2085 0, 79, 584, 0, 0, 363, 0, 31, 0, 0, 2086 0, 0, 0, 0, 0, 0, 0, 0, 117, 356, 2087 0, 0, 353, 353, 699, 0, 126, 126, 0, 0, 2088 0, 0, 0, 355, 0, 34, 0, 356, 0, 79, 2089 37, 0, 0, 355, 40, 355, 0, 0, 0, 0, 2090 223, 41, 42, 355, 0, 126, 0, 355, 126, 126, 2091 0, 126, 0, 126, 126, 0, 413, 0, 126, 126, 2092 421, 0, 0, 0, 0, 0, 0, 43, 0, 0, 2093 0, 356, 970, 971, 0, 45, 46, 0, 0, 0, 2094 0, 350, 0, 353, 0, 0, 0, 0, 0, 0, 2095 86, 0, 0, 0, 0, 86, 0, 0, 0, 0, 2096 0, 0, 0, 0, 0, 0, 117, 0, 77, 0, 2097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2098 0, 0, 0, 0, 0, 0, 222, 0, 1189, 0, 2099 0, 0, 0, 0, 0, 1189, 356, 413, 355, 0, 2100 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 2101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2102 353, 0, 353, 0, 0, 0, 0, 0, 0, 0, 2103 0, 0, 0, 0, 8, 9, 10, 11, 12, 0, 2104 356, 356, 356, 0, 0, 0, 1189, 0, 0, 0, 2105 225, 0, 353, 1531, 0, 0, 126, 126, 356, 0, 2106 353, 353, 353, 31, 0, 0, 0, 0, 0, 0, 2107 0, 353, 353, 0, 0, 0, 356, 0, 0, 0, 2108 0, 0, 0, 0, 0, 74, 0, 79, 0, 577, 2109 577, 34, 0, 0, 1091, 0, 37, 0, 183, 184, 2110 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 2111 0, 355, 355, 79, 355, 355, 356, 86, 0, 0, 2112 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, 2113 0, 0, 363, 906, 77, 411, 0, 86, 0, 0, 2114 0, 45, 46, 0, 0, 86, 0, 0, 0, 0, 2115 0, 356, 0, 0, 0, 0, 0, 0, 0, 0, 2116 0, 0, 0, 363, 0, 0, 0, 0, 0, 355, 2117 355, 0, 0, 0, 0, 0, 884, 0, 0, 0, 2118 887, 363, 0, 86, 0, 0, 0, 0, 0, 0, 2119 0, 353, 0, 0, 0, 356, 0, 0, 0, 0, 2120 0, 0, 0, 0, 0, 356, 0, 356, 0, 0, 2121 0, 0, 224, 126, 0, 356, 0, 0, 126, 356, 2122 0, 0, 0, 0, 0, 363, 167, 0, 172, 0, 2123 0, 178, 179, 180, 0, 182, 0, 0, 74, 0, 2124 355, 0, 0, 0, 0, 74, 0, 0, 0, 233, 2125 0, 0, 0, 0, 0, 1219, 0, 0, 0, 0, 2126 0, 248, 249, 0, 8, 9, 10, 11, 12, 0, 2127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2128 79, 0, 0, 223, 0, 0, 0, 0, 0, 0, 2129 363, 0, 0, 31, 0, 0, 74, 0, 0, 0, 2130 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 2131 356, 0, 577, 0, 0, 0, 0, 355, 0, 355, 2132 0, 34, 0, 0, 0, 0, 37, 0, 183, 184, 2133 40, 0, 0, 0, 363, 363, 363, 41, 42, 0, 2134 0, 0, 0, 0, 0, 0, 0, 0, 0, 355, 2135 0, 0, 363, 0, 0, 0, 0, 355, 355, 355, 2136 0, 0, 0, 1506, 0, 411, 0, 0, 355, 355, 2137 363, 45, 46, 0, 0, 507, 0, 509, 512, 126, 2138 0, 86, 77, 0, 1305, 515, 516, 0, 0, 0, 2139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2140 509, 509, 0, 0, 0, 0, 0, 86, 0, 0, 2141 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2142 0, 355, 0, 356, 356, 0, 356, 356, 0, 0, 2143 413, 0, 0, 0, 0, 0, 0, 0, 509, 0, 2144 0, 0, 0, 0, 0, 363, 79, 8, 9, 10, 2145 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2146 21, 22, 23, 24, 25, -293, 0, 26, 27, 28, 2147 0, 0, 0, 0, 509, 0, 31, 0, 0, 0, 2148 0, 356, 356, 0, 0, 0, 0, 0, 355, 363, 2149 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, 2150 0, 363, 0, 0, 34, 0, 225, 1143, 126, 363, 2151 0, 38, 39, 363, 0, -293, 0, 592, 0, 600, 2152 0, 0, 0, 0, 1155, 0, 0, 0, 0, 0, 2153 624, 625, 0, 0, 0, 77, 0, 0, 0, 0, 2154 282, 283, 77, 284, 0, 0, 635, 0, 338, 0, 2155 0, 0, 356, 0, 45, 46, 0, 0, 0, 0, 2156 0, 0, 0, 0, 0, 0, 0, 0, 0, 285, 2157 0, 0, 0, 0, 86, 286, 0, 0, 0, 287, 2158 0, 0, 288, 289, 290, 291, 41, 42, 0, 292, 2159 293, 0, 0, 77, 0, 224, 0, 0, 0, 0, 2160 0, 0, 413, 0, 363, 0, 0, 0, 0, 0, 2161 0, 0, 294, 0, 379, 0, 0, 79, 0, 0, 2162 45, 46, 296, 297, 298, 299, 0, 0, 0, 356, 2163 0, 356, 1013, 787, 0, 8, 9, 10, 11, 12, 2164 0, 0, 1243, 509, 509, 509, 509, 509, 509, 509, 2165 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, 2166 509, 356, 282, 283, 31, 284, 0, 0, 0, 356, 2167 356, 356, 0, 0, 0, 0, 0, 0, 0, 0, 2168 356, 356, 0, 0, 0, 0, 0, 0, 0, 0, 2169 0, 285, 34, 0, 79, 0, 0, 286, 0, 0, 2170 0, 287, 0, 0, 288, 289, 290, 291, 41, 42, 2171 0, 292, 293, 0, 0, 0, 0, 363, 363, 0, 2172 363, 363, 0, 0, 0, 0, 0, 0, 0, 0, 2173 0, 0, 0, 356, 294, 0, 379, 0, 0, 0, 2174 86, 0, 344, 46, 296, 297, 298, 299, 0, 0, 2175 1, 2, 206, 4, 5, 6, 7, 8, 9, 10, 2176 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2177 21, 22, 23, 24, 25, 363, 363, 26, 27, 28, 2178 29, 0, 0, 30, 282, 283, 31, 284, 0, 509, 2179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2180 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2181 0, 0, 0, 285, 34, 0, 35, 0, 36, 286, 2182 0, 38, 39, 287, 165, 0, 288, 289, 290, 291, 2183 41, 42, 0, 292, 293, 0, 0, 0, 0, 0, 2184 0, 218, 0, 0, 0, 0, 363, 79, 0, 0, 2185 509, 0, 0, 0, 79, 0, 294, 0, 1056, 0, 2186 0, 0, 0, 0, 45, 46, 296, 297, 298, 299, 2187 0, 0, 0, 926, 0, 927, 0, 0, 0, -128, 2188 509, 0, 930, 931, 0, 0, 0, 936, 165, 225, 2189 0, 0, 272, 0, 0, 0, 0, 0, 0, 941, 2190 0, 0, 0, 0, 945, 79, 0, 0, 0, 0, 2191 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 2192 0, 165, 0, 363, 0, 363, 0, 0, 0, 0, 2193 0, 369, 979, 0, 0, 375, 0, 0, 0, 0, 2194 0, 0, 0, 0, 0, 0, 1163, 0, 0, 8, 2195 9, 10, 11, 12, 0, 363, 0, 0, 0, 0, 2196 0, 0, 0, 363, 363, 363, 0, 0, 0, 0, 2197 0, 0, 0, 0, 363, 363, 282, 283, 31, 284, 2198 0, 0, 0, 0, 165, 0, 0, 0, 86, 0, 2199 0, 0, 0, 0, 0, 0, 218, 0, 0, 0, 2200 509, 0, 0, 0, 0, 285, 34, 0, 0, 0, 2201 0, 286, 0, 0, 165, 287, 0, 0, 288, 289, 2202 290, 291, 41, 42, 0, 292, 293, 363, 0, 0, 2203 0, 1024, 1025, 1026, 1027, 0, 1029, 0, 0, 375, 2204 0, 0, 0, 0, 0, 509, 165, 0, 294, 0, 2205 379, 1073, 0, 0, 0, 0, 1164, 46, 296, 297, 2206 298, 299, 0, 0, 0, 1079, 0, 0, 0, 524, 2207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2208 509, 0, 165, 0, 0, 0, 0, 0, 0, 211, 2209 0, 0, 0, 509, 363, 0, 0, 0, 231, 0, 2210 235, 0, 237, 0, 0, 1099, 0, 0, 0, 246, 2211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2212 598, 0, 0, 0, 0, 622, 0, 0, 0, 0, 2213 0, 0, 0, 0, 509, 0, 0, 0, 0, 0, 2214 211, 86, 235, 237, 246, 0, 0, 0, 86, 0, 2215 1130, 0, 0, 0, 0, 0, 1137, 0, 0, 0, 2216 0, 1141, 0, 0, 0, 0, 1145, 0, 1146, 0, 2217 0, 0, 1148, 0, 1149, 1150, 0, 0, 1153, 0, 2218 0, 0, 0, 211, 0, 0, 0, 1165, 0, 0, 2219 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 2220 0, 165, 165, 0, 0, 1180, 1181, 0, 369, 0, 2221 0, 509, 0, 0, 0, 0, 0, 0, 0, 0, 2222 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, 2223 0, 0, 1211, 0, 0, 1213, 0, 0, 0, 0, 2224 0, 0, 0, 0, 211, 0, 235, 237, 246, 0, 2225 0, 0, 0, 0, 0, 0, 0, 716, 0, 0, 2226 0, 8, 9, 10, 11, 12, 0, 0, 0, 165, 2227 0, 509, 509, 0, 0, 0, 0, 0, 1227, 0, 2228 0, 524, 211, 524, 1231, 1232, 524, 211, 165, 524, 2229 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2230 0, 369, 497, 0, 1248, 0, 0, 1252, 0, 0, 2231 0, 1254, 0, 0, 0, 0, 0, 0, 34, 0, 2232 0, 0, 0, 37, 1262, 183, 184, 40, 0, 0, 2233 0, 0, 0, 0, 41, 42, 0, 1269, 0, 1271, 2234 1272, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 2235 0, 211, 0, 0, 165, 1281, 0, 1282, 0, 0, 2236 185, 172, 0, 0, 0, 0, 369, 0, 45, 46, 2237 811, 0, 0, 211, 0, 0, 0, 0, 235, 237, 2238 0, 0, 0, 0, 0, 0, 246, 0, 0, 0, 2239 1310, 1311, 0, 0, 0, 0, 598, 0, 0, 0, 2240 0, 598, 0, 0, 0, 0, 0, 0, 0, 0, 2241 369, 369, 369, 0, 0, 0, 0, 0, 0, 0, 2242 0, 0, 0, 0, 0, 0, 0, 0, 369, 211, 2243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2244 1343, 1344, 0, 0, 0, 0, 0, 211, 0, 0, 2245 1354, 0, 211, 0, 211, 0, 0, 0, 0, 0, 2246 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2247 0, 211, 0, 0, 211, 211, 509, 0, 0, 0, 2248 0, 0, 211, 0, 0, 0, 369, 0, 935, 0, 2249 0, 0, 509, 0, 0, 0, 211, 0, 0, 0, 2250 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 2251 0, 1389, 0, 1390, 1391, 1392, 0, 0, 0, 0, 2252 0, 716, 0, 0, 0, 1396, 156, 0, 0, 0, 2253 0, 0, 0, 0, 1407, 8, 9, 10, 11, 12, 2254 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2255 23, 24, 25, 0, 0, 26, 27, 28, 0, 1428, 2256 0, 0, 509, 509, 31, 0, 0, 8, 9, 10, 2257 11, 12, 0, 251, 0, 0, 0, 369, 0, 0, 2258 0, 622, 0, 256, 0, 369, 0, 0, 0, 0, 2259 0, 0, 34, 0, 0, 0, 31, 37, 0, 38, 2260 39, 40, 1466, 1467, 0, 0, 0, 0, 41, 42, 2261 0, 0, 0, 0, 0, 1472, 0, 0, 211, 0, 2262 0, 0, 1472, 0, 34, 0, 0, 0, 0, 37, 2263 0, 183, 184, 40, 43, 0, 157, 0, 0, 156, 2264 41, 42, 45, 46, 0, 0, 211, 0, 0, 0, 2265 0, 211, 0, 386, 1505, 0, 0, 0, 1511, 0, 2266 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, 2267 0, 0, 0, 0, 45, 46, 418, 0, 0, 0, 2268 716, 0, 0, 0, 0, 0, 1533, 0, 1534, 0, 2269 433, 0, 0, 0, 0, 524, 0, 0, 0, 438, 2270 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 2271 0, 0, 0, 0, 0, 0, 1549, 1550, 0, 165, 2272 0, 0, 211, 0, 1553, 1554, 0, 0, 0, 0, 2273 0, 0, 0, 0, 464, 0, 211, 0, 0, 474, 2274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2275 0, 0, 482, 0, 0, 0, 497, 0, 492, 0, 2276 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2277 0, 0, 0, 0, 0, 598, 0, 526, 8, 9, 2278 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2279 20, 21, 22, 23, 24, 25, 369, 369, 26, 27, 2280 28, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2281 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 2282 586, 0, 0, 0, 0, 591, 0, 0, 0, 211, 2283 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 2284 37, 0, 38, 39, 40, 0, 0, 0, 211, 0, 2285 0, 41, 42, 0, 636, 0, 524, 0, 637, 638, 2286 0, 640, 0, 0, 0, 0, 0, 0, 651, 652, 2287 0, 653, 654, 0, 655, 0, 656, 43, 0, 44, 2288 0, 0, 0, 0, 0, 45, 46, 0, 0, 0, 2289 0, 0, 0, 586, 0, 0, 0, 0, 0, 0, 2290 0, 671, 0, 0, 0, 0, 0, 0, 0, 341, 2291 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2292 0, 0, 716, 0, 0, 0, 682, 0, 0, 0, 2293 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, 2294 12, 0, 0, 414, 0, 0, 0, 0, 0, 0, 2295 414, 0, 708, 0, 0, 0, 0, 0, 711, 0, 2296 0, 211, 0, 464, 218, 31, 8, 9, 10, 11, 2297 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2298 22, 23, 24, 25, -293, 0, 26, 27, 28, 0, 2299 0, 211, 0, 34, 0, 31, 0, 0, 37, 746, 2300 0, 716, 40, 0, 0, 0, 0, 0, 0, 41, 2301 42, 0, 0, 0, 764, 0, 0, 0, 0, 0, 2302 0, 0, 414, 34, 0, 0, 211, 0, 37, 0, 2303 336, 337, 40, 0, -293, 719, 0, 211, 0, 41, 2304 42, 0, 0, 45, 46, 0, 0, 0, 0, 0, 2305 369, 369, 0, 790, 0, 0, 0, 0, 0, 218, 2306 0, 0, 800, 0, 0, 635, 0, 338, 321, 802, 2307 0, 0, 0, 45, 46, 810, 0, 414, 346, 0, 2308 0, 0, 0, 0, 824, 414, 582, 0, 414, 585, 2309 382, 382, 0, 0, 0, 0, 0, 0, 0, 364, 2310 0, 0, 0, 614, 0, 0, 0, 0, 0, 211, 2311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2312 0, 0, 632, 211, 864, 341, 205, 2, 206, 4, 2313 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2314 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2315 25, 0, 414, 26, 27, 28, 414, 0, 0, 0, 2316 810, 321, 31, 0, 0, 0, 0, 0, 905, 0, 2317 369, 0, 282, 283, 0, 284, 0, 0, 0, 0, 2318 0, 0, 0, 0, 0, 478, 0, 364, 0, 0, 2319 34, 0, 35, 0, 36, 0, 0, 207, 39, 251, 2320 0, 285, 0, 0, 0, 0, 0, 286, 0, 942, 2321 943, 287, 211, 0, 288, 289, 290, 291, 41, 42, 2322 0, 292, 293, 0, 0, 0, 524, 0, 524, 0, 2323 0, 0, 0, 414, 208, 0, 364, 0, 0, 0, 2324 45, 46, 980, 0, 294, 0, 379, 984, 0, 380, 2325 0, 0, 45, 46, 296, 297, 298, 299, 0, 0, 2326 0, 0, 524, 0, 524, 0, 0, 0, 0, 0, 2327 0, 0, 0, 0, 0, 414, 0, 0, 0, 341, 2328 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2329 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 2330 0, 0, 382, 0, 0, 0, 0, 211, 0, 0, 2331 0, 1018, 0, 0, 0, 0, 0, 0, 1019, 0, 2332 0, 0, 0, 0, 0, 414, 414, 0, 0, 0, 2333 0, 1021, 0, 1022, 0, 0, 0, 0, 0, 0, 2334 0, 0, 0, 0, 804, 364, 0, 1034, 0, 0, 2335 0, 0, 0, 1038, 0, 614, 0, 614, 614, 0, 2336 0, 0, 0, 0, 614, 1076, 0, 0, 1077, 0, 2337 0, 0, 0, 0, 843, 364, 0, 0, 0, 0, 2338 364, 0, 0, 0, 0, 0, 0, 0, 0, 364, 2339 364, 364, 0, 0, 0, 0, 710, 0, 0, 0, 2340 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 2341 0, 0, 414, 885, 0, 0, 414, 888, 0, 0, 2342 0, 0, 0, 890, 0, 0, 0, 0, 0, 0, 2343 0, 0, 0, 0, 0, 742, 0, 0, 0, 0, 2344 0, 0, 414, 0, 0, 591, 0, 0, 759, 0, 2345 0, 0, 0, 742, 0, 0, 742, 0, 0, 0, 2346 0, 0, 0, 0, 0, 364, 614, 0, 0, 768, 2347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2348 1147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2349 0, 789, 0, 0, 0, 0, 0, 0, 0, 341, 2350 364, 798, 0, 0, 414, 414, 0, 0, 346, 0, 2351 0, 0, 0, 759, 0, 0, 0, 0, 0, 0, 2352 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2353 18, 19, 20, 21, 22, 23, 24, 25, 526, 0, 2354 26, 27, 28, 0, 1212, 0, 0, 0, 414, 31, 2355 0, 0, 0, 0, 211, 0, 364, 0, 0, 0, 2356 0, 0, 863, 804, 364, 0, 0, 614, 0, 614, 2357 382, 0, 0, 0, 0, 0, 0, 34, 1224, 614, 2358 0, 0, 37, 1226, 207, 39, 40, 0, 0, 0, 2359 0, 1230, 0, 41, 42, 0, 8, 9, 10, 11, 2360 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2361 22, 23, 24, 25, -293, 0, 0, 0, 0, 43, 2362 0, 270, 0, 0, 1256, 31, 0, 45, 46, 0, 2363 0, 0, 0, 0, 0, 0, 1264, 0, 0, 1265, 2364 0, 1266, 0, 0, 0, 0, 0, 0, 0, 0, 2365 0, 804, 0, 34, 0, 1275, 1276, 0, 341, 364, 2366 414, 0, 414, 0, -293, 0, 414, 0, 759, 0, 2367 964, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 2368 975, 0, 0, 0, 0, 0, 983, 614, 614, 0, 2369 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2370 18, 19, 20, 21, 22, 23, 24, 25, -294, 0, 2371 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 2372 0, 0, 414, 0, 1328, 0, 0, 0, 1001, 1002, 2373 0, 0, 346, 0, 0, 0, 0, 0, 282, 283, 2374 0, 284, 0, 414, 1144, 0, 346, 34, 0, 0, 2375 0, 0, 0, 0, 364, 0, 0, 0, -294, 0, 2376 414, 1156, 0, 614, 614, 1161, 0, 285, 0, 0, 2377 0, 0, 0, 286, 0, 364, 364, 287, 0, 0, 2378 288, 289, 290, 291, 41, 42, 1032, 292, 293, 0, 2379 382, 0, 0, 0, 0, 0, 0, 0, 0, 1378, 2380 0, 1379, 0, 0, 0, 0, 0, 0, 0, 0, 2381 294, 0, 379, 1387, 0, 1388, 0, 758, 45, 46, 2382 296, 297, 298, 299, 0, 0, 0, 346, 0, 0, 2383 0, 0, 1395, 0, 0, 0, 0, 0, 414, 0, 2384 414, 0, 0, 0, 0, 414, 0, 0, 1413, 1415, 2385 0, 0, 0, 0, 614, 0, 0, 0, 0, 1420, 2386 0, 0, 1230, 0, 0, 0, 321, 0, 0, 0, 2387 0, 0, 0, 0, 0, 0, 0, 804, 414, 1244, 2388 0, 0, 0, 1442, 0, 0, 0, 0, 0, 0, 2389 0, 0, 1449, 0, 382, 1451, 0, 1453, 1455, 1457, 2390 975, 364, 0, 0, 742, 282, 283, 0, 284, 0, 2391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2392 0, 0, 0, 0, 0, 1151, 0, 0, 0, 0, 2393 0, 0, 0, 0, 285, 0, 1166, 1487, 0, 1489, 2394 641, 1230, 139, 140, 287, 0, 0, 288, 289, 290, 2395 291, 41, 42, 0, 292, 293, 1500, 0, 382, 0, 2396 1184, 0, 341, 0, 0, 0, 0, 0, 0, 0, 2397 0, 0, 0, 0, 0, 975, 975, 294, 0, 642, 2398 364, 643, 380, 0, 0, 45, 46, 296, 297, 298, 2399 299, 0, 0, 0, 0, 0, 1216, 0, 0, 0, 2400 0, 0, 0, 0, 1, 2, 206, 4, 5, 6, 2401 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2402 17, 18, 19, 20, 21, 22, 23, 24, 25, 364, 2403 364, 26, 27, 28, 29, 0, 0, 30, 0, 0, 2404 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2405 0, 975, 0, 0, 0, 0, 0, 0, 0, 0, 2406 0, 0, 0, 0, 0, 0, 0, 0, 34, 863, 2407 35, 0, 36, 0, 0, 38, 39, 0, 0, 0, 2408 0, 0, 0, 0, 1267, 1268, 0, 1, 2, 206, 2409 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2410 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2411 24, 25, 44, 0, 26, 27, 28, 29, 45, 46, 2412 30, 282, 283, 31, 1041, 1042, 0, 1043, 0, 0, 2413 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 0, 0, 2414 0, 1052, 0, 0, 0, 1053, 1054, 0, 33, 364, 2415 285, 34, 0, 35, 0, 36, 1055, 0, 38, 39, 2416 287, 0, 0, 288, 289, 290, 291, 41, 42, 0, 2417 292, 293, 0, 0, 0, 0, 0, 0, 0, 0, 2418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2419 0, 0, 0, 294, 0, 1056, 0, 0, 171, 0, 2420 0, 45, 46, 296, 297, 298, 299, 0, 0, 0, 2421 0, 1057, 0, 0, 0, 0, -128, 0, 0, 0, 2422 0, 0, 0, 0, 0, 1372, 0, 0, 742, 0, 2423 0, 0, 0, 0, 0, 0, 414, 0, 0, 0, 2424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2426 414, 414, 0, 0, 0, 0, 0, 0, 0, 0, 2427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2428 0, 0, 0, 0, 0, 414, 1, 2, 206, 4, 2429 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2430 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2431 25, 0, 0, 26, 27, 28, 29, 0, 0, 30, 2432 282, 283, 31, 284, 8, 9, 10, 11, 12, 13, 2433 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2434 24, 25, 0, 0, 26, 27, 28, 0, 0, 285, 2435 34, 0, 35, 31, 36, 286, 0, 38, 39, 287, 2436 0, 0, 288, 289, 290, 291, 41, 42, 0, 292, 2437 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2438 0, 34, 0, 0, 0, 0, 110, 0, 38, 39, 2439 0, 0, 294, 0, 44, 0, 0, 41, 42, 0, 2440 45, 46, 296, 297, 298, 299, 2, 206, 4, 5, 2080 2441 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2081 2442 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2082 355, 0, 26, 27, 28, 0, 0, 698, 698, 0, 2083 355, 31, 355, 0, 0, 0, 0, 224, 413, 0, 2084 355, 0, 421, 0, 355, 0, 0, 0, 0, 0, 2085 0, 0, 0, 80, 0, 0, 0, 0, 80, 34, 2086 0, 35, 0, 36, 37, 0, 208, 39, 40, 348, 2087 348, 0, 0, 0, 627, 41, 42, 0, 0, 0, 2088 87, 0, 0, 0, 0, 87, 0, 0, 0, 57, 2089 0, 0, 353, 353, 0, 353, 353, 0, 712, 0, 2090 0, 43, 0, 209, 0, 78, 0, 0, 0, 45, 2091 46, 0, 0, 0, 0, 75, 0, 0, 0, 413, 2092 0, 0, 0, 0, 0, 8, 9, 10, 11, 12, 2093 0, 0, 0, 0, 0, 355, 0, 0, 0, 0, 2094 0, 1283, 0, 0, 0, 0, 0, 0, 0, 0, 2095 353, 353, 225, 0, 31, 0, 0, 177, 0, 260, 2096 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 2097 0, 0, 0, 0, 0, 698, 0, 712, 0, 226, 2098 0, 118, 34, 0, 0, 0, 0, 37, 0, 184, 2099 185, 40, 0, 0, 0, 127, 127, 127, 41, 42, 2100 0, 0, 0, 0, 0, 0, 0, 698, 0, 0, 2101 576, 576, 0, 0, 0, 698, 698, 698, 0, 80, 2102 0, 353, 0, 0, 186, 0, 350, 350, 0, 0, 2103 0, 0, 45, 46, 356, 0, 0, 57, 57, 80, 2104 1188, 0, 0, 0, 0, 0, 87, 80, 355, 355, 2105 0, 355, 355, 0, 0, 0, 0, 0, 0, 0, 2106 57, 363, 0, 0, 223, 356, 87, 0, 127, 0, 2107 127, 78, 0, 118, 87, 0, 0, 0, 57, 698, 2108 0, 0, 0, 356, 0, 80, 75, 0, 0, 0, 2109 0, 0, 363, 0, 0, 276, 0, 883, 353, 0, 2110 353, 886, 0, 0, 0, 0, 355, 355, 0, 0, 2111 363, 0, 87, 0, 0, 0, 0, 0, 0, 0, 2112 0, 0, 0, 348, 348, 0, 0, 356, 0, 0, 2113 353, 0, 57, 0, 0, 0, 0, 57, 353, 353, 2114 353, 0, 0, 0, 0, 0, 350, 0, 0, 353, 2115 353, 127, 0, 0, 363, 0, 0, 0, 0, 127, 2116 0, 127, 127, 75, 0, 0, 127, 0, 127, 127, 2117 57, 118, 0, 168, 0, 173, 0, 355, 179, 180, 2118 181, 0, 183, 0, 0, 0, 0, 0, 0, 0, 2119 0, 356, 0, 1188, 0, 0, 0, 234, 0, 0, 2120 1188, 0, 353, 0, 0, 0, 0, 0, 0, 249, 2121 250, 0, 0, 0, 125, 128, 129, 0, 363, 0, 2122 224, 0, 0, 0, 0, 0, 8, 9, 10, 11, 2123 12, 0, 0, 576, 0, 356, 356, 356, 127, 0, 2124 0, 0, 78, 348, 0, 0, 0, 0, 0, 0, 2125 0, 1188, 0, 356, 355, 31, 355, 0, 1530, 0, 2126 0, 0, 363, 363, 363, 0, 0, 0, 57, 353, 2127 0, 356, 0, 0, 0, 0, 0, 0, 0, 0, 2128 363, 0, 80, 34, 0, 0, 355, 255, 37, 256, 2129 57, 0, 40, 0, 355, 355, 355, 57, 363, 41, 2130 42, 0, 0, 0, 0, 355, 355, 0, 80, 87, 2131 0, 356, 0, 0, 0, 0, 75, 0, 0, 78, 2132 0, 0, 0, 75, 0, 718, 0, 0, 0, 0, 2133 0, 0, 0, 45, 46, 87, 0, 0, 363, 8, 2134 9, 10, 11, 12, 0, 0, 356, 0, 57, 0, 2135 0, 413, 0, 0, 0, 0, 0, 0, 355, 0, 2136 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 2137 396, 0, 0, 363, 75, 0, 0, 0, 0, 0, 2138 415, 416, 0, 0, 0, 420, 0, 422, 423, 0, 2139 356, 0, 0, 0, 0, 0, 34, 0, 0, 0, 2140 356, 37, 356, 184, 185, 40, 0, 225, 0, 0, 2141 356, 0, 41, 42, 356, 0, 0, 363, 0, 8, 2142 9, 10, 11, 12, 0, 355, 0, 363, 1142, 363, 2143 0, 0, 0, 0, 226, 0, 0, 363, 905, 0, 2144 411, 363, 0, 0, 0, 1154, 45, 46, 31, 0, 2145 0, 8, 9, 10, 11, 12, 0, 0, 0, 0, 2146 0, 0, 0, 0, 591, 0, 599, 0, 0, 0, 2147 0, 0, 78, 0, 0, 80, 34, 623, 624, 78, 2148 31, 37, 0, 184, 185, 40, 0, 0, 0, 0, 2443 0, 0, 26, 27, 28, 0, 0, 0, 321, 282, 2444 283, 31, 284, 8, 9, 10, 11, 12, 13, 14, 2445 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2446 25, 0, 0, 26, 27, 28, 0, 0, 285, 34, 2447 0, 35, 31, 36, 286, 0, 38, 39, 287, 0, 2448 0, 288, 289, 290, 291, 41, 42, 0, 292, 293, 2449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2450 34, 0, 0, 0, 0, 0, 0, 38, 39, 0, 2451 0, 294, 0, 343, 0, 0, 0, 0, 758, 344, 2452 46, 296, 297, 298, 299, 2, 206, 4, 5, 6, 2453 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2454 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2455 0, 26, 27, 28, 0, 0, 0, 0, 282, 283, 2456 31, 284, 8, 9, 10, 11, 12, 13, 14, 15, 2457 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2458 0, 0, 26, 27, 28, 0, 0, 285, 34, 0, 2459 35, 31, 36, 286, 0, 38, 39, 287, 0, 0, 2460 288, 289, 290, 291, 41, 42, 0, 292, 293, 0, 2461 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2462 0, 0, 0, 0, 0, 0, 207, 39, 0, 0, 2463 294, 0, 963, 0, 0, 0, 0, 758, 344, 46, 2464 296, 297, 298, 299, 2, 206, 4, 5, 6, 7, 2465 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2466 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2467 26, 27, 28, 0, 0, 0, 0, 282, 283, 31, 2468 284, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2469 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2470 0, 0, 0, 0, 0, 0, 285, 34, 0, 35, 2471 31, 36, 286, 0, 38, 39, 287, 0, 0, 288, 2472 289, 290, 291, 41, 42, 0, 292, 293, 0, 0, 2473 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 2474 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 2475 0, 963, 0, 0, 0, 0, 758, 45, 46, 296, 2476 297, 298, 299, 2, 206, 4, 5, 6, 7, 8, 2477 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2478 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2479 27, 28, 0, 0, 0, 0, 282, 283, 31, 284, 2480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2482 0, 0, 0, 0, 0, 285, 34, 0, 35, 0, 2483 36, 286, 0, 38, 39, 287, 0, 0, 288, 289, 2484 290, 291, 41, 42, 0, 292, 293, 0, 0, 0, 2485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2486 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, 2487 343, 0, 0, 0, 0, 0, 344, 46, 296, 297, 2488 298, 299, 2, 206, 4, 5, 6, 7, 8, 9, 2489 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2490 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2491 28, 0, 0, 0, 0, 282, 283, 31, 284, 0, 2492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2494 0, 0, 0, 0, 285, 34, 0, 35, 0, 36, 2495 286, 0, 207, 39, 287, 0, 0, 288, 289, 290, 2496 291, 41, 42, 0, 292, 293, 0, 0, 0, 0, 2497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2498 0, 0, 0, 0, 0, 0, 0, 294, 0, 998, 2499 0, 0, 0, 0, 0, 999, 46, 296, 297, 298, 2500 299, 2, 206, 4, 5, 6, 7, 8, 9, 10, 2501 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2502 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2503 0, 0, 0, 0, 282, 283, 31, 284, 0, 0, 2504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2506 0, 0, 0, 285, 34, 0, 35, 0, 36, 286, 2507 0, 38, 39, 287, 0, 0, 288, 289, 290, 291, 2508 41, 42, 0, 292, 293, 0, 0, 0, 0, 0, 2509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2510 0, 0, 0, 0, 0, 0, 294, 0, 963, 0, 2511 0, 0, 0, 0, 344, 46, 296, 297, 298, 299, 2512 2, 206, 4, 5, 6, 7, 8, 9, 10, 11, 2513 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2514 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2515 0, 0, 0, 282, 283, 31, 284, 0, 0, 0, 2516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2518 0, 0, 285, 34, 0, 35, 0, 36, 286, 0, 2519 207, 39, 287, 0, 0, 288, 289, 290, 291, 41, 2520 42, 0, 292, 293, 0, 0, 0, 0, 0, 0, 2521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2522 0, 0, 0, 0, 0, 294, 0, 379, 0, 0, 2523 0, 0, 0, 45, 46, 296, 297, 298, 299, -516, 2524 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 2525 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2526 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2527 27, 28, 29, 0, 0, 30, 0, 0, 31, 32, 2528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2530 0, 0, 0, 33, 0, 0, 34, 0, 35, 0, 2531 36, 37, 0, 38, 39, 40, 0, 0, 0, 0, 2149 2532 0, 0, 41, 42, 0, 0, 0, 0, 0, 0, 2150 0, 0, 87, 0, 0, 356, 0, 0, 34, 0,2151 0, 0, 0, 37, 0, 184, 185, 40, 1505, 0,2152 411, 0, 0, 413, 41, 42, 45, 46, 0, 0,2153 78, 0, 363, 0, 0, 0, 0, 0, 0, 0,2154 0, 0, 0, 127, 127, 0, 0, 0, 0, 0,2155 266, 0, 0, 0, 0, 0, 0, 0, 45, 46,2156 0, 0, 0, 1242, 0, 0, 0, 0, 0, 0,2157 0, 0, 127, 0, 0, 127, 127, 0, 127, 0,2158 127, 127, 0, 0, 0, 127, 127, 1, 2, 207,2159 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,2160 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,2161 24, 25, -291, 0, 26, 27, 28, 29, 356, 356,2162 30, 356, 356, 31, 0, 0, 0, 0, 0, 0,2163 2533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2164 0, 80, 0, 0, 0, 363, 363, 0, 363, 363, 2165 0, 34, 0, 35, 0, 36, 0, 0, 38, 39, 2166 0, 0, -291, 0, 0, 0, 1012, 0, 87, 8, 2167 9, 10, 11, 12, 0, 0, 356, 356, 0, 0, 2534 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 2535 44, 0, 0, 0, 0, 0, 45, 46, 1, 2, 2536 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2537 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2538 23, 24, 25, 0, 0, 26, 27, 28, 29, 0, 2539 0, 30, 0, 0, 31, 32, 0, 0, 0, 0, 2168 2540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2169 0, 0, 0, 0, 0, 44, 283, 284, 31, 285, 2170 0, 45, 46, 363, 363, 0, 0, 0, 0, 0, 2541 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2542 0, 0, 34, 0, 35, 0, 36, 37, 0, 38, 2543 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 2171 2544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2172 0, 0, 0, 127, 127, 286, 34, 0, 0, 0,2173 0, 287, 0, 0, 0, 288, 0, 0, 289, 290,2174 291, 292, 41, 42, 0, 293, 294, 356, 0, 0,2175 2545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2176 0, 0, 795, 796, 0, 0, 0, 0, 295, 0, 2177 379, 0, 0, 0, 363, 0, 344, 46, 297, 298, 2178 299, 300, 0, 0, 0, 0, 0, 0, 0, 0, 2179 225, 829, 0, 0, 832, 833, 0, 836, 0, 838, 2180 839, 0, 0, 0, 840, 841, 0, 0, 0, 0, 2181 0, 0, 80, 0, 0, 0, 0, 226, 0, 925, 2182 0, 926, 0, 0, 356, 0, 356, 0, 929, 930, 2183 0, 0, 0, 935, 0, 0, 0, 0, 0, 87, 2184 0, 0, 0, 0, 0, 940, 0, 0, 0, 0, 2185 944, 363, 0, 363, 0, 0, 356, 0, 0, 0, 2186 0, 0, 0, 0, 356, 356, 356, 0, 0, 0, 2187 0, 0, 0, 0, 0, 356, 356, 0, 978, 0, 2188 127, 0, 0, 363, 0, 127, 0, 0, 0, 80, 2189 0, 363, 363, 363, 0, 0, 0, 0, 0, 0, 2190 0, 0, 363, 363, 0, 0, 0, 0, 0, 0, 2191 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 2192 0, 0, 0, 0, 0, 0, 0, 0, 356, 0, 2546 0, 0, 0, 0, 43, 0, 44, 0, 0, 0, 2547 -520, 0, 45, 46, 1, 2, 3, 4, 5, 6, 2548 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2549 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2550 0, 26, 27, 28, 29, 0, 0, 30, 0, 0, 2551 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 2193 2552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2194 166, 0, 969, 970, 0, 0, 0, 0, 0, 0, 2195 0, 0, 0, 0, 0, 363, 0, 219, 0, 0, 2196 1162, 0, 0, 8, 9, 10, 11, 12, 0, 0, 2197 0, 0, 0, 0, 0, 0, 0, 1023, 1024, 1025, 2198 1026, 0, 1028, 0, 0, 0, 0, 0, 0, 0, 2199 283, 284, 31, 285, 0, 356, 0, 1072, 0, 0, 2200 0, 0, 0, 0, 0, 166, 0, 0, 0, 273, 2201 0, 1078, 0, 0, 0, 0, 0, 0, 0, 286, 2202 34, 0, 363, 0, 0, 287, 0, 0, 0, 288, 2203 0, 0, 289, 290, 291, 292, 41, 42, 166, 293, 2204 294, 0, 80, 0, 0, 0, 127, 0, 369, 80, 2205 0, 1098, 375, 0, 0, 0, 0, 0, 0, 0, 2206 0, 0, 295, 0, 379, 0, 0, 0, 0, 87, 2207 1163, 46, 297, 298, 299, 300, 87, 8, 9, 10, 2553 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 2554 35, 0, 36, 37, 0, 38, 39, 40, 0, 0, 2555 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 2556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2558 43, 0, 44, 0, 0, 0, 0, 0, 45, 46, 2559 205, 2, 206, 4, 5, 6, 7, 8, 9, 10, 2208 2560 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2209 21, 22, 23, 24, 25, 0, 1129, 26, 27, 28, 2210 80, 166, 1136, 0, 1090, 0, 31, 1140, 0, 0, 2211 0, 0, 1144, 219, 1145, 0, 0, 0, 1147, 0, 2212 1148, 1149, 0, 0, 1152, 0, 0, 87, 0, 0, 2213 0, 166, 0, 1164, 34, 0, 0, 0, 0, 0, 2214 0, 208, 39, 0, 0, 0, 0, 0, 0, 0, 2215 0, 1179, 1180, 0, 0, 0, 375, 0, 0, 0, 2216 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 2217 0, 0, 0, 0, 0, 127, 0, 0, 1210, 0, 2218 0, 1212, 0, 0, 45, 46, 524, 0, 0, 0, 2219 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 2220 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 2221 0, 0, 0, 0, 232, 0, 236, 0, 238, 0, 2222 0, 0, 0, 0, 1226, 247, 0, 0, 0, 0, 2223 1230, 1231, 0, 0, 0, 0, 597, 0, 0, 0, 2224 0, 621, 0, 0, 0, 0, 0, 0, 0, 0, 2225 1247, 0, 0, 1251, 0, 0, 212, 1253, 236, 238, 2226 247, 0, 0, 0, 0, 1218, 0, 0, 0, 0, 2227 1261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2228 0, 0, 0, 1268, 0, 1270, 1271, 1272, 1273, 0, 2229 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 2230 0, 1280, 0, 1281, 0, 0, 0, 173, 0, 0, 2231 0, 0, 0, 0, 0, 0, 0, 166, 166, 0, 2232 0, 0, 0, 0, 369, 0, 0, 0, 0, 0, 2233 0, 0, 0, 0, 0, 0, 1309, 1310, 0, 0, 2234 0, 0, 0, 0, 0, 524, 0, 0, 0, 0, 2235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2236 212, 0, 236, 238, 247, 0, 0, 0, 0, 0, 2237 0, 0, 0, 715, 0, 0, 0, 0, 0, 0, 2238 0, 0, 0, 0, 0, 166, 1342, 1343, 0, 0, 2239 0, 0, 0, 0, 1304, 0, 1353, 524, 212, 524, 2240 0, 0, 524, 212, 166, 524, 0, 0, 0, 0, 2241 0, 0, 0, 0, 0, 0, 0, 369, 497, 0, 2242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2243 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2244 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2245 24, 25, -291, 0, 26, 27, 28, 1388, 0, 1389, 2246 1390, 1391, 0, 31, 0, 0, 212, 0, 0, 166, 2247 0, 1395, 0, 0, 0, 0, 0, 0, 0, 0, 2248 1406, 369, 0, 0, 0, 810, 0, 0, 212, 0, 2249 0, 34, 0, 236, 238, 0, 37, 0, 336, 337, 2250 40, 247, -291, 0, 0, 1427, 0, 41, 42, 0, 2251 0, 597, 0, 0, 321, 0, 597, 0, 0, 0, 2252 0, 0, 0, 0, 346, 369, 369, 369, 0, 157, 2253 0, 0, 0, 634, 0, 338, 382, 382, 0, 0, 2254 0, 45, 46, 369, 212, 0, 0, 0, 1465, 1466, 2255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2256 0, 1471, 212, 0, 0, 0, 0, 212, 1471, 212, 2257 283, 284, 0, 285, 0, 524, 0, 252, 0, 0, 2258 0, 0, 0, 0, 0, 0, 212, 257, 0, 212, 2259 212, 0, 0, 0, 0, 0, 0, 212, 0, 286, 2260 1504, 369, 0, 934, 1510, 287, 0, 321, 0, 288, 2261 0, 212, 289, 290, 291, 292, 41, 42, 212, 293, 2262 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2263 0, 478, 1532, 0, 1533, 0, 715, 0, 0, 0, 2264 0, 0, 295, 157, 379, 0, 0, 380, 0, 0, 2265 45, 46, 297, 298, 299, 300, 0, 386, 0, 0, 2266 0, 0, 1548, 1549, 0, 0, 0, 0, 0, 0, 2267 1552, 1553, 0, 0, 0, 0, 0, 0, 0, 0, 2268 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2269 0, 0, 369, 0, 433, 0, 621, 0, 0, 0, 2270 369, 0, 0, 438, 0, 0, 0, 0, 0, 0, 2271 0, 0, 0, 446, 0, 0, 0, 0, 0, 0, 2272 0, 0, 0, 0, 283, 284, 0, 285, 0, 0, 2273 0, 0, 212, 0, 0, 0, 0, 0, 464, 0, 2274 0, 0, 0, 474, 0, 0, 0, 382, 0, 0, 2275 0, 0, 0, 286, 0, 0, 482, 0, 0, 287, 2276 212, 0, 492, 288, 496, 212, 289, 290, 291, 292, 2277 41, 42, 0, 293, 294, 0, 0, 0, 0, 0, 2278 0, 526, 0, 0, 0, 0, 0, 0, 0, 0, 2279 0, 0, 0, 0, 0, 715, 295, 0, 379, 0, 2280 0, 0, 0, 757, 45, 46, 297, 298, 299, 300, 2281 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2282 0, 0, 0, 585, 0, 0, 0, 0, 590, 0, 2283 0, 0, 0, 0, 166, 0, 212, 0, 0, 0, 2284 0, 709, 0, 0, 0, 0, 0, 0, 0, 0, 2285 212, 0, 0, 0, 0, 0, 0, 635, 0, 0, 2286 0, 636, 637, 0, 639, 0, 0, 0, 0, 0, 2287 497, 650, 651, 0, 652, 653, 0, 654, 0, 655, 2288 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2289 597, 0, 0, 758, 0, 0, 585, 0, 741, 0, 2290 0, 741, 0, 0, 670, 0, 0, 0, 0, 0, 2291 0, 369, 369, 767, 0, 0, 0, 0, 0, 0, 2292 0, 0, 0, 0, 0, 0, 0, 0, 0, 681, 2293 0, 212, 0, 0, 0, 788, 0, 0, 0, 0, 2294 0, 0, 0, 212, 0, 797, 0, 0, 0, 0, 2295 0, 0, 346, 0, 0, 707, 0, 758, 0, 0, 2296 0, 710, 212, 0, 0, 0, 464, 0, 0, 0, 2297 0, 524, 0, 0, 0, 0, 206, 2, 207, 4, 2561 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2562 0, 0, 0, 0, 0, 0, 31, 0, 8, 9, 2563 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2564 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2565 28, 485, 486, 487, 34, 0, 35, 31, 36, 37, 2566 0, 207, 39, 40, 0, 0, 0, 0, 0, 0, 2567 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 2568 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 2569 0, 0, 38, 39, 0, 0, 43, 0, 208, 0, 2570 0, 0, 0, 0, 45, 46, 1, 2, 206, 4, 2298 2571 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2299 2572 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2300 25, 0, 745, 26, 27, 28, 862, 0, 0,0,2301 0, 0, 31, 0, 382, 0, 0, 763, 0, 0,2573 25, -293, 0, 26, 27, 28, 29, 0, 0, 30, 2574 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 2302 2575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2303 0, 0, 0, 0, 0, 0, 0, 715, 0, 0,2304 34, 0, 35, 0, 36, 0, 0, 208, 39, 0,2305 0, 0, 0, 283, 284, 789, 285, 0, 0, 0,2306 0, 0, 0, 0, 799, 0, 0, 0, 0, 0,2307 0, 801, 0, 0, 0, 212, 0, 809, 0, 219,2308 0, 0, 286, 0, 209, 0, 823, 0, 287, 0,2309 45, 46, 288, 0, 0, 289, 290, 291, 292, 41,2310 42, 0, 293, 294, 0, 212, 0, 0, 0, 0,2311 0, 0, 758, 0, 963, 0, 715, 0, 0, 341,2312 364, 0, 0, 0, 974, 295, 863, 379, 0, 0,2313 982, 0, 0, 45, 46, 297, 298, 299, 300, 0,2314 212, 0, 0, 0, 0, 0, 0, 0, 0, 0,2315 0, 212, 0, 414, 0, 0, 0, 0, 0, 0,2316 414, 0, 809, 0, 0, 369, 369, 0, 0, 0,2317 904, 0, 1000, 1001, 219, 0, 346, 0, 0, 0,2318 0, 0, 0, 0, 0, 0, 0, 0, 0, 507,2319 346, 509, 512, 0, 0, 0, 0, 0, 0, 515,2320 516, 252, 0, 0, 0, 0, 0, 0, 0, 0,2321 0, 941, 942, 509, 509, 0, 0, 0, 0, 0,2322 0, 0, 0, 212, 0, 0, 0, 0, 0, 0,2323 1031, 0, 414, 0, 382, 0, 0, 212, 0, 0,2324 0, 0, 0, 0, 979, 0, 0, 0, 0, 983,2325 0, 509, 8, 9, 10, 11, 12, 13, 14, 15,2326 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,2327 0, 346, 26, 27, 28, 0, 0, 0, 0, 0,2328 0, 31, 684, 0, 0, 369, 414, 509, 0, 0,2329 0, 0, 0, 0, 414, 581, 0, 414, 584, 0,2330 0, 0, 0, 0, 0, 0, 0, 0, 364, 34,2331 321, 0, 613, 1017, 0, 0, 38, 39, 0, 0,2332 1018, 0, 0, 0, 0, 0, 212, 0, 0, 0,2333 0, 631, 0, 1020, 341, 1021, 0, 0, 382, 0,2334 0, 524, 0, 524, 974, 0, 0, 0, 741, 1033,2335 0, 0, 0, 685, 0, 1037, 0, 686, 0, 45,2336 46, 414, 0, 0, 0, 414, 0, 1075, 0, 1150,2337 1076, 0, 0, 0, 0, 0, 0, 524, 0, 524,2338 1165, 0, 0, 0, 0, 0, 0, 0, 0, 0,2339 0, 0, 0, 0, 0, 0, 364, 0, 0, 0,2340 0, 0, 382, 0, 1183, 0, 166, 0, 0, 0,2341 0, 0, 0, 0, 0, 0, 0, 0, 0, 974,2342 974, 212, 8, 9, 10, 11, 12, 13, 14, 15,2343 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,2344 1215, 0, 414, 0, 0, 364, 0, 590, 0, 0,2345 0, 31, 0, 0, 0, 509, 509, 509, 509, 509,2346 509, 509, 509, 509, 509, 509, 509, 509, 509, 509,2347 509, 509, 509, 0, 0, 0, 0, 283, 284, 34,2348 285, 0, 1146, 0, 414, 0, 0, 0, 341, 364,2349 0, 0, 0, 0, 0, 974, 0, 0, 0, 0,2350 0, 0, 0, 0, 0, 0, 286, 0, 0, 0,2351 0, 0, 287, 862, 0, 0, 288, 0, 0, 289,2352 290, 291, 292, 41, 42, 0, 293, 294, 1266, 1267,2353 0, 0, 0, 414, 414, 0, 0, 0, 0, 0,2354 526, 0, 0, 0, 0, 0, 1211, 0, 0, 295,2355 0, 379, 803, 364, 971, 0, 0, 45, 46, 297,2356 298, 299, 300, 613, 0, 613, 613, 0, 0, 0,2357 0, 0, 613, 0, 0, 0, 0, 0, 0, 0,2358 1223, 0, 842, 364, 0, 1225, 0, 0, 364, 0,2359 0, 0, 0, 1229, 0, 0, 0, 364, 364, 364,2360 0, 509, 0, 0, 0, 0, 0, 0, 0, 0,2361 0, 0, 0, 0, 0, 364, 0, 0, 0, 0,2362 414, 884, 0, 0, 414, 887, 1255, 0, 0, 0,2363 0, 889, 0, 0, 0, 0, 0, 0, 1263, 0,2364 0, 1264, 0, 1265, 0, 0, 0, 0, 0, 0,2365 414, 0, 0, 0, 0, 0, 0, 1274, 1275, 0,2366 0, 0, 509, 0, 0, 0, 0, 0, 212, 1371,2367 0, 0, 741, 364, 613, 0, 0, 0, 0, 1288,2368 2576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2369 0, 0, 509, 0, 0, 0, 0, 0, 0, 0, 2370 0, 0, 0, 0, 0, 0, 0, 341, 364, 0, 2371 0, 0, 414, 414, 0, 0, 0, 0, 0, 0, 2372 0, 0, 0, 0, 0, 0, 1327, 0, 0, 0, 2373 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2374 17, 18, 19, 20, 21, 22, 23, 24, 25, -291, 2375 0, 26, 27, 28, 0, 0, 414, 0, 0, 0, 2376 31, 0, 0, 0, 364, 0, 0, 0, 0, 0, 2377 0, 803, 364, 0, 0, 613, 0, 613, 0, 0, 2378 0, 0, 0, 0, 0, 0, 0, 613, 34, 0, 2379 0, 0, 0, 37, 0, 336, 337, 40, 0, -291, 2380 0, 1377, 0, 1378, 41, 42, 0, 0, 0, 0, 2381 0, 0, 509, 0, 0, 1386, 0, 1387, 0, 0, 2382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2383 0, 0, 338, 0, 1394, 0, 0, 0, 45, 46, 2384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2385 1412, 1414, 0, 0, 0, 0, 0, 509, 0, 803, 2386 0, 1419, 0, 0, 1229, 0, 341, 364, 414, 0, 2387 414, 0, 0, 0, 414, 0, 0, 0, 0, 0, 2388 0, 0, 321, 0, 0, 1441, 0, 0, 0, 0, 2389 0, 0, 509, 0, 1448, 613, 613, 1450, 0, 1452, 2390 1454, 1456, 0, 0, 0, 509, 8, 9, 10, 11, 2391 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2392 22, 23, 24, 25, -291, 0, 0, 0, 0, 0, 2393 414, 0, 0, 0, 0, 31, 0, 0, 0, 1486, 2394 0, 1488, 0, 1229, 0, 0, 509, 0, 0, 0, 2395 0, 414, 1143, 0, 0, 0, 0, 0, 1499, 0, 2396 0, 0, 364, 34, 0, 0, 0, 0, 414, 1155, 2397 0, 613, 613, 1160, -291, 0, 0, 0, 0, 0, 2398 0, 0, 0, 364, 364, 0, 0, 0, 0, 0, 2399 0, 0, 0, 0, 0, 0, 0, 1, 2, 207, 2400 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2401 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2402 24, 25, 0, 509, 26, 27, 28, 29, 0, 0, 2403 30, 283, 284, 31, 285, 0, 0, 0, 0, 0, 2404 0, 0, 0, 0, 0, 0, 414, 0, 414, 0, 2405 0, 0, 0, 414, 0, 0, 0, 0, 0, 0, 2406 286, 34, 613, 35, 0, 36, 287, 0, 38, 39, 2407 288, 0, 0, 289, 290, 291, 292, 41, 42, 0, 2408 293, 294, 0, 509, 509, 803, 414, 1243, 0, 0, 2409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2410 0, 0, 0, 295, 0, 1055, 0, 0, 0, 364, 2411 0, 45, 46, 297, 298, 299, 300, 0, 0, 0, 2412 0, 0, 0, 0, 0, 0, -126, 0, 1, 2, 2413 207, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2414 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2415 23, 24, 25, 0, 0, 26, 27, 28, 29, 0, 2416 0, 30, 283, 284, 31, 1040, 1041, 0, 1042, 0, 2417 341, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 0, 2418 0, 0, 1051, 0, 0, 0, 1052, 1053, 364, 33, 2419 0, 286, 34, 0, 35, 0, 36, 1054, 0, 38, 2420 39, 288, 0, 0, 289, 290, 291, 292, 41, 42, 2421 0, 293, 294, 0, 0, 0, 0, 0, 0, 0, 2422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2423 0, 0, 0, 0, 295, 0, 1055, 364, 364, 172, 2424 0, 0, 45, 46, 297, 298, 299, 300, 0, 0, 2425 0, 0, 1056, 0, 0, 0, 0, -126, 0, 0, 2426 0, 0, 1, 2, 207, 4, 5, 6, 7, 8, 2427 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2428 19, 20, 21, 22, 23, 24, 25, 0, 509, 26, 2429 27, 28, 29, 0, 0, 30, 283, 284, 31, 285, 2430 0, 0, 0, 0, 509, 0, 0, 0, 0, 0, 2431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2432 0, 0, 0, 0, 0, 286, 34, 0, 35, 0, 2433 36, 287, 0, 38, 39, 288, 0, 0, 289, 290, 2434 291, 292, 41, 42, 0, 293, 294, 0, 0, 0, 2435 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 2436 0, 0, 0, 0, 0, 0, 0, 0, 295, 0, 2437 44, 0, 0, 0, 509, 509, 45, 46, 297, 298, 2438 299, 300, 0, 2, 207, 4, 5, 6, 7, 8, 2439 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2440 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2441 27, 28, 0, 0, 0, 0, 283, 284, 31, 285, 2442 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2443 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2444 25, -292, 0, 0, 414, 286, 34, 0, 35, 0, 2445 36, 287, 31, 38, 39, 288, 0, 0, 289, 290, 2446 291, 292, 41, 42, 0, 293, 294, 0, 414, 414, 2447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2448 34, 0, 0, 0, 0, 0, 0, 0, 295, 0, 2449 343, -292, 0, 414, 0, 757, 344, 46, 297, 298, 2450 299, 300, 2, 207, 4, 5, 6, 7, 8, 9, 2577 34, 0, 35, 0, 36, 0, 0, 38, 39, 0, 2578 0, -293, 2, 206, 4, 5, 6, 7, 8, 9, 2451 2579 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2452 2580 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2453 28, 0, 0, 0, 0, 283, 284, 31, 285, 8, 2454 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2455 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2456 27, 28, 0, 0, 286, 34, 0, 35, 31, 36, 2457 287, 0, 38, 39, 288, 0, 0, 289, 290, 291, 2458 292, 41, 42, 0, 293, 294, 0, 0, 0, 0, 2459 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 2460 0, 111, 0, 38, 39, 0, 0, 295, 0, 962, 2461 0, 0, 41, 42, 757, 344, 46, 297, 298, 299, 2462 300, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2463 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2464 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2465 0, 0, 0, 0, 283, 284, 31, 285, 8, 9, 2466 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2467 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2468 28, 0, 0, 286, 34, 0, 35, 31, 36, 287, 2469 0, 38, 39, 288, 0, 0, 289, 290, 291, 292, 2470 41, 42, 0, 293, 294, 0, 0, 0, 0, 0, 2471 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 2472 0, 0, 38, 39, 0, 0, 295, 0, 962, 0, 2473 0, 0, 0, 757, 45, 46, 297, 298, 299, 300, 2474 2, 207, 4, 5, 6, 7, 8, 9, 10, 11, 2475 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2476 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2477 0, 0, 0, 283, 284, 31, 285, 8, 9, 10, 2478 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2479 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2480 0, 0, 286, 34, 0, 35, 31, 36, 287, 0, 2481 38, 39, 288, 0, 0, 289, 290, 291, 292, 41, 2482 42, 0, 293, 294, 0, 0, 0, 0, 0, 0, 2483 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 2484 0, 208, 39, 0, 0, 295, 0, 343, 0, 0, 2485 0, 0, 0, 344, 46, 297, 298, 299, 300, 2, 2486 207, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2487 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2488 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2489 0, 0, 283, 284, 31, 285, 0, 0, 0, 0, 2581 28, 0, 0, 0, 44, 0, 0, 31, 0, 0, 2582 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 2490 2583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2584 0, 0, 0, 0, 0, 34, 0, 35, 0, 36, 2585 37, 0, 207, 39, 40, 0, 0, 0, 0, 0, 2586 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, 2491 2587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2492 0, 286, 34, 0, 35, 0, 36, 287, 0, 208, 2493 39, 288, 0, 0, 289, 290, 291, 292, 41, 42, 2494 0, 293, 294, 0, 0, 0, 0, 0, 0, 0, 2495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2496 0, 0, 0, 0, 295, 0, 997, 0, 0, 0, 2497 0, 0, 998, 46, 297, 298, 299, 300, 2, 207, 2498 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2499 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2500 24, 25, 0, 0, 26, 27, 28, 0, 0, 0, 2501 0, 283, 284, 31, 285, 0, 0, 0, 0, 0, 2502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2504 286, 34, 0, 35, 0, 36, 287, 0, 38, 39, 2505 288, 0, 0, 289, 290, 291, 292, 41, 42, 0, 2506 293, 294, 0, 0, 0, 0, 0, 0, 0, 0, 2507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2508 0, 0, 0, 295, 0, 962, 0, 0, 0, 0, 2509 0, 344, 46, 297, 298, 299, 300, 2, 207, 4, 2588 0, 0, 0, 0, 0, 0, 0, 43, 0, 208, 2589 0, 0, 0, 0, 0, 45, 46, 2, 206, 4, 2510 2590 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2511 2591 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2512 2592 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2513 283, 284, 31, 285, 0, 0, 0, 0, 0, 0, 2593 0, 0, 31, 0, 0, 0, 0, 8, 9, 10, 2594 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2595 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2596 34, 0, 35, 0, 36, 0, 31, 38, 39, 0, 2597 2, 206, 4, 5, 6, 7, 8, 9, 10, 11, 2598 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2599 22, 23, 24, 25, 34, 0, 26, 27, 28, 0, 2600 0, 38, 39, -400, 678, 31, 0, 0, 0, 0, 2601 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 2514 2602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2515 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 2516 34, 0, 35, 0, 36, 287, 0, 208, 39, 288, 2517 0, 0, 289, 290, 291, 292, 41, 42, 0, 293, 2518 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2603 0, 0, 0, 34, 0, 35, 635, 36, 338, 0, 2604 38, 39, 0, 0, 45, 46, 0, 0, 0, 0, 2519 2605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2520 0, 0, 295, 0, 379, 0, 0, 0, 0, 0, 2521 45, 46, 297, 298, 299, 300, -515, 0, 0, 1, 2522 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2606 0, 0, 1351, 0, 0, 0, 0, 0, 0, 0, 2607 0, 0, 0, 0, 0, 0, 0, 678, 0, 0, 2608 0, 0, 0, 45, 46, 2, 206, 4, 5, 6, 2609 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2610 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2611 0, 26, 27, 28, 0, 0, 0, 0, 0, 0, 2612 31, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2613 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2614 24, 25, 0, 0, 26, 27, 28, 0, 34, 0, 2615 35, 0, 36, 31, 685, 38, 39, 0, 0, 0, 2616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2617 0, 0, 0, 0, 0, 0, 0, 1353, 0, 0, 2618 0, 34, 0, 0, 0, 0, 0, 0, 38, 39, 2619 0, 0, 678, 0, 0, 0, 0, 0, 45, 46, 2620 2, 206, 4, 5, 6, 7, 8, 9, 10, 11, 2523 2621 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2524 22, 23, 24, 25, 0, 0, 26, 27, 28, 29,2525 0, 0, 30, 0, 0, 31, 32, 0, 0, 0,2622 22, 23, 24, 25, 0, 686, 26, 27, 28, 687, 2623 0, 45, 46, 0, 0, 31, 0, 0, 0, 0, 2526 2624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2527 2625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2528 33, 0, 0, 34, 0, 35, 0, 36, 37, 0, 2529 38, 39, 40, 0, 0, 0, 0, 0, 0, 41, 2530 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2626 0, 0, 0, 34, 0, 35, 0, 36, 0, 0, 2627 207, 39, 0, 2, 206, 4, 5, 6, 7, 8, 2628 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2629 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2630 27, 28, 0, 0, 0, 0, 0, 270, 31, 0, 2631 0, 0, 0, 45, 46, 0, 0, 0, 0, 0, 2531 2632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2532 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 2533 0, 0, 0, 45, 46, 1, 2, 3, 4, 5, 2534 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2535 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2536 0, 0, 26, 27, 28, 29, 0, 0, 30, 0, 2537 0, 31, 32, 0, 0, 0, 0, 0, 0, 0, 2538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2539 0, 0, 0, 0, 0, 0, 33, 0, 0, 34, 2540 0, 35, 0, 36, 37, 0, 38, 39, 40, 0, 2541 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 2542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2544 0, 43, 0, 44, 0, 0, 0, -519, 0, 45, 2545 46, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2546 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2547 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2548 28, 29, 0, 0, 30, 0, 0, 31, 32, 0, 2549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2551 0, 0, 33, 0, 0, 34, 0, 35, 0, 36, 2552 37, 0, 38, 39, 40, 0, 0, 0, 0, 0, 2553 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, 2554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2555 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 2556 0, 0, 0, 0, 0, 45, 46, 1, 2, 207, 2557 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2558 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2559 24, 25, 0, 0, 26, 27, 28, 29, 0, 0, 2560 30, 0, 0, 31, 0, 0, 0, 0, 0, 0, 2561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2563 0, 34, 0, 35, 0, 36, 0, 0, 38, 39, 2564 0, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2565 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2566 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 2567 0, 0, 0, 0, 0, 44, 31, 0, 0, 0, 2568 0, 45, 46, 0, 0, 0, 0, 0, 0, 0, 2569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2570 0, 0, 0, 0, 34, 0, 35, 0, 36, 37, 2571 0, 208, 39, 40, 0, 0, 0, 0, 0, 0, 2572 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 2573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2574 0, 0, 0, 0, 0, 0, 43, 0, 209, 0, 2575 0, 0, 0, 0, 45, 46, 2, 207, 4, 5, 2633 0, 0, 0, 0, 0, 0, 34, 0, 35, 0, 2634 36, 0, 0, 38, 39, 0, 2, 206, 4, 5, 2576 2635 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2577 2636 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2578 2637 0, 0, 26, 27, 28, 0, 0, 0, 0, 0, 2579 0, 31, 0, 0, 0, 0, 8, 9, 10, 11,2580 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,2581 22, 23, 24, 25, 0, 0, 26, 27, 28, 34,2582 0, 35, 0, 36, 0, 31, 38, 39, 0, 2,2583 20 7, 4, 5, 6, 7, 8, 9, 10, 11, 12,2638 678, 31, 0, 0, 0, 0, 45, 46, 0, 0, 2639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2640 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2641 0, 35, 0, 36, 0, 0, 38, 39, 0, 2, 2642 206, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2584 2643 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2585 23, 24, 25, 34, 0, 26, 27, 28, 0, 0,2586 38, 39, -399, 677, 31, 0, 0, 0, 0, 45,2644 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2645 0, 0, 0, 593, 31, 0, 0, 0, 0, 45, 2587 2646 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2588 2647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2589 0, 0, 34, 0, 35, 634, 36, 338, 0, 38, 2590 39, 0, 0, 45, 46, 0, 0, 0, 0, 0, 2648 0, 0, 34, 0, 35, 0, 36, 0, 0, 207, 2649 39, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2650 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2651 0, 26, 27, 28, 0, 0, 0, 0, 282, 283, 2652 31, 284, 0, 0, 0, 0, 208, 0, 0, 0, 2653 0, 0, 45, 46, 0, 0, 0, 0, 0, 0, 2654 0, 0, 0, 0, 0, 0, 0, 285, 34, 0, 2655 0, 0, 0, 286, 0, 38, 39, 287, 0, 0, 2656 288, 289, 290, 291, 41, 42, 0, 292, 293, 0, 2591 2657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2592 0, 1350, 0, 0, 0, 0, 0, 0, 0, 0, 2593 0, 0, 0, 0, 0, 0, 677, 0, 0, 0, 2594 0, 0, 45, 46, 2, 207, 4, 5, 6, 7, 2658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2659 294, 0, 517, 0, 0, 171, 0, 0, 45, 46, 2660 296, 297, 298, 299, 8, 9, 10, 11, 12, 13, 2661 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2662 24, 25, 0, 0, 26, 27, 28, 0, 0, 0, 2663 0, 282, 283, 31, 284, 8, 9, 10, 11, 12, 2664 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2665 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2666 285, 34, 0, 0, 31, 0, 286, 0, 38, 39, 2667 287, 0, 0, 288, 289, 290, 291, 41, 42, 0, 2668 292, 293, 0, 0, 0, 0, 0, 0, 0, 0, 2669 0, 0, 34, 0, 0, 0, 0, 37, 0, 336, 2670 337, 40, 0, 294, -36, 295, 0, 0, 41, 42, 2671 0, 45, 46, 296, 297, 298, 299, 8, 9, 10, 2672 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2673 21, 22, 23, 24, 25, 0, 338, 26, 27, 28, 2674 0, 0, 45, 46, 282, 283, 31, 284, 8, 9, 2675 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2676 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2677 28, 0, 0, 285, 34, 0, 0, 31, 0, 286, 2678 0, 38, 39, 287, 0, 0, 288, 289, 290, 291, 2679 41, 42, 0, 292, 293, 0, 0, 0, 0, 0, 2680 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 2681 110, 0, 38, 39, 0, 0, 294, 0, 295, 0, 2682 0, 41, 42, 0, 45, 46, 296, 297, 298, 299, 2683 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2684 18, 19, 20, 21, 22, 23, 24, 25, 0, 44, 2685 26, 27, 28, 0, 0, 45, 46, 282, 283, 31, 2686 284, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2687 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2688 0, 26, 27, 28, 0, 0, 285, 34, 0, 0, 2689 31, 685, 286, 0, 38, 39, 287, 0, 0, 288, 2690 289, 290, 291, 41, 42, 0, 292, 293, 0, 0, 2691 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 2692 0, 0, 0, 0, 0, 38, 39, 0, 0, 294, 2693 0, 157, 0, 0, 0, 0, 0, 45, 46, 296, 2694 297, 298, 299, 8, 9, 10, 11, 12, 13, 14, 2695 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2696 25, 0, 686, 26, 27, 28, 1092, 0, 45, 46, 2697 282, 283, 31, 284, 8, 9, 10, 11, 12, 13, 2698 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2699 24, 25, 0, 0, 26, 27, 28, 0, 0, 285, 2700 34, 0, 0, 31, 685, 286, 0, 38, 39, 287, 2701 0, 0, 288, 289, 290, 291, 41, 42, 0, 292, 2702 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2703 0, 34, 0, 0, 0, 0, 0, 0, 38, 39, 2704 0, 0, 294, 0, 593, 0, 0, 0, 0, 0, 2705 45, 46, 296, 297, 298, 299, 8, 9, 10, 11, 2706 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2707 22, 23, 24, 25, 0, 686, 26, 27, 28, 1221, 2708 0, 45, 46, 282, 283, 31, 284, 0, 0, 0, 2709 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2710 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2711 24, 25, 285, 34, 26, 27, 28, 0, 286, 0, 2712 38, 39, 287, 31, 0, 288, 289, 290, 291, 41, 2713 42, 0, 292, 293, 0, 0, 0, 0, 0, 0, 2714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2715 0, 34, 0, 0, 0, 294, 0, 379, 38, 39, 2716 0, 0, 0, 45, 46, 296, 297, 298, 299, 467, 2717 2, 206, 4, 5, 6, 7, 8, 9, 10, 11, 2718 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2719 22, 23, 24, 25, 0, 257, 26, 27, 28, 0, 2720 0, 45, 46, 0, 0, 31, 0, 0, 0, 8, 2721 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2722 19, 20, 21, 22, 23, 24, 25, -293, 0, 26, 2723 27, 28, 0, 34, 0, 35, 0, 36, 31, 0, 2724 38, 39, 0, 0, 0, 0, 0, 8, 9, 10, 2725 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2726 21, 22, 23, 24, 25, 0, 34, 26, 27, 28, 2727 0, 37, 0, 336, 337, 40, 31, -293, 0, 0, 2728 -3, 0, 41, 42, 0, 8, 9, 10, 11, 12, 2729 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2730 23, 24, 25, -293, 34, 26, 27, 28, 0, 37, 2731 338, 336, 337, 40, 31, 0, 45, 46, 0, 0, 2732 41, 42, 0, 8, 9, 10, 11, 12, 13, 14, 2733 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2734 25, 0, 34, 26, 27, 28, 635, 0, 338, 38, 2735 39, 0, 31, -293, 45, 46, 8, 9, 10, 11, 2736 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2737 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2738 34, 0, 0, 0, 0, 31, 338, 38, 39, 0, 2739 0, 0, 45, 46, 8, 9, 10, 11, 12, 13, 2740 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2741 24, 25, 0, 34, 26, 27, 28, 0, 0, 0, 2742 207, 39, 0, 31, 157, 0, 0, 0, 0, 0, 2743 45, 46, 8, 9, 10, 11, 12, 13, 14, 15, 2744 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2745 0, 34, 26, 27, 28, 0, 0, 270, 38, 39, 2746 0, 31, 0, 45, 46, 8, 9, 10, 11, 12, 2747 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2748 23, 24, 25, 0, 0, 26, 27, 28, 0, 34, 2749 0, 0, 0, 0, 31, 338, 38, 39, 0, 0, 2750 0, 45, 46, 8, 9, 10, 11, 12, 13, 14, 2751 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2752 25, 0, 34, 26, 27, 28, 0, 0, 0, 38, 2753 39, 0, 31, 686, 0, 0, 0, 0, 0, 45, 2754 46, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2755 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2756 34, 26, 27, 28, 0, 0, 593, 38, 39, 0, 2757 31, 0, 45, 46, 2, 206, 4, 5, 6, 7, 2758 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2759 18, 19, 20, 21, 22, 23, 24, 25, 34, 0, 2760 26, 27, 28, 0, 44, 207, 39, 0, 0, 31, 2761 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 2762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2763 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 2764 0, 36, 0, 0, 38, 39, 0, 0, 45, 46, 2765 282, 283, 0, 284, 1042, 0, 1043, 0, 0, 1044, 2766 1045, 1046, 1047, 1048, 1049, 1050, 1051, 0, 0, 1525, 2767 1052, 0, 0, 0, 1053, 1054, 0, 33, 0, 285, 2768 -413, 0, 0, 0, 0, 1055, 0, 0, 0, 287, 2769 0, 0, 288, 289, 290, 291, 41, 42, 0, 292, 2770 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2772 0, 0, 294, 0, 379, 0, 0, 171, 0, 0, 2773 45, 46, 296, 297, 298, 299, 0, 0, 282, 283, 2774 1057, 284, 1042, 0, 1043, -128, 0, 1044, 1045, 1046, 2775 1047, 1048, 1049, 1050, 1051, 0, 0, 0, 1052, 0, 2776 0, 0, 1053, 1054, 0, 33, 0, 285, 0, 0, 2777 0, 0, 0, 1055, 0, 0, 0, 287, 0, 0, 2778 288, 289, 290, 291, 41, 42, 0, 292, 293, 0, 2779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2781 294, 0, 379, 0, 0, 171, 0, 0, 45, 46, 2782 296, 297, 298, 299, 0, 0, 0, 0, 1057, 0, 2783 0, 0, 0, -128, 2, 206, 4, 5, 6, 7, 2595 2784 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2596 2785 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2597 2786 26, 27, 28, 0, 0, 0, 0, 0, 0, 31, 2598 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2599 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2600 25, 0, 0, 26, 27, 28, 0, 34, 0, 35, 2601 0, 36, 31, 684, 38, 39, 0, 0, 0, 0, 2787 0, 282, 283, 0, 284, 1042, 0, 1043, 1399, 1400, 2788 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 0, 0, 2789 1525, 1052, 0, 0, 0, 1053, 1054, 34, 33, 35, 2790 285, 36, 0, 0, 38, 39, 1055, 0, 0, 0, 2791 287, 0, 0, 288, 289, 290, 291, 41, 42, 0, 2792 292, 293, 0, 0, 0, 0, 1312, 0, 0, 0, 2602 2793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2603 0, 0, 0, 0, 0, 0, 1352, 0, 0, 0,2604 34, 0, 0, 0, 0, 0, 0, 38, 39, 0,2605 0, 677, 0, 0, 0, 0, 0, 45, 46, 2,2606 207, 4, 5, 6, 7, 8, 9, 10, 11, 12,2607 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,2608 23, 24, 25, 0, 685, 26, 27, 28, 1091, 0,2609 45, 46, 0, 0, 31, 0, 0, 0, 0, 0,2794 0, 0, 0, 294, 0, 379, 0, 0, 171, 0, 2795 0, 45, 46, 296, 297, 298, 299, 0, 0, 282, 2796 283, 1057, 284, 1042, 0, 1043, 1399, 1400, 1044, 1045, 2797 1046, 1047, 1048, 1049, 1050, 1051, 0, 0, 0, 1052, 2798 0, 0, 0, 1053, 1054, 0, 33, 0, 285, 0, 2799 0, 0, 0, 0, 1055, 0, 0, 0, 287, 0, 2800 0, 288, 289, 290, 291, 41, 42, 0, 292, 293, 2610 2801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2611 2802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2612 0, 0, 34, 0, 35, 0, 36, 0, 0, 208, 2613 39, 0, 2, 207, 4, 5, 6, 7, 8, 9, 2614 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2615 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2616 28, 0, 0, 0, 0, 0, 271, 31, 0, 0, 2617 0, 0, 45, 46, 0, 0, 0, 0, 0, 0, 2618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2619 0, 0, 0, 0, 0, 34, 0, 35, 0, 36, 2620 0, 0, 38, 39, 0, 2, 207, 4, 5, 6, 2803 0, 294, 0, 379, 0, 0, 171, 0, 0, 45, 2804 46, 296, 297, 298, 299, 0, 0, 282, 283, 1057, 2805 284, 1042, 0, 1043, 0, 0, 1044, 1045, 1046, 1047, 2806 1048, 1049, 1050, 1051, 0, 0, 0, 1052, 0, 0, 2807 0, 1053, 1054, 0, 33, 0, 285, 0, 0, 0, 2808 0, 0, 1055, 0, 0, 0, 287, 0, 0, 288, 2809 289, 290, 291, 41, 42, 0, 292, 293, 0, 0, 2810 0, 0, 0, 0, 282, 283, 0, 284, 0, 0, 2811 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 2812 0, 379, 0, 0, 171, 0, 0, 45, 46, 296, 2813 297, 298, 299, 285, 0, 0, 0, 1057, 0, 286, 2814 0, 0, 0, 287, 0, 0, 288, 289, 290, 291, 2815 41, 42, 0, 292, 293, 0, 0, 0, 0, 0, 2816 0, 282, 283, 0, 284, 0, 0, 0, 0, 0, 2817 0, 0, 0, 0, 0, 0, 294, 0, 379, 0, 2818 0, 972, 0, 0, 45, 46, 296, 297, 298, 299, 2819 285, 0, 0, 0, 0, 0, 286, 0, 0, 0, 2820 287, 0, 0, 288, 289, 290, 291, 41, 42, 0, 2821 292, 293, 0, 0, 0, 0, 0, 0, 282, 283, 2822 0, 284, 0, 0, 0, 0, 0, 0, 0, 0, 2823 0, 0, 0, 294, 0, 379, 0, 282, 283, 0, 2824 284, 45, 46, 296, 297, 298, 299, 285, 0, 0, 2825 0, 0, 0, 286, 0, 0, 0, 287, 0, 0, 2826 288, 289, 290, 291, 41, 42, 285, 292, 293, 0, 2827 0, 0, 286, 0, 0, 0, 287, 0, 0, 288, 2828 289, 290, 291, 41, 42, 0, 292, 293, 0, 0, 2829 294, 0, 379, 0, 282, 283, 0, 284, 709, 46, 2830 296, 297, 298, 299, 0, 0, 0, 0, 0, 294, 2831 0, 379, 0, 282, 283, 0, 284, 344, 46, 296, 2832 297, 298, 299, 285, 0, 0, 0, 0, 0, 286, 2833 0, 0, 0, 287, 0, 0, 288, 289, 290, 291, 2834 41, 42, 285, 292, 293, 0, 0, 0, 286, 0, 2835 0, 0, 287, 0, 0, 288, 289, 290, 291, 41, 2836 42, 0, 292, 293, 0, 0, 506, 0, 0, 0, 2837 282, 283, 0, 284, 45, 46, 296, 297, 298, 299, 2838 0, 0, 0, 0, 0, 294, 0, 0, 0, 282, 2839 283, 0, 284, 45, 46, 296, 297, 298, 299, 285, 2840 0, 0, 0, 0, 0, 286, 0, 0, 0, 287, 2841 0, 0, 288, 289, 290, 291, 41, 42, 285, 292, 2842 293, 0, 0, 0, 286, 0, 0, 0, 287, 0, 2843 0, 288, 289, 290, 291, 41, 42, 0, 292, 293, 2844 0, 0, 511, 0, 0, 0, 0, 0, 0, 0, 2845 45, 46, 296, 297, 298, 299, 0, 0, 0, 0, 2846 0, 514, 0, 0, 0, 0, 0, 0, 0, 45, 2847 46, 296, 297, 298, 299, 2, 206, 4, 5, 6, 2621 2848 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2622 2849 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2623 0, 26, 27, 28, 0, 0, 0, 0, 0, 677,2624 31, 0, 0, 0, 0, 45, 46, 0, 0, 0,2850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2851 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2625 2852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2626 2853 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 2627 35, 0, 36, 0, 0, 38, 39, 0, 2, 207, 2628 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2629 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2630 24, 25, 0, 0, 26, 27, 28, 0, 0, 0, 2631 0, 0, 592, 31, 0, 0, 0, 0, 45, 46, 2632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2634 0, 34, 0, 35, 0, 36, 0, 0, 208, 39, 2635 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2636 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2637 26, 27, 28, 0, 0, 0, 0, 283, 284, 31, 2638 285, 0, 0, 0, 0, 209, 0, 0, 0, 0, 2639 0, 45, 46, 0, 0, 0, 0, 0, 0, 0, 2640 0, 0, 0, 0, 0, 0, 286, 34, 0, 0, 2641 0, 0, 287, 0, 38, 39, 288, 0, 0, 289, 2642 290, 291, 292, 41, 42, 0, 293, 294, 0, 0, 2643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2644 0, 0, 0, 0, 0, 0, 0, 0, 0, 295, 2645 0, 517, 0, 0, 172, 0, 0, 45, 46, 297, 2646 298, 299, 300, 8, 9, 10, 11, 12, 13, 14, 2854 35, 0, 36, 37, 0, 174, 175, 40, 0, 0, 2855 0, 0, 0, 0, 41, 42, 205, 2, 206, 4, 2856 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2647 2857 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2648 2858 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 2649 283, 284, 31, 285, 8, 9, 10, 11, 12, 13,2650 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,2651 24, 25, 0, 0, 26, 27, 28, 0, 0, 286,2652 34, 0, 0, 31, 0, 287, 0, 38, 39, 288,2653 0, 0, 289, 290, 291, 292, 41, 42, 0, 293,2654 294, 0, 0, 0, 0, 0, 0, 0, 0, 0,2655 0, 34, 0, 0, 0, 0, 37, 0, 336, 337,2656 40, 0, 295, -35, 296, 0, 0, 41, 42, 0,2657 45, 46, 297, 298, 299, 300, 8, 9, 10, 11,2658 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,2659 22, 23, 24, 25, 0, 338, 26, 27, 28, 0,2660 0, 45, 46, 283, 284, 31, 285, 8, 9, 10,2661 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,2662 21, 22, 23, 24, 25, 0, 0, 26, 27, 28,2663 0, 0, 286, 34, 0, 0, 31, 0, 287, 0,2664 38, 39, 288, 0, 0, 289, 290, 291, 292, 41,2665 42, 0, 293, 294, 0, 0, 0, 0, 0, 0,2666 0, 0, 0, 0, 34, 0, 0, 0, 0, 111,2667 0, 38, 39, 0, 0, 295, 0, 296, 0, 0,2668 41, 42, 0, 45, 46, 297, 298, 299, 300, 8,2669 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,2670 19, 20, 21, 22, 23, 24, 25, 0, 44, 26,2671 27, 28, 0, 0, 45, 46, 283, 284, 31, 285,2672 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,2673 18, 19, 20, 21, 22, 23, 24, 25, 0, 0,2674 26, 27, 28, 0, 0, 286, 34, 0, 0, 31,2675 684, 287, 0, 38, 39, 288, 0, 0, 289, 290,2676 291, 292, 41, 42, 0, 293, 294, 0, 0, 0,2677 0, 0, 0, 0, 0, 0, 0, 34, 0, 0,2678 0, 0, 0, 0, 38, 39, 0, 0, 295, 0,2679 158, 0, 0, 0, 0, 0, 45, 46, 297, 298,2680 299, 300, 8, 9, 10, 11, 12, 13, 14, 15,2681 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,2682 0, 685, 26, 27, 28, 1220, 0, 45, 46, 283,2683 284, 31, 285, 8, 9, 10, 11, 12, 13, 14,2684 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,2685 25, 0, 0, 26, 27, 28, 0, 0, 286, 34,2686 0, 0, 31, 0, 287, 0, 38, 39, 288, 0,2687 0, 289, 290, 291, 292, 41, 42, 0, 293, 294,2688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2689 34, 0, 0, 0, 0, 0, 0, 38, 39, 0,2690 0, 295, 0, 592, 0, 0, 0, 0, 0, 45,2691 46, 297, 298, 299, 300, 8, 9, 10, 11, 12,2692 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,2693 23, 24, 25, 0, 258, 26, 27, 28, 0, 0,2694 45, 46, 283, 284, 31, 285, 0, 0, 0, 0,2695 0, 0, 0, 8, 9, 10, 11, 12, 13, 14,2696 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,2697 25, 286, 34, 26, 27, 28, 0, 287, 0, 38,2698 39, 288, 31, 0, 289, 290, 291, 292, 41, 42,2699 0, 293, 294, 0, 0, 0, 0, 0, 0, 0,2700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2701 34, 0, 0, 0, 295, 0, 379, 38, 39, 0,2702 0, 0, 45, 46, 297, 298, 299, 300, 467, 2,2703 207, 4, 5, 6, 7, 8, 9, 10, 11, 12,2704 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,2705 23, 24, 25, 0, 158, 26, 27, 28, 0, 0,2706 45, 46, 0, 0, 31, 0, 0, 0, 8, 9,2707 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,2708 20, 21, 22, 23, 24, 25, 0, 0, 26, 27,2709 28, 0, 34, 0, 35, 0, 36, 31, 0, 38,2710 39, 0, 0, 0, 0, 0, 8, 9, 10, 11,2711 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,2712 22, 23, 24, 25, 0, 34, 26, 27, 28, 0,2713 37, 0, 38, 39, 40, 31, 0, 0, 0, -3,2714 0, 41, 42, 0, 8, 9, 10, 11, 12, 13,2715 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,2716 24, 25, 0, 34, 26, 27, 28, 43, 37, 158,2717 38, 39, 40, 31, 0, 45, 46, 0, 0, 41,2718 42, 0, 8, 9, 10, 11, 12, 13, 14, 15,2719 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,2720 0, 34, 26, 27, 28, 43, 37, 44, 208, 39,2721 40, 31, 0, 45, 46, 0, 0, 41, 42, 0,2722 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,2723 18, 19, 20, 21, 22, 23, 24, 25, -291, 34,2724 26, 27, 28, 43, 37, 271, 336, 337, 40, 31,2725 0, 45, 46, 0, 0, 41, 42, 0, 8, 9,2726 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,2727 20, 21, 22, 23, 24, 25, -291, 34, 26, 27,2728 28, 634, 0, 338, 38, 39, 0, 31, -291, 45,2729 46, 8, 9, 10, 11, 12, 13, 14, 15, 16,2730 17, 18, 19, 20, 21, 22, 23, 24, 25, 0,2731 0, 26, 27, 28, 0, 34, 0, 0, 0, 634,2732 31, 338, 38, 39, 0, 0, -291, 45, 46, 8,2733 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,2734 19, 20, 21, 22, 23, 24, 25, 0, 34, 26,2735 27, 28, 0, 0, 0, 208, 39, 0, 31, 338,2736 0, 0, 0, 0, 0, 45, 46, 8, 9, 10,2737 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,2738 21, 22, 23, 24, 25, 0, 34, 26, 27, 28,2739 0, 0, 271, 38, 39, 0, 31, 0, 45, 46,2740 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,2741 18, 19, 20, 21, 22, 23, 24, 25, 0, 0,2742 26, 27, 28, 0, 34, 0, 0, 0, 0, 31,2743 338, 38, 39, 0, 0, 0, 45, 46, 8, 9,2744 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,2745 20, 21, 22, 23, 24, 25, 0, 34, 26, 27,2746 28, 0, 0, 0, 38, 39, 0, 31, 685, 0,2747 0, 0, 0, 0, 45, 46, 0, 0, 0, 0,2748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2749 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,2750 0, 592, 38, 39, 0, 0, 0, 45, 46, 2,2751 207, 4, 5, 6, 7, 8, 9, 10, 11, 12,2752 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,2753 23, 24, 25, 0, 0, 26, 27, 28, 0, 44,2754 0, 0, 0, 0, 31, 45, 46, 0, 0, 0,2755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2757 0, 0, 34, 0, 35, 0, 36, 0, 0, 38,2758 39, 283, 284, 0, 285, 1041, 0, 1042, 0, 0,2759 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 0, 0,2760 1524, 1051, 0, 0, 0, 1052, 1053, 0, 33, 0,2761 286, 0, 0, 0, 0, -412, 1054, 0, 0, 0,2762 288, 0, 0, 289, 290, 291, 292, 41, 42, 0,2763 293, 294, 0, 0, 0, 0, 0, 0, 0, 0,2764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2765 0, 0, 0, 295, 0, 379, 0, 0, 172, 0,2766 0, 45, 46, 297, 298, 299, 300, 0, 0, 283,2767 284, 1056, 285, 1041, 0, 1042, -126, 0, 1043, 1044,2768 1045, 1046, 1047, 1048, 1049, 1050, 0, 0, 0, 1051,2769 0, 0, 0, 1052, 1053, 0, 33, 0, 286, 0,2770 0, 0, 0, 0, 1054, 0, 0, 0, 288, 0,2771 0, 289, 290, 291, 292, 41, 42, 0, 293, 294,2772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2774 0, 295, 0, 379, 0, 0, 172, 0, 0, 45,2775 46, 297, 298, 299, 300, 0, 0, 0, 0, 1056,2776 0, 0, 0, 0, -126, 2, 207, 4, 5, 6,2777 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,2778 17, 18, 19, 20, 21, 22, 23, 24, 25, 0,2779 0, 26, 27, 28, 0, 0, 0, 0, 0, 0,2780 31, 0, 283, 284, 0, 285, 1041, 0, 1042, 1398,2781 1399, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 0,2782 0, 1524, 1051, 0, 0, 0, 1052, 1053, 34, 33,2783 35, 286, 36, 0, 0, 38, 39, 1054, 0, 0,2784 0, 288, 0, 0, 289, 290, 291, 292, 41, 42,2785 0, 293, 294, 0, 0, 0, 0, 1311, 0, 0,2786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2787 0, 0, 0, 0, 295, 0, 379, 0, 0, 172,2788 0, 0, 45, 46, 297, 298, 299, 300, 0, 0,2789 283, 284, 1056, 285, 1041, 0, 1042, 1398, 1399, 1043,2790 1044, 1045, 1046, 1047, 1048, 1049, 1050, 0, 0, 0,2791 1051, 0, 0, 0, 1052, 1053, 0, 33, 0, 286,2792 0, 0, 0, 0, 0, 1054, 0, 0, 0, 288,2793 0, 0, 289, 290, 291, 292, 41, 42, 0, 293,2794 294, 0, 0, 0, 0, 0, 0, 0, 0, 0,2795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2796 0, 0, 295, 0, 379, 0, 0, 172, 0, 0,2797 45, 46, 297, 298, 299, 300, 0, 0, 283, 284,2798 1056, 285, 1041, 0, 1042, 0, 0, 1043, 1044, 1045,2799 1046, 1047, 1048, 1049, 1050, 0, 0, 0, 1051, 0,2800 0, 0, 1052, 1053, 0, 33, 0, 286, 0, 0,2801 0, 0, 0, 1054, 0, 0, 0, 288, 0, 0,2802 289, 290, 291, 292, 41, 42, 0, 293, 294, 0,2803 0, 0, 0, 0, 0, 283, 284, 0, 285, 0,2804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2805 295, 0, 379, 0, 0, 172, 0, 0, 45, 46,2806 297, 298, 299, 300, 286, 0, 0, 0, 1056, 0,2807 640, 0, 140, 141, 288, 0, 0, 289, 290, 291,2808 292, 41, 42, 0, 293, 294, 0, 0, 0, 0,2809 0, 0, 283, 284, 0, 285, 0, 0, 0, 0,2810 0, 0, 0, 0, 0, 0, 0, 295, 0, 641,2811 0, 642, 380, 0, 0, 45, 46, 297, 298, 299,2812 300, 286, 0, 0, 0, 0, 0, 287, 0, 0,2813 0, 288, 0, 0, 289, 290, 291, 292, 41, 42,2814 0, 293, 294, 0, 0, 0, 0, 0, 0, 283,2815 284, 0, 285, 0, 0, 0, 0, 0, 0, 0,2816 0, 0, 0, 0, 295, 0, 379, 0, 283, 284,2817 0, 285, 708, 46, 297, 298, 299, 300, 286, 0,2818 0, 0, 0, 0, 287, 0, 0, 0, 288, 0,2819 0, 289, 290, 291, 292, 41, 42, 286, 293, 294,2820 0, 0, 0, 287, 0, 0, 0, 288, 0, 0,2821 289, 290, 291, 292, 41, 42, 0, 293, 294, 0,2822 0, 295, 0, 379, 0, 283, 284, 0, 285, 344,2823 46, 297, 298, 299, 300, 0, 0, 0, 0, 0,2824 506, 0, 0, 0, 283, 284, 0, 285, 45, 46,2825 297, 298, 299, 300, 286, 0, 0, 0, 0, 0,2826 287, 0, 0, 0, 288, 0, 0, 289, 290, 291,2827 292, 41, 42, 286, 293, 294, 0, 0, 0, 287,2828 0, 0, 0, 288, 0, 0, 289, 290, 291, 292,2829 41, 42, 0, 293, 294, 0, 0, 295, 0, 0,2830 0, 283, 284, 0, 285, 45, 46, 297, 298, 299,2831 300, 0, 0, 0, 0, 0, 511, 0, 0, 0,2832 0, 0, 0, 0, 45, 46, 297, 298, 299, 300,2833 286, 0, 0, 0, 0, 0, 287, 0, 0, 0,2834 288, 0, 0, 289, 290, 291, 292, 41, 42, 0,2835 293, 294, 0, 0, 0, 0, 0, 0, 0, 0,2836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2837 0, 0, 0, 514, 0, 0, 0, 0, 0, 0,2838 0, 45, 46, 297, 298, 299, 300, 2, 207, 4,2839 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,2840 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,2841 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,2842 2859 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 2843 2860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2844 2861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2845 34, 0, 35, 0, 36, 37, 0, 175, 176, 40, 2846 0, 0, 0, 0, 0, 0, 41, 42, 206, 2, 2847 207, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2848 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2849 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2850 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 2862 34, 0, 35, 0, 36, 0, 0, 207, 39, 467, 2863 2, 206, 4, 5, 6, 7, 8, 9, 10, 11, 2864 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2865 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2866 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 2851 2867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2852 2868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2853 0, 0, 34, 0, 35, 0, 36, 0, 0, 208,2854 3 9, 467, 2, 207, 4, 5, 6, 7, 8, 9,2869 0, 0, 0, 34, 0, 35, 0, 36, 0, 0, 2870 38, 39, 2, 206, 4, 5, 6, 7, 8, 9, 2855 2871 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2856 2872 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, … … 2859 2875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2860 2876 0, 0, 0, 0, 0, 34, 0, 35, 0, 36, 2861 0, 0, 38, 39, 2, 207, 4, 5, 6, 7, 2862 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2863 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2864 26, 27, 28, 0, 0, 0, 0, 0, 0, 31, 2865 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2866 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2867 0, 26, 27, 28, 485, 486, 487, 34, 0, 35, 2868 31, 36, 0, 0, 208, 39, 0, 0, 0, 0, 2869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2870 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 2871 0, 0, 0, 0, 0, 38, 39 2877 0, 0, 207, 39 2872 2878 }; 2873 2879 2874 2880 #define yypact_value_is_default(yystate) \ 2875 ((yystate) == (-13 10))2881 ((yystate) == (-1323)) 2876 2882 2877 2883 #define yytable_value_is_error(yytable_value) \ … … 2880 2886 static const yytype_int16 yycheck[] = 2881 2887 { 2882 0, 1, 240, 205, 186, 186, 117, 0, 43, 534, 2883 43, 43, 600, 756, 646, 1, 749, 187, 521, 0, 2884 186, 186, 186, 157, 169, 170, 749, 749, 186, 106, 2885 220, 602, 32, 186, 345, 349, 0, 188, 280, 32, 2886 157, 513, 600, 43, 874, 43, 603, 874, 349, 49, 2887 620, 32, 609, 733, 0, 983, 49, 600, 492, 571, 2888 0, 1, 496, 63, 602, 187, 66, 32, 32, 69, 2889 63, 692, 43, 66, 64, 0, 69, 1040, 39, 156, 2890 1, 600, 57, 69, 266, 266, 32, 43, 51, 1398, 2891 364, 202, 32, 63, 368, 1321, 418, 267, 82, 600, 2892 266, 266, 266, 1052, 1053, 1033, 106, 32, 266, 600, 2893 600, 262, 263, 266, 114, 72, 438, 117, 118, 109, 2894 282, 72, 1402, 96, 446, 39, 66, 695, 39, 69, 2895 28, 109, 107, 39, 39, 110, 95, 39, 82, 128, 2896 39, 66, 131, 1021, 82, 267, 109, 147, 148, 122, 2897 111, 186, 11, 186, 186, 148, 156, 157, 0, 295, 2898 1469, 161, 132, 1020, 1021, 109, 44, 45, 161, 0, 2899 129, 482, 905, 109, 488, 132, 0, 1, 72, 1128, 2900 78, 132, 905, 905, 687, 49, 186, 187, 186, 109, 2901 32, 257, 130, 1419, 187, 109, 109, 111, 109, 718, 2902 111, 32, 202, 109, 109, 111, 111, 109, 32, 111, 2903 210, 131, 43, 1040, 72, 186, 1496, 210, 49, 82, 2904 410, 1501, 222, 117, 812, 83, 84, 718, 718, 222, 2905 186, 266, 63, 266, 266, 66, 406, 115, 69, 1452, 2906 240, 1521, 85, 986, 219, 69, 112, 110, 1528, 82, 2907 114, 109, 252, 824, 812, 116, 107, 814, 114, 252, 2908 260, 44, 45, 3, 341, 265, 266, 267, 490, 812, 2909 113, 252, 272, 1486, 267, 1488, 257, 82, 111, 900, 2910 131, 793, 222, 147, 406, 396, 824, 252, 252, 49, 2911 426, 427, 924, 812, 371, 295, 3, 222, 273, 433, 2912 96, 602, 1501, 116, 109, 280, 252, 307, 0, 620, 2913 480, 812, 252, 424, 625, 589, 433, 148, 110, 430, 2914 112, 812, 812, 323, 116, 1288, 122, 252, 328, 1528, 2915 161, 114, 253, 44, 45, 328, 0, 82, 906, 131, 2916 132, 341, 504, 110, 932, 345, 210, 1225, 482, 349, 2917 350, 109, 418, 111, 114, 186, 187, 631, 480, 681, 2918 109, 116, 933, 130, 364, 110, 90, 91, 368, 1049, 2919 506, 371, 438, 348, 932, 511, 240, 132, 514, 210, 2920 446, 1211, 604, 951, 1211, 130, 608, 426, 427, 932, 2921 365, 222, 526, 72, 369, 112, 396, 1275, 116, 116, 2922 285, 125, 126, 114, 83, 84, 406, 629, 272, 526, 2923 252, 633, 130, 406, 1472, 257, 110, 1274, 1275, 55, 2924 1478, 252, 307, 308, 424, 350, 426, 427, 252, 999, 2925 430, 567, 111, 433, 745, 266, 130, 418, 112, 116, 2926 1498, 110, 116, 307, 111, 1503, 113, 116, 525, 1501, 2927 210, 1008, 1009, 130, 454, 494, 590, 438, 1386, 1387, 2928 345, 1288, 98, 130, 967, 446, 635, 636, 131, 1521, 2929 229, 112, 472, 590, 513, 116, 1528, 116, 1441, 110, 2930 480, 345, 482, 652, 484, 1448, 116, 480, 488, 248, 2931 732, 484, 110, 132, 494, 1127, 381, 328, 116, 116, 2932 130, 482, 647, 484, 666, 656, 506, 941, 508, 981, 2933 824, 511, 272, 513, 514, 132, 1394, 687, 349, 109, 2934 484, 521, 109, 824, 116, 525, 526, 109, 1099, 803, 2935 109, 111, 111, 113, 808, 295, 1499, 1394, 484, 578, 2936 132, 710, 109, 654, 484, 116, 467, 307, 473, 1117, 2937 130, 4, 5, 6, 7, 8, 9, 116, 194, 484, 2938 110, 132, 426, 427, 116, 687, 116, 116, 116, 116, 2939 570, 571, 116, 132, 736, 406, 418, 109, 578, 116, 2940 132, 217, 1085, 132, 132, 132, 109, 1090, 132, 589, 2941 590, 227, 117, 904, 594, 132, 438, 116, 123, 124, 2942 600, 116, 602, 109, 446, 111, 110, 528, 1288, 1177, 2943 1178, 745, 533, 132, 1441, 681, 69, 132, 71, 110, 2944 620, 1448, 896, 937, 846, 625, 72, 627, 74, 75, 2945 494, 631, 801, 110, 634, 635, 636, 83, 84, 72, 2946 110, 707, 484, 112, 590, 110, 621, 116, 112, 513, 2947 83, 84, 652, 484, 654, 109, 910, 488, 912, 295, 2948 484, 582, 637, 109, 549, 550, 551, 744, 114, 112, 2949 109, 861, 1499, 116, 72, 809, 651, 115, 72, 132, 2950 74, 75, 1362, 109, 684, 83, 84, 687, 999, 83, 2951 84, 881, 809, 109, 454, 111, 72, 622, 74, 75, 2952 681, 85, 86, 87, 109, 943, 111, 83, 84, 132, 2953 710, 711, 712, 111, 578, 109, 938, 1115, 718, 719, 2954 114, 1119, 867, 905, 905, 109, 707, 111, 64, 113, 2955 114, 109, 653, 111, 655, 112, 110, 907, 114, 905, 2956 905, 905, 116, 109, 744, 745, 506, 905, 508, 749, 2957 750, 511, 905, 109, 514, 111, 620, 732, 109, 70, 2958 111, 625, 109, 74, 745, 1445, 77, 1447, 79, 600, 2959 904, 602, 1505, 698, 132, 86, 556, 557, 558, 559, 2960 1305, 3, 1505, 1505, 705, 907, 114, 712, 10, 11, 2961 12, 13, 14, 793, 4, 5, 6, 7, 8, 9, 2962 110, 801, 109, 803, 111, 805, 116, 443, 808, 809, 2963 1012, 114, 812, 109, 1382, 111, 72, 39, 74, 75, 2964 1500, 117, 118, 33, 824, 72, 903, 83, 84, 114, 2965 1398, 132, 110, 469, 132, 1146, 83, 84, 116, 681, 2966 10, 11, 12, 13, 14, 67, 72, 110, 1122, 109, 2967 76, 109, 110, 116, 82, 111, 687, 83, 84, 69, 2968 110, 71, 49, 809, 111, 707, 116, 110, 109, 39, 2969 506, 756, 109, 116, 874, 511, 63, 112, 514, 66, 2970 805, 82, 69, 109, 118, 111, 1020, 718, 719, 110, 2971 1035, 117, 118, 874, 127, 116, 896, 67, 88, 89, 2972 1468, 1469, 213, 903, 904, 905, 72, 907, 4, 5, 2973 6, 7, 8, 9, 1225, 1085, 110, 83, 84, 919, 2974 1090, 128, 116, 904, 684, 110, 94, 109, 874, 111, 2975 30, 116, 932, 933, 874, 117, 118, 937, 131, 109, 2976 72, 111, 942, 943, 76, 111, 111, 117, 118, 874, 2977 109, 83, 84, 1115, 110, 109, 942, 1119, 1120, 112, 2978 116, 148, 109, 1085, 111, 0, 1, 967, 1090, 112, 2979 117, 118, 110, 69, 161, 71, 110, 109, 1481, 119, 2980 120, 812, 116, 83, 84, 117, 118, 112, 10, 11, 2981 12, 13, 14, 824, 29, 30, 1107, 32, 110, 999, 2982 187, 110, 942, 110, 116, 92, 93, 72, 43, 74, 2983 75, 76, 1146, 72, 49, 74, 75, 39, 83, 84, 2984 1020, 1021, 57, 210, 83, 84, 110, 1530, 63, 115, 2985 116, 66, 874, 669, 69, 222, 957, 109, 110, 111, 2986 1040, 352, 678, 354, 109, 67, 682, 110, 83, 84, 2987 874, 109, 117, 118, 1190, 1191, 72, 1193, 979, 1040, 2988 76, 110, 983, 110, 1200, 110, 1202, 83, 84, 116, 2989 112, 116, 107, 1235, 905, 110, 907, 1002, 110, 943, 2990 1080, 111, 117, 114, 116, 1085, 110, 109, 116, 111, 2991 1090, 131, 116, 109, 1040, 117, 118, 110, 111, 1099, 2992 1040, 117, 118, 506, 66, 508, 937, 1107, 511, 58, 2993 59, 514, 1033, 148, 999, 1040, 115, 116, 942, 44, 2994 45, 156, 1122, 552, 553, 72, 161, 74, 75, 76, 2995 1207, 442, 109, 110, 111, 999, 83, 84, 560, 561, 2996 1274, 328, 554, 555, 244, 114, 1146, 114, 109, 110, 2997 111, 186, 187, 109, 112, 1040, 118, 110, 110, 919, 2998 1322, 112, 109, 29, 1326, 1146, 112, 202, 112, 3, 2999 117, 118, 109, 110, 111, 210, 10, 11, 12, 13, 3000 14, 58, 59, 60, 219, 112, 116, 222, 1188, 1189, 3001 1248, 1249, 1250, 110, 229, 130, 130, 130, 1040, 161, 3002 110, 112, 114, 1189, 112, 39, 115, 1207, 110, 244, 3003 115, 1211, 115, 248, 109, 116, 1040, 252, 253, 406, 3004 1, 110, 1358, 110, 72, 1225, 74, 75, 76, 1229, 3005 1211, 266, 267, 67, 132, 83, 84, 116, 273, 110, 3006 110, 110, 110, 1229, 1225, 280, 110, 110, 1188, 1189, 3007 110, 116, 110, 110, 1085, 110, 110, 110, 110, 1090, 3008 222, 1423, 898, 1188, 110, 1211, 110, 1378, 49, 110, 3009 110, 1211, 115, 874, 1274, 1275, 29, 1515, 110, 130, 3010 380, 131, 112, 1283, 112, 116, 1211, 110, 1288, 1229, 3011 110, 116, 110, 328, 130, 116, 112, 114, 260, 110, 3012 110, 464, 110, 265, 116, 112, 110, 1288, 110, 110, 3013 116, 116, 112, 348, 349, 10, 11, 12, 13, 14, 3014 1080, 1321, 109, 1505, 1505, 106, 109, 1248, 1249, 1250, 3015 365, 109, 109, 114, 369, 1321, 1506, 109, 130, 1505, 3016 1505, 1505, 1288, 1283, 39, 380, 3, 1505, 1288, 112, 3017 132, 115, 1505, 10, 11, 12, 13, 14, 1283, 110, 3018 1530, 396, 110, 1288, 110, 1189, 147, 128, 115, 1211, 3019 1481, 406, 67, 115, 464, 156, 114, 695, 1378, 112, 3020 132, 1321, 39, 110, 1506, 116, 112, 1211, 350, 424, 3021 112, 491, 110, 493, 1394, 430, 110, 432, 110, 112, 3022 110, 112, 1377, 112, 112, 1229, 112, 112, 1530, 72, 3023 67, 74, 75, 76, 109, 1051, 111, 47, 115, 1419, 3024 83, 84, 117, 118, 72, 206, 74, 75, 76, 210, 3025 132, 132, 467, 1419, 132, 83, 84, 472, 132, 132, 3026 110, 1441, 1043, 115, 130, 480, 1288, 115, 1448, 484, 3027 1450, 110, 1452, 488, 112, 109, 491, 112, 493, 240, 3028 1441, 109, 112, 112, 1288, 1386, 1387, 1448, 786, 431, 3029 1505, 112, 1505, 1505, 112, 110, 110, 60, 109, 1419, 3030 112, 1481, 66, 112, 109, 132, 1486, 110, 1488, 110, 3031 114, 272, 76, 528, 275, 1441, 112, 1321, 533, 1499, 3032 112, 1441, 1448, 1424, 110, 1505, 1506, 670, 1448, 112, 3033 110, 473, 109, 1506, 295, 1515, 1441, 96, 1499, 96, 3034 85, 86, 87, 1448, 109, 132, 307, 115, 110, 72, 3035 1530, 74, 75, 76, 118, 110, 110, 1530, 110, 42, 3036 83, 84, 642, 116, 109, 863, 111, 582, 113, 114, 3037 130, 132, 110, 1499, 589, 110, 132, 96, 96, 1499, 3038 341, 1482, 132, 110, 345, 600, 109, 602, 132, 110, 3039 1491, 132, 112, 110, 1499, 110, 132, 161, 112, 115, 3040 670, 109, 132, 364, 115, 115, 621, 368, 906, 110, 3041 371, 691, 110, 693, 110, 1419, 110, 697, 1056, 1441, 3042 132, 564, 637, 562, 977, 565, 1448, 642, 563, 566, 3043 1211, 1211, 1469, 1364, 1540, 1298, 651, 1441, 653, 654, 3044 655, 1120, 1326, 1448, 1448, 912, 789, 66, 684, 1071, 3045 684, 1090, 594, 951, 920, 697, 799, 582, 222, 971, 3046 867, 648, 722, 1229, 83, 426, 427, 939, 570, 484, 3047 813, 1515, 687, 732, 570, 570, 691, 1499, 693, -1, 3048 622, 1297, 697, -1, -1, 627, -1, -1, 986, -1, 3049 705, -1, -1, 454, 1505, 1499, 260, -1, -1, 118, 3050 -1, 265, -1, 718, 719, -1, 467, -1, -1, -1, 3051 1450, -1, 1452, -1, -1, -1, 280, 732, -1, 789, 3052 -1, -1, -1, 1304, -1, -1, -1, -1, -1, 799, 3053 -1, 492, -1, 494, -1, 496, -1, -1, -1, 1037, 3054 -1, -1, 161, 813, -1, 506, 1486, 508, 1488, -1, 3055 511, -1, 513, 514, -1, -1, 698, 57, -1, 10, 3056 11, 12, 13, 14, 525, -1, -1, -1, -1, 72, 3057 712, 74, 75, 76, -1, 1356, -1, -1, 1359, -1, 3058 83, 84, -1, -1, -1, -1, 350, 867, 39, -1, 3059 -1, -1, -1, 873, -1, -1, -1, 812, -1, -1, 3060 -1, -1, -1, 222, -1, -1, 109, 107, 111, 824, 3061 110, -1, -1, -1, 117, 118, 67, 578, -1, 1117, 3062 -1, 1402, -1, -1, -1, -1, 1407, 130, 589, -1, 3063 -1, -1, -1, 1449, 914, 1451, -1, -1, -1, -1, 3064 -1, 260, -1, -1, -1, -1, 265, -1, -1, -1, 3065 -1, -1, 867, -1, 1435, -1, 156, 670, 873, 620, 3066 -1, -1, -1, 805, 625, -1, -1, 431, -1, 1485, 3067 631, 1487, 0, 1, 1017, 1018, -1, -1, -1, 1177, 3068 1178, 896, -1, -1, 448, -1, -1, -1, -1, -1, 3069 905, 971, 907, -1, -1, -1, -1, -1, -1, 914, 3070 -1, -1, -1, -1, 32, -1, -1, -1, -1, 473, 3071 -1, -1, -1, 1529, -1, 1531, -1, -1, -1, 219, 3072 -1, 49, 937, 684, -1, -1, -1, -1, 1544, 1545, 3073 -1, 350, 1075, 1076, -1, -1, -1, -1, 1519, -1, 3074 -1, 69, 957, -1, 1525, -1, -1, 1017, 1018, -1, 3075 -1, -1, -1, -1, -1, 1536, 971, -1, -1, 1540, 3076 -1, 722, -1, -1, 979, -1, -1, -1, 983, 0, 3077 1, -1, -1, 273, -1, -1, 789, -1, 106, -1, 3078 280, -1, -1, 744, -1, -1, 799, -1, -1, -1, 3079 -1, 1071, -1, -1, -1, 0, -1, -1, -1, -1, 3080 813, 32, -1, -1, -1, 1075, 1076, -1, -1, -1, 3081 -1, -1, 431, -1, -1, -1, -1, -1, 1033, -1, 3082 148, -1, -1, -1, -1, -1, -1, 32, 156, 157, 3083 594, -1, -1, -1, -1, 66, -1, -1, 69, -1, 3084 -1, -1, 803, -1, -1, -1, -1, 808, 348, -1, 3085 -1, -1, -1, -1, 473, -1, 1071, -1, 622, 187, 3086 1002, -1, -1, 627, 69, 365, -1, -1, -1, 369, 3087 1085, -1, -1, -1, 202, 1090, -1, 205, 206, -1, 3088 1223, -1, 210, -1, 1382, -1, -1, -1, -1, -1, 3089 -1, -1, 1107, -1, -1, -1, -1, -1, -1, -1, 3090 1398, -1, -1, 231, 1184, -1, -1, 235, -1, 237, 3091 -1, -1, 1255, -1, -1, -1, -1, -1, 246, -1, 3092 1263, 1264, 1265, -1, 252, -1, 157, -1, -1, 257, 3093 -1, -1, 432, -1, 698, 896, -1, -1, -1, 267, 3094 -1, -1, 903, -1, -1, -1, -1, 275, 712, -1, 3095 -1, 0, 157, 1223, -1, -1, -1, -1, 919, -1, 3096 -1, 72, -1, 74, 75, 76, -1, -1, 732, 1184, 3097 1468, 1469, 83, 84, -1, 594, -1, -1, -1, -1, 3098 941, 942, 943, 32, 1327, 1255, -1, -1, -1, -1, 3099 -1, 222, 1207, 1263, 1264, 1265, -1, -1, 109, -1, 3100 111, -1, -1, 622, 1017, 1018, 117, 118, 627, -1, 3101 -1, -1, -1, 341, -1, -1, -1, 345, -1, -1, 3102 69, 252, -1, 351, -1, -1, 231, -1, -1, -1, 3103 -1, -1, -1, 1248, 1249, 1250, 364, -1, 999, -1, 3104 368, 805, -1, 371, -1, -1, 1188, 252, -1, -1, 3105 -1, -1, 257, -1, -1, -1, -1, 1327, -1, -1, 3106 -1, -1, 1075, 1076, -1, -1, -1, -1, -1, -1, 3107 72, -1, 74, 75, 76, -1, -1, -1, -1, 698, 3108 -1, 83, 84, 72, -1, 74, 75, 76, -1, 589, 3109 418, -1, -1, 712, 83, 84, -1, -1, -1, -1, 3110 -1, -1, -1, -1, -1, 433, -1, 109, 157, 111, 3111 438, -1, -1, -1, -1, 117, 118, -1, 446, 1080, 3112 109, 621, 111, -1, -1, -1, -1, -1, 117, 118, 3113 -1, -1, -1, -1, -1, -1, 464, 637, -1, 467, 3114 -1, 1283, -1, -1, -1, -1, 351, -1, -1, -1, 3115 -1, 651, -1, -1, 482, -1, 484, -1, -1, -1, 3116 -1, 1122, 1377, 1378, 492, -1, -1, -1, 496, -1, 3117 -1, 1386, 1387, 97, 98, 99, 100, 101, 102, 103, 3118 104, 105, 106, -1, -1, -1, 805, -1, -1, -1, 3119 -1, -1, -1, -1, -1, -1, -1, 525, 526, -1, 3120 -1, -1, 433, 252, -1, -1, -1, 131, 257, 1424, 3121 -1, -1, -1, 418, -1, -1, -1, -1, -1, -1, 3122 -1, -1, -1, -1, -1, -1, -1, -1, 433, -1, 3123 -1, -1, 732, 438, -1, -1, -1, -1, 1002, -1, 3124 -1, 446, 1255, 571, -1, -1, 1207, -1, -1, -1, 3125 1263, 1264, 1265, 484, -1, -1, -1, -1, -1, 464, 3126 -1, 589, 590, -1, -1, -1, 1481, 1482, 1229, -1, 3127 -1, -1, -1, -1, 602, -1, 1491, 482, -1, 484, 3128 -1, -1, -1, 37, 38, -1, 40, -1, -1, -1, 3129 1505, 1506, 620, -1, -1, 526, -1, 625, -1, -1, 3130 -1, -1, 351, 631, -1, -1, 634, 635, 636, -1, 3131 -1, -1, 66, -1, 1327, 1530, -1, -1, 72, -1, 3132 -1, 526, 76, -1, 652, 79, 80, 81, 82, 83, 3133 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 3134 -1, -1, 670, -1, -1, 10, 11, 12, 13, 14, 3135 -1, -1, -1, 681, -1, 109, -1, 111, -1, 590, 3136 1321, -1, -1, 117, 118, 119, 120, 121, 122, 418, 3137 -1, -1, -1, -1, 39, -1, 130, -1, -1, 707, 3138 -1, -1, 710, 1002, 433, 590, -1, -1, -1, 438, 3139 -1, 719, -1, -1, 722, -1, 896, 446, -1, -1, 3140 -1, -1, 67, 634, 635, 636, -1, 72, -1, 74, 3141 75, 76, -1, -1, -1, 464, 744, 745, 83, 84, 3142 -1, 652, 750, -1, 1188, -1, -1, -1, -1, 634, 3143 635, 636, -1, 482, -1, 484, -1, 10, 11, 12, 3144 13, 14, -1, -1, 109, -1, 111, 652, -1, -1, 3145 -1, -1, 117, 118, -1, -1, -1, -1, 1419, -1, 3146 -1, 789, -1, -1, -1, 670, 39, -1, -1, -1, 3147 -1, 799, -1, 801, -1, 803, 681, 526, 806, 710, 3148 808, 809, -1, -1, -1, 813, -1, -1, -1, 1450, 3149 -1, 1452, -1, -1, 67, 823, -1, -1, -1, 72, 3150 -1, -1, 707, 76, -1, 710, -1, -1, -1, -1, 3151 83, 84, -1, -1, -1, -1, -1, -1, -1, 1283, 3152 -1, 0, -1, -1, -1, 1486, -1, 1488, -1, -1, 2888 0, 1, 186, 43, 239, 185, 204, 0, 43, 219, 2889 43, 116, 185, 521, 534, 185, 1, 875, 186, 0, 2890 1, 185, 757, 51, 647, 603, 750, 185, 0, 1, 2891 281, 621, 32, 750, 1041, 0, 1022, 43, 185, 32, 2892 345, 185, 750, 43, 168, 169, 513, 349, 875, 49, 2893 156, 32, 603, 32, 0, 693, 49, 349, 187, 0, 2894 32, 572, 57, 63, 601, 1322, 66, 32, 43, 69, 2895 63, 0, 1, 66, 696, 63, 69, 1399, 734, 492, 2896 0, 109, 266, 496, 69, 265, 32, 601, 69, 39, 2897 39, 32, 265, 490, 66, 265, 201, 69, 266, 601, 2898 39, 265, 43, 32, 604, 105, 601, 265, 49, 49, 2899 610, 106, 32, 113, 109, 418, 116, 117, 265, 82, 2900 66, 265, 63, 63, 39, 66, 66, 39, 69, 69, 2901 601, 984, 261, 262, 284, 438, 43, 66, 28, 601, 2902 69, 105, 72, 446, 132, 185, 146, 147, 1470, 601, 2903 185, 72, 185, 49, 147, 155, 156, 307, 308, 109, 2904 160, 111, 111, 1420, 39, 787, 82, 160, 72, 364, 2905 109, 39, 111, 368, 1021, 1022, 82, 482, 96, 185, 2906 688, 1034, 906, 1116, 156, 185, 186, 1120, 78, 906, 2907 156, 155, 0, 186, 110, 345, 488, 109, 906, 111, 2908 410, 201, 132, 96, 122, 111, 147, 147, 605, 209, 2909 185, 132, 609, 117, 1041, 64, 209, 113, 109, 160, 2910 160, 221, 406, 218, 32, 265, 109, 110, 221, 122, 2911 265, 381, 265, 630, 109, 256, 111, 634, 406, 239, 2912 1226, 109, 864, 111, 185, 186, 186, 825, 719, 221, 2913 146, 251, 987, 504, 57, 44, 45, 719, 251, 259, 2914 109, 426, 427, 901, 264, 265, 266, 719, 209, 209, 2915 251, 271, 251, 266, 825, 221, 813, 272, 185, 251, 2916 221, 221, 1289, 794, 279, 907, 251, 109, 696, 85, 2917 1276, 396, 221, 1502, 294, 49, 480, 636, 637, 813, 2918 109, 603, 925, 106, 1453, 251, 109, 307, 1053, 1054, 2919 251, 813, 480, 209, 653, 815, 621, 113, 813, 424, 2920 1529, 626, 251, 323, 265, 430, 115, 433, 328, 494, 2921 952, 251, 95, 44, 45, 328, 107, 112, 1487, 116, 2922 1489, 341, 813, 239, 109, 345, 111, 109, 513, 349, 2923 350, 813, 155, 348, 1212, 132, 934, 0, 110, 113, 2924 131, 813, 44, 45, 364, 987, 129, 1473, 368, 131, 2925 365, 371, 711, 1479, 369, 271, 116, 341, 130, 682, 2926 72, 11, 74, 75, 1129, 1212, 228, 328, 328, 32, 2927 130, 83, 84, 1499, 1050, 590, 396, 418, 1504, 114, 2928 550, 551, 552, 114, 350, 247, 406, 371, 349, 1395, 2929 1000, 307, 110, 406, 579, 218, 1038, 438, 116, 933, 2930 526, 109, 114, 111, 424, 446, 426, 427, 1275, 1276, 2931 430, 933, 114, 433, 72, 1442, 110, 632, 933, 110, 2932 72, 746, 1449, 251, 1502, 83, 84, 110, 256, 345, 2933 847, 83, 84, 116, 454, 209, 130, 119, 120, 130, 2934 968, 433, 1289, 802, 1522, 406, 406, 433, 110, 272, 2935 112, 1529, 472, 111, 116, 128, 279, 110, 131, 111, 2936 480, 116, 482, 116, 484, 591, 737, 480, 488, 131, 2937 132, 484, 70, 1500, 494, 73, 1118, 132, 76, 907, 2938 78, 90, 91, 484, 688, 1128, 506, 85, 508, 1009, 2939 1010, 511, 484, 513, 514, 982, 482, 271, 116, 484, 2940 688, 521, 1100, 825, 648, 525, 526, 473, 657, 942, 2941 426, 427, 130, 825, 1387, 1388, 125, 126, 484, 109, 2942 294, 111, 939, 484, 952, 348, 110, 488, 1395, 116, 2943 655, 116, 116, 307, 526, 484, 1178, 1179, 72, 116, 2944 526, 525, 365, 130, 484, 72, 369, 74, 75, 83, 2945 84, 571, 572, 88, 89, 132, 83, 84, 1086, 579, 2946 1403, 72, 3, 1091, 4, 5, 6, 7, 8, 9, 2947 590, 591, 83, 84, 72, 595, 116, 111, 494, 3, 2948 905, 601, 1, 603, 111, 83, 84, 757, 251, 804, 2949 418, 116, 132, 256, 809, 1442, 0, 513, 110, 591, 2950 111, 621, 1449, 0, 116, 591, 626, 622, 628, 432, 2951 438, 109, 632, 1289, 212, 635, 636, 637, 446, 111, 2952 111, 113, 113, 638, 112, 109, 938, 111, 116, 69, 2953 116, 71, 862, 653, 116, 655, 109, 652, 130, 130, 2954 601, 682, 603, 635, 636, 637, 132, 109, 116, 111, 2955 132, 591, 882, 1500, 1497, 116, 484, 623, 116, 1502, 2956 116, 653, 131, 579, 132, 685, 72, 708, 688, 116, 2957 76, 132, 116, 109, 132, 1000, 132, 83, 84, 1522, 2958 454, 279, 897, 72, 810, 132, 1529, 1363, 132, 944, 2959 1118, 711, 712, 713, 83, 84, 110, 109, 116, 719, 2960 720, 116, 116, 109, 908, 621, 906, 92, 93, 110, 2961 626, 117, 118, 906, 132, 116, 906, 132, 733, 711, 2962 908, 109, 906, 110, 868, 745, 746, 688, 906, 116, 2963 750, 751, 506, 699, 508, 109, 109, 511, 111, 906, 2964 514, 1383, 906, 110, 117, 118, 294, 713, 112, 116, 2965 1178, 1179, 116, 109, 352, 418, 354, 1399, 719, 720, 2966 746, 745, 1506, 109, 112, 111, 1306, 590, 116, 1506, 2967 1446, 109, 1448, 111, 794, 438, 109, 112, 1506, 117, 2968 118, 116, 802, 446, 804, 72, 806, 74, 75, 809, 2969 810, 110, 109, 813, 111, 1013, 83, 84, 110, 622, 2970 117, 118, 72, 110, 116, 825, 76, 110, 112, 116, 2971 802, 110, 116, 83, 84, 638, 110, 116, 810, 482, 2972 110, 484, 1147, 112, 810, 1501, 116, 1469, 1470, 652, 2973 1000, 115, 116, 252, 10, 11, 12, 13, 14, 109, 2974 806, 111, 110, 111, 442, 1116, 109, 117, 118, 1120, 2975 1121, 110, 813, 117, 682, 875, 110, 116, 3, 123, 2976 124, 110, 116, 39, 825, 10, 11, 12, 13, 14, 2977 810, 1041, 58, 59, 875, 110, 110, 897, 426, 427, 2978 708, 116, 1086, 875, 904, 905, 906, 1091, 908, 110, 2979 110, 67, 1036, 109, 39, 72, 116, 115, 1086, 76, 2980 920, 1226, 109, 1091, 111, 109, 83, 84, 1123, 875, 2981 733, 685, 64, 933, 934, 110, 115, 116, 938, 905, 2982 904, 116, 67, 943, 944, 72, 875, 74, 75, 76, 2983 0, 1, 109, 44, 45, 875, 83, 84, 943, 132, 2984 117, 118, 943, 110, 66, 906, 109, 908, 968, 116, 2985 109, 943, 111, 109, 1482, 1383, 553, 554, 506, 29, 2986 30, 112, 32, 511, 132, 1236, 514, 506, 109, 508, 2987 111, 1399, 511, 43, 911, 514, 913, 938, 114, 49, 2988 1000, 555, 556, 1108, 114, 114, 72, 57, 74, 75, 2989 76, 561, 562, 63, 943, 117, 66, 83, 84, 69, 2990 132, 1021, 1022, 1531, 132, 4, 5, 6, 7, 8, 2991 9, 109, 82, 83, 557, 558, 559, 560, 82, 682, 2992 568, 1041, 4, 5, 6, 7, 8, 9, 944, 1021, 2993 1022, 85, 86, 87, 109, 1021, 106, 1003, 160, 109, 2994 1041, 1469, 1470, 109, 112, 708, 116, 875, 467, 1041, 2995 82, 33, 1323, 118, 127, 109, 1327, 111, 94, 113, 2996 114, 1081, 109, 110, 111, 128, 1086, 109, 110, 111, 2997 69, 1091, 71, 131, 897, 1041, 111, 147, 109, 109, 2998 1100, 110, 110, 746, 1000, 155, 3, 69, 1108, 71, 2999 160, 112, 1041, 10, 11, 12, 13, 14, 112, 221, 3000 112, 1041, 110, 1123, 109, 110, 111, 110, 110, 528, 3001 110, 109, 110, 111, 533, 185, 186, 72, 109, 74, 3002 75, 76, 39, 112, 111, 1086, 114, 1147, 83, 84, 3003 1091, 201, 116, 132, 131, 733, 114, 259, 114, 209, 3004 109, 112, 264, 58, 59, 60, 920, 110, 218, 110, 3005 67, 221, 112, 1424, 109, 112, 111, 130, 228, 112, 3006 112, 1147, 117, 118, 583, 1249, 1250, 1251, 130, 1189, 3007 1190, 130, 116, 243, 29, 130, 110, 247, 110, 112, 3008 115, 251, 252, 114, 112, 1190, 110, 116, 1208, 1190, 3009 115, 109, 1212, 115, 110, 265, 266, 1189, 1190, 110, 3010 130, 110, 272, 116, 110, 132, 1226, 3, 110, 279, 3011 1230, 1212, 875, 1041, 10, 11, 12, 13, 14, 110, 3012 1212, 116, 110, 1189, 1208, 1230, 110, 110, 350, 1230, 3013 110, 110, 110, 110, 1, 654, 110, 656, 1230, 110, 3014 1189, 1190, 905, 39, 110, 110, 1212, 110, 72, 110, 3015 74, 75, 76, 115, 1379, 1275, 1276, 29, 328, 83, 3016 84, 1516, 131, 1212, 1284, 110, 130, 116, 875, 1289, 3017 112, 67, 1212, 112, 110, 110, 116, 110, 348, 349, 3018 130, 1230, 49, 1275, 1276, 109, 109, 706, 1289, 1275, 3019 116, 112, 1284, 117, 118, 365, 114, 1289, 110, 369, 3020 110, 110, 1322, 1507, 112, 116, 1506, 1081, 110, 431, 3021 380, 116, 116, 1506, 55, 110, 1506, 1322, 1284, 1507, 3022 110, 1322, 1506, 1289, 112, 109, 396, 1531, 1506, 109, 3023 1322, 109, 109, 109, 132, 1284, 406, 130, 105, 1506, 3024 1289, 112, 1506, 1531, 110, 115, 113, 110, 110, 1289, 3025 115, 473, 110, 128, 424, 115, 97, 1482, 114, 1379, 3026 430, 112, 432, 1378, 132, 112, 116, 112, 110, 72, 3027 110, 74, 75, 1322, 110, 1395, 110, 112, 1041, 146, 3028 83, 84, 112, 112, 1212, 1208, 112, 72, 155, 74, 3029 75, 76, 112, 72, 112, 74, 75, 467, 83, 84, 3030 1420, 47, 472, 1395, 83, 84, 109, 132, 132, 132, 3031 480, 114, 112, 132, 484, 1420, 132, 115, 488, 1420, 3032 110, 491, 1442, 493, 109, 130, 115, 110, 1420, 1449, 3033 109, 1451, 112, 1453, 115, 114, 112, 1044, 205, 112, 3034 112, 1442, 209, 112, 110, 110, 1506, 109, 1449, 112, 3035 1442, 1506, 193, 1506, 112, 109, 109, 1449, 528, 60, 3036 110, 1289, 1482, 533, 132, 110, 114, 1487, 109, 1489, 3037 112, 1420, 239, 595, 112, 216, 1442, 110, 112, 110, 3038 1500, 96, 96, 1449, 1147, 226, 1506, 1507, 109, 109, 3039 464, 115, 132, 1442, 1507, 130, 1516, 110, 110, 1500, 3040 1449, 623, 1442, 110, 271, 110, 628, 274, 1500, 1449, 3041 116, 1531, 42, 583, 132, 132, 110, 110, 1531, 66, 3042 590, 96, 96, 132, 110, 110, 110, 294, 75, 132, 3043 132, 601, 110, 603, 1500, 115, 112, 132, 115, 958, 3044 307, 112, 109, 132, 110, 1506, 30, 115, 110, 1212, 3045 132, 1500, 622, 294, 110, 1378, 110, 667, 1057, 563, 3046 1500, 980, 978, 1226, 565, 984, 1212, 1365, 638, 564, 3047 117, 464, 566, 643, 341, 567, 1470, 699, 345, 1541, 3048 1299, 1327, 652, 1121, 654, 655, 656, 1072, 1449, 685, 3049 685, 713, 913, 698, 66, 1091, 921, 364, 82, 83, 3050 1516, 368, 583, 972, 371, 1212, 868, 723, 649, 940, 3051 82, 1230, 484, 160, 1442, 1034, 0, 1, 688, 733, 3052 571, 1449, 692, 571, 694, 571, 1289, 72, 698, 74, 3053 75, 76, -1, -1, -1, -1, 706, -1, 83, 84, 3054 -1, -1, -1, 1191, 1192, 117, 1194, -1, 32, 719, 3055 720, -1, -1, 1201, -1, 1203, -1, -1, -1, 426, 3056 427, -1, -1, 733, 109, 49, -1, 10, 11, 12, 3057 13, 14, 1500, -1, 221, -1, -1, 1451, -1, 1453, 3058 -1, -1, -1, -1, 806, 69, -1, 454, 160, -1, 3059 85, 86, 87, -1, -1, -1, 39, 671, 1305, -1, 3060 467, -1, 443, -1, -1, -1, -1, 10, 11, 12, 3061 13, 14, 259, 1487, 109, 1489, 111, 264, 113, 114, 3062 -1, 105, -1, -1, 67, 492, -1, 494, 469, 496, 3063 -1, -1, 279, -1, -1, -1, 39, -1, -1, 506, 3064 -1, 508, -1, 813, 511, -1, 513, 514, -1, 221, 3065 1357, -1, -1, 1360, -1, 825, -1, -1, 525, 243, 3066 -1, -1, -1, 147, 67, 506, 109, -1, 111, -1, 3067 511, 155, 156, 514, 117, 118, -1, -1, 671, 1442, 3068 -1, -1, -1, -1, -1, -1, 1449, 259, -1, -1, 3069 -1, -1, 264, -1, -1, -1, 1403, -1, 868, -1, 3070 -1, 1408, 186, 350, 874, -1, 109, -1, 111, -1, 3071 -1, 1359, 579, -1, 117, 118, 790, 201, -1, -1, 3072 204, 205, -1, 590, -1, 209, 800, 897, -1, 1436, 3073 1249, 1250, 1251, -1, -1, -1, 906, 1500, 908, -1, 3074 814, -1, -1, -1, -1, 915, 230, -1, -1, -1, 3075 234, -1, 236, -1, 621, -1, -1, -1, -1, 626, 3076 -1, 245, -1, -1, -1, 632, 0, 251, 938, -1, 3077 -1, -1, 256, -1, -1, -1, -1, -1, 350, -1, 3078 -1, 1003, 266, -1, 431, -1, -1, -1, 958, -1, 3079 274, 10, 11, 12, 13, 14, 380, 790, 32, -1, 3080 -1, 448, 972, -1, -1, -1, -1, 800, -1, -1, 3081 980, -1, -1, 1520, 984, -1, -1, -1, 685, 1526, 3082 39, 814, -1, -1, -1, -1, 473, -1, -1, 670, 3083 1537, -1, 671, -1, 1541, 69, -1, -1, 679, -1, 3084 -1, -1, 683, -1, -1, -1, -1, -1, 67, -1, 3085 -1, 72, -1, 74, 75, 76, 723, 341, -1, 431, 3086 -1, 345, 83, 84, 1034, -1, -1, 351, 1387, 1388, 3087 -1, -1, -1, -1, -1, -1, -1, -1, 745, -1, 3088 364, -1, -1, -1, 368, -1, -1, 371, 109, -1, 3089 109, -1, 111, -1, -1, -1, 117, 118, 117, 118, 3090 -1, 473, 1072, -1, -1, -1, 1425, 491, -1, 493, 3091 -1, -1, -1, -1, -1, -1, 1086, -1, -1, -1, 3092 -1, 1091, 156, 97, 98, 99, 100, 101, 102, 103, 3093 104, 105, 106, 107, 418, -1, -1, 804, 1108, -1, 3094 -1, -1, 809, -1, 1018, 1019, -1, -1, 595, 433, 3095 -1, 790, -1, -1, 438, -1, -1, 131, -1, -1, 3096 -1, 800, 446, -1, 1483, -1, -1, 1189, -1, -1, 3097 -1, -1, -1, 1492, -1, 814, 623, -1, -1, -1, 3098 464, 628, 72, 467, 74, 75, 76, -1, -1, -1, 3099 -1, -1, -1, 83, 84, -1, 230, -1, 482, -1, 3100 484, -1, 1076, 1077, -1, -1, -1, -1, 492, -1, 3101 -1, -1, 496, -1, -1, 1185, -1, 251, -1, 109, 3102 -1, 111, 256, 595, -1, 1018, 1019, 117, 118, -1, 3103 897, -1, -1, -1, -1, -1, -1, 904, 1208, -1, 3104 -1, 525, 526, -1, -1, -1, -1, -1, -1, -1, 3105 -1, 623, 699, 920, -1, -1, 628, -1, 899, 643, 3106 -1, -1, 1284, 0, -1, -1, 713, -1, -1, -1, 3107 -1, -1, -1, -1, -1, 942, 943, 944, -1, 1249, 3108 1250, 1251, -1, 1076, 1077, -1, 733, -1, 572, 72, 3109 -1, 74, 75, 76, -1, 32, -1, -1, -1, -1, 3110 83, 84, -1, -1, -1, -1, 590, 591, 692, -1, 3111 694, -1, -1, -1, 698, -1, -1, 351, 72, 603, 3112 74, 75, 76, -1, -1, -1, 109, 699, 111, 83, 3113 84, -1, 69, 1000, 117, 118, -1, 621, -1, -1, 3114 -1, 713, 626, -1, -1, -1, -1, -1, 632, -1, 3115 1224, 635, 636, 637, -1, 109, -1, 111, -1, 806, 3116 -1, -1, -1, 117, 118, -1, -1, -1, -1, 653, 3117 -1, -1, -1, 26, 27, 28, -1, -1, -1, 1018, 3118 1019, -1, 1256, -1, 418, -1, -1, 671, -1, -1, 3119 1264, 1265, 1266, -1, -1, -1, -1, -1, 682, 433, 3120 -1, -1, -1, -1, 438, -1, -1, -1, 1378, 1379, 3121 -1, 1052, 446, -1, 1081, -1, -1, 1387, 1388, 156, 3122 -1, -1, -1, -1, 708, -1, -1, 711, -1, -1, 3123 464, 1224, -1, -1, 806, -1, 720, 1076, 1077, 723, 3124 -1, -1, -1, -1, -1, 98, -1, 100, 482, -1, 3125 484, -1, -1, -1, 1328, 1425, 1123, -1, -1, -1, 3126 -1, 745, 746, 1256, -1, -1, -1, 751, -1, -1, 3127 -1, 1264, 1265, 1266, -1, -1, -1, -1, -1, -1, 3128 -1, -1, -1, -1, 868, -1, -1, -1, -1, -1, 3129 874, -1, 526, -1, -1, -1, -1, 26, 27, 28, 3130 -1, -1, -1, -1, -1, -1, 790, -1, -1, -1, 3131 -1, -1, 1482, 1483, 251, -1, 800, -1, 802, 256, 3132 804, -1, 1492, 807, -1, 809, 810, -1, 181, -1, 3133 814, 915, -1, -1, -1, 1328, 1506, 1507, 191, 192, 3134 824, 1208, -1, 196, -1, 198, 199, -1, -1, -1, 3135 -1, -1, -1, -1, -1, -1, 1003, 591, -1, -1, 3136 -1, 1531, -1, 1230, -1, -1, -1, -1, -1, 98, 3137 -1, 100, -1, -1, -1, 0, -1, -1, -1, -1, 3138 -1, -1, -1, -1, -1, -1, -1, -1, 972, -1, 3139 -1, 875, -1, -1, -1, -1, 125, -1, -1, -1, 3140 -1, 635, 636, 637, -1, -1, -1, 32, -1, -1, 3141 -1, -1, -1, 897, 351, -1, -1, 1256, -1, 653, 3142 904, 905, -1, -1, 908, 1264, 1265, 1266, -1, -1, 3143 -1, 1003, -1, -1, -1, -1, -1, 671, -1, -1, 3144 -1, -1, -1, -1, 69, -1, -1, -1, 682, -1, 3145 934, -1, 181, -1, -1, 1322, -1, 1298, 942, 943, 3146 189, -1, 191, 192, -1, -1, -1, 196, -1, 198, 3147 199, -1, -1, -1, 708, -1, -1, 711, -1, -1, 3148 -1, 418, -1, -1, -1, -1, -1, -1, 1072, 1328, 3149 -1, -1, -1, -1, -1, -1, 433, -1, -1, -1, 3150 -1, 438, -1, -1, -1, -1, -1, -1, -1, 446, 3151 -1, -1, 746, -1, -1, -1, 1000, 10, 11, 12, 3152 13, 14, -1, -1, -1, -1, -1, 464, -1, 1013, 3153 -1, 156, -1, -1, 1018, 1019, -1, 1021, 1022, 268, 3154 -1, -1, 1189, -1, -1, 482, 39, 484, -1, -1, 3155 -1, -1, -1, 1420, -1, -1, 790, 1041, -1, -1, 3156 -1, -1, -1, -1, -1, -1, 800, -1, 802, -1, 3157 -1, -1, -1, 807, 67, -1, 810, -1, -1, 72, 3158 814, 74, 75, 76, 1451, -1, 1453, -1, -1, 526, 3159 83, 84, 1076, 1077, -1, -1, -1, -1, -1, -1, 3160 -1, 1185, -1, -1, -1, -1, -1, -1, -1, 1450, 3161 -1, 1452, -1, -1, -1, -1, 109, 1189, 111, -1, 3162 1487, -1, 1489, -1, 117, 118, 251, -1, -1, -1, 3163 -1, 256, -1, -1, -1, -1, -1, 1284, -1, 1123, 3164 -1, 875, -1, -1, -1, 1486, -1, 1488, -1, 1516, 3165 -1, -1, -1, -1, 591, -1, -1, -1, -1, -1, 3166 -1, -1, -1, 1147, -1, -1, -1, -1, -1, 0, 3167 -1, 905, -1, -1, -1, -1, -1, 189, -1, -1, 3168 -1, -1, -1, -1, 196, -1, -1, -1, -1, 1530, 3169 -1, 1532, -1, -1, -1, -1, -1, -1, 635, 636, 3170 637, 32, -1, -1, 1545, 1546, 1190, -1, -1, -1, 3171 -1, -1, 1284, -1, -1, -1, 653, -1, -1, -1, 3172 -1, -1, 575, 576, 1208, -1, 351, -1, 1212, -1, 3173 -1, -1, -1, -1, 671, -1, -1, -1, 69, -1, 3174 1224, -1, 1226, -1, -1, 682, 1230, -1, -1, -1, 3175 -1, 604, -1, -1, 607, 608, 268, 610, -1, 612, 3176 613, -1, -1, -1, 617, 618, -1, -1, -1, -1, 3177 -1, 708, 1256, -1, 711, -1, -1, -1, -1, -1, 3178 1264, 1265, 1266, -1, 1018, 1019, -1, 1021, 1022, -1, 3179 -1, 1275, 1276, 418, -1, -1, -1, -1, 10, 11, 3180 12, 13, 14, -1, -1, 1289, -1, 1041, 433, 746, 3181 -1, 323, -1, 438, -1, -1, -1, -1, -1, 331, 3182 -1, 446, 334, -1, -1, 156, -1, 39, -1, -1, 3183 -1, -1, -1, -1, -1, -1, -1, -1, 1322, 464, 3184 -1, -1, 1076, 1077, 1328, -1, 575, 576, -1, -1, 3185 -1, -1, -1, 790, -1, 67, -1, 482, -1, 484, 3186 72, -1, -1, 800, 76, 802, -1, -1, -1, -1, 3187 807, 83, 84, 810, -1, 604, -1, 814, 607, 608, 3188 -1, 610, -1, 612, 613, -1, 398, -1, 617, 618, 3189 402, -1, -1, -1, -1, -1, -1, 109, -1, -1, 3190 -1, 526, 755, 756, -1, 117, 118, -1, -1, -1, 3191 -1, 1395, -1, 1147, -1, -1, -1, -1, -1, -1, 3192 251, -1, -1, -1, -1, 256, -1, -1, -1, -1, 3193 -1, -1, -1, -1, -1, -1, 1420, -1, 875, -1, 3194 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3195 -1, -1, -1, -1, -1, -1, 1190, -1, 1442, -1, 3196 -1, -1, -1, -1, -1, 1449, 591, 479, 905, -1, 3197 -1, -1, -1, -1, -1, -1, -1, -1, 1212, -1, 3198 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3199 1224, -1, 1226, -1, -1, -1, -1, -1, -1, -1, 3200 -1, -1, -1, -1, 10, 11, 12, 13, 14, -1, 3201 635, 636, 637, -1, -1, -1, 1500, -1, -1, -1, 3202 351, -1, 1256, 1507, -1, -1, 755, 756, 653, -1, 3203 1264, 1265, 1266, 39, -1, -1, -1, -1, -1, -1, 3204 -1, 1275, 1276, -1, -1, -1, 671, -1, -1, -1, 3205 -1, -1, -1, -1, -1, 1289, -1, 682, -1, 571, 3206 572, 67, -1, -1, 917, -1, 72, -1, 74, 75, 3207 76, -1, -1, -1, -1, -1, -1, 83, 84, -1, 3208 -1, 1018, 1019, 708, 1021, 1022, 711, 418, -1, -1, 3209 -1, -1, -1, -1, 1328, -1, -1, -1, -1, -1, 3210 -1, -1, 433, 109, 1041, 111, -1, 438, -1, -1, 3211 -1, 117, 118, -1, -1, 446, -1, -1, -1, -1, 3212 -1, 746, -1, -1, -1, -1, -1, -1, -1, -1, 3213 -1, -1, -1, 464, -1, -1, -1, -1, -1, 1076, 3214 1077, -1, -1, -1, -1, -1, 658, -1, -1, -1, 3215 662, 482, -1, 484, -1, -1, -1, -1, -1, -1, 3216 -1, 1395, -1, -1, -1, 790, -1, -1, -1, -1, 3217 -1, -1, -1, -1, -1, 800, -1, 802, -1, -1, 3218 -1, -1, 807, 912, -1, 810, -1, -1, 917, 814, 3219 -1, -1, -1, -1, -1, 526, 53, -1, 55, -1, 3220 -1, 58, 59, 60, -1, 62, -1, -1, 1442, -1, 3221 1147, -1, -1, -1, -1, 1449, -1, -1, -1, 76, 3222 -1, -1, -1, -1, -1, 1078, -1, -1, -1, -1, 3223 -1, 88, 89, -1, 10, 11, 12, 13, 14, -1, 3224 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3225 875, -1, -1, 1190, -1, -1, -1, -1, -1, -1, 3226 591, -1, -1, 39, -1, -1, 1500, -1, -1, -1, 3227 -1, -1, -1, -1, -1, 1212, -1, -1, -1, -1, 3228 905, -1, 794, -1, -1, -1, -1, 1224, -1, 1226, 3229 -1, 67, -1, -1, -1, -1, 72, -1, 74, 75, 3230 76, -1, -1, -1, 635, 636, 637, 83, 84, -1, 3231 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1256, 3232 -1, -1, 653, -1, -1, -1, -1, 1264, 1265, 1266, 3233 -1, -1, -1, 109, -1, 111, -1, -1, 1275, 1276, 3234 671, 117, 118, -1, -1, 282, -1, 284, 285, 1078, 3235 -1, 682, 1289, -1, 1207, 292, 293, -1, -1, -1, 3236 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3237 307, 308, -1, -1, -1, -1, -1, 708, -1, -1, 3238 711, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3239 -1, 1328, -1, 1018, 1019, -1, 1021, 1022, -1, -1, 3240 912, -1, -1, -1, -1, -1, -1, -1, 345, -1, 3241 -1, -1, -1, -1, -1, 746, 1041, 10, 11, 12, 3242 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3243 23, 24, 25, 26, 27, 28, -1, 30, 31, 32, 3244 -1, -1, -1, -1, 381, -1, 39, -1, -1, -1, 3245 -1, 1076, 1077, -1, -1, -1, -1, -1, 1395, 790, 3246 -1, -1, -1, -1, -1, -1, -1, -1, -1, 800, 3247 -1, 802, -1, -1, 67, -1, 807, 989, 1207, 810, 3248 -1, 74, 75, 814, -1, 78, -1, 344, -1, 346, 3249 -1, -1, -1, -1, 1006, -1, -1, -1, -1, -1, 3250 357, 358, -1, -1, -1, 1442, -1, -1, -1, -1, 3251 37, 38, 1449, 40, -1, -1, 109, -1, 111, -1, 3252 -1, -1, 1147, -1, 117, 118, -1, -1, -1, -1, 3253 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 3254 -1, -1, -1, -1, 875, 72, -1, -1, -1, 76, 3255 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3256 87, -1, -1, 1500, -1, 1190, -1, -1, -1, -1, 3257 -1, -1, 1084, -1, 905, -1, -1, -1, -1, -1, 3258 -1, -1, 109, -1, 111, -1, -1, 1212, -1, -1, 3259 117, 118, 119, 120, 121, 122, -1, -1, -1, 1224, 3260 -1, 1226, 7, 130, -1, 10, 11, 12, 13, 14, 3261 -1, -1, 1124, 550, 551, 552, 553, 554, 555, 556, 3262 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 3263 567, 1256, 37, 38, 39, 40, -1, -1, -1, 1264, 3264 1265, 1266, -1, -1, -1, -1, -1, -1, -1, -1, 3265 1275, 1276, -1, -1, -1, -1, -1, -1, -1, -1, 3266 -1, 66, 67, -1, 1289, -1, -1, 72, -1, -1, 3267 -1, 76, -1, -1, 79, 80, 81, 82, 83, 84, 3268 -1, 86, 87, -1, -1, -1, -1, 1018, 1019, -1, 3269 1021, 1022, -1, -1, -1, -1, -1, -1, -1, -1, 3270 -1, -1, -1, 1328, 109, -1, 111, -1, -1, -1, 3271 1041, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3272 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3273 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3274 23, 24, 25, 26, 27, 1076, 1077, 30, 31, 32, 3275 33, -1, -1, 36, 37, 38, 39, 40, -1, 696, 3276 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3277 1395, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3278 -1, -1, -1, 66, 67, -1, 69, -1, 71, 72, 3279 -1, 74, 75, 76, 49, -1, 79, 80, 81, 82, 3280 83, 84, -1, 86, 87, -1, -1, -1, -1, -1, 3281 -1, 66, -1, -1, -1, -1, 1147, 1442, -1, -1, 3282 757, -1, -1, -1, 1449, -1, 109, -1, 111, -1, 3283 -1, -1, -1, -1, 117, 118, 119, 120, 121, 122, 3284 -1, -1, -1, 700, -1, 702, -1, -1, -1, 132, 3285 787, -1, 709, 710, -1, -1, -1, 714, 113, 1190, 3286 -1, -1, 117, -1, -1, -1, -1, -1, -1, 726, 3287 -1, -1, -1, -1, 731, 1500, -1, -1, -1, -1, 3288 -1, 1212, -1, -1, -1, -1, -1, -1, -1, -1, 3289 -1, 146, -1, 1224, -1, 1226, -1, -1, -1, -1, 3290 -1, 156, 759, -1, -1, 160, -1, -1, -1, -1, 3291 -1, -1, -1, -1, -1, -1, 7, -1, -1, 10, 3292 11, 12, 13, 14, -1, 1256, -1, -1, -1, -1, 3293 -1, -1, -1, 1264, 1265, 1266, -1, -1, -1, -1, 3294 -1, -1, -1, -1, 1275, 1276, 37, 38, 39, 40, 3295 -1, -1, -1, -1, 209, -1, -1, -1, 1289, -1, 3296 -1, -1, -1, -1, -1, -1, 221, -1, -1, -1, 3297 907, -1, -1, -1, -1, 66, 67, -1, -1, -1, 3298 -1, 72, -1, -1, 239, 76, -1, -1, 79, 80, 3299 81, 82, 83, 84, -1, 86, 87, 1328, -1, -1, 3300 -1, 858, 859, 860, 861, -1, 863, -1, -1, 264, 3301 -1, -1, -1, -1, -1, 952, 271, -1, 109, -1, 3302 111, 878, -1, -1, -1, -1, 117, 118, 119, 120, 3303 121, 122, -1, -1, -1, 892, -1, -1, -1, 294, 3304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3305 987, -1, 307, -1, -1, -1, -1, -1, -1, 66, 3306 -1, -1, -1, 1000, 1395, -1, -1, -1, 75, -1, 3307 77, -1, 79, -1, -1, 932, -1, -1, -1, 86, 3308 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3309 345, -1, -1, -1, -1, 350, -1, -1, -1, -1, 3310 -1, -1, -1, -1, 1041, -1, -1, -1, -1, -1, 3311 117, 1442, 119, 120, 121, -1, -1, -1, 1449, -1, 3312 977, -1, -1, -1, -1, -1, 983, -1, -1, -1, 3313 -1, 988, -1, -1, -1, -1, 993, -1, 995, -1, 3314 -1, -1, 999, -1, 1001, 1002, -1, -1, 1005, -1, 3315 -1, -1, -1, 160, -1, -1, -1, 1014, -1, -1, 3316 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1500, 3317 -1, 426, 427, -1, -1, 1032, 1033, -1, 433, -1, 3318 -1, 1118, -1, -1, -1, -1, -1, -1, -1, -1, 3319 -1, -1, -1, -1, -1, -1, -1, -1, -1, 454, 3320 -1, -1, 1059, -1, -1, 1062, -1, -1, -1, -1, 3321 -1, -1, -1, -1, 221, -1, 223, 224, 225, -1, 3322 -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, 3323 -1, 10, 11, 12, 13, 14, -1, -1, -1, 494, 3324 -1, 1178, 1179, -1, -1, -1, -1, -1, 1105, -1, 3325 -1, 506, 259, 508, 1111, 1112, 511, 264, 513, 514, 3326 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3327 -1, 526, 279, -1, 1131, -1, -1, 1134, -1, -1, 3328 -1, 1138, -1, -1, -1, -1, -1, -1, 67, -1, 3329 -1, -1, -1, 72, 1151, 74, 75, 76, -1, -1, 3330 -1, -1, -1, -1, 83, 84, -1, 1164, -1, 1166, 3331 1167, 1168, 1169, -1, -1, -1, -1, -1, -1, -1, 3332 -1, 328, -1, -1, 579, 1182, -1, 1184, -1, -1, 3333 109, 1188, -1, -1, -1, -1, 591, -1, 117, 118, 3334 595, -1, -1, 350, -1, -1, -1, -1, 355, 356, 3335 -1, -1, -1, -1, -1, -1, 363, -1, -1, -1, 3336 1217, 1218, -1, -1, -1, -1, 621, -1, -1, -1, 3337 -1, 626, -1, -1, -1, -1, -1, -1, -1, -1, 3338 635, 636, 637, -1, -1, -1, -1, -1, -1, -1, 3339 -1, -1, -1, -1, -1, -1, -1, -1, 653, 406, 3340 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3341 1267, 1268, -1, -1, -1, -1, -1, 424, -1, -1, 3342 1277, -1, 429, -1, 431, -1, -1, -1, -1, -1, 3343 685, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3344 -1, 448, -1, -1, 451, 452, 1383, -1, -1, -1, 3345 -1, -1, 459, -1, -1, -1, 711, -1, 713, -1, 3346 -1, -1, 1399, -1, -1, -1, 473, -1, -1, -1, 3347 -1, -1, -1, 480, -1, -1, -1, -1, -1, -1, 3348 -1, 1338, -1, 1340, 1341, 1342, -1, -1, -1, -1, 3349 -1, 746, -1, -1, -1, 1352, 44, -1, -1, -1, 3350 -1, -1, -1, -1, 1361, 10, 11, 12, 13, 14, 3351 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3352 25, 26, 27, -1, -1, 30, 31, 32, -1, 1386, 3353 -1, -1, 1469, 1470, 39, -1, -1, 10, 11, 12, 3354 13, 14, -1, 91, -1, -1, -1, 802, -1, -1, 3355 -1, 806, -1, 101, -1, 810, -1, -1, -1, -1, 3356 -1, -1, 67, -1, -1, -1, 39, 72, -1, 74, 3357 75, 76, 1429, 1430, -1, -1, -1, -1, 83, 84, 3358 -1, -1, -1, -1, -1, 1442, -1, -1, 595, -1, 3359 -1, -1, 1449, -1, 67, -1, -1, -1, -1, 72, 3360 -1, 74, 75, 76, 109, -1, 111, -1, -1, 157, 3361 83, 84, 117, 118, -1, -1, 623, -1, -1, -1, 3362 -1, 628, -1, 171, 1481, -1, -1, -1, 1485, -1, 3153 3363 -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, 3154 745, 590, -1, -1, 117, 118, 874, -1, 0, -1, 3155 190, -1, -1, 32, 1515, -1, -1, 197, -1, -1, 3156 -1, -1, -1, -1, -1, -1, -1, -1, 896, 1188, 3157 801, -1, -1, -1, -1, 903, 904, -1, 809, 907, 3158 32, -1, -1, -1, 789, 634, 635, 636, -1, -1, 3159 69, -1, -1, -1, 799, -1, 801, -1, -1, -1, 3160 -1, 806, -1, 652, 809, 933, -1, -1, 813, -1, 3161 -1, -1, -1, 941, 942, -1, -1, 69, -1, -1, 3162 -1, 670, -1, -1, -1, -1, -1, -1, -1, 269, 3163 -1, -1, 681, -1, -1, -1, -1, -1, -1, -1, 3164 -1, -1, -1, 874, -1, -1, -1, -1, -1, -1, 3165 -1, -1, -1, -1, -1, -1, -1, -1, 707, -1, 3166 -1, 710, -1, -1, 1283, -1, -1, -1, -1, 874, 3167 -1, 999, -1, -1, -1, -1, -1, -1, 157, -1, 3168 -1, -1, -1, 323, 1012, -1, -1, -1, -1, 1017, 3169 1018, 331, 1020, 1021, 334, -1, 745, -1, -1, 904, 3170 -1, -1, -1, -1, -1, 157, -1, 1207, -1, -1, 3171 -1, 942, 1040, -1, -1, 3, 4, 5, 6, 7, 3364 -1, -1, -1, -1, 117, 118, 194, -1, -1, -1, 3365 905, -1, -1, -1, -1, -1, 1513, -1, 1515, -1, 3366 208, -1, -1, -1, -1, 920, -1, -1, -1, 217, 3367 -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 3368 -1, -1, -1, -1, -1, -1, 1543, 1544, -1, 944, 3369 -1, -1, 699, -1, 1551, 1552, -1, -1, -1, -1, 3370 -1, -1, -1, -1, 252, -1, 713, -1, -1, 257, 3371 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3372 -1, -1, 270, -1, -1, -1, 733, -1, 276, -1, 3373 278, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3374 -1, -1, -1, -1, -1, 1000, -1, 295, 10, 11, 3375 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3376 22, 23, 24, 25, 26, 27, 1021, 1022, 30, 31, 3377 32, -1, -1, -1, -1, -1, -1, 39, -1, -1, 3378 -1, -1, -1, -1, -1, -1, -1, 794, -1, -1, 3379 338, -1, -1, -1, -1, 343, -1, -1, -1, 806, 3380 -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, 3381 72, -1, 74, 75, 76, -1, -1, -1, 825, -1, 3382 -1, 83, 84, -1, 372, -1, 1081, -1, 376, 377, 3383 -1, 379, -1, -1, -1, -1, -1, -1, 386, 387, 3384 -1, 389, 390, -1, 392, -1, 394, 109, -1, 111, 3385 -1, -1, -1, -1, -1, 117, 118, -1, -1, -1, 3386 -1, -1, -1, 411, -1, -1, -1, -1, -1, -1, 3387 -1, 419, -1, -1, -1, -1, -1, -1, -1, 155, 3388 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3389 -1, -1, 1147, -1, -1, -1, 444, -1, -1, -1, 3390 -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 3391 14, -1, -1, 189, -1, -1, -1, -1, -1, -1, 3392 196, -1, 470, -1, -1, -1, -1, -1, 476, -1, 3393 -1, 938, -1, 481, 1189, 39, 10, 11, 12, 13, 3394 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3395 24, 25, 26, 27, 28, -1, 30, 31, 32, -1, 3396 -1, 968, -1, 67, -1, 39, -1, -1, 72, 517, 3397 -1, 1226, 76, -1, -1, -1, -1, -1, -1, 83, 3398 84, -1, -1, -1, 532, -1, -1, -1, -1, -1, 3399 -1, -1, 268, 67, -1, -1, 1003, -1, 72, -1, 3400 74, 75, 76, -1, 78, 109, -1, 1014, -1, 83, 3401 84, -1, -1, 117, 118, -1, -1, -1, -1, -1, 3402 1275, 1276, -1, 571, -1, -1, -1, -1, -1, 1284, 3403 -1, -1, 580, -1, -1, 109, -1, 111, 146, 587, 3404 -1, -1, -1, 117, 118, 593, -1, 323, 156, -1, 3405 -1, -1, -1, -1, 602, 331, 332, -1, 334, 335, 3406 168, 169, -1, -1, -1, -1, -1, -1, -1, 345, 3407 -1, -1, -1, 349, -1, -1, -1, -1, -1, 1086, 3408 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3409 -1, -1, 368, 1100, 642, 371, 3, 4, 5, 6, 3410 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3411 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3412 27, -1, 398, 30, 31, 32, 402, -1, -1, -1, 3413 678, 239, 39, -1, -1, -1, -1, -1, 686, -1, 3414 1395, -1, 37, 38, -1, 40, -1, -1, -1, -1, 3415 -1, -1, -1, -1, -1, 263, -1, 433, -1, -1, 3416 67, -1, 69, -1, 71, -1, -1, 74, 75, 717, 3417 -1, 66, -1, -1, -1, -1, -1, 72, -1, 727, 3418 728, 76, 1189, -1, 79, 80, 81, 82, 83, 84, 3419 -1, 86, 87, -1, -1, -1, 1451, -1, 1453, -1, 3420 -1, -1, -1, 479, 111, -1, 482, -1, -1, -1, 3421 117, 118, 760, -1, 109, -1, 111, 765, -1, 114, 3422 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3423 -1, -1, 1487, -1, 1489, -1, -1, -1, -1, -1, 3424 -1, -1, -1, -1, -1, 521, -1, -1, -1, 525, 3425 526, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3426 -1, 1516, -1, -1, -1, -1, -1, -1, -1, -1, 3427 -1, -1, 380, -1, -1, -1, -1, 1284, -1, -1, 3428 -1, 829, -1, -1, -1, -1, -1, -1, 836, -1, 3429 -1, -1, -1, -1, -1, 571, 572, -1, -1, -1, 3430 -1, 849, -1, 851, -1, -1, -1, -1, -1, -1, 3431 -1, -1, -1, -1, 590, 591, -1, 865, -1, -1, 3432 -1, -1, -1, 871, -1, 601, -1, 603, 604, -1, 3433 -1, -1, -1, -1, 610, 883, -1, -1, 886, -1, 3434 -1, -1, -1, -1, 620, 621, -1, -1, -1, -1, 3435 626, -1, -1, -1, -1, -1, -1, -1, -1, 635, 3436 636, 637, -1, -1, -1, -1, 474, -1, -1, -1, 3437 -1, -1, -1, -1, -1, -1, -1, 653, -1, -1, 3438 -1, -1, 658, 659, -1, -1, 662, 663, -1, -1, 3439 -1, -1, -1, 669, -1, -1, -1, -1, -1, -1, 3440 -1, -1, -1, -1, -1, 513, -1, -1, -1, -1, 3441 -1, -1, 688, -1, -1, 963, -1, -1, 526, -1, 3442 -1, -1, -1, 531, -1, -1, 534, -1, -1, -1, 3443 -1, -1, -1, -1, -1, 711, 712, -1, -1, 547, 3444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3445 998, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3446 -1, 569, -1, -1, -1, -1, -1, -1, -1, 745, 3447 746, 579, -1, -1, 750, 751, -1, -1, 586, -1, 3448 -1, -1, -1, 591, -1, -1, -1, -1, -1, -1, 3449 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3450 20, 21, 22, 23, 24, 25, 26, 27, 1056, -1, 3451 30, 31, 32, -1, 1062, -1, -1, -1, 794, 39, 3452 -1, -1, -1, -1, 1531, -1, 802, -1, -1, -1, 3453 -1, -1, 640, 809, 810, -1, -1, 813, -1, 815, 3454 648, -1, -1, -1, -1, -1, -1, 67, 1096, 825, 3455 -1, -1, 72, 1101, 74, 75, 76, -1, -1, -1, 3456 -1, 1109, -1, 83, 84, -1, 10, 11, 12, 13, 3457 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3458 24, 25, 26, 27, 28, -1, -1, -1, -1, 109, 3459 -1, 111, -1, -1, 1142, 39, -1, 117, 118, -1, 3460 -1, -1, -1, -1, -1, -1, 1154, -1, -1, 1157, 3461 -1, 1159, -1, -1, -1, -1, -1, -1, -1, -1, 3462 -1, 897, -1, 67, -1, 1173, 1174, -1, 904, 905, 3463 906, -1, 908, -1, 78, -1, 912, -1, 746, -1, 3464 748, -1, -1, -1, -1, -1, -1, 1195, -1, -1, 3465 758, -1, -1, -1, -1, -1, 764, 933, 934, -1, 3466 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3467 20, 21, 22, 23, 24, 25, 26, 27, 28, -1, 3468 -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 3469 -1, -1, 968, -1, 1242, -1, -1, -1, 806, 807, 3470 -1, -1, 810, -1, -1, -1, -1, -1, 37, 38, 3471 -1, 40, -1, 989, 990, -1, 824, 67, -1, -1, 3472 -1, -1, -1, -1, 1000, -1, -1, -1, 78, -1, 3473 1006, 1007, -1, 1009, 1010, 1011, -1, 66, -1, -1, 3474 -1, -1, -1, 72, -1, 1021, 1022, 76, -1, -1, 3475 79, 80, 81, 82, 83, 84, 864, 86, 87, -1, 3476 868, -1, -1, -1, -1, -1, -1, -1, -1, 1317, 3477 -1, 1319, -1, -1, -1, -1, -1, -1, -1, -1, 3478 109, -1, 111, 1331, -1, 1333, -1, 116, 117, 118, 3479 119, 120, 121, 122, -1, -1, -1, 905, -1, -1, 3480 -1, -1, 1350, -1, -1, -1, -1, -1, 1084, -1, 3481 1086, -1, -1, -1, -1, 1091, -1, -1, 1366, 1367, 3482 -1, -1, -1, -1, 1100, -1, -1, -1, -1, 1377, 3483 -1, -1, 1380, -1, -1, -1, 944, -1, -1, -1, 3484 -1, -1, -1, -1, -1, -1, -1, 1123, 1124, 1125, 3485 -1, -1, -1, 1401, -1, -1, -1, -1, -1, -1, 3486 -1, -1, 1410, -1, 972, 1413, -1, 1415, 1416, 1417, 3487 978, 1147, -1, -1, 982, 37, 38, -1, 40, -1, 3488 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3489 -1, -1, -1, -1, -1, 1003, -1, -1, -1, -1, 3490 -1, -1, -1, -1, 66, -1, 1014, 1455, -1, 1457, 3491 72, 1459, 74, 75, 76, -1, -1, 79, 80, 81, 3492 82, 83, 84, -1, 86, 87, 1474, -1, 1036, -1, 3493 1038, -1, 1208, -1, -1, -1, -1, -1, -1, -1, 3494 -1, -1, -1, -1, -1, 1053, 1054, 109, -1, 111, 3495 1226, 113, 114, -1, -1, 117, 118, 119, 120, 121, 3496 122, -1, -1, -1, -1, -1, 1074, -1, -1, -1, 3497 -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 3498 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3499 19, 20, 21, 22, 23, 24, 25, 26, 27, 1275, 3500 1276, 30, 31, 32, 33, -1, -1, 36, -1, -1, 3501 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3502 -1, 1129, -1, -1, -1, -1, -1, -1, -1, -1, 3503 -1, -1, -1, -1, -1, -1, -1, -1, 67, 1147, 3504 69, -1, 71, -1, -1, 74, 75, -1, -1, -1, 3505 -1, -1, -1, -1, 1162, 1163, -1, 3, 4, 5, 3506 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3507 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3508 26, 27, 111, -1, 30, 31, 32, 33, 117, 118, 3509 36, 37, 38, 39, 40, 41, -1, 43, -1, -1, 3510 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, 3511 -1, 57, -1, -1, -1, 61, 62, -1, 64, 1395, 3512 66, 67, -1, 69, -1, 71, 72, -1, 74, 75, 3513 76, -1, -1, 79, 80, 81, 82, 83, 84, -1, 3514 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, 3515 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3516 -1, -1, -1, 109, -1, 111, -1, -1, 114, -1, 3517 -1, 117, 118, 119, 120, 121, 122, -1, -1, -1, 3518 -1, 127, -1, -1, -1, -1, 132, -1, -1, -1, 3519 -1, -1, -1, -1, -1, 1303, -1, -1, 1306, -1, 3520 -1, -1, -1, -1, -1, -1, 1482, -1, -1, -1, 3521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3522 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3523 1506, 1507, -1, -1, -1, -1, -1, -1, -1, -1, 3524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3525 -1, -1, -1, -1, -1, 1531, 3, 4, 5, 6, 3526 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3527 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3528 27, -1, -1, 30, 31, 32, 33, -1, -1, 36, 3529 37, 38, 39, 40, 10, 11, 12, 13, 14, 15, 3530 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3531 26, 27, -1, -1, 30, 31, 32, -1, -1, 66, 3532 67, -1, 69, 39, 71, 72, -1, 74, 75, 76, 3533 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3534 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3535 -1, 67, -1, -1, -1, -1, 72, -1, 74, 75, 3536 -1, -1, 109, -1, 111, -1, -1, 83, 84, -1, 3537 117, 118, 119, 120, 121, 122, 4, 5, 6, 7, 3172 3538 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3173 3539 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3174 789, -1, 30, 31, 32, -1, -1, 1075, 1076, -1, 3175 799, 39, 801, -1, -1, -1, -1, 806, 398, -1, 3176 809, -1, 402, -1, 813, -1, -1, -1, -1, -1, 3177 -1, -1, -1, 252, -1, -1, -1, -1, 257, 67, 3178 -1, 69, -1, 71, 72, -1, 74, 75, 76, 1020, 3179 1021, -1, -1, -1, 1122, 83, 84, -1, -1, -1, 3180 252, -1, -1, -1, -1, 257, -1, -1, -1, 1040, 3181 -1, -1, 1017, 1018, -1, 1020, 1021, -1, 1146, -1, 3182 -1, 109, -1, 111, -1, 874, -1, -1, -1, 117, 3183 118, -1, -1, -1, -1, 1040, -1, -1, -1, 479, 3184 -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 3185 -1, -1, -1, -1, -1, 904, -1, -1, -1, -1, 3186 -1, 1189, -1, -1, -1, -1, -1, -1, -1, -1, 3187 1075, 1076, 351, -1, 39, -1, -1, 1377, -1, 1207, 3188 -1, -1, -1, 1211, -1, -1, -1, -1, -1, -1, 3189 -1, -1, -1, -1, -1, 1223, -1, 1225, -1, 351, 3190 -1, 1229, 67, -1, -1, -1, -1, 72, -1, 74, 3191 75, 76, -1, -1, -1, 26, 27, 28, 83, 84, 3192 -1, -1, -1, -1, -1, -1, -1, 1255, -1, -1, 3193 570, 571, -1, -1, -1, 1263, 1264, 1265, -1, 418, 3194 -1, 1146, -1, -1, 109, -1, 1274, 1275, -1, -1, 3195 -1, -1, 117, 118, 433, -1, -1, 1188, 1189, 438, 3196 1288, -1, -1, -1, -1, -1, 418, 446, 1017, 1018, 3197 -1, 1020, 1021, -1, -1, -1, -1, -1, -1, -1, 3198 1211, 433, -1, -1, 1189, 464, 438, -1, 99, -1, 3199 101, 1040, -1, 1321, 446, -1, -1, -1, 1229, 1327, 3200 -1, -1, -1, 482, -1, 484, 1211, -1, -1, -1, 3201 -1, -1, 464, -1, -1, 126, -1, 657, 1223, -1, 3202 1225, 661, -1, -1, -1, -1, 1075, 1076, -1, -1, 3203 482, -1, 484, -1, -1, -1, -1, -1, -1, -1, 3204 -1, -1, -1, 1274, 1275, -1, -1, 526, -1, -1, 3205 1255, -1, 1283, -1, -1, -1, -1, 1288, 1263, 1264, 3206 1265, -1, -1, -1, -1, -1, 1394, -1, -1, 1274, 3207 1275, 182, -1, -1, 526, -1, -1, -1, -1, 190, 3208 -1, 192, 193, 1288, -1, -1, 197, -1, 199, 200, 3209 1321, 1419, -1, 53, -1, 55, -1, 1146, 58, 59, 3210 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, 3211 -1, 590, -1, 1441, -1, -1, -1, 77, -1, -1, 3212 1448, -1, 1327, -1, -1, -1, -1, -1, -1, 89, 3213 90, -1, -1, -1, 26, 27, 28, -1, 590, -1, 3214 1189, -1, -1, -1, -1, -1, 10, 11, 12, 13, 3215 14, -1, -1, 793, -1, 634, 635, 636, 269, -1, 3216 -1, -1, 1211, 1394, -1, -1, -1, -1, -1, -1, 3217 -1, 1499, -1, 652, 1223, 39, 1225, -1, 1506, -1, 3218 -1, -1, 634, 635, 636, -1, -1, -1, 1419, 1394, 3219 -1, 670, -1, -1, -1, -1, -1, -1, -1, -1, 3220 652, -1, 681, 67, -1, -1, 1255, 99, 72, 101, 3221 1441, -1, 76, -1, 1263, 1264, 1265, 1448, 670, 83, 3222 84, -1, -1, -1, -1, 1274, 1275, -1, 707, 681, 3223 -1, 710, -1, -1, -1, -1, 1441, -1, -1, 1288, 3224 -1, -1, -1, 1448, -1, 109, -1, -1, -1, -1, 3225 -1, -1, -1, 117, 118, 707, -1, -1, 710, 10, 3226 11, 12, 13, 14, -1, -1, 745, -1, 1499, -1, 3227 -1, 911, -1, -1, -1, -1, -1, -1, 1327, -1, 3228 -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 3229 182, -1, -1, 745, 1499, -1, -1, -1, -1, -1, 3230 192, 193, -1, -1, -1, 197, -1, 199, 200, -1, 3231 789, -1, -1, -1, -1, -1, 67, -1, -1, -1, 3232 799, 72, 801, 74, 75, 76, -1, 806, -1, -1, 3233 809, -1, 83, 84, 813, -1, -1, 789, -1, 10, 3234 11, 12, 13, 14, -1, 1394, -1, 799, 988, 801, 3235 -1, -1, -1, -1, 806, -1, -1, 809, 109, -1, 3236 111, 813, -1, -1, -1, 1005, 117, 118, 39, -1, 3237 -1, 10, 11, 12, 13, 14, -1, -1, -1, -1, 3238 -1, -1, -1, -1, 344, -1, 346, -1, -1, -1, 3239 -1, -1, 1441, -1, -1, 874, 67, 357, 358, 1448, 3240 39, 72, -1, 74, 75, 76, -1, -1, -1, -1, 3241 -1, -1, 83, 84, -1, -1, -1, -1, -1, -1, 3242 -1, -1, 874, -1, -1, 904, -1, -1, 67, -1, 3243 -1, -1, -1, 72, -1, 74, 75, 76, 109, -1, 3244 111, -1, -1, 1083, 83, 84, 117, 118, -1, -1, 3245 1499, -1, 904, -1, -1, -1, -1, -1, -1, -1, 3246 -1, -1, -1, 574, 575, -1, -1, -1, -1, -1, 3247 109, -1, -1, -1, -1, -1, -1, -1, 117, 118, 3248 -1, -1, -1, 1123, -1, -1, -1, -1, -1, -1, 3249 -1, -1, 603, -1, -1, 606, 607, -1, 609, -1, 3250 611, 612, -1, -1, -1, 616, 617, 3, 4, 5, 3251 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3252 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3253 26, 27, 28, -1, 30, 31, 32, 33, 1017, 1018, 3254 36, 1020, 1021, 39, -1, -1, -1, -1, -1, -1, 3540 -1, -1, 30, 31, 32, -1, -1, -1, 1516, 37, 3541 38, 39, 40, 10, 11, 12, 13, 14, 15, 16, 3542 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3543 27, -1, -1, 30, 31, 32, -1, -1, 66, 67, 3544 -1, 69, 39, 71, 72, -1, 74, 75, 76, -1, 3545 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3255 3546 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3256 -1, 1040, -1, -1, -1, 1017, 1018, -1, 1020, 1021, 3257 -1, 67, -1, 69, -1, 71, -1, -1, 74, 75, 3258 -1, -1, 78, -1, -1, -1, 7, -1, 1040, 10, 3259 11, 12, 13, 14, -1, -1, 1075, 1076, -1, -1, 3547 67, -1, -1, -1, -1, -1, -1, 74, 75, -1, 3548 -1, 109, -1, 111, -1, -1, -1, -1, 116, 117, 3549 118, 119, 120, 121, 122, 4, 5, 6, 7, 8, 3550 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3551 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3552 -1, 30, 31, 32, -1, -1, -1, -1, 37, 38, 3553 39, 40, 10, 11, 12, 13, 14, 15, 16, 17, 3554 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3555 -1, -1, 30, 31, 32, -1, -1, 66, 67, -1, 3556 69, 39, 71, 72, -1, 74, 75, 76, -1, -1, 3557 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 3558 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, 3559 -1, -1, -1, -1, -1, -1, 74, 75, -1, -1, 3560 109, -1, 111, -1, -1, -1, -1, 116, 117, 118, 3561 119, 120, 121, 122, 4, 5, 6, 7, 8, 9, 3562 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3563 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3564 30, 31, 32, -1, -1, -1, -1, 37, 38, 39, 3565 40, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3566 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3567 -1, -1, -1, -1, -1, -1, 66, 67, -1, 69, 3568 39, 71, 72, -1, 74, 75, 76, -1, -1, 79, 3569 80, 81, 82, 83, 84, -1, 86, 87, -1, -1, 3570 -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, 3571 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 3572 -1, 111, -1, -1, -1, -1, 116, 117, 118, 119, 3573 120, 121, 122, 4, 5, 6, 7, 8, 9, 10, 3574 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3575 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3576 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3260 3577 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3261 -1, -1, -1, -1, -1, 111, 37, 38, 39, 40,3262 -1, 117, 118, 1075, 1076, -1, -1, -1, -1, -1,3263 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3264 -1, -1, -1, 754, 755, 66, 67, -1, -1, -1,3265 -1, 72, -1, -1, -1, 76, -1, -1, 79, 80,3266 81, 82, 83, 84, -1, 86, 87, 1146, -1, -1,3267 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3268 -1, -1, 574, 575, -1, -1, -1, -1, 109, -1,3269 111, -1, -1, -1, 1146, -1, 117, 118, 119, 120,3270 121, 122, -1, -1, -1, -1, -1, -1, -1, -1,3271 1189, 603, -1, -1, 606, 607, -1, 609, -1, 611,3272 612, -1, -1, -1, 616, 617, -1, -1, -1, -1,3273 -1, -1, 1211, -1, -1, -1, -1, 1189, -1, 699,3274 -1, 701, -1, -1, 1223, -1, 1225, -1, 708, 709,3275 -1, -1, -1, 713, -1, -1, -1, -1, -1, 1211,3276 -1, -1, -1, -1, -1, 725, -1, -1, -1, -1,3277 730, 1223, -1, 1225, -1, -1, 1255, -1, -1, -1,3278 -1, -1, -1, -1, 1263, 1264, 1265, -1, -1, -1,3279 -1, -1, -1, -1, -1, 1274, 1275, -1, 758, -1,3280 911, -1, -1, 1255, -1, 916, -1, -1, -1, 1288,3281 -1, 1263, 1264, 1265, -1, -1, -1, -1, -1, -1,3282 -1, -1, 1274, 1275, -1, -1, -1, -1, -1, -1,3283 -1, -1, -1, -1, -1, -1, 1288, -1, -1, -1,3284 -1, -1, -1, -1, -1, -1, -1, -1, 1327, -1,3285 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3286 49, -1, 754, 755, -1, -1, -1, -1, -1, -1,3287 -1, -1, -1, -1, -1, 1327, -1, 66, -1, -1,3288 7, -1, -1, 10, 11, 12, 13, 14, -1, -1,3289 -1, -1, -1, -1, -1, -1, -1, 857, 858, 859,3290 860, -1, 862, -1, -1, -1, -1, -1, -1, -1,3291 37, 38, 39, 40, -1, 1394, -1, 877, -1, -1,3292 -1, -1, -1, -1, -1, 114, -1, -1, -1, 118,3293 -1, 891, -1, -1, -1, -1, -1, -1, -1, 66,3294 67, -1, 1394, -1, -1, 72, -1, -1, -1, 76,3295 -1, -1, 79, 80, 81, 82, 83, 84, 147, 86,3296 87, -1, 1441, -1, -1, -1, 1077, -1, 157, 1448,3297 -1, 931, 161, -1, -1, -1, -1, -1, -1, -1,3298 -1, -1, 109, -1, 111, -1, -1, -1, -1, 1441,3299 117, 118, 119, 120, 121, 122, 1448, 10, 11, 12,3300 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,3301 23, 24, 25, 26, 27, -1, 976, 30, 31, 32,3302 1499, 210, 982, -1, 916, -1, 39, 987, -1, -1,3303 -1, -1, 992, 222, 994, -1, -1, -1, 998, -1,3304 1000, 1001, -1, -1, 1004, -1, -1, 1499, -1, -1,3305 -1, 240, -1, 1013, 67, -1, -1, -1, -1, -1,3306 -1, 74, 75, -1, -1, -1, -1, -1, -1, -1,3307 -1, 1031, 1032, -1, -1, -1, 265, -1, -1, -1,3308 -1, -1, -1, 272, -1, -1, -1, -1, -1, -1,3309 -1, -1, -1, -1, -1, 1206, -1, -1, 1058, -1,3310 -1, 1061, -1, -1, 117, 118, 295, -1, -1, -1,3311 -1, -1, -1, -1, -1, -1, -1, -1, 307, -1,3312 -1, -1, -1, -1, 66, -1, -1, -1, -1, -1,3313 -1, -1, -1, -1, 76, -1, 78, -1, 80, -1,3314 -1, -1, -1, -1, 1104, 87, -1, -1, -1, -1,3315 1110, 1111, -1, -1, -1, -1, 345, -1, -1, -1,3316 -1, 350, -1, -1, -1, -1, -1, -1, -1, -1,3317 1130, -1, -1, 1133, -1, -1, 118, 1137, 120, 121,3318 122, -1, -1, -1, -1, 1077, -1, -1, -1, -1,3319 1150, -1, -1, -1, -1, -1, -1, -1, -1, -1,3320 -1, -1, -1, 1163, -1, 1165, 1166, 1167, 1168, -1,3321 -1, -1, -1, -1, -1, -1, -1, -1, -1, 161,3322 -1, 1181, -1, 1183, -1, -1, -1, 1187, -1, -1,3323 -1, -1, -1, -1, -1, -1, -1, 426, 427, -1,3324 -1, -1, -1, -1, 433, -1, -1, -1, -1, -1,3325 -1, -1, -1, -1, -1, -1, 1216, 1217, -1, -1,3326 -1, -1, -1, -1, -1, 454, -1, -1, -1, -1,3327 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3328 222, -1, 224, 225, 226, -1, -1, -1, -1, -1,3329 -1, -1, -1, 482, -1, -1, -1, -1, -1, -1,3330 -1, -1, -1, -1, -1, 494, 1266, 1267, -1, -1,3331 -1, -1, -1, -1, 1206, -1, 1276, 506, 260, 508,3332 -1, -1, 511, 265, 513, 514, -1, -1, -1, -1,3333 -1, -1, -1, -1, -1, -1, -1, 526, 280, -1,3334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3335 -1, -1, -1, -1, 10, 11, 12, 13, 14, 15,3336 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,3337 26, 27, 28, -1, 30, 31, 32, 1337, -1, 1339,3338 1340, 1341, -1, 39, -1, -1, 328, -1, -1, 578,3339 -1, 1351, -1, -1, -1, -1, -1, -1, -1, -1,3340 1360, 590, -1, -1, -1, 594, -1, -1, 350, -1,3341 -1, 67, -1, 355, 356, -1, 72, -1, 74, 75,3342 76, 363, 78, -1, -1, 1385, -1, 83, 84, -1,3343 -1, 620, -1, -1, 147, -1, 625, -1, -1, -1,3344 -1, -1, -1, -1, 157, 634, 635, 636, -1, 44,3345 -1, -1, -1, 109, -1, 111, 169, 170, -1, -1,3346 -1, 117, 118, 652, 406, -1, -1, -1, 1428, 1429,3347 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3348 -1, 1441, 424, -1, -1, -1, -1, 429, 1448, 431,3349 37, 38, -1, 40, -1, 684, -1, 92, -1, -1,3350 -1, -1, -1, -1, -1, -1, 448, 102, -1, 451,3351 452, -1, -1, -1, -1, -1, -1, 459, -1, 66,3352 1480, 710, -1, 712, 1484, 72, -1, 240, -1, 76,3353 -1, 473, 79, 80, 81, 82, 83, 84, 480, 86,3354 87, -1, -1, -1, -1, -1, -1, -1, -1, -1,3355 -1, 264, 1512, -1, 1514, -1, 745, -1, -1, -1,3356 -1, -1, 109, 158, 111, -1, -1, 114, -1, -1,3357 117, 118, 119, 120, 121, 122, -1, 172, -1, -1,3358 -1, -1, 1542, 1543, -1, -1, -1, -1, -1, -1,3359 1550, 1551, -1, -1, -1, -1, -1, -1, -1, -1,3360 195, -1, -1, -1, -1, -1, -1, -1, -1, -1,3361 -1, -1, 801, -1, 209, -1, 805, -1, -1, -1,3362 809, -1, -1, 218, -1, -1, -1, -1, -1, -1,3363 -1, -1, -1, 228, -1, -1, -1, -1, -1, -1,3364 -1, -1, -1, -1, 37, 38, -1, 40, -1, -1,3365 -1, -1, 594, -1, -1, -1, -1, -1, 253, -1,3366 -1, -1, -1, 258, -1, -1, -1, 380, -1, -1,3367 -1, -1, -1, 66, -1, -1, 271, -1, -1, 72,3368 622, -1, 277, 76, 279, 627, 79, 80, 81, 82,3369 83, 84, -1, 86, 87, -1, -1, -1, -1, -1,3370 -1, 296, -1, -1, -1, -1, -1, -1, -1, -1,3371 -1, -1, -1, -1, -1, 904, 109, -1, 111, -1,3372 -1, -1, -1, 116, 117, 118, 119, 120, 121, 122,3373 919, -1, -1, -1, -1, -1, -1, -1, -1, -1,3374 -1, -1, -1, 338, -1, -1, -1, -1, 343, -1,3375 -1, -1, -1, -1, 943, -1, 698, -1, -1, -1,3376 -1, 474, -1, -1, -1, -1, -1, -1, -1, -1,3377 712, -1, -1, -1, -1, -1, -1, 372, -1, -1,3378 -1, 376, 377, -1, 379, -1, -1, -1, -1, -1,3379 732, 386, 387, -1, 389, 390, -1, 392, -1, 394,3380 513, -1, -1, -1, -1, -1, -1, -1, -1, -1,3381 999, -1, -1, 526, -1, -1, 411, -1, 531, -1,3382 -1, 534, -1, -1, 419, -1, -1, -1, -1, -1,3383 -1, 1020, 1021, 546, -1, -1, -1, -1, -1, -1,3384 -1, -1, -1, -1, -1, -1, -1, -1, -1, 444,3385 -1, 793, -1, -1, -1, 568, -1, -1, -1, -1,3386 -1, -1, -1, 805, -1, 578, -1, -1, -1, -1,3387 -1, -1, 585, -1, -1, 470, -1, 590, -1, -1,3388 -1, 476, 824, -1, -1, -1, 481, -1, -1, -1,3389 -1, 1080, -1, -1, -1, -1, 3, 4, 5, 6,3390 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,3391 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,3392 27, -1, 517, 30, 31, 32, 639, -1, -1, -1,3393 -1, -1, 39, -1, 647, -1, -1, 532, -1, -1,3394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3395 -1, -1, -1, -1, -1, -1, -1, 1146, -1, -1,3396 67, -1, 69, -1, 71, -1, -1, 74, 75, -1,3397 -1, -1, -1, 37, 38, 570, 40, -1, -1, -1,3398 -1, -1, -1, -1, 579, -1, -1, -1, -1, -1,3399 -1, 586, -1, -1, -1, 937, -1, 592, -1, 1188,3400 -1, -1, 66, -1, 111, -1, 601, -1, 72, -1,3401 117, 118, 76, -1, -1, 79, 80, 81, 82, 83,3402 84, -1, 86, 87, -1, 967, -1, -1, -1, -1,3403 -1, -1, 745, -1, 747, -1, 1225, -1, -1, 156,3404 157, -1, -1, -1, 757, 109, 641, 111, -1, -1,3405 763, -1, -1, 117, 118, 119, 120, 121, 122, -1,3406 1002, -1, -1, -1, -1, -1, -1, -1, -1, -1,3407 -1, 1013, -1, 190, -1, -1, -1, -1, -1, -1,3408 197, -1, 677, -1, -1, 1274, 1275, -1, -1, -1,3409 685, -1, 805, 806, 1283, -1, 809, -1, -1, -1,3410 -1, -1, -1, -1, -1, -1, -1, -1, -1, 283,3411 823, 285, 286, -1, -1, -1, -1, -1, -1, 293,3412 294, 716, -1, -1, -1, -1, -1, -1, -1, -1,3413 -1, 726, 727, 307, 308, -1, -1, -1, -1, -1,3414 -1, -1, -1, 1085, -1, -1, -1, -1, -1, -1,3415 863, -1, 269, -1, 867, -1, -1, 1099, -1, -1,3416 -1, -1, -1, -1, 759, -1, -1, -1, -1, 764,3417 -1, 345, 10, 11, 12, 13, 14, 15, 16, 17,3418 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,3419 -1, 904, 30, 31, 32, -1, -1, -1, -1, -1,3420 -1, 39, 40, -1, -1, 1394, 323, 381, -1, -1,3421 -1, -1, -1, -1, 331, 332, -1, 334, 335, -1,3422 -1, -1, -1, -1, -1, -1, -1, -1, 345, 67,3423 943, -1, 349, 828, -1, -1, 74, 75, -1, -1,3424 835, -1, -1, -1, -1, -1, 1188, -1, -1, -1,3425 -1, 368, -1, 848, 371, 850, -1, -1, 971, -1,3426 -1, 1450, -1, 1452, 977, -1, -1, -1, 981, 864,3427 -1, -1, -1, 111, -1, 870, -1, 115, -1, 117,3428 118, 398, -1, -1, -1, 402, -1, 882, -1, 1002,3429 885, -1, -1, -1, -1, -1, -1, 1486, -1, 1488,3430 1013, -1, -1, -1, -1, -1, -1, -1, -1, -1,3431 -1, -1, -1, -1, -1, -1, 433, -1, -1, -1,3432 -1, -1, 1035, -1, 1037, -1, 1515, -1, -1, -1,3433 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1052,3434 1053, 1283, 10, 11, 12, 13, 14, 15, 16, 17,3435 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,3436 1073, -1, 479, -1, -1, 482, -1, 962, -1, -1,3437 -1, 39, -1, -1, -1, 549, 550, 551, 552, 553,3438 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,3439 564, 565, 566, -1, -1, -1, -1, 37, 38, 67,3440 40, -1, 997, -1, 521, -1, -1, -1, 525, 526,3441 -1, -1, -1, -1, -1, 1128, -1, -1, -1, -1,3442 -1, -1, -1, -1, -1, -1, 66, -1, -1, -1,3443 -1, -1, 72, 1146, -1, -1, 76, -1, -1, 79,3444 80, 81, 82, 83, 84, -1, 86, 87, 1161, 1162,3445 -1, -1, -1, 570, 571, -1, -1, -1, -1, -1,3446 1055, -1, -1, -1, -1, -1, 1061, -1, -1, 109,3447 -1, 111, 589, 590, 114, -1, -1, 117, 118, 119,3448 120, 121, 122, 600, -1, 602, 603, -1, -1, -1,3449 -1, -1, 609, -1, -1, -1, -1, -1, -1, -1,3450 1095, -1, 619, 620, -1, 1100, -1, -1, 625, -1,3451 -1, -1, -1, 1108, -1, -1, -1, 634, 635, 636,3452 -1, 695, -1, -1, -1, -1, -1, -1, -1, -1,3453 -1, -1, -1, -1, -1, 652, -1, -1, -1, -1,3454 657, 658, -1, -1, 661, 662, 1141, -1, -1, -1,3455 -1, 668, -1, -1, -1, -1, -1, -1, 1153, -1,3456 -1, 1156, -1, 1158, -1, -1, -1, -1, -1, -1,3457 687, -1, -1, -1, -1, -1, -1, 1172, 1173, -1,3458 -1, -1, 756, -1, -1, -1, -1, -1, 1530, 1302,3459 -1, -1, 1305, 710, 711, -1, -1, -1, -1, 1194,3460 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3461 -1, -1, 786, -1, -1, -1, -1, -1, -1, -1,3462 -1, -1, -1, -1, -1, -1, -1, 744, 745, -1,3463 -1, -1, 749, 750, -1, -1, -1, -1, -1, -1,3464 -1, -1, -1, -1, -1, -1, 1241, -1, -1, -1,3465 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18,3466 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,3467 -1, 30, 31, 32, -1, -1, 793, -1, -1, -1,3468 39, -1, -1, -1, 801, -1, -1, -1, -1, -1,3469 -1, 808, 809, -1, -1, 812, -1, 814, -1, -1,3470 -1, -1, -1, -1, -1, -1, -1, 824, 67, -1,3471 -1, -1, -1, 72, -1, 74, 75, 76, -1, 78,3472 -1, 1316, -1, 1318, 83, 84, -1, -1, -1, -1,3473 -1, -1, 906, -1, -1, 1330, -1, 1332, -1, -1,3474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3475 -1, -1, 111, -1, 1349, -1, -1, -1, 117, 118,3476 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3477 1365, 1366, -1, -1, -1, -1, -1, 951, -1, 896,3478 -1, 1376, -1, -1, 1379, -1, 903, 904, 905, -1,3479 907, -1, -1, -1, 911, -1, -1, -1, -1, -1,3480 -1, -1, 1515, -1, -1, 1400, -1, -1, -1, -1,3481 -1, -1, 986, -1, 1409, 932, 933, 1412, -1, 1414,3482 1415, 1416, -1, -1, -1, 999, 10, 11, 12, 13,3483 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,3484 24, 25, 26, 27, 28, -1, -1, -1, -1, -1,3485 967, -1, -1, -1, -1, 39, -1, -1, -1, 1454,3486 -1, 1456, -1, 1458, -1, -1, 1040, -1, -1, -1,3487 -1, 988, 989, -1, -1, -1, -1, -1, 1473, -1,3488 -1, -1, 999, 67, -1, -1, -1, -1, 1005, 1006,3489 -1, 1008, 1009, 1010, 78, -1, -1, -1, -1, -1,3490 -1, -1, -1, 1020, 1021, -1, -1, -1, -1, -1,3491 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,3492 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,3493 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,3494 26, 27, -1, 1117, 30, 31, 32, 33, -1, -1,3495 36, 37, 38, 39, 40, -1, -1, -1, -1, -1,3496 -1, -1, -1, -1, -1, -1, 1083, -1, 1085, -1,3497 -1, -1, -1, 1090, -1, -1, -1, -1, -1, -1,3498 66, 67, 1099, 69, -1, 71, 72, -1, 74, 75,3499 76, -1, -1, 79, 80, 81, 82, 83, 84, -1,3500 86, 87, -1, 1177, 1178, 1122, 1123, 1124, -1, -1,3501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3502 -1, -1, -1, 109, -1, 111, -1, -1, -1, 1146,3503 -1, 117, 118, 119, 120, 121, 122, -1, -1, -1,3504 -1, -1, -1, -1, -1, -1, 132, -1, 3, 4,3505 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,3506 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,3507 25, 26, 27, -1, -1, 30, 31, 32, 33, -1,3508 -1, 36, 37, 38, 39, 40, 41, -1, 43, -1,3509 1207, 46, 47, 48, 49, 50, 51, 52, 53, -1,3510 -1, -1, 57, -1, -1, -1, 61, 62, 1225, 64,3511 -1, 66, 67, -1, 69, -1, 71, 72, -1, 74,3512 75, 76, -1, -1, 79, 80, 81, 82, 83, 84,3513 -1, 86, 87, -1, -1, -1, -1, -1, -1, -1,3514 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,3515 -1, -1, -1, -1, 109, -1, 111, 1274, 1275, 114,3516 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1,3517 -1, -1, 127, -1, -1, -1, -1, 132, -1, -1,3518 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10,3519 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,3520 21, 22, 23, 24, 25, 26, 27, -1, 1382, 30,3521 31, 32, 33, -1, -1, 36, 37, 38, 39, 40,3522 -1, -1, -1, -1, 1398, -1, -1, -1, -1, -1,3523 3578 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3524 3579 -1, -1, -1, -1, -1, 66, 67, -1, 69, -1, 3525 3580 71, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3526 3581 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3527 -1, -1, -1, -1, -1, -1, -1, 1394, -1, -1,3582 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3528 3583 -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3529 111, -1, -1, -1, 1468, 1469, 117, 118, 119, 120, 3530 121, 122, -1, 4, 5, 6, 7, 8, 9, 10, 3531 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3532 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3533 31, 32, -1, -1, -1, -1, 37, 38, 39, 40, 3534 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3535 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3536 27, 28, -1, -1, 1481, 66, 67, -1, 69, -1, 3537 71, 72, 39, 74, 75, 76, -1, -1, 79, 80, 3538 81, 82, 83, 84, -1, 86, 87, -1, 1505, 1506, 3539 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3540 67, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3541 111, 78, -1, 1530, -1, 116, 117, 118, 119, 120, 3584 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, 3542 3585 121, 122, 4, 5, 6, 7, 8, 9, 10, 11, 3543 3586 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3544 3587 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3545 32, -1, -1, -1, -1, 37, 38, 39, 40, 10,3546 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,3547 21, 22, 23, 24, 25, 26, 27, -1, -1, 30,3548 31, 32, -1, -1, 66, 67, -1, 69, 39, 71,3588 32, -1, -1, -1, -1, 37, 38, 39, 40, -1, 3589 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3591 -1, -1, -1, -1, 66, 67, -1, 69, -1, 71, 3549 3592 72, -1, 74, 75, 76, -1, -1, 79, 80, 81, 3550 3593 82, 83, 84, -1, 86, 87, -1, -1, -1, -1, 3551 -1, -1, -1, -1, -1, -1, 67, -1, -1, -1,3552 -1, 72, -1, 74, 75, -1, -1, 109, -1, 111,3553 -1, -1, 83, 84, 116, 117, 118, 119, 120, 121,3594 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3595 -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, 3596 -1, -1, -1, -1, -1, 117, 118, 119, 120, 121, 3554 3597 122, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3555 3598 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3556 3599 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 3557 -1, -1, -1, -1, 37, 38, 39, 40, 10, 11,3558 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,3559 22, 23, 24, 25, 26, 27, -1, -1, 30, 31,3560 32, -1, -1, 66, 67, -1, 69, 39, 71, 72,3600 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1, 3601 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3602 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3603 -1, -1, -1, 66, 67, -1, 69, -1, 71, 72, 3561 3604 -1, 74, 75, 76, -1, -1, 79, 80, 81, 82, 3562 3605 83, 84, -1, 86, 87, -1, -1, -1, -1, -1, 3563 -1, -1, -1, -1, -1, 67, -1, -1, -1, -1,3564 -1, -1, 74, 75, -1, -1, 109, -1, 111, -1,3565 -1, -1, -1, 116, 117, 118, 119, 120, 121, 122,3606 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3607 -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 3608 -1, -1, -1, -1, 117, 118, 119, 120, 121, 122, 3566 3609 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3567 3610 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3568 3611 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3569 -1, -1, -1, 37, 38, 39, 40, 10, 11, 12, 3612 -1, -1, -1, 37, 38, 39, 40, -1, -1, -1, 3613 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3614 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3615 -1, -1, 66, 67, -1, 69, -1, 71, 72, -1, 3616 74, 75, 76, -1, -1, 79, 80, 81, 82, 83, 3617 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 3618 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3619 -1, -1, -1, -1, -1, 109, -1, 111, -1, -1, 3620 -1, -1, -1, 117, 118, 119, 120, 121, 122, 0, 3621 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 3622 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3623 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3624 31, 32, 33, -1, -1, 36, -1, -1, 39, 40, 3625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3627 -1, -1, -1, 64, -1, -1, 67, -1, 69, -1, 3628 71, 72, -1, 74, 75, 76, -1, -1, -1, -1, 3629 -1, -1, 83, 84, -1, -1, -1, -1, -1, -1, 3630 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3631 -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, 3632 111, -1, -1, -1, -1, -1, 117, 118, 3, 4, 3633 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3634 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3635 25, 26, 27, -1, -1, 30, 31, 32, 33, -1, 3636 -1, 36, -1, -1, 39, 40, -1, -1, -1, -1, 3637 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3638 -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, 3639 -1, -1, 67, -1, 69, -1, 71, 72, -1, 74, 3640 75, 76, -1, -1, -1, -1, -1, -1, 83, 84, 3641 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3642 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3643 -1, -1, -1, -1, 109, -1, 111, -1, -1, -1, 3644 115, -1, 117, 118, 3, 4, 5, 6, 7, 8, 3645 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3646 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3647 -1, 30, 31, 32, 33, -1, -1, 36, -1, -1, 3648 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, 3649 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3650 -1, -1, -1, -1, -1, 64, -1, -1, 67, -1, 3651 69, -1, 71, 72, -1, 74, 75, 76, -1, -1, 3652 -1, -1, -1, -1, 83, 84, -1, -1, -1, -1, 3653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3655 109, -1, 111, -1, -1, -1, -1, -1, 117, 118, 3656 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3570 3657 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3571 3658 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 3572 -1, -1, 66, 67, -1, 69, 39, 71, 72, -1, 3573 74, 75, 76, -1, -1, 79, 80, 81, 82, 83, 3574 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 3575 -1, -1, -1, -1, 67, -1, -1, -1, -1, -1, 3576 -1, 74, 75, -1, -1, 109, -1, 111, -1, -1, 3577 -1, -1, -1, 117, 118, 119, 120, 121, 122, 4, 3578 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3579 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3580 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3581 -1, -1, 37, 38, 39, 40, -1, -1, -1, -1, 3659 -1, -1, -1, -1, -1, -1, 39, -1, 10, 11, 3660 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3661 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3662 32, 33, 34, 35, 67, -1, 69, 39, 71, 72, 3663 -1, 74, 75, 76, -1, -1, -1, -1, -1, -1, 3664 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 3665 -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, 3666 -1, -1, 74, 75, -1, -1, 109, -1, 111, -1, 3667 -1, -1, -1, -1, 117, 118, 3, 4, 5, 6, 3668 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3669 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3670 27, 28, -1, 30, 31, 32, 33, -1, -1, 36, 3671 -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 3582 3672 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3583 3673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3584 -1, 66, 67, -1, 69, -1, 71, 72, -1, 74, 3585 75, 76, -1, -1, 79, 80, 81, 82, 83, 84, 3586 -1, 86, 87, -1, -1, -1, -1, -1, -1, -1, 3587 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3588 -1, -1, -1, -1, 109, -1, 111, -1, -1, -1, 3589 -1, -1, 117, 118, 119, 120, 121, 122, 4, 5, 3590 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3591 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3592 26, 27, -1, -1, 30, 31, 32, -1, -1, -1, 3593 -1, 37, 38, 39, 40, -1, -1, -1, -1, -1, 3594 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3595 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3596 66, 67, -1, 69, -1, 71, 72, -1, 74, 75, 3597 76, -1, -1, 79, 80, 81, 82, 83, 84, -1, 3598 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, 3599 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3600 -1, -1, -1, 109, -1, 111, -1, -1, -1, -1, 3601 -1, 117, 118, 119, 120, 121, 122, 4, 5, 6, 3602 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3603 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3604 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3605 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, 3606 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3607 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, 3608 67, -1, 69, -1, 71, 72, -1, 74, 75, 76, 3609 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3610 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3612 -1, -1, 109, -1, 111, -1, -1, -1, -1, -1, 3613 117, 118, 119, 120, 121, 122, 0, -1, -1, 3, 3614 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3615 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3616 24, 25, 26, 27, -1, -1, 30, 31, 32, 33, 3617 -1, -1, 36, -1, -1, 39, 40, -1, -1, -1, 3618 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3619 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3620 64, -1, -1, 67, -1, 69, -1, 71, 72, -1, 3621 74, 75, 76, -1, -1, -1, -1, -1, -1, 83, 3622 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3623 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3624 -1, -1, -1, -1, -1, 109, -1, 111, -1, -1, 3625 -1, -1, -1, 117, 118, 3, 4, 5, 6, 7, 3626 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3627 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3628 -1, -1, 30, 31, 32, 33, -1, -1, 36, -1, 3629 -1, 39, 40, -1, -1, -1, -1, -1, -1, -1, 3630 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3631 -1, -1, -1, -1, -1, -1, 64, -1, -1, 67, 3632 -1, 69, -1, 71, 72, -1, 74, 75, 76, -1, 3633 -1, -1, -1, -1, -1, 83, 84, -1, -1, -1, 3634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3636 -1, 109, -1, 111, -1, -1, -1, 115, -1, 117, 3637 118, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3674 67, -1, 69, -1, 71, -1, -1, 74, 75, -1, 3675 -1, 78, 4, 5, 6, 7, 8, 9, 10, 11, 3638 3676 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3639 3677 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3640 32, 33, -1, -1, 36, -1, -1, 39, 40, -1, 3678 32, -1, -1, -1, 111, -1, -1, 39, -1, -1, 3679 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 3641 3680 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3642 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3643 -1, -1, 64, -1, -1, 67, -1, 69, -1, 71, 3681 -1, -1, -1, -1, -1, 67, -1, 69, -1, 71, 3644 3682 72, -1, 74, 75, 76, -1, -1, -1, -1, -1, 3645 3683 -1, 83, 84, -1, -1, -1, -1, -1, -1, -1, 3646 3684 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3647 3685 -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, 3648 -1, -1, -1, -1, -1, 117, 118, 3, 4, 5, 3649 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3686 -1, -1, -1, -1, -1, 117, 118, 4, 5, 6, 3687 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3688 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3689 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3690 -1, -1, 39, -1, -1, -1, -1, 10, 11, 12, 3691 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3692 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 3693 67, -1, 69, -1, 71, -1, 39, 74, 75, -1, 3694 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3695 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3696 24, 25, 26, 27, 67, -1, 30, 31, 32, -1, 3697 -1, 74, 75, 110, 111, 39, -1, -1, -1, -1, 3698 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 3699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3700 -1, -1, -1, 67, -1, 69, 109, 71, 111, -1, 3701 74, 75, -1, -1, 117, 118, -1, -1, -1, -1, 3702 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3703 -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, 3704 -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, 3705 -1, -1, -1, 117, 118, 4, 5, 6, 7, 8, 3706 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3707 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3708 -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, 3709 39, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3650 3710 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3651 26, 27, -1, -1, 30, 31, 32, 33, -1, -1, 3652 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, 3711 26, 27, -1, -1, 30, 31, 32, -1, 67, -1, 3712 69, -1, 71, 39, 40, 74, 75, -1, -1, -1, 3713 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3714 -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, 3715 -1, 67, -1, -1, -1, -1, -1, -1, 74, 75, 3716 -1, -1, 111, -1, -1, -1, -1, -1, 117, 118, 3717 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3718 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3719 24, 25, 26, 27, -1, 111, 30, 31, 32, 115, 3720 -1, 117, 118, -1, -1, 39, -1, -1, -1, -1, 3653 3721 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3654 3722 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3655 -1, 67, -1, 69, -1, 71, -1, -1, 74, 75,3656 -1, 4, 5, 6, 7, 8, 9, 10, 11, 12,3657 1 3, 14, 15, 16, 17, 18, 19, 20, 21, 22,3658 2 3, 24, 25, 26, 27, -1, -1, 30, 31, 32,3659 -1, -1, -1, -1, -1, 111, 39, -1, -1, -1,3660 -1, 117, 118, -1, -1, -1, -1, -1, -1, -1,3723 -1, -1, -1, 67, -1, 69, -1, 71, -1, -1, 3724 74, 75, -1, 4, 5, 6, 7, 8, 9, 10, 3725 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3726 21, 22, 23, 24, 25, 26, 27, -1, -1, 30, 3727 31, 32, -1, -1, -1, -1, -1, 111, 39, -1, 3728 -1, -1, -1, 117, 118, -1, -1, -1, -1, -1, 3661 3729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3662 -1, -1, -1, -1, 67, -1, 69, -1, 71, 72, 3663 -1, 74, 75, 76, -1, -1, -1, -1, -1, -1, 3664 83, 84, -1, -1, -1, -1, -1, -1, -1, -1, 3665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3666 -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 3667 -1, -1, -1, -1, 117, 118, 4, 5, 6, 7, 3730 -1, -1, -1, -1, -1, -1, 67, -1, 69, -1, 3731 71, -1, -1, 74, 75, -1, 4, 5, 6, 7, 3668 3732 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3669 3733 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3670 3734 -1, -1, 30, 31, 32, -1, -1, -1, -1, -1, 3671 -1, 39, -1, -1, -1, -1, 10, 11, 12, 13,3672 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,3673 24, 25, 26, 27, -1, -1, 30, 31, 32, 67,3674 -1, 69, -1, 71, -1, 39, 74, 75, -1, 4,3735 111, 39, -1, -1, -1, -1, 117, 118, -1, -1, 3736 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3737 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, 3738 -1, 69, -1, 71, -1, -1, 74, 75, -1, 4, 3675 3739 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3676 3740 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3677 25, 26, 27, 67, -1, 30, 31, 32, -1, -1,3678 74, 75, 110, 111, 39, -1, -1, -1, -1, 117,3741 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3742 -1, -1, -1, 111, 39, -1, -1, -1, -1, 117, 3679 3743 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3680 3744 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3681 -1, -1, 67, -1, 69, 109, 71, 111, -1, 74, 3682 75, -1, -1, 117, 118, -1, -1, -1, -1, -1, 3745 -1, -1, 67, -1, 69, -1, 71, -1, -1, 74, 3746 75, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3747 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3748 -1, 30, 31, 32, -1, -1, -1, -1, 37, 38, 3749 39, 40, -1, -1, -1, -1, 111, -1, -1, -1, 3750 -1, -1, 117, 118, -1, -1, -1, -1, -1, -1, 3751 -1, -1, -1, -1, -1, -1, -1, 66, 67, -1, 3752 -1, -1, -1, 72, -1, 74, 75, 76, -1, -1, 3753 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 3683 3754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3684 -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 3685 -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, 3686 -1, -1, 117, 118, 4, 5, 6, 7, 8, 9, 3755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3756 109, -1, 111, -1, -1, 114, -1, -1, 117, 118, 3757 119, 120, 121, 122, 10, 11, 12, 13, 14, 15, 3758 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3759 26, 27, -1, -1, 30, 31, 32, -1, -1, -1, 3760 -1, 37, 38, 39, 40, 10, 11, 12, 13, 14, 3761 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3762 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3763 66, 67, -1, -1, 39, -1, 72, -1, 74, 75, 3764 76, -1, -1, 79, 80, 81, 82, 83, 84, -1, 3765 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, 3766 -1, -1, 67, -1, -1, -1, -1, 72, -1, 74, 3767 75, 76, -1, 109, 110, 111, -1, -1, 83, 84, 3768 -1, 117, 118, 119, 120, 121, 122, 10, 11, 12, 3769 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3770 23, 24, 25, 26, 27, -1, 111, 30, 31, 32, 3771 -1, -1, 117, 118, 37, 38, 39, 40, 10, 11, 3772 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3773 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3774 32, -1, -1, 66, 67, -1, -1, 39, -1, 72, 3775 -1, 74, 75, 76, -1, -1, 79, 80, 81, 82, 3776 83, 84, -1, 86, 87, -1, -1, -1, -1, -1, 3777 -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, 3778 72, -1, 74, 75, -1, -1, 109, -1, 111, -1, 3779 -1, 83, 84, -1, 117, 118, 119, 120, 121, 122, 3780 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3781 20, 21, 22, 23, 24, 25, 26, 27, -1, 111, 3782 30, 31, 32, -1, -1, 117, 118, 37, 38, 39, 3783 40, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3784 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3785 -1, 30, 31, 32, -1, -1, 66, 67, -1, -1, 3786 39, 40, 72, -1, 74, 75, 76, -1, -1, 79, 3787 80, 81, 82, 83, 84, -1, 86, 87, -1, -1, 3788 -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, 3789 -1, -1, -1, -1, -1, 74, 75, -1, -1, 109, 3790 -1, 111, -1, -1, -1, -1, -1, 117, 118, 119, 3791 120, 121, 122, 10, 11, 12, 13, 14, 15, 16, 3792 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3793 27, -1, 111, 30, 31, 32, 115, -1, 117, 118, 3794 37, 38, 39, 40, 10, 11, 12, 13, 14, 15, 3795 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3796 26, 27, -1, -1, 30, 31, 32, -1, -1, 66, 3797 67, -1, -1, 39, 40, 72, -1, 74, 75, 76, 3798 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3799 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3800 -1, 67, -1, -1, -1, -1, -1, -1, 74, 75, 3801 -1, -1, 109, -1, 111, -1, -1, -1, -1, -1, 3802 117, 118, 119, 120, 121, 122, 10, 11, 12, 13, 3803 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3804 24, 25, 26, 27, -1, 111, 30, 31, 32, 115, 3805 -1, 117, 118, 37, 38, 39, 40, -1, -1, -1, 3806 -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3807 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3808 26, 27, 66, 67, 30, 31, 32, -1, 72, -1, 3809 74, 75, 76, 39, -1, 79, 80, 81, 82, 83, 3810 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 3811 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3812 -1, 67, -1, -1, -1, 109, -1, 111, 74, 75, 3813 -1, -1, -1, 117, 118, 119, 120, 121, 122, 3, 3814 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3815 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3816 24, 25, 26, 27, -1, 111, 30, 31, 32, -1, 3817 -1, 117, 118, -1, -1, 39, -1, -1, -1, 10, 3818 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3819 21, 22, 23, 24, 25, 26, 27, 28, -1, 30, 3820 31, 32, -1, 67, -1, 69, -1, 71, 39, -1, 3821 74, 75, -1, -1, -1, -1, -1, 10, 11, 12, 3822 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3823 23, 24, 25, 26, 27, -1, 67, 30, 31, 32, 3824 -1, 72, -1, 74, 75, 76, 39, 78, -1, -1, 3825 114, -1, 83, 84, -1, 10, 11, 12, 13, 14, 3826 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3827 25, 26, 27, 28, 67, 30, 31, 32, -1, 72, 3828 111, 74, 75, 76, 39, -1, 117, 118, -1, -1, 3829 83, 84, -1, 10, 11, 12, 13, 14, 15, 16, 3830 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3831 27, -1, 67, 30, 31, 32, 109, -1, 111, 74, 3832 75, -1, 39, 78, 117, 118, 10, 11, 12, 13, 3833 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3834 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3835 67, -1, -1, -1, -1, 39, 111, 74, 75, -1, 3836 -1, -1, 117, 118, 10, 11, 12, 13, 14, 15, 3837 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3838 26, 27, -1, 67, 30, 31, 32, -1, -1, -1, 3839 74, 75, -1, 39, 111, -1, -1, -1, -1, -1, 3840 117, 118, 10, 11, 12, 13, 14, 15, 16, 17, 3841 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3842 -1, 67, 30, 31, 32, -1, -1, 111, 74, 75, 3843 -1, 39, -1, 117, 118, 10, 11, 12, 13, 14, 3844 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3845 25, 26, 27, -1, -1, 30, 31, 32, -1, 67, 3846 -1, -1, -1, -1, 39, 111, 74, 75, -1, -1, 3847 -1, 117, 118, 10, 11, 12, 13, 14, 15, 16, 3848 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3849 27, -1, 67, 30, 31, 32, -1, -1, -1, 74, 3850 75, -1, 39, 111, -1, -1, -1, -1, -1, 117, 3851 118, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3852 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3853 67, 30, 31, 32, -1, -1, 111, 74, 75, -1, 3854 39, -1, 117, 118, 4, 5, 6, 7, 8, 9, 3855 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3856 20, 21, 22, 23, 24, 25, 26, 27, 67, -1, 3857 30, 31, 32, -1, 111, 74, 75, -1, -1, 39, 3858 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 3859 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3860 -1, -1, -1, -1, -1, -1, -1, 67, -1, 69, 3861 -1, 71, -1, -1, 74, 75, -1, -1, 117, 118, 3862 37, 38, -1, 40, 41, -1, 43, -1, -1, 46, 3863 47, 48, 49, 50, 51, 52, 53, -1, -1, 56, 3864 57, -1, -1, -1, 61, 62, -1, 64, -1, 66, 3865 110, -1, -1, -1, -1, 72, -1, -1, -1, 76, 3866 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3867 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3869 -1, -1, 109, -1, 111, -1, -1, 114, -1, -1, 3870 117, 118, 119, 120, 121, 122, -1, -1, 37, 38, 3871 127, 40, 41, -1, 43, 132, -1, 46, 47, 48, 3872 49, 50, 51, 52, 53, -1, -1, -1, 57, -1, 3873 -1, -1, 61, 62, -1, 64, -1, 66, -1, -1, 3874 -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, 3875 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 3876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3877 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3878 109, -1, 111, -1, -1, 114, -1, -1, 117, 118, 3879 119, 120, 121, 122, -1, -1, -1, -1, 127, -1, 3880 -1, -1, -1, 132, 4, 5, 6, 7, 8, 9, 3687 3881 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3688 3882 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3689 3883 30, 31, 32, -1, -1, -1, -1, -1, -1, 39, 3690 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3691 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3692 27, -1, -1, 30, 31, 32, -1, 67, -1, 69, 3693 -1, 71, 39, 40, 74, 75, -1, -1, -1, -1, 3694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3695 -1, -1, -1, -1, -1, -1, 96, -1, -1, -1, 3696 67, -1, -1, -1, -1, -1, -1, 74, 75, -1, 3697 -1, 111, -1, -1, -1, -1, -1, 117, 118, 4, 3698 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3699 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3700 25, 26, 27, -1, 111, 30, 31, 32, 115, -1, 3701 117, 118, -1, -1, 39, -1, -1, -1, -1, -1, 3702 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3703 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3704 -1, -1, 67, -1, 69, -1, 71, -1, -1, 74, 3705 75, -1, 4, 5, 6, 7, 8, 9, 10, 11, 3706 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3707 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3708 32, -1, -1, -1, -1, -1, 111, 39, -1, -1, 3709 -1, -1, 117, 118, -1, -1, -1, -1, -1, -1, 3710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3711 -1, -1, -1, -1, -1, 67, -1, 69, -1, 71, 3712 -1, -1, 74, 75, -1, 4, 5, 6, 7, 8, 3713 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3714 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3715 -1, 30, 31, 32, -1, -1, -1, -1, -1, 111, 3716 39, -1, -1, -1, -1, 117, 118, -1, -1, -1, 3717 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3718 -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, 3719 69, -1, 71, -1, -1, 74, 75, -1, 4, 5, 3720 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3721 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3722 26, 27, -1, -1, 30, 31, 32, -1, -1, -1, 3723 -1, -1, 111, 39, -1, -1, -1, -1, 117, 118, 3724 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3725 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3726 -1, 67, -1, 69, -1, 71, -1, -1, 74, 75, 3727 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3728 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3729 30, 31, 32, -1, -1, -1, -1, 37, 38, 39, 3730 40, -1, -1, -1, -1, 111, -1, -1, -1, -1, 3731 -1, 117, 118, -1, -1, -1, -1, -1, -1, -1, 3732 -1, -1, -1, -1, -1, -1, 66, 67, -1, -1, 3733 -1, -1, 72, -1, 74, 75, 76, -1, -1, 79, 3734 80, 81, 82, 83, 84, -1, 86, 87, -1, -1, 3735 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3736 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 3737 -1, 111, -1, -1, 114, -1, -1, 117, 118, 119, 3738 120, 121, 122, 10, 11, 12, 13, 14, 15, 16, 3739 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3740 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3741 37, 38, 39, 40, 10, 11, 12, 13, 14, 15, 3742 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3743 26, 27, -1, -1, 30, 31, 32, -1, -1, 66, 3744 67, -1, -1, 39, -1, 72, -1, 74, 75, 76, 3745 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3746 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3747 -1, 67, -1, -1, -1, -1, 72, -1, 74, 75, 3748 76, -1, 109, 110, 111, -1, -1, 83, 84, -1, 3749 117, 118, 119, 120, 121, 122, 10, 11, 12, 13, 3750 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3751 24, 25, 26, 27, -1, 111, 30, 31, 32, -1, 3752 -1, 117, 118, 37, 38, 39, 40, 10, 11, 12, 3753 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3754 23, 24, 25, 26, 27, -1, -1, 30, 31, 32, 3755 -1, -1, 66, 67, -1, -1, 39, -1, 72, -1, 3756 74, 75, 76, -1, -1, 79, 80, 81, 82, 83, 3757 84, -1, 86, 87, -1, -1, -1, -1, -1, -1, 3758 -1, -1, -1, -1, 67, -1, -1, -1, -1, 72, 3759 -1, 74, 75, -1, -1, 109, -1, 111, -1, -1, 3760 83, 84, -1, 117, 118, 119, 120, 121, 122, 10, 3761 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3762 21, 22, 23, 24, 25, 26, 27, -1, 111, 30, 3763 31, 32, -1, -1, 117, 118, 37, 38, 39, 40, 3764 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3765 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3766 30, 31, 32, -1, -1, 66, 67, -1, -1, 39, 3767 40, 72, -1, 74, 75, 76, -1, -1, 79, 80, 3768 81, 82, 83, 84, -1, 86, 87, -1, -1, -1, 3769 -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 3770 -1, -1, -1, -1, 74, 75, -1, -1, 109, -1, 3771 111, -1, -1, -1, -1, -1, 117, 118, 119, 120, 3772 121, 122, 10, 11, 12, 13, 14, 15, 16, 17, 3773 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3774 -1, 111, 30, 31, 32, 115, -1, 117, 118, 37, 3775 38, 39, 40, 10, 11, 12, 13, 14, 15, 16, 3776 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3777 27, -1, -1, 30, 31, 32, -1, -1, 66, 67, 3778 -1, -1, 39, -1, 72, -1, 74, 75, 76, -1, 3779 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3780 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3781 67, -1, -1, -1, -1, -1, -1, 74, 75, -1, 3782 -1, 109, -1, 111, -1, -1, -1, -1, -1, 117, 3783 118, 119, 120, 121, 122, 10, 11, 12, 13, 14, 3784 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3785 25, 26, 27, -1, 111, 30, 31, 32, -1, -1, 3786 117, 118, 37, 38, 39, 40, -1, -1, -1, -1, 3787 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3788 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3789 27, 66, 67, 30, 31, 32, -1, 72, -1, 74, 3790 75, 76, 39, -1, 79, 80, 81, 82, 83, 84, 3791 -1, 86, 87, -1, -1, -1, -1, -1, -1, -1, 3792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3793 67, -1, -1, -1, 109, -1, 111, 74, 75, -1, 3794 -1, -1, 117, 118, 119, 120, 121, 122, 3, 4, 3795 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3796 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3797 25, 26, 27, -1, 111, 30, 31, 32, -1, -1, 3798 117, 118, -1, -1, 39, -1, -1, -1, 10, 11, 3799 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3800 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, 3801 32, -1, 67, -1, 69, -1, 71, 39, -1, 74, 3802 75, -1, -1, -1, -1, -1, 10, 11, 12, 13, 3803 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3804 24, 25, 26, 27, -1, 67, 30, 31, 32, -1, 3805 72, -1, 74, 75, 76, 39, -1, -1, -1, 114, 3806 -1, 83, 84, -1, 10, 11, 12, 13, 14, 15, 3807 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3808 26, 27, -1, 67, 30, 31, 32, 109, 72, 111, 3809 74, 75, 76, 39, -1, 117, 118, -1, -1, 83, 3810 84, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3811 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3812 -1, 67, 30, 31, 32, 109, 72, 111, 74, 75, 3813 76, 39, -1, 117, 118, -1, -1, 83, 84, -1, 3814 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3815 20, 21, 22, 23, 24, 25, 26, 27, 28, 67, 3816 30, 31, 32, 109, 72, 111, 74, 75, 76, 39, 3817 -1, 117, 118, -1, -1, 83, 84, -1, 10, 11, 3818 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3819 22, 23, 24, 25, 26, 27, 28, 67, 30, 31, 3820 32, 109, -1, 111, 74, 75, -1, 39, 78, 117, 3821 118, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3822 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3823 -1, 30, 31, 32, -1, 67, -1, -1, -1, 109, 3824 39, 111, 74, 75, -1, -1, 78, 117, 118, 10, 3825 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3826 21, 22, 23, 24, 25, 26, 27, -1, 67, 30, 3827 31, 32, -1, -1, -1, 74, 75, -1, 39, 111, 3828 -1, -1, -1, -1, -1, 117, 118, 10, 11, 12, 3829 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3830 23, 24, 25, 26, 27, -1, 67, 30, 31, 32, 3831 -1, -1, 111, 74, 75, -1, 39, -1, 117, 118, 3832 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3833 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3834 30, 31, 32, -1, 67, -1, -1, -1, -1, 39, 3835 111, 74, 75, -1, -1, -1, 117, 118, 10, 11, 3836 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3837 22, 23, 24, 25, 26, 27, -1, 67, 30, 31, 3838 32, -1, -1, -1, 74, 75, -1, 39, 111, -1, 3839 -1, -1, -1, -1, 117, 118, -1, -1, -1, -1, 3840 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3841 -1, -1, -1, -1, -1, 67, -1, -1, -1, -1, 3842 -1, 111, 74, 75, -1, -1, -1, 117, 118, 4, 3843 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3844 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3845 25, 26, 27, -1, -1, 30, 31, 32, -1, 111, 3846 -1, -1, -1, -1, 39, 117, 118, -1, -1, -1, 3847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3848 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3849 -1, -1, 67, -1, 69, -1, 71, -1, -1, 74, 3850 75, 37, 38, -1, 40, 41, -1, 43, -1, -1, 3884 -1, 37, 38, -1, 40, 41, -1, 43, 44, 45, 3851 3885 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, 3852 56, 57, -1, -1, -1, 61, 62, -1, 64, -1,3853 66, -1, -1, -1, -1, 110, 72, -1, -1, -1,3886 56, 57, -1, -1, -1, 61, 62, 67, 64, 69, 3887 66, 71, -1, -1, 74, 75, 72, -1, -1, -1, 3854 3888 76, -1, -1, 79, 80, 81, 82, 83, 84, -1, 3855 86, 87, -1, -1, -1, -1, -1, -1, -1, -1,3889 86, 87, -1, -1, -1, -1, 96, -1, -1, -1, 3856 3890 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3857 3891 -1, -1, -1, 109, -1, 111, -1, -1, 114, -1, 3858 3892 -1, 117, 118, 119, 120, 121, 122, -1, -1, 37, 3859 38, 127, 40, 41, -1, 43, 132, -1, 46, 47,3893 38, 127, 40, 41, -1, 43, 44, 45, 46, 47, 3860 3894 48, 49, 50, 51, 52, 53, -1, -1, -1, 57, 3861 3895 -1, -1, -1, 61, 62, -1, 64, -1, 66, -1, … … 3865 3899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3866 3900 -1, 109, -1, 111, -1, -1, 114, -1, -1, 117, 3867 118, 119, 120, 121, 122, -1, -1, -1, -1, 127, 3868 -1, -1, -1, -1, 132, 4, 5, 6, 7, 8, 3901 118, 119, 120, 121, 122, -1, -1, 37, 38, 127, 3902 40, 41, -1, 43, -1, -1, 46, 47, 48, 49, 3903 50, 51, 52, 53, -1, -1, -1, 57, -1, -1, 3904 -1, 61, 62, -1, 64, -1, 66, -1, -1, -1, 3905 -1, -1, 72, -1, -1, -1, 76, -1, -1, 79, 3906 80, 81, 82, 83, 84, -1, 86, 87, -1, -1, 3907 -1, -1, -1, -1, 37, 38, -1, 40, -1, -1, 3908 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, 3909 -1, 111, -1, -1, 114, -1, -1, 117, 118, 119, 3910 120, 121, 122, 66, -1, -1, -1, 127, -1, 72, 3911 -1, -1, -1, 76, -1, -1, 79, 80, 81, 82, 3912 83, 84, -1, 86, 87, -1, -1, -1, -1, -1, 3913 -1, 37, 38, -1, 40, -1, -1, -1, -1, -1, 3914 -1, -1, -1, -1, -1, -1, 109, -1, 111, -1, 3915 -1, 114, -1, -1, 117, 118, 119, 120, 121, 122, 3916 66, -1, -1, -1, -1, -1, 72, -1, -1, -1, 3917 76, -1, -1, 79, 80, 81, 82, 83, 84, -1, 3918 86, 87, -1, -1, -1, -1, -1, -1, 37, 38, 3919 -1, 40, -1, -1, -1, -1, -1, -1, -1, -1, 3920 -1, -1, -1, 109, -1, 111, -1, 37, 38, -1, 3921 40, 117, 118, 119, 120, 121, 122, 66, -1, -1, 3922 -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, 3923 79, 80, 81, 82, 83, 84, 66, 86, 87, -1, 3924 -1, -1, 72, -1, -1, -1, 76, -1, -1, 79, 3925 80, 81, 82, 83, 84, -1, 86, 87, -1, -1, 3926 109, -1, 111, -1, 37, 38, -1, 40, 117, 118, 3927 119, 120, 121, 122, -1, -1, -1, -1, -1, 109, 3928 -1, 111, -1, 37, 38, -1, 40, 117, 118, 119, 3929 120, 121, 122, 66, -1, -1, -1, -1, -1, 72, 3930 -1, -1, -1, 76, -1, -1, 79, 80, 81, 82, 3931 83, 84, 66, 86, 87, -1, -1, -1, 72, -1, 3932 -1, -1, 76, -1, -1, 79, 80, 81, 82, 83, 3933 84, -1, 86, 87, -1, -1, 109, -1, -1, -1, 3934 37, 38, -1, 40, 117, 118, 119, 120, 121, 122, 3935 -1, -1, -1, -1, -1, 109, -1, -1, -1, 37, 3936 38, -1, 40, 117, 118, 119, 120, 121, 122, 66, 3937 -1, -1, -1, -1, -1, 72, -1, -1, -1, 76, 3938 -1, -1, 79, 80, 81, 82, 83, 84, 66, 86, 3939 87, -1, -1, -1, 72, -1, -1, -1, 76, -1, 3940 -1, 79, 80, 81, 82, 83, 84, -1, 86, 87, 3941 -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, 3942 117, 118, 119, 120, 121, 122, -1, -1, -1, -1, 3943 -1, 109, -1, -1, -1, -1, -1, -1, -1, 117, 3944 118, 119, 120, 121, 122, 4, 5, 6, 7, 8, 3869 3945 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3870 3946 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3871 -1, 30, 31, 32, -1, -1, -1, -1, -1, -1,3872 39, -1, 37, 38, -1, 40, 41, -1, 43, 44,3873 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,3874 -1, 56, 57, -1, -1, -1, 61, 62, 67, 64,3875 69, 66, 71, -1, -1, 74, 75, 72, -1, -1,3876 -1, 76, -1, -1, 79, 80, 81, 82, 83, 84,3877 -1, 86, 87, -1, -1, -1, -1, 96, -1, -1,3878 3947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3879 -1, -1, -1, -1, 109, -1, 111, -1, -1, 114, 3880 -1, -1, 117, 118, 119, 120, 121, 122, -1, -1, 3881 37, 38, 127, 40, 41, -1, 43, 44, 45, 46, 3882 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, 3883 57, -1, -1, -1, 61, 62, -1, 64, -1, 66, 3884 -1, -1, -1, -1, -1, 72, -1, -1, -1, 76, 3885 -1, -1, 79, 80, 81, 82, 83, 84, -1, 86, 3886 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3948 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3887 3949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3888 -1, -1, 109, -1, 111, -1, -1, 114, -1, -1, 3889 117, 118, 119, 120, 121, 122, -1, -1, 37, 38, 3890 127, 40, 41, -1, 43, -1, -1, 46, 47, 48, 3891 49, 50, 51, 52, 53, -1, -1, -1, 57, -1, 3892 -1, -1, 61, 62, -1, 64, -1, 66, -1, -1, 3893 -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, 3894 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 3895 -1, -1, -1, -1, -1, 37, 38, -1, 40, -1, 3896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3897 109, -1, 111, -1, -1, 114, -1, -1, 117, 118, 3898 119, 120, 121, 122, 66, -1, -1, -1, 127, -1, 3899 72, -1, 74, 75, 76, -1, -1, 79, 80, 81, 3900 82, 83, 84, -1, 86, 87, -1, -1, -1, -1, 3901 -1, -1, 37, 38, -1, 40, -1, -1, -1, -1, 3902 -1, -1, -1, -1, -1, -1, -1, 109, -1, 111, 3903 -1, 113, 114, -1, -1, 117, 118, 119, 120, 121, 3904 122, 66, -1, -1, -1, -1, -1, 72, -1, -1, 3905 -1, 76, -1, -1, 79, 80, 81, 82, 83, 84, 3906 -1, 86, 87, -1, -1, -1, -1, -1, -1, 37, 3907 38, -1, 40, -1, -1, -1, -1, -1, -1, -1, 3908 -1, -1, -1, -1, 109, -1, 111, -1, 37, 38, 3909 -1, 40, 117, 118, 119, 120, 121, 122, 66, -1, 3910 -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, 3911 -1, 79, 80, 81, 82, 83, 84, 66, 86, 87, 3912 -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, 3913 79, 80, 81, 82, 83, 84, -1, 86, 87, -1, 3914 -1, 109, -1, 111, -1, 37, 38, -1, 40, 117, 3915 118, 119, 120, 121, 122, -1, -1, -1, -1, -1, 3916 109, -1, -1, -1, 37, 38, -1, 40, 117, 118, 3917 119, 120, 121, 122, 66, -1, -1, -1, -1, -1, 3918 72, -1, -1, -1, 76, -1, -1, 79, 80, 81, 3919 82, 83, 84, 66, 86, 87, -1, -1, -1, 72, 3920 -1, -1, -1, 76, -1, -1, 79, 80, 81, 82, 3921 83, 84, -1, 86, 87, -1, -1, 109, -1, -1, 3922 -1, 37, 38, -1, 40, 117, 118, 119, 120, 121, 3923 122, -1, -1, -1, -1, -1, 109, -1, -1, -1, 3924 -1, -1, -1, -1, 117, 118, 119, 120, 121, 122, 3925 66, -1, -1, -1, -1, -1, 72, -1, -1, -1, 3926 76, -1, -1, 79, 80, 81, 82, 83, 84, -1, 3927 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, 3928 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3929 -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, 3930 -1, 117, 118, 119, 120, 121, 122, 4, 5, 6, 3950 -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, 3951 69, -1, 71, 72, -1, 74, 75, 76, -1, -1, 3952 -1, -1, -1, -1, 83, 84, 3, 4, 5, 6, 3931 3953 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3932 3954 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3933 27, -1, -1, -1, -1, -1, -1, -1, -1, -1,3955 27, -1, -1, 30, 31, 32, -1, -1, -1, -1, 3934 3956 -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 3935 3957 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3936 3958 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3937 67, -1, 69, -1, 71, 72, -1, 74, 75, 76, 3938 -1, -1, -1, -1, -1, -1, 83, 84, 3, 4, 3939 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3940 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3941 25, 26, 27, -1, -1, 30, 31, 32, -1, -1, 3942 -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, 3959 67, -1, 69, -1, 71, -1, -1, 74, 75, 3, 3960 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3961 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3962 24, 25, 26, 27, -1, -1, 30, 31, 32, -1, 3963 -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, 3943 3964 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3944 3965 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3945 -1, -1, 67, -1, 69, -1, 71, -1, -1, 74,3946 7 5, 3, 4, 5, 6, 7, 8, 9, 10, 11,3966 -1, -1, -1, 67, -1, 69, -1, 71, -1, -1, 3967 74, 75, 4, 5, 6, 7, 8, 9, 10, 11, 3947 3968 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3948 3969 22, 23, 24, 25, 26, 27, -1, -1, 30, 31, … … 3951 3972 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3952 3973 -1, -1, -1, -1, -1, 67, -1, 69, -1, 71, 3953 -1, -1, 74, 75, 4, 5, 6, 7, 8, 9, 3954 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3955 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, 3956 30, 31, 32, -1, -1, -1, -1, -1, -1, 39, 3957 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3958 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, 3959 -1, 30, 31, 32, 33, 34, 35, 67, -1, 69, 3960 39, 71, -1, -1, 74, 75, -1, -1, -1, -1, 3961 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3962 -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, 3963 -1, -1, -1, -1, -1, 74, 75 3974 -1, -1, 74, 75 3964 3975 }; 3965 3976 … … 3972 3983 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 3973 3984 36, 39, 40, 64, 67, 69, 71, 72, 74, 75, 3974 76, 83, 84, 109, 111, 117, 118, 137, 140, 1 49,3975 19 8, 212, 213, 214, 215, 216, 217, 218, 219, 220,3976 22 1, 222, 223, 224, 225, 226, 227, 228, 229, 231,3977 23 2, 233, 234, 235, 236, 237, 238, 240, 241, 242,3978 24 3, 244, 245, 247, 255, 256, 283, 284, 285, 293,3979 296, 302, 303, 305, 307, 308, 314, 319, 323, 324,3980 32 5, 326, 327, 328, 329, 330, 350, 367, 368, 369,3981 370, 72, 139, 140, 149, 215, 217, 225, 227, 237,3982 24 1, 243, 284, 82, 109, 312, 313, 314, 312, 312,3983 7 2, 74, 75, 76, 138, 139, 273, 274, 294, 295,3984 7 4, 75, 274, 109, 305, 11, 199, 109, 149, 319,3985 32 4, 325, 326, 328, 329, 330, 112, 134, 111, 218,3986 22 5, 227, 323, 327, 366, 367, 370, 371, 135, 107,3987 131, 277, 114, 135, 173, 74, 75, 137, 272, 135,3988 135, 1 35, 116, 135, 74, 75, 109, 149, 309, 318,3989 3 19, 320, 321, 322, 323, 327, 331, 332, 333, 334,3990 3 35, 341, 3, 28, 78, 239, 3, 5, 74, 111,3991 149, 217, 228, 232, 235, 244, 285, 323, 327, 370,3992 21 5, 217, 227, 237, 241, 243, 284, 323, 327, 33,3993 23 3, 233, 228, 235, 135, 233, 228, 233, 228, 75,3994 1 09, 114, 274, 285, 114, 274, 233, 228, 116, 135,3995 135, 0, 134, 109, 173, 312, 312, 134, 111, 225,3996 227, 368, 272, 272, 131, 227, 109, 149, 309, 319,3997 323, 111, 149, 370, 306, 230, 314, 109, 290, 109,3998 109, 51, 109, 37, 38, 40, 66, 72, 76, 79,3999 8 0, 81, 82, 86, 87, 109, 111, 119, 120, 121,4000 1 22, 136, 140, 141, 142, 143, 148, 149, 150, 151,4001 15 2, 153, 154, 155, 156, 157, 158, 159, 160, 161,4002 16 2, 164, 167, 225, 276, 292, 366, 371, 227, 110,4003 110, 110, 110, 110, 110, 110, 74, 75, 111, 22 5,4004 272, 350, 368, 111, 117, 1 49, 164, 217, 218, 224,4005 22 7, 231, 232, 237, 240, 241, 243, 262, 263, 267,3985 76, 83, 84, 109, 111, 117, 118, 137, 140, 150, 3986 199, 213, 214, 215, 216, 217, 218, 219, 220, 221, 3987 222, 223, 224, 225, 226, 227, 228, 229, 230, 232, 3988 233, 234, 235, 236, 237, 238, 240, 241, 242, 243, 3989 244, 245, 247, 255, 256, 283, 284, 285, 293, 296, 3990 302, 303, 305, 307, 308, 314, 319, 323, 324, 325, 3991 326, 327, 328, 329, 330, 350, 367, 368, 369, 370, 3992 72, 139, 140, 150, 216, 218, 226, 228, 237, 241, 3993 243, 284, 82, 109, 312, 313, 314, 312, 312, 72, 3994 74, 75, 76, 138, 139, 273, 274, 294, 295, 74, 3995 75, 274, 109, 305, 11, 200, 109, 150, 319, 324, 3996 325, 326, 328, 329, 330, 112, 134, 111, 219, 226, 3997 228, 323, 327, 366, 367, 370, 371, 135, 107, 131, 3998 277, 114, 135, 174, 74, 75, 137, 272, 135, 135, 3999 135, 116, 135, 74, 75, 109, 150, 309, 318, 319, 4000 320, 321, 322, 323, 327, 331, 332, 333, 334, 335, 4001 341, 3, 28, 78, 239, 3, 5, 74, 111, 150, 4002 218, 229, 233, 235, 244, 285, 323, 327, 370, 216, 4003 218, 228, 237, 241, 243, 284, 323, 327, 33, 234, 4004 234, 229, 235, 135, 234, 229, 234, 229, 75, 109, 4005 114, 274, 285, 114, 274, 234, 229, 116, 135, 135, 4006 0, 134, 109, 174, 312, 312, 134, 111, 226, 228, 4007 368, 272, 272, 131, 228, 109, 150, 309, 319, 323, 4008 111, 150, 370, 306, 231, 314, 109, 290, 109, 109, 4009 51, 109, 37, 38, 40, 66, 72, 76, 79, 80, 4010 81, 82, 86, 87, 109, 111, 119, 120, 121, 122, 4011 136, 140, 141, 142, 143, 144, 149, 150, 151, 152, 4012 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 4013 163, 165, 168, 226, 276, 292, 366, 371, 228, 110, 4014 110, 110, 110, 110, 110, 110, 74, 75, 111, 226, 4015 272, 350, 368, 111, 117, 150, 165, 218, 219, 225, 4016 228, 232, 233, 237, 240, 241, 243, 262, 263, 267, 4006 4017 268, 269, 270, 284, 350, 362, 363, 364, 365, 370, 4007 4018 371, 112, 109, 323, 327, 370, 109, 116, 132, 111, 4008 114, 1 49, 164, 278, 278, 115, 134, 116, 132, 109,4019 114, 150, 165, 278, 278, 115, 134, 116, 132, 109, 4009 4020 116, 132, 116, 132, 116, 132, 312, 132, 319, 320, 4010 321, 322, 332, 333, 334, 335, 22 7, 318, 331, 64,4011 311, 111, 312, 349, 350, 312, 312, 17 3, 134, 109,4012 312, 349, 312, 312, 22 7, 309, 109, 109, 226, 227,4013 22 5, 227, 112, 134, 225, 366, 371, 173, 134, 272,4014 277, 21 7, 232, 323, 327, 173, 134, 294, 227, 237,4015 132, 22 7, 227, 292, 248, 246, 258, 274, 257, 227,4016 294, 132, 132, 305, 134, 139, 271, 3, 135, 20 7,4017 20 8, 222, 224, 227, 134, 311, 109, 311, 164, 319,4018 22 7, 109, 134, 272, 114, 33, 34, 35, 225, 286,4019 287, 289, 134, 128, 131, 291, 134, 22 8, 234, 235,4020 272, 315, 316, 317, 109, 141, 109, 14 8, 109, 148,4021 15 1, 109, 148, 109, 109, 148, 148, 111, 164, 169,4022 17 3, 225, 275, 366, 370, 112, 134, 82, 85, 86,4021 321, 322, 332, 333, 334, 335, 228, 318, 331, 64, 4022 311, 111, 312, 349, 350, 312, 312, 174, 134, 109, 4023 312, 349, 312, 312, 228, 309, 109, 109, 227, 228, 4024 226, 228, 112, 134, 226, 366, 371, 174, 134, 272, 4025 277, 218, 233, 323, 327, 174, 134, 294, 228, 237, 4026 132, 228, 228, 292, 248, 246, 258, 274, 257, 228, 4027 294, 132, 132, 305, 134, 139, 271, 3, 135, 208, 4028 209, 223, 225, 228, 134, 311, 109, 311, 165, 319, 4029 228, 109, 134, 272, 114, 33, 34, 35, 226, 286, 4030 287, 289, 134, 128, 131, 291, 134, 229, 234, 235, 4031 272, 315, 316, 317, 109, 141, 109, 149, 109, 149, 4032 152, 109, 149, 109, 109, 149, 149, 111, 165, 170, 4033 174, 226, 275, 366, 370, 112, 134, 82, 85, 86, 4023 4034 87, 109, 111, 113, 114, 97, 98, 99, 100, 101, 4024 102, 103, 104, 105, 106, 1 31, 166, 151, 151, 117,4025 1 23, 124, 119, 120, 88, 89, 90, 91, 125, 126,4026 92, 93, 118, 127, 128, 94, 95, 129, 131, 373,4027 109, 149, 345, 346, 347, 348, 349, 110, 116, 109,4028 349, 350, 109, 349, 350, 134, 109, 225, 368, 112,4029 1 34, 135, 111, 225, 227, 361, 362, 370, 371, 135,4030 1 09, 111, 149, 319, 336, 337, 338, 339, 340, 341,4031 34 2, 343, 344, 350, 351, 352, 353, 354, 355, 356,4032 149, 370, 227, 135, 135, 149, 225, 227, 363, 272,4033 2 25, 350, 363, 272, 109, 134, 134, 134, 112, 134,4034 72, 111, 113, 140, 274, 278, 279, 280, 281, 282,4035 134, 134, 134, 134, 134, 134, 309, 110, 110, 110,4036 110, 110, 110, 110, 318, 331, 109, 277, 112, 207,4037 134, 309, 169, 276, 169, 276, 309, 111, 207, 311,4038 173, 134, 207, 110, 40, 111, 115, 225, 249, 250,4039 25 1, 366, 114, 116, 372, 131, 259, 114, 227, 264,4040 26 5, 266, 269, 270, 110, 116, 173, 134, 117, 164,4041 1 34, 224, 227, 263, 362, 370, 303, 304, 109, 149,4042 336, 110, 116, 373, 274, 286, 109, 114, 274, 276,4043 2 86, 110, 116, 109, 141, 110, 130, 275, 275, 275,4044 145, 164, 276, 275, 112, 134, 110, 116, 110, 109,4045 1 49, 349, 357, 358, 359, 360, 110, 116, 164, 111,4046 1 39, 144, 145, 134, 111, 139, 144, 164, 151, 151,4047 15 1, 152, 152, 153, 153, 154, 154, 154, 154, 155,4048 15 5, 156, 157, 158, 159, 160, 130, 169, 164, 134,4049 346, 347, 348, 227, 345, 312, 312, 164, 276, 134,4050 271, 134, 225, 350, 363, 227, 231, 112, 112, 134,4051 370, 112, 109, 134, 319, 337, 338, 339, 342, 352,4052 35 3, 354, 112, 134, 227, 336, 340, 351, 109, 312,4053 3 55, 373, 312, 312, 373, 109, 312, 355, 312, 312,4054 312, 312, 3 50, 225, 361, 371, 272, 112, 116, 112,4055 11 6, 373, 225, 363, 373, 260, 261, 262, 263, 260,4056 260, 2 72, 164, 134, 111, 274, 130, 116, 372, 278,4057 111, 130, 282, 29, 209, 210, 272, 260, 139, 309,4058 139, 311, 109, 349, 350, 109, 349, 350, 141, 350,4059 173, 264, 110, 110, 110, 110, 112, 173, 207, 173,4060 1 14, 250, 251, 112, 134, 109, 130, 149, 252, 254,4061 318, 319, 331, 357, 116, 132, 116, 132, 274, 248,4062 2 74, 115, 162, 163, 258, 135, 135, 139, 222, 135,4063 135, 260, 109, 149, 370, 135, 115, 227, 287, 288,4064 135, 134, 134, 109, 135, 110, 316, 169, 170, 130,4065 13 2, 111, 141, 200, 201, 202, 110, 116, 110, 110,4066 110, 110, 11 1, 164, 358, 359, 360, 227, 357, 312,4067 312, 114, 151, 167, 164, 165, 168, 116, 135, 134,4068 1 10, 116, 164, 134, 115, 162, 130, 264, 110, 110,4069 110, 345, 264, 110, 260, 225, 363, 111, 117, 149,4070 1 64, 164, 227, 342, 264, 110, 110, 110, 110, 110,4071 110, 110, 7, 227, 336, 340, 351, 134, 134, 373,4072 134, 134, 110, 135, 135, 135, 135, 277, 135, 162,4073 163, 164, 310, 134, 278, 280, 115, 134, 211, 274,4074 40, 41, 43, 46, 47, 48, 49, 50, 51, 52,4075 5 3, 57, 61, 62, 72, 111, 127, 170, 171, 172,4076 173, 174, 175, 17 7, 178, 190, 192, 193, 198, 212,4077 308, 29, 135, 131, 277, 134, 134, 110, 135, 173,4078 248, 132, 132, 319, 163, 227, 253, 254, 253, 274,4079 312, 115, 259, 372, 110, 116, 112, 112, 135, 227,4080 116, 373, 290, 110, 286, 215, 217, 225, 298, 299,4081 300, 301, 292, 110, 110, 130, 163, 109, 110, 130,4082 1 16, 139, 112, 110, 110, 110, 357, 279, 116, 135,4083 1 68, 112, 139, 146, 147, 145, 135, 146, 162, 167,4084 1 35, 109, 349, 350, 135, 135, 134, 135, 135, 135,4085 1 64, 110, 135, 109, 349, 350, 109, 355, 109, 355,4086 35 0, 226, 7, 117, 135, 164, 264, 264, 263, 267,4087 267, 26 8, 116, 116, 110, 110, 112, 96, 122, 135,4088 135, 1 46, 278, 164, 116, 132, 212, 216, 227, 231,4089 109, 109, 171, 109, 109, 72, 132, 72, 132, 72,4090 117, 170, 109, 173, 165, 165, 130, 112, 143, 132,4091 13 5, 134, 135, 211, 110, 164, 264, 264, 312, 110,4092 11 5, 252, 115, 134, 110, 134, 135, 309, 115, 134,4093 13 5, 135, 110, 114, 200, 112, 163, 132, 200, 202,4094 110, 109, 349, 350, 372, 165, 112, 135, 85, 113,4095 11 6, 135, 112, 135, 110, 134, 110, 110, 112, 112,4096 112, 1 35, 110, 134, 134, 134, 164, 164, 135, 112,4097 1 35, 135, 135, 135, 134, 134, 163, 163, 112, 112,4098 1 35, 135, 274, 227, 169, 169, 47, 169, 134, 132,4099 132, 132, 1 69, 132, 169, 58, 59, 60, 194, 195,4100 196, 1 32, 63, 132, 312, 114, 175, 115, 132, 135,4101 135, 96, 269, 270, 110, 299, 116, 132, 116, 132,4102 1 15, 297, 130, 141, 110, 110, 130, 134, 115, 112,4103 11 1, 147, 111, 147, 147, 112, 112, 264, 112, 264,4104 264, 264, 135, 135, 112, 112, 110, 110, 112, 116,4105 96, 263, 96, 135, 112, 112, 110, 110, 109, 110,4106 1 70, 191, 212, 132, 110, 109, 109, 173, 196, 58,4107 5 9, 164, 171, 144, 110, 110, 114, 134, 134, 298,4108 141, 203, 109, 132, 203, 264, 134, 134, 135, 135,4109 135, 135, 1 12, 112, 134, 135, 112, 171, 44, 45,4110 114, 181, 182, 183, 169, 171, 135, 110, 170, 114,4111 1 83, 96, 134, 96, 134, 109, 109, 132, 115, 134,4112 272, 309, 115, 116, 130, 163, 110, 135, 146, 146,4113 1 10, 110, 110, 110, 267, 42, 163, 179, 180, 310,4114 130, 134, 171, 181, 110, 132, 171, 132, 134, 110,4115 1 34, 110, 134, 96, 134, 96, 134, 132, 298, 141,4116 1 39, 204, 110, 132, 110, 135, 135, 171, 96, 116,4117 1 30, 135, 205, 206, 212, 132, 170, 170, 205, 173,4118 1 97, 225, 366, 173, 197, 110, 134, 110, 134, 115,4119 11 0, 116, 112, 112, 163, 179, 182, 184, 185, 134,4120 13 2, 182, 186, 187, 135, 109, 149, 309, 357, 139,4121 13 5, 173, 197, 173, 197, 109, 132, 139, 171, 176,4122 1 15, 182, 212, 170, 56, 176, 189, 115, 182, 110,4123 227, 110, 135, 135, 292, 171, 176, 132, 188, 189,4124 1 76, 189, 173, 173, 110, 110, 110, 188, 135, 135,4125 1 73, 173, 135, 1354035 102, 103, 104, 105, 106, 107, 131, 167, 152, 152, 4036 117, 123, 124, 119, 120, 88, 89, 90, 91, 125, 4037 126, 92, 93, 118, 127, 128, 94, 95, 129, 131, 4038 373, 109, 150, 345, 346, 347, 348, 349, 110, 116, 4039 109, 349, 350, 109, 349, 350, 134, 109, 226, 368, 4040 112, 134, 135, 111, 226, 228, 361, 362, 370, 371, 4041 135, 109, 111, 150, 319, 336, 337, 338, 339, 340, 4042 341, 342, 343, 344, 350, 351, 352, 353, 354, 355, 4043 356, 150, 370, 228, 135, 135, 150, 226, 228, 363, 4044 272, 226, 350, 363, 272, 109, 134, 134, 134, 112, 4045 134, 72, 111, 113, 140, 274, 278, 279, 280, 281, 4046 282, 134, 134, 134, 134, 134, 134, 309, 110, 110, 4047 110, 110, 110, 110, 110, 318, 331, 109, 277, 112, 4048 208, 134, 309, 170, 276, 170, 276, 309, 111, 208, 4049 311, 174, 134, 208, 110, 40, 111, 115, 226, 249, 4050 250, 251, 366, 114, 116, 372, 131, 259, 114, 228, 4051 264, 265, 266, 269, 270, 110, 116, 174, 134, 117, 4052 165, 134, 225, 228, 263, 362, 370, 303, 304, 109, 4053 150, 336, 110, 116, 373, 274, 286, 109, 114, 274, 4054 276, 286, 110, 116, 109, 141, 110, 130, 275, 275, 4055 275, 146, 165, 276, 275, 112, 134, 110, 116, 110, 4056 109, 150, 349, 357, 358, 359, 360, 110, 116, 165, 4057 111, 139, 145, 146, 134, 111, 139, 145, 165, 152, 4058 152, 152, 153, 153, 154, 154, 155, 155, 155, 155, 4059 156, 156, 157, 158, 159, 160, 161, 130, 170, 165, 4060 134, 346, 347, 348, 228, 345, 312, 312, 165, 276, 4061 134, 271, 134, 226, 350, 363, 228, 232, 112, 112, 4062 134, 370, 112, 109, 134, 319, 337, 338, 339, 342, 4063 352, 353, 354, 112, 134, 228, 336, 340, 351, 109, 4064 312, 355, 373, 312, 312, 373, 109, 312, 355, 312, 4065 312, 312, 312, 350, 226, 361, 371, 272, 112, 116, 4066 112, 116, 373, 226, 363, 373, 260, 261, 262, 263, 4067 260, 260, 272, 165, 134, 111, 274, 130, 116, 372, 4068 278, 111, 130, 282, 29, 210, 211, 272, 260, 139, 4069 309, 139, 311, 109, 349, 350, 109, 349, 350, 142, 4070 350, 174, 264, 110, 110, 110, 110, 112, 174, 208, 4071 174, 114, 250, 251, 112, 134, 109, 130, 150, 252, 4072 254, 318, 319, 331, 357, 116, 132, 116, 132, 274, 4073 248, 274, 115, 163, 164, 258, 135, 135, 139, 223, 4074 135, 135, 260, 109, 150, 370, 135, 115, 228, 287, 4075 288, 135, 134, 134, 109, 135, 110, 316, 170, 171, 4076 130, 132, 111, 141, 201, 202, 203, 110, 116, 110, 4077 110, 110, 110, 111, 165, 358, 359, 360, 228, 357, 4078 312, 312, 114, 152, 168, 165, 166, 169, 116, 135, 4079 134, 110, 116, 165, 134, 115, 163, 130, 264, 110, 4080 110, 110, 345, 264, 110, 260, 226, 363, 111, 117, 4081 150, 165, 165, 228, 342, 264, 110, 110, 110, 110, 4082 110, 110, 110, 7, 228, 336, 340, 351, 134, 134, 4083 373, 134, 134, 110, 135, 135, 135, 135, 277, 135, 4084 163, 164, 165, 310, 134, 278, 280, 115, 134, 212, 4085 274, 40, 41, 43, 46, 47, 48, 49, 50, 51, 4086 52, 53, 57, 61, 62, 72, 111, 127, 171, 172, 4087 173, 174, 175, 176, 178, 179, 191, 193, 194, 199, 4088 213, 308, 29, 135, 131, 277, 134, 134, 110, 135, 4089 174, 248, 132, 132, 319, 164, 228, 253, 254, 253, 4090 274, 312, 115, 259, 372, 110, 116, 112, 112, 135, 4091 228, 116, 373, 290, 110, 286, 216, 218, 226, 298, 4092 299, 300, 301, 292, 110, 110, 130, 164, 109, 110, 4093 130, 116, 139, 112, 110, 110, 110, 357, 279, 116, 4094 135, 169, 112, 139, 147, 148, 146, 135, 147, 163, 4095 168, 135, 109, 349, 350, 135, 135, 134, 135, 135, 4096 135, 165, 110, 135, 109, 349, 350, 109, 355, 109, 4097 355, 350, 227, 7, 117, 135, 165, 264, 264, 263, 4098 267, 267, 268, 116, 116, 110, 110, 112, 96, 122, 4099 135, 135, 147, 278, 165, 116, 132, 213, 217, 228, 4100 232, 109, 109, 172, 109, 109, 72, 132, 72, 132, 4101 72, 117, 171, 109, 174, 166, 166, 130, 112, 144, 4102 132, 135, 134, 135, 212, 110, 165, 264, 264, 312, 4103 110, 115, 252, 115, 134, 110, 134, 135, 309, 115, 4104 134, 135, 135, 110, 114, 201, 112, 164, 132, 201, 4105 203, 110, 109, 349, 350, 372, 166, 112, 135, 85, 4106 113, 116, 135, 112, 135, 110, 134, 110, 110, 112, 4107 112, 112, 135, 110, 134, 134, 134, 165, 165, 135, 4108 112, 135, 135, 135, 135, 134, 134, 164, 164, 112, 4109 112, 135, 135, 274, 228, 170, 170, 47, 170, 134, 4110 132, 132, 132, 170, 132, 170, 58, 59, 60, 195, 4111 196, 197, 132, 63, 132, 312, 114, 176, 115, 132, 4112 135, 135, 96, 269, 270, 110, 299, 116, 132, 116, 4113 132, 115, 297, 130, 141, 110, 110, 130, 134, 115, 4114 112, 111, 148, 111, 148, 148, 112, 112, 264, 112, 4115 264, 264, 264, 135, 135, 112, 112, 110, 110, 112, 4116 116, 96, 263, 96, 135, 112, 112, 110, 110, 109, 4117 110, 171, 192, 213, 132, 110, 109, 109, 174, 197, 4118 58, 59, 165, 172, 145, 110, 110, 114, 134, 134, 4119 298, 141, 204, 109, 132, 204, 264, 134, 134, 135, 4120 135, 135, 135, 112, 112, 134, 135, 112, 172, 44, 4121 45, 114, 182, 183, 184, 170, 172, 135, 110, 171, 4122 114, 184, 96, 134, 96, 134, 109, 109, 132, 115, 4123 134, 272, 309, 115, 116, 130, 164, 110, 135, 147, 4124 147, 110, 110, 110, 110, 267, 42, 164, 180, 181, 4125 310, 130, 134, 172, 182, 110, 132, 172, 132, 134, 4126 110, 134, 110, 134, 96, 134, 96, 134, 132, 298, 4127 141, 139, 205, 110, 132, 110, 135, 135, 172, 96, 4128 116, 130, 135, 206, 207, 213, 132, 171, 171, 206, 4129 174, 198, 226, 366, 174, 198, 110, 134, 110, 134, 4130 115, 110, 116, 112, 112, 164, 180, 183, 185, 186, 4131 134, 132, 183, 187, 188, 135, 109, 150, 309, 357, 4132 139, 135, 174, 198, 174, 198, 109, 132, 139, 172, 4133 177, 115, 183, 213, 171, 56, 177, 190, 115, 183, 4134 110, 228, 110, 135, 135, 292, 172, 177, 132, 189, 4135 190, 177, 190, 174, 174, 110, 110, 110, 189, 135, 4136 135, 174, 174, 135, 135 4126 4137 }; 4127 4138 … … 4960 4971 4961 4972 /* Line 1806 of yacc.c */ 4962 #line 299 "parser.yy" 4973 #line 300 "parser.yy" 4974 { typedefTable.enterScope(); } 4975 break; 4976 4977 case 3: 4978 4979 /* Line 1806 of yacc.c */ 4980 #line 304 "parser.yy" 4981 { typedefTable.leaveScope(); } 4982 break; 4983 4984 case 4: 4985 4986 /* Line 1806 of yacc.c */ 4987 #line 311 "parser.yy" 4988 { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); } 4989 break; 4990 4991 case 5: 4992 4993 /* Line 1806 of yacc.c */ 4994 #line 312 "parser.yy" 4995 { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); } 4996 break; 4997 4998 case 6: 4999 5000 /* Line 1806 of yacc.c */ 5001 #line 313 "parser.yy" 5002 { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); } 5003 break; 5004 5005 case 16: 5006 5007 /* Line 1806 of yacc.c */ 5008 #line 338 "parser.yy" 5009 { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); } 5010 break; 5011 5012 case 17: 5013 5014 /* Line 1806 of yacc.c */ 5015 #line 342 "parser.yy" 5016 { (yyval.str) = (yyvsp[(1) - (1)].tok); } 5017 break; 5018 5019 case 18: 5020 5021 /* Line 1806 of yacc.c */ 5022 #line 344 "parser.yy" 4963 5023 { 4964 typedefTable.enterScope(); 5024 appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) ); // append 2nd juxtaposed string to 1st 5025 delete (yyvsp[(2) - (2)].tok); // allocated by lexer 5026 (yyval.str) = (yyvsp[(1) - (2)].str); // conversion from tok to str 4965 5027 } 4966 5028 break; 4967 5029 4968 case 3: 4969 4970 /* Line 1806 of yacc.c */ 4971 #line 305 "parser.yy" 4972 { 4973 typedefTable.leaveScope(); 4974 } 4975 break; 4976 4977 case 4: 4978 4979 /* Line 1806 of yacc.c */ 4980 #line 314 "parser.yy" 4981 { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); } 4982 break; 4983 4984 case 5: 4985 4986 /* Line 1806 of yacc.c */ 4987 #line 315 "parser.yy" 4988 { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); } 4989 break; 4990 4991 case 6: 4992 4993 /* Line 1806 of yacc.c */ 4994 #line 316 "parser.yy" 4995 { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); } 4996 break; 4997 4998 case 16: 4999 5000 /* Line 1806 of yacc.c */ 5001 #line 341 "parser.yy" 5002 { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); } 5003 break; 5004 5005 case 17: 5006 5007 /* Line 1806 of yacc.c */ 5008 #line 343 "parser.yy" 5009 { 5010 appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) ); 5011 delete (yyvsp[(2) - (2)].tok); // allocated by lexer 5012 (yyval.constant) = (yyvsp[(1) - (2)].constant); 5013 } 5014 break; 5015 5016 case 18: 5017 5018 /* Line 1806 of yacc.c */ 5019 #line 354 "parser.yy" 5030 case 19: 5031 5032 /* Line 1806 of yacc.c */ 5033 #line 355 "parser.yy" 5020 5034 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 5021 5035 break; 5022 5036 5023 case 19:5024 5025 /* Line 1806 of yacc.c */ 5026 #line 35 6"parser.yy"5037 case 20: 5038 5039 /* Line 1806 of yacc.c */ 5040 #line 357 "parser.yy" 5027 5041 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 5028 5042 break; 5029 5043 5030 case 2 0:5031 5032 /* Line 1806 of yacc.c */ 5033 #line 35 8"parser.yy"5044 case 21: 5045 5046 /* Line 1806 of yacc.c */ 5047 #line 359 "parser.yy" 5034 5048 { (yyval.en) = (yyvsp[(2) - (3)].en); } 5035 5049 break; 5036 5050 5037 case 2 1:5038 5039 /* Line 1806 of yacc.c */ 5040 #line 36 0"parser.yy"5051 case 22: 5052 5053 /* Line 1806 of yacc.c */ 5054 #line 361 "parser.yy" 5041 5055 { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); } 5042 5056 break; 5043 5057 5044 case 2 3:5045 5046 /* Line 1806 of yacc.c */ 5047 #line 37 0"parser.yy"5058 case 24: 5059 5060 /* Line 1806 of yacc.c */ 5061 #line 371 "parser.yy" 5048 5062 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); } 5049 5063 break; 5050 5064 5051 case 2 4:5052 5053 /* Line 1806 of yacc.c */ 5054 #line 37 2"parser.yy"5065 case 25: 5066 5067 /* Line 1806 of yacc.c */ 5068 #line 373 "parser.yy" 5055 5069 { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); } 5056 5070 break; 5057 5071 5058 case 2 5:5059 5060 /* Line 1806 of yacc.c */ 5061 #line 37 6"parser.yy"5072 case 26: 5073 5074 /* Line 1806 of yacc.c */ 5075 #line 377 "parser.yy" 5062 5076 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); } 5063 5077 break; 5064 5078 5065 case 2 7:5066 5067 /* Line 1806 of yacc.c */ 5068 #line 3 79"parser.yy"5079 case 28: 5080 5081 /* Line 1806 of yacc.c */ 5082 #line 380 "parser.yy" 5069 5083 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); } 5070 5084 break; 5071 5085 5072 case 29:5073 5074 /* Line 1806 of yacc.c */ 5075 #line 38 2"parser.yy"5086 case 30: 5087 5088 /* Line 1806 of yacc.c */ 5089 #line 383 "parser.yy" 5076 5090 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); } 5077 5091 break; 5078 5092 5079 case 3 0:5080 5081 /* Line 1806 of yacc.c */ 5082 #line 38 4"parser.yy"5093 case 31: 5094 5095 /* Line 1806 of yacc.c */ 5096 #line 385 "parser.yy" 5083 5097 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); } 5084 5098 break; 5085 5099 5086 case 3 1:5087 5088 /* Line 1806 of yacc.c */ 5089 #line 38 6"parser.yy"5100 case 32: 5101 5102 /* Line 1806 of yacc.c */ 5103 #line 387 "parser.yy" 5090 5104 { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); } 5091 5105 break; 5092 5106 5093 case 3 2:5094 5095 /* Line 1806 of yacc.c */ 5096 #line 38 8"parser.yy"5107 case 33: 5108 5109 /* Line 1806 of yacc.c */ 5110 #line 389 "parser.yy" 5097 5111 { 5098 5112 Token fn; 5099 5113 fn.str = new std::string( "?{}" ); // location undefined 5100 (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_l ink( (yyvsp[(3) - (4)].en) ) ) );5114 (yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ); 5101 5115 } 5102 5116 break; 5103 5117 5104 case 34:5105 5106 /* Line 1806 of yacc.c */5107 #line 398 "parser.yy"5108 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }5109 break;5110 5111 5118 case 35: 5112 5119 5113 5120 /* Line 1806 of yacc.c */ 5114 #line 403 "parser.yy" 5121 #line 399 "parser.yy" 5122 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); } 5123 break; 5124 5125 case 36: 5126 5127 /* Line 1806 of yacc.c */ 5128 #line 404 "parser.yy" 5115 5129 { (yyval.en) = 0; } 5116 5130 break; 5117 5131 5118 case 38:5119 5120 /* Line 1806 of yacc.c */5121 #line 409 "parser.yy"5122 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }5123 break;5124 5125 5132 case 39: 5126 5133 5127 5134 /* Line 1806 of yacc.c */ 5128 #line 414 "parser.yy" 5135 #line 410 "parser.yy" 5136 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 5137 break; 5138 5139 case 40: 5140 5141 /* Line 1806 of yacc.c */ 5142 #line 415 "parser.yy" 5129 5143 { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); } 5130 5144 break; 5131 5145 5132 case 4 0:5133 5134 /* Line 1806 of yacc.c */ 5135 #line 41 8"parser.yy"5146 case 41: 5147 5148 /* Line 1806 of yacc.c */ 5149 #line 419 "parser.yy" 5136 5150 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); } 5137 5151 break; 5138 5152 5139 case 4 1:5140 5141 /* Line 1806 of yacc.c */ 5142 #line 42 0"parser.yy"5153 case 42: 5154 5155 /* Line 1806 of yacc.c */ 5156 #line 421 "parser.yy" 5143 5157 { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); } 5144 5158 break; 5145 5159 5146 case 4 2:5147 5148 /* Line 1806 of yacc.c */ 5149 #line 42 2"parser.yy"5160 case 43: 5161 5162 /* Line 1806 of yacc.c */ 5163 #line 423 "parser.yy" 5150 5164 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); } 5151 5165 break; 5152 5166 5153 case 4 3:5154 5155 /* Line 1806 of yacc.c */ 5156 #line 42 4"parser.yy"5167 case 44: 5168 5169 /* Line 1806 of yacc.c */ 5170 #line 425 "parser.yy" 5157 5171 { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); } 5158 5172 break; 5159 5173 5160 case 4 5:5161 5162 /* Line 1806 of yacc.c */ 5163 #line 43 2"parser.yy"5174 case 46: 5175 5176 /* Line 1806 of yacc.c */ 5177 #line 433 "parser.yy" 5164 5178 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5165 5179 break; 5166 5180 5167 case 4 6:5168 5169 /* Line 1806 of yacc.c */ 5170 #line 43 4"parser.yy"5181 case 47: 5182 5183 /* Line 1806 of yacc.c */ 5184 #line 435 "parser.yy" 5171 5185 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 5172 5186 break; 5173 5187 5174 case 4 7:5175 5176 /* Line 1806 of yacc.c */ 5177 #line 43 6"parser.yy"5188 case 48: 5189 5190 /* Line 1806 of yacc.c */ 5191 #line 437 "parser.yy" 5178 5192 { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); } 5179 5193 break; 5180 5194 5181 case 4 8:5182 5183 /* Line 1806 of yacc.c */ 5184 #line 44 1"parser.yy"5195 case 49: 5196 5197 /* Line 1806 of yacc.c */ 5198 #line 442 "parser.yy" 5185 5199 { 5186 5200 switch ( (yyvsp[(1) - (2)].op) ) { … … 5197 5211 break; 5198 5212 5199 case 49:5200 5201 /* Line 1806 of yacc.c */ 5202 #line 45 4"parser.yy"5213 case 50: 5214 5215 /* Line 1806 of yacc.c */ 5216 #line 455 "parser.yy" 5203 5217 { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); } 5204 5218 break; 5205 5219 5206 case 5 0:5207 5208 /* Line 1806 of yacc.c */ 5209 #line 45 6"parser.yy"5220 case 51: 5221 5222 /* Line 1806 of yacc.c */ 5223 #line 457 "parser.yy" 5210 5224 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); } 5211 5225 break; 5212 5226 5213 case 5 1:5214 5215 /* Line 1806 of yacc.c */ 5216 #line 45 8"parser.yy"5227 case 52: 5228 5229 /* Line 1806 of yacc.c */ 5230 #line 459 "parser.yy" 5217 5231 { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); } 5218 5232 break; 5219 5233 5220 case 5 2:5221 5222 /* Line 1806 of yacc.c */ 5223 #line 46 0"parser.yy"5234 case 53: 5235 5236 /* Line 1806 of yacc.c */ 5237 #line 461 "parser.yy" 5224 5238 { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); } 5225 5239 break; 5226 5240 5227 case 5 3:5228 5229 /* Line 1806 of yacc.c */ 5230 #line 46 2"parser.yy"5241 case 54: 5242 5243 /* Line 1806 of yacc.c */ 5244 #line 463 "parser.yy" 5231 5245 { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); } 5232 5246 break; 5233 5247 5234 case 5 4:5235 5236 /* Line 1806 of yacc.c */ 5237 #line 46 4"parser.yy"5248 case 55: 5249 5250 /* Line 1806 of yacc.c */ 5251 #line 465 "parser.yy" 5238 5252 { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); } 5239 5253 break; 5240 5254 5241 case 5 5:5242 5243 /* Line 1806 of yacc.c */ 5244 #line 46 6"parser.yy"5255 case 56: 5256 5257 /* Line 1806 of yacc.c */ 5258 #line 467 "parser.yy" 5245 5259 { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); } 5246 5260 break; 5247 5261 5248 case 5 6:5249 5250 /* Line 1806 of yacc.c */ 5251 #line 46 8"parser.yy"5262 case 57: 5263 5264 /* Line 1806 of yacc.c */ 5265 #line 469 "parser.yy" 5252 5266 { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); } 5253 5267 break; 5254 5268 5255 case 5 7:5256 5257 /* Line 1806 of yacc.c */ 5258 #line 47 0"parser.yy"5269 case 58: 5270 5271 /* Line 1806 of yacc.c */ 5272 #line 471 "parser.yy" 5259 5273 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); } 5260 5274 break; 5261 5275 5262 case 5 8:5263 5264 /* Line 1806 of yacc.c */ 5265 #line 47 2"parser.yy"5276 case 59: 5277 5278 /* Line 1806 of yacc.c */ 5279 #line 473 "parser.yy" 5266 5280 { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); } 5267 5281 break; 5268 5282 5269 case 59:5270 5271 /* Line 1806 of yacc.c */ 5272 #line 47 4"parser.yy"5283 case 60: 5284 5285 /* Line 1806 of yacc.c */ 5286 #line 475 "parser.yy" 5273 5287 { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); } 5274 5288 break; 5275 5289 5276 case 6 0:5277 5278 /* Line 1806 of yacc.c */ 5279 #line 48 0"parser.yy"5290 case 61: 5291 5292 /* Line 1806 of yacc.c */ 5293 #line 481 "parser.yy" 5280 5294 { (yyval.op) = OperKinds::PointTo; } 5281 5295 break; 5282 5296 5283 case 6 1:5284 5285 /* Line 1806 of yacc.c */ 5286 #line 48 1"parser.yy"5297 case 62: 5298 5299 /* Line 1806 of yacc.c */ 5300 #line 482 "parser.yy" 5287 5301 { (yyval.op) = OperKinds::AddressOf; } 5288 5302 break; 5289 5303 5290 case 6 2:5291 5292 /* Line 1806 of yacc.c */ 5293 #line 48 7"parser.yy"5304 case 63: 5305 5306 /* Line 1806 of yacc.c */ 5307 #line 488 "parser.yy" 5294 5308 { (yyval.op) = OperKinds::UnPlus; } 5295 5309 break; 5296 5310 5297 case 6 3:5298 5299 /* Line 1806 of yacc.c */ 5300 #line 48 8"parser.yy"5311 case 64: 5312 5313 /* Line 1806 of yacc.c */ 5314 #line 489 "parser.yy" 5301 5315 { (yyval.op) = OperKinds::UnMinus; } 5302 5316 break; 5303 5317 5304 case 6 4:5305 5306 /* Line 1806 of yacc.c */ 5307 #line 4 89"parser.yy"5318 case 65: 5319 5320 /* Line 1806 of yacc.c */ 5321 #line 490 "parser.yy" 5308 5322 { (yyval.op) = OperKinds::Neg; } 5309 5323 break; 5310 5324 5311 case 6 5:5312 5313 /* Line 1806 of yacc.c */ 5314 #line 49 0"parser.yy"5325 case 66: 5326 5327 /* Line 1806 of yacc.c */ 5328 #line 491 "parser.yy" 5315 5329 { (yyval.op) = OperKinds::BitNeg; } 5316 5330 break; 5317 5331 5318 case 6 7:5319 5320 /* Line 1806 of yacc.c */ 5321 #line 49 6"parser.yy"5332 case 68: 5333 5334 /* Line 1806 of yacc.c */ 5335 #line 497 "parser.yy" 5322 5336 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); } 5323 5337 break; 5324 5338 5325 case 6 8:5326 5327 /* Line 1806 of yacc.c */ 5328 #line 49 8"parser.yy"5339 case 69: 5340 5341 /* Line 1806 of yacc.c */ 5342 #line 499 "parser.yy" 5329 5343 { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); } 5330 5344 break; 5331 5345 5332 case 7 0:5333 5334 /* Line 1806 of yacc.c */ 5335 #line 50 4"parser.yy"5346 case 71: 5347 5348 /* Line 1806 of yacc.c */ 5349 #line 505 "parser.yy" 5336 5350 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5337 5351 break; 5338 5352 5339 case 7 1:5340 5341 /* Line 1806 of yacc.c */ 5342 #line 50 6"parser.yy"5353 case 72: 5354 5355 /* Line 1806 of yacc.c */ 5356 #line 507 "parser.yy" 5343 5357 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5344 5358 break; 5345 5359 5346 case 7 2:5347 5348 /* Line 1806 of yacc.c */ 5349 #line 50 8"parser.yy"5360 case 73: 5361 5362 /* Line 1806 of yacc.c */ 5363 #line 509 "parser.yy" 5350 5364 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5351 5365 break; 5352 5366 5353 case 7 4:5354 5355 /* Line 1806 of yacc.c */ 5356 #line 51 4"parser.yy"5367 case 75: 5368 5369 /* Line 1806 of yacc.c */ 5370 #line 515 "parser.yy" 5357 5371 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5358 5372 break; 5359 5373 5360 case 7 5:5361 5362 /* Line 1806 of yacc.c */ 5363 #line 51 6"parser.yy"5374 case 76: 5375 5376 /* Line 1806 of yacc.c */ 5377 #line 517 "parser.yy" 5364 5378 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5365 5379 break; 5366 5380 5367 case 7 7:5368 5369 /* Line 1806 of yacc.c */ 5370 #line 52 2"parser.yy"5381 case 78: 5382 5383 /* Line 1806 of yacc.c */ 5384 #line 523 "parser.yy" 5371 5385 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5372 5386 break; 5373 5387 5374 case 7 8:5375 5376 /* Line 1806 of yacc.c */ 5377 #line 52 4"parser.yy"5388 case 79: 5389 5390 /* Line 1806 of yacc.c */ 5391 #line 525 "parser.yy" 5378 5392 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5379 5393 break; 5380 5394 5381 case 8 0:5382 5383 /* Line 1806 of yacc.c */ 5384 #line 53 0"parser.yy"5395 case 81: 5396 5397 /* Line 1806 of yacc.c */ 5398 #line 531 "parser.yy" 5385 5399 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5386 5400 break; 5387 5401 5388 case 8 1:5389 5390 /* Line 1806 of yacc.c */ 5391 #line 53 2"parser.yy"5402 case 82: 5403 5404 /* Line 1806 of yacc.c */ 5405 #line 533 "parser.yy" 5392 5406 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5393 5407 break; 5394 5408 5395 case 8 2:5396 5397 /* Line 1806 of yacc.c */ 5398 #line 53 4"parser.yy"5409 case 83: 5410 5411 /* Line 1806 of yacc.c */ 5412 #line 535 "parser.yy" 5399 5413 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5400 5414 break; 5401 5415 5402 case 8 3:5403 5404 /* Line 1806 of yacc.c */ 5405 #line 53 6"parser.yy"5416 case 84: 5417 5418 /* Line 1806 of yacc.c */ 5419 #line 537 "parser.yy" 5406 5420 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5407 5421 break; 5408 5422 5409 case 8 5:5410 5411 /* Line 1806 of yacc.c */ 5412 #line 54 2"parser.yy"5423 case 86: 5424 5425 /* Line 1806 of yacc.c */ 5426 #line 543 "parser.yy" 5413 5427 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5414 5428 break; 5415 5429 5416 case 8 6:5417 5418 /* Line 1806 of yacc.c */ 5419 #line 54 4"parser.yy"5430 case 87: 5431 5432 /* Line 1806 of yacc.c */ 5433 #line 545 "parser.yy" 5420 5434 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5421 5435 break; 5422 5436 5423 case 8 8:5424 5425 /* Line 1806 of yacc.c */ 5426 #line 55 0"parser.yy"5437 case 89: 5438 5439 /* Line 1806 of yacc.c */ 5440 #line 551 "parser.yy" 5427 5441 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5428 5442 break; 5429 5443 5430 case 9 0:5431 5432 /* Line 1806 of yacc.c */ 5433 #line 55 6"parser.yy"5444 case 91: 5445 5446 /* Line 1806 of yacc.c */ 5447 #line 557 "parser.yy" 5434 5448 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5435 5449 break; 5436 5450 5437 case 9 2:5438 5439 /* Line 1806 of yacc.c */ 5440 #line 56 2"parser.yy"5451 case 93: 5452 5453 /* Line 1806 of yacc.c */ 5454 #line 563 "parser.yy" 5441 5455 { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5442 5456 break; 5443 5457 5444 case 9 4:5445 5446 /* Line 1806 of yacc.c */ 5447 #line 56 8"parser.yy"5458 case 95: 5459 5460 /* Line 1806 of yacc.c */ 5461 #line 569 "parser.yy" 5448 5462 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); } 5449 5463 break; 5450 5464 5451 case 9 6:5452 5453 /* Line 1806 of yacc.c */ 5454 #line 57 4"parser.yy"5465 case 97: 5466 5467 /* Line 1806 of yacc.c */ 5468 #line 575 "parser.yy" 5455 5469 { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); } 5456 5470 break; 5457 5471 5458 case 9 8:5459 5460 /* Line 1806 of yacc.c */ 5461 #line 58 0"parser.yy"5472 case 99: 5473 5474 /* Line 1806 of yacc.c */ 5475 #line 581 "parser.yy" 5462 5476 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 5463 5477 break; 5464 5478 5465 case 99:5466 5467 /* Line 1806 of yacc.c */ 5468 #line 58 3"parser.yy"5479 case 100: 5480 5481 /* Line 1806 of yacc.c */ 5482 #line 584 "parser.yy" 5469 5483 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); } 5470 5484 break; 5471 5485 5472 case 10 0:5473 5474 /* Line 1806 of yacc.c */ 5475 #line 58 5"parser.yy"5486 case 101: 5487 5488 /* Line 1806 of yacc.c */ 5489 #line 586 "parser.yy" 5476 5490 { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); } 5477 5491 break; 5478 5492 5479 case 10 3:5480 5481 /* Line 1806 of yacc.c */ 5482 #line 59 6"parser.yy"5493 case 104: 5494 5495 /* Line 1806 of yacc.c */ 5496 #line 597 "parser.yy" 5483 5497 { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5484 5498 break; 5485 5499 5486 case 10 4:5487 5488 /* Line 1806 of yacc.c */ 5489 #line 59 8"parser.yy"5500 case 105: 5501 5502 /* Line 1806 of yacc.c */ 5503 #line 599 "parser.yy" 5490 5504 { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); } 5491 5505 break; 5492 5506 5493 case 10 5:5494 5495 /* Line 1806 of yacc.c */ 5496 #line 60 3"parser.yy"5507 case 106: 5508 5509 /* Line 1806 of yacc.c */ 5510 #line 604 "parser.yy" 5497 5511 { (yyval.en) = nullptr; } 5498 5512 break; 5499 5513 5500 case 10 7:5501 5502 /* Line 1806 of yacc.c */ 5503 #line 60 8"parser.yy"5514 case 108: 5515 5516 /* Line 1806 of yacc.c */ 5517 #line 609 "parser.yy" 5504 5518 { (yyval.op) = OperKinds::Assign; } 5505 5519 break; 5506 5520 5507 case 108: 5508 5509 /* Line 1806 of yacc.c */ 5510 #line 609 "parser.yy" 5521 case 109: 5522 5523 /* Line 1806 of yacc.c */ 5524 #line 610 "parser.yy" 5525 { (yyval.op) = OperKinds::AtAssn; } 5526 break; 5527 5528 case 110: 5529 5530 /* Line 1806 of yacc.c */ 5531 #line 611 "parser.yy" 5511 5532 { (yyval.op) = OperKinds::MulAssn; } 5512 5533 break; 5513 5534 5514 case 1 09:5515 5516 /* Line 1806 of yacc.c */ 5517 #line 61 0"parser.yy"5535 case 111: 5536 5537 /* Line 1806 of yacc.c */ 5538 #line 612 "parser.yy" 5518 5539 { (yyval.op) = OperKinds::DivAssn; } 5519 5540 break; 5520 5541 5521 case 11 0:5522 5523 /* Line 1806 of yacc.c */ 5524 #line 61 1"parser.yy"5542 case 112: 5543 5544 /* Line 1806 of yacc.c */ 5545 #line 613 "parser.yy" 5525 5546 { (yyval.op) = OperKinds::ModAssn; } 5526 5547 break; 5527 5548 5528 case 11 1:5529 5530 /* Line 1806 of yacc.c */ 5531 #line 61 2"parser.yy"5549 case 113: 5550 5551 /* Line 1806 of yacc.c */ 5552 #line 614 "parser.yy" 5532 5553 { (yyval.op) = OperKinds::PlusAssn; } 5533 5554 break; 5534 5555 5535 case 11 2:5536 5537 /* Line 1806 of yacc.c */ 5538 #line 61 3"parser.yy"5556 case 114: 5557 5558 /* Line 1806 of yacc.c */ 5559 #line 615 "parser.yy" 5539 5560 { (yyval.op) = OperKinds::MinusAssn; } 5540 5561 break; 5541 5562 5542 case 11 3:5543 5544 /* Line 1806 of yacc.c */ 5545 #line 61 4"parser.yy"5563 case 115: 5564 5565 /* Line 1806 of yacc.c */ 5566 #line 616 "parser.yy" 5546 5567 { (yyval.op) = OperKinds::LSAssn; } 5547 5568 break; 5548 5569 5549 case 11 4:5550 5551 /* Line 1806 of yacc.c */ 5552 #line 61 5"parser.yy"5570 case 116: 5571 5572 /* Line 1806 of yacc.c */ 5573 #line 617 "parser.yy" 5553 5574 { (yyval.op) = OperKinds::RSAssn; } 5554 5575 break; 5555 5576 5556 case 11 5:5557 5558 /* Line 1806 of yacc.c */ 5559 #line 61 6"parser.yy"5577 case 117: 5578 5579 /* Line 1806 of yacc.c */ 5580 #line 618 "parser.yy" 5560 5581 { (yyval.op) = OperKinds::AndAssn; } 5561 5582 break; 5562 5583 5563 case 11 6:5564 5565 /* Line 1806 of yacc.c */ 5566 #line 61 7"parser.yy"5584 case 118: 5585 5586 /* Line 1806 of yacc.c */ 5587 #line 619 "parser.yy" 5567 5588 { (yyval.op) = OperKinds::ERAssn; } 5568 5589 break; 5569 5590 5570 case 11 7:5571 5572 /* Line 1806 of yacc.c */ 5573 #line 6 18"parser.yy"5591 case 119: 5592 5593 /* Line 1806 of yacc.c */ 5594 #line 620 "parser.yy" 5574 5595 { (yyval.op) = OperKinds::OrAssn; } 5575 5596 break; 5576 5597 5577 case 1 18:5578 5579 /* Line 1806 of yacc.c */ 5580 #line 62 5"parser.yy"5598 case 120: 5599 5600 /* Line 1806 of yacc.c */ 5601 #line 627 "parser.yy" 5581 5602 { (yyval.en) = new ExpressionNode( build_tuple() ); } 5582 5603 break; 5583 5604 5584 case 1 19:5585 5586 /* Line 1806 of yacc.c */ 5587 #line 62 7"parser.yy"5605 case 121: 5606 5607 /* Line 1806 of yacc.c */ 5608 #line 629 "parser.yy" 5588 5609 { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); } 5589 5610 break; 5590 5611 5591 case 120: 5592 5593 /* Line 1806 of yacc.c */ 5594 #line 629 "parser.yy" 5595 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_link( (yyvsp[(4) - (6)].en) ) ) ); } 5596 break; 5597 5598 case 121: 5612 case 122: 5599 5613 5600 5614 /* Line 1806 of yacc.c */ 5601 5615 #line 631 "parser.yy" 5602 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)( yyvsp[(3) - (7)].en)->set_link( (yyvsp[(5) - (7)].en) ) ) ); }5616 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); } 5603 5617 break; 5604 5618 … … 5606 5620 5607 5621 /* Line 1806 of yacc.c */ 5608 #line 63 7"parser.yy"5609 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }5622 #line 633 "parser.yy" 5623 { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); } 5610 5624 break; 5611 5625 … … 5613 5627 5614 5628 /* Line 1806 of yacc.c */ 5615 #line 643 "parser.yy" 5629 #line 639 "parser.yy" 5630 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 5631 break; 5632 5633 case 127: 5634 5635 /* Line 1806 of yacc.c */ 5636 #line 645 "parser.yy" 5616 5637 { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5617 5638 break; 5618 5639 5619 case 12 6:5620 5621 /* Line 1806 of yacc.c */ 5622 #line 6 48"parser.yy"5640 case 128: 5641 5642 /* Line 1806 of yacc.c */ 5643 #line 650 "parser.yy" 5623 5644 { (yyval.en) = 0; } 5624 5645 break; 5625 5646 5626 case 13 0:5627 5628 /* Line 1806 of yacc.c */ 5629 #line 65 7"parser.yy"5647 case 132: 5648 5649 /* Line 1806 of yacc.c */ 5650 #line 659 "parser.yy" 5630 5651 { (yyval.sn) = (yyvsp[(1) - (1)].sn); } 5631 5652 break; 5632 5653 5633 case 13 6:5634 5635 /* Line 1806 of yacc.c */ 5636 #line 66 4"parser.yy"5654 case 138: 5655 5656 /* Line 1806 of yacc.c */ 5657 #line 666 "parser.yy" 5637 5658 { 5638 5659 Token fn; 5639 5660 fn.str = new std::string( "^?{}" ); // location undefined 5640 (yyval.sn) = new StatementNode 2( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ) ) ) );5661 (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) ); 5641 5662 } 5642 5663 break; 5643 5664 5644 case 13 7:5645 5646 /* Line 1806 of yacc.c */ 5647 #line 67 4"parser.yy"5665 case 139: 5666 5667 /* Line 1806 of yacc.c */ 5668 #line 676 "parser.yy" 5648 5669 { 5649 5670 (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) ); … … 5651 5672 break; 5652 5673 5653 case 138: 5654 5655 /* Line 1806 of yacc.c */ 5656 #line 681 "parser.yy" 5657 { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); } 5658 break; 5659 5660 case 139: 5661 5662 /* Line 1806 of yacc.c */ 5663 #line 688 "parser.yy" 5664 { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); } 5674 case 140: 5675 5676 /* Line 1806 of yacc.c */ 5677 #line 683 "parser.yy" 5678 { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); } 5665 5679 break; 5666 5680 … … 5668 5682 5669 5683 /* Line 1806 of yacc.c */ 5670 #line 694 "parser.yy" 5671 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5672 break; 5673 5674 case 142: 5675 5676 /* Line 1806 of yacc.c */ 5677 #line 699 "parser.yy" 5684 #line 690 "parser.yy" 5685 { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); } 5686 break; 5687 5688 case 143: 5689 5690 /* Line 1806 of yacc.c */ 5691 #line 696 "parser.yy" 5692 { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } } 5693 break; 5694 5695 case 144: 5696 5697 /* Line 1806 of yacc.c */ 5698 #line 701 "parser.yy" 5678 5699 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5679 5700 break; 5680 5701 5681 case 14 3:5682 5683 /* Line 1806 of yacc.c */ 5684 #line 70 1"parser.yy"5702 case 145: 5703 5704 /* Line 1806 of yacc.c */ 5705 #line 703 "parser.yy" 5685 5706 { // mark all fields in list 5686 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )5707 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) 5687 5708 iter->set_extension( true ); 5688 5709 (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); … … 5690 5711 break; 5691 5712 5692 case 14 4:5693 5694 /* Line 1806 of yacc.c */ 5695 #line 70 7"parser.yy"5713 case 146: 5714 5715 /* Line 1806 of yacc.c */ 5716 #line 709 "parser.yy" 5696 5717 { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); } 5697 5718 break; 5698 5719 5699 case 147:5700 5701 /* Line 1806 of yacc.c */5702 #line 714 "parser.yy"5703 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }5704 break;5705 5706 case 148:5707 5708 /* Line 1806 of yacc.c */5709 #line 719 "parser.yy"5710 { (yyval.sn) = new StatementNode2( build_expr( (yyvsp[(1) - (2)].en) ) ); }5711 break;5712 5713 5720 case 149: 5714 5721 5715 5722 /* Line 1806 of yacc.c */ 5716 #line 7 25"parser.yy"5717 { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) );}5723 #line 716 "parser.yy" 5724 { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } } 5718 5725 break; 5719 5726 … … 5721 5728 5722 5729 /* Line 1806 of yacc.c */ 5730 #line 721 "parser.yy" 5731 { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); } 5732 break; 5733 5734 case 151: 5735 5736 /* Line 1806 of yacc.c */ 5723 5737 #line 727 "parser.yy" 5724 { (yyval.sn) = new StatementNode 2( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn)) ); }5725 break; 5726 5727 case 15 1:5738 { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); } 5739 break; 5740 5741 case 152: 5728 5742 5729 5743 /* Line 1806 of yacc.c */ 5730 5744 #line 729 "parser.yy" 5731 { (yyval.sn) = new StatementNode 2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }5732 break; 5733 5734 case 15 2:5745 { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); } 5746 break; 5747 5748 case 153: 5735 5749 5736 5750 /* Line 1806 of yacc.c */ 5737 5751 #line 731 "parser.yy" 5752 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5753 break; 5754 5755 case 154: 5756 5757 /* Line 1806 of yacc.c */ 5758 #line 733 "parser.yy" 5738 5759 { 5739 StatementNode *sw = new StatementNode 2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );5760 StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); 5740 5761 // The semantics of the declaration list is changed to include associated initialization, which is performed 5741 5762 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound … … 5743 5764 // therefore, are removed from the grammar even though C allows it. The change also applies to choose 5744 5765 // statement. 5745 (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;5766 (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw; 5746 5767 } 5747 5768 break; 5748 5769 5749 case 153: 5750 5751 /* Line 1806 of yacc.c */ 5752 #line 741 "parser.yy" 5753 { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5754 break; 5755 5756 case 154: 5770 case 155: 5757 5771 5758 5772 /* Line 1806 of yacc.c */ 5759 5773 #line 743 "parser.yy" 5774 { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5775 break; 5776 5777 case 156: 5778 5779 /* Line 1806 of yacc.c */ 5780 #line 745 "parser.yy" 5760 5781 { 5761 StatementNode *sw = new StatementNode 2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );5762 (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;5782 StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) ); 5783 (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw; 5763 5784 } 5764 5785 break; 5765 5786 5766 case 15 5:5767 5768 /* Line 1806 of yacc.c */ 5769 #line 75 3"parser.yy"5787 case 157: 5788 5789 /* Line 1806 of yacc.c */ 5790 #line 755 "parser.yy" 5770 5791 { (yyval.en) = (yyvsp[(1) - (1)].en); } 5771 5792 break; 5772 5793 5773 case 15 6:5774 5775 /* Line 1806 of yacc.c */ 5776 #line 75 5"parser.yy"5794 case 158: 5795 5796 /* Line 1806 of yacc.c */ 5797 #line 757 "parser.yy" 5777 5798 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 5778 5799 break; 5779 5800 5780 case 158:5781 5782 /* Line 1806 of yacc.c */5783 #line 761 "parser.yy"5784 { (yyval.sn) = new StatementNode2( build_case( (yyvsp[(1) - (1)].en) ) ); }5785 break;5786 5787 case 159:5788 5789 /* Line 1806 of yacc.c */5790 #line 763 "parser.yy"5791 { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode2( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }5792 break;5793 5794 5801 case 160: 5795 5802 5796 5803 /* Line 1806 of yacc.c */ 5797 #line 767 "parser.yy" 5804 #line 762 "parser.yy" 5805 { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); } 5806 break; 5807 5808 case 161: 5809 5810 /* Line 1806 of yacc.c */ 5811 #line 764 "parser.yy" 5812 { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); } 5813 break; 5814 5815 case 162: 5816 5817 /* Line 1806 of yacc.c */ 5818 #line 768 "parser.yy" 5798 5819 { (yyval.sn) = (yyvsp[(2) - (3)].sn); } 5799 5820 break; 5800 5821 5801 case 161:5802 5803 /* Line 1806 of yacc.c */5804 #line 768 "parser.yy"5805 { (yyval.sn) = new StatementNode2( build_default() ); }5806 break;5807 5808 5822 case 163: 5809 5823 5810 5824 /* Line 1806 of yacc.c */ 5811 #line 774 "parser.yy" 5812 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); } 5813 break; 5814 5815 case 164: 5816 5817 /* Line 1806 of yacc.c */ 5818 #line 778 "parser.yy" 5819 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); } 5825 #line 769 "parser.yy" 5826 { (yyval.sn) = new StatementNode( build_default() ); } 5820 5827 break; 5821 5828 … … 5823 5830 5824 5831 /* Line 1806 of yacc.c */ 5825 #line 783 "parser.yy" 5832 #line 775 "parser.yy" 5833 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); } 5834 break; 5835 5836 case 166: 5837 5838 /* Line 1806 of yacc.c */ 5839 #line 779 "parser.yy" 5840 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); } 5841 break; 5842 5843 case 167: 5844 5845 /* Line 1806 of yacc.c */ 5846 #line 784 "parser.yy" 5826 5847 { (yyval.sn) = 0; } 5827 5848 break; 5828 5849 5829 case 167:5830 5831 /* Line 1806 of yacc.c */5832 #line 789 "parser.yy"5833 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }5834 break;5835 5836 case 168:5837 5838 /* Line 1806 of yacc.c */5839 #line 791 "parser.yy"5840 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }5841 break;5842 5843 5850 case 169: 5844 5851 5845 5852 /* Line 1806 of yacc.c */ 5846 #line 796 "parser.yy" 5853 #line 790 "parser.yy" 5854 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); } 5855 break; 5856 5857 case 170: 5858 5859 /* Line 1806 of yacc.c */ 5860 #line 792 "parser.yy" 5861 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); } 5862 break; 5863 5864 case 171: 5865 5866 /* Line 1806 of yacc.c */ 5867 #line 797 "parser.yy" 5847 5868 { (yyval.sn) = 0; } 5848 5869 break; 5849 5870 5850 case 17 1:5851 5852 /* Line 1806 of yacc.c */ 5853 #line 80 2"parser.yy"5871 case 173: 5872 5873 /* Line 1806 of yacc.c */ 5874 #line 803 "parser.yy" 5854 5875 { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); } 5855 5876 break; 5856 5877 5857 case 172:5858 5859 /* Line 1806 of yacc.c */5860 #line 804 "parser.yy"5861 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }5862 break;5863 5864 case 173:5865 5866 /* Line 1806 of yacc.c */5867 #line 806 "parser.yy"5868 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }5869 break;5870 5871 5878 case 174: 5872 5879 5873 5880 /* Line 1806 of yacc.c */ 5874 #line 80 8"parser.yy"5875 { (yyval.sn) = ( StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) )) ) ) ) ); }5881 #line 805 "parser.yy" 5882 { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); } 5876 5883 break; 5877 5884 … … 5879 5886 5880 5887 /* Line 1806 of yacc.c */ 5881 #line 813 "parser.yy" 5882 { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); } 5888 #line 807 "parser.yy" 5889 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); } 5890 break; 5891 5892 case 176: 5893 5894 /* Line 1806 of yacc.c */ 5895 #line 809 "parser.yy" 5896 { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); } 5883 5897 break; 5884 5898 … … 5886 5900 5887 5901 /* Line 1806 of yacc.c */ 5888 #line 819 "parser.yy" 5902 #line 814 "parser.yy" 5903 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); } 5904 break; 5905 5906 case 179: 5907 5908 /* Line 1806 of yacc.c */ 5909 #line 820 "parser.yy" 5889 5910 { (yyval.sn) = 0; } 5890 5911 break; 5891 5912 5892 case 1 78:5893 5894 /* Line 1806 of yacc.c */ 5895 #line 82 1"parser.yy"5913 case 180: 5914 5915 /* Line 1806 of yacc.c */ 5916 #line 822 "parser.yy" 5896 5917 { (yyval.sn) = 0; } 5897 5918 break; 5898 5919 5899 case 179:5900 5901 /* Line 1806 of yacc.c */5902 #line 826 "parser.yy"5903 { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }5904 break;5905 5906 case 180:5907 5908 /* Line 1806 of yacc.c */5909 #line 828 "parser.yy"5910 { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }5911 break;5912 5913 5920 case 181: 5914 5921 5915 5922 /* Line 1806 of yacc.c */ 5916 #line 8 30"parser.yy"5917 { (yyval.sn) = new StatementNode 2( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }5923 #line 827 "parser.yy" 5924 { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); } 5918 5925 break; 5919 5926 … … 5921 5928 5922 5929 /* Line 1806 of yacc.c */ 5923 #line 835 "parser.yy" 5930 #line 829 "parser.yy" 5931 { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); } 5932 break; 5933 5934 case 183: 5935 5936 /* Line 1806 of yacc.c */ 5937 #line 831 "parser.yy" 5938 { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); } 5939 break; 5940 5941 case 184: 5942 5943 /* Line 1806 of yacc.c */ 5944 #line 836 "parser.yy" 5924 5945 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); } 5925 5946 break; 5926 5947 5927 case 18 3:5928 5929 /* Line 1806 of yacc.c */ 5930 #line 83 7"parser.yy"5948 case 185: 5949 5950 /* Line 1806 of yacc.c */ 5951 #line 838 "parser.yy" 5931 5952 { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); } 5932 5953 break; 5933 5954 5934 case 184:5935 5936 /* Line 1806 of yacc.c */5937 #line 842 "parser.yy"5938 { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }5939 break;5940 5941 case 185:5942 5943 /* Line 1806 of yacc.c */5944 #line 846 "parser.yy"5945 { (yyval.sn) = new StatementNode2( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }5946 break;5947 5948 5955 case 186: 5949 5956 5950 5957 /* Line 1806 of yacc.c */ 5951 #line 84 9"parser.yy"5952 { (yyval.sn) = new StatementNode 2( build_branch( "", BranchStmt::Continue) ); }5958 #line 843 "parser.yy" 5959 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); } 5953 5960 break; 5954 5961 … … 5956 5963 5957 5964 /* Line 1806 of yacc.c */ 5958 #line 8 53"parser.yy"5959 { (yyval.sn) = new StatementNode 2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); delete (yyvsp[(2) - (3)].tok); }5965 #line 847 "parser.yy" 5966 { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); } 5960 5967 break; 5961 5968 … … 5963 5970 5964 5971 /* Line 1806 of yacc.c */ 5965 #line 85 6"parser.yy"5966 { (yyval.sn) = new StatementNode 2( build_branch( "", BranchStmt::Break) ); }5972 #line 850 "parser.yy" 5973 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); } 5967 5974 break; 5968 5975 … … 5970 5977 5971 5978 /* Line 1806 of yacc.c */ 5972 #line 8 60"parser.yy"5973 { (yyval.sn) = new StatementNode 2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); }5979 #line 854 "parser.yy" 5980 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); } 5974 5981 break; 5975 5982 … … 5977 5984 5978 5985 /* Line 1806 of yacc.c */ 5979 #line 8 62"parser.yy"5980 { (yyval.sn) = new StatementNode 2( build_return( (yyvsp[(2) - (3)].en)) ); }5986 #line 857 "parser.yy" 5987 { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); } 5981 5988 break; 5982 5989 … … 5984 5991 5985 5992 /* Line 1806 of yacc.c */ 5986 #line 86 4"parser.yy"5987 { (yyval.sn) = new StatementNode 2( build_throw( (yyvsp[(2) - (3)].en)) ); }5993 #line 861 "parser.yy" 5994 { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); } 5988 5995 break; 5989 5996 … … 5991 5998 5992 5999 /* Line 1806 of yacc.c */ 5993 #line 86 6"parser.yy"5994 { (yyval.sn) = new StatementNode 2( build_throw( (yyvsp[(2) - (3)].en) ) ); }6000 #line 863 "parser.yy" 6001 { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); } 5995 6002 break; 5996 6003 … … 5998 6005 5999 6006 /* Line 1806 of yacc.c */ 6000 #line 86 8"parser.yy"6001 { (yyval.sn) = new StatementNode 2( build_throw( (yyvsp[(2) - (5)].en) ) ); }6007 #line 865 "parser.yy" 6008 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); } 6002 6009 break; 6003 6010 … … 6005 6012 6006 6013 /* Line 1806 of yacc.c */ 6007 #line 8 73"parser.yy"6008 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }6014 #line 867 "parser.yy" 6015 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); } 6009 6016 break; 6010 6017 … … 6012 6019 6013 6020 /* Line 1806 of yacc.c */ 6014 #line 8 75"parser.yy"6015 { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }6021 #line 869 "parser.yy" 6022 { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); } 6016 6023 break; 6017 6024 … … 6019 6026 6020 6027 /* Line 1806 of yacc.c */ 6021 #line 877 "parser.yy" 6028 #line 874 "parser.yy" 6029 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); } 6030 break; 6031 6032 case 197: 6033 6034 /* Line 1806 of yacc.c */ 6035 #line 876 "parser.yy" 6036 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); } 6037 break; 6038 6039 case 198: 6040 6041 /* Line 1806 of yacc.c */ 6042 #line 878 "parser.yy" 6043 { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); } 6044 break; 6045 6046 case 200: 6047 6048 /* Line 1806 of yacc.c */ 6049 #line 885 "parser.yy" 6050 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); } 6051 break; 6052 6053 case 201: 6054 6055 /* Line 1806 of yacc.c */ 6056 #line 887 "parser.yy" 6057 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); } 6058 break; 6059 6060 case 202: 6061 6062 /* Line 1806 of yacc.c */ 6063 #line 889 "parser.yy" 6064 { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); } 6065 break; 6066 6067 case 203: 6068 6069 /* Line 1806 of yacc.c */ 6070 #line 891 "parser.yy" 6071 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); } 6072 break; 6073 6074 case 204: 6075 6076 /* Line 1806 of yacc.c */ 6077 #line 896 "parser.yy" 6078 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); } 6079 break; 6080 6081 case 205: 6082 6083 /* Line 1806 of yacc.c */ 6084 #line 898 "parser.yy" 6085 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); } 6086 break; 6087 6088 case 206: 6089 6090 /* Line 1806 of yacc.c */ 6091 #line 900 "parser.yy" 6092 { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); } 6093 break; 6094 6095 case 207: 6096 6097 /* Line 1806 of yacc.c */ 6098 #line 902 "parser.yy" 6099 { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); } 6100 break; 6101 6102 case 208: 6103 6104 /* Line 1806 of yacc.c */ 6105 #line 907 "parser.yy" 6022 6106 { 6023 (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) ); 6024 (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (4)].sn),*(yyvsp[(3) - (4)].pn) )))); 6107 (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) ); 6025 6108 } 6026 6109 break; 6027 6110 6028 case 198: 6029 6030 /* Line 1806 of yacc.c */ 6031 #line 888 "parser.yy" 6032 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6033 break; 6034 6035 case 199: 6036 6037 /* Line 1806 of yacc.c */ 6038 #line 890 "parser.yy" 6039 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6040 break; 6041 6042 case 200: 6043 6044 /* Line 1806 of yacc.c */ 6045 #line 892 "parser.yy" 6046 { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); } 6047 break; 6048 6049 case 201: 6050 6051 /* Line 1806 of yacc.c */ 6052 #line 894 "parser.yy" 6053 { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); } 6054 break; 6055 6056 case 202: 6057 6058 /* Line 1806 of yacc.c */ 6059 #line 899 "parser.yy" 6060 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6061 break; 6062 6063 case 203: 6064 6065 /* Line 1806 of yacc.c */ 6066 #line 901 "parser.yy" 6067 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6068 break; 6069 6070 case 204: 6071 6072 /* Line 1806 of yacc.c */ 6073 #line 903 "parser.yy" 6074 { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); } 6075 break; 6076 6077 case 205: 6078 6079 /* Line 1806 of yacc.c */ 6080 #line 905 "parser.yy" 6081 { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); } 6082 break; 6083 6084 case 206: 6085 6086 /* Line 1806 of yacc.c */ 6087 #line 910 "parser.yy" 6088 { 6089 (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) ); 6090 std::cout << "Just created a finally node" << std::endl; 6091 } 6092 break; 6093 6094 case 208: 6095 6096 /* Line 1806 of yacc.c */ 6097 #line 924 "parser.yy" 6111 case 210: 6112 6113 /* Line 1806 of yacc.c */ 6114 #line 920 "parser.yy" 6098 6115 { 6099 6116 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6102 6119 break; 6103 6120 6104 case 2 09:6105 6106 /* Line 1806 of yacc.c */ 6107 #line 92 9"parser.yy"6121 case 211: 6122 6123 /* Line 1806 of yacc.c */ 6124 #line 925 "parser.yy" 6108 6125 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); } 6109 6126 break; 6110 6127 6111 case 21 0:6112 6113 /* Line 1806 of yacc.c */ 6114 #line 9 31"parser.yy"6128 case 212: 6129 6130 /* Line 1806 of yacc.c */ 6131 #line 927 "parser.yy" 6115 6132 { 6116 6133 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6119 6136 break; 6120 6137 6121 case 212: 6138 case 214: 6139 6140 /* Line 1806 of yacc.c */ 6141 #line 936 "parser.yy" 6142 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); } 6143 break; 6144 6145 case 215: 6146 6147 /* Line 1806 of yacc.c */ 6148 #line 938 "parser.yy" 6149 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); } 6150 break; 6151 6152 case 216: 6122 6153 6123 6154 /* Line 1806 of yacc.c */ 6124 6155 #line 940 "parser.yy" 6125 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0); }6126 break; 6127 6128 case 21 3:6156 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); } 6157 break; 6158 6159 case 217: 6129 6160 6130 6161 /* Line 1806 of yacc.c */ 6131 6162 #line 942 "parser.yy" 6132 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }6133 break; 6134 6135 case 21 4:6163 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); } 6164 break; 6165 6166 case 218: 6136 6167 6137 6168 /* Line 1806 of yacc.c */ 6138 6169 #line 944 "parser.yy" 6139 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); } 6140 break; 6141 6142 case 215: 6143 6144 /* Line 1806 of yacc.c */ 6145 #line 946 "parser.yy" 6146 { (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)].en) ); } 6147 break; 6148 6149 case 216: 6150 6151 /* Line 1806 of yacc.c */ 6152 #line 948 "parser.yy" 6153 { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); } 6154 break; 6155 6156 case 217: 6157 6158 /* Line 1806 of yacc.c */ 6159 #line 953 "parser.yy" 6170 { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); } 6171 break; 6172 6173 case 219: 6174 6175 /* Line 1806 of yacc.c */ 6176 #line 949 "parser.yy" 6160 6177 { (yyval.flag) = false; } 6161 6178 break; 6162 6179 6163 case 2 18:6164 6165 /* Line 1806 of yacc.c */ 6166 #line 95 5"parser.yy"6180 case 220: 6181 6182 /* Line 1806 of yacc.c */ 6183 #line 951 "parser.yy" 6167 6184 { (yyval.flag) = true; } 6168 6185 break; 6169 6186 6170 case 2 19:6171 6172 /* Line 1806 of yacc.c */ 6173 #line 9 60"parser.yy"6187 case 221: 6188 6189 /* Line 1806 of yacc.c */ 6190 #line 956 "parser.yy" 6174 6191 { (yyval.en) = 0; } 6175 6192 break; 6176 6193 6177 case 222:6178 6179 /* Line 1806 of yacc.c */6180 #line 967 "parser.yy"6181 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }6182 break;6183 6184 case 223:6185 6186 /* Line 1806 of yacc.c */6187 #line 972 "parser.yy"6188 { (yyval.en) = new ExpressionNode( build_asm( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }6189 break;6190 6191 6194 case 224: 6192 6195 6193 6196 /* Line 1806 of yacc.c */ 6194 #line 9 74"parser.yy"6195 { (yyval.en) = new ExpressionNode( build_asm( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en)) ); }6197 #line 963 "parser.yy" 6198 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); } 6196 6199 break; 6197 6200 … … 6199 6202 6200 6203 /* Line 1806 of yacc.c */ 6204 #line 968 "parser.yy" 6205 { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); } 6206 break; 6207 6208 case 226: 6209 6210 /* Line 1806 of yacc.c */ 6211 #line 970 "parser.yy" 6212 { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); } 6213 break; 6214 6215 case 227: 6216 6217 /* Line 1806 of yacc.c */ 6218 #line 975 "parser.yy" 6219 { (yyval.en) = 0; } 6220 break; 6221 6222 case 228: 6223 6224 /* Line 1806 of yacc.c */ 6225 #line 977 "parser.yy" 6226 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 6227 break; 6228 6229 case 229: 6230 6231 /* Line 1806 of yacc.c */ 6201 6232 #line 979 "parser.yy" 6202 { (yyval.en) = 0; } 6203 break; 6204 6205 case 226: 6206 6207 /* Line 1806 of yacc.c */ 6208 #line 981 "parser.yy" 6209 { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); } 6210 break; 6211 6212 case 227: 6213 6214 /* Line 1806 of yacc.c */ 6215 #line 983 "parser.yy" 6216 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); } 6217 break; 6218 6219 case 228: 6220 6221 /* Line 1806 of yacc.c */ 6222 #line 988 "parser.yy" 6223 { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); } 6224 break; 6225 6226 case 229: 6227 6228 /* Line 1806 of yacc.c */ 6229 #line 990 "parser.yy" 6230 { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); } 6233 { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); } 6231 6234 break; 6232 6235 … … 6234 6237 6235 6238 /* Line 1806 of yacc.c */ 6236 #line 997 "parser.yy" 6239 #line 984 "parser.yy" 6240 { 6241 (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) ); 6242 delete (yyvsp[(1) - (1)].tok); // allocated by lexer 6243 } 6244 break; 6245 6246 case 231: 6247 6248 /* Line 1806 of yacc.c */ 6249 #line 989 "parser.yy" 6250 { 6251 (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) ); 6252 delete (yyvsp[(3) - (3)].tok); // allocated by lexer 6253 } 6254 break; 6255 6256 case 232: 6257 6258 /* Line 1806 of yacc.c */ 6259 #line 999 "parser.yy" 6237 6260 { (yyval.decl) = 0; } 6238 6261 break; 6239 6262 6240 case 23 3:6241 6242 /* Line 1806 of yacc.c */ 6243 #line 100 4"parser.yy"6263 case 235: 6264 6265 /* Line 1806 of yacc.c */ 6266 #line 1006 "parser.yy" 6244 6267 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6245 6268 break; 6246 6269 6247 case 23 4:6248 6249 /* Line 1806 of yacc.c */ 6250 #line 10 09"parser.yy"6270 case 236: 6271 6272 /* Line 1806 of yacc.c */ 6273 #line 1011 "parser.yy" 6251 6274 { (yyval.decl) = 0; } 6252 6275 break; 6253 6276 6254 case 23 7:6255 6256 /* Line 1806 of yacc.c */ 6257 #line 101 6"parser.yy"6277 case 239: 6278 6279 /* Line 1806 of yacc.c */ 6280 #line 1018 "parser.yy" 6258 6281 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 6259 6282 break; 6260 6283 6261 case 24 2:6262 6263 /* Line 1806 of yacc.c */ 6264 #line 103 0"parser.yy"6284 case 244: 6285 6286 /* Line 1806 of yacc.c */ 6287 #line 1032 "parser.yy" 6265 6288 {} 6266 6289 break; 6267 6290 6268 case 24 3:6269 6270 /* Line 1806 of yacc.c */ 6271 #line 103 1"parser.yy"6291 case 245: 6292 6293 /* Line 1806 of yacc.c */ 6294 #line 1033 "parser.yy" 6272 6295 {} 6273 6296 break; 6274 6297 6275 case 25 1:6276 6277 /* Line 1806 of yacc.c */ 6278 #line 106 0"parser.yy"6298 case 253: 6299 6300 /* Line 1806 of yacc.c */ 6301 #line 1062 "parser.yy" 6279 6302 { 6280 6303 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6283 6306 break; 6284 6307 6285 case 25 2:6286 6287 /* Line 1806 of yacc.c */ 6288 #line 106 7"parser.yy"6308 case 254: 6309 6310 /* Line 1806 of yacc.c */ 6311 #line 1069 "parser.yy" 6289 6312 { 6290 6313 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6293 6316 break; 6294 6317 6295 case 25 3:6296 6297 /* Line 1806 of yacc.c */ 6298 #line 107 2"parser.yy"6318 case 255: 6319 6320 /* Line 1806 of yacc.c */ 6321 #line 1074 "parser.yy" 6299 6322 { 6300 6323 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID ); … … 6303 6326 break; 6304 6327 6305 case 25 4:6306 6307 /* Line 1806 of yacc.c */ 6308 #line 108 2"parser.yy"6328 case 256: 6329 6330 /* Line 1806 of yacc.c */ 6331 #line 1084 "parser.yy" 6309 6332 { 6310 6333 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6313 6336 break; 6314 6337 6315 case 25 5:6316 6317 /* Line 1806 of yacc.c */ 6318 #line 108 7"parser.yy"6338 case 257: 6339 6340 /* Line 1806 of yacc.c */ 6341 #line 1089 "parser.yy" 6319 6342 { 6320 6343 typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) ); … … 6323 6346 break; 6324 6347 6325 case 25 6:6326 6327 /* Line 1806 of yacc.c */ 6328 #line 109 2"parser.yy"6348 case 258: 6349 6350 /* Line 1806 of yacc.c */ 6351 #line 1094 "parser.yy" 6329 6352 { 6330 6353 typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) ); … … 6333 6356 break; 6334 6357 6335 case 25 7:6336 6337 /* Line 1806 of yacc.c */ 6338 #line 110 0"parser.yy"6358 case 259: 6359 6360 /* Line 1806 of yacc.c */ 6361 #line 1102 "parser.yy" 6339 6362 { 6340 6363 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6343 6366 break; 6344 6367 6345 case 2 58:6346 6347 /* Line 1806 of yacc.c */ 6348 #line 110 5"parser.yy"6368 case 260: 6369 6370 /* Line 1806 of yacc.c */ 6371 #line 1107 "parser.yy" 6349 6372 { 6350 6373 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6353 6376 break; 6354 6377 6355 case 2 59:6356 6357 /* Line 1806 of yacc.c */ 6358 #line 111 0"parser.yy"6378 case 261: 6379 6380 /* Line 1806 of yacc.c */ 6381 #line 1112 "parser.yy" 6359 6382 { 6360 6383 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6363 6386 break; 6364 6387 6365 case 26 0:6366 6367 /* Line 1806 of yacc.c */ 6368 #line 111 5"parser.yy"6388 case 262: 6389 6390 /* Line 1806 of yacc.c */ 6391 #line 1117 "parser.yy" 6369 6392 { 6370 6393 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6373 6396 break; 6374 6397 6375 case 26 1:6376 6377 /* Line 1806 of yacc.c */ 6378 #line 112 0"parser.yy"6398 case 263: 6399 6400 /* Line 1806 of yacc.c */ 6401 #line 1122 "parser.yy" 6379 6402 { 6380 6403 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 6383 6406 break; 6384 6407 6385 case 26 2:6386 6387 /* Line 1806 of yacc.c */ 6388 #line 11 28"parser.yy"6408 case 264: 6409 6410 /* Line 1806 of yacc.c */ 6411 #line 1130 "parser.yy" 6389 6412 { 6390 6413 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true ); … … 6392 6415 break; 6393 6416 6394 case 26 3:6395 6396 /* Line 1806 of yacc.c */ 6397 #line 115 1"parser.yy"6417 case 265: 6418 6419 /* Line 1806 of yacc.c */ 6420 #line 1153 "parser.yy" 6398 6421 { 6399 6422 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6401 6424 break; 6402 6425 6403 case 26 4:6404 6405 /* Line 1806 of yacc.c */ 6406 #line 115 5"parser.yy"6426 case 266: 6427 6428 /* Line 1806 of yacc.c */ 6429 #line 1157 "parser.yy" 6407 6430 { 6408 6431 (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true ); … … 6410 6433 break; 6411 6434 6412 case 26 5:6413 6414 /* Line 1806 of yacc.c */ 6415 #line 116 2"parser.yy"6435 case 267: 6436 6437 /* Line 1806 of yacc.c */ 6438 #line 1164 "parser.yy" 6416 6439 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 6417 6440 break; 6418 6441 6419 case 26 6:6420 6421 /* Line 1806 of yacc.c */ 6422 #line 116 6"parser.yy"6442 case 268: 6443 6444 /* Line 1806 of yacc.c */ 6445 #line 1168 "parser.yy" 6423 6446 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); } 6424 6447 break; 6425 6448 6426 case 26 7:6427 6428 /* Line 1806 of yacc.c */ 6429 #line 117 1"parser.yy"6449 case 269: 6450 6451 /* Line 1806 of yacc.c */ 6452 #line 1173 "parser.yy" 6430 6453 { 6431 6454 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6434 6457 break; 6435 6458 6436 case 2 68:6437 6438 /* Line 1806 of yacc.c */ 6439 #line 117 6"parser.yy"6459 case 270: 6460 6461 /* Line 1806 of yacc.c */ 6462 #line 1178 "parser.yy" 6440 6463 { 6441 6464 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6444 6467 break; 6445 6468 6446 case 2 69:6447 6448 /* Line 1806 of yacc.c */ 6449 #line 118 1"parser.yy"6469 case 271: 6470 6471 /* Line 1806 of yacc.c */ 6472 #line 1183 "parser.yy" 6450 6473 { 6451 6474 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD ); … … 6454 6477 break; 6455 6478 6456 case 27 0:6457 6458 /* Line 1806 of yacc.c */ 6459 #line 119 2"parser.yy"6479 case 272: 6480 6481 /* Line 1806 of yacc.c */ 6482 #line 1194 "parser.yy" 6460 6483 { 6461 6484 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6464 6487 break; 6465 6488 6466 case 27 1:6467 6468 /* Line 1806 of yacc.c */ 6469 #line 119 7"parser.yy"6489 case 273: 6490 6491 /* Line 1806 of yacc.c */ 6492 #line 1199 "parser.yy" 6470 6493 { 6471 6494 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6474 6497 break; 6475 6498 6476 case 27 2:6477 6478 /* Line 1806 of yacc.c */ 6479 #line 120 2"parser.yy"6499 case 274: 6500 6501 /* Line 1806 of yacc.c */ 6502 #line 1204 "parser.yy" 6480 6503 { 6481 6504 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6484 6507 break; 6485 6508 6486 case 27 3:6487 6488 /* Line 1806 of yacc.c */ 6489 #line 120 7"parser.yy"6509 case 275: 6510 6511 /* Line 1806 of yacc.c */ 6512 #line 1209 "parser.yy" 6490 6513 { 6491 6514 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6494 6517 break; 6495 6518 6496 case 27 4:6497 6498 /* Line 1806 of yacc.c */ 6499 #line 121 2"parser.yy"6519 case 276: 6520 6521 /* Line 1806 of yacc.c */ 6522 #line 1214 "parser.yy" 6500 6523 { 6501 6524 typedefTable.addToEnclosingScope( TypedefTable::TD ); … … 6504 6527 break; 6505 6528 6506 case 27 5:6507 6508 /* Line 1806 of yacc.c */ 6509 #line 122 1"parser.yy"6529 case 277: 6530 6531 /* Line 1806 of yacc.c */ 6532 #line 1223 "parser.yy" 6510 6533 { 6511 6534 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD ); … … 6514 6537 break; 6515 6538 6516 case 27 6:6517 6518 /* Line 1806 of yacc.c */ 6519 #line 122 6"parser.yy"6539 case 278: 6540 6541 /* Line 1806 of yacc.c */ 6542 #line 1228 "parser.yy" 6520 6543 { 6521 6544 typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD ); … … 6524 6547 break; 6525 6548 6526 case 28 1:6527 6528 /* Line 1806 of yacc.c */ 6529 #line 124 3"parser.yy"6549 case 283: 6550 6551 /* Line 1806 of yacc.c */ 6552 #line 1245 "parser.yy" 6530 6553 { 6531 6554 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6534 6557 break; 6535 6558 6536 case 28 2:6537 6538 /* Line 1806 of yacc.c */ 6539 #line 12 48"parser.yy"6559 case 284: 6560 6561 /* Line 1806 of yacc.c */ 6562 #line 1250 "parser.yy" 6540 6563 { 6541 6564 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 6544 6567 break; 6545 6568 6546 case 29 1:6547 6548 /* Line 1806 of yacc.c */ 6549 #line 127 0"parser.yy"6569 case 293: 6570 6571 /* Line 1806 of yacc.c */ 6572 #line 1272 "parser.yy" 6550 6573 { (yyval.decl) = 0; } 6551 6574 break; 6552 6575 6553 case 29 4:6554 6555 /* Line 1806 of yacc.c */ 6556 #line 128 2"parser.yy"6576 case 296: 6577 6578 /* Line 1806 of yacc.c */ 6579 #line 1284 "parser.yy" 6557 6580 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6558 6581 break; 6559 6582 6560 case 29 7:6561 6562 /* Line 1806 of yacc.c */ 6563 #line 129 3"parser.yy"6583 case 299: 6584 6585 /* Line 1806 of yacc.c */ 6586 #line 1295 "parser.yy" 6564 6587 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); } 6565 6588 break; 6566 6589 6567 case 298:6568 6569 /* Line 1806 of yacc.c */ 6570 #line 129 5"parser.yy"6590 case 300: 6591 6592 /* Line 1806 of yacc.c */ 6593 #line 1297 "parser.yy" 6571 6594 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); } 6572 6595 break; 6573 6596 6574 case 299:6575 6576 /* Line 1806 of yacc.c */ 6577 #line 129 7"parser.yy"6597 case 301: 6598 6599 /* Line 1806 of yacc.c */ 6600 #line 1299 "parser.yy" 6578 6601 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); } 6579 6602 break; 6580 6603 6581 case 30 0:6582 6583 /* Line 1806 of yacc.c */ 6584 #line 1 299"parser.yy"6604 case 302: 6605 6606 /* Line 1806 of yacc.c */ 6607 #line 1301 "parser.yy" 6585 6608 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); } 6586 6609 break; 6587 6610 6588 case 30 1:6589 6590 /* Line 1806 of yacc.c */ 6591 #line 130 1"parser.yy"6611 case 303: 6612 6613 /* Line 1806 of yacc.c */ 6614 #line 1303 "parser.yy" 6592 6615 { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); } 6593 6616 break; 6594 6617 6595 case 30 2:6596 6597 /* Line 1806 of yacc.c */ 6598 #line 130 3"parser.yy"6618 case 304: 6619 6620 /* Line 1806 of yacc.c */ 6621 #line 1305 "parser.yy" 6599 6622 { 6600 6623 typedefTable.enterScope(); … … 6602 6625 break; 6603 6626 6604 case 30 3:6605 6606 /* Line 1806 of yacc.c */ 6607 #line 130 7"parser.yy"6627 case 305: 6628 6629 /* Line 1806 of yacc.c */ 6630 #line 1309 "parser.yy" 6608 6631 { 6609 6632 typedefTable.leaveScope(); … … 6612 6635 break; 6613 6636 6614 case 30 5:6615 6616 /* Line 1806 of yacc.c */ 6617 #line 131 6"parser.yy"6637 case 307: 6638 6639 /* Line 1806 of yacc.c */ 6640 #line 1318 "parser.yy" 6618 6641 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6619 6642 break; 6620 6643 6621 case 30 6:6622 6623 /* Line 1806 of yacc.c */ 6624 #line 13 18"parser.yy"6644 case 308: 6645 6646 /* Line 1806 of yacc.c */ 6647 #line 1320 "parser.yy" 6625 6648 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); } 6626 6649 break; 6627 6650 6628 case 3 08:6629 6630 /* Line 1806 of yacc.c */ 6631 #line 13 29"parser.yy"6651 case 310: 6652 6653 /* Line 1806 of yacc.c */ 6654 #line 1331 "parser.yy" 6632 6655 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 6633 6656 break; 6634 6657 6635 case 310: 6658 case 311: 6659 6660 /* Line 1806 of yacc.c */ 6661 #line 1336 "parser.yy" 6662 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } 6663 break; 6664 6665 case 312: 6636 6666 6637 6667 /* Line 1806 of yacc.c */ 6638 6668 #line 1338 "parser.yy" 6639 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode:: Extern); }6640 break; 6641 6642 case 31 1:6669 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); } 6670 break; 6671 6672 case 313: 6643 6673 6644 6674 /* Line 1806 of yacc.c */ 6645 6675 #line 1340 "parser.yy" 6646 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode:: Static); }6647 break; 6648 6649 case 31 2:6676 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); } 6677 break; 6678 6679 case 314: 6650 6680 6651 6681 /* Line 1806 of yacc.c */ 6652 6682 #line 1342 "parser.yy" 6653 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }6654 break;6655 6656 case 313:6657 6658 /* Line 1806 of yacc.c */6659 #line 1344 "parser.yy"6660 6683 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 6661 6684 break; 6662 6685 6663 case 314:6664 6665 /* Line 1806 of yacc.c */6666 #line 1346 "parser.yy"6667 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }6668 break;6669 6670 6686 case 315: 6671 6687 6672 6688 /* Line 1806 of yacc.c */ 6673 #line 1348 "parser.yy" 6689 #line 1345 "parser.yy" 6690 { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; } 6691 break; 6692 6693 case 316: 6694 6695 /* Line 1806 of yacc.c */ 6696 #line 1347 "parser.yy" 6674 6697 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 6675 6698 break; 6676 6699 6677 case 31 6:6700 case 317: 6678 6701 6679 6702 /* Line 1806 of yacc.c */ 6680 6703 #line 1350 "parser.yy" 6681 { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }6682 break; 6683 6684 case 31 7:6704 { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; } 6705 break; 6706 6707 case 318: 6685 6708 6686 6709 /* Line 1806 of yacc.c */ … … 6689 6712 break; 6690 6713 6691 case 31 8:6714 case 319: 6692 6715 6693 6716 /* Line 1806 of yacc.c */ … … 6696 6719 break; 6697 6720 6698 case 3 19:6721 case 320: 6699 6722 6700 6723 /* Line 1806 of yacc.c */ … … 6703 6726 break; 6704 6727 6705 case 32 0:6728 case 321: 6706 6729 6707 6730 /* Line 1806 of yacc.c */ … … 6710 6733 break; 6711 6734 6712 case 32 1:6735 case 322: 6713 6736 6714 6737 /* Line 1806 of yacc.c */ … … 6717 6740 break; 6718 6741 6719 case 32 2:6742 case 323: 6720 6743 6721 6744 /* Line 1806 of yacc.c */ … … 6724 6747 break; 6725 6748 6726 case 32 3:6749 case 324: 6727 6750 6728 6751 /* Line 1806 of yacc.c */ … … 6731 6754 break; 6732 6755 6733 case 32 4:6756 case 325: 6734 6757 6735 6758 /* Line 1806 of yacc.c */ … … 6738 6761 break; 6739 6762 6740 case 32 5:6763 case 326: 6741 6764 6742 6765 /* Line 1806 of yacc.c */ … … 6745 6768 break; 6746 6769 6747 case 32 6:6770 case 327: 6748 6771 6749 6772 /* Line 1806 of yacc.c */ … … 6752 6775 break; 6753 6776 6754 case 32 7:6777 case 328: 6755 6778 6756 6779 /* Line 1806 of yacc.c */ … … 6759 6782 break; 6760 6783 6761 case 32 8:6784 case 329: 6762 6785 6763 6786 /* Line 1806 of yacc.c */ … … 6766 6789 break; 6767 6790 6768 case 3 29:6791 case 330: 6769 6792 6770 6793 /* Line 1806 of yacc.c */ … … 6773 6796 break; 6774 6797 6775 case 33 0:6798 case 331: 6776 6799 6777 6800 /* Line 1806 of yacc.c */ … … 6780 6803 break; 6781 6804 6782 case 33 2:6805 case 333: 6783 6806 6784 6807 /* Line 1806 of yacc.c */ … … 6787 6810 break; 6788 6811 6789 case 33 3:6812 case 334: 6790 6813 6791 6814 /* Line 1806 of yacc.c */ … … 6794 6817 break; 6795 6818 6796 case 33 4:6819 case 335: 6797 6820 6798 6821 /* Line 1806 of yacc.c */ … … 6801 6824 break; 6802 6825 6803 case 33 5:6826 case 336: 6804 6827 6805 6828 /* Line 1806 of yacc.c */ … … 6808 6831 break; 6809 6832 6810 case 33 7:6833 case 338: 6811 6834 6812 6835 /* Line 1806 of yacc.c */ … … 6815 6838 break; 6816 6839 6817 case 3 39:6840 case 340: 6818 6841 6819 6842 /* Line 1806 of yacc.c */ … … 6822 6845 break; 6823 6846 6824 case 34 0:6847 case 341: 6825 6848 6826 6849 /* Line 1806 of yacc.c */ … … 6829 6852 break; 6830 6853 6831 case 34 1:6854 case 342: 6832 6855 6833 6856 /* Line 1806 of yacc.c */ … … 6836 6859 break; 6837 6860 6838 case 34 2:6861 case 343: 6839 6862 6840 6863 /* Line 1806 of yacc.c */ … … 6843 6866 break; 6844 6867 6845 case 34 3:6868 case 344: 6846 6869 6847 6870 /* Line 1806 of yacc.c */ … … 6850 6873 break; 6851 6874 6852 case 34 4:6875 case 345: 6853 6876 6854 6877 /* Line 1806 of yacc.c */ … … 6857 6880 break; 6858 6881 6859 case 34 5:6882 case 346: 6860 6883 6861 6884 /* Line 1806 of yacc.c */ … … 6864 6887 break; 6865 6888 6866 case 34 7:6889 case 348: 6867 6890 6868 6891 /* Line 1806 of yacc.c */ … … 6871 6894 break; 6872 6895 6873 case 34 8:6896 case 349: 6874 6897 6875 6898 /* Line 1806 of yacc.c */ … … 6878 6901 break; 6879 6902 6880 case 3 49:6903 case 350: 6881 6904 6882 6905 /* Line 1806 of yacc.c */ … … 6885 6908 break; 6886 6909 6887 case 35 1:6910 case 352: 6888 6911 6889 6912 /* Line 1806 of yacc.c */ … … 6892 6915 break; 6893 6916 6894 case 35 2:6917 case 353: 6895 6918 6896 6919 /* Line 1806 of yacc.c */ … … 6899 6922 break; 6900 6923 6901 case 35 4:6924 case 355: 6902 6925 6903 6926 /* Line 1806 of yacc.c */ … … 6906 6929 break; 6907 6930 6908 case 35 5:6931 case 356: 6909 6932 6910 6933 /* Line 1806 of yacc.c */ … … 6913 6936 break; 6914 6937 6915 case 35 6:6938 case 357: 6916 6939 6917 6940 /* Line 1806 of yacc.c */ … … 6920 6943 break; 6921 6944 6922 case 35 7:6945 case 358: 6923 6946 6924 6947 /* Line 1806 of yacc.c */ … … 6927 6950 break; 6928 6951 6929 case 35 8:6952 case 359: 6930 6953 6931 6954 /* Line 1806 of yacc.c */ … … 6934 6957 break; 6935 6958 6936 case 3 59:6959 case 360: 6937 6960 6938 6961 /* Line 1806 of yacc.c */ … … 6941 6964 break; 6942 6965 6943 case 36 2:6966 case 363: 6944 6967 6945 6968 /* Line 1806 of yacc.c */ … … 6948 6971 break; 6949 6972 6950 case 36 3:6973 case 364: 6951 6974 6952 6975 /* Line 1806 of yacc.c */ … … 6958 6981 break; 6959 6982 6960 case 36 4:6983 case 365: 6961 6984 6962 6985 /* Line 1806 of yacc.c */ … … 6965 6988 break; 6966 6989 6967 case 36 5:6990 case 366: 6968 6991 6969 6992 /* Line 1806 of yacc.c */ … … 6972 6995 break; 6973 6996 6974 case 36 6:6997 case 367: 6975 6998 6976 6999 /* Line 1806 of yacc.c */ … … 6979 7002 break; 6980 7003 6981 case 36 7:7004 case 368: 6982 7005 6983 7006 /* Line 1806 of yacc.c */ … … 6986 7009 break; 6987 7010 6988 case 36 8:7011 case 369: 6989 7012 6990 7013 /* Line 1806 of yacc.c */ … … 6993 7016 break; 6994 7017 6995 case 3 69:7018 case 370: 6996 7019 6997 7020 /* Line 1806 of yacc.c */ … … 7000 7023 break; 7001 7024 7002 case 37 0:7025 case 371: 7003 7026 7004 7027 /* Line 1806 of yacc.c */ … … 7007 7030 break; 7008 7031 7009 case 37 1:7032 case 372: 7010 7033 7011 7034 /* Line 1806 of yacc.c */ … … 7014 7037 break; 7015 7038 7016 case 37 3:7039 case 374: 7017 7040 7018 7041 /* Line 1806 of yacc.c */ … … 7021 7044 break; 7022 7045 7023 case 37 5:7046 case 376: 7024 7047 7025 7048 /* Line 1806 of yacc.c */ 7026 7049 #line 1505 "parser.yy" 7027 7050 { // mark all fields in list 7028 for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )7051 for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) 7029 7052 iter->set_extension( true ); 7030 7053 (yyval.decl) = (yyvsp[(2) - (3)].decl); … … 7032 7055 break; 7033 7056 7034 case 37 7:7057 case 378: 7035 7058 7036 7059 /* Line 1806 of yacc.c */ … … 7039 7062 break; 7040 7063 7041 case 37 8:7064 case 379: 7042 7065 7043 7066 /* Line 1806 of yacc.c */ … … 7046 7069 break; 7047 7070 7048 case 3 79:7071 case 380: 7049 7072 7050 7073 /* Line 1806 of yacc.c */ … … 7053 7076 break; 7054 7077 7055 case 38 0:7078 case 381: 7056 7079 7057 7080 /* Line 1806 of yacc.c */ … … 7060 7083 break; 7061 7084 7062 case 38 1:7085 case 382: 7063 7086 7064 7087 /* Line 1806 of yacc.c */ … … 7067 7090 break; 7068 7091 7069 case 38 2:7092 case 383: 7070 7093 7071 7094 /* Line 1806 of yacc.c */ … … 7074 7097 break; 7075 7098 7076 case 38 3:7099 case 384: 7077 7100 7078 7101 /* Line 1806 of yacc.c */ … … 7081 7104 break; 7082 7105 7083 case 38 4:7106 case 385: 7084 7107 7085 7108 /* Line 1806 of yacc.c */ … … 7088 7111 break; 7089 7112 7090 case 38 5:7113 case 386: 7091 7114 7092 7115 /* Line 1806 of yacc.c */ … … 7095 7118 break; 7096 7119 7097 case 38 7:7120 case 388: 7098 7121 7099 7122 /* Line 1806 of yacc.c */ … … 7102 7125 break; 7103 7126 7104 case 38 8:7127 case 389: 7105 7128 7106 7129 /* Line 1806 of yacc.c */ … … 7109 7132 break; 7110 7133 7111 case 3 89:7134 case 390: 7112 7135 7113 7136 /* Line 1806 of yacc.c */ … … 7116 7139 break; 7117 7140 7118 case 39 1:7141 case 392: 7119 7142 7120 7143 /* Line 1806 of yacc.c */ … … 7123 7146 break; 7124 7147 7125 case 39 2:7148 case 393: 7126 7149 7127 7150 /* Line 1806 of yacc.c */ … … 7133 7156 break; 7134 7157 7135 case 39 3:7158 case 394: 7136 7159 7137 7160 /* Line 1806 of yacc.c */ … … 7140 7163 break; 7141 7164 7142 case 39 4:7165 case 395: 7143 7166 7144 7167 /* Line 1806 of yacc.c */ … … 7147 7170 break; 7148 7171 7149 case 39 5:7172 case 396: 7150 7173 7151 7174 /* Line 1806 of yacc.c */ … … 7154 7177 break; 7155 7178 7156 case 39 6:7179 case 397: 7157 7180 7158 7181 /* Line 1806 of yacc.c */ … … 7161 7184 break; 7162 7185 7163 case 39 7:7186 case 398: 7164 7187 7165 7188 /* Line 1806 of yacc.c */ … … 7168 7191 break; 7169 7192 7170 case 39 8:7193 case 399: 7171 7194 7172 7195 /* Line 1806 of yacc.c */ … … 7175 7198 break; 7176 7199 7177 case 399:7200 case 400: 7178 7201 7179 7202 /* Line 1806 of yacc.c */ … … 7182 7205 break; 7183 7206 7184 case 40 3:7207 case 404: 7185 7208 7186 7209 /* Line 1806 of yacc.c */ … … 7189 7212 break; 7190 7213 7191 case 40 4:7214 case 405: 7192 7215 7193 7216 /* Line 1806 of yacc.c */ … … 7196 7219 break; 7197 7220 7198 case 40 5:7221 case 406: 7199 7222 7200 7223 /* Line 1806 of yacc.c */ … … 7203 7226 break; 7204 7227 7205 case 40 7:7228 case 408: 7206 7229 7207 7230 /* Line 1806 of yacc.c */ … … 7210 7233 break; 7211 7234 7212 case 40 8:7235 case 409: 7213 7236 7214 7237 /* Line 1806 of yacc.c */ … … 7217 7240 break; 7218 7241 7219 case 4 09:7242 case 410: 7220 7243 7221 7244 /* Line 1806 of yacc.c */ … … 7224 7247 break; 7225 7248 7226 case 41 1:7249 case 412: 7227 7250 7228 7251 /* Line 1806 of yacc.c */ … … 7231 7254 break; 7232 7255 7233 case 41 2:7256 case 413: 7234 7257 7235 7258 /* Line 1806 of yacc.c */ … … 7238 7261 break; 7239 7262 7240 case 41 5:7263 case 416: 7241 7264 7242 7265 /* Line 1806 of yacc.c */ … … 7245 7268 break; 7246 7269 7247 case 41 8:7270 case 419: 7248 7271 7249 7272 /* Line 1806 of yacc.c */ … … 7252 7275 break; 7253 7276 7254 case 4 19:7277 case 420: 7255 7278 7256 7279 /* Line 1806 of yacc.c */ … … 7259 7282 break; 7260 7283 7261 case 42 1:7284 case 422: 7262 7285 7263 7286 /* Line 1806 of yacc.c */ … … 7266 7289 break; 7267 7290 7268 case 42 2:7291 case 423: 7269 7292 7270 7293 /* Line 1806 of yacc.c */ … … 7273 7296 break; 7274 7297 7275 case 42 3:7298 case 424: 7276 7299 7277 7300 /* Line 1806 of yacc.c */ … … 7280 7303 break; 7281 7304 7282 case 42 8:7305 case 429: 7283 7306 7284 7307 /* Line 1806 of yacc.c */ … … 7287 7310 break; 7288 7311 7289 case 43 0:7312 case 431: 7290 7313 7291 7314 /* Line 1806 of yacc.c */ … … 7297 7320 break; 7298 7321 7299 case 43 1:7322 case 432: 7300 7323 7301 7324 /* Line 1806 of yacc.c */ … … 7307 7330 break; 7308 7331 7309 case 43 3:7332 case 434: 7310 7333 7311 7334 /* Line 1806 of yacc.c */ … … 7314 7337 break; 7315 7338 7316 case 43 4:7339 case 435: 7317 7340 7318 7341 /* Line 1806 of yacc.c */ … … 7321 7344 break; 7322 7345 7323 case 43 5:7346 case 436: 7324 7347 7325 7348 /* Line 1806 of yacc.c */ … … 7328 7351 break; 7329 7352 7330 case 44 7:7353 case 448: 7331 7354 7332 7355 /* Line 1806 of yacc.c */ … … 7335 7358 break; 7336 7359 7337 case 45 1:7360 case 452: 7338 7361 7339 7362 /* Line 1806 of yacc.c */ … … 7342 7365 break; 7343 7366 7344 case 45 2:7367 case 453: 7345 7368 7346 7369 /* Line 1806 of yacc.c */ … … 7349 7372 break; 7350 7373 7351 case 45 3:7374 case 454: 7352 7375 7353 7376 /* Line 1806 of yacc.c */ … … 7356 7379 break; 7357 7380 7358 case 45 4:7381 case 455: 7359 7382 7360 7383 /* Line 1806 of yacc.c */ … … 7363 7386 break; 7364 7387 7365 case 45 5:7388 case 456: 7366 7389 7367 7390 /* Line 1806 of yacc.c */ … … 7370 7393 break; 7371 7394 7372 case 45 6:7395 case 457: 7373 7396 7374 7397 /* Line 1806 of yacc.c */ … … 7377 7400 break; 7378 7401 7379 case 45 7:7402 case 458: 7380 7403 7381 7404 /* Line 1806 of yacc.c */ … … 7384 7407 break; 7385 7408 7386 case 4 59:7409 case 460: 7387 7410 7388 7411 /* Line 1806 of yacc.c */ … … 7391 7414 break; 7392 7415 7393 case 46 0:7416 case 461: 7394 7417 7395 7418 /* Line 1806 of yacc.c */ 7396 7419 #line 1752 "parser.yy" 7397 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_l ink( (yyvsp[(3) - (3)].in) ) ); }7398 break; 7399 7400 case 46 1:7420 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); } 7421 break; 7422 7423 case 462: 7401 7424 7402 7425 /* Line 1806 of yacc.c */ 7403 7426 #line 1754 "parser.yy" 7404 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_l ink( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }7405 break; 7406 7407 case 46 3:7427 { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); } 7428 break; 7429 7430 case 464: 7408 7431 7409 7432 /* Line 1806 of yacc.c */ … … 7412 7435 break; 7413 7436 7414 case 46 5:7437 case 466: 7415 7438 7416 7439 /* Line 1806 of yacc.c */ 7417 7440 #line 1776 "parser.yy" 7418 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_l ink( (yyvsp[(2) - (2)].en) ) ); }7419 break; 7420 7421 case 46 6:7441 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); } 7442 break; 7443 7444 case 467: 7422 7445 7423 7446 /* Line 1806 of yacc.c */ … … 7426 7449 break; 7427 7450 7428 case 46 7:7451 case 468: 7429 7452 7430 7453 /* Line 1806 of yacc.c */ … … 7433 7456 break; 7434 7457 7435 case 46 8:7458 case 469: 7436 7459 7437 7460 /* Line 1806 of yacc.c */ … … 7440 7463 break; 7441 7464 7442 case 4 69:7465 case 470: 7443 7466 7444 7467 /* Line 1806 of yacc.c */ … … 7447 7470 break; 7448 7471 7449 case 47 0:7472 case 471: 7450 7473 7451 7474 /* Line 1806 of yacc.c */ … … 7454 7477 break; 7455 7478 7456 case 47 2:7479 case 473: 7457 7480 7458 7481 /* Line 1806 of yacc.c */ … … 7461 7484 break; 7462 7485 7463 case 47 3:7486 case 474: 7464 7487 7465 7488 /* Line 1806 of yacc.c */ … … 7468 7491 break; 7469 7492 7470 case 47 4:7493 case 475: 7471 7494 7472 7495 /* Line 1806 of yacc.c */ … … 7475 7498 break; 7476 7499 7477 case 47 6:7500 case 477: 7478 7501 7479 7502 /* Line 1806 of yacc.c */ … … 7482 7505 break; 7483 7506 7484 case 47 7:7507 case 478: 7485 7508 7486 7509 /* Line 1806 of yacc.c */ … … 7489 7512 break; 7490 7513 7491 case 47 8:7514 case 479: 7492 7515 7493 7516 /* Line 1806 of yacc.c */ … … 7496 7519 break; 7497 7520 7498 case 48 0:7521 case 481: 7499 7522 7500 7523 /* Line 1806 of yacc.c */ … … 7503 7526 break; 7504 7527 7505 case 48 1:7528 case 482: 7506 7529 7507 7530 /* Line 1806 of yacc.c */ … … 7510 7533 break; 7511 7534 7512 case 48 2:7535 case 483: 7513 7536 7514 7537 /* Line 1806 of yacc.c */ … … 7517 7540 break; 7518 7541 7519 case 48 4:7542 case 485: 7520 7543 7521 7544 /* Line 1806 of yacc.c */ … … 7524 7547 break; 7525 7548 7526 case 48 5:7549 case 486: 7527 7550 7528 7551 /* Line 1806 of yacc.c */ … … 7531 7554 break; 7532 7555 7533 case 48 6:7556 case 487: 7534 7557 7535 7558 /* Line 1806 of yacc.c */ … … 7538 7561 break; 7539 7562 7540 case 48 7:7563 case 488: 7541 7564 7542 7565 /* Line 1806 of yacc.c */ … … 7545 7568 break; 7546 7569 7547 case 48 8:7570 case 489: 7548 7571 7549 7572 /* Line 1806 of yacc.c */ … … 7552 7575 break; 7553 7576 7554 case 4 89:7577 case 490: 7555 7578 7556 7579 /* Line 1806 of yacc.c */ … … 7562 7585 break; 7563 7586 7564 case 49 0:7587 case 491: 7565 7588 7566 7589 /* Line 1806 of yacc.c */ … … 7569 7592 break; 7570 7593 7571 case 49 1:7594 case 492: 7572 7595 7573 7596 /* Line 1806 of yacc.c */ … … 7576 7599 break; 7577 7600 7578 case 49 2:7601 case 493: 7579 7602 7580 7603 /* Line 1806 of yacc.c */ … … 7583 7606 break; 7584 7607 7585 case 49 4:7608 case 495: 7586 7609 7587 7610 /* Line 1806 of yacc.c */ 7588 7611 #line 1882 "parser.yy" 7589 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_l ink( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }7590 break; 7591 7592 case 49 5:7612 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); } 7613 break; 7614 7615 case 496: 7593 7616 7594 7617 /* Line 1806 of yacc.c */ 7595 7618 #line 1884 "parser.yy" 7596 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_l ink( (yyvsp[(3) - (3)].en) )); }7597 break; 7598 7599 case 49 6:7619 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); } 7620 break; 7621 7622 case 497: 7600 7623 7601 7624 /* Line 1806 of yacc.c */ … … 7604 7627 break; 7605 7628 7606 case 49 7:7629 case 498: 7607 7630 7608 7631 /* Line 1806 of yacc.c */ … … 7611 7634 break; 7612 7635 7613 case 49 8:7636 case 499: 7614 7637 7615 7638 /* Line 1806 of yacc.c */ … … 7618 7641 break; 7619 7642 7620 case 499:7643 case 500: 7621 7644 7622 7645 /* Line 1806 of yacc.c */ … … 7625 7648 break; 7626 7649 7627 case 50 0:7650 case 501: 7628 7651 7629 7652 /* Line 1806 of yacc.c */ … … 7632 7655 break; 7633 7656 7634 case 50 1:7657 case 502: 7635 7658 7636 7659 /* Line 1806 of yacc.c */ … … 7642 7665 break; 7643 7666 7644 case 50 2:7667 case 503: 7645 7668 7646 7669 /* Line 1806 of yacc.c */ … … 7652 7675 break; 7653 7676 7654 case 50 3:7677 case 504: 7655 7678 7656 7679 /* Line 1806 of yacc.c */ … … 7662 7685 break; 7663 7686 7664 case 50 4:7687 case 505: 7665 7688 7666 7689 /* Line 1806 of yacc.c */ … … 7672 7695 break; 7673 7696 7674 case 50 5:7697 case 506: 7675 7698 7676 7699 /* Line 1806 of yacc.c */ … … 7683 7706 break; 7684 7707 7685 case 50 7:7708 case 508: 7686 7709 7687 7710 /* Line 1806 of yacc.c */ … … 7690 7713 break; 7691 7714 7692 case 51 0:7715 case 511: 7693 7716 7694 7717 /* Line 1806 of yacc.c */ … … 7700 7723 break; 7701 7724 7702 case 51 1:7725 case 512: 7703 7726 7704 7727 /* Line 1806 of yacc.c */ … … 7710 7733 break; 7711 7734 7712 case 51 2:7735 case 513: 7713 7736 7714 7737 /* Line 1806 of yacc.c */ … … 7720 7743 break; 7721 7744 7722 case 51 3:7745 case 514: 7723 7746 7724 7747 /* Line 1806 of yacc.c */ … … 7730 7753 break; 7731 7754 7732 case 51 4:7755 case 515: 7733 7756 7734 7757 /* Line 1806 of yacc.c */ … … 7740 7763 break; 7741 7764 7742 case 51 5:7765 case 516: 7743 7766 7744 7767 /* Line 1806 of yacc.c */ … … 7747 7770 break; 7748 7771 7749 case 51 6:7772 case 517: 7750 7773 7751 7774 /* Line 1806 of yacc.c */ 7752 7775 #line 1983 "parser.yy" 7776 { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl); } 7777 break; 7778 7779 case 519: 7780 7781 /* Line 1806 of yacc.c */ 7782 #line 1989 "parser.yy" 7783 { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7784 break; 7785 7786 case 520: 7787 7788 /* Line 1806 of yacc.c */ 7789 #line 1994 "parser.yy" 7790 { (yyval.decl) = 0; } 7791 break; 7792 7793 case 524: 7794 7795 /* Line 1806 of yacc.c */ 7796 #line 2002 "parser.yy" 7797 {} 7798 break; 7799 7800 case 525: 7801 7802 /* Line 1806 of yacc.c */ 7803 #line 2004 "parser.yy" 7753 7804 { 7754 if ( theTree ) { 7755 theTree->appendList( (yyvsp[(1) - (1)].decl) ); 7756 } else { 7757 theTree = (yyvsp[(1) - (1)].decl); 7758 } 7759 } 7760 break; 7761 7762 case 518: 7763 7764 /* Line 1806 of yacc.c */ 7765 #line 1995 "parser.yy" 7766 { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7767 break; 7768 7769 case 519: 7770 7771 /* Line 1806 of yacc.c */ 7772 #line 2000 "parser.yy" 7773 { (yyval.decl) = 0; } 7774 break; 7775 7776 case 523: 7777 7778 /* Line 1806 of yacc.c */ 7779 #line 2008 "parser.yy" 7780 {} 7781 break; 7782 7783 case 524: 7784 7785 /* Line 1806 of yacc.c */ 7786 #line 2010 "parser.yy" 7787 { 7788 linkageStack.push( linkage ); 7805 linkageStack.push( linkage ); // handle nested extern "C"/"Cforall" 7789 7806 linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) ); 7790 7807 } 7791 7808 break; 7792 7809 7793 case 52 5:7794 7795 /* Line 1806 of yacc.c */ 7796 #line 20 15"parser.yy"7810 case 526: 7811 7812 /* Line 1806 of yacc.c */ 7813 #line 2009 "parser.yy" 7797 7814 { 7798 7815 linkage = linkageStack.top(); … … 7802 7819 break; 7803 7820 7804 case 52 6:7805 7806 /* Line 1806 of yacc.c */ 7807 #line 20 21"parser.yy"7821 case 527: 7822 7823 /* Line 1806 of yacc.c */ 7824 #line 2015 "parser.yy" 7808 7825 { // mark all fields in list 7809 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )7826 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) 7810 7827 iter->set_extension( true ); 7811 7828 (yyval.decl) = (yyvsp[(2) - (2)].decl); … … 7813 7830 break; 7814 7831 7815 case 52 8:7816 7817 /* Line 1806 of yacc.c */ 7818 #line 203 6"parser.yy"7832 case 529: 7833 7834 /* Line 1806 of yacc.c */ 7835 #line 2030 "parser.yy" 7819 7836 { 7820 7837 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7824 7841 break; 7825 7842 7826 case 5 29:7827 7828 /* Line 1806 of yacc.c */ 7829 #line 20 42"parser.yy"7843 case 530: 7844 7845 /* Line 1806 of yacc.c */ 7846 #line 2036 "parser.yy" 7830 7847 { 7831 7848 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7835 7852 break; 7836 7853 7837 case 53 0:7838 7839 /* Line 1806 of yacc.c */ 7840 #line 20 51"parser.yy"7854 case 531: 7855 7856 /* Line 1806 of yacc.c */ 7857 #line 2045 "parser.yy" 7841 7858 { 7842 7859 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7846 7863 break; 7847 7864 7848 case 53 1:7849 7850 /* Line 1806 of yacc.c */ 7851 #line 205 7"parser.yy"7865 case 532: 7866 7867 /* Line 1806 of yacc.c */ 7868 #line 2051 "parser.yy" 7852 7869 { 7853 7870 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7857 7874 break; 7858 7875 7859 case 532: 7876 case 533: 7877 7878 /* Line 1806 of yacc.c */ 7879 #line 2057 "parser.yy" 7880 { 7881 typedefTable.addToEnclosingScope( TypedefTable::ID ); 7882 typedefTable.leaveScope(); 7883 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) ); 7884 } 7885 break; 7886 7887 case 534: 7860 7888 7861 7889 /* Line 1806 of yacc.c */ … … 7868 7896 break; 7869 7897 7870 case 53 3:7898 case 535: 7871 7899 7872 7900 /* Line 1806 of yacc.c */ 7873 7901 #line 2069 "parser.yy" 7874 {7875 typedefTable.addToEnclosingScope( TypedefTable::ID );7876 typedefTable.leaveScope();7877 (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );7878 }7879 break;7880 7881 case 534:7882 7883 /* Line 1806 of yacc.c */7884 #line 2075 "parser.yy"7885 7902 { 7886 7903 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7890 7907 break; 7891 7908 7892 case 53 5:7893 7894 /* Line 1806 of yacc.c */ 7895 #line 20 83"parser.yy"7909 case 536: 7910 7911 /* Line 1806 of yacc.c */ 7912 #line 2077 "parser.yy" 7896 7913 { 7897 7914 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7901 7918 break; 7902 7919 7903 case 53 6:7904 7905 /* Line 1806 of yacc.c */ 7906 #line 208 9"parser.yy"7920 case 537: 7921 7922 /* Line 1806 of yacc.c */ 7923 #line 2083 "parser.yy" 7907 7924 { 7908 7925 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7912 7929 break; 7913 7930 7914 case 53 7:7915 7916 /* Line 1806 of yacc.c */ 7917 #line 209 7"parser.yy"7931 case 538: 7932 7933 /* Line 1806 of yacc.c */ 7934 #line 2091 "parser.yy" 7918 7935 { 7919 7936 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7923 7940 break; 7924 7941 7925 case 53 8:7926 7927 /* Line 1806 of yacc.c */ 7928 #line 2 103"parser.yy"7942 case 539: 7943 7944 /* Line 1806 of yacc.c */ 7945 #line 2097 "parser.yy" 7929 7946 { 7930 7947 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7934 7951 break; 7935 7952 7936 case 54 2:7937 7938 /* Line 1806 of yacc.c */ 7939 #line 211 8"parser.yy"7953 case 543: 7954 7955 /* Line 1806 of yacc.c */ 7956 #line 2112 "parser.yy" 7940 7957 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 7941 7958 break; … … 7944 7961 7945 7962 /* Line 1806 of yacc.c */ 7946 #line 2128 "parser.yy" 7963 #line 2117 "parser.yy" 7964 { delete (yyvsp[(3) - (5)].str); } 7965 break; 7966 7967 case 546: 7968 7969 /* Line 1806 of yacc.c */ 7970 #line 2122 "parser.yy" 7947 7971 { (yyval.decl) = 0; } 7948 7972 break; 7949 7973 7950 case 548: 7974 case 549: 7975 7976 /* Line 1806 of yacc.c */ 7977 #line 2129 "parser.yy" 7978 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7979 break; 7980 7981 case 550: 7951 7982 7952 7983 /* Line 1806 of yacc.c */ 7953 7984 #line 2135 "parser.yy" 7954 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }7955 break;7956 7957 case 549:7958 7959 /* Line 1806 of yacc.c */7960 #line 2141 "parser.yy"7961 7985 { (yyval.decl) = 0; } 7962 7986 break; … … 7965 7989 7966 7990 /* Line 1806 of yacc.c */ 7967 #line 21 56 "parser.yy"7968 { }7991 #line 2146 "parser.yy" 7992 { delete (yyvsp[(3) - (4)].en); } 7969 7993 break; 7970 7994 … … 7972 7996 7973 7997 /* Line 1806 of yacc.c */ 7974 #line 215 7"parser.yy"7975 { }7998 #line 2150 "parser.yy" 7999 { delete (yyvsp[(1) - (1)].tok); } 7976 8000 break; 7977 8001 … … 7979 8003 7980 8004 /* Line 1806 of yacc.c */ 7981 #line 215 8"parser.yy"7982 { }8005 #line 2151 "parser.yy" 8006 { delete (yyvsp[(1) - (1)].decl); } 7983 8007 break; 7984 8008 … … 7986 8010 7987 8011 /* Line 1806 of yacc.c */ 7988 #line 215 9"parser.yy"7989 { }8012 #line 2152 "parser.yy" 8013 { delete (yyvsp[(1) - (1)].decl); } 7990 8014 break; 7991 8015 … … 7993 8017 7994 8018 /* Line 1806 of yacc.c */ 7995 #line 2194 "parser.yy" 8019 #line 2153 "parser.yy" 8020 { delete (yyvsp[(1) - (1)].decl); } 8021 break; 8022 8023 case 560: 8024 8025 /* Line 1806 of yacc.c */ 8026 #line 2188 "parser.yy" 7996 8027 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 7997 8028 break; 7998 8029 7999 case 56 1:8000 8001 /* Line 1806 of yacc.c */ 8002 #line 219 7"parser.yy"8030 case 562: 8031 8032 /* Line 1806 of yacc.c */ 8033 #line 2191 "parser.yy" 8003 8034 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8004 8035 break; 8005 8036 8006 case 56 2:8007 8008 /* Line 1806 of yacc.c */ 8009 #line 219 9"parser.yy"8037 case 563: 8038 8039 /* Line 1806 of yacc.c */ 8040 #line 2193 "parser.yy" 8010 8041 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8011 8042 break; 8012 8043 8013 case 56 3:8014 8015 /* Line 1806 of yacc.c */ 8016 #line 2 204"parser.yy"8044 case 564: 8045 8046 /* Line 1806 of yacc.c */ 8047 #line 2198 "parser.yy" 8017 8048 { 8018 8049 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8021 8052 break; 8022 8053 8023 case 56 4:8024 8025 /* Line 1806 of yacc.c */ 8026 #line 220 9"parser.yy"8054 case 565: 8055 8056 /* Line 1806 of yacc.c */ 8057 #line 2203 "parser.yy" 8027 8058 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8028 8059 break; 8029 8060 8030 case 56 5:8031 8032 /* Line 1806 of yacc.c */ 8033 #line 22 14"parser.yy"8061 case 566: 8062 8063 /* Line 1806 of yacc.c */ 8064 #line 2208 "parser.yy" 8034 8065 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8035 8066 break; 8036 8067 8037 case 56 6:8038 8039 /* Line 1806 of yacc.c */ 8040 #line 221 6"parser.yy"8068 case 567: 8069 8070 /* Line 1806 of yacc.c */ 8071 #line 2210 "parser.yy" 8041 8072 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8042 8073 break; 8043 8074 8044 case 56 7:8045 8046 /* Line 1806 of yacc.c */ 8047 #line 221 8"parser.yy"8075 case 568: 8076 8077 /* Line 1806 of yacc.c */ 8078 #line 2212 "parser.yy" 8048 8079 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8049 8080 break; 8050 8081 8051 case 568: 8082 case 569: 8083 8084 /* Line 1806 of yacc.c */ 8085 #line 2217 "parser.yy" 8086 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8087 break; 8088 8089 case 570: 8090 8091 /* Line 1806 of yacc.c */ 8092 #line 2219 "parser.yy" 8093 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8094 break; 8095 8096 case 571: 8097 8098 /* Line 1806 of yacc.c */ 8099 #line 2221 "parser.yy" 8100 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8101 break; 8102 8103 case 572: 8052 8104 8053 8105 /* Line 1806 of yacc.c */ 8054 8106 #line 2223 "parser.yy" 8107 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8108 break; 8109 8110 case 573: 8111 8112 /* Line 1806 of yacc.c */ 8113 #line 2228 "parser.yy" 8114 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8115 break; 8116 8117 case 574: 8118 8119 /* Line 1806 of yacc.c */ 8120 #line 2230 "parser.yy" 8121 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8122 break; 8123 8124 case 575: 8125 8126 /* Line 1806 of yacc.c */ 8127 #line 2239 "parser.yy" 8128 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8129 break; 8130 8131 case 577: 8132 8133 /* Line 1806 of yacc.c */ 8134 #line 2242 "parser.yy" 8135 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8136 break; 8137 8138 case 578: 8139 8140 /* Line 1806 of yacc.c */ 8141 #line 2247 "parser.yy" 8142 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8143 break; 8144 8145 case 579: 8146 8147 /* Line 1806 of yacc.c */ 8148 #line 2249 "parser.yy" 8149 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8150 break; 8151 8152 case 580: 8153 8154 /* Line 1806 of yacc.c */ 8155 #line 2251 "parser.yy" 8156 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8157 break; 8158 8159 case 581: 8160 8161 /* Line 1806 of yacc.c */ 8162 #line 2256 "parser.yy" 8163 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8164 break; 8165 8166 case 582: 8167 8168 /* Line 1806 of yacc.c */ 8169 #line 2258 "parser.yy" 8170 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8171 break; 8172 8173 case 583: 8174 8175 /* Line 1806 of yacc.c */ 8176 #line 2260 "parser.yy" 8177 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8178 break; 8179 8180 case 584: 8181 8182 /* Line 1806 of yacc.c */ 8183 #line 2265 "parser.yy" 8184 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8185 break; 8186 8187 case 585: 8188 8189 /* Line 1806 of yacc.c */ 8190 #line 2267 "parser.yy" 8191 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8192 break; 8193 8194 case 586: 8195 8196 /* Line 1806 of yacc.c */ 8197 #line 2269 "parser.yy" 8198 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8199 break; 8200 8201 case 590: 8202 8203 /* Line 1806 of yacc.c */ 8204 #line 2284 "parser.yy" 8205 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8206 break; 8207 8208 case 591: 8209 8210 /* Line 1806 of yacc.c */ 8211 #line 2286 "parser.yy" 8212 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8213 break; 8214 8215 case 592: 8216 8217 /* Line 1806 of yacc.c */ 8218 #line 2288 "parser.yy" 8219 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8220 break; 8221 8222 case 593: 8223 8224 /* Line 1806 of yacc.c */ 8225 #line 2293 "parser.yy" 8226 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8227 break; 8228 8229 case 594: 8230 8231 /* Line 1806 of yacc.c */ 8232 #line 2295 "parser.yy" 8233 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8234 break; 8235 8236 case 595: 8237 8238 /* Line 1806 of yacc.c */ 8239 #line 2297 "parser.yy" 8240 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8241 break; 8242 8243 case 596: 8244 8245 /* Line 1806 of yacc.c */ 8246 #line 2302 "parser.yy" 8247 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8248 break; 8249 8250 case 597: 8251 8252 /* Line 1806 of yacc.c */ 8253 #line 2304 "parser.yy" 8254 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8255 break; 8256 8257 case 598: 8258 8259 /* Line 1806 of yacc.c */ 8260 #line 2306 "parser.yy" 8261 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8262 break; 8263 8264 case 599: 8265 8266 /* Line 1806 of yacc.c */ 8267 #line 2321 "parser.yy" 8268 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8269 break; 8270 8271 case 601: 8272 8273 /* Line 1806 of yacc.c */ 8274 #line 2324 "parser.yy" 8275 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8276 break; 8277 8278 case 602: 8279 8280 /* Line 1806 of yacc.c */ 8281 #line 2326 "parser.yy" 8282 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8283 break; 8284 8285 case 604: 8286 8287 /* Line 1806 of yacc.c */ 8288 #line 2332 "parser.yy" 8289 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8290 break; 8291 8292 case 605: 8293 8294 /* Line 1806 of yacc.c */ 8295 #line 2337 "parser.yy" 8296 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8297 break; 8298 8299 case 606: 8300 8301 /* Line 1806 of yacc.c */ 8302 #line 2339 "parser.yy" 8303 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8304 break; 8305 8306 case 607: 8307 8308 /* Line 1806 of yacc.c */ 8309 #line 2341 "parser.yy" 8310 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8311 break; 8312 8313 case 608: 8314 8315 /* Line 1806 of yacc.c */ 8316 #line 2346 "parser.yy" 8055 8317 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8056 8318 break; 8057 8319 8058 case 569:8059 8060 /* Line 1806 of yacc.c */ 8061 #line 2 225"parser.yy"8320 case 609: 8321 8322 /* Line 1806 of yacc.c */ 8323 #line 2348 "parser.yy" 8062 8324 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8063 8325 break; 8064 8326 8065 case 570:8066 8067 /* Line 1806 of yacc.c */ 8068 #line 2 227"parser.yy"8327 case 610: 8328 8329 /* Line 1806 of yacc.c */ 8330 #line 2350 "parser.yy" 8069 8331 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8070 8332 break; 8071 8333 8072 case 571:8073 8074 /* Line 1806 of yacc.c */ 8075 #line 2 229"parser.yy"8334 case 611: 8335 8336 /* Line 1806 of yacc.c */ 8337 #line 2352 "parser.yy" 8076 8338 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8077 8339 break; 8078 8340 8079 case 572: 8080 8081 /* Line 1806 of yacc.c */ 8082 #line 2234 "parser.yy" 8341 case 612: 8342 8343 /* Line 1806 of yacc.c */ 8344 #line 2357 "parser.yy" 8345 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8346 break; 8347 8348 case 613: 8349 8350 /* Line 1806 of yacc.c */ 8351 #line 2359 "parser.yy" 8083 8352 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8084 8353 break; 8085 8354 8086 case 573:8087 8088 /* Line 1806 of yacc.c */ 8089 #line 2 236"parser.yy"8355 case 614: 8356 8357 /* Line 1806 of yacc.c */ 8358 #line 2361 "parser.yy" 8090 8359 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8091 8360 break; 8092 8361 8093 case 574:8094 8095 /* Line 1806 of yacc.c */ 8096 #line 2 245"parser.yy"8362 case 615: 8363 8364 /* Line 1806 of yacc.c */ 8365 #line 2371 "parser.yy" 8097 8366 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8098 8367 break; 8099 8368 8100 case 576:8101 8102 /* Line 1806 of yacc.c */ 8103 #line 2 248"parser.yy"8369 case 617: 8370 8371 /* Line 1806 of yacc.c */ 8372 #line 2374 "parser.yy" 8104 8373 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8105 8374 break; 8106 8375 8107 case 577: 8108 8109 /* Line 1806 of yacc.c */ 8110 #line 2253 "parser.yy" 8376 case 618: 8377 8378 /* Line 1806 of yacc.c */ 8379 #line 2376 "parser.yy" 8380 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8381 break; 8382 8383 case 619: 8384 8385 /* Line 1806 of yacc.c */ 8386 #line 2381 "parser.yy" 8387 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8388 break; 8389 8390 case 620: 8391 8392 /* Line 1806 of yacc.c */ 8393 #line 2383 "parser.yy" 8394 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8395 break; 8396 8397 case 621: 8398 8399 /* Line 1806 of yacc.c */ 8400 #line 2385 "parser.yy" 8401 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8402 break; 8403 8404 case 622: 8405 8406 /* Line 1806 of yacc.c */ 8407 #line 2390 "parser.yy" 8408 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8409 break; 8410 8411 case 623: 8412 8413 /* Line 1806 of yacc.c */ 8414 #line 2392 "parser.yy" 8415 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8416 break; 8417 8418 case 624: 8419 8420 /* Line 1806 of yacc.c */ 8421 #line 2394 "parser.yy" 8422 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8423 break; 8424 8425 case 625: 8426 8427 /* Line 1806 of yacc.c */ 8428 #line 2396 "parser.yy" 8429 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8430 break; 8431 8432 case 626: 8433 8434 /* Line 1806 of yacc.c */ 8435 #line 2401 "parser.yy" 8111 8436 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8112 8437 break; 8113 8438 8114 case 578:8115 8116 /* Line 1806 of yacc.c */ 8117 #line 2 255"parser.yy"8439 case 627: 8440 8441 /* Line 1806 of yacc.c */ 8442 #line 2403 "parser.yy" 8118 8443 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8119 8444 break; 8120 8445 8121 case 579:8122 8123 /* Line 1806 of yacc.c */ 8124 #line 2 257"parser.yy"8446 case 628: 8447 8448 /* Line 1806 of yacc.c */ 8449 #line 2405 "parser.yy" 8125 8450 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8126 8451 break; 8127 8452 8128 case 580: 8129 8130 /* Line 1806 of yacc.c */ 8131 #line 2262 "parser.yy" 8132 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8133 break; 8134 8135 case 581: 8136 8137 /* Line 1806 of yacc.c */ 8138 #line 2264 "parser.yy" 8139 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8140 break; 8141 8142 case 582: 8143 8144 /* Line 1806 of yacc.c */ 8145 #line 2266 "parser.yy" 8146 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8147 break; 8148 8149 case 583: 8150 8151 /* Line 1806 of yacc.c */ 8152 #line 2271 "parser.yy" 8153 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8154 break; 8155 8156 case 584: 8157 8158 /* Line 1806 of yacc.c */ 8159 #line 2273 "parser.yy" 8160 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8161 break; 8162 8163 case 585: 8164 8165 /* Line 1806 of yacc.c */ 8166 #line 2275 "parser.yy" 8167 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8168 break; 8169 8170 case 589: 8171 8172 /* Line 1806 of yacc.c */ 8173 #line 2290 "parser.yy" 8174 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8175 break; 8176 8177 case 590: 8178 8179 /* Line 1806 of yacc.c */ 8180 #line 2292 "parser.yy" 8181 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8182 break; 8183 8184 case 591: 8185 8186 /* Line 1806 of yacc.c */ 8187 #line 2294 "parser.yy" 8188 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8189 break; 8190 8191 case 592: 8192 8193 /* Line 1806 of yacc.c */ 8194 #line 2299 "parser.yy" 8195 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8196 break; 8197 8198 case 593: 8199 8200 /* Line 1806 of yacc.c */ 8201 #line 2301 "parser.yy" 8202 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8203 break; 8204 8205 case 594: 8206 8207 /* Line 1806 of yacc.c */ 8208 #line 2303 "parser.yy" 8209 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8210 break; 8211 8212 case 595: 8213 8214 /* Line 1806 of yacc.c */ 8215 #line 2308 "parser.yy" 8216 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8217 break; 8218 8219 case 596: 8220 8221 /* Line 1806 of yacc.c */ 8222 #line 2310 "parser.yy" 8223 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8224 break; 8225 8226 case 597: 8227 8228 /* Line 1806 of yacc.c */ 8229 #line 2312 "parser.yy" 8230 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8231 break; 8232 8233 case 598: 8234 8235 /* Line 1806 of yacc.c */ 8236 #line 2327 "parser.yy" 8453 case 629: 8454 8455 /* Line 1806 of yacc.c */ 8456 #line 2436 "parser.yy" 8237 8457 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8238 8458 break; 8239 8459 8240 case 6 00:8241 8242 /* Line 1806 of yacc.c */ 8243 #line 2 330"parser.yy"8460 case 631: 8461 8462 /* Line 1806 of yacc.c */ 8463 #line 2439 "parser.yy" 8244 8464 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8245 8465 break; 8246 8466 8247 case 6 01:8248 8249 /* Line 1806 of yacc.c */ 8250 #line 2 332"parser.yy"8467 case 632: 8468 8469 /* Line 1806 of yacc.c */ 8470 #line 2441 "parser.yy" 8251 8471 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8252 8472 break; 8253 8473 8254 case 603: 8255 8256 /* Line 1806 of yacc.c */ 8257 #line 2338 "parser.yy" 8258 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8259 break; 8260 8261 case 604: 8262 8263 /* Line 1806 of yacc.c */ 8264 #line 2343 "parser.yy" 8265 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8266 break; 8267 8268 case 605: 8269 8270 /* Line 1806 of yacc.c */ 8271 #line 2345 "parser.yy" 8272 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8273 break; 8274 8275 case 606: 8276 8277 /* Line 1806 of yacc.c */ 8278 #line 2347 "parser.yy" 8279 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8280 break; 8281 8282 case 607: 8283 8284 /* Line 1806 of yacc.c */ 8285 #line 2352 "parser.yy" 8286 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8287 break; 8288 8289 case 608: 8290 8291 /* Line 1806 of yacc.c */ 8292 #line 2354 "parser.yy" 8293 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8294 break; 8295 8296 case 609: 8297 8298 /* Line 1806 of yacc.c */ 8299 #line 2356 "parser.yy" 8300 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8301 break; 8302 8303 case 610: 8304 8305 /* Line 1806 of yacc.c */ 8306 #line 2358 "parser.yy" 8307 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8308 break; 8309 8310 case 611: 8311 8312 /* Line 1806 of yacc.c */ 8313 #line 2363 "parser.yy" 8314 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8315 break; 8316 8317 case 612: 8318 8319 /* Line 1806 of yacc.c */ 8320 #line 2365 "parser.yy" 8321 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8322 break; 8323 8324 case 613: 8325 8326 /* Line 1806 of yacc.c */ 8327 #line 2367 "parser.yy" 8328 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8329 break; 8330 8331 case 614: 8332 8333 /* Line 1806 of yacc.c */ 8334 #line 2377 "parser.yy" 8335 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8336 break; 8337 8338 case 616: 8339 8340 /* Line 1806 of yacc.c */ 8341 #line 2380 "parser.yy" 8342 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8343 break; 8344 8345 case 617: 8346 8347 /* Line 1806 of yacc.c */ 8348 #line 2382 "parser.yy" 8349 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8350 break; 8351 8352 case 618: 8353 8354 /* Line 1806 of yacc.c */ 8355 #line 2387 "parser.yy" 8356 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8357 break; 8358 8359 case 619: 8360 8361 /* Line 1806 of yacc.c */ 8362 #line 2389 "parser.yy" 8363 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8364 break; 8365 8366 case 620: 8367 8368 /* Line 1806 of yacc.c */ 8369 #line 2391 "parser.yy" 8370 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8371 break; 8372 8373 case 621: 8374 8375 /* Line 1806 of yacc.c */ 8376 #line 2396 "parser.yy" 8377 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8378 break; 8379 8380 case 622: 8381 8382 /* Line 1806 of yacc.c */ 8383 #line 2398 "parser.yy" 8384 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8385 break; 8386 8387 case 623: 8388 8389 /* Line 1806 of yacc.c */ 8390 #line 2400 "parser.yy" 8391 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8392 break; 8393 8394 case 624: 8395 8396 /* Line 1806 of yacc.c */ 8397 #line 2402 "parser.yy" 8398 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8399 break; 8400 8401 case 625: 8402 8403 /* Line 1806 of yacc.c */ 8404 #line 2407 "parser.yy" 8405 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8406 break; 8407 8408 case 626: 8409 8410 /* Line 1806 of yacc.c */ 8411 #line 2409 "parser.yy" 8412 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8413 break; 8414 8415 case 627: 8416 8417 /* Line 1806 of yacc.c */ 8418 #line 2411 "parser.yy" 8419 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8420 break; 8421 8422 case 628: 8423 8424 /* Line 1806 of yacc.c */ 8425 #line 2442 "parser.yy" 8426 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8427 break; 8428 8429 case 630: 8430 8431 /* Line 1806 of yacc.c */ 8432 #line 2445 "parser.yy" 8433 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8434 break; 8435 8436 case 631: 8437 8438 /* Line 1806 of yacc.c */ 8439 #line 2447 "parser.yy" 8440 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8441 break; 8442 8443 case 632: 8444 8445 /* Line 1806 of yacc.c */ 8446 #line 2452 "parser.yy" 8474 case 633: 8475 8476 /* Line 1806 of yacc.c */ 8477 #line 2446 "parser.yy" 8447 8478 { 8448 8479 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8451 8482 break; 8452 8483 8453 case 63 3:8454 8455 /* Line 1806 of yacc.c */ 8456 #line 245 7"parser.yy"8484 case 634: 8485 8486 /* Line 1806 of yacc.c */ 8487 #line 2451 "parser.yy" 8457 8488 { 8458 8489 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8461 8492 break; 8462 8493 8463 case 63 4:8464 8465 /* Line 1806 of yacc.c */ 8466 #line 24 65"parser.yy"8494 case 635: 8495 8496 /* Line 1806 of yacc.c */ 8497 #line 2459 "parser.yy" 8467 8498 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8468 8499 break; 8469 8500 8470 case 63 5:8471 8472 /* Line 1806 of yacc.c */ 8473 #line 246 7"parser.yy"8501 case 636: 8502 8503 /* Line 1806 of yacc.c */ 8504 #line 2461 "parser.yy" 8474 8505 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8475 8506 break; 8476 8507 8477 case 63 6:8478 8479 /* Line 1806 of yacc.c */ 8480 #line 246 9"parser.yy"8508 case 637: 8509 8510 /* Line 1806 of yacc.c */ 8511 #line 2463 "parser.yy" 8481 8512 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8482 8513 break; 8483 8514 8484 case 63 7:8485 8486 /* Line 1806 of yacc.c */ 8487 #line 24 74"parser.yy"8515 case 638: 8516 8517 /* Line 1806 of yacc.c */ 8518 #line 2468 "parser.yy" 8488 8519 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8489 8520 break; 8490 8521 8491 case 63 8:8492 8493 /* Line 1806 of yacc.c */ 8494 #line 247 6"parser.yy"8522 case 639: 8523 8524 /* Line 1806 of yacc.c */ 8525 #line 2470 "parser.yy" 8495 8526 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8496 8527 break; 8497 8528 8498 case 6 39:8499 8500 /* Line 1806 of yacc.c */ 8501 #line 24 81"parser.yy"8529 case 640: 8530 8531 /* Line 1806 of yacc.c */ 8532 #line 2475 "parser.yy" 8502 8533 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8503 8534 break; 8504 8535 8505 case 64 0:8506 8507 /* Line 1806 of yacc.c */ 8508 #line 24 83"parser.yy"8536 case 641: 8537 8538 /* Line 1806 of yacc.c */ 8539 #line 2477 "parser.yy" 8509 8540 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8510 8541 break; 8511 8542 8512 case 64 2:8513 8514 /* Line 1806 of yacc.c */ 8515 #line 249 8"parser.yy"8543 case 643: 8544 8545 /* Line 1806 of yacc.c */ 8546 #line 2492 "parser.yy" 8516 8547 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8517 8548 break; 8518 8549 8519 case 64 3:8520 8521 /* Line 1806 of yacc.c */ 8522 #line 2 500"parser.yy"8550 case 644: 8551 8552 /* Line 1806 of yacc.c */ 8553 #line 2494 "parser.yy" 8523 8554 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8524 8555 break; 8525 8556 8526 case 644: 8557 case 645: 8558 8559 /* Line 1806 of yacc.c */ 8560 #line 2499 "parser.yy" 8561 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8562 break; 8563 8564 case 646: 8565 8566 /* Line 1806 of yacc.c */ 8567 #line 2501 "parser.yy" 8568 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8569 break; 8570 8571 case 647: 8572 8573 /* Line 1806 of yacc.c */ 8574 #line 2503 "parser.yy" 8575 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8576 break; 8577 8578 case 648: 8527 8579 8528 8580 /* Line 1806 of yacc.c */ 8529 8581 #line 2505 "parser.yy" 8582 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8583 break; 8584 8585 case 649: 8586 8587 /* Line 1806 of yacc.c */ 8588 #line 2507 "parser.yy" 8589 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8590 break; 8591 8592 case 651: 8593 8594 /* Line 1806 of yacc.c */ 8595 #line 2513 "parser.yy" 8596 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8597 break; 8598 8599 case 652: 8600 8601 /* Line 1806 of yacc.c */ 8602 #line 2515 "parser.yy" 8603 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8604 break; 8605 8606 case 653: 8607 8608 /* Line 1806 of yacc.c */ 8609 #line 2517 "parser.yy" 8610 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8611 break; 8612 8613 case 654: 8614 8615 /* Line 1806 of yacc.c */ 8616 #line 2522 "parser.yy" 8617 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8618 break; 8619 8620 case 655: 8621 8622 /* Line 1806 of yacc.c */ 8623 #line 2524 "parser.yy" 8624 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8625 break; 8626 8627 case 656: 8628 8629 /* Line 1806 of yacc.c */ 8630 #line 2526 "parser.yy" 8631 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8632 break; 8633 8634 case 657: 8635 8636 /* Line 1806 of yacc.c */ 8637 #line 2532 "parser.yy" 8638 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8639 break; 8640 8641 case 658: 8642 8643 /* Line 1806 of yacc.c */ 8644 #line 2534 "parser.yy" 8645 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8646 break; 8647 8648 case 660: 8649 8650 /* Line 1806 of yacc.c */ 8651 #line 2540 "parser.yy" 8652 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8653 break; 8654 8655 case 661: 8656 8657 /* Line 1806 of yacc.c */ 8658 #line 2542 "parser.yy" 8659 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8660 break; 8661 8662 case 662: 8663 8664 /* Line 1806 of yacc.c */ 8665 #line 2544 "parser.yy" 8666 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8667 break; 8668 8669 case 663: 8670 8671 /* Line 1806 of yacc.c */ 8672 #line 2546 "parser.yy" 8673 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8674 break; 8675 8676 case 665: 8677 8678 /* Line 1806 of yacc.c */ 8679 #line 2561 "parser.yy" 8680 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8681 break; 8682 8683 case 666: 8684 8685 /* Line 1806 of yacc.c */ 8686 #line 2563 "parser.yy" 8687 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8688 break; 8689 8690 case 667: 8691 8692 /* Line 1806 of yacc.c */ 8693 #line 2568 "parser.yy" 8530 8694 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8531 8695 break; 8532 8696 8533 case 6 45:8534 8535 /* Line 1806 of yacc.c */ 8536 #line 25 07"parser.yy"8697 case 668: 8698 8699 /* Line 1806 of yacc.c */ 8700 #line 2570 "parser.yy" 8537 8701 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8538 8702 break; 8539 8703 8540 case 6 46:8541 8542 /* Line 1806 of yacc.c */ 8543 #line 25 09"parser.yy"8704 case 669: 8705 8706 /* Line 1806 of yacc.c */ 8707 #line 2572 "parser.yy" 8544 8708 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8545 8709 break; 8546 8710 8547 case 6 47:8548 8549 /* Line 1806 of yacc.c */ 8550 #line 25 11"parser.yy"8711 case 670: 8712 8713 /* Line 1806 of yacc.c */ 8714 #line 2574 "parser.yy" 8551 8715 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8552 8716 break; 8553 8717 8554 case 6 48:8555 8556 /* Line 1806 of yacc.c */ 8557 #line 25 13"parser.yy"8718 case 671: 8719 8720 /* Line 1806 of yacc.c */ 8721 #line 2576 "parser.yy" 8558 8722 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8559 8723 break; 8560 8724 8561 case 6 50:8562 8563 /* Line 1806 of yacc.c */ 8564 #line 25 19"parser.yy"8725 case 673: 8726 8727 /* Line 1806 of yacc.c */ 8728 #line 2582 "parser.yy" 8565 8729 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8566 8730 break; 8567 8731 8568 case 6 51:8569 8570 /* Line 1806 of yacc.c */ 8571 #line 25 21"parser.yy"8732 case 674: 8733 8734 /* Line 1806 of yacc.c */ 8735 #line 2584 "parser.yy" 8572 8736 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8573 8737 break; 8574 8738 8575 case 6 52:8576 8577 /* Line 1806 of yacc.c */ 8578 #line 25 23"parser.yy"8739 case 675: 8740 8741 /* Line 1806 of yacc.c */ 8742 #line 2586 "parser.yy" 8579 8743 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8580 8744 break; 8581 8745 8582 case 6 53:8583 8584 /* Line 1806 of yacc.c */ 8585 #line 25 28"parser.yy"8746 case 676: 8747 8748 /* Line 1806 of yacc.c */ 8749 #line 2591 "parser.yy" 8586 8750 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8587 8751 break; 8588 8752 8589 case 6 54:8590 8591 /* Line 1806 of yacc.c */ 8592 #line 25 30"parser.yy"8753 case 677: 8754 8755 /* Line 1806 of yacc.c */ 8756 #line 2593 "parser.yy" 8593 8757 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8594 8758 break; 8595 8759 8596 case 6 55:8597 8598 /* Line 1806 of yacc.c */ 8599 #line 25 32"parser.yy"8760 case 678: 8761 8762 /* Line 1806 of yacc.c */ 8763 #line 2595 "parser.yy" 8600 8764 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8601 8765 break; 8602 8766 8603 case 656: 8604 8605 /* Line 1806 of yacc.c */ 8606 #line 2538 "parser.yy" 8767 case 680: 8768 8769 /* Line 1806 of yacc.c */ 8770 #line 2602 "parser.yy" 8771 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8772 break; 8773 8774 case 682: 8775 8776 /* Line 1806 of yacc.c */ 8777 #line 2613 "parser.yy" 8607 8778 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8608 8779 break; 8609 8780 8610 case 6 57:8611 8612 /* Line 1806 of yacc.c */ 8613 #line 2 540"parser.yy"8614 { (yyval.decl) = DeclarationNode::new Array( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }8615 break; 8616 8617 case 6 59:8618 8619 /* Line 1806 of yacc.c */ 8620 #line 2 546"parser.yy"8621 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }8622 break; 8623 8624 case 6 60:8625 8626 /* Line 1806 of yacc.c */ 8627 #line 2 548"parser.yy"8628 { (yyval.decl) = DeclarationNode::new VarArray( 0); }8629 break; 8630 8631 case 6 61:8632 8633 /* Line 1806 of yacc.c */ 8634 #line 2 550"parser.yy"8635 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false )); }8636 break; 8637 8638 case 6 62:8639 8640 /* Line 1806 of yacc.c */ 8641 #line 2 552"parser.yy"8642 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 )); }8643 break; 8644 8645 case 6 64:8646 8647 /* Line 1806 of yacc.c */ 8648 #line 2 567"parser.yy"8781 case 683: 8782 8783 /* Line 1806 of yacc.c */ 8784 #line 2616 "parser.yy" 8785 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8786 break; 8787 8788 case 684: 8789 8790 /* Line 1806 of yacc.c */ 8791 #line 2618 "parser.yy" 8792 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8793 break; 8794 8795 case 685: 8796 8797 /* Line 1806 of yacc.c */ 8798 #line 2621 "parser.yy" 8799 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8800 break; 8801 8802 case 686: 8803 8804 /* Line 1806 of yacc.c */ 8805 #line 2623 "parser.yy" 8806 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8807 break; 8808 8809 case 687: 8810 8811 /* Line 1806 of yacc.c */ 8812 #line 2625 "parser.yy" 8813 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8814 break; 8815 8816 case 689: 8817 8818 /* Line 1806 of yacc.c */ 8819 #line 2639 "parser.yy" 8649 8820 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8650 8821 break; 8651 8822 8652 case 6 65:8653 8654 /* Line 1806 of yacc.c */ 8655 #line 2 569"parser.yy"8823 case 690: 8824 8825 /* Line 1806 of yacc.c */ 8826 #line 2641 "parser.yy" 8656 8827 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8657 8828 break; 8658 8829 8659 case 6 66:8660 8661 /* Line 1806 of yacc.c */ 8662 #line 2 574"parser.yy"8830 case 691: 8831 8832 /* Line 1806 of yacc.c */ 8833 #line 2646 "parser.yy" 8663 8834 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8664 8835 break; 8665 8836 8666 case 6 67:8667 8668 /* Line 1806 of yacc.c */ 8669 #line 2 576"parser.yy"8837 case 692: 8838 8839 /* Line 1806 of yacc.c */ 8840 #line 2648 "parser.yy" 8670 8841 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8671 8842 break; 8672 8843 8673 case 6 68:8674 8675 /* Line 1806 of yacc.c */ 8676 #line 2 578"parser.yy"8844 case 693: 8845 8846 /* Line 1806 of yacc.c */ 8847 #line 2650 "parser.yy" 8677 8848 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8678 8849 break; 8679 8850 8680 case 6 69:8681 8682 /* Line 1806 of yacc.c */ 8683 #line 2 580"parser.yy"8851 case 694: 8852 8853 /* Line 1806 of yacc.c */ 8854 #line 2652 "parser.yy" 8684 8855 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8685 8856 break; 8686 8857 8687 case 6 70:8688 8689 /* Line 1806 of yacc.c */ 8690 #line 2 582"parser.yy"8858 case 695: 8859 8860 /* Line 1806 of yacc.c */ 8861 #line 2654 "parser.yy" 8691 8862 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8692 8863 break; 8693 8864 8694 case 6 72:8695 8696 /* Line 1806 of yacc.c */ 8697 #line 2 588"parser.yy"8865 case 697: 8866 8867 /* Line 1806 of yacc.c */ 8868 #line 2660 "parser.yy" 8698 8869 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8699 8870 break; 8700 8871 8701 case 6 73:8702 8703 /* Line 1806 of yacc.c */ 8704 #line 2 590"parser.yy"8872 case 698: 8873 8874 /* Line 1806 of yacc.c */ 8875 #line 2662 "parser.yy" 8705 8876 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8706 8877 break; 8707 8878 8708 case 6 74:8709 8710 /* Line 1806 of yacc.c */ 8711 #line 2 592"parser.yy"8879 case 699: 8880 8881 /* Line 1806 of yacc.c */ 8882 #line 2664 "parser.yy" 8712 8883 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8713 8884 break; 8714 8885 8715 case 675: 8716 8717 /* Line 1806 of yacc.c */ 8718 #line 2597 "parser.yy" 8719 { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); } 8720 break; 8721 8722 case 676: 8723 8724 /* Line 1806 of yacc.c */ 8725 #line 2599 "parser.yy" 8886 case 700: 8887 8888 /* Line 1806 of yacc.c */ 8889 #line 2669 "parser.yy" 8726 8890 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8727 8891 break; 8728 8892 8729 case 677:8730 8731 /* Line 1806 of yacc.c */ 8732 #line 26 01 "parser.yy"8893 case 701: 8894 8895 /* Line 1806 of yacc.c */ 8896 #line 2671 "parser.yy" 8733 8897 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8734 8898 break; 8735 8899 8736 case 679: 8737 8738 /* Line 1806 of yacc.c */ 8739 #line 2608 "parser.yy" 8740 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8741 break; 8742 8743 case 681: 8744 8745 /* Line 1806 of yacc.c */ 8746 #line 2619 "parser.yy" 8747 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8748 break; 8749 8750 case 682: 8751 8752 /* Line 1806 of yacc.c */ 8753 #line 2622 "parser.yy" 8754 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8755 break; 8756 8757 case 683: 8758 8759 /* Line 1806 of yacc.c */ 8760 #line 2624 "parser.yy" 8761 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8762 break; 8763 8764 case 684: 8765 8766 /* Line 1806 of yacc.c */ 8767 #line 2627 "parser.yy" 8768 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8769 break; 8770 8771 case 685: 8772 8773 /* Line 1806 of yacc.c */ 8774 #line 2629 "parser.yy" 8775 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8776 break; 8777 8778 case 686: 8779 8780 /* Line 1806 of yacc.c */ 8781 #line 2631 "parser.yy" 8782 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8783 break; 8784 8785 case 688: 8786 8787 /* Line 1806 of yacc.c */ 8788 #line 2645 "parser.yy" 8789 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8790 break; 8791 8792 case 689: 8793 8794 /* Line 1806 of yacc.c */ 8795 #line 2647 "parser.yy" 8796 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8797 break; 8798 8799 case 690: 8800 8801 /* Line 1806 of yacc.c */ 8802 #line 2652 "parser.yy" 8803 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8804 break; 8805 8806 case 691: 8807 8808 /* Line 1806 of yacc.c */ 8809 #line 2654 "parser.yy" 8810 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8811 break; 8812 8813 case 692: 8814 8815 /* Line 1806 of yacc.c */ 8816 #line 2656 "parser.yy" 8817 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8818 break; 8819 8820 case 693: 8821 8822 /* Line 1806 of yacc.c */ 8823 #line 2658 "parser.yy" 8824 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8825 break; 8826 8827 case 694: 8828 8829 /* Line 1806 of yacc.c */ 8830 #line 2660 "parser.yy" 8831 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8832 break; 8833 8834 case 696: 8835 8836 /* Line 1806 of yacc.c */ 8837 #line 2666 "parser.yy" 8838 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8839 break; 8840 8841 case 697: 8842 8843 /* Line 1806 of yacc.c */ 8844 #line 2668 "parser.yy" 8845 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8846 break; 8847 8848 case 698: 8849 8850 /* Line 1806 of yacc.c */ 8851 #line 2670 "parser.yy" 8852 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8853 break; 8854 8855 case 699: 8856 8857 /* Line 1806 of yacc.c */ 8858 #line 2675 "parser.yy" 8859 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8860 break; 8861 8862 case 700: 8863 8864 /* Line 1806 of yacc.c */ 8865 #line 2677 "parser.yy" 8866 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8867 break; 8868 8869 case 703: 8870 8871 /* Line 1806 of yacc.c */ 8872 #line 2687 "parser.yy" 8900 case 704: 8901 8902 /* Line 1806 of yacc.c */ 8903 #line 2681 "parser.yy" 8873 8904 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8874 8905 break; 8875 8906 8876 case 706: 8907 case 707: 8908 8909 /* Line 1806 of yacc.c */ 8910 #line 2691 "parser.yy" 8911 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8912 break; 8913 8914 case 708: 8915 8916 /* Line 1806 of yacc.c */ 8917 #line 2693 "parser.yy" 8918 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8919 break; 8920 8921 case 709: 8922 8923 /* Line 1806 of yacc.c */ 8924 #line 2695 "parser.yy" 8925 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8926 break; 8927 8928 case 710: 8877 8929 8878 8930 /* Line 1806 of yacc.c */ 8879 8931 #line 2697 "parser.yy" 8932 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8933 break; 8934 8935 case 711: 8936 8937 /* Line 1806 of yacc.c */ 8938 #line 2699 "parser.yy" 8880 8939 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8881 8940 break; 8882 8941 8883 case 7 07:8884 8885 /* Line 1806 of yacc.c */ 8886 #line 2 699"parser.yy"8942 case 712: 8943 8944 /* Line 1806 of yacc.c */ 8945 #line 2701 "parser.yy" 8887 8946 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8888 8947 break; 8889 8948 8890 case 708: 8891 8892 /* Line 1806 of yacc.c */ 8893 #line 2701 "parser.yy" 8894 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8895 break; 8896 8897 case 709: 8898 8899 /* Line 1806 of yacc.c */ 8900 #line 2703 "parser.yy" 8901 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8902 break; 8903 8904 case 710: 8905 8906 /* Line 1806 of yacc.c */ 8907 #line 2705 "parser.yy" 8908 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8909 break; 8910 8911 case 711: 8912 8913 /* Line 1806 of yacc.c */ 8914 #line 2707 "parser.yy" 8915 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8916 break; 8917 8918 case 712: 8949 case 713: 8950 8951 /* Line 1806 of yacc.c */ 8952 #line 2708 "parser.yy" 8953 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8954 break; 8955 8956 case 714: 8957 8958 /* Line 1806 of yacc.c */ 8959 #line 2710 "parser.yy" 8960 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8961 break; 8962 8963 case 715: 8964 8965 /* Line 1806 of yacc.c */ 8966 #line 2712 "parser.yy" 8967 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8968 break; 8969 8970 case 716: 8919 8971 8920 8972 /* Line 1806 of yacc.c */ 8921 8973 #line 2714 "parser.yy" 8922 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false) ); }8923 break; 8924 8925 case 71 3:8974 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8975 break; 8976 8977 case 717: 8926 8978 8927 8979 /* Line 1806 of yacc.c */ … … 8930 8982 break; 8931 8983 8932 case 71 4:8984 case 718: 8933 8985 8934 8986 /* Line 1806 of yacc.c */ 8935 8987 #line 2718 "parser.yy" 8988 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8989 break; 8990 8991 case 719: 8992 8993 /* Line 1806 of yacc.c */ 8994 #line 2720 "parser.yy" 8995 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8996 break; 8997 8998 case 720: 8999 9000 /* Line 1806 of yacc.c */ 9001 #line 2722 "parser.yy" 8936 9002 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8937 9003 break; 8938 9004 8939 case 7 15:8940 8941 /* Line 1806 of yacc.c */ 8942 #line 272 0"parser.yy"9005 case 721: 9006 9007 /* Line 1806 of yacc.c */ 9008 #line 2724 "parser.yy" 8943 9009 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8944 9010 break; 8945 9011 8946 case 716: 8947 8948 /* Line 1806 of yacc.c */ 8949 #line 2722 "parser.yy" 8950 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8951 break; 8952 8953 case 717: 8954 8955 /* Line 1806 of yacc.c */ 8956 #line 2724 "parser.yy" 8957 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8958 break; 8959 8960 case 718: 9012 case 722: 8961 9013 8962 9014 /* Line 1806 of yacc.c */ … … 8965 9017 break; 8966 9018 8967 case 719: 8968 8969 /* Line 1806 of yacc.c */ 8970 #line 2728 "parser.yy" 9019 case 723: 9020 9021 /* Line 1806 of yacc.c */ 9022 #line 2731 "parser.yy" 9023 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 9024 break; 9025 9026 case 724: 9027 9028 /* Line 1806 of yacc.c */ 9029 #line 2733 "parser.yy" 9030 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 9031 break; 9032 9033 case 725: 9034 9035 /* Line 1806 of yacc.c */ 9036 #line 2738 "parser.yy" 9037 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 9038 break; 9039 9040 case 726: 9041 9042 /* Line 1806 of yacc.c */ 9043 #line 2740 "parser.yy" 9044 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 9045 break; 9046 9047 case 728: 9048 9049 /* Line 1806 of yacc.c */ 9050 #line 2767 "parser.yy" 9051 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 9052 break; 9053 9054 case 732: 9055 9056 /* Line 1806 of yacc.c */ 9057 #line 2778 "parser.yy" 9058 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9059 break; 9060 9061 case 733: 9062 9063 /* Line 1806 of yacc.c */ 9064 #line 2780 "parser.yy" 9065 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9066 break; 9067 9068 case 734: 9069 9070 /* Line 1806 of yacc.c */ 9071 #line 2782 "parser.yy" 9072 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9073 break; 9074 9075 case 735: 9076 9077 /* Line 1806 of yacc.c */ 9078 #line 2784 "parser.yy" 9079 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9080 break; 9081 9082 case 736: 9083 9084 /* Line 1806 of yacc.c */ 9085 #line 2786 "parser.yy" 9086 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9087 break; 9088 9089 case 737: 9090 9091 /* Line 1806 of yacc.c */ 9092 #line 2788 "parser.yy" 9093 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9094 break; 9095 9096 case 738: 9097 9098 /* Line 1806 of yacc.c */ 9099 #line 2795 "parser.yy" 9100 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9101 break; 9102 9103 case 739: 9104 9105 /* Line 1806 of yacc.c */ 9106 #line 2797 "parser.yy" 8971 9107 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8972 9108 break; 8973 9109 8974 case 720: 8975 8976 /* Line 1806 of yacc.c */ 8977 #line 2730 "parser.yy" 8978 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8979 break; 8980 8981 case 721: 8982 8983 /* Line 1806 of yacc.c */ 8984 #line 2732 "parser.yy" 9110 case 740: 9111 9112 /* Line 1806 of yacc.c */ 9113 #line 2799 "parser.yy" 8985 9114 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8986 9115 break; 8987 9116 8988 case 722: 8989 8990 /* Line 1806 of yacc.c */ 8991 #line 2737 "parser.yy" 8992 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8993 break; 8994 8995 case 723: 8996 8997 /* Line 1806 of yacc.c */ 8998 #line 2739 "parser.yy" 8999 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 9000 break; 9001 9002 case 724: 9003 9004 /* Line 1806 of yacc.c */ 9005 #line 2744 "parser.yy" 9006 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 9007 break; 9008 9009 case 725: 9010 9011 /* Line 1806 of yacc.c */ 9012 #line 2746 "parser.yy" 9013 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 9014 break; 9015 9016 case 727: 9017 9018 /* Line 1806 of yacc.c */ 9019 #line 2773 "parser.yy" 9020 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 9021 break; 9022 9023 case 731: 9024 9025 /* Line 1806 of yacc.c */ 9026 #line 2784 "parser.yy" 9027 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9028 break; 9029 9030 case 732: 9031 9032 /* Line 1806 of yacc.c */ 9033 #line 2786 "parser.yy" 9034 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9035 break; 9036 9037 case 733: 9038 9039 /* Line 1806 of yacc.c */ 9040 #line 2788 "parser.yy" 9041 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9042 break; 9043 9044 case 734: 9045 9046 /* Line 1806 of yacc.c */ 9047 #line 2790 "parser.yy" 9048 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9049 break; 9050 9051 case 735: 9052 9053 /* Line 1806 of yacc.c */ 9054 #line 2792 "parser.yy" 9055 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9056 break; 9057 9058 case 736: 9059 9060 /* Line 1806 of yacc.c */ 9061 #line 2794 "parser.yy" 9062 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9063 break; 9064 9065 case 737: 9117 case 741: 9066 9118 9067 9119 /* Line 1806 of yacc.c */ … … 9070 9122 break; 9071 9123 9072 case 7 38:9124 case 742: 9073 9125 9074 9126 /* Line 1806 of yacc.c */ … … 9077 9129 break; 9078 9130 9079 case 7 39:9131 case 743: 9080 9132 9081 9133 /* Line 1806 of yacc.c */ … … 9084 9136 break; 9085 9137 9086 case 740: 9087 9088 /* Line 1806 of yacc.c */ 9089 #line 2807 "parser.yy" 9090 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9091 break; 9092 9093 case 741: 9094 9095 /* Line 1806 of yacc.c */ 9096 #line 2809 "parser.yy" 9097 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9098 break; 9099 9100 case 742: 9101 9102 /* Line 1806 of yacc.c */ 9103 #line 2811 "parser.yy" 9104 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9105 break; 9106 9107 case 743: 9108 9109 /* Line 1806 of yacc.c */ 9110 #line 2816 "parser.yy" 9138 case 744: 9139 9140 /* Line 1806 of yacc.c */ 9141 #line 2810 "parser.yy" 9111 9142 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9112 9143 break; 9113 9144 9114 case 74 4:9115 9116 /* Line 1806 of yacc.c */ 9117 #line 28 21"parser.yy"9145 case 745: 9146 9147 /* Line 1806 of yacc.c */ 9148 #line 2815 "parser.yy" 9118 9149 { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); } 9119 9150 break; 9120 9151 9121 case 74 5:9122 9123 /* Line 1806 of yacc.c */ 9124 #line 28 23"parser.yy"9152 case 746: 9153 9154 /* Line 1806 of yacc.c */ 9155 #line 2817 "parser.yy" 9125 9156 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9126 9157 break; 9127 9158 9128 case 74 6:9129 9130 /* Line 1806 of yacc.c */ 9131 #line 28 25"parser.yy"9159 case 747: 9160 9161 /* Line 1806 of yacc.c */ 9162 #line 2819 "parser.yy" 9132 9163 { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); } 9133 9164 break; 9134 9165 9135 case 7 49:9136 9137 /* Line 1806 of yacc.c */ 9138 #line 284 9"parser.yy"9166 case 750: 9167 9168 /* Line 1806 of yacc.c */ 9169 #line 2843 "parser.yy" 9139 9170 { (yyval.en) = 0; } 9140 9171 break; 9141 9172 9142 case 75 0:9143 9144 /* Line 1806 of yacc.c */ 9145 #line 28 51"parser.yy"9173 case 751: 9174 9175 /* Line 1806 of yacc.c */ 9176 #line 2845 "parser.yy" 9146 9177 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9147 9178 break; … … 9150 9181 9151 9182 /* Line 1806 of yacc.c */ 9152 #line 91 53"Parser/parser.cc"9183 #line 9184 "Parser/parser.cc" 9153 9184 default: break; 9154 9185 } … … 9381 9412 9382 9413 /* Line 2067 of yacc.c */ 9383 #line 28 54"parser.yy"9414 #line 2848 "parser.yy" 9384 9415 9385 9416 // ----end of grammar---- 9417 9418 extern char *yytext; 9386 9419 9387 9420 void yyerror( const char * ) { -
src/Parser/parser.h
r79841be r6943a987 276 276 InitializerNode *in; 277 277 OperKinds op; 278 std::string *str; 278 279 bool flag; 279 280 … … 281 282 282 283 /* Line 2068 of yacc.c */ 283 #line 28 4"Parser/parser.h"284 #line 285 "Parser/parser.h" 284 285 } YYSTYPE; 285 286 # define YYSTYPE_IS_TRIVIAL 1 -
src/Parser/parser.yy
r79841be r6943a987 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 11 18:02:57201613 // Update Count : 1 86112 // Last Modified On : Fri Aug 26 16:45:44 2016 13 // Update Count : 1964 14 14 // 15 15 … … 43 43 #define YYDEBUG_LEXER_TEXT (yylval) // lexer loads this up each time 44 44 #define YYDEBUG 1 // get the pretty debugging code to compile 45 extern char *yytext;46 45 47 46 #undef __GNUC_MINOR__ … … 56 55 #include "LinkageSpec.h" 57 56 58 DeclarationNode *theTree = 0; // the resulting parse tree 59 LinkageSpec::Type linkage = LinkageSpec::Cforall; 60 std::stack< LinkageSpec::Type > linkageStack; 61 TypedefTable typedefTable; 62 63 void appendStr( std::string &to, std::string *from ) { 57 extern DeclarationNode * parseTree; 58 extern LinkageSpec::Spec linkage; 59 extern TypedefTable typedefTable; 60 61 std::stack< LinkageSpec::Spec > linkageStack; 62 63 void appendStr( std::string *to, std::string *from ) { 64 64 // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string. 65 to .insert( to.length() - 1, from->substr( 1, from->length() - 2 ) );65 to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) ); 66 66 } // appendStr 67 67 %} … … 126 126 InitializerNode *in; 127 127 OperKinds op; 128 std::string *str; 128 129 bool flag; 129 130 } … … 131 132 %type<tok> identifier no_01_identifier no_attr_identifier zero_one 132 133 %type<tok> identifier_or_type_name no_attr_identifier_or_type_name no_01_identifier_or_type_name 133 %type<constant> string_literal_list 134 %type<constant> string_literal 135 %type<str> string_literal_list 134 136 135 137 // expressions … … 143 145 %type<en> constant_expression assignment_expression assignment_expression_opt 144 146 %type<en> comma_expression comma_expression_opt 145 //%type<en> argument_expression_list argument_expression for_control_expression assignment_opt146 147 %type<en> argument_expression_list argument_expression assignment_opt 147 148 %type<fctl> for_control_expression … … 162 163 %type<sn> case_value_list case_label case_label_list 163 164 %type<sn> switch_clause_list_opt switch_clause_list choose_clause_list_opt choose_clause_list 164 %type< pn> handler_list handler_clause finally_clause165 %type<sn> handler_list handler_clause finally_clause 165 166 166 167 // declarations … … 224 225 %type<decl> paren_identifier paren_type 225 226 226 %type<decl> storage_class storage_class_ name storage_class_list227 %type<decl> storage_class storage_class_list 227 228 228 229 %type<decl> sue_declaration_specifier sue_type_specifier … … 297 298 298 299 push: 299 { 300 typedefTable.enterScope(); 301 } 300 { typedefTable.enterScope(); } 302 301 ; 303 302 304 303 pop: 305 { 306 typedefTable.leaveScope(); 307 } 304 { typedefTable.leaveScope(); } 308 305 ; 309 306 … … 312 309 constant: 313 310 // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant". 314 INTEGERconstant{ $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }311 INTEGERconstant { $$ = new ExpressionNode( build_constantInteger( *$1 ) ); } 315 312 | FLOATINGconstant { $$ = new ExpressionNode( build_constantFloat( *$1 ) ); } 316 313 | CHARACTERconstant { $$ = new ExpressionNode( build_constantChar( *$1 ) ); } … … 338 335 ; 339 336 337 string_literal: 338 string_literal_list { $$ = build_constantStr( *$1 ); } 339 ; 340 340 341 string_literal_list: // juxtaposed strings are concatenated 341 STRINGliteral { $$ = build_constantStr( *$1 ); }342 STRINGliteral { $$ = $1; } // conversion from tok to str 342 343 | string_literal_list STRINGliteral 343 344 { 344 appendStr( $1 ->get_constant()->get_value(), $2 );345 appendStr( $1, $2 ); // append 2nd juxtaposed string to 1st 345 346 delete $2; // allocated by lexer 346 $$ = $1; 347 $$ = $1; // conversion from tok to str 347 348 } 348 349 ; … … 371 372 | postfix_expression '(' argument_expression_list ')' 372 373 { $$ = new ExpressionNode( build_func( $1, $3 ) ); } 373 374 // ambiguity with .0 so space required after field-selection, e.g. 374 375 // struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1; 375 376 | postfix_expression '.' no_attr_identifier … … 389 390 Token fn; 390 391 fn.str = new std::string( "?{}" ); // location undefined 391 $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_l ink( $3 ) ) );392 $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) ); 392 393 } 393 394 ; … … 396 397 argument_expression 397 398 | argument_expression_list ',' argument_expression 398 { $$ = (ExpressionNode *)( $1->set_l ink( $3 )); }399 { $$ = (ExpressionNode *)( $1->set_last( $3 )); } 399 400 ; 400 401 … … 407 408 field_list: // CFA, tuple field selector 408 409 field 409 | field_list ',' field { $$ = (ExpressionNode *)$1->set_l ink( $3 ); }410 | field_list ',' field { $$ = (ExpressionNode *)$1->set_last( $3 ); } 410 411 ; 411 412 … … 413 414 no_attr_identifier 414 415 { $$ = new ExpressionNode( build_varref( $1 ) ); } 415 416 // ambiguity with .0 so space required after field-selection, e.g. 416 417 // struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1; 417 418 | no_attr_identifier '.' field … … 431 432 | constant 432 433 { $$ = $1; } 433 | string_literal _list434 | string_literal 434 435 { $$ = new ExpressionNode( $1 ); } 435 436 | EXTENSION cast_expression // GCC … … 607 608 assignment_operator: 608 609 '=' { $$ = OperKinds::Assign; } 610 | ATassign { $$ = OperKinds::AtAssn; } 609 611 | MULTassign { $$ = OperKinds::MulAssn; } 610 612 | DIVassign { $$ = OperKinds::DivAssn; } … … 627 629 { $$ = new ExpressionNode( build_tuple( $3 ) ); } 628 630 | '[' push ',' tuple_expression_list pop ']' 629 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_l ink( $4 ) ) ); }631 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( $4 ) ) ); } 630 632 | '[' push assignment_expression ',' tuple_expression_list pop ']' 631 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)$3->set_l ink( $5 ) ) ); }633 { $$ = new ExpressionNode( build_tuple( (ExpressionNode *)$3->set_last( $5 ) ) ); } 632 634 ; 633 635 … … 635 637 assignment_expression_opt 636 638 | tuple_expression_list ',' assignment_expression_opt 637 { $$ = (ExpressionNode *)$1->set_l ink( $3 ); }639 { $$ = (ExpressionNode *)$1->set_last( $3 ); } 638 640 ; 639 641 … … 665 667 Token fn; 666 668 fn.str = new std::string( "^?{}" ); // location undefined 667 $$ = new StatementNode 2( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_link( $4 ) ) ) ) );669 $$ = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_last( $4 ) ) ) ) ); 668 670 } 669 671 ; … … 679 681 compound_statement: 680 682 '{' '}' 681 { $$ = new CompoundStmtNode( (StatementNode *)0); }683 { $$ = new StatementNode( build_compound( (StatementNode *)0 ) ); } 682 684 | '{' 683 685 // Two scopes are necessary because the block itself has a scope, but every declaration within the block also … … 686 688 local_label_declaration_opt // GCC, local labels 687 689 block_item_list pop '}' // C99, intermix declarations and statements 688 { $$ = new CompoundStmtNode( $5); }690 { $$ = new StatementNode( build_compound( $5 ) ); } 689 691 ; 690 692 … … 692 694 block_item 693 695 | block_item_list push block_item 694 { if ( $1 != 0 ) { $1->set_l ink( $3 ); $$ = $1; } }696 { if ( $1 != 0 ) { $1->set_last( $3 ); $$ = $1; } } 695 697 ; 696 698 … … 700 702 | EXTENSION declaration // GCC 701 703 { // mark all fields in list 702 for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )704 for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) 703 705 iter->set_extension( true ); 704 706 $$ = new StatementNode( $2 ); … … 712 714 statement 713 715 | statement_list statement 714 { if ( $1 != 0 ) { $1->set_l ink( $2 ); $$ = $1; } }716 { if ( $1 != 0 ) { $1->set_last( $2 ); $$ = $1; } } 715 717 ; 716 718 717 719 expression_statement: 718 720 comma_expression_opt ';' 719 { $$ = new StatementNode 2( build_expr( $1 ) ); }721 { $$ = new StatementNode( build_expr( $1 ) ); } 720 722 ; 721 723 … … 723 725 IF '(' comma_expression ')' statement %prec THEN 724 726 // explicitly deal with the shift/reduce conflict on if/else 725 { $$ = new StatementNode 2( build_if( $3, $5, nullptr ) ); }727 { $$ = new StatementNode( build_if( $3, $5, nullptr ) ); } 726 728 | IF '(' comma_expression ')' statement ELSE statement 727 { $$ = new StatementNode 2( build_if( $3, $5, $7 ) ); }729 { $$ = new StatementNode( build_if( $3, $5, $7 ) ); } 728 730 | SWITCH '(' comma_expression ')' case_clause // CFA 729 { $$ = new StatementNode 2( build_switch( $3, $5 ) ); }731 { $$ = new StatementNode( build_switch( $3, $5 ) ); } 730 732 | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA 731 733 { 732 StatementNode *sw = new StatementNode 2( build_switch( $3, $8 ) );734 StatementNode *sw = new StatementNode( build_switch( $3, $8 ) ); 733 735 // The semantics of the declaration list is changed to include associated initialization, which is performed 734 736 // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound … … 736 738 // therefore, are removed from the grammar even though C allows it. The change also applies to choose 737 739 // statement. 738 $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;740 $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw; 739 741 } 740 742 | CHOOSE '(' comma_expression ')' case_clause // CFA 741 { $$ = new StatementNode 2( build_switch( $3, $5 ) ); }743 { $$ = new StatementNode( build_switch( $3, $5 ) ); } 742 744 | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA 743 745 { 744 StatementNode *sw = new StatementNode 2( build_switch( $3, $8 ) );745 $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;746 StatementNode *sw = new StatementNode( build_switch( $3, $8 ) ); 747 $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw; 746 748 } 747 749 ; … … 758 760 759 761 case_value_list: // CFA 760 //case_value { $$ = new StatementNode( StatementNode::Case, $1, 0 ); } 761 case_value { $$ = new StatementNode2( build_case( $1 ) ); } 762 case_value { $$ = new StatementNode( build_case( $1 ) ); } 762 763 // convert case list, e.g., "case 1, 3, 5:" into "case 1: case 3: case 5" 763 | case_value_list ',' case_value { $$ = (StatementNode *)($1->set_l ink( new StatementNode2( build_case( $3 ) ) ) ); }764 | case_value_list ',' case_value { $$ = (StatementNode *)($1->set_last( new StatementNode( build_case( $3 ) ) ) ); } 764 765 ; 765 766 766 767 case_label: // CFA 767 768 CASE case_value_list ':' { $$ = $2; } 768 | DEFAULT ':' { $$ = new StatementNode 2( build_default() ); }769 | DEFAULT ':' { $$ = new StatementNode( build_default() ); } 769 770 // A semantic check is required to ensure only one default clause per switch/choose statement. 770 771 ; … … 772 773 case_label_list: // CFA 773 774 case_label 774 | case_label_list case_label { $$ = (StatementNode *)( $1->set_l ink( $2 )); }775 | case_label_list case_label { $$ = (StatementNode *)( $1->set_last( $2 )); } 775 776 ; 776 777 777 778 case_clause: // CFA 778 case_label_list statement { $$ = $1->append_last_case( new CompoundStmtNode( $2) ); }779 case_label_list statement { $$ = $1->append_last_case( new StatementNode( build_compound( $2 ) ) ); } 779 780 ; 780 781 … … 787 788 switch_clause_list: // CFA 788 789 case_label_list statement_list 789 { $$ = $1->append_last_case( new CompoundStmtNode( $2) ); }790 { $$ = $1->append_last_case( new StatementNode( build_compound( $2 ) ) ); } 790 791 | switch_clause_list case_label_list statement_list 791 { $$ = (StatementNode *)( $1->set_l ink( $2->append_last_case( new CompoundStmtNode( $3) ) ) ); }792 { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( $3 ) ) ) ) ); } 792 793 ; 793 794 … … 802 803 { $$ = $1->append_last_case( $2 ); } 803 804 | case_label_list statement_list fall_through_opt 804 { $$ = $1->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$2, *$3 ) ) ) ); }805 { $$ = $1->append_last_case( new StatementNode( build_compound( (StatementNode *)$2->set_last( $3 ) ) ) ); } 805 806 | choose_clause_list case_label_list fall_through 806 { $$ = (StatementNode *)( $1->set_l ink( $2->append_last_case( $3 ))); }807 { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( $3 ))); } 807 808 | choose_clause_list case_label_list statement_list fall_through_opt 808 { $$ = (StatementNode *)( $1->set_l ink( $2->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$3, *$4 ) ) ) ) ) ); }809 { $$ = (StatementNode *)( $1->set_last( $2->append_last_case( new StatementNode( build_compound( (StatementNode *)$3->set_last( $4 ) ) ) ) ) ); } 809 810 ; 810 811 811 812 fall_through_opt: // CFA 812 813 // empty 813 { $$ = new StatementNode 2( build_branch( "",BranchStmt::Break ) ); } // insert implicit break814 { $$ = new StatementNode( build_branch( BranchStmt::Break ) ); } // insert implicit break 814 815 | fall_through 815 816 ; … … 824 825 iteration_statement: 825 826 WHILE '(' comma_expression ')' statement 826 { $$ = new StatementNode 2( build_while( $3, $5 ) ); }827 { $$ = new StatementNode( build_while( $3, $5 ) ); } 827 828 | DO statement WHILE '(' comma_expression ')' ';' 828 { $$ = new StatementNode 2( build_while( $5, $2 ) ); }829 { $$ = new StatementNode( build_while( $5, $2 ) ); } 829 830 | FOR '(' push for_control_expression ')' statement 830 { $$ = new StatementNode 2( build_for( $4, $6 ) ); }831 { $$ = new StatementNode( build_for( $4, $6 ) ); } 831 832 ; 832 833 … … 840 841 jump_statement: 841 842 GOTO IDENTIFIER ';' 842 { $$ = new StatementNode 2( build_branch( *$2, BranchStmt::Goto ) ); }843 { $$ = new StatementNode( build_branch( $2, BranchStmt::Goto ) ); } 843 844 | GOTO '*' comma_expression ';' // GCC, computed goto 844 845 // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3); 845 846 // whereas normal operator precedence yields goto (*i)+3; 846 { $$ = new StatementNode 2( build_computedgoto( $3 ) ); }847 { $$ = new StatementNode( build_computedgoto( $3 ) ); } 847 848 | CONTINUE ';' 848 849 // A semantic check is required to ensure this statement appears only in the body of an iteration statement. 849 { $$ = new StatementNode 2( build_branch( "",BranchStmt::Continue ) ); }850 { $$ = new StatementNode( build_branch( BranchStmt::Continue ) ); } 850 851 | CONTINUE IDENTIFIER ';' // CFA, multi-level continue 851 852 // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and 852 853 // the target of the transfer appears only at the start of an iteration statement. 853 { $$ = new StatementNode 2( build_branch( *$2, BranchStmt::Continue ) ); delete $2; }854 { $$ = new StatementNode( build_branch( $2, BranchStmt::Continue ) ); } 854 855 | BREAK ';' 855 856 // A semantic check is required to ensure this statement appears only in the body of an iteration statement. 856 { $$ = new StatementNode 2( build_branch( "",BranchStmt::Break ) ); }857 { $$ = new StatementNode( build_branch( BranchStmt::Break ) ); } 857 858 | BREAK IDENTIFIER ';' // CFA, multi-level exit 858 859 // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and 859 860 // the target of the transfer appears only at the start of an iteration statement. 860 { $$ = new StatementNode 2( build_branch( *$2, BranchStmt::Break ) ); delete $2; }861 { $$ = new StatementNode( build_branch( $2, BranchStmt::Break ) ); } 861 862 | RETURN comma_expression_opt ';' 862 { $$ = new StatementNode 2( build_return( $2 ) ); }863 { $$ = new StatementNode( build_return( $2 ) ); } 863 864 | THROW assignment_expression_opt ';' // handles rethrow 864 { $$ = new StatementNode 2( build_throw( $2 ) ); }865 { $$ = new StatementNode( build_throw( $2 ) ); } 865 866 | THROWRESUME assignment_expression_opt ';' // handles reresume 866 { $$ = new StatementNode 2( build_throw( $2 ) ); }867 { $$ = new StatementNode( build_throw( $2 ) ); } 867 868 | THROWRESUME assignment_expression_opt AT assignment_expression ';' // handles reresume 868 { $$ = new StatementNode 2( build_throw( $2 ) ); }869 { $$ = new StatementNode( build_throw( $2 ) ); } 869 870 ; 870 871 871 872 exception_statement: 872 873 TRY compound_statement handler_list 873 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }874 { $$ = new StatementNode( build_try( $2, $3, 0 ) ); } 874 875 | TRY compound_statement finally_clause 875 { $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); }876 { $$ = new StatementNode( build_try( $2, 0, $3 ) ); } 876 877 | TRY compound_statement handler_list finally_clause 877 { 878 $3->set_link( $4 ); 879 $$ = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*$2,*$3 )))); 880 } 878 { $$ = new StatementNode( build_try( $2, $3, $4 ) ); } 881 879 ; 882 880 883 881 handler_list: 884 // There must be at least one catch clause885 882 handler_clause 886 883 // ISO/IEC 9899:1999 Section 15.3(6 ) If present, a "..." handler shall be the last handler for its try block. 887 884 | CATCH '(' ELLIPSIS ')' compound_statement 888 { $$ = StatementNode::newCatchStmt( 0, $5, true); }885 { $$ = new StatementNode( build_catch( 0, $5, true ) ); } 889 886 | handler_clause CATCH '(' ELLIPSIS ')' compound_statement 890 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true) ); }887 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( 0, $6, true ) ) ); } 891 888 | CATCHRESUME '(' ELLIPSIS ')' compound_statement 892 { $$ = StatementNode::newCatchStmt( 0, $5, true); }889 { $$ = new StatementNode( build_catch( 0, $5, true ) ); } 893 890 | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement 894 { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true) ); }891 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( 0, $6, true ) ) ); } 895 892 ; 896 893 897 894 handler_clause: 898 895 CATCH '(' push push exception_declaration pop ')' compound_statement pop 899 { $$ = StatementNode::newCatchStmt( $5, $8); }896 { $$ = new StatementNode( build_catch( $5, $8 ) ); } 900 897 | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop 901 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9) ); }898 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); } 902 899 | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 903 { $$ = StatementNode::newCatchStmt( $5, $8); }900 { $$ = new StatementNode( build_catch( $5, $8 ) ); } 904 901 | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop 905 { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9) ); }902 { $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); } 906 903 ; 907 904 … … 909 906 FINALLY compound_statement 910 907 { 911 $$ = new StatementNode( StatementNode::Finally, 0, $2 ); 912 std::cout << "Just created a finally node" << std::endl; 908 $$ = new StatementNode( build_finally( $2 ) ); 913 909 } 914 910 ; … … 937 933 938 934 asm_statement: 939 ASM asm_volatile_opt '(' string_literal _list')' ';'940 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, 0); }941 | ASM asm_volatile_opt '(' string_literal _list':' asm_operands_opt ')' ';' // remaining GCC942 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6); }943 | ASM asm_volatile_opt '(' string_literal _list':' asm_operands_opt ':' asm_operands_opt ')' ';'944 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8); }945 | ASM asm_volatile_opt '(' string_literal _list':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';'946 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10); }947 | ASM asm_volatile_opt GOTO '(' string_literal _list':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'948 { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12); }935 ASM asm_volatile_opt '(' string_literal ')' ';' 936 { $$ = new StatementNode( build_asmstmt( $2, $4, 0 ) ); } 937 | ASM asm_volatile_opt '(' string_literal ':' asm_operands_opt ')' ';' // remaining GCC 938 { $$ = new StatementNode( build_asmstmt( $2, $4, $6 ) ); } 939 | ASM asm_volatile_opt '(' string_literal ':' asm_operands_opt ':' asm_operands_opt ')' ';' 940 { $$ = new StatementNode( build_asmstmt( $2, $4, $6, $8 ) ); } 941 | ASM asm_volatile_opt '(' string_literal ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';' 942 { $$ = new StatementNode( build_asmstmt( $2, $4, $6, $8, $10 ) ); } 943 | ASM asm_volatile_opt GOTO '(' string_literal ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';' 944 { $$ = new StatementNode( build_asmstmt( $2, $5, 0, $8, $10, $12 ) ); } 949 945 ; 950 946 … … 965 961 asm_operand 966 962 | asm_operands_list ',' asm_operand 967 { $$ = (ExpressionNode *)$1->set_l ink( $3 ); }963 { $$ = (ExpressionNode *)$1->set_last( $3 ); } 968 964 ; 969 965 970 966 asm_operand: // GCC 971 string_literal _list'(' constant_expression ')'972 { $$ = new ExpressionNode( build_asm ( 0, $1, $3 ) ); }973 | '[' constant_expression ']' string_literal _list'(' constant_expression ')'974 { $$ = new ExpressionNode( build_asm ( $2, $4, $6 ) ); }967 string_literal '(' constant_expression ')' 968 { $$ = new ExpressionNode( build_asmexpr( 0, $1, $3 ) ); } 969 | '[' constant_expression ']' string_literal '(' constant_expression ')' 970 { $$ = new ExpressionNode( build_asmexpr( $2, $4, $6 ) ); } 975 971 ; 976 972 … … 978 974 // empty 979 975 { $$ = 0; } // use default argument 980 | string_literal _list976 | string_literal 981 977 { $$ = new ExpressionNode( $1 ); } 982 | asm_clobbers_list_opt ',' string_literal _list983 { $$ = (ExpressionNode *)$1->set_link( new ExpressionNode( $3 ) ); }978 | asm_clobbers_list_opt ',' string_literal 979 { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); } 984 980 ; 985 981 986 982 label_list: 987 983 no_attr_identifier 988 { $$ = new LabelNode(); $$->append_label( $1 ); } 984 { 985 $$ = new LabelNode(); $$->labels.push_back( *$1 ); 986 delete $1; // allocated by lexer 987 } 989 988 | label_list ',' no_attr_identifier 990 { $$ = $1; $1->append_label( $3 ); } 989 { 990 $$ = $1; $1->labels.push_back( *$3 ); 991 delete $3; // allocated by lexer 992 } 991 993 ; 992 994 … … 1286 1288 type_qualifier_name 1287 1289 | attribute 1288 //{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }1290 //{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); } 1289 1291 ; 1290 1292 … … 1331 1333 1332 1334 storage_class: 1333 storage_class_name1334 ;1335 1336 storage_class_name:1337 1335 EXTERN 1338 1336 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Extern ); } … … 1344 1342 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Register ); } 1345 1343 | INLINE // C99 1346 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 1344 //{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Inline ); } 1345 { $$ = new DeclarationNode; $$->isInline = true; } 1347 1346 | FORTRAN // C99 1348 1347 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); } 1349 1348 | NORETURN // C11 1350 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 1349 //{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); } 1350 { $$ = new DeclarationNode; $$->isNoreturn = true; } 1351 1351 | THREADLOCAL // C11 1352 1352 { $$ = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); } … … 1504 1504 | EXTENSION field_declaring_list ';' // GCC 1505 1505 { // mark all fields in list 1506 for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )1506 for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) 1507 1507 iter->set_extension( true ); 1508 1508 $$ = $2; … … 1750 1750 | initializer 1751 1751 | designation initializer { $$ = $2->set_designators( $1 ); } 1752 | initializer_list ',' initializer { $$ = (InitializerNode *)( $1->set_l ink( $3 ) ); }1752 | initializer_list ',' initializer { $$ = (InitializerNode *)( $1->set_last( $3 ) ); } 1753 1753 | initializer_list ',' designation initializer 1754 { $$ = (InitializerNode *)( $1->set_l ink( $4->set_designators( $3 ) ) ); }1754 { $$ = (InitializerNode *)( $1->set_last( $4->set_designators( $3 ) ) ); } 1755 1755 ; 1756 1756 … … 1774 1774 designator 1775 1775 | designator_list designator 1776 { $$ = (ExpressionNode *)( $1->set_l ink( $2 ) ); }1776 { $$ = (ExpressionNode *)( $1->set_last( $2 ) ); } 1777 1777 //| designator_list designator { $$ = new ExpressionNode( $1, $2 ); } 1778 1778 ; … … 1880 1880 | assignment_expression 1881 1881 | type_name_list ',' type_name 1882 { $$ = (ExpressionNode *)( $1->set_l ink( new ExpressionNode( build_typevalue( $3 ) ) ) ); }1882 { $$ = (ExpressionNode *)( $1->set_last( new ExpressionNode( build_typevalue( $3 ) ) ) ); } 1883 1883 | type_name_list ',' assignment_expression 1884 { $$ = (ExpressionNode *)( $1->set_l ink( $3 )); }1884 { $$ = (ExpressionNode *)( $1->set_last( $3 )); } 1885 1885 ; 1886 1886 … … 1981 1981 {} // empty input file 1982 1982 | external_definition_list 1983 { 1984 if ( theTree ) { 1985 theTree->appendList( $1 ); 1986 } else { 1987 theTree = $1; 1988 } 1989 } 1983 { parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1; } 1990 1984 ; 1991 1985 … … 1993 1987 external_definition 1994 1988 | external_definition_list push external_definition 1995 { $$ = ( $1 != NULL )? $1->appendList( $3 ) : $3; }1989 { $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; } 1996 1990 ; 1997 1991 … … 2009 2003 | EXTERN STRINGliteral 2010 2004 { 2011 linkageStack.push( linkage ); 2005 linkageStack.push( linkage ); // handle nested extern "C"/"Cforall" 2012 2006 linkage = LinkageSpec::fromString( *$2 ); 2013 2007 } … … 2020 2014 | EXTENSION external_definition 2021 2015 { // mark all fields in list 2022 for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )2016 for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) 2023 2017 iter->set_extension( true ); 2024 2018 $$ = $2; … … 2121 2115 asm_name_opt: // GCC 2122 2116 // empty 2123 | ASM '(' string_literal_list ')' attribute_list_opt 2117 | ASM '(' string_literal_list ')' attribute_list_opt { delete $3; } // FIX ME: unimplemented 2124 2118 ; 2125 2119 … … 2150 2144 // empty 2151 2145 | any_word 2152 | any_word '(' comma_expression_opt ')' 2146 | any_word '(' comma_expression_opt ')' { delete $3; } // FIX ME: unimplemented 2153 2147 ; 2154 2148 2155 2149 any_word: // GCC 2156 identifier_or_type_name { }2157 | storage_class _name {}2158 | basic_type_name { }2159 | type_qualifier { }2150 identifier_or_type_name { delete $1; } // FIX ME: unimplemented 2151 | storage_class { delete $1; } // FIX ME: unimplemented 2152 | basic_type_name { delete $1; } // FIX ME: unimplemented 2153 | type_qualifier { delete $1; } // FIX ME: unimplemented 2160 2154 ; 2161 2155 … … 2855 2849 // ----end of grammar---- 2856 2850 2851 extern char *yytext; 2852 2857 2853 void yyerror( const char * ) { 2858 2854 std::cout << "Error "; -
src/Parser/parseutility.cc
r79841be r6943a987 10 10 // Created On : Sat May 16 15:30:39 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S at May 16 15:31:33 201513 // Update Count : 212 // Last Modified On : Sun Aug 14 23:45:03 2016 13 // Update Count : 3 14 14 // 15 15 … … 17 17 #include "SynTree/Type.h" 18 18 #include "SynTree/Expression.h" 19 20 // rewrite 21 // if ( x ) ... 22 // as 23 // if ( (int)(x != 0) ) ... 19 24 20 25 Expression *notZeroExpr( Expression *orig ) {
Note:
See TracChangeset
for help on using the changeset viewer.