Changeset 4a7d895
- Timestamp:
- Aug 20, 2016, 5:33:07 AM (7 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, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 80722d0
- Parents:
- 7b1bfc5 (diff), 2037f82 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- src
- Files:
-
- 6 added
- 3 deleted
- 51 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Common/CompilerError.h
r7b1bfc5 r4a7d895 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : T ue May 19 07:20:37 201513 // Update Count : 212 // Last Modified On : Thu Aug 18 23:41:30 2016 13 // Update Count : 3 14 14 // 15 15 … … 18 18 19 19 #include <string> 20 //#include "../config.h"21 20 22 21 class CompilerError : public std::exception { -
src/Common/module.mk
r7b1bfc5 r4a7d895 11 11 ## Created On : Mon Jun 1 17:49:17 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Mon Jun 1 17:51:23 201514 ## Update Count : 113 ## Last Modified On : Thu Aug 18 13:29:04 2016 14 ## Update Count : 2 15 15 ############################################################################### 16 16 17 17 SRC += Common/SemanticError.cc \ 18 Common/UniqueName.cc 18 Common/UniqueName.cc \ 19 Common/Assert.cc -
src/Common/utility.h
r7b1bfc5 r4a7d895 49 49 } 50 50 51 template< typename T, typename U > 52 static inline T * maybeMoveBuild( const U *orig ) { 53 T* ret = maybeBuild<T>(orig); 54 delete orig; 55 return ret; 56 } 57 58 51 59 template< typename Input_iterator > 52 60 void printEnums( Input_iterator begin, Input_iterator end, const char * const *name_array, std::ostream &os ) { -
src/Makefile.am
r7b1bfc5 r4a7d895 11 11 ## Created On : Sun May 31 08:51:46 2015 12 12 ## Last Modified By : Peter A. Buhr 13 ## Last Modified On : Fri Jul 8 12:22:25201614 ## Update Count : 6013 ## Last Modified On : Thu Aug 18 17:47:06 2016 14 ## Update Count : 70 15 15 ############################################################################### 16 16 … … 42 42 cfa_cpplib_PROGRAMS = driver/cfa-cpp 43 43 driver_cfa_cpp_SOURCES = ${SRC} 44 driver_cfa_cpp_LDADD = ${LEXLIB} # yywrap 45 # need files Common/utility.h 46 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL 47 48 AM_CXXFLAGS = -g -std=c++11 44 driver_cfa_cpp_LDADD = ${LEXLIB} # yywrap 45 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include 49 46 50 47 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}} -
src/Makefile.in
r7b1bfc5 r4a7d895 105 105 Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \ 106 106 Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \ 107 Common/driver_cfa_cpp-Assert.$(OBJEXT) \ 107 108 ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) \ 108 109 ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT) \ … … 137 138 Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) \ 138 139 Parser/driver_cfa_cpp-parseutility.$(OBJEXT) \ 139 Parser/driver_cfa_cpp-Parser.$(OBJEXT) \140 140 ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT) \ 141 141 ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT) \ … … 370 370 CodeGen/CodeGenerator.cc CodeGen/GenType.cc \ 371 371 CodeGen/FixNames.cc CodeGen/OperatorTable.cc \ 372 Common/SemanticError.cc Common/UniqueName.cc \372 Common/SemanticError.cc Common/UniqueName.cc Common/Assert.cc \ 373 373 ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \ 374 374 ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \ … … 385 385 Parser/ExpressionNode.cc Parser/StatementNode.cc \ 386 386 Parser/InitializerNode.cc Parser/TypeData.cc \ 387 Parser/LinkageSpec.cc Parser/parseutility.cc Parser/Parser.cc\387 Parser/LinkageSpec.cc Parser/parseutility.cc \ 388 388 ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \ 389 389 ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \ … … 426 426 cfa_cpplibdir = ${libdir} 427 427 driver_cfa_cpp_SOURCES = ${SRC} 428 driver_cfa_cpp_LDADD = ${LEXLIB} # yywrap 429 # need files Common/utility.h 430 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL 431 AM_CXXFLAGS = -g -std=c++11 428 driver_cfa_cpp_LDADD = ${LEXLIB} # yywrap 429 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include 432 430 all: $(BUILT_SOURCES) 433 431 $(MAKE) $(AM_MAKEFLAGS) all-am … … 528 526 Common/$(DEPDIR)/$(am__dirstamp) 529 527 Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \ 528 Common/$(DEPDIR)/$(am__dirstamp) 529 Common/driver_cfa_cpp-Assert.$(OBJEXT): Common/$(am__dirstamp) \ 530 530 Common/$(DEPDIR)/$(am__dirstamp) 531 531 ControlStruct/$(am__dirstamp): … … 632 632 Parser/$(DEPDIR)/$(am__dirstamp) 633 633 Parser/driver_cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \ 634 Parser/$(DEPDIR)/$(am__dirstamp)635 Parser/driver_cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \636 634 Parser/$(DEPDIR)/$(am__dirstamp) 637 635 ResolvExpr/$(am__dirstamp): … … 817 815 -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT) 818 816 -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) 817 -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT) 819 818 -rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT) 820 819 -rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT) … … 845 844 -rm -f Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) 846 845 -rm -f Parser/driver_cfa_cpp-ParseNode.$(OBJEXT) 847 -rm -f Parser/driver_cfa_cpp-Parser.$(OBJEXT)848 846 -rm -f Parser/driver_cfa_cpp-StatementNode.$(OBJEXT) 849 847 -rm -f Parser/driver_cfa_cpp-TypeData.$(OBJEXT) … … 927 925 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@ 928 926 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@ 927 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@ 929 928 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@ 930 929 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@ … … 955 954 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po@am__quote@ 956 955 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po@am__quote@ 957 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po@am__quote@958 956 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po@am__quote@ 959 957 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po@am__quote@ … … 1169 1167 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi` 1170 1168 1169 Common/driver_cfa_cpp-Assert.o: Common/Assert.cc 1170 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc 1171 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po 1172 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Common/Assert.cc' object='Common/driver_cfa_cpp-Assert.o' libtool=no @AMDEPBACKSLASH@ 1173 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1174 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc 1175 1176 Common/driver_cfa_cpp-Assert.obj: Common/Assert.cc 1177 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.obj `if test -f 'Common/Assert.cc'; then $(CYGPATH_W) 'Common/Assert.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Assert.cc'; fi` 1178 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po 1179 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Common/Assert.cc' object='Common/driver_cfa_cpp-Assert.obj' libtool=no @AMDEPBACKSLASH@ 1180 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1181 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Assert.obj `if test -f 'Common/Assert.cc'; then $(CYGPATH_W) 'Common/Assert.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Assert.cc'; fi` 1182 1171 1183 ControlStruct/driver_cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc 1172 1184 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc … … 1616 1628 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 1617 1629 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi` 1618 1619 Parser/driver_cfa_cpp-Parser.o: Parser/Parser.cc1620 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc1621 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po1622 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.o' libtool=no @AMDEPBACKSLASH@1623 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@1624 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc1625 1626 Parser/driver_cfa_cpp-Parser.obj: Parser/Parser.cc1627 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`1628 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po1629 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.obj' libtool=no @AMDEPBACKSLASH@1630 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@1631 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`1632 1630 1633 1631 ResolvExpr/driver_cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc -
src/Parser/DeclarationNode.cc
r7b1bfc5 r4a7d895 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 15 14:30:25201613 // Update Count : 1 7212 // Last Modified On : Thu Aug 18 23:48:23 2016 13 // Update Count : 182 14 14 // 15 15 … … 25 25 #include "SynTree/Expression.h" 26 26 27 #include "Parser.h"28 27 #include "TypedefTable.h" 29 28 extern TypedefTable typedefTable; … … 42 41 UniqueName DeclarationNode::anonymous( "__anonymous" ); 43 42 44 extern LinkageSpec:: Typelinkage; // defined in parser.yy43 extern LinkageSpec::Spec linkage; // defined in parser.yy 45 44 46 45 DeclarationNode *DeclarationNode::clone() const { … … 48 47 newnode->type = maybeClone( type ); 49 48 newnode->name = name; 50 newnode->storageClasses = storageClasses; 51 //PAB newnode->bitfieldWidth = maybeClone( bitfieldWidth ); 49 newnode->storageClass = storageClass; 50 newnode->isInline = isInline; 51 newnode->isNoreturn = isNoreturn; 52 52 newnode->bitfieldWidth = bitfieldWidth; 53 53 newnode->hasEllipsis = hasEllipsis; 54 54 newnode->initializer = initializer; 55 newnode-> next = maybeClone( next);55 newnode->set_next( maybeClone( get_next() ) ); 56 56 newnode->linkage = linkage; 57 57 return newnode; 58 58 } // DeclarationNode::clone 59 59 60 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) { 60 DeclarationNode::DeclarationNode() 61 : type( 0 ) 62 , storageClass( NoStorageClass ) 63 , isInline( false ) 64 , isNoreturn( false ) 65 , bitfieldWidth( 0 ) 66 , initializer( 0 ) 67 , hasEllipsis( false ) 68 , linkage( ::linkage ) 69 , extension( false ) 70 , error() { 61 71 } 62 72 … … 83 93 } // if 84 94 85 printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os ); 95 if(storageClass != NoStorageClass) os << DeclarationNode::storageName[storageClass] << ' '; 96 if(isInline) os << DeclarationNode::storageName[Inline] << ' '; 97 if(isNoreturn) os << DeclarationNode::storageName[Noreturn] << ' '; 86 98 if ( type ) { 87 99 type->print( os, indent ); … … 144 156 DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) { 145 157 DeclarationNode *newnode = new DeclarationNode; 146 newnode->storageClasses.push_back( sc ); 158 switch (sc) { 159 case Inline: newnode->isInline = true; break; 160 case Noreturn: newnode->isNoreturn = true; break; 161 default: newnode->storageClass = sc; break; 162 } 147 163 return newnode; 148 164 } // DeclarationNode::newStorageClass … … 284 300 newnode->type->array->dimension = size; 285 301 newnode->type->array->isStatic = isStatic; 286 if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantExpr *>( newnode->type->array->dimension->build()) ) {302 if ( newnode->type->array->dimension == 0 || newnode->type->array->dimension->isExpressionType<ConstantExpr *>() ) { 287 303 newnode->type->array->isVarLen = false; 288 304 } else { … … 360 376 DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) { 361 377 if ( q ) { 362 storageClasses.splice( storageClasses.end(), q->storageClasses);378 copyStorageClasses(q); 363 379 if ( q->type ) { 364 380 if ( ! type ) { … … 387 403 388 404 DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) { 389 storageClasses = q->storageClasses; 405 isInline = isInline || q->isInline; 406 isNoreturn = isNoreturn || q->isNoreturn; 407 if(storageClass == NoStorageClass) { 408 storageClass = q->storageClass; 409 } 410 else if (q->storageClass != NoStorageClass) { 411 q->error = "invalid combination of storage classes in declaration of "; 412 } 413 if(error.empty()) error = q->error; 390 414 return this; 391 415 } … … 447 471 DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) { 448 472 if ( o ) { 449 storageClasses.splice( storageClasses.end(), o->storageClasses);473 copyStorageClasses( o ); 450 474 if ( o->type ) { 451 475 if ( ! type ) { … … 694 718 } // if 695 719 newnode->type->forall = maybeClone( type->forall ); 696 newnode-> storageClasses = storageClasses;720 newnode->copyStorageClasses( this ); 697 721 newnode->name = assign_strptr( newName ); 698 722 return newnode; … … 701 725 DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) { 702 726 if ( o ) { 703 o-> storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end());727 o->copyStorageClasses( this ); 704 728 if ( type ) { 705 729 TypeData *srcType = type; … … 734 758 DeclarationNode *newnode = new DeclarationNode; 735 759 newnode->type = maybeClone( type ); 736 newnode-> storageClasses = storageClasses;760 newnode->copyStorageClasses( this ); 737 761 newnode->name = assign_strptr( newName ); 738 762 return newnode; … … 741 765 DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) { 742 766 if ( o ) { 743 o-> storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end());767 o->copyStorageClasses( this ); 744 768 if ( type ) { 745 769 TypeData *newType = type->clone(); … … 752 776 } // if 753 777 } // if 778 delete o; 754 779 return o; 755 }756 757 DeclarationNode *DeclarationNode::appendList( DeclarationNode *node ) {758 if ( node != 0 ) {759 set_last( node );760 } // if761 return this;762 780 } 763 781 … … 776 794 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) { 777 795 SemanticError errors; 778 std::back_insert_iterator< std::list< Declaration * > > out( outputList );796 std::back_insert_iterator< std::list< Declaration * > > out( outputList ); 779 797 const DeclarationNode *cur = firstNode; 780 798 while ( cur ) { … … 794 812 errors.append( e ); 795 813 } // try 796 cur = dynamic_cast< DeclarationNode *>( cur->get_next() );814 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 797 815 } // while 798 816 if ( ! errors.isEmpty() ) { … … 801 819 } 802 820 803 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {821 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) { 804 822 SemanticError errors; 805 std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );823 std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList ); 806 824 const DeclarationNode *cur = firstNode; 807 825 while ( cur ) { … … 817 835 Declaration *decl = cur->build(); 818 836 if ( decl ) { 819 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {837 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) { 820 838 *out++ = dwt; 821 } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {839 } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) { 822 840 StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() ); 823 841 *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 ); 824 842 delete agg; 825 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {843 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) { 826 844 UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() ); 827 845 *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 ); … … 831 849 errors.append( e ); 832 850 } // try 833 cur = dynamic_cast< DeclarationNode * >( cur->get_next() );851 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 834 852 } // while 835 853 if ( ! errors.isEmpty() ) { … … 838 856 } 839 857 840 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {858 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) { 841 859 SemanticError errors; 842 std::back_insert_iterator< std::list< Type * > > out( outputList );860 std::back_insert_iterator< std::list< Type * > > out( outputList ); 843 861 const DeclarationNode *cur = firstNode; 844 862 while ( cur ) { … … 848 866 errors.append( e ); 849 867 } // try 850 cur = dynamic_cast< DeclarationNode * >( cur->get_next() );868 cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); 851 869 } // while 852 870 if ( ! errors.isEmpty() ) { … … 856 874 857 875 Declaration *DeclarationNode::build() const { 876 if( !error.empty() ) throw SemanticError( error, this ); 858 877 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 );878 return type->buildDecl( name, storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension ); 879 } // if 880 if ( ! isInline && ! isNoreturn ) { 881 return (new ObjectDecl( name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension ); 863 882 } // if 864 883 throw SemanticError( "invalid function specifier in declaration of ", this ); … … 899 918 } 900 919 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 }920 // DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const { 921 // DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass; 922 // for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) { 923 // if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers 924 // if ( ret != DeclarationNode::NoStorageClass ) { // already have a valid storage class ? 925 // throw SemanticError( "invalid combination of storage classes in declaration of ", this ); 926 // } // if 927 // ret = *i; 928 // } // for 929 // return ret; 930 // } 931 932 // bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const { 933 // std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key ); 934 // if ( first == storageClasses.end() ) return false; // not found 935 // first = std::find( ++first, storageClasses.end(), key ); // found 936 // if ( first == storageClasses.end() ) return true; // not found again 937 // throw SemanticError( "duplicate function specifier in declaration of ", this ); 938 // } 920 939 921 940 // Local Variables: // -
src/Parser/ExpressionNode.cc
r7b1bfc5 r4a7d895 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 15 14:30:42201613 // Update Count : 49 012 // Last Modified On : Tue Aug 16 00:09:20 2016 13 // Update Count : 495 14 14 // 15 15 … … 32 32 using namespace std; 33 33 34 ExpressionNode::ExpressionNode( 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 }, … … 123 123 } // build_constantInteger 124 124 125 Expression *build_constantFloat( std::string & str ) {125 Expression *build_constantFloat( const std::string & str ) { 126 126 static const BasicType::Kind kind[2][3] = { 127 127 { BasicType::Float, BasicType::Double, BasicType::LongDouble }, … … 153 153 } // build_constantFloat 154 154 155 Expression *build_constantChar( std::string & str ) {155 Expression *build_constantChar( const std::string & str ) { 156 156 return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) ); 157 157 } // build_constantChar 158 158 159 ConstantExpr *build_constantStr( std::string & str ) {159 ConstantExpr *build_constantStr( const std::string & str ) { 160 160 // string should probably be a primitive type 161 161 ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ), … … 166 166 } // build_constantStr 167 167 168 //##############################################################################169 170 168 NameExpr * build_varref( const string *name, bool labelp ) { 171 returnnew NameExpr( *name, nullptr );172 } 173 174 //############################################################################## 169 NameExpr *expr = new NameExpr( *name, nullptr ); 170 delete name; 171 return expr; 172 } 175 173 176 174 static const char *OperName[] = { … … 184 182 }; 185 183 186 //##############################################################################187 188 184 Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) { 189 185 Type *targetType = decl_node->buildType(); 190 186 if ( dynamic_cast< VoidType * >( targetType ) ) { 191 187 delete targetType; 192 return new CastExpr( maybe Build<Expression>(expr_node) );188 return new CastExpr( maybeMoveBuild< Expression >(expr_node) ); 193 189 } else { 194 return new CastExpr( maybe Build<Expression>(expr_node), targetType );190 return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType ); 195 191 } // if 196 192 } 197 193 198 194 Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) { 199 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybe Build<Expression>(expr_node) );195 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) ); 200 196 delete member; 201 197 return ret; … … 204 200 Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) { 205 201 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) ); 206 deref->get_args().push_back( maybe Build<Expression>(expr_node) );202 deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) ); 207 203 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref ); 208 204 delete member; … … 211 207 212 208 Expression *build_addressOf( ExpressionNode *expr_node ) { 213 return new AddressExpr( maybe Build<Expression>(expr_node) );209 return new AddressExpr( maybeMoveBuild< Expression >(expr_node) ); 214 210 } 215 211 Expression *build_sizeOfexpr( ExpressionNode *expr_node ) { 216 return new SizeofExpr( maybe Build<Expression>(expr_node) );212 return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) ); 217 213 } 218 214 Expression *build_sizeOftype( DeclarationNode *decl_node ) { 219 return new SizeofExpr( decl_node->buildType() ); 215 Expression* ret = new SizeofExpr( decl_node->buildType() ); 216 delete decl_node; 217 return ret; 220 218 } 221 219 Expression *build_alignOfexpr( ExpressionNode *expr_node ) { 222 return new AlignofExpr( maybe Build<Expression>(expr_node) );220 return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) ); 223 221 } 224 222 Expression *build_alignOftype( DeclarationNode *decl_node ) { … … 226 224 } 227 225 Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) { 228 return new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() ); 226 Expression* ret = new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() ); 227 delete decl_node; 228 delete member; 229 return ret; 229 230 } 230 231 231 232 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 );233 return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind ); 233 234 } 234 235 235 236 Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) { 236 std::list< Expression *> args;237 args.push_back( maybe Build<Expression>(expr_node) );237 std::list< Expression * > args; 238 args.push_back( maybeMoveBuild< Expression >(expr_node) ); 238 239 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 239 240 } 240 241 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) ) );242 std::list< Expression * > args; 243 args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) ); 243 244 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 244 245 } 245 246 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) );247 std::list< Expression * > args; 248 args.push_back( maybeMoveBuild< Expression >(expr_node1) ); 249 args.push_back( maybeMoveBuild< Expression >(expr_node2) ); 249 250 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 250 251 } 251 252 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) );253 std::list< Expression * > args; 254 args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) ); 255 args.push_back( maybeMoveBuild< Expression >(expr_node2) ); 255 256 return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args ); 256 257 } 257 258 258 259 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) );260 return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) ); 260 261 } 261 262 262 263 Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) { 263 return new CommaExpr( maybe Build<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );264 return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) ); 264 265 } 265 266 266 267 Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) { 267 return new AttrExpr( var, maybe Build<Expression>(expr_node) );268 return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) ); 268 269 } 269 270 Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) { … … 273 274 Expression *build_tuple( ExpressionNode * expr_node ) { 274 275 TupleExpr *ret = new TupleExpr(); 275 build List( expr_node, ret->get_exprs() );276 buildMoveList( expr_node, ret->get_exprs() ); 276 277 return ret; 277 278 } 278 279 279 280 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 ); 281 std::list< Expression * > args; 282 buildMoveList( expr_node, args ); 283 return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr ); 284 284 } 285 285 286 286 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 //############################################################################## 287 return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) ); 288 } 293 289 294 290 Expression *build_asmexpr( 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 //############################################################################## 291 return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) ); 292 } 305 293 306 294 Expression *build_valexpr( StatementNode *s ) { 307 return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr ); 308 } 309 310 //############################################################################## 311 295 return new UntypedValofExpr( maybeMoveBuild< Statement >(s), nullptr ); 296 } 312 297 Expression *build_typevalue( DeclarationNode *decl ) { 313 298 return new TypeExpr( decl->buildType() ); 314 299 } 315 300 316 //##############################################################################317 318 301 Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) { 319 Declaration * newDecl = maybeBuild< Declaration>(decl_node); // compound literal type302 Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type 320 303 if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type 321 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybe Build<Initializer>(kids) );304 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) ); 322 305 // these types do not have associated type information 323 306 } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl ) ) { 324 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybe Build<Initializer>(kids) );307 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 325 308 } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl ) ) { 326 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybe Build<Initializer>(kids) );309 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 327 310 } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl ) ) { 328 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybe Build<Initializer>(kids) );311 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) ); 329 312 } else { 330 313 assert( false ); -
src/Parser/InitializerNode.cc
r7b1bfc5 r4a7d895 10 10 // Created On : Sat May 16 13:20:24 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Aug 13 18:55:11201613 // Update Count : 1812 // 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_next() );27 kids = dynamic_cast< InitializerNode * >( get_next() ); 28 28 29 29 if ( kids != 0 ) … … 37 37 38 38 if ( aggrp ) 39 kids = dynamic_cast< InitializerNode * >( get_next() );39 kids = dynamic_cast< InitializerNode * >( get_next() ); 40 40 41 41 if ( kids != 0 ) … … 82 82 //assert( next_init() != 0 ); 83 83 84 std::list< Initializer * > initlist;85 buildList< Initializer, InitializerNode>( next_init(), initlist );84 std::list< Initializer * > initlist; 85 buildList< Initializer, InitializerNode >( next_init(), initlist ); 86 86 87 std::list< Expression * > designlist;87 std::list< Expression * > designlist; 88 88 89 89 if ( designator != 0 ) { 90 buildList< Expression, ExpressionNode>( designator, designlist );90 buildList< Expression, ExpressionNode >( designator, designlist ); 91 91 } // if 92 92 93 93 return new ListInit( initlist, designlist, maybeConstructed ); 94 94 } else { 95 std::list< Expression * > designators;95 std::list< Expression * > designators; 96 96 97 97 if ( designator != 0 ) 98 buildList< Expression, ExpressionNode>( designator, designators );98 buildList< Expression, ExpressionNode >( designator, designators ); 99 99 100 100 if ( get_expression() != 0) 101 return new SingleInit( maybeBuild< Expression>( get_expression() ), designators, maybeConstructed );101 return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed ); 102 102 } // if 103 103 -
src/Parser/LinkageSpec.cc
r7b1bfc5 r4a7d895 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:22:09 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : Wed Aug 19 15:53:05 201513 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:47:14 2016 13 // Update Count : 12 14 14 // 15 15 … … 20 20 #include "Common/SemanticError.h" 21 21 22 LinkageSpec:: TypeLinkageSpec::fromString( const std::string &stringSpec ) {22 LinkageSpec::Spec LinkageSpec::fromString( const std::string &stringSpec ) { 23 23 if ( stringSpec == "\"Cforall\"" ) { 24 24 return Cforall; … … 30 30 } 31 31 32 std::string LinkageSpec::toString( LinkageSpec::Type linkage ) { 33 switch ( linkage ) { 34 case Intrinsic: 35 return "intrinsic"; 36 case Cforall: 37 return "Cforall"; 38 case C: 39 return "C"; 40 case AutoGen: 41 return "automatically generated"; 42 case Compiler: 43 return "compiler built-in"; 44 } 45 assert( false ); 46 return ""; 32 std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) { 33 static const char *linkageKinds[LinkageSpec::NoOfSpecs] = { 34 "intrinsic", "Cforall", "C", "automatically generated", "compiler built-in", 35 }; 36 return linkageKinds[linkage]; 47 37 } 48 38 49 bool LinkageSpec::isDecoratable( Type t ) { 50 switch ( t ) { 51 case Intrinsic: 52 case Cforall: 53 case AutoGen: 54 return true; 55 case C: 56 case Compiler: 57 return false; 58 } 59 assert( false ); 60 return false; 39 bool LinkageSpec::isDecoratable( Spec t ) { 40 static bool decoratable[LinkageSpec::NoOfSpecs] = { 41 // Intrinsic, Cforall, C, AutoGen, Compiler 42 true, true, false, true, false, 43 }; 44 return decoratable[t]; 61 45 } 62 46 63 bool LinkageSpec::isGeneratable( Type t ) { 64 switch ( t ) { 65 case Intrinsic: 66 case Cforall: 67 case AutoGen: 68 case C: 69 return true; 70 case Compiler: 71 return false; 72 } 73 assert( false ); 74 return false; 47 bool LinkageSpec::isGeneratable( Spec t ) { 48 static bool generatable[LinkageSpec::NoOfSpecs] = { 49 // Intrinsic, Cforall, C, AutoGen, Compiler 50 true, true, true, true, false, 51 }; 52 return generatable[t]; 75 53 } 76 54 77 bool LinkageSpec::isOverloadable( Typet ) {55 bool LinkageSpec::isOverloadable( Spec t ) { 78 56 return isDecoratable( t ); 79 57 } 80 58 81 59 82 bool LinkageSpec::isOverridable( Type t ) { 83 switch ( t ) { 84 case Intrinsic: 85 case AutoGen: 86 return true; 87 case Cforall: 88 case C: 89 case Compiler: 90 return false; 91 } 92 assert( false ); 93 return false; 60 bool LinkageSpec::isOverridable( Spec t ) { 61 static bool overridable[LinkageSpec::NoOfSpecs] = { 62 // Intrinsic, Cforall, C, AutoGen, Compiler 63 true, false, false, true, false, 64 }; 65 return overridable[t]; 94 66 } 95 67 96 bool LinkageSpec::isBuiltin( Type t ) { 97 switch ( t ) { 98 case Cforall: 99 case AutoGen: 100 case C: 101 return false; 102 case Intrinsic: 103 case Compiler: 104 return true; 105 } 106 assert( false ); 107 return false; 68 bool LinkageSpec::isBuiltin( Spec t ) { 69 static bool builtin[LinkageSpec::NoOfSpecs] = { 70 // Intrinsic, Cforall, C, AutoGen, Compiler 71 true, false, false, false, true, 72 }; 73 return builtin[t]; 108 74 } 109 75 -
src/Parser/LinkageSpec.h
r7b1bfc5 r4a7d895 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:24:28 2015 11 // Last Modified By : Rob Schluntz12 // Last Modified On : T ue Aug 18 14:11:55 201513 // Update Count : 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 18 23:47:16 2016 13 // Update Count : 7 14 14 // 15 15 … … 20 20 21 21 struct LinkageSpec { 22 enum Type{22 enum Spec { 23 23 Intrinsic, // C built-in defined in prelude 24 24 Cforall, // ordinary 25 25 C, // not overloadable, not mangled 26 26 AutoGen, // built by translator (struct assignment) 27 Compiler // gcc internal 27 Compiler, // gcc internal 28 NoOfSpecs 28 29 }; 29 30 30 static TypefromString( const std::string & );31 static std::string toString( Type);31 static Spec fromString( const std::string & ); 32 static std::string toString( Spec ); 32 33 33 static bool isDecoratable( Type);34 static bool isGeneratable( Type);35 static bool isOverloadable( Type);36 static bool isOverridable( Type);37 static bool isBuiltin( Type);34 static bool isDecoratable( Spec ); 35 static bool isGeneratable( Spec ); 36 static bool isOverloadable( Spec ); 37 static bool isOverridable( Spec ); 38 static bool isBuiltin( Spec ); 38 39 }; 39 40 -
src/Parser/ParseNode.cc
r7b1bfc5 r4a7d895 10 10 // Created On : Sat May 16 13:26:29 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 15 14:49:06 201613 // Update Count : 9912 // 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_next() != 0 )34 current = current->get_next();35 return current;36 }37 38 ParseNode *ParseNode::set_last( ParseNode *next_ ) {39 if ( next_ != 0 ) get_last()->next = next_;40 return this;41 }42 43 void ParseNode::print( std::ostream &os, int indent ) const {}44 45 46 void ParseNode::printList( std::ostream &os, int indent ) const {47 print( os, indent );48 49 if ( next ) {50 next->printList( os, indent );51 } // if52 }53 20 54 21 // Local Variables: // -
src/Parser/ParseNode.h
r7b1bfc5 r4a7d895 10 10 // Created On : Sat May 16 13:28:16 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 15 14:52:12201613 // Update Count : 5 1212 // Last Modified On : Thu Aug 18 23:48:37 2016 13 // Update Count : 542 14 14 // 15 15 … … 22 22 #include <memory> 23 23 24 #include "Common/utility.h"25 24 #include "Parser/LinkageSpec.h" 26 25 #include "SynTree/Type.h" 27 26 #include "SynTree/Expression.h" 28 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(); 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; 46 47 47 48 ParseNode *get_next() const { return next; } 48 49 ParseNode *set_next( ParseNode *newlink ) { next = newlink; return this; } 49 ParseNode *get_last(); 50 ParseNode *set_last( ParseNode * ); 51 52 virtual ParseNode *clone() const { return 0; }; 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 }; 70 }; // ParseNode 66 71 67 72 //############################################################################## … … 72 77 InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 ); 73 78 ~InitializerNode(); 79 virtual InitializerNode *clone() const { assert( false ); return nullptr; } 74 80 75 81 ExpressionNode *get_expression() const { return expr; } … … 97 103 //############################################################################## 98 104 99 class ExpressionNode : public ParseNode {105 class ExpressionNode final : public ParseNode { 100 106 public: 101 107 ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {} … … 103 109 ExpressionNode( const ExpressionNode &other ); 104 110 virtual ~ExpressionNode() {} 105 106 virtual ExpressionNode *clone() const { return 0; } 111 virtual ExpressionNode *clone() const { assert( false ); return nullptr; } 107 112 108 113 bool get_extension() const { return extension; } 109 114 ExpressionNode *set_extension( bool exten ) { extension = exten; return this; } 110 115 111 virtual void print( std::ostream &os, int indent = 0 ) const {} 112 virtual void printOneLine( std::ostream &os, int indent = 0 ) const {} 113 114 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(); } 115 125 private: 116 126 bool extension = false; 117 Expression *expr;127 std::unique_ptr<Expression> expr; 118 128 }; 119 129 120 130 template< typename T > 121 struct maybeBuild_t< Expression, T> {131 struct maybeBuild_t< Expression, T > { 122 132 static inline Expression * doit( const T *orig ) { 123 133 if ( orig ) { … … 126 136 return p; 127 137 } else { 128 return 0;138 return nullptr; 129 139 } // if 130 140 } … … 146 156 }; 147 157 148 Expression *build_constantInteger( std::string &str );149 Expression *build_constantFloat( std::string &str );150 Expression *build_constantChar( std::string &str );151 ConstantExpr *build_constantStr( std::string &str );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 ); 152 162 153 163 NameExpr *build_varref( const std::string *name, bool labelp = false ); … … 228 238 static DeclarationNode *newBuiltinType( BuiltinType ); 229 239 240 DeclarationNode(); 241 ~DeclarationNode(); 242 DeclarationNode *clone() const; 243 230 244 DeclarationNode *addQualifiers( DeclarationNode *); 231 245 DeclarationNode *copyStorageClasses( DeclarationNode *); … … 252 266 DeclarationNode *cloneBaseType( DeclarationNode *newdecl ); 253 267 254 DeclarationNode *appendList( DeclarationNode * ); 255 256 DeclarationNode *clone() const; 268 DeclarationNode *appendList( DeclarationNode *node ) { 269 return (DeclarationNode *)set_last( node ); 270 } 271 257 272 void print( std::ostream &os, int indent = 0 ) const; 258 273 void printList( std::ostream &os, int indent = 0 ) const; … … 263 278 bool get_hasEllipsis() const; 264 279 const std::string &get_name() const { return name; } 265 LinkageSpec:: Typeget_linkage() const { return linkage; }280 LinkageSpec::Spec get_linkage() const { return linkage; } 266 281 DeclarationNode *extractAggregate() const; 267 282 ExpressionNode *get_enumeratorValue() const { return enumeratorValue; } … … 269 284 bool get_extension() const { return extension; } 270 285 DeclarationNode *set_extension( bool exten ) { extension = exten; return this; } 271 272 DeclarationNode();273 ~DeclarationNode();274 286 private: 275 StorageClass buildStorageClass() const;276 bool buildFuncSpecifier( StorageClass key ) const;287 // StorageClass buildStorageClass() const; 288 // bool buildFuncSpecifier( StorageClass key ) const; 277 289 278 290 TypeData *type; 279 291 std::string name; 280 std::list< StorageClass > storageClasses; 292 // std::list< StorageClass > storageClasses; 293 StorageClass storageClass; 294 bool isInline, isNoreturn; 281 295 std::list< std::string > attributes; 282 296 ExpressionNode *bitfieldWidth; … … 284 298 InitializerNode *initializer; 285 299 bool hasEllipsis; 286 LinkageSpec:: Typelinkage;300 LinkageSpec::Spec linkage; 287 301 bool extension = false; 302 std::string error; 288 303 289 304 static UniqueName anonymous; … … 294 309 //############################################################################## 295 310 296 class StatementNode : public ParseNode {311 class StatementNode final : public ParseNode { 297 312 public: 298 313 StatementNode() { stmt = nullptr; } … … 301 316 virtual ~StatementNode() {} 302 317 303 virtual StatementNode *clone() const { assert( false ); return nullptr; }304 virtual Statement *build() const { return stmt; }318 virtual StatementNode *clone() const final { assert( false ); return nullptr; } 319 Statement *build() const { return const_cast<StatementNode*>(this)->stmt.release(); } 305 320 306 321 virtual StatementNode *add_label( const std::string * name ) { 307 322 stmt->get_labels().emplace_back( *name ); 323 delete name; 308 324 return this; 309 325 } … … 314 330 virtual void printList( std::ostream &os, int indent = 0 ) {} 315 331 private: 316 Statement *stmt;332 std::unique_ptr<Statement> stmt; 317 333 }; // StatementNode 318 334 … … 351 367 void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) { 352 368 SemanticError errors; 353 std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );369 std::back_insert_iterator< std::list< SynTreeType * > > out( outputList ); 354 370 const NodeType *cur = firstNode; 355 371 356 372 while ( cur ) { 357 373 try { 358 // SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild<typename std::result_of<decltype(&NodeType::build)(NodeType)>::type>( cur ) );359 SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild<typename std::pointer_traits<decltype(cur->build())>::element_type>( cur ) );374 // SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::result_of< decltype(&NodeType::build)(NodeType)>::type >( cur ) ); 375 SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::pointer_traits< decltype(cur->build())>::element_type >( cur ) ); 360 376 if ( result ) { 361 377 *out++ = result; … … 365 381 errors.append( e ); 366 382 } // try 367 cur = dynamic_cast< NodeType * >( cur->get_next() );383 cur = dynamic_cast< NodeType * >( cur->get_next() ); 368 384 } // while 369 385 if ( ! errors.isEmpty() ) { … … 374 390 // in DeclarationNode.cc 375 391 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ); 376 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList );392 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ); 377 393 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ); 394 395 template< typename SynTreeType, typename NodeType > 396 void buildMoveList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) { 397 buildList(firstNode, outputList); 398 delete firstNode; 399 } 400 378 401 379 402 #endif // PARSENODE_H -
src/Parser/StatementNode.cc
r7b1bfc5 r4a7d895 10 10 // Created On : Sat May 16 14:59:41 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 15 14:40:05201613 // Update Count : 3 1712 // Last Modified On : Mon Aug 15 20:47:11 2016 13 // Update Count : 322 14 14 // 15 15 … … 32 32 if ( agg ) { 33 33 StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) ); 34 next = nextStmt;34 set_next( nextStmt ); 35 35 if ( decl->get_next() ) { 36 next->set_next( new StatementNode( dynamic_cast<DeclarationNode *>(decl->get_next()) ) );36 get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) ); 37 37 decl->set_next( 0 ); 38 38 } // if 39 39 } else { 40 40 if ( decl->get_next() ) { 41 next = new StatementNode( dynamic_cast<DeclarationNode *>( decl->get_next() ) );41 set_next(new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) ); 42 42 decl->set_next( 0 ); 43 43 } // if 44 44 agg = decl; 45 45 } // if 46 stmt = new DeclStmt( noLabels, maybeBuild<Declaration>(agg) );46 stmt.reset( new DeclStmt( noLabels, maybeBuild< Declaration >(agg) ) ); 47 47 } else { 48 48 assert( false ); … … 54 54 // find end of list and maintain previous pointer 55 55 for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_next() ) { 56 StatementNode *node = dynamic_cast< StatementNode *>(curr);56 StatementNode *node = dynamic_cast< StatementNode * >(curr); 57 57 assert( node ); 58 assert( dynamic_cast< CaseStmt *>(node->stmt) );58 assert( dynamic_cast< CaseStmt * >(node->stmt.get()) ); 59 59 prev = curr; 60 60 } // for 61 61 // convert from StatementNode list to Statement list 62 StatementNode *node = dynamic_cast< StatementNode *>(prev);63 std::list< Statement *> stmts;64 build List( stmt, stmts );62 StatementNode *node = dynamic_cast< StatementNode * >(prev); 63 std::list< Statement * > stmts; 64 buildMoveList( stmt, stmts ); 65 65 // splice any new Statements to end of current Statements 66 CaseStmt * caseStmt = dynamic_cast< CaseStmt *>(node->stmt);66 CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt.get()); 67 67 caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts ); 68 68 return this; … … 70 70 71 71 Statement *build_expr( ExpressionNode *ctl ) { 72 Expression *e = maybe Build< Expression >( ctl );72 Expression *e = maybeMoveBuild< Expression >( ctl ); 73 73 74 74 if ( e ) … … 80 80 Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) { 81 81 Statement *thenb, *elseb = 0; 82 std::list< Statement *> branches;83 build List<Statement, StatementNode>( then_stmt, branches );82 std::list< Statement * > branches; 83 buildMoveList< Statement, StatementNode >( then_stmt, branches ); 84 84 assert( branches.size() == 1 ); 85 85 thenb = branches.front(); 86 86 87 87 if ( else_stmt ) { 88 std::list< Statement *> branches;89 build List<Statement, StatementNode>( else_stmt, branches );88 std::list< Statement * > branches; 89 buildMoveList< Statement, StatementNode >( else_stmt, branches ); 90 90 assert( branches.size() == 1 ); 91 91 elseb = branches.front(); 92 92 } // if 93 return new IfStmt( noLabels, notZeroExpr( maybe Build<Expression>(ctl) ), thenb, elseb );93 return new IfStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), thenb, elseb ); 94 94 } 95 95 96 96 Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) { 97 std::list< Statement *> branches;98 build List<Statement, StatementNode>( stmt, branches );97 std::list< Statement * > branches; 98 buildMoveList< Statement, StatementNode >( stmt, branches ); 99 99 assert( branches.size() >= 0 ); // size == 0 for switch (...) {}, i.e., no declaration or statements 100 return new SwitchStmt( noLabels, maybe Build<Expression>(ctl), branches );100 return new SwitchStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches ); 101 101 } 102 102 Statement *build_case( ExpressionNode *ctl ) { 103 std::list< Statement *> branches;104 return new CaseStmt( noLabels, maybe Build<Expression>(ctl), branches );103 std::list< Statement * > branches; 104 return new CaseStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches ); 105 105 } 106 106 Statement *build_default() { 107 std::list< Statement *> branches;107 std::list< Statement * > branches; 108 108 return new CaseStmt( noLabels, nullptr, branches, true ); 109 109 } 110 110 111 111 Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) { 112 std::list< Statement *> branches;113 build List<Statement, StatementNode>( stmt, branches );114 assert( branches.size() == 1 ); 115 return new WhileStmt( noLabels, notZeroExpr( maybe Build<Expression>(ctl) ), branches.front(), kind );112 std::list< Statement * > branches; 113 buildMoveList< Statement, StatementNode >( stmt, branches ); 114 assert( branches.size() == 1 ); 115 return new WhileStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), branches.front(), kind ); 116 116 } 117 117 118 118 Statement *build_for( ForCtl *forctl, StatementNode *stmt ) { 119 std::list< Statement *> branches;120 build List<Statement, StatementNode>( stmt, branches );121 assert( branches.size() == 1 ); 122 123 std::list< Statement *> init;119 std::list< Statement * > branches; 120 buildMoveList< Statement, StatementNode >( stmt, branches ); 121 assert( branches.size() == 1 ); 122 123 std::list< Statement * > init; 124 124 if ( forctl->init != 0 ) { 125 build List( forctl->init, init );125 buildMoveList( forctl->init, init ); 126 126 } // if 127 127 128 128 Expression *cond = 0; 129 129 if ( forctl->condition != 0 ) 130 cond = notZeroExpr( maybe Build<Expression>(forctl->condition) );130 cond = notZeroExpr( maybeMoveBuild< Expression >(forctl->condition) ); 131 131 132 132 Expression *incr = 0; 133 133 if ( forctl->change != 0 ) 134 incr = maybe Build<Expression>(forctl->change);134 incr = maybeMoveBuild< Expression >(forctl->change); 135 135 136 136 delete forctl; … … 142 142 } 143 143 Statement *build_computedgoto( ExpressionNode *ctl ) { 144 return new BranchStmt( noLabels, maybe Build<Expression>(ctl), BranchStmt::Goto );144 return new BranchStmt( noLabels, maybeMoveBuild< Expression >(ctl), BranchStmt::Goto ); 145 145 } 146 146 147 147 Statement *build_return( ExpressionNode *ctl ) { 148 std::list< Expression *> exps;149 build List( ctl, exps );148 std::list< Expression * > exps; 149 buildMoveList( ctl, exps ); 150 150 return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr ); 151 151 } 152 152 Statement *build_throw( ExpressionNode *ctl ) { 153 std::list<Expression *> exps; 154 buildList( ctl, exps ); 155 return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr, true ); 153 std::list< Expression * > exps; 154 buildMoveList( ctl, exps ); 155 assertf( exps.size() < 2, "This means we are leaking memory"); 156 return new ReturnStmt( noLabels, !exps.empty() ? exps.back() : nullptr, true ); 156 157 } 157 158 158 159 Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) { 159 std::list< Statement *> branches;160 build List<Statement, StatementNode>( catch_stmt, branches );161 CompoundStmt *tryBlock = dynamic_cast< CompoundStmt *>(maybeBuild<Statement>(try_stmt));160 std::list< Statement * > branches; 161 buildMoveList< Statement, StatementNode >( catch_stmt, branches ); 162 CompoundStmt *tryBlock = dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt)); 162 163 assert( tryBlock ); 163 FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt *>(maybeBuild<Statement>(finally_stmt) );164 FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) ); 164 165 return new TryStmt( noLabels, tryBlock, branches, finallyBlock ); 165 166 } 166 167 Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny ) { 167 std::list< Statement *> branches;168 build List<Statement, StatementNode>( stmt, branches );169 assert( branches.size() == 1 ); 170 return new CatchStmt( noLabels, maybe Build<Declaration>(decl), branches.front(), catchAny );168 std::list< Statement * > branches; 169 buildMoveList< Statement, StatementNode >( stmt, branches ); 170 assert( branches.size() == 1 ); 171 return new CatchStmt( noLabels, maybeMoveBuild< Declaration >(decl), branches.front(), catchAny ); 171 172 } 172 173 Statement *build_finally( StatementNode *stmt ) { 173 std::list< Statement *> branches;174 build List<Statement, StatementNode>( stmt, branches );175 assert( branches.size() == 1 ); 176 return new FinallyStmt( noLabels, dynamic_cast< CompoundStmt *>( branches.front() ) );174 std::list< Statement * > branches; 175 buildMoveList< Statement, StatementNode >( stmt, branches ); 176 assert( branches.size() == 1 ); 177 return new FinallyStmt( noLabels, dynamic_cast< CompoundStmt * >( branches.front() ) ); 177 178 } 178 179 179 180 Statement *build_compound( StatementNode *first ) { 180 181 CompoundStmt *cs = new CompoundStmt( noLabels ); 181 build List( first, cs->get_kids() );182 buildMoveList( first, cs->get_kids() ); 182 183 return cs; 183 184 } … … 187 188 std::list< ConstantExpr * > clob; 188 189 189 build List( output, out );190 build List( input, in );191 build List( clobber, clob );190 buildMoveList( output, out ); 191 buildMoveList( input, in ); 192 buildMoveList( clobber, clob ); 192 193 return new AsmStmt( noLabels, voltile, instruction, out, in, clob, gotolabels ? gotolabels->labels : noLabels ); 193 194 } -
src/Parser/TypeData.cc
r7b1bfc5 r4a7d895 10 10 // Created On : Sat May 16 15:12:51 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Aug 13 18:38:41201613 // Update Count : 5912 // Last Modified On : Thu Aug 18 23:48:44 2016 13 // Update Count : 64 14 14 // 15 15 … … 182 182 break; 183 183 case Array: 184 //PAB newtype->array->dimension = maybeClone( array->dimension );185 184 newtype->array->dimension = array->dimension; 186 185 newtype->array->isVarLen = array->isVarLen; … … 479 478 } 480 479 481 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec:: Typelinkage, Initializer *init ) const {480 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer *init ) const { 482 481 if ( kind == TypeData::Function ) { 483 482 FunctionDecl *decl; … … 489 488 decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn ); 490 489 } else { 491 // std::list< Label> ls;492 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list< Label>() ), isInline, isNoreturn );490 // std::list< Label > ls; 491 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn ); 493 492 } // if 494 493 } else { … … 909 908 buildList( enumeration->constants, ret->get_members() ); 910 909 std::list< Declaration * >::iterator members = ret->get_members().begin(); 911 for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_next() ), ++members ) {912 if ( cur->get_enumeratorValue() != NULL) {913 ObjectDecl *member = dynamic_cast< ObjectDecl *>(*members);910 for ( const DeclarationNode *cur = enumeration->constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) { 911 if ( cur->get_enumeratorValue() != nullptr ) { 912 ObjectDecl *member = dynamic_cast< ObjectDecl * >(*members); 914 913 member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) ); 915 914 } // if -
src/Parser/TypeData.h
r7b1bfc5 r4a7d895 10 10 // Created On : Sat May 16 15:18:36 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Aug 15 14:28:32 201613 // Update Count : 2 112 // Last Modified On : Thu Aug 18 23:48:52 2016 13 // Update Count : 22 14 14 // 15 15 … … 126 126 TypeData * extractAggregate( bool toplevel = true ) const; 127 127 // helper function for DeclNodeImpl::build 128 Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec:: Typelinkage, Initializer * init = 0 ) const;128 Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init = 0 ) const; 129 129 // helper functions for build() 130 130 Type::Qualifiers buildQualifiers() const; -
src/Parser/TypedefTable.cc
r7b1bfc5 r4a7d895 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
r7b1bfc5 r4a7d895 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
r7b1bfc5 r4a7d895 1468 1468 * Author : Peter A. Buhr 1469 1469 * Created On : Sat Sep 22 08:58:10 2001 1470 * Last Modified By : 1471 * Last Modified On : Sun Jul 31 07:19:3620161472 * Update Count : 4 591470 * Last Modified By : Peter A. Buhr 1471 * Last Modified On : Thu Aug 18 22:17:30 2016 1472 * Update Count : 472 1473 1473 */ 1474 1474 #line 20 "lex.ll" … … 1480 1480 1481 1481 #include <string> 1482 #include <cstdio> // FILENAME_MAX 1482 1483 1483 1484 #include "lex.h" … … 1491 1492 #define RETURN_LOCN(x) yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x ) 1492 1493 #define RETURN_VAL(x) yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x ) 1493 #define RETURN_CHAR(x) yylval.tok.str = NULL; RETURN_LOCN( x )1494 #define RETURN_CHAR(x) yylval.tok.str = nullptr; RETURN_LOCN( x ) 1494 1495 #define RETURN_STR(x) yylval.tok.str = strtext; RETURN_LOCN( x ) 1495 1496 1496 #define WHITE_RETURN(x) 1497 #define WHITE_RETURN(x) // do nothing 1497 1498 #define NEWLINE_RETURN() WHITE_RETURN( '\n' ) 1498 1499 #define ASCIIOP_RETURN() RETURN_CHAR( (int)yytext[0] ) // single character operator 1499 #define NAMEDOP_RETURN(x) RETURN_ VAL( x )// multichar operator, with a name1500 #define NAMEDOP_RETURN(x) RETURN_CHAR( x ) // multichar operator, with a name 1500 1501 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 1501 1502 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword … … 1531 1532 1532 1533 1533 #line 153 4"Parser/lex.cc"1534 #line 1535 "Parser/lex.cc" 1534 1535 1535 1536 #define INITIAL 0 … … 1723 1724 register int yy_act; 1724 1725 1725 #line 13 8"lex.ll"1726 #line 139 "lex.ll" 1726 1727 1727 1728 /* line directives */ 1728 #line 17 29"Parser/lex.cc"1729 #line 1730 "Parser/lex.cc" 1729 1730 1730 1731 if ( !(yy_init) ) … … 1823 1824 /* rule 1 can match eol */ 1824 1825 YY_RULE_SETUP 1825 #line 14 0"lex.ll"1826 #line 141 "lex.ll" 1826 1827 { 1827 1828 /* " stop highlighting */ 1829 static char *filename[FILENAME_MAX]; // temporarily store current source-file name 1828 1830 char *end_num; 1829 1831 char *begin_string, *end_string; 1830 char *filename;1831 1832 long lineno, length; 1832 1833 lineno = strtol( yytext + 1, &end_num, 0 ); 1833 1834 begin_string = strchr( end_num, '"' ); 1834 if ( begin_string ) { 1835 end_string = strchr( begin_string + 1, '"' ); 1836 if ( end_string ) { 1837 length = end_string - begin_string - 1; 1838 filename = new char[ length + 1 ]; 1839 memcpy( filename, begin_string + 1, length ); 1840 filename[ length ] = '\0'; 1841 //std::cout << "file " << filename << " line " << lineno << std::endl; 1842 yylineno = lineno; 1843 yyfilename = filename; 1844 } // if 1835 if ( begin_string ) { // file name ? 1836 end_string = strchr( begin_string + 1, '"' ); // look for ending delimiter 1837 assert( end_string ); // closing quote ? 1838 length = end_string - begin_string - 1; // file-name length without quotes or sentinel 1839 assert( length < FILENAME_MAX ); // room for sentinel ? 1840 memcpy( &filename, begin_string + 1, length ); // copy file name from yytext 1841 filename[ length ] = '\0'; // terminate string with sentinel 1842 //std::cout << "file " << filename << " line " << lineno << std::endl; 1843 yylineno = lineno; 1844 yyfilename = filename[0]; 1845 1845 } // if 1846 1846 } -
src/Parser/lex.ll
r7b1bfc5 r4a7d895 9 9 * Author : Peter A. Buhr 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 * Last Modified By : 12 * Last Modified On : Sun Jul 31 07:19:36201613 * Update Count : 4 5911 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Thu Aug 18 22:17:30 2016 13 * Update Count : 472 14 14 */ 15 15 … … 25 25 26 26 #include <string> 27 #include <cstdio> // FILENAME_MAX 27 28 28 29 #include "lex.h" … … 36 37 #define RETURN_LOCN(x) yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x ) 37 38 #define RETURN_VAL(x) yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x ) 38 #define RETURN_CHAR(x) yylval.tok.str = NULL; RETURN_LOCN( x )39 #define RETURN_CHAR(x) yylval.tok.str = nullptr; RETURN_LOCN( x ) 39 40 #define RETURN_STR(x) yylval.tok.str = strtext; RETURN_LOCN( x ) 40 41 41 #define WHITE_RETURN(x) 42 #define WHITE_RETURN(x) // do nothing 42 43 #define NEWLINE_RETURN() WHITE_RETURN( '\n' ) 43 44 #define ASCIIOP_RETURN() RETURN_CHAR( (int)yytext[0] ) // single character operator 44 #define NAMEDOP_RETURN(x) RETURN_ VAL( x )// multichar operator, with a name45 #define NAMEDOP_RETURN(x) RETURN_CHAR( x ) // multichar operator, with a name 45 46 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 46 47 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword … … 140 141 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" { 141 142 /* " stop highlighting */ 143 static char *filename[FILENAME_MAX]; // temporarily store current source-file name 142 144 char *end_num; 143 145 char *begin_string, *end_string; 144 char *filename;145 146 long lineno, length; 146 147 lineno = strtol( yytext + 1, &end_num, 0 ); 147 148 begin_string = strchr( end_num, '"' ); 148 if ( begin_string ) { 149 end_string = strchr( begin_string + 1, '"' ); 150 if ( end_string ) { 151 length = end_string - begin_string - 1; 152 filename = new char[ length + 1 ]; 153 memcpy( filename, begin_string + 1, length ); 154 filename[ length ] = '\0'; 155 //std::cout << "file " << filename << " line " << lineno << std::endl; 156 yylineno = lineno; 157 yyfilename = filename; 158 } // if 149 if ( begin_string ) { // file name ? 150 end_string = strchr( begin_string + 1, '"' ); // look for ending delimiter 151 assert( end_string ); // closing quote ? 152 length = end_string - begin_string - 1; // file-name length without quotes or sentinel 153 assert( length < FILENAME_MAX ); // room for sentinel ? 154 memcpy( &filename, begin_string + 1, length ); // copy file name from yytext 155 filename[ length ] = '\0'; // terminate string with sentinel 156 //std::cout << "file " << filename << " line " << lineno << std::endl; 157 yylineno = lineno; 158 yyfilename = filename[0]; 159 159 } // if 160 160 } -
src/Parser/module.mk
r7b1bfc5 r4a7d895 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
r7b1bfc5 r4a7d895 1 /* A Bison parser, made by GNU Bison 2.5. */1 /* A Bison parser, made by GNU Bison 3.0.2. */ 2 2 3 3 /* Bison implementation for Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989-1990, 2000-2011Free Software Foundation, Inc.6 4 5 Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. 6 7 7 This program is free software: you can redistribute it and/or modify 8 8 it under the terms of the GNU General Public License as published by 9 9 the Free Software Foundation, either version 3 of the License, or 10 10 (at your option) any later version. 11 11 12 12 This program is distributed in the hope that it will be useful, 13 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 GNU General Public License for more details. 16 16 17 17 You should have received a copy of the GNU General Public License 18 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ … … 27 27 Bison output files to be licensed under the GNU General Public 28 28 License without this special exception. 29 29 30 30 This special exception was added by the Free Software Foundation in 31 31 version 2.2 of Bison. */ … … 45 45 46 46 /* Bison version. */ 47 #define YYBISON_VERSION " 2.5"47 #define YYBISON_VERSION "3.0.2" 48 48 49 49 /* Skeleton name. */ … … 59 59 #define YYPULL 1 60 60 61 /* Using locations. */62 #define YYLSP_NEEDED 063 61 64 62 65 63 66 64 /* Copy the first part of user declarations. */ 67 68 /* Line 268 of yacc.c */ 69 #line 42 "parser.yy" 65 #line 42 "parser.yy" /* yacc.c:339 */ 70 66 71 67 #define YYDEBUG_LEXER_TEXT (yylval) // lexer loads this up each time 72 68 #define YYDEBUG 1 // get the pretty debugging code to compile 73 extern char *yytext;74 69 75 70 #undef __GNUC_MINOR__ … … 84 79 #include "LinkageSpec.h" 85 80 86 DeclarationNode *theTree = 0; // the resulting parse tree 87 LinkageSpec::Type linkage = LinkageSpec::Cforall; 88 std::stack< LinkageSpec::Type > linkageStack; 89 TypedefTable typedefTable; 81 extern DeclarationNode * parseTree; 82 extern LinkageSpec::Spec linkage; 83 extern TypedefTable typedefTable; 84 85 std::stack< LinkageSpec::Spec > linkageStack; 90 86 91 87 void appendStr( std::string &to, std::string *from ) { … … 94 90 } // appendStr 95 91 96 97 /* Line 268 of yacc.c */ 98 #line 99 "Parser/parser.cc" 99 100 /* Enabling traces. */ 101 #ifndef YYDEBUG 102 # define YYDEBUG 1 103 #endif 92 #line 93 "Parser/parser.cc" /* yacc.c:339 */ 93 94 # ifndef YY_NULLPTR 95 # if defined __cplusplus && 201103L <= __cplusplus 96 # define YY_NULLPTR nullptr 97 # else 98 # define YY_NULLPTR 0 99 # endif 100 # endif 104 101 105 102 /* Enabling verbose error messages. */ … … 111 108 #endif 112 109 113 /* Enabling the token table. */ 114 #ifndef YYTOKEN_TABLE 115 # define YYTOKEN_TABLE 0 110 /* In a future release of Bison, this section will be replaced 111 by #include "y.tab.h". */ 112 #ifndef YY_YY_Y_TAB_H_INCLUDED 113 # define YY_YY_Y_TAB_H_INCLUDED 114 /* Debug traces. */ 115 #ifndef YYDEBUG 116 # define YYDEBUG 1 116 117 #endif 117 118 119 /* Tokens. */ 118 #if YYDEBUG 119 extern int yydebug; 120 #endif 121 122 /* Token type. */ 120 123 #ifndef YYTOKENTYPE 121 124 # define YYTOKENTYPE 122 /* Put the tokens into the symbol table, so that GDB and other debuggers 123 know about them. */ 124 enum yytokentype { 125 TYPEDEF = 258, 126 AUTO = 259, 127 EXTERN = 260, 128 REGISTER = 261, 129 STATIC = 262, 130 INLINE = 263, 131 FORTRAN = 264, 132 CONST = 265, 133 VOLATILE = 266, 134 RESTRICT = 267, 135 FORALL = 268, 136 LVALUE = 269, 137 VOID = 270, 138 CHAR = 271, 139 SHORT = 272, 140 INT = 273, 141 LONG = 274, 142 FLOAT = 275, 143 DOUBLE = 276, 144 SIGNED = 277, 145 UNSIGNED = 278, 146 VALIST = 279, 147 BOOL = 280, 148 COMPLEX = 281, 149 IMAGINARY = 282, 150 TYPEOF = 283, 151 LABEL = 284, 152 ENUM = 285, 153 STRUCT = 286, 154 UNION = 287, 155 OTYPE = 288, 156 FTYPE = 289, 157 DTYPE = 290, 158 TRAIT = 291, 159 SIZEOF = 292, 160 OFFSETOF = 293, 161 ATTRIBUTE = 294, 162 EXTENSION = 295, 163 IF = 296, 164 ELSE = 297, 165 SWITCH = 298, 166 CASE = 299, 167 DEFAULT = 300, 168 DO = 301, 169 WHILE = 302, 170 FOR = 303, 171 BREAK = 304, 172 CONTINUE = 305, 173 GOTO = 306, 174 RETURN = 307, 175 CHOOSE = 308, 176 DISABLE = 309, 177 ENABLE = 310, 178 FALLTHRU = 311, 179 TRY = 312, 180 CATCH = 313, 181 CATCHRESUME = 314, 182 FINALLY = 315, 183 THROW = 316, 184 THROWRESUME = 317, 185 AT = 318, 186 ASM = 319, 187 ALIGNAS = 320, 188 ALIGNOF = 321, 189 ATOMIC = 322, 190 GENERIC = 323, 191 NORETURN = 324, 192 STATICASSERT = 325, 193 THREADLOCAL = 326, 194 IDENTIFIER = 327, 195 QUOTED_IDENTIFIER = 328, 196 TYPEDEFname = 329, 197 TYPEGENname = 330, 198 ATTR_IDENTIFIER = 331, 199 ATTR_TYPEDEFname = 332, 200 ATTR_TYPEGENname = 333, 201 INTEGERconstant = 334, 202 FLOATINGconstant = 335, 203 CHARACTERconstant = 336, 204 STRINGliteral = 337, 205 ZERO = 338, 206 ONE = 339, 207 ARROW = 340, 208 ICR = 341, 209 DECR = 342, 210 LS = 343, 211 RS = 344, 212 LE = 345, 213 GE = 346, 214 EQ = 347, 215 NE = 348, 216 ANDAND = 349, 217 OROR = 350, 218 ELLIPSIS = 351, 219 MULTassign = 352, 220 DIVassign = 353, 221 MODassign = 354, 222 PLUSassign = 355, 223 MINUSassign = 356, 224 LSassign = 357, 225 RSassign = 358, 226 ANDassign = 359, 227 ERassign = 360, 228 ORassign = 361, 229 ATassign = 362, 230 THEN = 363 231 }; 125 enum yytokentype 126 { 127 TYPEDEF = 258, 128 AUTO = 259, 129 EXTERN = 260, 130 REGISTER = 261, 131 STATIC = 262, 132 INLINE = 263, 133 FORTRAN = 264, 134 CONST = 265, 135 VOLATILE = 266, 136 RESTRICT = 267, 137 FORALL = 268, 138 LVALUE = 269, 139 VOID = 270, 140 CHAR = 271, 141 SHORT = 272, 142 INT = 273, 143 LONG = 274, 144 FLOAT = 275, 145 DOUBLE = 276, 146 SIGNED = 277, 147 UNSIGNED = 278, 148 VALIST = 279, 149 BOOL = 280, 150 COMPLEX = 281, 151 IMAGINARY = 282, 152 TYPEOF = 283, 153 LABEL = 284, 154 ENUM = 285, 155 STRUCT = 286, 156 UNION = 287, 157 OTYPE = 288, 158 FTYPE = 289, 159 DTYPE = 290, 160 TRAIT = 291, 161 SIZEOF = 292, 162 OFFSETOF = 293, 163 ATTRIBUTE = 294, 164 EXTENSION = 295, 165 IF = 296, 166 ELSE = 297, 167 SWITCH = 298, 168 CASE = 299, 169 DEFAULT = 300, 170 DO = 301, 171 WHILE = 302, 172 FOR = 303, 173 BREAK = 304, 174 CONTINUE = 305, 175 GOTO = 306, 176 RETURN = 307, 177 CHOOSE = 308, 178 DISABLE = 309, 179 ENABLE = 310, 180 FALLTHRU = 311, 181 TRY = 312, 182 CATCH = 313, 183 CATCHRESUME = 314, 184 FINALLY = 315, 185 THROW = 316, 186 THROWRESUME = 317, 187 AT = 318, 188 ASM = 319, 189 ALIGNAS = 320, 190 ALIGNOF = 321, 191 ATOMIC = 322, 192 GENERIC = 323, 193 NORETURN = 324, 194 STATICASSERT = 325, 195 THREADLOCAL = 326, 196 IDENTIFIER = 327, 197 QUOTED_IDENTIFIER = 328, 198 TYPEDEFname = 329, 199 TYPEGENname = 330, 200 ATTR_IDENTIFIER = 331, 201 ATTR_TYPEDEFname = 332, 202 ATTR_TYPEGENname = 333, 203 INTEGERconstant = 334, 204 FLOATINGconstant = 335, 205 CHARACTERconstant = 336, 206 STRINGliteral = 337, 207 ZERO = 338, 208 ONE = 339, 209 ARROW = 340, 210 ICR = 341, 211 DECR = 342, 212 LS = 343, 213 RS = 344, 214 LE = 345, 215 GE = 346, 216 EQ = 347, 217 NE = 348, 218 ANDAND = 349, 219 OROR = 350, 220 ELLIPSIS = 351, 221 MULTassign = 352, 222 DIVassign = 353, 223 MODassign = 354, 224 PLUSassign = 355, 225 MINUSassign = 356, 226 LSassign = 357, 227 RSassign = 358, 228 ANDassign = 359, 229 ERassign = 360, 230 ORassign = 361, 231 ATassign = 362, 232 THEN = 363 233 }; 232 234 #endif 233 235 /* Tokens. */ … … 339 341 #define THEN 363 340 342 341 342 343 343 /* Value type. */ 344 344 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 345 typedef union YYSTYPE 345 typedef union YYSTYPE YYSTYPE; 346 union YYSTYPE 346 347 { 347 348 /* Line 293 of yacc.c */ 349 #line 115 "parser.yy" 348 #line 115 "parser.yy" /* yacc.c:355 */ 350 349 351 350 Token tok; … … 363 362 bool flag; 364 363 365 366 367 /* Line 293 of yacc.c */ 368 #line 369 "Parser/parser.cc" 369 } YYSTYPE; 364 #line 365 "Parser/parser.cc" /* yacc.c:355 */ 365 }; 370 366 # define YYSTYPE_IS_TRIVIAL 1 371 # define yystype YYSTYPE /* obsolescent; will be withdrawn */372 367 # define YYSTYPE_IS_DECLARED 1 373 368 #endif 374 369 375 370 371 extern YYSTYPE yylval; 372 373 int yyparse (void); 374 375 #endif /* !YY_YY_Y_TAB_H_INCLUDED */ 376 376 377 /* Copy the second part of user declarations. */ 377 378 378 379 /* Line 343 of yacc.c */ 380 #line 381 "Parser/parser.cc" 379 #line 380 "Parser/parser.cc" /* yacc.c:358 */ 381 380 382 381 #ifdef short … … 392 391 #ifdef YYTYPE_INT8 393 392 typedef YYTYPE_INT8 yytype_int8; 394 #elif (defined __STDC__ || defined __C99__FUNC__ \ 395 || defined __cplusplus || defined _MSC_VER) 393 #else 396 394 typedef signed char yytype_int8; 397 #else398 typedef short int yytype_int8;399 395 #endif 400 396 … … 416 412 # elif defined size_t 417 413 # define YYSIZE_T size_t 418 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 419 || defined __cplusplus || defined _MSC_VER) 414 # elif ! defined YYSIZE_T 420 415 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 421 416 # define YYSIZE_T size_t … … 431 426 # if ENABLE_NLS 432 427 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 433 # define YY_( msgid) dgettext ("bison-runtime", msgid)428 # define YY_(Msgid) dgettext ("bison-runtime", Msgid) 434 429 # endif 435 430 # endif 436 431 # ifndef YY_ 437 # define YY_( msgid) msgid432 # define YY_(Msgid) Msgid 438 433 # endif 439 434 #endif 440 435 436 #ifndef YY_ATTRIBUTE 437 # if (defined __GNUC__ \ 438 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ 439 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C 440 # define YY_ATTRIBUTE(Spec) __attribute__(Spec) 441 # else 442 # define YY_ATTRIBUTE(Spec) /* empty */ 443 # endif 444 #endif 445 446 #ifndef YY_ATTRIBUTE_PURE 447 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) 448 #endif 449 450 #ifndef YY_ATTRIBUTE_UNUSED 451 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) 452 #endif 453 454 #if !defined _Noreturn \ 455 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) 456 # if defined _MSC_VER && 1200 <= _MSC_VER 457 # define _Noreturn __declspec (noreturn) 458 # else 459 # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) 460 # endif 461 #endif 462 441 463 /* Suppress unused-variable warnings by "using" E. */ 442 464 #if ! defined lint || defined __GNUC__ 443 # define YYUSE( e) ((void) (e))465 # define YYUSE(E) ((void) (E)) 444 466 #else 445 # define YYUSE( e) /* empty */467 # define YYUSE(E) /* empty */ 446 468 #endif 447 469 448 /* Identity function, used to suppress warnings about constant conditions. */ 449 #ifndef lint 450 # define YYID(n) (n) 470 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ 471 /* Suppress an incorrect diagnostic about yylval being uninitialized. */ 472 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 473 _Pragma ("GCC diagnostic push") \ 474 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ 475 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 476 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 477 _Pragma ("GCC diagnostic pop") 451 478 #else 452 #if (defined __STDC__ || defined __C99__FUNC__ \ 453 || defined __cplusplus || defined _MSC_VER) 454 static int 455 YYID (int yyi) 456 #else 457 static int 458 YYID (yyi) 459 int yyi; 479 # define YY_INITIAL_VALUE(Value) Value 460 480 #endif 461 { 462 return yyi; 463 } 481 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 482 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 483 # define YY_IGNORE_MAYBE_UNINITIALIZED_END 464 484 #endif 485 #ifndef YY_INITIAL_VALUE 486 # define YY_INITIAL_VALUE(Value) /* Nothing. */ 487 #endif 488 465 489 466 490 #if ! defined yyoverflow || YYERROR_VERBOSE … … 481 505 # else 482 506 # define YYSTACK_ALLOC alloca 483 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 484 || defined __cplusplus || defined _MSC_VER) 507 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS 485 508 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 509 /* Use EXIT_SUCCESS as a witness for stdlib.h. */ 486 510 # ifndef EXIT_SUCCESS 487 511 # define EXIT_SUCCESS 0 … … 493 517 494 518 # ifdef YYSTACK_ALLOC 495 /* Pacify GCC's `empty if-body' warning. */496 # define YYSTACK_FREE(Ptr) do { /* empty */; } while ( YYID (0))519 /* Pacify GCC's 'empty if-body' warning. */ 520 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) 497 521 # ifndef YYSTACK_ALLOC_MAXIMUM 498 522 /* The OS might guarantee only one guard page at the bottom of the stack, … … 510 534 # if (defined __cplusplus && ! defined EXIT_SUCCESS \ 511 535 && ! ((defined YYMALLOC || defined malloc) \ 512 536 && (defined YYFREE || defined free))) 513 537 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 514 538 # ifndef EXIT_SUCCESS … … 518 542 # ifndef YYMALLOC 519 543 # define YYMALLOC malloc 520 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 521 || defined __cplusplus || defined _MSC_VER) 544 # if ! defined malloc && ! defined EXIT_SUCCESS 522 545 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 523 546 # endif … … 525 548 # ifndef YYFREE 526 549 # define YYFREE free 527 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ 528 || defined __cplusplus || defined _MSC_VER) 550 # if ! defined free && ! defined EXIT_SUCCESS 529 551 void free (void *); /* INFRINGES ON USER NAME SPACE */ 530 552 # endif … … 536 558 #if (! defined yyoverflow \ 537 559 && (! defined __cplusplus \ 538 560 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 539 561 540 562 /* A type that is properly aligned for any stack member. */ … … 561 583 stack. Advance YYPTR to a properly aligned location for the next 562 584 stack. */ 563 # define YYSTACK_RELOCATE(Stack_alloc, Stack) 564 do 565 { 566 YYSIZE_T yynewbytes;\567 YYCOPY (&yyptr->Stack_alloc, Stack, yysize);\568 Stack = &yyptr->Stack_alloc;\569 570 yyptr += yynewbytes / sizeof (*yyptr);\571 } 572 while ( YYID (0))585 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 586 do \ 587 { \ 588 YYSIZE_T yynewbytes; \ 589 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 590 Stack = &yyptr->Stack_alloc; \ 591 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 592 yyptr += yynewbytes / sizeof (*yyptr); \ 593 } \ 594 while (0) 573 595 574 596 #endif 575 597 576 598 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED 577 /* Copy COUNT objects from FROM to TO. The source and destination do599 /* Copy COUNT objects from SRC to DST. The source and destination do 578 600 not overlap. */ 579 601 # ifndef YYCOPY 580 602 # if defined __GNUC__ && 1 < __GNUC__ 581 # define YYCOPY( To, From, Count) \582 __builtin_memcpy ( To, From, (Count) * sizeof (*(From)))603 # define YYCOPY(Dst, Src, Count) \ 604 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) 583 605 # else 584 # define YYCOPY( To, From, Count)\585 do 586 {\587 YYSIZE_T yyi;\588 for (yyi = 0; yyi < (Count); yyi++)\589 (To)[yyi] = (From)[yyi];\590 }\591 while ( YYID (0))606 # define YYCOPY(Dst, Src, Count) \ 607 do \ 608 { \ 609 YYSIZE_T yyi; \ 610 for (yyi = 0; yyi < (Count); yyi++) \ 611 (Dst)[yyi] = (Src)[yyi]; \ 612 } \ 613 while (0) 592 614 # endif 593 615 # endif … … 595 617 596 618 /* YYFINAL -- State number of the termination state. */ 597 #define YYFINAL 25 1619 #define YYFINAL 250 598 620 /* YYLAST -- Last index in YYTABLE. */ 599 #define YYLAST 10 816621 #define YYLAST 10977 600 622 601 623 /* YYNTOKENS -- Number of terminals. */ 602 624 #define YYNTOKENS 133 603 625 /* YYNNTS -- Number of nonterminals. */ 604 #define YYNNTS 24 1626 #define YYNNTS 240 605 627 /* YYNRULES -- Number of rules. */ 606 #define YYNRULES 750 607 /* YYNRULES -- Number of states. */ 608 #define YYNSTATES 1554 609 610 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 628 #define YYNRULES 749 629 /* YYNSTATES -- Number of states. */ 630 #define YYNSTATES 1553 631 632 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned 633 by yylex, with out-of-bounds checking. */ 611 634 #define YYUNDEFTOK 2 612 635 #define YYMAXUTOK 363 613 636 614 #define YYTRANSLATE(YYX) 637 #define YYTRANSLATE(YYX) \ 615 638 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 616 639 617 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 640 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM 641 as returned by yylex, without out-of-bounds checking. */ 618 642 static const yytype_uint8 yytranslate[] = 619 643 { … … 658 682 659 683 #if YYDEBUG 660 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 661 YYRHS. */ 662 static const yytype_uint16 yyprhs[] = 663 { 664 0, 0, 3, 4, 5, 7, 9, 11, 13, 15, 665 17, 19, 21, 23, 25, 27, 29, 31, 34, 36, 666 38, 42, 46, 48, 55, 60, 64, 72, 76, 84, 667 87, 90, 98, 103, 105, 109, 110, 112, 114, 118, 668 120, 124, 132, 136, 144, 146, 148, 150, 153, 156, 669 159, 162, 165, 168, 173, 176, 181, 188, 190, 195, 670 200, 202, 204, 206, 208, 210, 212, 214, 219, 224, 671 226, 230, 234, 238, 240, 244, 248, 250, 254, 258, 672 260, 264, 268, 272, 276, 278, 282, 286, 288, 292, 673 294, 298, 300, 304, 306, 310, 312, 316, 318, 324, 674 329, 335, 337, 339, 343, 346, 347, 349, 351, 353, 675 355, 357, 359, 361, 363, 365, 367, 369, 371, 374, 676 380, 387, 395, 397, 401, 403, 407, 408, 410, 412, 677 414, 416, 418, 420, 422, 424, 426, 433, 438, 441, 678 449, 451, 455, 457, 460, 462, 465, 467, 470, 473, 679 479, 487, 493, 503, 509, 519, 521, 525, 527, 529, 680 533, 537, 540, 542, 545, 548, 549, 551, 554, 558, 681 559, 561, 564, 568, 572, 577, 578, 580, 582, 585, 682 591, 599, 606, 613, 618, 622, 627, 630, 634, 637, 683 641, 645, 649, 653, 659, 663, 667, 672, 674, 680, 684 687, 693, 700, 710, 721, 731, 742, 745, 747, 750, 685 753, 756, 758, 765, 774, 785, 798, 813, 814, 816, 686 817, 819, 821, 825, 830, 838, 839, 841, 845, 847, 687 851, 853, 855, 857, 861, 863, 865, 867, 871, 872, 688 874, 878, 883, 885, 889, 891, 893, 897, 901, 905, 689 909, 913, 916, 920, 927, 931, 935, 940, 942, 945, 690 948, 952, 958, 967, 975, 983, 989, 999, 1002, 1005, 691 1011, 1015, 1021, 1026, 1030, 1035, 1040, 1048, 1052, 1056, 692 1060, 1064, 1069, 1076, 1078, 1080, 1082, 1084, 1086, 1088, 693 1090, 1092, 1093, 1095, 1097, 1100, 1102, 1104, 1106, 1108, 694 1110, 1112, 1114, 1115, 1121, 1123, 1126, 1130, 1132, 1135, 695 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155, 696 1157, 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175, 697 1177, 1179, 1181, 1184, 1187, 1191, 1195, 1197, 1201, 1203, 698 1206, 1209, 1212, 1217, 1222, 1227, 1232, 1234, 1237, 1240, 699 1244, 1246, 1249, 1252, 1254, 1257, 1260, 1264, 1266, 1269, 700 1272, 1274, 1276, 1281, 1284, 1285, 1292, 1300, 1303, 1306, 701 1309, 1310, 1313, 1316, 1320, 1323, 1327, 1329, 1332, 1336, 702 1339, 1342, 1347, 1348, 1350, 1353, 1356, 1358, 1359, 1361, 703 1364, 1367, 1373, 1376, 1377, 1385, 1388, 1393, 1394, 1397, 704 1398, 1400, 1402, 1404, 1410, 1416, 1422, 1424, 1430, 1436, 705 1446, 1448, 1454, 1455, 1457, 1459, 1465, 1467, 1469, 1475, 706 1481, 1483, 1487, 1491, 1496, 1498, 1500, 1502, 1504, 1507, 707 1509, 1513, 1517, 1519, 1522, 1524, 1528, 1530, 1532, 1534, 708 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1550, 1553, 1555, 709 1557, 1559, 1562, 1563, 1566, 1569, 1571, 1576, 1577, 1579, 710 1582, 1586, 1591, 1594, 1597, 1599, 1602, 1605, 1611, 1617, 711 1625, 1632, 1634, 1637, 1640, 1644, 1646, 1649, 1652, 1657, 712 1660, 1665, 1666, 1671, 1674, 1676, 1678, 1680, 1681, 1684, 713 1690, 1696, 1710, 1712, 1714, 1718, 1722, 1725, 1729, 1733, 714 1736, 1741, 1743, 1750, 1760, 1761, 1773, 1775, 1779, 1783, 715 1787, 1789, 1791, 1797, 1800, 1806, 1807, 1809, 1811, 1815, 716 1816, 1818, 1820, 1822, 1824, 1825, 1832, 1835, 1837, 1840, 717 1845, 1848, 1852, 1856, 1860, 1865, 1871, 1877, 1883, 1890, 718 1892, 1894, 1896, 1900, 1901, 1907, 1908, 1910, 1912, 1915, 719 1922, 1924, 1928, 1929, 1931, 1936, 1938, 1940, 1942, 1944, 720 1947, 1949, 1952, 1955, 1957, 1961, 1964, 1968, 1972, 1975, 721 1980, 1985, 1989, 1998, 2002, 2005, 2007, 2010, 2017, 2026, 722 2030, 2033, 2037, 2041, 2046, 2051, 2055, 2057, 2059, 2061, 723 2066, 2073, 2077, 2080, 2084, 2088, 2093, 2098, 2102, 2105, 724 2107, 2110, 2113, 2115, 2119, 2122, 2126, 2130, 2133, 2138, 725 2143, 2147, 2154, 2163, 2167, 2170, 2172, 2175, 2178, 2181, 726 2185, 2189, 2192, 2197, 2202, 2206, 2213, 2222, 2226, 2229, 727 2231, 2234, 2237, 2239, 2241, 2244, 2248, 2252, 2255, 2260, 728 2267, 2276, 2278, 2281, 2284, 2286, 2289, 2292, 2296, 2300, 729 2302, 2307, 2312, 2316, 2322, 2331, 2335, 2338, 2342, 2344, 730 2350, 2356, 2363, 2370, 2372, 2375, 2378, 2380, 2383, 2386, 731 2390, 2394, 2396, 2401, 2406, 2410, 2416, 2425, 2429, 2431, 732 2434, 2436, 2439, 2446, 2452, 2459, 2467, 2475, 2477, 2480, 733 2483, 2485, 2488, 2491, 2495, 2499, 2501, 2506, 2511, 2515, 734 2524, 2528, 2530, 2532, 2535, 2537, 2539, 2542, 2546, 2549, 735 2553, 2556, 2560, 2564, 2567, 2572, 2576, 2579, 2583, 2586, 736 2591, 2595, 2598, 2605, 2612, 2619, 2627, 2629, 2632, 2634, 737 2636, 2638, 2641, 2645, 2648, 2652, 2655, 2659, 2663, 2668, 738 2671, 2675, 2680, 2683, 2689, 2695, 2702, 2709, 2710, 2712, 739 2713 740 }; 741 742 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 743 static const yytype_int16 yyrhs[] = 744 { 745 302, 0, -1, -1, -1, 79, -1, 80, -1, 81, 746 -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 110, -1, 109, 173, 110, -1, 142, -1, 143, 111, 750 134, 164, 135, 112, -1, 143, 109, 144, 110, -1, 751 143, 113, 139, -1, 143, 113, 111, 134, 146, 135, 752 112, -1, 143, 85, 139, -1, 143, 85, 111, 134, 753 146, 135, 112, -1, 143, 86, -1, 143, 87, -1, 754 109, 275, 110, 114, 279, 372, 115, -1, 143, 114, 755 144, 115, -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 112, -1, 139, 85, 147, -1, 139, 85, 111, 134, 759 146, 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 117, -1, 118, -1, 119, -1, 120, -1, 121, -1, 766 122, -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 154, -1, 155, 91, 154, -1, 155, -1, 156, 92, 773 155, -1, 156, 93, 155, -1, 156, -1, 157, 118, 774 156, -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 169, 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, 102, -1, 103, -1, 104, -1, 105, -1, 106, 782 -1, 111, 112, -1, 111, 134, 164, 135, 112, -1, 783 111, 134, 116, 168, 135, 112, -1, 111, 134, 164, 784 116, 168, 135, 112, -1, 165, -1, 168, 116, 165, 785 -1, 164, -1, 169, 116, 164, -1, -1, 169, -1, 786 172, -1, 173, -1, 177, -1, 178, -1, 190, -1, 787 192, -1, 193, -1, 198, -1, 127, 143, 114, 144, 788 115, 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 109, 169, 110, 171, 42, 171, -1, 43, 109, 169, 794 110, 183, -1, 43, 109, 169, 110, 114, 134, 205, 795 184, 115, -1, 53, 109, 169, 110, 183, -1, 53, 796 109, 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, 187, 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 109, 134, 191, 110, 171, -1, 170, 135, 132, 170, 806 132, 170, -1, 212, 170, 132, 170, -1, 51, 72, 807 132, -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 165, 132, -1, 62, 165, 63, 164, 132, -1, 57, 811 173, 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 195, 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 135, -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, 110, 132, -1, 64, 199, 109, 141, 130, 200, 823 130, 200, 110, 132, -1, 64, 199, 109, 141, 130, 824 200, 130, 200, 130, 203, 110, 132, -1, 64, 199, 825 51, 109, 141, 130, 130, 200, 130, 203, 130, 204, 826 110, 132, -1, -1, 11, -1, -1, 201, -1, 202, 827 -1, 201, 116, 202, -1, 141, 109, 163, 110, -1, 828 111, 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, 216, 135, 132, -1, 293, 135, 132, -1, 296, 836 135, 132, -1, 215, 277, -1, 231, 215, 277, -1, 837 214, 135, 116, 134, 272, 277, -1, 367, 272, 311, 838 -1, 370, 272, 311, -1, 227, 370, 272, 311, -1, 839 217, -1, 227, 217, -1, 231, 217, -1, 231, 227, 840 217, -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 134, 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 225, 3, 227, 309, -1, 3, 139, 131, 164, -1, 849 221, 135, 116, 134, 139, 131, 164, -1, 223, 135, 850 132, -1, 220, 135, 132, -1, 221, 135, 132, -1, 851 240, 135, 132, -1, 224, 309, 311, 277, -1, 223, 852 116, 312, 309, 311, 277, -1, 236, -1, 240, -1, 853 242, -1, 283, -1, 237, -1, 241, -1, 243, -1, 854 284, -1, -1, 227, -1, 228, -1, 227, 228, -1, 855 229, -1, 314, -1, 10, -1, 12, -1, 11, -1, 856 14, -1, 67, -1, -1, 13, 109, 230, 286, 110, 857 -1, 232, -1, 227, 232, -1, 231, 227, 232, -1, 858 233, -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, 19, -1, 17, -1, 22, -1, 23, -1, 15, 862 -1, 25, -1, 26, -1, 27, -1, 24, -1, 237, 863 -1, 231, 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 110, -1, 78, 109, 276, 110, -1, 78, 109, 169, 868 110, -1, 241, -1, 231, 241, -1, 240, 233, -1, 869 240, 233, 227, -1, 244, -1, 227, 244, -1, 241, 870 228, -1, 243, -1, 231, 243, -1, 242, 233, -1, 871 242, 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 115, -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 274, 259, -1, -1, 131, 163, -1, -1, 261, -1, 885 263, -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 262, 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 225, 357, -1, 366, -1, 371, -1, 225, -1, 225, 901 345, -1, -1, 131, 278, -1, 107, 278, -1, 164, 902 -1, 114, 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 112, -1, 284, -1, 231, 284, -1, 283, 233, -1, 909 283, 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 128, 114, 134, 298, 115, -1, 128, 109, 134, 286, 915 135, 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 301, 135, 116, 134, 309, -1, -1, 303, -1, 305, 926 -1, 303, 134, 305, -1, -1, 303, -1, 212, -1, 927 307, -1, 198, -1, -1, 5, 82, 306, 114, 304, 928 115, -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 314, -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 235, -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 110, -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 110, -1, 324, 312, -1, 325, -1, 326, 312, -1, 946 319, 109, 134, 264, 135, 110, -1, 109, 325, 110, 947 109, 134, 264, 135, 110, -1, 109, 324, 110, -1, 948 149, 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, 319, 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 110, 349, -1, 109, 330, 110, 350, -1, 109, 330, 955 110, -1, 332, 312, -1, 333, -1, 334, 312, -1, 956 335, 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 110, 350, -1, 109, 334, 110, -1, 332, 109, 134, 960 264, 135, 110, -1, 109, 333, 110, 109, 134, 264, 961 135, 110, -1, 109, 335, 110, -1, 319, 312, -1, 962 337, -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 350, -1, 109, 338, 110, -1, 319, 109, 134, 264, 966 135, 110, -1, 109, 337, 110, 109, 134, 264, 135, 967 110, -1, 109, 339, 110, -1, 341, 312, -1, 342, 968 -1, 343, 312, -1, 344, 312, -1, 74, -1, 75, 969 -1, 149, 340, -1, 149, 227, 340, -1, 109, 342, 970 110, -1, 341, 355, -1, 109, 342, 110, 355, -1, 971 341, 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 350, -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 111, 134, 117, 135, 112, -1, 350, 111, 134, 164, 981 135, 112, -1, 350, 111, 134, 117, 135, 112, -1, 982 352, -1, 353, 312, -1, 354, 312, -1, 149, -1, 983 149, 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 109, 134, 264, 135, 110, -1, 109, 352, 110, 109, 987 134, 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 360, 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 370, -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 112, -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 350, 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, -1 1017 }; 1018 1019 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 684 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ 1020 685 static const yytype_uint16 yyrline[] = 1021 686 { … … 1051 716 1258, 1263, 1264, 1273, 1274, 1279, 1280, 1285, 1287, 1289, 1052 717 1291, 1293, 1296, 1295, 1307, 1308, 1310, 1320, 1321, 1326, 1053 1330, 1332, 1334, 1336, 1338, 1340, 1342, 1344, 1349, 1351, 1054 1353, 1355, 1357, 1359, 1361, 1363, 1365, 1367, 1369, 1371, 1055 1373, 1379, 1380, 1382, 1384, 1386, 1391, 1392, 1398, 1399, 1056 1401, 1403, 1408, 1410, 1412, 1414, 1419, 1420, 1422, 1424, 1057 1429, 1430, 1432, 1437, 1438, 1440, 1442, 1447, 1449, 1451, 1058 1456, 1457, 1461, 1463, 1469, 1468, 1472, 1474, 1479, 1481, 1059 1487, 1488, 1493, 1494, 1496, 1497, 1506, 1507, 1509, 1511, 1060 1516, 1518, 1524, 1525, 1527, 1530, 1533, 1538, 1539, 1544, 1061 1549, 1553, 1555, 1561, 1560, 1567, 1569, 1575, 1576, 1584, 1062 1585, 1589, 1590, 1591, 1593, 1595, 1602, 1603, 1605, 1607, 1063 1612, 1613, 1619, 1620, 1624, 1625, 1630, 1631, 1632, 1634, 1064 1642, 1643, 1645, 1648, 1650, 1654, 1655, 1656, 1658, 1660, 1065 1664, 1669, 1677, 1678, 1687, 1689, 1694, 1695, 1696, 1700, 1066 1701, 1702, 1706, 1707, 1708, 1712, 1713, 1714, 1719, 1720, 1067 1721, 1722, 1728, 1729, 1731, 1736, 1737, 1742, 1743, 1744, 1068 1745, 1746, 1761, 1762, 1767, 1768, 1774, 1776, 1779, 1781, 1069 1783, 1806, 1807, 1809, 1811, 1816, 1817, 1819, 1824, 1829, 1070 1830, 1836, 1835, 1839, 1843, 1845, 1847, 1853, 1854, 1859, 1071 1864, 1866, 1871, 1873, 1874, 1876, 1881, 1883, 1885, 1890, 1072 1892, 1897, 1902, 1910, 1916, 1915, 1929, 1930, 1935, 1936, 1073 1940, 1945, 1950, 1958, 1963, 1974, 1975, 1986, 1987, 1993, 1074 1994, 1998, 1999, 2000, 2003, 2002, 2013, 2022, 2028, 2034, 1075 2043, 2049, 2055, 2061, 2067, 2075, 2081, 2089, 2095, 2104, 1076 2105, 2106, 2110, 2114, 2116, 2121, 2122, 2126, 2127, 2132, 1077 2138, 2139, 2142, 2144, 2145, 2149, 2150, 2151, 2152, 2186, 1078 2188, 2189, 2191, 2196, 2201, 2206, 2208, 2210, 2215, 2217, 1079 2219, 2221, 2226, 2228, 2237, 2239, 2240, 2245, 2247, 2249, 1080 2254, 2256, 2258, 2263, 2265, 2267, 2276, 2277, 2278, 2282, 1081 2284, 2286, 2291, 2293, 2295, 2300, 2302, 2304, 2319, 2321, 1082 2322, 2324, 2329, 2330, 2335, 2337, 2339, 2344, 2346, 2348, 1083 2350, 2355, 2357, 2359, 2369, 2371, 2372, 2374, 2379, 2381, 1084 2383, 2388, 2390, 2392, 2394, 2399, 2401, 2403, 2434, 2436, 1085 2437, 2439, 2444, 2449, 2457, 2459, 2461, 2466, 2468, 2473, 1086 2475, 2489, 2490, 2492, 2497, 2499, 2501, 2503, 2505, 2510, 1087 2511, 2513, 2515, 2520, 2522, 2524, 2530, 2532, 2534, 2538, 1088 2540, 2542, 2544, 2558, 2559, 2561, 2566, 2568, 2570, 2572, 1089 2574, 2579, 2580, 2582, 2584, 2589, 2591, 2593, 2599, 2600, 1090 2602, 2611, 2614, 2616, 2619, 2621, 2623, 2636, 2637, 2639, 1091 2644, 2646, 2648, 2650, 2652, 2657, 2658, 2660, 2662, 2667, 1092 2669, 2677, 2678, 2679, 2684, 2685, 2689, 2691, 2693, 2695, 1093 2697, 2699, 2706, 2708, 2710, 2712, 2714, 2716, 2718, 2720, 1094 2722, 2724, 2729, 2731, 2733, 2738, 2764, 2765, 2767, 2771, 1095 2772, 2776, 2778, 2780, 2782, 2784, 2786, 2793, 2795, 2797, 1096 2799, 2801, 2803, 2808, 2813, 2815, 2817, 2835, 2837, 2842, 1097 2843 718 1328, 1330, 1332, 1334, 1336, 1338, 1340, 1345, 1347, 1349, 719 1351, 1353, 1355, 1357, 1359, 1361, 1363, 1365, 1367, 1369, 720 1375, 1376, 1378, 1380, 1382, 1387, 1388, 1394, 1395, 1397, 721 1399, 1404, 1406, 1408, 1410, 1415, 1416, 1418, 1420, 1425, 722 1426, 1428, 1433, 1434, 1436, 1438, 1443, 1445, 1447, 1452, 723 1453, 1457, 1459, 1465, 1464, 1468, 1470, 1475, 1477, 1483, 724 1484, 1489, 1490, 1492, 1493, 1502, 1503, 1505, 1507, 1512, 725 1514, 1520, 1521, 1523, 1526, 1529, 1534, 1535, 1540, 1545, 726 1549, 1551, 1557, 1556, 1563, 1565, 1571, 1572, 1580, 1581, 727 1585, 1586, 1587, 1589, 1591, 1598, 1599, 1601, 1603, 1608, 728 1609, 1615, 1616, 1620, 1621, 1626, 1627, 1628, 1630, 1638, 729 1639, 1641, 1644, 1646, 1650, 1651, 1652, 1654, 1656, 1660, 730 1665, 1673, 1674, 1683, 1685, 1690, 1691, 1692, 1696, 1697, 731 1698, 1702, 1703, 1704, 1708, 1709, 1710, 1715, 1716, 1717, 732 1718, 1724, 1725, 1727, 1732, 1733, 1738, 1739, 1740, 1741, 733 1742, 1757, 1758, 1763, 1764, 1770, 1772, 1775, 1777, 1779, 734 1802, 1803, 1805, 1807, 1812, 1813, 1815, 1820, 1825, 1826, 735 1832, 1831, 1835, 1839, 1841, 1843, 1849, 1850, 1855, 1860, 736 1862, 1867, 1869, 1870, 1872, 1877, 1879, 1881, 1886, 1888, 737 1893, 1898, 1906, 1912, 1911, 1925, 1926, 1931, 1932, 1936, 738 1941, 1946, 1954, 1959, 1970, 1971, 1976, 1977, 1983, 1984, 739 1988, 1989, 1990, 1993, 1992, 2003, 2012, 2018, 2024, 2033, 740 2039, 2045, 2051, 2057, 2065, 2071, 2079, 2085, 2094, 2095, 741 2096, 2100, 2104, 2106, 2111, 2112, 2116, 2117, 2122, 2128, 742 2129, 2132, 2134, 2135, 2139, 2140, 2141, 2142, 2176, 2178, 743 2179, 2181, 2186, 2191, 2196, 2198, 2200, 2205, 2207, 2209, 744 2211, 2216, 2218, 2227, 2229, 2230, 2235, 2237, 2239, 2244, 745 2246, 2248, 2253, 2255, 2257, 2266, 2267, 2268, 2272, 2274, 746 2276, 2281, 2283, 2285, 2290, 2292, 2294, 2309, 2311, 2312, 747 2314, 2319, 2320, 2325, 2327, 2329, 2334, 2336, 2338, 2340, 748 2345, 2347, 2349, 2359, 2361, 2362, 2364, 2369, 2371, 2373, 749 2378, 2380, 2382, 2384, 2389, 2391, 2393, 2424, 2426, 2427, 750 2429, 2434, 2439, 2447, 2449, 2451, 2456, 2458, 2463, 2465, 751 2479, 2480, 2482, 2487, 2489, 2491, 2493, 2495, 2500, 2501, 752 2503, 2505, 2510, 2512, 2514, 2520, 2522, 2524, 2528, 2530, 753 2532, 2534, 2548, 2549, 2551, 2556, 2558, 2560, 2562, 2564, 754 2569, 2570, 2572, 2574, 2579, 2581, 2583, 2589, 2590, 2592, 755 2601, 2604, 2606, 2609, 2611, 2613, 2626, 2627, 2629, 2634, 756 2636, 2638, 2640, 2642, 2647, 2648, 2650, 2652, 2657, 2659, 757 2667, 2668, 2669, 2674, 2675, 2679, 2681, 2683, 2685, 2687, 758 2689, 2696, 2698, 2700, 2702, 2704, 2706, 2708, 2710, 2712, 759 2714, 2719, 2721, 2723, 2728, 2754, 2755, 2757, 2761, 2762, 760 2766, 2768, 2770, 2772, 2774, 2776, 2783, 2785, 2787, 2789, 761 2791, 2793, 2798, 2803, 2805, 2807, 2825, 2827, 2832, 2833 1098 762 }; 1099 763 #endif 1100 764 1101 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE765 #if YYDEBUG || YYERROR_VERBOSE || 0 1102 766 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 1103 767 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ … … 1156 820 "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1", 1157 821 "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", 822 "basic_type_name", "basic_declaration_specifier", "basic_type_specifier", 823 "direct_type_name", "indirect_type_name", "sue_declaration_specifier", 824 "sue_type_specifier", "typedef_declaration_specifier", 825 "typedef_type_specifier", "elaborated_type_name", "aggregate_name", 826 "$@2", "aggregate_key", "field_declaration_list", "field_declaration", 1164 827 "new_field_declaring_list", "field_declaring_list", "field_declarator", 1165 828 "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name", … … 1208 871 "new_abstract_declarator_no_tuple", "new_abstract_ptr", 1209 872 "new_abstract_array", "new_abstract_tuple", "new_abstract_function", 1210 "comma_opt", "assignment_opt", 0873 "comma_opt", "assignment_opt", YY_NULLPTR 1211 874 }; 1212 875 #endif 1213 876 1214 877 # ifdef YYPRINT 1215 /* YYTOKNUM[ YYLEX-NUM] -- Internal token number corresponding to1216 token YYLEX-NUM. */878 /* YYTOKNUM[NUM] -- (External) token number corresponding to the 879 (internal) symbol number NUM (which must be that of a token). */ 1217 880 static const yytype_uint16 yytoknum[] = 1218 881 { … … 1234 897 # endif 1235 898 1236 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 899 #define YYPACT_NINF -1317 900 901 #define yypact_value_is_default(Yystate) \ 902 (!!((Yystate) == (-1317))) 903 904 #define YYTABLE_NINF -520 905 906 #define yytable_value_is_error(Yytable_value) \ 907 0 908 909 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 910 STATE-NUM. */ 911 static const yytype_int16 yypact[] = 912 { 913 7252, 8635, -1317, -3, -1317, -1317, -1317, -1317, -1317, -1317, 914 -1317, 23, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 915 -1317, -1317, -1317, -1317, -1317, -1317, 81, 81, 81, 1277, 916 970, 104, 7368, 277, -1317, -1317, -1317, -1317, -1317, 201, 917 -1317, -1317, -1317, 1047, 187, -1317, -1317, -1317, -1317, 5370, 918 -1317, -1317, -1317, -1317, 35, 48, -1317, 1328, -1317, -1317, 919 -1317, -1317, 235, 1663, 343, 98, 7484, -1317, -1317, 6174, 920 1066, -1317, -1317, 536, 376, 5540, 978, 1631, 536, 1775, 921 -1317, -1317, 477, 683, -1317, 536, 1892, -1317, 295, -1317, 922 422, 489, -1317, -1317, -1317, -1317, 346, 48, 81, -1317, 923 81, -1317, -1317, -1317, -1317, 9392, 1328, -1317, -1317, 1328, 924 -1317, 321, -1317, 9431, -1317, -1317, 2250, 9501, -1317, 668, 925 668, 668, -1317, -1317, -1317, 81, -1317, -1317, -1317, 373, 926 399, 410, -1317, -1317, -1317, 420, -1317, -1317, -1317, -1317, 927 -1317, 428, 450, -1317, -1317, 59, 8604, 2904, 144, 440, 928 493, 498, 531, 544, 560, 8522, 6772, 510, 580, -1317, 929 9114, -1317, -1317, -1317, -1317, 584, -1317, 153, 4280, 4280, 930 -1317, 570, 283, -1317, -1317, -1317, -1317, 596, 288, 303, 931 332, 81, 583, -1317, -1317, 1663, 2232, 648, -1317, 73, 932 -1317, 81, 81, 48, -1317, -1317, 80, -1317, 81, 81, 933 -1317, 3694, 599, 613, 668, 6565, -1317, -1317, 661, 5370, 934 -1317, -1317, 536, -1317, -1317, -1317, 48, -1317, 1328, 35, 935 -1317, 7675, -1317, 668, 668, 668, 48, -1317, 1277, -1317, 936 5446, -1317, -1317, 620, 668, -1317, 668, -1317, 201, 8604, 937 -1317, 673, -1317, 970, 692, 668, -1317, 1277, 697, 707, 938 -1317, 7368, 576, -1317, -1317, -1317, 4822, -1317, -1317, 9720, 939 -1317, 648, 165, 10347, 9501, 2250, 3694, -1317, 109, -1317, 940 -1317, 9431, 1328, 743, 7515, -1317, -1317, 306, -1317, 10675, 941 770, 800, 2676, 801, 10480, 10499, -1317, 813, -1317, -1317, 942 -1317, -1317, 10556, 10556, 8378, 795, -1317, -1317, -1317, -1317, 943 -1317, -1317, 842, -1317, 685, 1919, 8717, 10480, -1317, 652, 944 325, 507, 317, 581, 826, 820, 823, 861, 111, -1317, 945 -1317, 827, 703, -1317, 452, -1317, -1317, 2904, -1317, -1317, 946 278, 856, -1317, 636, 856, 866, 201, -1317, -1317, 872, 947 9392, -1317, 876, 887, 8830, -1317, -1317, 1020, 2049, 8093, 948 6565, 536, -1317, 536, 668, 668, -1317, -1317, -1317, -1317, 949 -1317, -1317, 668, 9392, 1328, -1317, -1317, 9540, 1233, -1317, 950 7824, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 891, 4627, 951 10480, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 952 -1317, -1317, -1317, -1317, -1317, 2250, -1317, 552, 901, 904, 953 912, 862, 920, 922, 924, 2232, -1317, -1317, 932, 35, 954 936, -1317, -1317, 939, -1317, -1317, -1317, 4822, -1317, -1317, 955 -1317, -1317, -1317, 3694, -1317, 8604, 8604, -1317, 668, 2250, 956 6684, 1328, 8166, -1317, -1317, -1317, -1317, 4822, 165, -1317, 957 -1317, 536, 48, -1317, -1317, 4822, -1317, 6449, -1317, -1317, 958 668, 668, 484, 8011, 938, 941, 931, 952, 668, -1317, 959 -1317, -1317, -1317, 9797, -1317, 578, 6327, -1317, 48, 955, 960 -1317, 2250, 10757, 10404, -1317, -1317, -1317, -1317, 881, 3694, 961 -1317, 8239, 648, 3545, -1317, -1317, -1317, 1641, 586, 827, 962 970, 7515, 592, 9431, -1317, 7515, -1317, -1317, -1317, -1317, 963 603, -1317, 967, 800, 215, 8378, -1317, 9570, -1317, -1317, 964 8378, -1317, 8491, 8378, -1317, -1317, 966, -1317, 617, 973, 965 839, 983, -1317, -1317, 9253, 6415, -1317, 247, -1317, -1317, 966 10347, -1317, 330, 10347, -1317, -1317, -1317, -1317, -1317, -1317, 967 -1317, -1317, -1317, -1317, -1317, 10347, -1317, -1317, 10480, 10480, 968 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 969 10480, 10480, 10480, 10480, 10480, 10480, 4526, 10347, -1317, 703, 970 751, -1317, -1317, 81, 81, -1317, -1317, 8604, -1317, -1317, 971 939, 576, -1317, 939, 10423, -1317, -1317, -1317, 8975, 6415, 972 968, 976, -1317, 9501, -1317, -1317, 584, -1317, 990, 769, 973 999, 3014, 124, 827, -1317, 81, 81, 827, 125, -1317, 974 81, 81, 939, -1317, -1317, 81, 81, -1317, 856, 9652, 975 1328, 10902, 151, 358, 9652, -1317, 9720, -1317, 827, -1317, 976 9392, -1317, 147, 7790, 7790, 7790, 1328, -1317, 5708, 982, 977 891, 1167, 995, 996, -1317, 1011, 4280, 230, -1317, 1103, 978 1328, 7790, 576, 2250, 576, 648, 671, 856, -1317, -1317, 979 694, 856, -1317, -1317, -1317, 800, -1317, 856, 48, 9797, 980 -1317, 621, 1024, 640, 1026, -1317, 1030, 48, -1317, -1317, 981 4822, 48, 1032, 9570, 1037, -1317, 1585, -1317, 335, 390, 982 970, -1317, 970, 1023, 10480, -1317, 970, 10902, -1317, -1317, 983 1034, -1317, -1317, -1317, 576, -1317, 10830, 887, -1317, 7790, 984 859, 8093, -1317, -1317, 584, 1025, 1036, 1641, 3247, -1317, 985 -1317, 7515, -1317, -1317, 1039, -1317, -1317, 1043, -1317, 1039, 986 1048, 10675, 10347, 67, 1027, 133, 1053, 1061, 1068, 1069, 987 -1317, 1072, 1074, 9362, 6534, -1317, 10347, -1317, 839, 2140, 988 -1317, -1317, -1317, 81, 81, 10290, 10347, 1070, -1317, -1317, 989 675, -1317, 10347, -1317, -1317, 644, -1317, -1317, -1317, -1317, 990 652, 652, 325, 325, 507, 507, 507, 507, 317, 317, 991 581, 826, 820, 823, 861, 10480, 333, -1317, 9797, 1079, 992 1080, 1081, 751, -1317, -1317, -1317, -1317, -1317, 9797, 700, 993 7790, -1317, 9392, -1317, 6891, 8943, -1317, 7824, 6772, -1317, 994 -1317, 769, 9797, 917, 1082, 1083, 1084, 1087, 1088, 1089, 995 1091, -1317, 4955, 3014, -1317, -1317, -1317, -1317, -1317, -1317, 996 -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 997 -1317, 939, -1317, -1317, -1317, 827, -1317, -1317, -1317, -1317, 998 -1317, -1317, -1317, -1317, 1098, -1317, 1099, 1101, -1317, -1317, 999 35, 1070, 5708, -1317, -1317, -1317, 4627, 1102, -1317, -1317, 1000 -1317, -1317, 970, 5944, 1191, -1317, -1317, -1317, -1317, 1094, 1001 35, -1317, -1317, 939, -1317, -1317, 939, 24, 939, -1317, 1002 -1317, -1317, -1317, -1317, -1317, 9223, -1317, 48, -1317, -1317, 1003 432, 441, 9540, 7010, 2348, 10480, 3377, -1317, -1317, 1092, 1004 94, 1092, -1317, 970, -1317, 81, -1317, -1317, 8748, 931, 1005 -1317, -1317, -1317, 941, 1116, 1111, -1317, -1317, 1118, 1119, 1006 -1317, 859, 2430, -1317, 455, -1317, 3247, 827, -1317, 1122, 1007 7515, 9682, 8604, 1125, -1317, -1317, 1130, 1135, 1124, -1317, 1008 10480, 166, 222, 1132, -1317, 1138, 576, 1138, -1317, -1317, 1009 1138, 1137, -1317, 1145, 1147, 1148, 2140, -1317, -1317, -1317, 1010 4627, -1317, -1317, -1317, -1317, 1143, 10347, 1149, 576, -1317, 1011 10347, -1317, 576, -1317, -1317, 10347, -1317, 721, 856, -1317, 1012 -1317, -1317, -1317, -1317, -1317, -1317, 891, 887, 8830, -1317, 1013 -1317, 7129, 1152, -1317, 731, 856, -1317, 745, 763, 856, 1014 -1317, 668, 5561, -1317, -1317, -1317, 9797, 9797, -1317, 8166, 1015 8166, -1317, 1154, 1156, 1153, 1155, -1317, 1168, 460, 196, 1016 1070, -1317, 576, -1317, 4280, -1317, 10347, 474, -1317, 6296, 1017 1159, 1170, 10233, 1172, 1175, -14, 3, 11, 10347, 1179, 1018 48, 10347, 10347, 1160, 1177, 282, 1161, -1317, -1317, -1317, 1019 1180, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1020 970, 1184, 10347, -1317, 9797, 9797, 81, 1188, -1317, 8861, 1021 -1317, -1317, 809, -1317, 3377, -1317, -1317, -1317, -1317, 1585, 1022 -1317, -1317, 1185, -1317, -1317, -1317, -1317, 1193, 2430, -1317, 1023 -1317, 1176, -1317, 1039, -1317, -1317, 2250, 1196, -1317, -1317, 1024 -1317, 709, 1198, -1317, 133, 1202, 10480, 1186, 133, 133, 1025 1211, 9253, 789, 856, -1317, -1317, 1011, 10347, 1214, 1143, 1026 505, 224, 1217, -1317, -1317, 1218, 1217, -1317, -1317, 1226, 1027 -1317, -1317, 939, 1228, 1230, 6653, 1231, 1232, 1243, -1317, 1028 -1317, 1246, -1317, -1317, 939, -1317, -1317, -1317, -1317, 939, 1029 10347, 10347, 887, 1245, -1317, -1317, -1317, -1317, -1317, -1317, 1030 -1317, -1317, -1317, -1317, -1317, -1317, 10480, 10480, 1247, 1251, 1031 1217, -1317, -1317, 970, -1317, -1317, -1317, 4468, 9682, 10347, 1032 10347, 1311, 10347, -1317, 1234, -1317, 1237, -1317, 1239, 10347, 1033 1241, 10347, 1049, 1244, 26, 81, 9084, 750, -1317, -1317, 1034 5944, 1267, 481, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1035 -1317, -1317, 10053, -1317, 8239, 1274, -1317, -1317, 9682, 482, 1036 512, -1317, 1272, 1259, 800, 1280, -1317, 245, -1317, -1317, 1037 -1317, -1317, 939, 1279, -1317, -1317, 1287, 385, 444, 576, 1038 1293, -1317, 1294, -1317, 9797, -1317, -1317, -1317, -1317, -1317, 1039 1295, -1317, 9797, 9797, 9797, -1317, -1317, 1297, -1317, 1298, 1040 1282, 1305, 511, 7863, 7978, -1317, -1317, 348, -1317, 1304, 1041 1310, -1317, 8312, 712, 734, 1308, 739, 6143, -1317, -1317, 1042 -1317, 515, -1317, 765, 1318, 1320, 48, 1371, 879, -1317, 1043 -1317, 10347, -1317, 10233, 10347, -1317, -1317, -1317, 1322, 1329, 1044 -1317, -1317, -1317, 1324, -1317, -1317, -1317, -1317, -1317, -1317, 1045 9682, 800, 265, -1317, 1309, 800, 9797, -1317, -1317, -1317, 1046 -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1047 -1317, 1330, 1331, -1317, -1317, -1317, -1317, -1317, -1317, -1317, 1048 1334, -1317, 1333, -1317, -1317, 10233, 143, 10347, 10233, -1317, 1049 1338, 10347, -1317, 259, 1354, 1356, -1317, -1317, 1346, 1347, 1050 1326, -1317, 880, -1317, -1317, -1317, 1328, 2250, 1345, 842, 1051 364, 10480, -1317, 774, -1317, 576, 576, 1352, 1355, 1357, 1052 1360, -1317, -1317, 8166, 1358, -1317, 1436, 10480, 1349, -1317, 1053 -1317, 10145, -1317, 783, -1317, 1350, 10233, 1359, -1317, -1317, 1054 1378, -1317, 1379, -1317, 1394, 1396, -1317, 1361, 9682, -1317, 1055 -1317, -1317, 800, 576, 1386, 1367, 1392, 1217, 1217, -1317, 1056 -1317, -1317, -1317, -1317, 10233, 275, -1317, 384, -1317, -1317, 1057 7600, -1317, -1317, 1375, 10347, -1317, 10347, 7600, 48, 9570, 1058 48, 9570, 1393, -1317, 1398, -1317, -1317, 1395, 842, -1317, 1059 798, -1317, -1317, -1317, 1399, 1401, -1317, 10480, 10480, -1317, 1060 -1317, 964, 167, -1317, -1317, 1388, -1317, 964, -1317, -1317, 1061 2461, 576, -1317, -1317, 48, 9570, 48, 9570, 1409, 1390, 1062 576, -1317, -1317, -1317, -1317, 10145, 1410, 964, 5861, 10347, 1063 10057, 1412, 964, 1414, 2461, 3613, -1317, -1317, -1317, 1420, 1064 -1317, -1317, -1317, -1317, 8604, -1317, -1317, -1317, 9924, -1317, 1065 10145, -1317, -1317, 1402, 9836, -1317, -1317, 10057, 48, 3613, 1066 48, 1421, 1429, 817, -1317, 9924, -1317, -1317, -1317, 9836, 1067 -1317, -1317, -1317, 48, 48, -1317, -1317, -1317, -1317, -1317, 1068 -1317, -1317, -1317 1069 }; 1070 1071 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. 1072 Performed when YYTABLE does not specify something else to do. Zero 1073 means the default is an error. */ 1074 static const yytype_uint16 yydefact[] = 1075 { 1076 291, 291, 311, 309, 312, 310, 313, 314, 297, 299, 1077 298, 0, 300, 325, 317, 322, 320, 321, 319, 318, 1078 323, 324, 329, 326, 327, 328, 544, 544, 544, 0, 1079 0, 0, 291, 217, 301, 315, 316, 7, 356, 0, 1080 8, 14, 15, 0, 2, 60, 61, 562, 9, 291, 1081 522, 520, 244, 3, 451, 3, 257, 0, 3, 3, 1082 3, 245, 3, 0, 0, 0, 292, 293, 295, 291, 1083 304, 307, 337, 283, 330, 335, 284, 345, 285, 352, 1084 349, 359, 0, 0, 360, 286, 470, 474, 3, 3, 1085 0, 2, 516, 521, 526, 296, 0, 0, 544, 574, 1086 544, 2, 585, 586, 587, 291, 0, 728, 729, 0, 1087 12, 0, 13, 291, 267, 268, 0, 292, 287, 288, 1088 289, 290, 523, 302, 389, 545, 546, 367, 368, 12, 1089 442, 443, 11, 438, 441, 0, 500, 495, 486, 442, 1090 443, 0, 0, 525, 218, 0, 291, 0, 0, 0, 1091 0, 0, 0, 0, 0, 291, 291, 2, 0, 730, 1092 292, 579, 591, 734, 727, 725, 732, 0, 0, 0, 1093 251, 2, 0, 529, 436, 437, 435, 0, 0, 0, 1094 0, 544, 0, 631, 632, 0, 0, 542, 538, 544, 1095 559, 544, 544, 540, 2, 539, 544, 598, 544, 544, 1096 601, 0, 0, 0, 291, 291, 309, 357, 2, 291, 1097 258, 294, 305, 338, 350, 475, 0, 2, 0, 451, 1098 259, 292, 331, 346, 353, 471, 0, 2, 0, 308, 1099 332, 339, 340, 0, 347, 351, 354, 358, 443, 291, 1100 369, 362, 366, 0, 391, 472, 476, 0, 0, 0, 1101 1, 291, 2, 527, 573, 575, 291, 2, 738, 292, 1102 741, 542, 542, 0, 292, 0, 0, 270, 544, 540, 1103 2, 291, 0, 0, 291, 547, 2, 498, 2, 551, 1104 0, 0, 0, 0, 0, 0, 18, 57, 4, 5, 1105 6, 16, 0, 0, 291, 2, 62, 63, 64, 65, 1106 45, 19, 46, 22, 44, 66, 291, 0, 69, 73, 1107 76, 79, 84, 87, 89, 91, 93, 95, 97, 102, 1108 492, 748, 449, 491, 0, 447, 448, 0, 563, 578, 1109 581, 584, 590, 593, 596, 356, 0, 2, 736, 0, 1110 291, 739, 2, 60, 291, 3, 423, 0, 431, 292, 1111 291, 304, 330, 284, 345, 352, 3, 3, 405, 409, 1112 419, 424, 470, 291, 425, 703, 704, 291, 426, 428, 1113 291, 2, 580, 592, 726, 2, 2, 246, 2, 456, 1114 0, 454, 453, 452, 138, 2, 2, 248, 2, 2, 1115 247, 2, 278, 2, 279, 0, 277, 0, 0, 0, 1116 0, 0, 0, 0, 0, 0, 564, 603, 0, 451, 1117 2, 558, 567, 657, 560, 561, 530, 291, 2, 597, 1118 606, 599, 600, 0, 273, 291, 291, 336, 292, 0, 1119 292, 0, 291, 731, 735, 733, 531, 291, 542, 252, 1120 260, 306, 0, 2, 532, 291, 496, 333, 334, 280, 1121 348, 355, 0, 291, 0, 746, 396, 0, 473, 497, 1122 249, 250, 517, 291, 433, 0, 291, 234, 0, 2, 1123 236, 0, 292, 0, 254, 2, 255, 275, 0, 0, 1124 2, 291, 542, 291, 483, 485, 484, 0, 0, 748, 1125 0, 291, 0, 291, 487, 291, 557, 555, 556, 554, 1126 0, 549, 552, 0, 0, 291, 52, 291, 66, 47, 1127 291, 54, 291, 291, 50, 51, 2, 124, 0, 0, 1128 445, 0, 444, 725, 118, 291, 17, 0, 29, 30, 1129 35, 2, 0, 35, 108, 109, 110, 111, 112, 113, 1130 114, 115, 116, 117, 107, 0, 48, 49, 0, 0, 1131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1132 0, 0, 0, 0, 0, 0, 0, 0, 104, 2, 1133 643, 450, 640, 544, 544, 648, 477, 291, 2, 582, 1134 583, 0, 594, 595, 0, 2, 737, 740, 118, 291, 1135 0, 2, 705, 292, 709, 700, 701, 707, 0, 2, 1136 2, 665, 544, 748, 614, 544, 544, 748, 544, 628, 1137 544, 544, 679, 432, 662, 544, 544, 670, 677, 291, 1138 427, 292, 0, 0, 291, 715, 292, 720, 748, 712, 1139 291, 717, 748, 291, 291, 291, 0, 118, 0, 18, 1140 2, 0, 19, 0, 457, 746, 0, 0, 463, 238, 1141 0, 291, 0, 0, 0, 542, 566, 570, 572, 602, 1142 605, 609, 612, 565, 604, 0, 281, 655, 0, 291, 1143 274, 0, 0, 0, 0, 272, 2, 0, 256, 533, 1144 291, 0, 0, 291, 2, 361, 381, 370, 0, 0, 1145 375, 369, 747, 0, 0, 394, 0, 292, 3, 412, 1146 3, 416, 415, 588, 0, 528, 291, 60, 3, 291, 1147 431, 292, 3, 425, 426, 2, 0, 0, 0, 482, 1148 303, 291, 478, 480, 3, 2, 2, 0, 499, 3, 1149 0, 551, 126, 0, 0, 219, 0, 0, 0, 0, 1150 36, 0, 0, 118, 291, 20, 0, 21, 0, 689, 1151 694, 446, 686, 544, 544, 0, 105, 3, 2, 27, 1152 0, 33, 0, 2, 25, 0, 103, 70, 71, 72, 1153 74, 75, 77, 78, 82, 83, 80, 81, 85, 86, 1154 88, 90, 92, 94, 96, 0, 0, 749, 291, 0, 1155 0, 0, 644, 645, 641, 642, 494, 493, 291, 0, 1156 291, 711, 291, 716, 292, 291, 659, 291, 291, 702, 1157 658, 2, 291, 0, 0, 0, 0, 0, 0, 0, 1158 0, 680, 0, 666, 617, 633, 667, 2, 613, 620, 1159 429, 615, 616, 430, 2, 627, 636, 629, 630, 663, 1160 664, 678, 706, 710, 708, 748, 265, 2, 742, 2, 1161 420, 714, 719, 421, 0, 399, 3, 3, 3, 3, 1162 451, 3, 0, 2, 465, 462, 747, 0, 458, 2, 1163 461, 464, 0, 291, 239, 261, 3, 269, 271, 0, 1164 451, 2, 568, 569, 2, 607, 608, 0, 656, 534, 1165 3, 342, 341, 344, 343, 291, 535, 0, 536, 369, 1166 0, 0, 291, 291, 0, 0, 689, 379, 382, 386, 1167 544, 386, 385, 378, 371, 544, 373, 376, 291, 396, 1168 390, 101, 397, 746, 0, 0, 434, 237, 0, 0, 1169 3, 2, 665, 427, 0, 524, 0, 748, 486, 0, 1170 291, 291, 291, 0, 548, 550, 127, 0, 0, 212, 1171 0, 0, 0, 220, 221, 53, 0, 55, 58, 59, 1172 0, 2, 125, 0, 0, 0, 690, 691, 687, 688, 1173 456, 67, 68, 106, 122, 3, 105, 0, 0, 24, 1174 35, 3, 0, 32, 99, 0, 3, 647, 651, 654, 1175 646, 3, 589, 3, 713, 718, 2, 60, 291, 3, 1176 3, 292, 0, 3, 619, 623, 626, 635, 669, 673, 1177 676, 291, 3, 618, 634, 668, 291, 291, 422, 291, 1178 291, 743, 0, 0, 0, 0, 253, 0, 101, 0, 1179 3, 3, 0, 459, 0, 455, 0, 0, 242, 291, 1180 0, 0, 126, 0, 0, 0, 0, 0, 126, 0, 1181 0, 105, 105, 18, 2, 0, 0, 3, 128, 129, 1182 2, 140, 130, 131, 132, 133, 134, 135, 142, 144, 1183 0, 0, 0, 282, 291, 291, 544, 0, 537, 291, 1184 372, 374, 0, 388, 690, 383, 387, 384, 377, 381, 1185 364, 395, 0, 576, 2, 661, 660, 0, 666, 2, 1186 479, 481, 501, 3, 509, 510, 0, 2, 505, 3, 1187 3, 0, 0, 553, 219, 0, 0, 0, 219, 0, 1188 0, 118, 693, 697, 699, 692, 746, 105, 0, 3, 1189 658, 39, 3, 37, 34, 0, 3, 98, 100, 0, 1190 2, 649, 650, 0, 0, 291, 0, 0, 0, 3, 1191 635, 0, 2, 621, 622, 2, 637, 2, 671, 672, 1192 0, 0, 60, 0, 3, 3, 3, 3, 407, 406, 1193 410, 2, 2, 745, 744, 119, 0, 0, 0, 0, 1194 3, 460, 3, 0, 240, 143, 3, 292, 291, 0, 1195 0, 0, 0, 2, 0, 188, 0, 186, 0, 0, 1196 0, 0, 0, 0, 0, 544, 118, 0, 148, 145, 1197 291, 0, 0, 264, 276, 3, 3, 543, 610, 365, 1198 380, 393, 291, 263, 291, 0, 512, 489, 291, 0, 1199 0, 488, 503, 0, 0, 0, 213, 0, 222, 56, 1200 2, 695, 696, 0, 123, 120, 0, 0, 0, 0, 1201 0, 23, 0, 652, 291, 577, 262, 721, 722, 723, 1202 0, 674, 291, 291, 291, 3, 3, 0, 682, 0, 1203 0, 0, 0, 291, 291, 3, 541, 119, 467, 0, 1204 0, 243, 292, 0, 0, 0, 0, 291, 189, 187, 1205 184, 0, 190, 0, 0, 0, 0, 194, 197, 195, 1206 191, 0, 192, 126, 35, 141, 139, 241, 0, 0, 1207 414, 418, 417, 0, 506, 2, 507, 2, 508, 502, 1208 291, 225, 0, 223, 0, 225, 291, 31, 121, 2, 1209 42, 2, 40, 38, 28, 26, 3, 724, 3, 3, 1210 3, 0, 0, 681, 683, 624, 638, 266, 2, 404, 1211 3, 403, 0, 469, 466, 126, 0, 0, 126, 3, 1212 0, 126, 185, 0, 2, 2, 206, 196, 0, 0, 1213 0, 137, 0, 571, 611, 2, 0, 0, 2, 226, 1214 0, 0, 214, 0, 3, 0, 0, 0, 0, 0, 1215 0, 684, 685, 291, 0, 468, 149, 0, 0, 2, 1216 162, 126, 151, 0, 179, 0, 126, 0, 2, 153, 1217 0, 2, 0, 2, 2, 2, 193, 32, 291, 511, 1218 513, 504, 0, 0, 0, 0, 0, 3, 3, 653, 1219 625, 639, 675, 408, 126, 155, 158, 0, 157, 161, 1220 3, 164, 163, 0, 126, 181, 126, 3, 0, 291, 1221 0, 291, 0, 2, 0, 2, 136, 2, 227, 228, 1222 0, 224, 215, 698, 0, 0, 150, 0, 0, 160, 1223 230, 165, 2, 232, 180, 0, 183, 169, 198, 3, 1224 207, 211, 200, 3, 0, 291, 0, 291, 0, 0, 1225 0, 43, 41, 156, 159, 126, 0, 166, 291, 126, 1226 126, 0, 170, 0, 0, 689, 208, 209, 210, 0, 1227 199, 3, 201, 3, 291, 216, 229, 146, 167, 152, 1228 126, 233, 182, 177, 175, 171, 154, 126, 0, 690, 1229 0, 0, 0, 0, 147, 168, 178, 172, 176, 175, 1230 173, 3, 3, 0, 0, 490, 174, 202, 204, 3, 1231 3, 203, 205 1232 }; 1233 1234 /* YYPGOTO[NTERM-NUM]. */ 1235 static const yytype_int16 yypgoto[] = 1236 { 1237 -1317, 4344, 3244, -1317, 633, -1317, 172, 896, -203, -1317, 1238 487, -518, -482, -910, -211, 1511, 0, -1317, 1129, 534, 1239 537, 615, 556, 984, 981, 988, 980, 989, -1317, 4, 1240 -451, 4784, -913, -1317, -702, 571, 13, -706, 419, -1317, 1241 190, -1317, 345, -964, -1317, -1317, 85, -1317, -1099, -1138, 1242 197, -1317, -1317, -1317, -1317, 20, -1281, -1317, -1317, -1317, 1243 -1317, -1317, -1317, 266, -1095, 50, -1317, -472, -1317, 443, 1244 239, -1317, 118, -1317, -294, -1317, -1317, -1317, 496, -829, 1245 -1317, -1317, 8, -952, 28, 2894, -1317, -1317, -1317, -214, 1246 -1317, 121, 1028, -198, 1848, 3592, -1317, -1317, 127, 296, 1247 1545, 1505, -1317, 1929, -1317, -1317, 137, 2139, -1317, 2574, 1248 804, -1317, -1317, -1317, -637, -1317, 886, 889, 490, 670, 1249 52, -1317, -1317, -1317, 893, 666, -510, -1317, -116, 40, 1250 1073, -1317, -1317, -889, -983, 933, 1377, 1006, -11, -1317, 1251 1351, 508, -322, -183, -145, 623, 724, -1317, 944, -1317, 1252 2701, 574, -443, 875, -1317, -1317, 659, -1317, -228, -1317, 1253 -45, -1317, -1317, -1317, -1253, 370, -1317, -1317, -1317, 1120, 1254 -1317, 33, -1317, -1317, -828, -100, -1316, -170, 2264, -1317, 1255 1914, -1317, 868, -1317, -155, 129, -181, -180, -175, 7, 1256 -41, -40, -35, 1507, 37, 53, 57, -29, -172, -163, 1257 -158, -150, -293, -500, -490, -485, -542, -284, -525, -1317, 1258 -1317, -499, 1035, 1038, 1040, 1486, 4616, -563, -531, -513, 1259 -491, -561, -1317, -506, -730, -727, -723, -562, -311, -227, 1260 -1317, -1317, 378, 19, -93, -1317, 3633, 159, -611, -428 1261 }; 1262 1263 /* YYDEFGOTO[NTERM-NUM]. */ 1264 static const yytype_int16 yydefgoto[] = 1265 { 1266 -1, 812, 467, 300, 47, 133, 134, 301, 302, 303, 1267 304, 760, 761, 1132, 1133, 305, 380, 307, 308, 309, 1268 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 1269 1029, 517, 974, 545, 321, 975, 946, 1056, 1517, 1058, 1270 1059, 1060, 1061, 1518, 1062, 1063, 1436, 1437, 1400, 1401, 1271 1402, 1496, 1497, 1501, 1502, 1537, 1538, 1064, 1360, 1065, 1272 1066, 1297, 1298, 1299, 1479, 1067, 145, 952, 953, 954, 1273 1380, 1460, 1471, 1472, 468, 469, 873, 874, 1037, 51, 1274 52, 53, 54, 55, 346, 158, 58, 59, 60, 61, 1275 62, 348, 64, 65, 264, 67, 68, 274, 350, 351, 1276 71, 72, 73, 118, 75, 204, 353, 119, 78, 120, 1277 80, 81, 454, 82, 453, 687, 688, 689, 907, 1085, 1278 908, 83, 84, 457, 455, 695, 854, 855, 856, 857, 1279 698, 699, 700, 358, 359, 360, 361, 465, 339, 135, 1280 136, 521, 323, 170, 644, 645, 646, 647, 648, 85, 1281 121, 87, 488, 489, 938, 490, 277, 494, 324, 88, 1282 137, 138, 89, 1320, 1107, 1108, 1109, 1110, 90, 91, 1283 716, 92, 273, 93, 94, 187, 1031, 678, 411, 125, 1284 95, 500, 501, 502, 188, 268, 190, 191, 192, 269, 1285 98, 99, 100, 101, 102, 103, 104, 195, 196, 197, 1286 198, 199, 824, 604, 605, 606, 607, 200, 609, 610, 1287 611, 571, 572, 573, 574, 750, 105, 613, 614, 615, 1288 616, 617, 618, 967, 752, 753, 754, 594, 364, 365, 1289 366, 367, 325, 164, 107, 108, 109, 369, 693, 568 1290 }; 1291 1292 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If 1293 positive, shift that token. If negative, reduce the rule whose 1294 number is the opposite. If YYTABLE_NINF, syntax error. */ 1295 static const yytype_int16 yytable[] = 1296 { 1297 49, 113, 149, 150, 398, 399, 427, 97, 151, 114, 1298 400, 452, 260, 401, 751, 765, 267, 409, 963, 106, 1299 106, 964, 402, 382, 383, 965, 947, 403, 56, 115, 1300 739, 406, 49, 595, 867, 404, 439, 1170, 826, 97, 1301 356, 829, 470, 147, 1068, 1069, 177, 836, 724, 49, 1302 50, 106, 729, 972, 918, 603, 161, 843, 1194, 825, 1303 56, 722, 341, 186, 608, 143, 209, 1378, 818, 49, 1304 193, 793, 1136, 216, 817, 1196, 226, 219, 504, 122, 1305 152, 1438, 50, 1198, 398, 399, 819, 1186, 106, 1301, 1306 400, 474, 476, 401, 210, 261, 153, 220, 262, 814, 1307 154, 424, 402, 672, 674, 113, 526, 403, 820, 815, 1308 280, 406, 31, 113, 816, 404, 266, 271, 1195, 31, 1309 31, 63, 1180, 668, 858, 859, 202, 69, 1199, 96, 1310 1168, 1169, 123, 31, 1076, 1197, 627, 76, 1203, 1204, 1311 631, 876, 168, 677, 149, 150, 306, 147, 31, 526, 1312 151, 681, 1438, 63, 161, 113, 344, 407, 1302, 69, 1313 209, 96, 171, 31, 31, 1457, 169, 372, 281, 76, 1314 713, 728, 148, 111, 963, 830, 203, 964, 96, 833, 1315 912, 965, 252, 446, 410, 186, 186, 1397, 1398, 418, 1316 741, 410, 189, 161, 719, 96, 357, 948, 96, 930, 1317 850, 266, 459, 470, 853, 410, 565, 438, 166, 49, 1318 1185, -231, -231, 142, 1244, 291, 161, 814, 480, 1525, 1319 410, 209, 152, 470, 149, 150, 666, 815, 442, 408, 1320 151, 470, 816, 827, 834, 600, 600, 407, 153, 306, 1321 566, 1170, 154, 922, 950, 173, 1540, 587, 526, 440, 1322 663, 49, 829, 252, 328, 797, 475, 1399, 97, 271, 1323 1015, 482, 1079, 846, 271, 266, 266, 847, 499, 376, 1324 106, 113, 166, 161, 475, 1116, 96, 341, 567, 56, 1325 818, 1014, -231, 1138, 462, 377, 1002, 253, 144, 96, 1326 993, 1170, 1176, 990, 306, 655, 70, 526, 819, 155, 1327 733, 50, 1442, 1397, 1398, 326, 306, 518, 595, 1247, 1328 146, 814, 1092, 595, 397, 189, 356, 608, 1177, 110, 1329 820, 815, 570, 670, 663, 734, 816, 147, 70, 675, 1330 41, 42, 1117, 1495, 372, 1186, 177, 1248, 96, 1500, 1331 113, 869, 1200, 641, 344, 735, 201, 526, 601, 619, 1332 96, 181, 1118, 628, 286, 1324, 1483, 632, 758, 1520, 1333 870, 803, 212, 624, 1527, 41, 42, 624, 435, 826, 1334 113, 1467, 63, 1408, 1381, 1325, 664, 471, 69, -287, 1335 96, 1068, 1069, 416, 1168, 1169, 897, 578, 76, 410, 1336 1511, 513, 1513, 76, 478, 266, 1442, 1177, 326, 386, 1337 818, 1442, 110, 852, 389, 186, 436, 555, 556, 356, 1338 1170, 247, 372, 41, 42, 387, 444, 1018, 819, 391, 1339 390, 1442, 250, 266, 464, 306, 306, 163, 1442, 266, 1340 435, 341, 624, 713, 492, 392, 843, 493, 671, 673, 1341 820, 763, 557, 558, 551, 552, 1156, 1158, 393, 746, 1342 664, 913, 263, 113, 1083, 252, 96, 110, 1361, -466, 1343 1125, -466, 887, 985, 394, 166, 470, 914, 41, 42, 1344 848, 266, 357, 356, 849, 1427, 1428, 602, -466, 266, 1345 1422, 624, -10, 49, 519, 880, 372, 718, 1186, -515, 1346 97, 163, 927, 113, 1423, 1186, 1329, 1103, 1134, 1115, 1347 1468, 868, 106, 597, 1433, 306, 915, 113, -439, 1100, 1348 306, 56, 306, 306, 1469, 1243, 110, 441, 518, -440, 1349 749, 712, 916, 518, 113, 344, 518, 41, 42, 276, 1350 1013, 909, 951, 50, 189, 1015, 1524, 278, 471, 608, 1351 2, 206, 4, 5, 6, 7, 1186, 70, 913, 110, 1352 329, 139, 238, 878, 76, 1331, 1535, 915, 471, 279, 1353 41, 42, 576, 1539, 1080, 357, 471, 848, 577, 570, 1354 570, 1099, -102, 1081, 76, 995, -102, 306, 1125, 786, 1355 803, 1359, 76, 912, 326, 326, 239, 434, 624, 344, 1356 1183, 240, 713, 619, 682, 553, 554, 1183, 1315, 601, 1357 577, 601, 710, 330, 63, 35, 1184, 36, 331, 845, 1358 69, 1473, 96, 1307, 1316, -119, 602, -119, 1473, 624, 1359 76, -119, 370, 1347, 624, 860, 619, 1348, 1317, 357, 1360 624, 746, 679, 624, 624, 624, -119, -119, 111, 875, 1361 215, 332, 1233, 1013, 1318, 212, 1237, 1362, 110, 434, 1362 341, 624, 326, 266, 333, 1407, 242, 911, 705, 41, 1363 42, 252, 328, 410, 110, 1235, 139, 140, 803, 1521, 1364 334, 326, 522, 559, 560, 41, 42, 1026, 8, 9, 1365 10, 11, 12, 113, 163, 384, 906, 595, 703, 371, 1366 176, 215, 356, 375, 704, 519, 720, 1073, 921, 759, 1367 519, 725, 721, 519, 764, 388, 726, 31, 425, 624, 1368 932, 619, 408, 730, 1111, 396, 805, 718, 718, 731, 1369 499, 1033, 426, 398, 399, 1275, 1276, 745, 813, 400, 1370 602, 891, 401, 746, 215, 34, 326, 746, 1475, 176, 1371 1476, 402, 176, 113, 344, 581, 403, 410, 749, 749, 1372 893, 406, 449, 464, 404, 110, 746, 139, 140, 983, 1373 980, 8, 9, 10, 11, 12, 41, 42, 212, 548, 1374 527, 528, 529, 431, 963, 549, 550, 964, 844, 70, 1375 881, 965, 410, 597, 712, 979, 1372, -363, 176, 984, 1376 31, 980, 570, 1522, 530, 215, 531, 243, 532, 533, 1377 624, 471, 624, 884, 998, 410, -392, 624, 344, 341, 1378 992, 601, 569, 1160, 410, 910, 704, 76, 34, 1231, 1379 45, 46, 1355, 601, 877, 577, 879, 471, 746, 460, 1380 1140, 690, 410, 215, 713, 527, 528, 529, 215, 461, 1381 1152, 37, 410, 76, 1356, 40, 813, 602, 357, 1358, 1382 746, 176, 41, 42, 1155, 746, 600, 483, 889, 530, 1383 569, 531, 410, 532, 1304, 710, 1028, 896, 45, 46, 1384 214, 898, 1157, 306, 600, 1363, 926, 407, 811, 503, 1385 600, 746, 291, 522, 1425, 522, 45, 46, 522, 1181, 1386 1422, 522, 106, 1443, 803, 624, 48, 112, 1240, 746, 1387 410, 56, 113, 344, 906, 176, 906, 524, 1489, 921, 1388 507, 951, 176, 713, 1490, 951, 951, 441, 113, 328, 1389 410, 214, 512, 215, 526, 112, 112, 1545, 48, 663, 1390 1424, 932, 932, 577, 909, 805, 718, 1368, 1369, 48, 1391 813, 113, 306, 712, 561, 48, 1435, 562, 748, 1104, 1392 410, 563, 602, 48, 921, 564, 45, 46, 567, 48, 1393 106, 1086, 48, 1086, 214, 48, 749, 337, 931, 1105, 1394 600, 418, 659, 410, 1507, -436, 45, 46, 112, 112, 1395 176, 585, 2, 206, 4, 5, 6, 7, 588, 1137, 1396 480, 328, 410, 212, 63, 1417, 980, 176, 344, -3, 1397 69, 176, 48, 637, 215, 48, 1226, 212, 1397, 1398, 1398 76, 656, 48, 736, 657, 737, 1493, 1435, 738, 624, 1399 624, 742, 658, 1125, 710, 214, 827, 328, 600, 116, 1400 660, 1322, 661, 1082, 662, 910, 1330, 1332, 1333, 306, 1401 1028, 665, 110, 48, 139, 140, 215, 35, 667, 36, 1402 257, 48, 691, 41, 42, 664, 48, 692, 106, 1167, 1403 911, 690, 694, 214, 176, 602, 696, 56, 214, -235, 1404 2, 206, 4, 5, 6, 7, 732, 159, 743, 113, 1405 806, 48, 48, 747, 906, 770, 771, 1078, 807, 906, 1406 772, 773, 37, 755, 174, 175, 40, 48, 932, 228, 1407 212, 326, 810, 41, 42, 48, 266, 1294, 1295, 1296, 1408 -3, 821, -12, 341, 48, 778, 779, 48, 1379, 37, 1409 921, 624, 1379, 40, 112, -13, 865, 866, 1120, 371, 1410 41, 42, 872, 258, 892, 35, 894, 36, 920, 112, 1411 -519, 159, 895, 112, -413, 344, 899, 48, 112, 902, 1412 1131, 935, 942, 214, 1131, 721, 43, 844, 944, 949, 1413 471, 48, 48, 955, 45, 46, 1188, 215, 48, 70, 1414 774, 775, 776, 777, 322, 48, 76, 956, 957, 958, 1415 921, 921, 959, 338, 960, 712, 976, 271, 113, 987, 1416 988, 989, 1004, 1005, 1006, 215, 219, 1007, 1008, 1009, 1417 215, 1010, 1283, 1284, 1131, 1286, 113, 106, 1021, -401, 1418 306, -400, 1291, 910, 1293, 210, 220, 1035, 910, 1458, 1419 1070, 176, 905, 48, 624, 1072, 1093, 1094, 113, 106, 1420 1095, 1096, 1102, 429, 214, 1112, 1104, 433, 56, 110, 1421 1202, 139, 140, 48, 48, 1113, 746, 106, 1119, 1121, 1422 41, 42, 970, 176, 1114, 1122, 1105, 1123, 1124, 1127, 1423 48, 1130, 1150, 1173, 48, 1174, 710, 322, 1189, 176, 1424 1171, 215, 1172, 624, 624, 642, 214, 1420, 863, 1190, 1425 1175, 1192, 271, 176, 1193, 215, 1533, 306, 1201, 1206, 1426 1205, 48, 1057, 1208, 1213, -3, 690, 441, 1218, 433, 1427 1221, 48, 487, 1223, 492, 37, 106, 174, 175, 40, 1428 440, 1227, 1232, 1350, 1234, 56, 41, 42, 1236, 48, 1429 113, 1239, 520, 398, 399, 48, 1245, 48, 1104, 400, 1430 1251, 63, 401, 1249, 159, 70, 1253, 69, 1255, 106, 1431 1256, 402, 375, 1257, 1258, 710, 403, 76, 1105, 129, 1432 406, 130, 131, 132, 404, 1259, 1261, 1268, 1285, 1277, 1433 41, 42, 112, 1278, 176, 1419, 1288, 48, 586, 1289, 1434 1403, 1290, 592, 1292, 663, 48, 1300, 266, 215, 48, 1435 1506, 141, 1306, 48, 1313, 921, 112, 1319, 112, 1321, 1436 1323, 625, 1345, 624, 1327, 629, 701, 214, 338, 1328, 1437 37, 921, 174, 175, 40, 1334, 1335, 1337, 471, 1343, 1438 1344, 41, 42, 509, 1188, 1346, 1353, 1357, 113, 1131, 1439 1131, 1131, 1354, 112, 76, 214, 1104, 1364, 112, 1365, 1440 214, 1296, 1373, 241, 244, 546, 547, 106, 1375, 1374, 1441 113, 1382, 1391, 1392, -402, 1395, 1105, 113, 1406, 113, 1442 1410, 113, 1412, 322, 322, 1414, 1415, 690, 1416, 106, 1443 1421, 1191, 1429, 149, 150, 1430, 106, 1431, 56, 151, 1444 1432, 921, 921, 546, 1348, 56, 407, 112, 1434, 1439, 1445 1505, 686, 1444, 212, 48, 113, 1366, 113, 1448, 1450, 1446 1452, 1446, 1454, 1456, 116, 48, 1461, 48, 113, 1462, 1447 664, 214, 1463, 1484, 1505, 1505, 70, 1474, 1486, 546, 1448 1488, 1491, 161, 1492, 306, 214, 48, 106, 1514, 487, 1449 1499, 322, 1515, 487, 1528, 1519, 56, 1526, 176, 1505, 1450 1530, 1543, 48, 520, 1536, 520, 372, 112, 520, 1544, 1451 322, 520, 1207, 781, 783, 780, 48, 1129, 112, 48, 1452 112, 782, 338, 1494, 784, 1305, 162, 1131, 1131, 1546, 1453 1409, 471, 1238, 1367, 1383, 1477, 1212, 1188, 471, 900, 1454 194, 213, 901, 217, 1188, 215, 227, 76, 441, 1220, 1455 232, 1087, 48, 70, 76, 1091, 112, 799, 112, 923, 1456 1034, 871, 112, 1126, 456, 1459, 937, 1101, 1314, 945, 1457 112, 0, 701, 715, 789, 322, 0, 790, 214, 791, 1458 0, 0, 0, 48, 48, 229, 801, 0, 230, 471, 1459 0, 234, 213, 236, 0, 1188, 0, 48, 0, 1057, 1460 245, 0, 0, 478, -288, 76, 0, 0, 1478, 0, 1461 1482, 8, 9, 10, 11, 12, 0, 842, 0, 0, 1462 0, 0, 592, 1508, 162, 0, 0, 37, 851, 183, 1463 184, 40, 1516, 0, 0, 213, 0, 373, 41, 42, 1464 31, 0, 0, 326, 1510, 412, 1512, 767, 768, 769, 1465 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, 1466 0, 0, 0, 162, 904, 0, 410, 0, 34, 0, 1467 0, 0, 45, 46, 0, 0, 0, 48, 0, 0, 1468 0, 686, 0, 37, 0, 905, 162, 40, 1541, 48, 1469 1542, 701, 1371, 0, 41, 42, 213, 0, 443, 0, 1470 643, 701, 0, 1549, 1550, 37, 70, 183, 184, 40, 1471 0, 0, 890, 70, 0, 701, 41, 42, 0, 487, 1472 717, 0, 0, 0, 412, 0, 0, 229, 45, 46, 1473 0, 215, 642, 0, 213, 0, 0, 0, 112, 213, 1474 0, 338, 185, 0, 1396, 0, 0, 1404, -289, 0, 1475 45, 46, 0, 0, 498, 8, 9, 10, 11, 12, 1476 0, 48, 0, 506, 70, 508, 511, 0, 0, 0, 1477 48, 0, 48, 514, 515, 214, 0, 0, 575, 112, 1478 0, 0, 0, 0, 31, 0, 579, 508, 508, 582, 1479 1441, 0, 0, 0, 497, 1445, 0, 1481, 0, 1481, 1480 994, 0, 48, 0, 373, 801, 0, 0, 0, 176, 1481 702, 723, 34, 727, 0, 0, 0, 0, 66, 117, 1482 0, 0, 112, 1466, 213, 508, 215, 0, 0, 0, 1483 0, 986, 0, 1481, 0, 1481, 642, 0, 0, 0, 1484 0, 991, 0, 0, 112, 0, 0, 0, 112, 0, 1485 66, 0, 0, 412, 971, 1003, 0, 420, 0, 0, 1486 0, 508, 0, 0, 0, -290, 229, 160, 234, 0, 1487 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 1488 0, 0, 373, 0, 0, 0, 0, 221, 0, 0, 1489 0, 0, 0, 801, 0, 0, 0, 0, 112, 74, 1490 338, 31, 0, 0, 0, 213, 0, 1534, 0, 0, 1491 126, 126, 126, 1534, 0, 0, 686, 0, 0, 701, 1492 701, 0, 213, 259, 1534, 0, 0, 0, 1534, 34, 1493 0, 74, 0, 0, 412, 0, 112, 0, 487, 1106, 1494 322, 0, 0, 0, 0, 0, 0, 213, 0, 0, 1495 48, 0, 0, 0, 0, 48, 229, 0, 0, 0, 1496 0, 214, 864, 0, 0, 327, 0, 0, 222, 0, 1497 0, 0, 48, 259, 349, 0, 0, 701, 701, 176, 1498 0, 0, 126, 0, 126, 0, 534, 535, 536, 537, 1499 538, 539, 540, 541, 542, 543, 842, 0, 0, 0, 1500 0, 0, 0, 0, 405, 0, 0, 0, 0, 275, 1501 0, 917, 0, 919, 0, 0, 702, 456, 0, 423, 1502 544, 0, 428, 430, 0, 575, 575, 160, 0, 508, 1503 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 1504 508, 508, 508, 508, 508, 508, 508, 0, 447, 112, 1505 0, 0, 450, 0, 451, 352, 214, 0, 0, 1165, 1506 1166, 0, 0, 458, 0, 126, 0, 0, 213, 66, 1507 0, 0, 48, 126, 472, 126, 126, 686, 0, 0, 1508 126, 0, 126, 126, 479, 0, 0, 0, 0, 0, 1509 0, 37, 430, 183, 184, 40, 213, 546, 0, 0, 1510 0, 213, 41, 42, 0, 0, 0, 0, 0, 77, 1511 0, 0, 882, 112, 112, 112, 885, 1215, 1216, 801, 1512 8, 9, 10, 11, 12, 1311, 0, 0, 599, 448, 1513 600, 0, 0, 0, 0, 702, 45, 46, 509, 0, 1514 0, 77, 0, 0, 0, 702, 0, 0, 0, 31, 1515 74, 0, 126, 0, 0, 74, 0, 701, 259, 702, 1516 0, 0, 593, 0, 0, 701, 701, 701, 621, 0, 1517 0, 0, 213, 0, 0, 508, 0, 34, 223, 0, 1518 0, 626, 0, 0, 0, 626, 213, 643, 259, 0, 1519 0, 0, 0, 1038, 0, 0, 0, 0, 0, 0, 1520 0, 0, 0, 0, 338, 0, 498, 0, 0, 0, 1521 0, 0, 8, 9, 10, 11, 12, 0, 0, 748, 1522 0, 410, 0, 0, 0, 0, 1106, 45, 46, 701, 1523 0, 0, 0, 0, 1088, 472, 508, 0, 0, 0, 1524 0, 31, 48, 48, 0, 0, 497, 0, 575, 222, 1525 349, 112, 112, 0, 0, 472, 0, 0, 0, 0, 1526 124, 127, 128, 472, 0, 354, 508, 0, 0, 34, 1527 0, 0, 0, 0, 37, 0, 183, 184, 40, 213, 1528 0, 697, 0, 0, 430, 41, 42, 0, 0, 112, 1529 0, 643, 37, 0, 183, 184, 40, 1336, 0, 711, 1530 0, 66, 0, 41, 42, 1338, 1339, 1340, 0, 430, 1531 0, 185, 0, 430, 0, 0, 74, 0, 1106, 45, 1532 46, 0, 0, 0, 0, 0, 0, 0, 0, 265, 1533 0, 352, 254, 0, 255, 0, 74, 45, 46, 0, 1534 0, 0, 259, 349, 74, 0, 48, 112, 0, 0, 1535 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 1536 77, 0, 352, 702, 702, 77, 412, 0, 0, 1384, 1537 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 1538 352, 0, 74, 0, 0, 0, 508, 0, 792, 0, 1539 37, 1038, 183, 184, 40, 48, 0, 0, 0, 0, 1540 0, 41, 42, 0, 0, 0, 626, 804, 0, 0, 1541 8, 9, 10, 11, 12, 395, 1106, 0, 0, 823, 1542 0, 702, 702, 0, 352, 414, 415, 904, 0, 410, 1543 419, 508, 421, 422, 0, 45, 46, 593, 0, 31, 1544 0, 0, 593, 1141, 0, 0, 0, 1480, 626, 1480, 1545 0, 349, 349, 349, 0, 0, 0, 126, 126, 223, 1546 1153, 0, 0, 0, 0, 0, 508, 34, 0, 349, 1547 0, 0, 0, 0, 0, 0, 213, 0, 0, 508, 1548 0, 0, 0, 1480, 0, 1480, 126, 697, 352, 126, 1549 126, 0, 126, 0, 126, 126, 0, 0, 472, 126, 1550 126, 0, 0, 37, 1281, 183, 184, 40, 0, 931, 1551 0, 600, 322, 0, 41, 42, 0, 45, 46, 0, 1552 508, 0, 0, 0, 472, 0, 77, 349, 0, 0, 1553 0, 0, 352, 352, 352, 0, 936, 0, 412, 430, 1554 1504, 354, 410, 0, 79, 0, 77, 0, 45, 46, 1555 352, 0, 0, 0, 77, 0, 0, 0, 0, 0, 1556 0, 259, 711, 0, 0, 0, 0, 966, 352, 1312, 1557 0, 0, 354, 0, 0, 0, 79, 0, 1241, 74, 1558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1559 354, 0, 77, 0, 0, 0, 0, 508, 0, 0, 1560 0, 702, 0, 0, 0, 74, 697, 0, 352, 702, 1561 702, 702, 0, 224, 0, 0, 697, 0, 349, 0, 1562 626, 0, 0, 1001, 0, 626, 804, 0, 0, 0, 1563 697, 0, 0, 0, 354, 0, 0, 126, 126, 0, 1564 1012, 0, 0, 352, 0, 0, 0, 0, 0, 0, 1565 0, 0, 0, 0, 0, 0, 0, 508, 508, 0, 1566 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 1567 0, 86, 0, 702, 0, 0, 0, 0, 0, 0, 1568 0, 0, 0, 282, 283, 0, 284, 352, 0, 0, 1569 0, 66, 0, 0, 0, 0, 0, 352, 354, 352, 1570 355, 0, 0, 86, 222, 0, 0, 352, 0, 0, 1571 0, 352, 285, 626, 0, 0, 0, 0, 286, 0, 1572 259, 711, 287, 0, 1084, 288, 289, 290, 291, 41, 1573 42, 0, 292, 293, 0, 0, 0, 0, 0, 0, 1574 225, 0, 354, 354, 354, 0, 0, 0, 0, 0, 1575 1098, 0, 0, 0, 0, 505, 0, 213, 430, 117, 1576 354, 0, 0, 45, 46, 296, 297, 298, 299, 0, 1577 0, 0, 74, 0, 0, 0, 0, 0, 354, 0, 1578 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 1579 0, 0, 0, 0, 126, 79, 0, 0, 0, 126, 1580 79, 0, 352, 0, 0, 0, 0, 794, 795, 0, 1581 0, 0, 0, 0, 0, 77, 593, 0, 354, 0, 1582 0, 0, 0, 0, 0, 0, 0, 362, 0, 428, 1583 0, 0, 0, 0, 697, 697, 828, 349, 349, 831, 1584 832, 0, 835, 0, 837, 838, 0, 0, 0, 839, 1585 840, 0, 0, 354, 0, 0, 0, 1187, 0, 0, 1586 0, 0, 508, 0, 57, 57, 0, 0, 0, 0, 1587 0, 0, 0, 0, 0, 0, 0, 0, 508, 0, 1588 0, 0, 0, 0, 8, 9, 10, 11, 12, 0, 1589 0, 0, 697, 697, 224, 0, 57, 354, 0, 0, 1590 0, 0, 0, 0, 0, 0, 0, 354, 0, 354, 1591 0, 0, 0, 31, 223, 352, 352, 354, 352, 352, 1592 0, 354, 86, 0, 0, 0, 0, 86, 0, 0, 1593 57, 0, 0, 57, 0, 0, 0, 0, 74, 626, 1594 0, 34, 0, 0, 0, 0, 37, 0, 508, 508, 1595 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 1596 126, 79, 0, 711, 0, 0, 0, 0, 0, 0, 1597 0, 0, 0, 352, 352, 0, 355, 0, 0, 0, 1598 0, 79, 77, 43, 0, 0, 0, 968, 969, 79, 1599 0, 45, 46, 0, 8, 9, 10, 11, 12, 0, 1600 0, 0, 0, 0, 0, 0, 1282, 355, 0, 0, 1601 0, 0, 354, 0, 0, 0, 0, 0, 0, 0, 1602 347, 225, 0, 31, 259, 355, 0, 79, 66, 0, 1603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1604 697, 0, 711, 0, 352, 0, 117, 0, 0, 0, 1605 0, 34, 0, 0, 0, 0, 37, 0, 183, 184, 1606 40, 0, 0, 0, 0, 0, 0, 41, 42, 355, 1607 0, 0, 697, 0, 0, 0, 0, 0, 0, 0, 1608 697, 697, 697, 0, 0, 57, 0, 222, 86, 126, 1609 0, 349, 349, 599, 0, 600, 0, 0, 0, 0, 1610 0, 45, 46, 362, 0, 1187, 0, 0, 86, 74, 1611 0, 0, 0, 0, 0, 57, 86, 0, 0, 0, 1612 0, 352, 0, 352, 0, 354, 354, 0, 354, 354, 1613 0, 0, 0, 355, 362, 0, 0, 0, 117, 0, 1614 0, 0, 0, 0, 697, 0, 0, 0, 77, 1089, 1615 0, 0, 362, 352, 86, 0, 0, 0, 0, 0, 1616 0, 352, 352, 352, 0, 0, 0, 0, 0, 0, 1617 0, 0, 352, 352, 0, 0, 0, 355, 355, 355, 1618 0, 0, 0, 354, 354, 0, 74, 0, 0, 0, 1619 0, 0, 0, 0, 0, 355, 362, 0, 0, 0, 1620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1621 0, 349, 0, 355, 0, 0, 0, 0, 0, 0, 1622 0, 0, 0, 0, 79, 352, 0, 8, 9, 10, 1623 11, 12, 0, 0, 0, 0, 117, 0, 0, 0, 1624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1625 79, 0, 0, 355, 354, 0, 31, 0, 1187, 0, 1626 362, 0, 0, 0, 0, 1187, 0, 167, 0, 172, 1627 0, 0, 178, 179, 180, 0, 182, 0, 0, 0, 1628 0, 0, 0, 0, 34, 0, 0, 0, 355, 37, 1629 233, 0, 352, 40, 0, 0, 347, 223, 0, 0, 1630 41, 42, 248, 249, 362, 362, 362, 0, 0, 0, 1631 1217, 0, 0, 0, 0, 0, 1187, 0, 0, 77, 1632 0, 0, 362, 1529, 0, 0, 717, 0, 0, 0, 1633 0, 354, 355, 354, 45, 46, 0, 0, 0, 74, 1634 362, 0, 355, 0, 355, 0, 74, 57, 0, 224, 1635 0, 86, 355, 0, 0, 0, 355, 8, 9, 10, 1636 11, 12, 0, 354, 0, 0, 0, 0, 0, 0, 1637 0, 354, 354, 354, 0, 0, 0, 86, 0, 0, 1638 362, 0, 354, 354, 0, 0, 31, 0, 0, 347, 1639 0, 0, 0, 0, 0, 0, 77, 74, 0, 0, 1640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1641 0, 0, 0, 0, 34, 362, 0, 79, 0, 37, 1642 0, 183, 184, 40, 0, 0, 0, 0, 0, 0, 1643 41, 42, 0, 0, 0, 354, 0, 0, 0, 1303, 1644 0, 0, 0, 0, 0, 0, 0, 355, 0, 0, 1645 0, 0, 0, 347, 0, 0, 904, 0, 410, 362, 1646 0, 0, 0, 0, 45, 46, 0, 0, 0, 362, 1647 0, 362, 0, 0, 0, 0, 225, 0, 0, 362, 1648 0, 0, 0, 362, 0, 0, 0, 0, 0, 0, 1649 0, 0, 0, 0, 0, 0, 0, 347, 347, 347, 1650 0, 0, 354, 0, 0, 0, 0, 0, 0, 0, 1651 0, 0, 0, 0, 0, 347, 0, 0, 1, 2, 1652 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1653 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1654 23, 24, 25, 0, 86, 26, 27, 28, 29, 77, 1655 0, 30, 0, 0, 31, 32, 77, 590, 0, 598, 1656 355, 355, 0, 355, 355, 0, 0, 0, 0, 0, 1657 622, 623, 0, 347, 362, 0, 0, 0, 0, 33, 1658 0, 0, 34, 79, 35, 0, 36, 37, 0, 38, 1659 39, 40, 0, 8, 9, 10, 11, 12, 41, 42, 1660 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 1661 0, 0, 0, 0, 0, 0, 0, 0, 355, 355, 1662 0, 0, 31, 0, 43, 0, 44, 0, 211, 0, 1663 -518, 0, 45, 46, 0, 0, 0, 231, 0, 235, 1664 0, 237, 0, 0, 0, 0, 0, 0, 246, 0, 1665 34, 0, 165, 0, 0, 37, 0, 183, 184, 40, 1666 0, 0, 0, 0, 347, 0, 41, 42, 0, 218, 1667 0, 0, 347, 0, 8, 9, 10, 11, 12, 211, 1668 0, 235, 237, 246, 0, 0, 0, 362, 362, 355, 1669 362, 362, 1504, 0, 410, 0, 0, 0, 0, 0, 1670 45, 46, 0, 31, 0, 0, 0, 0, 0, 0, 1671 86, 0, 0, 0, 0, 0, 165, 0, 0, 0, 1672 272, 0, 211, 0, 0, 0, 0, 0, 0, 0, 1673 0, 34, 224, 0, 0, 0, 37, 57, 183, 184, 1674 40, 0, 0, 0, 0, 362, 362, 41, 42, 165, 1675 0, 0, 0, 0, 79, 0, 0, 0, 0, 368, 1676 0, 0, 0, 374, 0, 0, 355, 0, 355, 0, 1677 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 1678 0, 45, 46, 211, 0, 235, 237, 246, 0, 0, 1679 0, 0, 0, 0, 0, 0, 0, 0, 355, 0, 1680 0, 0, 0, 0, 0, 57, 355, 355, 355, 0, 1681 0, 0, 165, 0, 0, 0, 362, 355, 355, 0, 1682 0, 211, 0, 0, 218, 0, 211, 0, 0, 0, 1683 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 1684 0, 496, 165, 0, 0, 0, 0, 0, 0, 0, 1685 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 1686 0, 0, 0, 0, 0, 0, 0, 374, 0, 0, 1687 355, 0, 0, 0, 165, 0, 0, 0, 0, 0, 1688 0, 86, 0, 347, 347, 0, 0, 0, 0, 211, 1689 0, 0, 0, 362, 0, 362, 0, 523, 0, 0, 1690 0, 0, 0, 57, 0, 0, 0, 0, 0, 165, 1691 0, 211, 924, 0, 925, 0, 235, 237, 0, 0, 1692 0, 928, 929, 0, 246, 362, 934, 0, 0, 0, 1693 0, 0, 0, 362, 362, 362, 0, 355, 939, 0, 1694 0, 0, 0, 943, 362, 362, 0, 596, 0, 0, 1695 0, 0, 620, 0, 0, 0, 0, 0, 86, 0, 1696 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 1697 0, 977, 0, 0, 0, 0, 0, 0, 0, 0, 1698 0, 0, 0, 0, 79, 211, 0, 0, 0, 0, 1699 211, 79, 211, 0, 0, 0, 0, 362, 0, 0, 1700 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 1701 0, 0, 211, 211, 0, 0, 0, 0, 0, 0, 1702 211, 0, 0, 0, 0, 0, 0, 0, 165, 165, 1703 0, 0, 0, 0, 211, 368, 0, 0, 0, 0, 1704 0, 211, 79, 0, 0, 0, 0, 0, 0, 0, 1705 0, 57, 57, 0, 0, 0, 523, 0, 0, 0, 1706 0, 0, 0, 0, 362, 0, 0, 0, 0, 0, 1707 1022, 1023, 1024, 1025, 57, 1027, 0, 0, 0, 0, 1708 0, 0, 0, 0, 714, 0, 0, 0, 0, 0, 1709 1071, 0, 57, 0, 0, 0, 165, 0, 0, 0, 1710 0, 0, 0, 0, 1077, 0, 0, 0, 523, 0, 1711 523, 86, 0, 523, 0, 165, 523, 0, 86, 0, 1712 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 1713 0, 0, 0, 0, 0, 0, 0, 347, 347, 0, 1714 0, 0, 0, 0, 1097, 0, 57, 0, 0, 0, 1715 0, 57, 0, 0, 0, 211, 0, 0, 0, 0, 1716 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 1717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1718 165, 0, 0, 211, 57, 0, 0, 0, 211, 1128, 1719 0, 0, 368, 0, 0, 1135, 809, 0, 0, 0, 1720 1139, 0, 0, 0, 0, 1143, 0, 1144, 0, 0, 1721 0, 1146, 0, 1147, 1148, 0, 0, 1151, 0, 0, 1722 0, 0, 596, 0, 0, 0, 1163, 596, 0, 0, 1723 0, 0, 0, 0, 0, 0, 368, 368, 368, 0, 1724 0, 0, 0, 0, 1178, 1179, 0, 0, 0, 0, 1725 0, 0, 0, 0, 368, 0, 0, 347, 0, 211, 1726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1727 0, 1209, 0, 211, 1211, 0, 0, 0, 0, 0, 1728 0, 0, 57, 0, 0, 0, 523, 282, 283, 0, 1729 284, 0, 0, 496, 0, 0, 0, 0, 0, 0, 1730 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 1731 0, 57, 368, 0, 933, 0, 285, 1225, 0, 0, 1732 0, 0, 286, 1229, 1230, 0, 287, 0, 0, 288, 1733 289, 290, 291, 41, 42, 0, 292, 293, 0, 0, 1734 0, 0, 0, 1246, 0, 0, 1250, 714, 0, 0, 1735 1252, 0, 0, 0, 211, 0, 0, 0, 156, 294, 1736 0, 378, 57, 1260, 379, 0, 211, 45, 46, 296, 1737 297, 298, 299, 0, 0, 0, 1267, 0, 1269, 1270, 1738 1271, 1272, 0, 0, 0, 211, 0, 0, 0, 0, 1739 0, 0, 0, 0, 1279, 0, 1280, 0, 0, 0, 1740 172, 0, 0, 368, 0, 251, 0, 620, 0, 0, 1741 0, 368, 0, 0, 0, 256, 0, 0, 0, 0, 1742 0, 0, 0, 0, 0, 0, 0, 0, 0, 1308, 1743 1309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1744 0, 205, 2, 206, 4, 5, 6, 7, 8, 9, 1745 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1746 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 1747 28, 156, 0, 0, 0, 0, 0, 31, 0, 1341, 1748 1342, 0, 0, 0, 0, 385, 0, 0, 0, 1352, 1749 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 1750 0, 0, 0, 0, 0, 34, 714, 35, 417, 36, 1751 0, 0, 207, 39, 0, 0, 0, 0, 0, 0, 1752 0, 523, 432, 0, 0, 0, 0, 0, 211, 0, 1753 0, 437, 0, 282, 283, 0, 284, 0, 0, 0, 1754 0, 445, 0, 0, 0, 165, 0, 0, 0, 208, 1755 1387, 0, 1388, 1389, 1390, 45, 46, 0, 0, 0, 1756 0, 0, 285, 211, 1394, 0, 463, 0, 286, 0, 1757 0, 473, 287, 1405, 211, 288, 289, 290, 291, 41, 1758 42, 0, 292, 293, 481, 0, 0, 0, 0, 0, 1759 491, 0, 495, 0, 0, 0, 0, 0, 1426, 0, 1760 0, 596, 0, 0, 0, 294, 0, 378, 0, 525, 1761 0, 0, 0, 45, 46, 296, 297, 298, 299, 0, 1762 0, 0, 368, 368, 0, 0, 785, 0, 0, 0, 1763 0, 0, 0, 0, 282, 283, 0, 284, 0, 0, 1764 0, 1464, 1465, 0, 0, 0, 211, 0, 0, 0, 1765 0, 584, 0, 0, 1470, 0, 589, 0, 0, 0, 1766 211, 1470, 0, 285, 0, 0, 0, 0, 0, 639, 1767 0, 139, 140, 287, 0, 0, 288, 289, 290, 291, 1768 41, 42, 523, 292, 293, 634, 0, 0, 0, 635, 1769 636, 0, 638, 1503, 0, 0, 0, 1509, 0, 649, 1770 650, 0, 651, 652, 0, 653, 294, 654, 640, 0, 1771 641, 379, 0, 0, 45, 46, 296, 297, 298, 299, 1772 0, 0, 0, 0, 584, 1531, 0, 1532, 0, 0, 1773 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 1774 0, 340, 363, 0, 0, 0, 0, 0, 714, 211, 1775 0, 0, 0, 0, 0, 1547, 1548, 680, 0, 0, 1776 0, 0, 0, 1551, 1552, 0, 0, 0, 0, 0, 1777 0, 0, 0, 0, 0, 413, 0, 0, 0, 0, 1778 0, 0, 413, 706, 0, 0, 0, 0, 0, 709, 1779 218, 0, 0, 0, 463, 466, 2, 206, 4, 5, 1780 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1781 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 1782 0, 0, 26, 27, 28, 0, 0, 714, 0, 0, 1783 744, 31, 0, 0, 0, 0, 0, 0, 0, 0, 1784 0, 0, 0, 0, 211, 762, 0, 0, 0, 0, 1785 0, 0, 0, 0, 413, 0, 0, 0, 0, 34, 1786 0, 35, 0, 36, 0, 0, 38, 39, 0, 0, 1787 0, 0, 0, 0, 0, 0, 368, 368, 0, 0, 1788 0, 0, 0, 788, 0, 218, 0, 0, 0, 0, 1789 0, 0, 798, 0, 0, 0, 0, 0, 0, 800, 1790 320, 0, 0, 0, 0, 808, -3, 0, 413, 0, 1791 345, 0, 0, 0, 822, 0, 413, 580, 0, 413, 1792 583, 0, 381, 381, 0, 0, 0, 0, 0, 0, 1793 363, 0, 1011, 0, 612, 8, 9, 10, 11, 12, 1794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1795 0, 0, 0, 630, 862, 0, 340, 0, 0, 0, 1796 0, 0, 282, 283, 31, 284, 0, 0, 0, 0, 1797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1798 0, 0, 0, 413, 0, 0, 0, 413, 0, 0, 1799 808, 285, 34, 320, 0, 0, 368, 286, 903, 0, 1800 0, 287, 0, 0, 288, 289, 290, 291, 41, 42, 1801 0, 292, 293, 0, 0, 0, 0, 477, 363, 0, 1802 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 1803 0, 0, 0, 0, 294, 0, 378, 0, 0, 940, 1804 941, 0, 343, 46, 296, 297, 298, 299, 0, 0, 1805 0, 0, 523, 0, 523, 0, 0, 0, 0, 0, 1806 0, 0, 0, 0, 413, 0, 0, 363, 0, 0, 1807 0, 0, 978, 0, 0, 0, 0, 982, 0, 0, 1808 0, 0, 0, 0, 0, 0, 0, 0, 523, 0, 1809 523, 211, 0, 0, 0, 0, 0, 0, 0, 0, 1810 0, 0, 0, 0, 0, 0, 413, 0, 0, 0, 1811 340, 363, 0, 0, 0, 0, 0, 165, 0, 0, 1812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1813 0, 0, 0, 381, 0, 0, 0, 0, 0, 0, 1814 0, 1016, 0, 0, 0, 0, 0, 0, 1017, 0, 1815 0, 0, 0, 0, 0, 413, 413, 0, 0, 0, 1816 0, 1019, 0, 1020, 0, 0, 0, 0, 0, 0, 1817 0, 0, 0, 0, 802, 363, 0, 1032, 0, 0, 1818 0, 0, 0, 1036, 0, 612, 0, 612, 612, 0, 1819 0, 0, 0, 0, 612, 1074, 0, 0, 1075, 0, 1820 0, 0, 0, 0, 841, 363, 0, 0, 0, 0, 1821 363, 0, 0, 0, 0, 0, 0, 0, 0, 363, 1822 363, 363, 0, 0, 0, 0, 0, 708, 0, 0, 1823 0, 0, 0, 0, 0, 0, 0, 363, 0, 0, 1824 0, 0, 413, 883, 0, 0, 413, 886, 0, 0, 1825 0, 0, 0, 888, 0, 0, 0, 0, 0, 0, 1826 0, 0, 0, 0, 0, 0, 740, 0, 0, 0, 1827 0, 0, 413, 0, 0, 589, 0, 0, 0, 757, 1828 0, 0, 0, 0, 740, 0, 0, 740, 0, 0, 1829 0, 0, 0, 0, 0, 363, 612, 0, 0, 766, 1830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1831 1145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1832 0, 787, 0, 0, 0, 0, 0, 0, 0, 340, 1833 363, 796, 0, 0, 413, 413, 0, 0, 345, 0, 1834 0, 0, 0, 757, 0, 0, 0, 0, 0, 0, 1835 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1836 18, 19, 20, 21, 22, 23, 24, 25, 525, 0, 1837 26, 27, 28, 0, 1210, 0, 0, 0, 413, 31, 1838 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 1839 0, 0, 861, 802, 363, 0, 0, 612, 0, 612, 1840 381, 0, 0, 0, 0, 0, 0, 34, 1222, 612, 1841 0, 0, 37, 1224, 38, 39, 40, 0, 0, 0, 1842 0, 1228, 0, 41, 42, 0, 8, 9, 10, 11, 1843 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 1844 22, 23, 24, 25, -291, 0, 0, 0, 0, 43, 1845 0, 157, 0, 0, 1254, 31, 0, 45, 46, 0, 1846 0, 0, 0, 0, 0, 0, 1262, 0, 0, 1263, 1847 0, 1264, 0, 0, 0, 0, 0, 0, 0, 0, 1848 0, 802, 0, 34, 0, 1273, 1274, 0, 340, 363, 1849 413, 0, 413, 0, -291, 0, 413, 0, 757, 0, 1850 962, 0, 0, 0, 0, 0, 0, 1287, 0, 0, 1851 973, 0, 0, 0, 0, 0, 981, 612, 612, 0, 1852 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1853 18, 19, 20, 21, 22, 23, 24, 25, 1161, 0, 1854 0, 8, 9, 10, 11, 12, 0, 0, 0, 31, 1855 0, 0, 413, 0, 1326, 0, 0, 0, 999, 1000, 1856 0, 0, 345, 0, 0, 0, 0, 0, 282, 283, 1857 31, 284, 0, 413, 1142, 0, 345, 34, 0, 0, 1858 0, 0, 0, 0, 363, 0, 0, 0, 0, 0, 1859 413, 1154, 0, 612, 612, 1159, 0, 285, 34, 0, 1860 0, 0, 0, 286, 0, 363, 363, 287, 0, 0, 1861 288, 289, 290, 291, 41, 42, 1030, 292, 293, 0, 1862 381, 0, 0, 0, 0, 0, 0, 0, 0, 1376, 1863 0, 1377, 0, 0, 0, 0, 0, 0, 0, 0, 1864 294, 0, 378, 1385, 0, 1386, 0, 0, 1162, 46, 1865 296, 297, 298, 299, 0, 0, 0, 345, 0, 0, 1866 0, 0, 1393, 0, 0, 0, 0, 0, 413, 0, 1867 413, 0, 0, 0, 0, 413, 0, 0, 1411, 1413, 1868 0, 0, 0, 0, 612, 0, 0, 0, 0, 1418, 1869 0, 0, 1228, 0, 0, 0, 320, 0, 0, 0, 1870 0, 0, 0, 0, 0, 0, 0, 802, 413, 1242, 1871 0, 0, 0, 1440, 0, 282, 283, 0, 284, 0, 1872 0, 0, 1447, 0, 381, 1449, 0, 1451, 1453, 1455, 1873 973, 363, 0, 0, 740, 0, 0, 0, 0, 0, 1874 0, 0, 0, 0, 285, 0, 0, 0, 0, 0, 1875 286, 0, 0, 0, 287, 1149, 0, 288, 289, 290, 1876 291, 41, 42, 0, 292, 293, 1164, 1485, 0, 1487, 1877 0, 1228, 0, 0, 0, 0, 0, 0, 0, 0, 1878 0, 0, 0, 0, 0, 0, 1498, 294, 381, 378, 1879 1182, 0, 340, 0, 756, 45, 46, 296, 297, 298, 1880 299, 0, 0, 0, 0, 973, 973, 0, 0, 0, 1881 363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1882 0, 0, 0, 0, 0, 0, 1214, 0, 0, 0, 1883 0, 0, 0, 0, 1, 2, 206, 4, 5, 6, 1884 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1885 17, 18, 19, 20, 21, 22, 23, 24, 25, 363, 1886 363, 26, 27, 28, 29, 0, 0, 30, 0, 0, 1887 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1888 0, 973, 0, 0, 0, 0, 0, 0, 0, 0, 1889 0, 0, 0, 0, 0, 0, 0, 0, 34, 861, 1890 35, 0, 36, 0, 0, 38, 39, 0, 0, 0, 1891 0, 0, 0, 0, 1265, 1266, 0, 1, 2, 206, 1892 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1893 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1894 24, 25, 44, 0, 26, 27, 28, 29, 45, 46, 1895 30, 282, 283, 31, 1039, 1040, 0, 1041, 0, 0, 1896 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 0, 0, 1897 0, 1050, 0, 0, 0, 1051, 1052, 0, 33, 363, 1898 285, 34, 0, 35, 0, 36, 1053, 0, 38, 39, 1899 287, 0, 0, 288, 289, 290, 291, 41, 42, 0, 1900 292, 293, 0, 0, 0, 0, 0, 0, 0, 0, 1901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1902 0, 0, 0, 294, 0, 1054, 0, 0, 171, 0, 1903 0, 45, 46, 296, 297, 298, 299, 0, 0, 0, 1904 0, 1055, 0, 0, 0, 0, -126, 0, 0, 0, 1905 0, 0, 0, 0, 0, 1370, 0, 0, 740, 0, 1906 0, 0, 0, 0, 0, 0, 413, 0, 0, 0, 1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1909 413, 413, 0, 0, 0, 0, 0, 0, 0, 0, 1910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1911 0, 0, 0, 0, 0, 413, 1, 2, 206, 4, 1912 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1913 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1914 25, 0, 0, 26, 27, 28, 29, 0, 0, 30, 1915 282, 283, 31, 284, 8, 9, 10, 11, 12, 13, 1916 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1917 24, 25, 0, 0, 26, 27, 28, 0, 0, 285, 1918 34, 0, 35, 31, 36, 286, 0, 38, 39, 287, 1919 0, 0, 288, 289, 290, 291, 41, 42, 0, 292, 1920 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1921 0, 34, 0, 0, 0, 0, 37, 0, 38, 39, 1922 40, 0, 294, 0, 1054, 0, 0, 41, 42, 0, 1923 45, 46, 296, 297, 298, 299, 0, 0, 0, 0, 1924 0, 0, 0, 0, 0, -126, 0, 0, 0, 0, 1925 0, 0, 0, 43, 0, 44, 0, 0, 0, 0, 1926 0, 45, 46, 0, 0, 0, 0, 0, 320, 1, 1927 2, 206, 4, 5, 6, 7, 8, 9, 10, 11, 1928 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 1929 22, 23, 24, 25, 0, 0, 26, 27, 28, 29, 1930 0, 0, 30, 282, 283, 31, 284, 8, 9, 10, 1931 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 1932 21, 22, 23, 24, 25, 0, 0, 26, 27, 28, 1933 0, 0, 285, 34, 0, 35, 31, 36, 286, 0, 1934 38, 39, 287, 0, 0, 288, 289, 290, 291, 41, 1935 42, 0, 292, 293, 0, 0, 0, 0, 0, 0, 1936 0, 0, 0, 0, 34, 0, 0, 0, 0, 110, 1937 0, 38, 39, 0, 0, 294, 0, 44, 0, 0, 1938 41, 42, 0, 45, 46, 296, 297, 298, 299, 2, 1939 206, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1940 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1941 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 1942 0, 0, 282, 283, 31, 284, 0, 0, 0, 8, 1943 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 1944 19, 20, 21, 22, 23, 24, 25, -292, 0, 0, 1945 0, 285, 34, 0, 35, 0, 36, 286, 31, 38, 1946 39, 287, 0, 0, 288, 289, 290, 291, 41, 42, 1947 0, 292, 293, 0, 0, 0, 0, 0, 0, 0, 1948 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 1949 0, 0, 0, 0, 294, 0, 342, -292, 0, 0, 1950 0, 756, 343, 46, 296, 297, 298, 299, 2, 206, 1951 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1952 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1953 24, 25, 0, 0, 26, 27, 28, 0, 0, 0, 1954 0, 282, 283, 31, 284, 8, 9, 10, 11, 12, 1955 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1956 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 1957 285, 34, 0, 35, 31, 36, 286, 0, 38, 39, 1958 287, 0, 0, 288, 289, 290, 291, 41, 42, 0, 1959 292, 293, 0, 0, 0, 0, 0, 0, 0, 0, 1960 0, 0, 34, 0, 0, 0, 0, 0, 0, 38, 1961 39, 0, 0, 294, 0, 961, 0, 0, 0, 0, 1962 756, 343, 46, 296, 297, 298, 299, 2, 206, 4, 1963 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1964 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 1965 25, 0, 0, 26, 27, 28, 0, 0, 0, 0, 1966 282, 283, 31, 284, 8, 9, 10, 11, 12, 13, 1967 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 1968 24, 25, 0, 0, 26, 27, 28, 0, 0, 285, 1969 34, 0, 35, 31, 36, 286, 0, 38, 39, 287, 1970 0, 0, 288, 289, 290, 291, 41, 42, 0, 292, 1971 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1972 0, 34, 0, 0, 0, 0, 0, 0, 207, 39, 1973 0, 0, 294, 0, 961, 0, 0, 0, 0, 756, 1974 45, 46, 296, 297, 298, 299, 2, 206, 4, 5, 1975 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1976 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 1977 0, 0, 26, 27, 28, 0, 0, 0, 0, 282, 1978 283, 31, 284, 0, 0, 0, 0, 0, 0, 0, 1979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1980 0, 0, 0, 0, 0, 0, 0, 0, 285, 34, 1981 0, 35, 0, 36, 286, 0, 38, 39, 287, 0, 1982 0, 288, 289, 290, 291, 41, 42, 0, 292, 293, 1983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1985 0, 294, 0, 342, 0, 0, 0, 0, 0, 343, 1986 46, 296, 297, 298, 299, 2, 206, 4, 5, 6, 1987 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1988 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 1989 0, 26, 27, 28, 0, 0, 0, 0, 282, 283, 1990 31, 284, 0, 0, 0, 0, 0, 0, 0, 0, 1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1992 0, 0, 0, 0, 0, 0, 0, 285, 34, 0, 1993 35, 0, 36, 286, 0, 207, 39, 287, 0, 0, 1994 288, 289, 290, 291, 41, 42, 0, 292, 293, 0, 1995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1997 294, 0, 996, 0, 0, 0, 0, 0, 997, 46, 1998 296, 297, 298, 299, 2, 206, 4, 5, 6, 7, 1999 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2000 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2001 26, 27, 28, 0, 0, 0, 0, 282, 283, 31, 2002 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2004 0, 0, 0, 0, 0, 0, 285, 34, 0, 35, 2005 0, 36, 286, 0, 38, 39, 287, 0, 0, 288, 2006 289, 290, 291, 41, 42, 0, 292, 293, 0, 0, 2007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2008 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, 2009 0, 961, 0, 0, 0, 0, 0, 343, 46, 296, 2010 297, 298, 299, 2, 206, 4, 5, 6, 7, 8, 2011 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2012 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2013 27, 28, 0, 0, 0, 0, 282, 283, 31, 284, 2014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2016 0, 0, 0, 0, 0, 285, 34, 0, 35, 0, 2017 36, 286, 0, 207, 39, 287, 0, 0, 288, 289, 2018 290, 291, 41, 42, 0, 292, 293, 0, 0, 0, 2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2020 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, 2021 378, 0, 0, 0, 0, 0, 45, 46, 296, 297, 2022 298, 299, -514, 0, 0, 1, 2, 3, 4, 5, 2023 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2024 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2025 0, 0, 26, 27, 28, 29, 0, 0, 30, 0, 2026 0, 31, 32, 0, 0, 0, 0, 0, 0, 0, 2027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2028 0, 0, 0, 0, 0, 0, 33, 0, 0, 34, 2029 0, 35, 0, 36, 37, 0, 38, 39, 40, 0, 2030 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 2031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2032 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2033 0, 43, 0, 44, 0, 0, 0, 0, 0, 45, 2034 46, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2035 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2036 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2037 28, 29, 0, 0, 30, 0, 0, 31, 32, 0, 2038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2040 0, 0, 33, 0, 0, 34, 0, 35, 0, 36, 2041 37, 0, 38, 39, 40, 0, 0, 0, 0, 0, 2042 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, 2043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2044 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 2045 0, 0, 0, 0, 0, 45, 46, 205, 2, 206, 2046 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2047 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2048 24, 25, 0, 0, 26, 27, 28, 0, 0, 0, 2049 0, 0, 0, 31, 0, 8, 9, 10, 11, 12, 2050 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2051 23, 24, 25, 0, 0, 26, 27, 28, 484, 485, 2052 486, 34, 0, 35, 31, 36, 37, 0, 207, 39, 2053 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 2054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2055 0, 0, 34, 0, 0, 0, 0, 0, 0, 38, 2056 39, 0, 0, 43, 0, 208, 0, 0, 0, 0, 2057 0, 45, 46, 1, 2, 206, 4, 5, 6, 7, 2058 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2059 18, 19, 20, 21, 22, 23, 24, 25, -291, 0, 2060 26, 27, 28, 29, 0, 0, 30, 0, 0, 31, 2061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2063 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 2064 0, 36, 0, 0, 38, 39, 0, 0, -291, 2, 2065 206, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2066 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2067 23, 24, 25, 0, 0, 26, 27, 28, 0, 0, 2068 0, 44, 0, 0, 31, 0, 0, 45, 46, 0, 2069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2070 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2071 0, 0, 34, 0, 35, 0, 36, 37, 0, 207, 2072 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 2073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2075 0, 0, 0, 0, 43, 0, 208, 0, 0, 0, 2076 0, 0, 45, 46, 2, 206, 4, 5, 6, 7, 2077 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2078 18, 19, 20, 21, 22, 23, 24, 25, 0, 0, 2079 26, 27, 28, 0, 0, 0, 0, 0, 0, 31, 2080 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2081 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2082 24, 25, 0, 0, 26, 27, 28, 34, 0, 35, 2083 0, 36, 0, 31, 38, 39, 0, 2, 206, 4, 2084 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2085 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2086 25, 34, 0, 26, 27, 28, 0, 0, 38, 39, 2087 -398, 676, 31, 0, 0, 0, 0, 45, 46, 0, 2088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2090 34, 0, 35, 633, 36, 337, 0, 38, 39, 0, 2091 0, 45, 46, 0, 0, 0, 0, 0, 0, 0, 2092 0, 0, 0, 0, 0, 0, 0, 0, 0, 1349, 2093 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2094 0, 0, 0, 0, 676, 0, 0, 0, 0, 0, 2095 45, 46, 2, 206, 4, 5, 6, 7, 8, 9, 2096 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2097 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2098 28, 0, 0, 0, 0, 0, 0, 31, 0, 0, 2099 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2100 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 2101 0, 26, 27, 28, 0, 34, 0, 35, 0, 36, 2102 31, 683, 38, 39, 0, 0, 0, 0, 0, 0, 2103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2104 0, 0, 0, 0, 1351, 0, 0, 0, 34, 0, 2105 0, 0, 0, 0, 0, 38, 39, 0, 0, 676, 2106 0, 0, 0, 0, 0, 45, 46, 2, 206, 4, 2107 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2108 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2109 25, 0, 684, 26, 27, 28, 685, 0, 45, 46, 2110 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 2111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113 34, 0, 35, 0, 36, 0, 0, 207, 39, 0, 2114 2, 206, 4, 5, 6, 7, 8, 9, 10, 11, 2115 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2116 22, 23, 24, 25, 0, 0, 26, 27, 28, 0, 2117 0, 0, 0, 0, 270, 31, 0, 0, 0, 0, 2118 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 2119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2120 0, 0, 0, 34, 0, 35, 0, 36, 0, 0, 2121 38, 39, 0, 2, 206, 4, 5, 6, 7, 8, 2122 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2123 19, 20, 21, 22, 23, 24, 25, 0, 0, 26, 2124 27, 28, 0, 0, 0, 0, 0, 676, 31, 0, 2125 0, 0, 0, 45, 46, 0, 0, 0, 0, 0, 2126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2127 0, 0, 0, 0, 0, 0, 34, 0, 35, 0, 2128 36, 0, 0, 38, 39, 0, 2, 206, 4, 5, 2129 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2130 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2131 0, 0, 26, 27, 28, 0, 0, 0, 0, 0, 2132 591, 31, 0, 0, 0, 0, 45, 46, 0, 0, 2133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2134 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2135 0, 35, 0, 36, 0, 0, 207, 39, 8, 9, 2136 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2137 20, 21, 22, 23, 24, 25, 0, 0, 26, 27, 2138 28, 0, 0, 0, 0, 282, 283, 31, 284, 0, 2139 0, 0, 0, 208, 0, 0, 0, 0, 0, 45, 2140 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2141 0, 0, 0, 0, 285, 34,