Changeset 4a7d895


Ignore:
Timestamp:
Aug 20, 2016, 5:33:07 AM (7 years ago)
Author:
Aaron Moss <bruceiv@…>
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.
Message:

Merge branch 'master' of plg2.cs.uwaterloo.ca:software/cfa/cfa-cc

Location:
src
Files:
6 added
3 deleted
51 edited

Legend:

Unmodified
Added
Removed
  • src/Common/CompilerError.h

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

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

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

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

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

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:30:25 2016
    13 // Update Count     : 172
     12// Last Modified On : Thu Aug 18 23:48:23 2016
     13// Update Count     : 182
    1414//
    1515
     
    2525#include "SynTree/Expression.h"
    2626
    27 #include "Parser.h"
    2827#include "TypedefTable.h"
    2928extern TypedefTable typedefTable;
     
    4241UniqueName DeclarationNode::anonymous( "__anonymous" );
    4342
    44 extern LinkageSpec::Type linkage;                                               // defined in parser.yy
     43extern LinkageSpec::Spec linkage;                                               // defined in parser.yy
    4544
    4645DeclarationNode *DeclarationNode::clone() const {
     
    4847        newnode->type = maybeClone( type );
    4948        newnode->name = name;
    50         newnode->storageClasses = storageClasses;
    51 //PAB   newnode->bitfieldWidth = maybeClone( bitfieldWidth );
     49        newnode->storageClass = storageClass;
     50        newnode->isInline = isInline;
     51        newnode->isNoreturn = isNoreturn;
    5252        newnode->bitfieldWidth = bitfieldWidth;
    5353        newnode->hasEllipsis = hasEllipsis;
    5454        newnode->initializer = initializer;
    55         newnode->next = maybeClone( next );
     55        newnode->set_next( maybeClone( get_next() ) );
    5656        newnode->linkage = linkage;
    5757        return newnode;
    5858} // DeclarationNode::clone
    5959
    60 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
     60DeclarationNode::DeclarationNode()
     61        : type( 0 )
     62        , storageClass( NoStorageClass )
     63        , isInline( false )
     64        , isNoreturn( false )
     65        , bitfieldWidth( 0 )
     66        , initializer( 0 )
     67        , hasEllipsis( false )
     68        , linkage( ::linkage )
     69        , extension( false )
     70        , error() {
    6171}
    6272
     
    8393        } // if
    8494
    85         printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os );
     95        if(storageClass != NoStorageClass) os << DeclarationNode::storageName[storageClass] << ' ';
     96        if(isInline) os << DeclarationNode::storageName[Inline] << ' ';
     97        if(isNoreturn) os << DeclarationNode::storageName[Noreturn] << ' ';
    8698        if ( type ) {
    8799                type->print( os, indent );
     
    144156DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
    145157        DeclarationNode *newnode = new DeclarationNode;
    146         newnode->storageClasses.push_back( sc );
     158        switch (sc) {
     159                case Inline: newnode->isInline = true; break;
     160                case Noreturn: newnode->isNoreturn = true; break;
     161                default: newnode->storageClass = sc; break;
     162        }
    147163        return newnode;
    148164} // DeclarationNode::newStorageClass
     
    284300        newnode->type->array->dimension = size;
    285301        newnode->type->array->isStatic = isStatic;
    286         if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantExpr *>( newnode->type->array->dimension->build() ) ) {
     302        if ( newnode->type->array->dimension == 0 || newnode->type->array->dimension->isExpressionType<ConstantExpr *>() ) {
    287303                newnode->type->array->isVarLen = false;
    288304        } else {
     
    360376DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    361377        if ( q ) {
    362                 storageClasses.splice( storageClasses.end(), q->storageClasses );
     378                copyStorageClasses(q);
    363379                if ( q->type ) {
    364380                        if ( ! type ) {
     
    387403
    388404DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) {
    389         storageClasses = q->storageClasses;
     405        isInline = isInline || q->isInline;
     406        isNoreturn = isNoreturn || q->isNoreturn;
     407        if(storageClass == NoStorageClass) {
     408                storageClass = q->storageClass;
     409        }
     410        else if (q->storageClass != NoStorageClass) {
     411                q->error = "invalid combination of storage classes in declaration of ";
     412        }
     413        if(error.empty()) error = q->error;
    390414        return this;
    391415}
     
    447471DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) {
    448472        if ( o ) {
    449                 storageClasses.splice( storageClasses.end(), o->storageClasses );
     473                copyStorageClasses( o );
    450474                if ( o->type ) {
    451475                        if ( ! type ) {
     
    694718        } // if
    695719        newnode->type->forall = maybeClone( type->forall );
    696         newnode->storageClasses = storageClasses;
     720        newnode->copyStorageClasses( this );
    697721        newnode->name = assign_strptr( newName );
    698722        return newnode;
     
    701725DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) {
    702726        if ( o ) {
    703                 o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
     727                o->copyStorageClasses( this );
    704728                if ( type ) {
    705729                        TypeData *srcType = type;
     
    734758        DeclarationNode *newnode = new DeclarationNode;
    735759        newnode->type = maybeClone( type );
    736         newnode->storageClasses = storageClasses;
     760        newnode->copyStorageClasses( this );
    737761        newnode->name = assign_strptr( newName );
    738762        return newnode;
     
    741765DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) {
    742766        if ( o ) {
    743                 o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
     767                o->copyStorageClasses( this );
    744768                if ( type ) {
    745769                        TypeData *newType = type->clone();
     
    752776                } // if
    753777        } // if
     778        delete o;
    754779        return o;
    755 }
    756 
    757 DeclarationNode *DeclarationNode::appendList( DeclarationNode *node ) {
    758         if ( node != 0 ) {
    759                 set_last( node );
    760         } // if
    761         return this;
    762780}
    763781
     
    776794void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
    777795        SemanticError errors;
    778         std::back_insert_iterator< std::list< Declaration *> > out( outputList );
     796        std::back_insert_iterator< std::list< Declaration * > > out( outputList );
    779797        const DeclarationNode *cur = firstNode;
    780798        while ( cur ) {
     
    794812                        errors.append( e );
    795813                } // try
    796                 cur = dynamic_cast<DeclarationNode *>( cur->get_next() );
     814                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    797815        } // while
    798816        if ( ! errors.isEmpty() ) {
     
    801819}
    802820
    803 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList ) {
     821void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {
    804822        SemanticError errors;
    805         std::back_insert_iterator< std::list< DeclarationWithType *> > out( outputList );
     823        std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );
    806824        const DeclarationNode *cur = firstNode;
    807825        while ( cur ) {
     
    817835                        Declaration *decl = cur->build();
    818836                        if ( decl ) {
    819                                 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType *>( decl ) ) {
     837                                if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
    820838                                        *out++ = dwt;
    821                                 } else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
     839                                } else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {
    822840                                        StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    823841                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
    824842                                        delete agg;
    825                                 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
     843                                } else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {
    826844                                        UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    827845                                        *out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
     
    831849                        errors.append( e );
    832850                } // try
    833                 cur = dynamic_cast< DeclarationNode *>( cur->get_next() );
     851                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    834852        } // while
    835853        if ( ! errors.isEmpty() ) {
     
    838856}
    839857
    840 void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList ) {
     858void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {
    841859        SemanticError errors;
    842         std::back_insert_iterator< std::list< Type *> > out( outputList );
     860        std::back_insert_iterator< std::list< Type * > > out( outputList );
    843861        const DeclarationNode *cur = firstNode;
    844862        while ( cur ) {
     
    848866                        errors.append( e );
    849867                } // try
    850                 cur = dynamic_cast< DeclarationNode *>( cur->get_next() );
     868                cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
    851869        } // while
    852870        if ( ! errors.isEmpty() ) {
     
    856874
    857875Declaration *DeclarationNode::build() const {
     876        if( !error.empty() ) throw SemanticError( error, this );
    858877        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 );
    863882        } // if
    864883        throw SemanticError( "invalid function specifier in declaration of ", this );
     
    899918}
    900919
    901 DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
    902         DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
    903         for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
    904           if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
    905           if ( ret != DeclarationNode::NoStorageClass ) {       // already have a valid storage class ?
    906                         throw SemanticError( "invalid combination of storage classes in declaration of ", this );
    907                 } // if
    908                 ret = *i;
    909         } // for
    910         return ret;
    911 }
    912 
    913 bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
    914         std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
    915   if ( first == storageClasses.end() ) return false;    // not found
    916         first = std::find( ++first, storageClasses.end(), key ); // found
    917   if ( first == storageClasses.end() ) return true;             // not found again
    918         throw SemanticError( "duplicate function specifier in declaration of ", this );
    919 }
     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// }
    920939
    921940// Local Variables: //
  • src/Parser/ExpressionNode.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:30:42 2016
    13 // Update Count     : 490
     12// Last Modified On : Tue Aug 16 00:09:20 2016
     13// Update Count     : 495
    1414//
    1515
     
    3232using namespace std;
    3333
    34 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {}
     34ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {}
    3535
    3636//##############################################################################
     
    5757static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    5858
    59 Expression *build_constantInteger( std::string & str ) {
     59Expression *build_constantInteger( const std::string & str ) {
    6060        static const BasicType::Kind kind[2][3] = {
    6161                { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
     
    123123} // build_constantInteger
    124124
    125 Expression *build_constantFloat( std::string & str ) {
     125Expression *build_constantFloat( const std::string & str ) {
    126126        static const BasicType::Kind kind[2][3] = {
    127127                { BasicType::Float, BasicType::Double, BasicType::LongDouble },
     
    153153} // build_constantFloat
    154154
    155 Expression *build_constantChar( std::string & str ) {
     155Expression *build_constantChar( const std::string & str ) {
    156156        return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
    157157} // build_constantChar
    158158
    159 ConstantExpr *build_constantStr( std::string & str ) {
     159ConstantExpr *build_constantStr( const std::string & str ) {
    160160        // string should probably be a primitive type
    161161        ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
     
    166166} // build_constantStr
    167167
    168 //##############################################################################
    169 
    170168NameExpr * build_varref( const string *name, bool labelp ) {
    171         return new NameExpr( *name, nullptr );
    172 }
    173 
    174 //##############################################################################
     169        NameExpr *expr = new NameExpr( *name, nullptr );
     170        delete name;
     171        return expr;
     172}
    175173
    176174static const char *OperName[] = {
     
    184182};
    185183
    186 //##############################################################################
    187 
    188184Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    189185        Type *targetType = decl_node->buildType();
    190186        if ( dynamic_cast< VoidType * >( targetType ) ) {
    191187                delete targetType;
    192                 return new CastExpr( maybeBuild<Expression>(expr_node) );
     188                return new CastExpr( maybeMoveBuild< Expression >(expr_node) );
    193189        } else {
    194                 return new CastExpr( maybeBuild<Expression>(expr_node), targetType );
     190                return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );
    195191        } // if
    196192}
    197193
    198194Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    199         UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild<Expression>(expr_node) );
     195        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) );
    200196        delete member;
    201197        return ret;
     
    204200Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    205201        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    206         deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
     202        deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) );
    207203        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    208204        delete member;
     
    211207
    212208Expression *build_addressOf( ExpressionNode *expr_node ) {
    213                 return new AddressExpr( maybeBuild<Expression>(expr_node) );
     209                return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );
    214210}
    215211Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
    216         return new SizeofExpr( maybeBuild<Expression>(expr_node) );
     212        return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) );
    217213}
    218214Expression *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;
    220218}
    221219Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
    222         return new AlignofExpr( maybeBuild<Expression>(expr_node) );
     220        return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) );
    223221}
    224222Expression *build_alignOftype( DeclarationNode *decl_node ) {
     
    226224}
    227225Expression *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;
    229230}
    230231
    231232Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
    232         return new LogicalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );
     233        return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind );
    233234}
    234235
    235236Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
    236         std::list<Expression *> args;
    237         args.push_back( maybeBuild<Expression>(expr_node) );
     237        std::list< Expression * > args;
     238        args.push_back( maybeMoveBuild< Expression >(expr_node) );
    238239        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    239240}
    240241Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
    241         std::list<Expression *> args;
    242         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node) ) );
     242        std::list< Expression * > args;
     243        args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) );
    243244        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    244245}
    245246Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    246         std::list<Expression *> args;
    247         args.push_back( maybeBuild<Expression>(expr_node1) );
    248         args.push_back( maybeBuild<Expression>(expr_node2) );
     247        std::list< Expression * > args;
     248        args.push_back( maybeMoveBuild< Expression >(expr_node1) );
     249        args.push_back( maybeMoveBuild< Expression >(expr_node2) );
    249250        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    250251}
    251252Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    252         std::list<Expression *> args;
    253         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node1) ) );
    254         args.push_back( maybeBuild<Expression>(expr_node2) );
     253        std::list< Expression * > args;
     254        args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) );
     255        args.push_back( maybeMoveBuild< Expression >(expr_node2) );
    255256        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    256257}
    257258
    258259Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
    259         return new ConditionalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), maybeBuild<Expression>(expr_node2), maybeBuild<Expression>(expr_node3) );
     260        return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) );
    260261}
    261262
    262263Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    263         return new CommaExpr( maybeBuild<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );
     264        return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) );
    264265}
    265266
    266267Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
    267         return new AttrExpr( var, maybeBuild<Expression>(expr_node) );
     268        return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) );
    268269}
    269270Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
     
    273274Expression *build_tuple( ExpressionNode * expr_node ) {
    274275        TupleExpr *ret = new TupleExpr();
    275         buildList( expr_node, ret->get_exprs() );
     276        buildMoveList( expr_node, ret->get_exprs() );
    276277        return ret;
    277278}
    278279
    279280Expression *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 );
    284284}
    285285
    286286Expression *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}
    293289
    294290Expression *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}
    305293
    306294Expression *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}
    312297Expression *build_typevalue( DeclarationNode *decl ) {
    313298        return new TypeExpr( decl->buildType() );
    314299}
    315300
    316 //##############################################################################
    317 
    318301Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
    319         Declaration * newDecl = maybeBuild<Declaration>(decl_node); // compound literal type
     302        Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type
    320303        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    321                 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     304                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) );
    322305        // these types do not have associated type information
    323306        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
    324                 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
     307                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    325308        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
    326                 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
     309                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    327310        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
    328                 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
     311                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
    329312        } else {
    330313                assert( false );
  • src/Parser/InitializerNode.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 13 18:55:11 2016
    13 // Update Count     : 18
     12// Last Modified On : Mon Aug 15 18:27:02 2016
     13// Update Count     : 20
    1414//
    1515
     
    2525        : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    27                 kids = dynamic_cast< InitializerNode *>( get_next() );
     27                kids = dynamic_cast< InitializerNode * >( get_next() );
    2828
    2929        if ( kids != 0 )
     
    3737
    3838        if ( aggrp )
    39                 kids = dynamic_cast< InitializerNode *>( get_next() );
     39                kids = dynamic_cast< InitializerNode * >( get_next() );
    4040
    4141        if ( kids != 0 )
     
    8282                //assert( next_init() != 0 );
    8383
    84                 std::list< Initializer *> initlist;
    85                 buildList<Initializer, InitializerNode>( next_init(), initlist );
     84                std::list< Initializer * > initlist;
     85                buildList< Initializer, InitializerNode >( next_init(), initlist );
    8686
    87                 std::list< Expression *> designlist;
     87                std::list< Expression * > designlist;
    8888
    8989                if ( designator != 0 ) {
    90                         buildList<Expression, ExpressionNode>( designator, designlist );
     90                        buildList< Expression, ExpressionNode >( designator, designlist );
    9191                } // if
    9292
    9393                return new ListInit( initlist, designlist, maybeConstructed );
    9494        } else {
    95                 std::list< Expression *> designators;
     95                std::list< Expression * > designators;
    9696
    9797                if ( designator != 0 )
    98                         buildList<Expression, ExpressionNode>( designator, designators );
     98                        buildList< Expression, ExpressionNode >( designator, designators );
    9999
    100100                if ( get_expression() != 0)
    101                         return new SingleInit( maybeBuild<Expression>( get_expression() ), designators, maybeConstructed );
     101                        return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed );
    102102        } // if
    103103
  • src/Parser/LinkageSpec.cc

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

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

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:49:06 2016
    13 // Update Count     : 99
     12// Last Modified On : Wed Aug 17 23:14:16 2016
     13// Update Count     : 126
    1414//
    1515
     
    1717using namespace std;
    1818
    19 // Builder
    2019int ParseNode::indent_by = 4;
    21 
    22 ParseNode::ParseNode() : next( 0 ) {};
    23 ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
    24 ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
    25 
    26 ParseNode::~ParseNode() {
    27         delete next;
    28 };
    29 
    30 ParseNode *ParseNode::get_last() {
    31         ParseNode *current = this;
    32 
    33         while ( current->get_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         } // if
    52 }
    5320
    5421// Local Variables: //
  • src/Parser/ParseNode.h

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:52:12 2016
    13 // Update Count     : 512
     12// Last Modified On : Thu Aug 18 23:48:37 2016
     13// Update Count     : 542
    1414//
    1515
     
    2222#include <memory>
    2323
    24 #include "Common/utility.h"
    2524#include "Parser/LinkageSpec.h"
    2625#include "SynTree/Type.h"
    2726#include "SynTree/Expression.h"
    2827#include "SynTree/Statement.h"
    29 //#include "SynTree/Declaration.h"
     28#include "SynTree/Label.h"
     29#include "Common/utility.h"
    3030#include "Common/UniqueName.h"
    31 #include "SynTree/Label.h"
    3231
    3332class StatementNode;
     
    3736class InitializerNode;
    3837
    39 // Builder
     38//##############################################################################
     39
    4040class ParseNode {
    4141  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;
    4647
    4748        ParseNode *get_next() const { return next; }
    4849        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        }
    5359
    5460        const std::string &get_name() const { return name; }
    5561        void set_name( const std::string &newValue ) { name = newValue; }
    5662
    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;
    6269        std::string name;
    63         static int indent_by;
    64         ParseNode *next;
    65 };
     70}; // ParseNode
    6671
    6772//##############################################################################
     
    7277        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
    7378        ~InitializerNode();
     79        virtual InitializerNode *clone() const { assert( false ); return nullptr; }
    7480
    7581        ExpressionNode *get_expression() const { return expr; }
     
    97103//##############################################################################
    98104
    99 class ExpressionNode : public ParseNode {
     105class ExpressionNode final : public ParseNode {
    100106  public:
    101107        ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
     
    103109        ExpressionNode( const ExpressionNode &other );
    104110        virtual ~ExpressionNode() {}
    105 
    106         virtual ExpressionNode *clone() const { return 0; }
     111        virtual ExpressionNode *clone() const { assert( false ); return nullptr; }
    107112
    108113        bool get_extension() const { return extension; }
    109114        ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    110115
    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(); }
    115125  private:
    116126        bool extension = false;
    117         Expression *expr;
     127        std::unique_ptr<Expression> expr;
    118128};
    119129
    120130template< typename T >
    121 struct maybeBuild_t<Expression, T> {
     131struct maybeBuild_t< Expression, T > {
    122132        static inline Expression * doit( const T *orig ) {
    123133                if ( orig ) {
     
    126136                        return p;
    127137                } else {
    128                         return 0;
     138                        return nullptr;
    129139                } // if
    130140        }
     
    146156};
    147157
    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 );
     158Expression *build_constantInteger( const std::string &str );
     159Expression *build_constantFloat( const std::string &str );
     160Expression *build_constantChar( const std::string &str );
     161ConstantExpr *build_constantStr( const std::string &str );
    152162
    153163NameExpr *build_varref( const std::string *name, bool labelp = false );
     
    228238        static DeclarationNode *newBuiltinType( BuiltinType );
    229239
     240        DeclarationNode();
     241        ~DeclarationNode();
     242        DeclarationNode *clone() const;
     243
    230244        DeclarationNode *addQualifiers( DeclarationNode *);
    231245        DeclarationNode *copyStorageClasses( DeclarationNode *);
     
    252266        DeclarationNode *cloneBaseType( DeclarationNode *newdecl );
    253267
    254         DeclarationNode *appendList( DeclarationNode * );
    255 
    256         DeclarationNode *clone() const;
     268        DeclarationNode *appendList( DeclarationNode *node ) {
     269                return (DeclarationNode *)set_last( node );
     270        }
     271
    257272        void print( std::ostream &os, int indent = 0 ) const;
    258273        void printList( std::ostream &os, int indent = 0 ) const;
     
    263278        bool get_hasEllipsis() const;
    264279        const std::string &get_name() const { return name; }
    265         LinkageSpec::Type get_linkage() const { return linkage; }
     280        LinkageSpec::Spec get_linkage() const { return linkage; }
    266281        DeclarationNode *extractAggregate() const;
    267282        ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
     
    269284        bool get_extension() const { return extension; }
    270285        DeclarationNode *set_extension( bool exten ) { extension = exten; return this; }
    271 
    272         DeclarationNode();
    273         ~DeclarationNode();
    274286  private:
    275         StorageClass buildStorageClass() const;
    276         bool buildFuncSpecifier( StorageClass key ) const;
     287        // StorageClass buildStorageClass() const;
     288        // bool buildFuncSpecifier( StorageClass key ) const;
    277289
    278290        TypeData *type;
    279291        std::string name;
    280         std::list< StorageClass > storageClasses;
     292        // std::list< StorageClass > storageClasses;
     293        StorageClass storageClass;
     294        bool isInline, isNoreturn;
    281295        std::list< std::string > attributes;
    282296        ExpressionNode *bitfieldWidth;
     
    284298        InitializerNode *initializer;
    285299        bool hasEllipsis;
    286         LinkageSpec::Type linkage;
     300        LinkageSpec::Spec linkage;
    287301        bool extension = false;
     302        std::string error;
    288303
    289304        static UniqueName anonymous;
     
    294309//##############################################################################
    295310
    296 class StatementNode : public ParseNode {
     311class StatementNode final : public ParseNode {
    297312  public:
    298313        StatementNode() { stmt = nullptr; }
     
    301316        virtual ~StatementNode() {}
    302317
    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(); }
    305320
    306321        virtual StatementNode *add_label( const std::string * name ) {
    307322                stmt->get_labels().emplace_back( *name );
     323                delete name;
    308324                return this;
    309325        }
     
    314330        virtual void printList( std::ostream &os, int indent = 0 ) {}
    315331  private:
    316         Statement *stmt;
     332        std::unique_ptr<Statement> stmt;
    317333}; // StatementNode
    318334
     
    351367void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
    352368        SemanticError errors;
    353         std::back_insert_iterator< std::list< SynTreeType *> > out( outputList );
     369        std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );
    354370        const NodeType *cur = firstNode;
    355371
    356372        while ( cur ) {
    357373                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 ) );
    360376                        if ( result ) {
    361377                                *out++ = result;
     
    365381                        errors.append( e );
    366382                } // try
    367                 cur = dynamic_cast< NodeType *>( cur->get_next() );
     383                cur = dynamic_cast< NodeType * >( cur->get_next() );
    368384        } // while
    369385        if ( ! errors.isEmpty() ) {
     
    374390// in DeclarationNode.cc
    375391void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList );
    376 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList );
     392void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList );
    377393void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
     394
     395template< typename SynTreeType, typename NodeType >
     396void buildMoveList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
     397        buildList(firstNode, outputList);
     398        delete firstNode;
     399}
     400
    378401
    379402#endif // PARSENODE_H
  • src/Parser/StatementNode.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:40:05 2016
    13 // Update Count     : 317
     12// Last Modified On : Mon Aug 15 20:47:11 2016
     13// Update Count     : 322
    1414//
    1515
     
    3232                if ( agg ) {
    3333                        StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
    34                         next = nextStmt;
     34                        set_next( nextStmt );
    3535                        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()) ) );
    3737                                decl->set_next( 0 );
    3838                        } // if
    3939                } else {
    4040                        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() ) ) );
    4242                                decl->set_next( 0 );
    4343                        } // if
    4444                        agg = decl;
    4545                } // if
    46                 stmt = new DeclStmt( noLabels, maybeBuild<Declaration>(agg) );
     46                stmt.reset( new DeclStmt( noLabels, maybeBuild< Declaration >(agg) ) );
    4747        } else {
    4848                assert( false );
     
    5454        // find end of list and maintain previous pointer
    5555        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);
    5757                assert( node );
    58                 assert( dynamic_cast<CaseStmt *>(node->stmt) );
     58                assert( dynamic_cast< CaseStmt * >(node->stmt.get()) );
    5959                prev = curr;
    6060        } // for
    6161        // convert from StatementNode list to Statement list
    62         StatementNode *node = dynamic_cast<StatementNode *>(prev);
    63         std::list<Statement *> stmts;
    64         buildList( stmt, stmts );
     62        StatementNode *node = dynamic_cast< StatementNode * >(prev);
     63        std::list< Statement * > stmts;
     64        buildMoveList( stmt, stmts );
    6565        // 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());
    6767        caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts );
    6868        return this;
     
    7070
    7171Statement *build_expr( ExpressionNode *ctl ) {
    72         Expression *e = maybeBuild< Expression >( ctl );
     72        Expression *e = maybeMoveBuild< Expression >( ctl );
    7373
    7474        if ( e )
     
    8080Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) {
    8181        Statement *thenb, *elseb = 0;
    82         std::list<Statement *> branches;
    83         buildList<Statement, StatementNode>( then_stmt, branches );
     82        std::list< Statement * > branches;
     83        buildMoveList< Statement, StatementNode >( then_stmt, branches );
    8484        assert( branches.size() == 1 );
    8585        thenb = branches.front();
    8686
    8787        if ( else_stmt ) {
    88                 std::list<Statement *> branches;
    89                 buildList<Statement, StatementNode>( else_stmt, branches );
     88                std::list< Statement * > branches;
     89                buildMoveList< Statement, StatementNode >( else_stmt, branches );
    9090                assert( branches.size() == 1 );
    9191                elseb = branches.front();
    9292        } // if
    93         return new IfStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), thenb, elseb );
     93        return new IfStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), thenb, elseb );
    9494}
    9595
    9696Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) {
    97         std::list<Statement *> branches;
    98         buildList<Statement, StatementNode>( stmt, branches );
     97        std::list< Statement * > branches;
     98        buildMoveList< Statement, StatementNode >( stmt, branches );
    9999        assert( branches.size() >= 0 );                                         // size == 0 for switch (...) {}, i.e., no declaration or statements
    100         return new SwitchStmt( noLabels, maybeBuild<Expression>(ctl), branches );
     100        return new SwitchStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
    101101}
    102102Statement *build_case( ExpressionNode *ctl ) {
    103         std::list<Statement *> branches;
    104         return new CaseStmt( noLabels, maybeBuild<Expression>(ctl), branches );
     103        std::list< Statement * > branches;
     104        return new CaseStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
    105105}
    106106Statement *build_default() {
    107         std::list<Statement *> branches;
     107        std::list< Statement * > branches;
    108108        return new CaseStmt( noLabels, nullptr, branches, true );
    109109}
    110110
    111111Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) {
    112         std::list<Statement *> branches;
    113         buildList<Statement, StatementNode>( stmt, branches );
    114         assert( branches.size() == 1 );
    115         return new WhileStmt( noLabels, notZeroExpr( maybeBuild<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 );
    116116}
    117117
    118118Statement *build_for( ForCtl *forctl, StatementNode *stmt ) {
    119         std::list<Statement *> branches;
    120         buildList<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;
    124124        if ( forctl->init != 0 ) {
    125                 buildList( forctl->init, init );
     125                buildMoveList( forctl->init, init );
    126126        } // if
    127127
    128128        Expression *cond = 0;
    129129        if ( forctl->condition != 0 )
    130                 cond = notZeroExpr( maybeBuild<Expression>(forctl->condition) );
     130                cond = notZeroExpr( maybeMoveBuild< Expression >(forctl->condition) );
    131131
    132132        Expression *incr = 0;
    133133        if ( forctl->change != 0 )
    134                 incr = maybeBuild<Expression>(forctl->change);
     134                incr = maybeMoveBuild< Expression >(forctl->change);
    135135
    136136        delete forctl;
     
    142142}
    143143Statement *build_computedgoto( ExpressionNode *ctl ) {
    144         return new BranchStmt( noLabels, maybeBuild<Expression>(ctl), BranchStmt::Goto );
     144        return new BranchStmt( noLabels, maybeMoveBuild< Expression >(ctl), BranchStmt::Goto );
    145145}
    146146
    147147Statement *build_return( ExpressionNode *ctl ) {
    148         std::list<Expression *> exps;
    149         buildList( ctl, exps );
     148        std::list< Expression * > exps;
     149        buildMoveList( ctl, exps );
    150150        return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr );
    151151}
    152152Statement *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 );
    156157}
    157158
    158159Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) {
    159         std::list<Statement *> branches;
    160         buildList<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));
    162163        assert( tryBlock );
    163         FinallyStmt *finallyBlock = dynamic_cast<FinallyStmt *>(maybeBuild<Statement>(finally_stmt) );
     164        FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) );
    164165        return new TryStmt( noLabels, tryBlock, branches, finallyBlock );
    165166}
    166167Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny ) {
    167         std::list<Statement *> branches;
    168         buildList<Statement, StatementNode>( stmt, branches );
    169         assert( branches.size() == 1 );
    170         return new CatchStmt( noLabels, maybeBuild<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 );
    171172}
    172173Statement *build_finally( StatementNode *stmt ) {
    173         std::list<Statement *> branches;
    174         buildList<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() ) );
    177178}
    178179
    179180Statement *build_compound( StatementNode *first ) {
    180181        CompoundStmt *cs = new CompoundStmt( noLabels );
    181         buildList( first, cs->get_kids() );
     182        buildMoveList( first, cs->get_kids() );
    182183        return cs;
    183184}
     
    187188        std::list< ConstantExpr * > clob;
    188189
    189         buildList( output, out );
    190         buildList( input, in );
    191         buildList( clobber, clob );
     190        buildMoveList( output, out );
     191        buildMoveList( input, in );
     192        buildMoveList( clobber, clob );
    192193        return new AsmStmt( noLabels, voltile, instruction, out, in, clob, gotolabels ? gotolabels->labels : noLabels );
    193194}
  • src/Parser/TypeData.cc

    r7b1bfc5 r4a7d895  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Aug 13 18:38:41 2016
    13 // Update Count     : 59
     12// Last Modified On : Thu Aug 18 23:48:44 2016
     13// Update Count     : 64
    1414//
    1515
     
    182182                break;
    183183          case Array:
    184 //PAB           newtype->array->dimension = maybeClone( array->dimension );
    185184                newtype->array->dimension = array->dimension;
    186185                newtype->array->isVarLen = array->isVarLen;
     
    479478}
    480479
    481 Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init ) const {
     480Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer *init ) const {
    482481        if ( kind == TypeData::Function ) {
    483482                FunctionDecl *decl;
     
    489488                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn );
    490489                        } else {
    491                                 // std::list<Label> ls;
    492                                 decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn );
     490                                // std::list< Label > ls;
     491                                decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn );
    493492                        } // if
    494493                } else {
     
    909908        buildList( enumeration->constants, ret->get_members() );
    910909        std::list< Declaration * >::iterator members = ret->get_members().begin();
    911         for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_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);
    914913                        member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
    915914                } // if
  • src/Parser/TypeData.h

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

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

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

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

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

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

    r7b1bfc5 r4a7d895  
    1 /* A Bison parser, made by GNU Bison 2.5.  */
     1/* A Bison parser, made by GNU Bison 3.0.2.  */
    22
    33/* Bison implementation for Yacc-like parsers in C
    4    
    5       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
    6    
     4
     5   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
     6
    77   This program is free software: you can redistribute it and/or modify
    88   it under the terms of the GNU General Public License as published by
    99   the Free Software Foundation, either version 3 of the License, or
    1010   (at your option) any later version.
    11    
     11
    1212   This program is distributed in the hope that it will be useful,
    1313   but WITHOUT ANY WARRANTY; without even the implied warranty of
    1414   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1515   GNU General Public License for more details.
    16    
     16
    1717   You should have received a copy of the GNU General Public License
    1818   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     
    2727   Bison output files to be licensed under the GNU General Public
    2828   License without this special exception.
    29    
     29
    3030   This special exception was added by the Free Software Foundation in
    3131   version 2.2 of Bison.  */
     
    4545
    4646/* Bison version.  */
    47 #define YYBISON_VERSION "2.5"
     47#define YYBISON_VERSION "3.0.2"
    4848
    4949/* Skeleton name.  */
     
    5959#define YYPULL 1
    6060
    61 /* Using locations.  */
    62 #define YYLSP_NEEDED 0
    6361
    6462
    6563
    6664/* Copy the first part of user declarations.  */
    67 
    68 /* Line 268 of yacc.c  */
    69 #line 42 "parser.yy"
     65#line 42 "parser.yy" /* yacc.c:339  */
    7066
    7167#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
    7268#define YYDEBUG 1                                                                               // get the pretty debugging code to compile
    73 extern char *yytext;
    7469
    7570#undef __GNUC_MINOR__
     
    8479#include "LinkageSpec.h"
    8580
    86 DeclarationNode *theTree = 0;                                                   // the resulting parse tree
    87 LinkageSpec::Type linkage = LinkageSpec::Cforall;
    88 std::stack< LinkageSpec::Type > linkageStack;
    89 TypedefTable typedefTable;
     81extern DeclarationNode * parseTree;
     82extern LinkageSpec::Spec linkage;
     83extern TypedefTable typedefTable;
     84
     85std::stack< LinkageSpec::Spec > linkageStack;
    9086
    9187void appendStr( std::string &to, std::string *from ) {
     
    9490} // appendStr
    9591
    96 
    97 /* Line 268 of yacc.c  */
    98 #line 99 "Parser/parser.cc"
    99 
    100 /* Enabling traces.  */
    101 #ifndef YYDEBUG
    102 # define YYDEBUG 1
    103 #endif
     92#line 93 "Parser/parser.cc" /* yacc.c:339  */
     93
     94# ifndef YY_NULLPTR
     95#  if defined __cplusplus && 201103L <= __cplusplus
     96#   define YY_NULLPTR nullptr
     97#  else
     98#   define YY_NULLPTR 0
     99#  endif
     100# endif
    104101
    105102/* Enabling verbose error messages.  */
     
    111108#endif
    112109
    113 /* Enabling the token table.  */
    114 #ifndef YYTOKEN_TABLE
    115 # define YYTOKEN_TABLE 0
     110/* In a future release of Bison, this section will be replaced
     111   by #include "y.tab.h".  */
     112#ifndef YY_YY_Y_TAB_H_INCLUDED
     113# define YY_YY_Y_TAB_H_INCLUDED
     114/* Debug traces.  */
     115#ifndef YYDEBUG
     116# define YYDEBUG 1
    116117#endif
    117 
    118 
    119 /* Tokens.  */
     118#if YYDEBUG
     119extern int yydebug;
     120#endif
     121
     122/* Token type.  */
    120123#ifndef YYTOKENTYPE
    121124# define YYTOKENTYPE
    122    /* Put the tokens into the symbol table, so that GDB and other debuggers
    123       know about them.  */
    124    enum yytokentype {
    125      TYPEDEF = 258,
    126      AUTO = 259,
    127      EXTERN = 260,
    128      REGISTER = 261,
    129      STATIC = 262,
    130      INLINE = 263,
    131      FORTRAN = 264,
    132      CONST = 265,
    133      VOLATILE = 266,
    134      RESTRICT = 267,
    135      FORALL = 268,
    136      LVALUE = 269,
    137      VOID = 270,
    138      CHAR = 271,
    139      SHORT = 272,
    140      INT = 273,
    141      LONG = 274,
    142      FLOAT = 275,
    143      DOUBLE = 276,
    144      SIGNED = 277,
    145      UNSIGNED = 278,
    146      VALIST = 279,
    147      BOOL = 280,
    148      COMPLEX = 281,
    149      IMAGINARY = 282,
    150      TYPEOF = 283,
    151      LABEL = 284,
    152      ENUM = 285,
    153      STRUCT = 286,
    154      UNION = 287,
    155      OTYPE = 288,
    156      FTYPE = 289,
    157      DTYPE = 290,
    158      TRAIT = 291,
    159      SIZEOF = 292,
    160      OFFSETOF = 293,
    161      ATTRIBUTE = 294,
    162      EXTENSION = 295,
    163      IF = 296,
    164      ELSE = 297,
    165      SWITCH = 298,
    166      CASE = 299,
    167      DEFAULT = 300,
    168      DO = 301,
    169      WHILE = 302,
    170      FOR = 303,
    171      BREAK = 304,
    172      CONTINUE = 305,
    173      GOTO = 306,
    174      RETURN = 307,
    175      CHOOSE = 308,
    176      DISABLE = 309,
    177      ENABLE = 310,
    178      FALLTHRU = 311,
    179      TRY = 312,
    180      CATCH = 313,
    181      CATCHRESUME = 314,
    182      FINALLY = 315,
    183      THROW = 316,
    184      THROWRESUME = 317,
    185      AT = 318,
    186      ASM = 319,
    187      ALIGNAS = 320,
    188      ALIGNOF = 321,
    189      ATOMIC = 322,
    190      GENERIC = 323,
    191      NORETURN = 324,
    192      STATICASSERT = 325,
    193      THREADLOCAL = 326,
    194      IDENTIFIER = 327,
    195      QUOTED_IDENTIFIER = 328,
    196      TYPEDEFname = 329,
    197      TYPEGENname = 330,
    198      ATTR_IDENTIFIER = 331,
    199      ATTR_TYPEDEFname = 332,
    200      ATTR_TYPEGENname = 333,
    201      INTEGERconstant = 334,
    202      FLOATINGconstant = 335,
    203      CHARACTERconstant = 336,
    204      STRINGliteral = 337,
    205      ZERO = 338,
    206      ONE = 339,
    207      ARROW = 340,
    208      ICR = 341,
    209      DECR = 342,
    210      LS = 343,
    211      RS = 344,
    212      LE = 345,
    213      GE = 346,
    214      EQ = 347,
    215      NE = 348,
    216      ANDAND = 349,
    217      OROR = 350,
    218      ELLIPSIS = 351,
    219      MULTassign = 352,
    220      DIVassign = 353,
    221      MODassign = 354,
    222      PLUSassign = 355,
    223      MINUSassign = 356,
    224      LSassign = 357,
    225      RSassign = 358,
    226      ANDassign = 359,
    227      ERassign = 360,
    228      ORassign = 361,
    229      ATassign = 362,
    230      THEN = 363
    231    };
     125  enum yytokentype
     126  {
     127    TYPEDEF = 258,
     128    AUTO = 259,
     129    EXTERN = 260,
     130    REGISTER = 261,
     131    STATIC = 262,
     132    INLINE = 263,
     133    FORTRAN = 264,
     134    CONST = 265,
     135    VOLATILE = 266,
     136    RESTRICT = 267,
     137    FORALL = 268,
     138    LVALUE = 269,
     139    VOID = 270,
     140    CHAR = 271,
     141    SHORT = 272,
     142    INT = 273,
     143    LONG = 274,
     144    FLOAT = 275,
     145    DOUBLE = 276,
     146    SIGNED = 277,
     147    UNSIGNED = 278,
     148    VALIST = 279,
     149    BOOL = 280,
     150    COMPLEX = 281,
     151    IMAGINARY = 282,
     152    TYPEOF = 283,
     153    LABEL = 284,
     154    ENUM = 285,
     155    STRUCT = 286,
     156    UNION = 287,
     157    OTYPE = 288,
     158    FTYPE = 289,
     159    DTYPE = 290,
     160    TRAIT = 291,
     161    SIZEOF = 292,
     162    OFFSETOF = 293,
     163    ATTRIBUTE = 294,
     164    EXTENSION = 295,
     165    IF = 296,
     166    ELSE = 297,
     167    SWITCH = 298,
     168    CASE = 299,
     169    DEFAULT = 300,
     170    DO = 301,
     171    WHILE = 302,
     172    FOR = 303,
     173    BREAK = 304,
     174    CONTINUE = 305,
     175    GOTO = 306,
     176    RETURN = 307,
     177    CHOOSE = 308,
     178    DISABLE = 309,
     179    ENABLE = 310,
     180    FALLTHRU = 311,
     181    TRY = 312,
     182    CATCH = 313,
     183    CATCHRESUME = 314,
     184    FINALLY = 315,
     185    THROW = 316,
     186    THROWRESUME = 317,
     187    AT = 318,
     188    ASM = 319,
     189    ALIGNAS = 320,
     190    ALIGNOF = 321,
     191    ATOMIC = 322,
     192    GENERIC = 323,
     193    NORETURN = 324,
     194    STATICASSERT = 325,
     195    THREADLOCAL = 326,
     196    IDENTIFIER = 327,
     197    QUOTED_IDENTIFIER = 328,
     198    TYPEDEFname = 329,
     199    TYPEGENname = 330,
     200    ATTR_IDENTIFIER = 331,
     201    ATTR_TYPEDEFname = 332,
     202    ATTR_TYPEGENname = 333,
     203    INTEGERconstant = 334,
     204    FLOATINGconstant = 335,
     205    CHARACTERconstant = 336,
     206    STRINGliteral = 337,
     207    ZERO = 338,
     208    ONE = 339,
     209    ARROW = 340,
     210    ICR = 341,
     211    DECR = 342,
     212    LS = 343,
     213    RS = 344,
     214    LE = 345,
     215    GE = 346,
     216    EQ = 347,
     217    NE = 348,
     218    ANDAND = 349,
     219    OROR = 350,
     220    ELLIPSIS = 351,
     221    MULTassign = 352,
     222    DIVassign = 353,
     223    MODassign = 354,
     224    PLUSassign = 355,
     225    MINUSassign = 356,
     226    LSassign = 357,
     227    RSassign = 358,
     228    ANDassign = 359,
     229    ERassign = 360,
     230    ORassign = 361,
     231    ATassign = 362,
     232    THEN = 363
     233  };
    232234#endif
    233235/* Tokens.  */
     
    339341#define THEN 363
    340342
    341 
    342 
    343 
     343/* Value type.  */
    344344#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    345 typedef union YYSTYPE
     345typedef union YYSTYPE YYSTYPE;
     346union YYSTYPE
    346347{
    347 
    348 /* Line 293 of yacc.c  */
    349 #line 115 "parser.yy"
     348#line 115 "parser.yy" /* yacc.c:355  */
    350349
    351350        Token tok;
     
    363362        bool flag;
    364363
    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};
    370366# define YYSTYPE_IS_TRIVIAL 1
    371 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
    372367# define YYSTYPE_IS_DECLARED 1
    373368#endif
    374369
    375370
     371extern YYSTYPE yylval;
     372
     373int yyparse (void);
     374
     375#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
     376
    376377/* Copy the second part of user declarations.  */
    377378
    378 
    379 /* Line 343 of yacc.c  */
    380 #line 381 "Parser/parser.cc"
     379#line 380 "Parser/parser.cc" /* yacc.c:358  */
    381380
    382381#ifdef short
     
    392391#ifdef YYTYPE_INT8
    393392typedef YYTYPE_INT8 yytype_int8;
    394 #elif (defined __STDC__ || defined __C99__FUNC__ \
    395      || defined __cplusplus || defined _MSC_VER)
     393#else
    396394typedef signed char yytype_int8;
    397 #else
    398 typedef short int yytype_int8;
    399395#endif
    400396
     
    416412# elif defined size_t
    417413#  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
    420415#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    421416#  define YYSIZE_T size_t
     
    431426#  if ENABLE_NLS
    432427#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    433 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
     428#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    434429#  endif
    435430# endif
    436431# ifndef YY_
    437 #  define YY_(msgid) msgid
     432#  define YY_(Msgid) Msgid
    438433# endif
    439434#endif
    440435
     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
    441463/* Suppress unused-variable warnings by "using" E.  */
    442464#if ! defined lint || defined __GNUC__
    443 # define YYUSE(e) ((void) (e))
     465# define YYUSE(E) ((void) (E))
    444466#else
    445 # define YYUSE(e) /* empty */
     467# define YYUSE(E) /* empty */
    446468#endif
    447469
    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")
    451478#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
    460480#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
    464484#endif
     485#ifndef YY_INITIAL_VALUE
     486# define YY_INITIAL_VALUE(Value) /* Nothing. */
     487#endif
     488
    465489
    466490#if ! defined yyoverflow || YYERROR_VERBOSE
     
    481505#   else
    482506#    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
    485508#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     509      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    486510#     ifndef EXIT_SUCCESS
    487511#      define EXIT_SUCCESS 0
     
    493517
    494518# 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)
    497521#  ifndef YYSTACK_ALLOC_MAXIMUM
    498522    /* The OS might guarantee only one guard page at the bottom of the stack,
     
    510534#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    511535       && ! ((defined YYMALLOC || defined malloc) \
    512              && (defined YYFREE || defined free)))
     536             && (defined YYFREE || defined free)))
    513537#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    514538#   ifndef EXIT_SUCCESS
     
    518542#  ifndef YYMALLOC
    519543#   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
    522545void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    523546#   endif
     
    525548#  ifndef YYFREE
    526549#   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
    529551void free (void *); /* INFRINGES ON USER NAME SPACE */
    530552#   endif
     
    536558#if (! defined yyoverflow \
    537559     && (! defined __cplusplus \
    538         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     560        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    539561
    540562/* A type that is properly aligned for any stack member.  */
     
    561583   stack.  Advance YYPTR to a properly aligned location for the next
    562584   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         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    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)
    573595
    574596#endif
    575597
    576598#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    577 /* Copy COUNT objects from FROM to TO.  The source and destination do
     599/* Copy COUNT objects from SRC to DST.  The source and destination do
    578600   not overlap.  */
    579601# ifndef YYCOPY
    580602#  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)))
    583605#  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)
    592614#  endif
    593615# endif
     
    595617
    596618/* YYFINAL -- State number of the termination state.  */
    597 #define YYFINAL  251
     619#define YYFINAL  250
    598620/* YYLAST -- Last index in YYTABLE.  */
    599 #define YYLAST   10816
     621#define YYLAST   10977
    600622
    601623/* YYNTOKENS -- Number of terminals.  */
    602624#define YYNTOKENS  133
    603625/* YYNNTS -- Number of nonterminals.  */
    604 #define YYNNTS  241
     626#define YYNNTS  240
    605627/* 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.  */
    611634#define YYUNDEFTOK  2
    612635#define YYMAXUTOK   363
    613636
    614 #define YYTRANSLATE(YYX)                                                \
     637#define YYTRANSLATE(YYX)                                                \
    615638  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    616639
    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.  */
    618642static const yytype_uint8 yytranslate[] =
    619643{
     
    658682
    659683#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.  */
    1020685static const yytype_uint16 yyrline[] =
    1021686{
     
    1051716    1258,  1263,  1264,  1273,  1274,  1279,  1280,  1285,  1287,  1289,
    1052717    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
    1098762};
    1099763#endif
    1100764
    1101 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     765#if YYDEBUG || YYERROR_VERBOSE || 0
    1102766/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    1103767   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     
    1156820  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
    1157821  "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",
    1164827  "new_field_declaring_list", "field_declaring_list", "field_declarator",
    1165828  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
     
    1208871  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
    1209872  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
    1210   "comma_opt", "assignment_opt", 0
     873  "comma_opt", "assignment_opt", YY_NULLPTR
    1211874};
    1212875#endif
    1213876
    1214877# ifdef YYPRINT
    1215 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    1216    token YYLEX-NUM.  */
     878/* YYTOKNUM[NUM] -- (External) token number corresponding to the
     879   (internal) symbol number NUM (which must be that of a token).  */
    1217880static const yytype_uint16 yytoknum[] =
    1218881{
     
    1234897# endif
    1235898
    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.  */
     911static 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.  */
     1074static 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].  */
     1235static const yytype_int16 yypgoto[] =
     1236{
     1237   -1317,  4344,  3244, -1317,   633, -1317,   172,   896,  -203, -1317,
     1238     487,  -518,  -482,  -910,  -211,  1511,     0, -1317,  1129,   534,
     1239     537,   615,   556,   984,   981,   988,   980,   989, -1317,     4,
     1240    -451,  4784,  -913, -1317,  -702,   571,    13,  -706,   419, -1317,
     1241     190, -1317,   345,  -964, -1317, -1317,    85, -1317, -1099, -1138,
     1242     197, -1317, -1317, -1317, -1317,    20, -1281, -1317, -1317, -1317,
     1243   -1317, -1317, -1317,   266, -1095,    50, -1317,  -472, -1317,   443,
     1244     239, -1317,   118, -1317,  -294, -1317, -1317, -1317,   496,  -829,
     1245   -1317, -1317,     8,  -952,    28,  2894, -1317, -1317, -1317,  -214,
     1246   -1317,   121,  1028,  -198,  1848,  3592, -1317, -1317,   127,   296,
     1247    1545,  1505, -1317,  1929, -1317, -1317,   137,  2139, -1317,  2574,
     1248     804, -1317, -1317, -1317,  -637, -1317,   886,   889,   490,   670,
     1249      52, -1317, -1317, -1317,   893,   666,  -510, -1317,  -116,    40,
     1250    1073, -1317, -1317,  -889,  -983,   933,  1377,  1006,   -11, -1317,
     1251    1351,   508,  -322,  -183,  -145,   623,   724, -1317,   944, -1317,
     1252    2701,   574,  -443,   875, -1317, -1317,   659, -1317,  -228, -1317,
     1253     -45, -1317, -1317, -1317, -1253,   370, -1317, -1317, -1317,  1120,
     1254   -1317,    33, -1317, -1317,  -828,  -100, -1316,  -170,  2264, -1317,
     1255    1914, -1317,   868, -1317,  -155,   129,  -181,  -180,  -175,     7,
     1256     -41,   -40,   -35,  1507,    37,    53,    57,   -29,  -172,  -163,
     1257    -158,  -150,  -293,  -500,  -490,  -485,  -542,  -284,  -525, -1317,
     1258   -1317,  -499,  1035,  1038,  1040,  1486,  4616,  -563,  -531,  -513,
     1259    -491,  -561, -1317,  -506,  -730,  -727,  -723,  -562,  -311,  -227,
     1260   -1317, -1317,   378,    19,   -93, -1317,  3633,   159,  -611,  -428
     1261};
     1262
     1263  /* YYDEFGOTO[NTERM-NUM].  */
     1264static 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.  */
     1295static 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,