Changeset 59db689


Ignore:
Timestamp:
Jun 6, 2015, 11:38:58 PM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
cd623a4
Parents:
a65d92e
Message:

constant types, first attempt

Location:
src
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    ra65d92e r59db689  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun  3 11:54:32 2015
    13 // Update Count     : 14
     12// Last Modified On : Sat Jun  6 23:29:13 2015
     13// Update Count     : 23
    1414//
    1515
     
    7474
    7575void DeclarationNode::print( std::ostream &os, int indent ) const {
    76         os << string(indent, ' ' );
     76        os << string( indent, ' ' );
    7777        if ( name == "" ) {
    7878                os << "unnamed: ";
     
    9393
    9494        if ( bitfieldWidth ) {
    95                 os << endl << string(indent+2,  ' ') << "with bitfield width ";
     95                os << endl << string( indent + 2, ' ' ) << "with bitfield width ";
    9696                bitfieldWidth->printOneLine( os );
    9797        }
    9898
    9999        if ( initializer != 0 ) {
    100                 os << endl << string(indent+2,  ' ') << "with initializer ";
     100                os << endl << string( indent + 2, ' ' ) << "with initializer ";
    101101                initializer->printOneLine( os );
    102102        }
     
    161161}
    162162
    163 DeclarationNode *DeclarationNode::newForall( DeclarationNode* forall ) {
     163DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) {
    164164        DeclarationNode *newnode = new DeclarationNode;
    165165        newnode->type = new TypeData( TypeData::Unknown );
     
    168168}
    169169
    170 DeclarationNode *DeclarationNode::newFromTypedef( std::string* name ) {
     170DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) {
    171171        DeclarationNode *newnode = new DeclarationNode;
    172172        newnode->type = new TypeData( TypeData::SymbolicInst );
     
    177177}
    178178
    179 DeclarationNode *DeclarationNode::newAggregate( TyCon kind, std::string* name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
     179DeclarationNode *DeclarationNode::newAggregate( TyCon kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
    180180        DeclarationNode *newnode = new DeclarationNode;
    181181        newnode->type = new TypeData( TypeData::Aggregate );
     
    203203}
    204204
    205 DeclarationNode *DeclarationNode::newEnumConstant( std::string* name, ExpressionNode *constant ) {
     205DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
    206206        DeclarationNode *newnode = new DeclarationNode;
    207207        newnode->name = assign_strptr( name );
     
    210210}
    211211
    212 DeclarationNode *DeclarationNode::newName( std::string* name ) {
     212DeclarationNode *DeclarationNode::newName( std::string *name ) {
    213213        DeclarationNode *newnode = new DeclarationNode;
    214214        newnode->name = assign_strptr( name );
     
    216216}
    217217
    218 DeclarationNode *DeclarationNode::newFromTypeGen( std::string* name, ExpressionNode *params ) {
     218DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
    219219        DeclarationNode *newnode = new DeclarationNode;
    220220        newnode->type = new TypeData( TypeData::SymbolicInst );
     
    225225}
    226226
    227 DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string* name ) {
     227DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
    228228        DeclarationNode *newnode = new DeclarationNode;
    229229        newnode->name = assign_strptr( name );
     
    467467}
    468468
    469 DeclarationNode *DeclarationNode::addAssertions( DeclarationNode* assertions ) {
     469DeclarationNode *DeclarationNode::addAssertions( DeclarationNode *assertions ) {
    470470        assert( type );
    471471        switch ( type->kind ) {
     
    493493}
    494494
    495 DeclarationNode *DeclarationNode::addName( std::string* newname ) {
     495DeclarationNode *DeclarationNode::addName( std::string *newname ) {
    496496        name = assign_strptr( newname );
    497497        return this;
     
    758758void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
    759759        SemanticError errors;
    760         std::back_insert_iterator< std::list< Declaration* > > out( outputList );
     760        std::back_insert_iterator< std::list< Declaration *> > out( outputList );
    761761        const DeclarationNode *cur = firstNode;
    762762        while ( cur ) {
     
    776776                        errors.append( e );
    777777                } // try
    778                 cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
     778                cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
    779779        } // while
    780780        if ( ! errors.isEmpty() ) {
     
    783783}
    784784
    785 void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType* > &outputList ) {
     785void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList ) {
    786786        SemanticError errors;
    787         std::back_insert_iterator< std::list< DeclarationWithType* > > out( outputList );
     787        std::back_insert_iterator< std::list< DeclarationWithType *> > out( outputList );
    788788        const DeclarationNode *cur = firstNode;
    789789        while ( cur ) {
     
    799799                        Declaration *decl = cur->build();
    800800                        if ( decl ) {
    801                                 if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType* >( decl ) ) {
     801                                if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType *>( decl ) ) {
    802802                                        *out++ = dwt;
    803                                 } else if ( StructDecl *agg = dynamic_cast< StructDecl* >( decl ) ) {
     803                                } else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
    804804                                        StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    805805                                        *out++ = new ObjectDecl( "", Declaration::NoStorageClass, linkage, 0, inst, 0 );
    806806                                        delete agg;
    807                                 } else if ( UnionDecl *agg = dynamic_cast< UnionDecl* >( decl ) ) {
     807                                } else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
    808808                                        UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    809809                                        *out++ = new ObjectDecl( "", Declaration::NoStorageClass, linkage, 0, inst, 0 );
     
    813813                        errors.append( e );
    814814                } // try
    815                 cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
     815                cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
    816816        } // while
    817817        if ( ! errors.isEmpty() ) {
     
    820820}
    821821
    822 void buildTypeList( const DeclarationNode *firstNode, std::list< Type* > &outputList ) {
     822void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList ) {
    823823        SemanticError errors;
    824         std::back_insert_iterator< std::list< Type* > > out( outputList );
     824        std::back_insert_iterator< std::list< Type *> > out( outputList );
    825825        const DeclarationNode *cur = firstNode;
    826826        while ( cur ) {
     
    830830                        errors.append( e );
    831831                } // try
    832                 cur = dynamic_cast< DeclarationNode* >( cur->get_link() );
     832                cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
    833833        } // while
    834834        if ( ! errors.isEmpty() ) {
  • src/Parser/ExpressionNode.cc

    ra65d92e r59db689  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun  5 07:44:47 2015
    13 // Update Count     : 10
     12// Last Modified On : Sat Jun  6 23:18:19 2015
     13// Update Count     : 128
    1414//
    1515
     
    1717#include <cctype>
    1818#include <algorithm>
     19#include <sstream>
     20#include <cstdio>
     21#include <climits>
    1922
    2023#include "ParseNode.h"
    21 #include "SynTree/Type.h"
    2224#include "SynTree/Constant.h"
    2325#include "SynTree/Expression.h"
    24 #include "SynTree/Declaration.h"
    2526#include "UnimplementedError.h"
    2627#include "parseutility.h"
     
    3132ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
    3233
    33 ExpressionNode::ExpressionNode( string *name_) : ParseNode( *name_ ), argName( 0 ) {
    34         delete name_;
    35 }
     34ExpressionNode::ExpressionNode( const string *name_ ) : ParseNode( name_ ), argName( 0 ) {}
    3635
    3736ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
     
    4342}
    4443
    45 ExpressionNode * ExpressionNode::set_asArgName( std::string *aName ) {
     44ExpressionNode * ExpressionNode::set_asArgName( const std::string *aName ) {
    4645        argName = new VarRefNode( aName );
    4746        return this;
     
    5554void ExpressionNode::printDesignation( std::ostream &os, int indent ) const {
    5655        if ( argName ) {
    57                 os << string(' ', indent ) << "(designated by:  ";
     56                os << string( indent, ' ' ) << "(designated by:  ";
    5857                argName->printOneLine( os, indent );
    5958                os << ")" << std::endl;
     
    8584}
    8685
    87 //  enum ConstantNode::Type =  { Integer, Float, Character, String, Range }
    88 
    89 ConstantNode::ConstantNode( void ) : ExpressionNode(), sign( true ), longs(0), size(0) {}
    90 
    91 ConstantNode::ConstantNode( string *name_) : ExpressionNode( name_), sign( true ), longs(0), size(0) {}
    92 
    93 ConstantNode::ConstantNode( Type t, string *inVal ) : type( t ), sign( true ), longs(0), size(0) {
    94         if ( inVal ) {
    95                 value = *inVal;
    96                 delete inVal;
    97         } else {
    98                 value = "";
    99         } // if
    100 
    101         classify( value );
    102 }
    103 
    104 ConstantNode::ConstantNode( const ConstantNode &other ) : ExpressionNode( other ), type( other.type ), value( other.value ), sign( other.sign ),
    105                                                                                                                   base( other.base ), longs( other.longs ), size( other.size ) {
    106 }
    107 
    108 // for some reason, std::tolower doesn't work as an argument to std::transform in g++ 3.1
    109 inline char tolower_hack( char c ) {
    110         return std::tolower( c );
    111 }
    112 
    113 void ConstantNode::classify( std::string &str ) {
     86static inline bool checku( char c ) { return c == 'u' || c == 'U'; }
     87static inline bool checkl( char c ) { return c == 'l' || c == 'L'; }
     88static inline bool checkf( char c ) { return c == 'f' || c == 'F'; }
     89static inline bool checkx( char c ) { return c == 'x' || c == 'X'; }
     90
     91ConstantNode::ConstantNode( Type t, string *inVal ) : type( t ), value( *inVal ) {
    11492        switch ( type ) {
    115           case Integer:
    11693          case Float:
    11794                {
    118                         std::string sfx("");
    119                         char c;
    120                         int i = str.length() - 1;
    121 
    122                         while ( i >= 0 && ! isxdigit( c = str.at( i--)) )
    123                                 sfx += c;
    124 
    125                         value = str.substr( 0, i + 2 );
    126 
    127                         // get rid of underscores
    128                         value.erase( remove( value.begin(), value.end(), '_'), value.end());
    129 
    130                         std::transform( sfx.begin(), sfx.end(), sfx.begin(), tolower_hack );
    131 
    132                         if ( sfx.find("ll") != string::npos ) {
    133                                 longs = 2;
    134                         } else if ( sfx.find("l") != string::npos ) {
    135                                 longs = 1;
     95                        size_t len = value.length() - 1;
     96
     97                        btype = BasicType::Double;                                      // default
     98                        if ( checkf( value[len] ) ) {
     99                                btype = BasicType::Float;
    136100                        } // if
    137 
    138                         assert(( longs >= 0) && ( longs <= 2));
    139 
    140                         if ( sfx.find("u") != string::npos )
    141                                 sign = false;
    142 
     101                        if ( checkl( value[len] ) ) {
     102                                btype = BasicType::LongDouble;
     103                        } // if
     104                        break;
     105                }
     106          case Integer:
     107                {
     108                        static const BasicType::Kind kind[2][3] = {
     109                                { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
     110                                { BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt },
     111                        };
     112                        size_t last = value.length() - 1;                       // last character of constant
     113                        unsigned long long v;                                           // converted integral value
     114                        bool dec = true, Unsigned = false;                      // decimal, unsigned constant
     115                        int size;                                                                       // 0 => int, 1 => long, 2 => long long
     116
     117                        if ( value[0] == '0' ) {                                        // octal ?
     118                                dec = false;
     119                                if ( last != 0 && checkx( value[1] ) ) { // hex ?
     120                                        sscanf( (char *)value.c_str(), "%llx", &v );
     121                                        //printf( "%llx %llu\n", v, v );
     122                                } else {
     123                                        sscanf( (char *)value.c_str(), "%llo", &v );
     124                                        //printf( "%llo %llu\n", v, v );
     125                                } // if
     126                        } else {                                                                        // decimal ?
     127                                sscanf( (char *)value.c_str(), "%lld", &v );
     128                                //printf( "%llu %llu\n", v, v );
     129                        } // if
     130
     131                        if ( v <= INT_MAX ) {                                           // signed int
     132                                size = 0;
     133                        } else if ( v <= UINT_MAX ) {                           // unsigned int
     134                                size = 0;
     135                                if ( ! dec ) Unsigned = true;                   // unsigned
     136                        } else if ( v <= LONG_MAX ) {                           // signed long int
     137                                size = 1;
     138                        } else if ( v <= ULONG_MAX ) {                          // signed long int
     139                                size = 1;
     140                                if ( ! dec ) Unsigned = true;                   // unsigned long int
     141                        } else if ( v <= LLONG_MAX ) {                          // signed long long int
     142                                size = 2;
     143                        } else {                                                                        // signed long long int
     144                                size = 2;
     145                                if ( ! dec ) Unsigned = true;                   // unsigned long long int
     146                        } // if
     147
     148                        if ( checku( value[last] ) ) {                          // suffix 'u' ?
     149                                Unsigned = true;
     150                                if ( checkl( value[ last - 1 ] ) ) {    // suffix 'l' ?
     151                                        size = 1;
     152                                        if ( checkl( value[ last - 1 ] ) ) { // suffix 'll' ?
     153                                                size = 2;
     154                                        } // if
     155                                } // if
     156                        } else if ( checkl( value[ last ] ) ) {         // suffix 'l' ?
     157                                size = 1;
     158                                if ( checkl( value[ last - 1 ] ) ) {    // suffix 'll' ?
     159                                        size = 2;
     160                                } // if
     161                                if ( checku( value[ last - 1 ] ) ) {    // suffix 'u' ?
     162                                        Unsigned = true;
     163                                } // if
     164                        } // if
     165                        btype = kind[Unsigned][size];                           // loopup type of constant
    143166                        break;
    144167                }
    145168          case Character:
    146                 {
    147                         // remove underscores from hex and oct escapes
    148                         if ( str.substr(1,2) == "\\x")
    149                                 value.erase( remove( value.begin(), value.end(), '_'), value.end());
    150 
    151                         break;
    152                 }
    153           default:
    154                 // shouldn't be here
    155                 ;
    156         }
    157 }
     169                btype = BasicType::Char;                                                // default
     170                if ( string( "LUu" ).find( value[0] ) != string::npos ) {
     171                        // ???
     172                } // if
     173                break;
     174          case String:
     175                // array of char
     176                if ( string( "LUu" ).find( value[0] ) != string::npos ) {
     177                        if ( value[0] == 'u' && value[1] == '8' ) {
     178                                // ???
     179                        } else {
     180                                // ???
     181                        } // if
     182                } // if
     183                break;
     184        } // switch
     185} // ConstantNode::ConstantNode
    158186
    159187ConstantNode::Type ConstantNode::get_type( void ) const {
     
    161189}
    162190
    163 ConstantNode *ConstantNode::append( std::string *newValue ) {
    164         if ( newValue ) {
    165                 if ( type == String ) {
    166                         std::string temp = *newValue;
    167                         value.resize( value.size() - 1 );
    168                         value += newValue->substr(1, newValue->size());
    169                 } else
    170                         value += *newValue;
    171 
    172                 delete newValue;
    173         } // if
     191ConstantNode *ConstantNode::appendstr( const std::string *newValue ) {
     192        assert( newValue != 0 );
     193        assert( type == String );
     194
     195        //printf( "%lu \"%s\" \"%s\"\n", value.length() - 1, value.c_str(), newValue->substr( 1, newValue->length() - 2 ).c_str() );
     196        value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
     197       
     198        delete newValue;                                                                        // allocated by yacc
    174199        return this;
    175200}
    176201
    177202void ConstantNode::printOneLine( std::ostream &os, int indent ) const {
    178         os << string( indent, ' ');
     203        os << string( indent, ' ' );
    179204        printDesignation( os );
    180205
    181206        switch ( type ) {
    182207          case Integer:
    183                 os << value ;
    184                 break;
    185208          case Float:
    186209                os << value ;
     
    206229        BasicType *bt;
    207230
    208         switch ( get_type()) {
    209           case Integer:
    210                 /* Cfr. standard 6.4.4.1 */
    211                 //bt.set_kind( BasicType::SignedInt );
    212                 bt = new BasicType( q, BasicType::SignedInt );
    213                 break;
    214           case Float:
    215                 // floating-point constants are type double
    216                 bt = new BasicType( q, BasicType::Double );
    217                 break;
    218           case Character:
    219                 bt = new BasicType( q, BasicType::Char );
    220                 break;
     231        switch ( get_type() ) {
    221232          case String:
    222                 // string should probably be a primitive type
    223                 ArrayType *at;
    224                 std::string value = get_value();
    225                 at = new ArrayType( q, new BasicType( q, BasicType::Char ),
    226                                                         new ConstantExpr( Constant( new BasicType( q, BasicType::SignedInt ),
    227                                                                                                                 toString( value.size() - 1 ) ) ),  // account for '\0'
    228                                                         false, false );
    229                 return new ConstantExpr( Constant( at, value ), maybeBuild< Expression >( get_argName() ) );
     233                {
     234                        // string should probably be a primitive type
     235                        ArrayType *at = new ArrayType( q, new BasicType( q, BasicType::Char ),
     236                                                                                   new ConstantExpr(
     237                                                                                           Constant( new BasicType( q, BasicType::UnsignedInt ),
     238                                                                                                                 toString( value.size() + 1 ) ) ),  // account for '\0'
     239                                                                                   false, false );
     240                        return new ConstantExpr( Constant( at, value ), maybeBuild< Expression >( get_argName() ) );
     241                }
     242          default:
     243                bt = new BasicType( q, btype );
     244                return new ConstantExpr( Constant( bt, get_value() ), maybeBuild< Expression >( get_argName() ) );
    230245        }
    231         return new ConstantExpr(  Constant( bt, get_value()),  maybeBuild< Expression >( get_argName() ) );
    232246}
    233247
    234248VarRefNode::VarRefNode() : isLabel( false ) {}
    235249
    236 VarRefNode::VarRefNode( string *name_, bool labelp ) : ExpressionNode( name_), isLabel( labelp ) {}
     250VarRefNode::VarRefNode( const string *name_, bool labelp ) : ExpressionNode( name_ ), isLabel( labelp ) {}
    237251
    238252VarRefNode::VarRefNode( const VarRefNode &other ) : ExpressionNode( other ), isLabel( other.isLabel ) {
     
    277291}
    278292
    279 std::string OperatorNode::get_typename( void ) const{
    280         return string( OpName[ type ]);
     293const char *OperatorNode::get_typename( void ) const{
     294        return OpName[ type ];
    281295}
    282296
     
    298312}
    299313
    300 CompositeExprNode::CompositeExprNode( string *name_) : ExpressionNode( name_), function( 0 ), arguments( 0 ) {
     314CompositeExprNode::CompositeExprNode( const string *name_ ) : ExpressionNode( name_ ), function( 0 ), arguments( 0 ) {
    301315}
    302316
     
    612626void ValofExprNode::print( std::ostream &os, int indent ) const {
    613627        printDesignation( os );
    614         os << string( indent, ' ') << "Valof Expression:" << std::endl;
     628        os << string( indent, ' ' ) << "Valof Expression:" << std::endl;
    615629        get_body()->print( os, indent + 4);
    616630}
     
    657671
    658672void ForCtlExprNode::print( std::ostream &os, int indent ) const{
    659         os << string( indent,' ') << "For Control Expression -- :" << endl;
    660 
    661         os << string( indent + 2,' ' ) << "initialization:" << endl;
     673        os << string( indent,' ' ) << "For Control Expression -- :" << endl;
     674
     675        os << string( indent + 2, ' ' ) << "initialization:" << endl;
    662676        if ( init != 0 )
    663677                init->printList( os, indent + 4 );
     
    666680        if ( condition != 0 )
    667681                condition->print( os, indent + 4 );
    668         os << string( indent + 2,' ' ) << "increment: " << endl;
     682        os << string( indent + 2, ' ' ) << "increment: " << endl;
    669683        if ( change != 0 )
    670684                change->print( os, indent + 4 );
  • src/Parser/InitializerNode.cc

    ra65d92e r59db689  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 13:21:40 2015
    13 // Update Count     : 2
     12// Last Modified On : Sat Jun  6 15:49:42 2015
     13// Update Count     : 3
    1414//
    1515
     
    4848
    4949void InitializerNode::print( std::ostream &os, int indent ) const {
    50         os << std::string(indent, ' ') << "Initializer expression" << std::endl;
     50        os << std::string( indent, ' ' ) << "Initializer expression" << std::endl;
    5151}
    5252
  • src/Parser/ParseNode.cc

    ra65d92e r59db689  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun  3 11:17:58 2015
    13 // Update Count     : 4
     12// Last Modified On : Sat Jun  6 20:17:58 2015
     13// Update Count     : 23
    1414//
    1515
     
    2020int ParseNode::indent_by = 4;
    2121
    22 ParseNode::ParseNode( void ) : next( 0 ) {};
    23 ParseNode::ParseNode( string _name ) : name( _name ), next( 0 ) {}
     22ParseNode::ParseNode() : name( 0 ), next( 0 ) {};
     23ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {}
    2424
    25 ParseNode *ParseNode::set_name( string _name ) {
    26         name = _name;
    27         return this;
    28 }
    29 
    30 ParseNode *ParseNode::set_name( string *_name ) {
    31         name = *_name; // deep copy
    32         delete _name;
    33 
    34         return this;
    35 }
    36 
    37 ParseNode::~ParseNode( void ) {
     25ParseNode::~ParseNode() {
    3826        delete next;
    3927};
    4028
    41 string ParseNode::get_name( void ) {
    42         return name;
    43 }
    44 
    45 ParseNode *ParseNode::get_link( void ) const {
     29ParseNode *ParseNode::get_link() const {
    4630        return next;
    4731}
    4832
    49 ParseNode *ParseNode::get_last(void) {
     33ParseNode *ParseNode::get_last() {
    5034        ParseNode *current = this;
    5135
     
    5640}
    5741
    58 ParseNode *ParseNode::set_link( ParseNode *_next ) {
     42ParseNode *ParseNode::set_link( ParseNode *next_ ) {
    5943        ParseNode *follow;
    6044
    61         if ( _next == 0 ) return this;
     45        if ( next_ == 0 ) return this;
    6246
    6347        for ( follow = this; follow->next != 0; follow = follow->next );
    64         follow->next = _next;
     48        follow->next = next_;
    6549
    6650        return this;
    67 }
    68 
    69 const string ParseNode::get_name( void ) const {
    70         return name;
    7151}
    7252
     
    7959        if ( next ) {
    8060                next->printList( os, indent );
    81         }
     61        } // if
    8262}
    8363
  • src/Parser/ParseNode.h

    ra65d92e r59db689  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 13:30:24 2015
    13 // Update Count     : 3
     12// Last Modified On : Sat Jun  6 23:35:33 2015
     13// Update Count     : 60
    1414//
    1515
     
    2222
    2323#include "utility.h"
     24#include "SynTree/Type.h"
    2425#include "SynTree/Declaration.h"
    2526#include "UniqueName.h"
     
    3637class ParseNode {
    3738  public:
    38         ParseNode( void );
    39         ParseNode ( std::string );
    40         virtual ~ParseNode( void );
    41 
    42         ParseNode *set_name ( std::string ) ;
    43         ParseNode *set_name ( std::string * ) ;
    44 
    45         std::string get_name( void );
    46 
    47         ParseNode *get_link( void ) const;
    48         ParseNode *get_last( void );
     39        ParseNode();
     40        ParseNode( const std::string * );
     41        virtual ~ParseNode();
     42
     43        ParseNode *get_link() const;
     44        ParseNode *get_last();
    4945        ParseNode *set_link( ParseNode * );
    5046        void set_next( ParseNode *newlink ) { next = newlink; }
     
    5248        virtual ParseNode *clone() const { return 0; };
    5349
    54         const std::string get_name( void ) const;
     50        const std::string &get_name() const { return *name; }
    5551        virtual void print( std::ostream &, int indent = 0 ) const;
    5652        virtual void printList( std::ostream &, int indent = 0 ) const;
     
    5854        ParseNode &operator,( ParseNode &);
    5955  protected:
    60         std::string name;
     56        const std::string *name;
    6157        ParseNode *next;
    6258        static int indent_by;
     
    6864  public:
    6965        ExpressionNode();
    70         ExpressionNode( std::string * );
     66        ExpressionNode( const std::string * );
    7167        ExpressionNode( const ExpressionNode &other );
    7268        virtual ~ExpressionNode() {} // cannot delete asArgName because it might be referenced elsewhere
     
    7773
    7874        ExpressionNode *get_argName() const { return argName; }
    79         ExpressionNode *set_asArgName( std::string *aName );
     75        ExpressionNode *set_asArgName( const std::string *aName );
    8076        ExpressionNode *set_asArgName( ExpressionNode *aDesignator );
    8177
     
    109105        };
    110106
    111         ConstantNode( void );
    112         ConstantNode( std::string * );
    113107        ConstantNode( Type, std::string * );
    114         ConstantNode( const ConstantNode &other );
    115108
    116109        virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
    117110
    118         Type get_type( void ) const ;
     111        Type get_type() const ;
    119112        virtual void print( std::ostream &, int indent = 0) const;
    120113        virtual void printOneLine( std::ostream &, int indent = 0) const;
    121114
    122         std::string get_value() const { return value; }
    123         ConstantNode *append( std::string *newValue );
     115        const std::string &get_value() const { return value; }
     116        ConstantNode *appendstr( const std::string *newValue );
    124117
    125118        Expression *build() const;
    126119  private:
    127         void classify( std::string &);
    128120        Type type;
    129         std::string value;
    130         bool sign;
    131         short base;
    132         int longs, size;
     121        BasicType::Kind btype;
     122        std::string &value;
    133123};
    134124
     
    136126  public:
    137127        VarRefNode();
    138         VarRefNode( std::string *, bool isLabel = false );
     128        VarRefNode( const std::string *, bool isLabel = false );
    139129        VarRefNode( const VarRefNode &other );
    140130
     
    143133        virtual VarRefNode *clone() const { return new VarRefNode( *this ); }
    144134
    145         virtual void print( std::ostream &, int indent = 0) const;
    146         virtual void printOneLine( std::ostream &, int indent = 0) const;
     135        virtual void print( std::ostream &, int indent = 0 ) const;
     136        virtual void printOneLine( std::ostream &, int indent = 0 ) const;
    147137  private:
    148138        bool isLabel;
     
    183173        virtual OperatorNode *clone() const { return new OperatorNode( *this ); }
    184174
    185         Type get_type( void ) const;
    186         std::string get_typename( void ) const;
     175        Type get_type() const;
     176        const char *get_typename() const;
    187177
    188178        virtual void print( std::ostream &, int indent = 0) const;
     
    198188class CompositeExprNode : public ExpressionNode {
    199189  public:
    200         CompositeExprNode( void );
    201         CompositeExprNode( std::string * );
     190        CompositeExprNode();
     191        CompositeExprNode( const std::string * );
    202192        CompositeExprNode( ExpressionNode *f, ExpressionNode *args = 0 );
    203193        CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2 );
     
    302292        static DeclarationNode *newEnumConstant( std::string *name, ExpressionNode *constant );
    303293        static DeclarationNode *newName( std::string *);
    304         static DeclarationNode *newFromTypeGen( std::string*, ExpressionNode *params );
     294        static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params );
    305295        static DeclarationNode *newTypeParam( TypeClass, std::string *);
    306296        static DeclarationNode *newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
     
    313303        static DeclarationNode *newTuple( DeclarationNode *members );
    314304        static DeclarationNode *newTypeof( ExpressionNode *expr );
    315         static DeclarationNode *newAttr( std::string*, ExpressionNode *expr );
    316         static DeclarationNode *newAttr( std::string*, DeclarationNode *type );
     305        static DeclarationNode *newAttr( std::string *, ExpressionNode *expr );
     306        static DeclarationNode *newAttr( std::string *, DeclarationNode *type );
    317307
    318308        DeclarationNode *addQualifiers( DeclarationNode *);
     
    380370        };
    381371
    382         StatementNode( void );
    383         StatementNode( std::string );
     372        StatementNode();
     373        StatementNode( const std::string * );
    384374        StatementNode( Type, ExpressionNode *e = 0, StatementNode *s = 0 );
    385375        StatementNode( Type, std::string *target );
     
    387377
    388378
    389         ~StatementNode( void );
    390 
    391         static StatementNode  *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
     379        ~StatementNode();
     380
     381        static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
    392382
    393383        void set_control( ExpressionNode * );
     
    396386        ExpressionNode *get_control() const ;
    397387        StatementNode *get_block() const;
    398         StatementNode::Type get_type( void ) const;
    399 
    400         StatementNode *add_label( std::string * );
     388        StatementNode::Type get_type() const;
     389
     390        StatementNode *add_label( const std::string * );
    401391        std::list<std::string> *get_labels() const;
    402392
     
    429419class CompoundStmtNode : public StatementNode {
    430420  public:
    431         CompoundStmtNode( void );
    432         CompoundStmtNode( std::string * );
     421        CompoundStmtNode();
     422        CompoundStmtNode( const std::string * );
    433423        CompoundStmtNode( StatementNode * );
    434424        ~CompoundStmtNode();
     
    499489
    500490// in DeclarationNode.cc
    501 void buildList( const DeclarationNode *firstNode, std::list< Declaration *> &outputList );
     491void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList );
    502492void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList );
    503 void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList );
     493void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
    504494
    505495// in ExpressionNode.cc
  • src/Parser/StatementNode.cc

    ra65d92e r59db689  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun  5 07:43:40 2015
    13 // Update Count     : 10
     12// Last Modified On : Sat Jun  6 23:25:41 2015
     13// Update Count     : 19
    1414//
    1515
     
    3636StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    3737
    38 StatementNode::StatementNode( string name_) : ParseNode( name_), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
     38StatementNode::StatementNode( const string *name_ ) : ParseNode( name_ ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    3939
    4040StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), isCatchRest ( false ) {
     
    6767
    6868StatementNode::StatementNode( Type t, string *_target ) :
    69                 type( t ), control( 0 ), block( 0 ),   labels( 0 ), target(_target ), decl( 0 ), isCatchRest ( false ) {}
     69                type( t ), control( 0 ), block( 0 ), labels( 0 ), target(_target ), decl( 0 ), isCatchRest ( false ) {}
    7070
    7171StatementNode::~StatementNode() {
     
    125125}
    126126
    127 StatementNode *StatementNode::add_label( std::string *l ) {
     127StatementNode *StatementNode::add_label( const std::string *l ) {
    128128        if ( l != 0 ) {
    129129                if ( labels == 0 )
     
    346346}
    347347
    348 CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {
    349 }
    350 
    351 CompoundStmtNode::CompoundStmtNode( string *name_) : StatementNode(*name_), first( 0 ), last( 0 ) {
    352 }
    353 
    354 CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ): first( stmt ) {
     348CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {}
     349
     350CompoundStmtNode::CompoundStmtNode( const string *name_ ) : StatementNode( name_ ), first( 0 ), last( 0 ) {}
     351
     352CompoundStmtNode::CompoundStmtNode( StatementNode *stmt ) : first( stmt ) {
    355353        if ( first ) {
    356354                last = ( StatementNode *)( stmt->get_last());
  • src/Parser/TypeData.cc

    ra65d92e r59db689  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 15:17:56 2015
    13 // Update Count     : 4
     12// Last Modified On : Sat Jun  6 12:26:02 2015
     13// Update Count     : 8
    1414//
    1515
     
    691691                        } else {
    692692                                switch ( ret ) {
    693                                   case BasicType::LongLongSignedInt:    // PAB
     693                                  case BasicType::LongLongSignedInt:
    694694                                        ret = BasicType::LongLongUnsignedInt;
    695695                                        break;
     
    716716                        } else {
    717717                                switch ( ret ) {
    718                                   case BasicType::LongLongSignedInt:    // PAB
     718                                  case BasicType::LongLongSignedInt:
    719719                                        ret = BasicType::LongLongUnsignedInt;
    720720                                        break;
  • src/Parser/lex.cc

    ra65d92e r59db689  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 170
    385 #define YY_END_OF_BUFFER 171
     384#define YY_NUM_RULES 171
     385#define YY_END_OF_BUFFER 172
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[822] =
     393static yyconst flex_int16_t yy_accept[826] =
    394394    {   0,
    395395        0,    0,    0,    0,    0,    0,  108,  108,  111,  111,
    396       171,  169,    7,    9,    8,  130,  110,   95,  135,  138,
    397       107,  117,  118,  133,  131,  121,  132,  124,  134,  100,
    398       101,  102,  122,  123,  140,  142,  141,  143,  169,   95,
    399       115,  169,  116,  136,   95,   97,   95,   95,   95,   95,
     396      172,  170,    7,    9,    8,  131,  110,   95,  136,  139,
     397      107,  118,  119,  134,  132,  122,  133,  125,  135,  100,
     398      101,  102,  123,  124,  141,  143,  142,  144,  170,   95,
     399      116,  170,  117,  137,   95,   97,   95,   95,   95,   95,
    400400       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    401        95,  119,  139,  120,  137,    7,  169,    4,    4,  170,
    402        98,  170,   99,  108,  109,  114,  111,  112,    7,    9,
    403         0,    8,  147,  165,   95,    0,  159,  129,  152,  160,
    404       157,  144,  155,  145,  156,  154,    0,  105,    3,    0,
    405 
    406       158,  105,  103,    0,    0,  103,  103,    0,    0,  103,
    407       102,  102,  102,    0,  102,  127,  128,  126,  148,  150,
    408       146,  151,  149,    0,    0,    0,    0,    0,    0,    0,
     401       95,  120,  140,  121,  138,    7,  170,    4,    4,  171,
     402       98,  171,   99,  108,  109,  115,  111,  112,    7,    9,
     403        0,    8,  148,  166,   95,    0,  160,  130,  153,  161,
     404      158,  145,  156,  146,  157,  155,    0,  105,    3,    0,
     405
     406      159,  105,  103,    0,    0,  103,  103,    0,    0,  103,
     407      102,  102,  102,    0,  102,  128,  129,  127,  149,  151,
     408      147,  152,  150,    0,    0,    0,    0,    0,    0,    0,
    409409        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
    410       110,  107,   95,    0,    0,  162,   95,   95,   95,   95,
     410      110,  107,   95,    0,    0,  163,   95,   95,   95,   95,
    411411       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    412412       95,   95,   36,   95,   95,   95,   95,   95,   95,   95,
    413413       95,   95,   95,   53,   95,   95,   95,   95,   95,   95,
    414        95,   95,   95,   95,   95,   95,   95,   95,  161,  153,
    415         7,    0,    0,    0,    2,    0,    5,   98,    0,    0,
    416 
    417         0,  108,  113,  113,    0,    0,    0,  111,    0,    0,
     414       95,   95,   95,   95,   95,   95,   95,   95,   95,  162,
     415      154,    7,    0,    0,    0,    2,    0,    5,   98,    0,
     416
     417        0,    0,  108,    0,  114,  113,  113,    0,    0,    0,
     418      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     419        0,    0,    0,    0,    0,    0,  126,  105,    0,  105,
     420        0,    0,    6,    0,  103,    0,    0,    0,  105,    0,
     421      103,  103,  103,  103,    0,  104,    0,    0,  102,  102,
     422      102,  102,    0,  164,  165,    0,  168,  167,    0,    0,
     423        0,   96,    0,    0,    0,    0,    0,    0,    0,   95,
     424       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     425       95,   95,   95,   95,   95,   95,   95,   95,   14,   95,
     426       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     427
     428       95,   95,   95,   95,   95,   47,   95,   95,   95,   60,
     429       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     430       95,   95,   82,   95,   95,   95,   95,   95,   95,   95,
     431        0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
     432        0,    0,    0,    0,  113,    0,    0,  169,    0,    0,
     433        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     434      105,    0,  103,  103,    0,    0,  104,  104,    0,  104,
     435        0,  104,  102,  102,    0,    0,    0,    0,    0,    0,
     436        0,    0,    0,    0,   95,   95,   95,   95,   95,   95,
     437       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     438
     439       95,   95,   95,   95,   95,   95,   20,   95,   23,   95,
     440       25,   95,   95,   95,   95,   95,   95,   39,   40,   95,
     441       95,   95,   95,   95,   95,   95,   52,   95,   63,   95,
     442       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
     443       83,   95,   95,   90,   95,   95,    0,    0,    0,    0,
    418444        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    419         0,    0,    0,  125,  105,    0,  105,    0,    0,    6,
    420         0,  103,    0,    0,    0,  105,    0,  103,  103,  103,
    421       103,    0,  104,    0,    0,  102,  102,  102,  102,    0,
    422       163,  164,    0,  167,  166,    0,    0,    0,   96,    0,
    423         0,    0,    0,    0,    0,    0,   95,   95,   95,   95,
     445      113,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     446        0,    0,    0,  104,  104,    0,  106,    0,  104,  104,
     447        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     448        0,    0,    0,   95,   95,   21,   95,   95,   95,   95,
     449
     450       95,   95,   95,   15,   95,   95,   95,   95,   95,   95,
     451       95,   95,   95,   95,   95,   95,   95,   22,   24,   95,
     452       30,   95,   95,   95,   95,   38,   95,   95,   95,   45,
     453       95,   95,   50,   95,   95,   95,   95,   95,   71,   95,
     454       95,   95,   95,   95,   81,   95,   95,   88,   95,   95,
     455       94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     456        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     457      106,    0,    0,  104,  106,  106,    0,  104,    0,    0,
     458        0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
    424459       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    425        95,   95,   95,   95,   95,   14,   95,   95,   95,   95,
    426        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    427 
    428        95,   95,   47,   95,   95,   95,   60,   95,   95,   95,
    429        95,   95,   95,   95,   95,   95,   95,   95,   95,   82,
    430        95,   95,   95,   95,   95,   95,    0,    0,    0,    0,
    431         0,    0,    0,    0,  113,    0,    0,    0,    0,    0,
    432       113,    0,    0,  168,    0,    0,    0,    0,    0,    0,
    433         0,    0,  105,    0,    0,    0,  105,    0,  103,  103,
    434         0,    0,  104,  104,    0,  104,    0,  104,  102,  102,
     460
     461       95,   95,   95,   95,   95,   55,   95,   95,   95,   95,
     462       95,   95,   95,   26,   95,   95,   95,   37,   42,   95,
     463       95,   48,   95,   57,   64,   95,   95,   70,   72,   75,
     464       76,   78,   79,   95,   85,   95,   95,    0,    1,    0,
     465        0,    0,    0,    0,    0,   98,    0,    0,    0,  113,
     466        0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
     467        0,    0,    0,    0,    0,   95,   95,   17,   95,   95,
     468       95,   95,   95,   95,   95,   16,   95,   95,   31,   95,
     469       95,   95,   95,   95,   95,   95,   95,   95,   95,   33,
     470       95,   35,   95,   44,   49,   95,   95,   84,   95,   95,
     471
    435472        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    436        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    437        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    438 
    439        95,   95,   20,   95,   23,   95,   25,   95,   95,   95,
    440        95,   95,   95,   39,   40,   95,   95,   95,   95,   95,
    441        95,   95,   52,   95,   63,   95,   95,   95,   95,   95,
    442        95,   95,   95,   95,   95,   95,   83,   95,   95,   90,
    443        95,   95,    0,    0,    0,    0,    0,    0,    0,    0,
    444         0,    0,    0,    0,    0,    0,  113,    0,    0,    0,
    445         0,    0,  105,    0,    0,    0,    0,    0,    0,  104,
    446       104,    0,  106,    0,  104,  104,    0,    0,    0,    0,
    447         0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
    448        95,   21,   95,   95,   95,   95,   95,   95,   95,   15,
    449 
    450        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    451        95,   95,   95,   22,   24,   95,   30,   95,   95,   95,
    452        95,   38,   95,   95,   95,   45,   95,   95,   50,   95,
    453        95,   95,   95,   95,   71,   95,   95,   95,   95,   95,
    454        81,   95,   95,   88,   95,   95,   94,    0,    0,    0,
     473        0,    0,    0,   10,   11,   27,   51,   95,   95,   95,
     474       95,   95,   95,   95,   95,   95,   95,   56,   58,   61,
     475       95,   95,   73,   86,   95,   34,   43,   66,   67,   89,
     476       91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     477        0,    0,    0,   95,   65,   95,   95,   12,   95,   28,
     478       32,   95,   95,   95,   62,   95,   95,   95,   95,    0,
    455479        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    456         0,    0,    0,    0,    0,    0,  106,    0,    0,  104,
    457       106,  106,    0,  104,    0,    0,    0,    0,    0,    0,
    458         0,    0,    0,    0,   95,    0,   95,   95,   95,   95,
    459        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    460 
    461        95,   55,   95,   95,   95,   95,   95,   95,   95,   26,
    462        95,   95,   95,   37,   42,   95,   95,   48,   95,   57,
    463        64,   95,   95,   70,   72,   75,   76,   78,   79,   95,
    464        85,   95,   95,    0,    1,    0,    0,    0,    0,    0,
    465         0,   98,    0,    0,    0,  113,    0,    0,    0,    0,
    466       106,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    467         0,   95,   95,   17,   95,   95,   95,   95,   95,   95,
    468        95,   16,   95,   95,   31,   95,   95,   95,   95,   95,
    469        95,   95,   95,   95,   95,   33,   95,   35,   95,   44,
    470        49,   95,   95,   84,   95,   95,    0,    0,    0,    0,
    471 
    472         0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
    473        11,   27,   51,   95,   95,   95,   95,   95,   95,   95,
    474        95,   95,   95,   56,   58,   61,   95,   95,   73,   86,
    475        95,   34,   43,   66,   67,   89,   91,    0,    0,    0,
    476         0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
    477        65,   95,   95,   12,   95,   28,   32,   95,   95,   95,
    478        62,   95,   95,   95,   95,    0,    0,    0,    0,    0,
    479         0,    0,    0,    0,    0,    0,    0,    0,   54,   95,
    480        95,   95,   95,   95,   95,   46,   59,   68,   74,   87,
    481        92,    0,    0,    0,    0,    0,    0,    0,    0,   95,
    482 
    483        95,   13,   18,   29,   95,   95,   95,    0,    0,   95,
    484        95,   95,   95,   69,   93,   95,   80,   19,   41,   77,
    485         0
     480        0,    0,   54,   95,   95,   95,   95,   95,   95,   46,
     481       59,   68,   74,   87,   92,    0,    0,    0,    0,    0,
     482
     483        0,    0,    0,   95,   95,   13,   18,   29,   95,   95,
     484       95,    0,    0,   95,   95,   95,   95,   69,   93,   95,
     485       80,   19,   41,   77,    0
    486486    } ;
    487487
     
    522522        1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
    523523        4,    1,    1,    5,    1,    1,    1,    1,    1,    1,
    524         6,    1,    7,    7,    7,    7,    8,    8,    1,    1,
    525         1,    1,    1,    9,    1,   10,   10,   10,   10,   10,
    526        10,    4,    4,   11,    4,   12,    4,    4,   13,    4,
    527         1,   14,    1,    1,   15,    1,   16,   16,   10,   10,
    528        16,   16,    4,    4,    4,    4,   11,    4,   17,    4,
    529        12,   17,    4,   17,   13,   17,    4,   17,    4,    4,
     524        6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
     525        1,    1,    1,    1,    1,    8,    8,    8,    8,    8,
     526        8,    4,    4,    9,    4,   10,    4,    4,    9,    4,
     527        1,   11,    1,    1,   12,    1,    8,    8,    8,    8,
     528        8,    8,    4,    4,    4,    4,    9,    4,    4,    4,
     529       10,    4,    4,    4,    9,    4,    4,    4,    4,    4,
    530530        1,    1,    1,    1
    531531    } ;
    532532
    533 static yyconst flex_int16_t yy_base[996] =
     533static yyconst flex_int16_t yy_base[999] =
    534534    {   0,
    535         0,   83, 2185, 2183,   93,    0,  175,  176,  177,  178,
    536      2195, 3520,  189, 3520,  195,   54, 3520, 2142,   59,  171,
    537      3520, 3520, 3520,   55,  186, 3520,  189,  187,  202,  214,
    538       272,    0, 2160, 3520,  214, 2160,  150,  340, 2138,  222,
    539      3520,  157, 3520, 2154,  277, 3520,  192,  133,  196,  198,
    540       204,  271,  155,  218,  181,  200,  266,  238,  210,  224,
    541       282, 3520,  223, 3520, 2151,  372,  361, 3520, 2162, 3520,
    542      2131,  229, 3520,    0, 3520,  374,    0, 3520,  399, 3520,
    543       405,  411, 3520,  445, 2130,  234, 3520, 3520, 3520, 3520,
    544      3520, 2146, 3520, 2141, 3520, 3520, 2153,  505, 3520, 2170,
    545 
    546      3520,  550,  401,  414,  462,  262,  240,  280,  443,  380,
    547         0,  305,  241,  335,  399, 3520, 3520, 3520, 2140, 3520,
    548      3520, 3520, 2138, 2134,  215,  310, 2149,  327,  333,  349,
    549       361,  399,  400,  411, 2130,  427, 2080,  436, 2110,  317,
    550      3520, 3520,  483, 2105, 2100, 3520,  439,  376,  431,  420,
    551       368,  432,  421,  448,  557,  442,  451,  453,  463,  452,
    552       455,  398,  251,  459,  466,  344,  467,  456,  474,  464,
    553       298,  468,  488, 2102,  490,  492,  496,  506,  498,  502,
    554       499,  518,  529,  507,  532,  533,  535,  543, 3520, 3520,
    555       632,  625, 2150,  638, 3520,  665, 3520, 2100,  514, 2095,
    556 
    557      2091,    0, 3520,  631, 2090, 2089, 2088,    0, 2110,  565,
    558       581,  589,  626,  639,  643,  647,  648,  651, 2106,  662,
    559       663, 2080, 2079, 3520,  675,  686, 3520, 2078, 2129, 3520,
    560       677,    0,  571,  700,  722,  739,  750,  571, 3520, 2086,
    561      2059,    0,  738, 2104,  772,  594, 3520, 2080, 2056,  791,
    562      3520, 3520, 2088, 3520, 3520,  673,  688, 2067, 2063,  659,
    563      2059, 2058, 2057,    0, 2055,    0,  691,  555,  681,  536,
    564       541,  700,  717,  701,  719,  755,  702,  708,  736,  752,
    565       733,  750,  727,  729,  760, 2053,  771,  774,  772,  773,
    566       782,  783,  784,  785,  618,  788,  786,  787,  791,  793,
    567 
    568       792,  799,  809,  796,  798,  810, 2052,  811,  812,  813,
    569       817,  818,  820,  819,  821,  824,  825,  828,  829, 2051,
    570       833,  834,  832,  835,  844,  838,  904,  726, 2047, 2045,
    571      2040,    0, 2039,    0,  891,  895, 2038,    0, 2037,    0,
    572      2035,    0, 2011, 3520,  876,  890, 1989, 1986,    0, 1983,
    573         0,  902,  908,  930,  914,  953,  959,  965, 3520, 3520,
    574       952,  958,  973,  922, 1027,  845, 1012,  898, 3520, 3520,
    575      1982, 1981, 1980,    0, 1979,    0, 1977,    0, 1972,    0,
    576       899,  891,  893,  944,  949,  909,  950,  960,  964,  953,
    577       978,  983,  991,  989,  972,  979,  997,  851,  871, 1010,
    578 
    579      1013, 1014, 1974, 1020, 1973, 1016, 1972,  922, 1017, 1024,
    580      1018, 1023, 1036, 1970, 1966, 1022, 1025, 1040, 1026, 1043,
    581      1044, 1050, 1965, 1046, 1964, 1049, 1052, 1051, 1054, 1053,
    582      1056, 1060, 1057, 1061, 1062, 1066, 1076, 1079, 1077, 1963,
    583      1067, 1081, 1129, 1959,    0, 1957,    0, 1952,    0, 1951,
    584         0, 1126, 1950,    0, 1949,    0, 1947, 1942, 1941,    0,
    585      1940,    0, 1130, 1136, 1181, 1123, 1192, 1124, 1101, 1090,
    586      3520, 1198, 1204, 1215, 1950, 1925, 1932, 1931,    0, 1930,
    587         0, 1929,    0, 1927,    0, 1923,    0, 1922,    0, 1114,
    588      1116, 1924, 1115, 1121, 1123, 1137, 1134, 1144, 1082,  500,
    589 
    590      1162, 1185, 1192, 1083, 1194, 1124, 1148,  164, 1197, 1198,
    591      1200, 1201, 1203, 1923, 1922, 1202, 1920, 1205, 1209, 1212,
    592      1215, 1914, 1216, 1138, 1221, 1909, 1222, 1218, 1904, 1225,
    593      1229, 1228, 1230, 1232, 1903, 1239, 1235, 1241, 1240, 1242,
    594      1902, 1244, 1246, 1901, 1251, 1252, 1900, 1947, 1873,    0,
    595      1872,    0, 1871,    0, 1870,    0, 1868,    0, 1863,    0,
    596      1862,    0, 1861,    0, 1298, 1304, 1310, 1321, 1860, 3520,
    597      1332, 3520, 1356, 3520, 1858,    0, 1853,    0, 1852,    0,
    598      1851,    0,    0,    0, 1853,    0, 1318, 1257, 1258, 1298,
    599      1300, 1291, 1259, 1255, 1309,  912, 1333, 1319, 1288, 1322,
    600 
    601      1290, 1337, 1338, 1343, 1341, 1344, 1349, 1350, 1351, 1851,
    602      1352, 1353, 1357, 1846, 1845, 1360, 1354, 1844, 1361, 1843,
    603      1841, 1363, 1362, 1836, 1835, 1834, 1833, 1831, 1826, 1365,
    604      1825, 1377, 1367, 1873, 3520, 1820,    0, 1818,    0,    0,
    605         0, 1816,    0,    0,    0, 3520,    0,    0,    0,    0,
    606      1416, 1422, 1467, 1812,    0, 1811,    0,    0,    0,    0,
    607      1810, 1383, 1399, 1811, 1384, 1400, 1401, 1402, 1412, 1413,
    608      1385, 1806, 1417, 1418, 1421, 1428, 1448, 1430, 1435, 1454,
    609      1447, 1445, 1451, 1436, 1452, 1805, 1453, 1804, 1434, 1803,
    610      1801, 1455, 1456, 1796, 1460, 1463,    0,    0, 1792, 1791,
    611 
    612      1790, 1788, 1508,    0, 1777, 1774, 1773, 1769, 1768, 1770,
    613      1769, 1767, 1743, 1466, 1471, 1464, 1461, 1467, 1473, 1474,
    614      1487, 1485, 1516, 1732, 1491, 1731, 1492, 1497, 1499, 1503,
    615      1493, 1727, 1724, 1723, 1722, 1720, 1718, 1713, 1708, 1699,
    616      1696, 1686, 1683, 1682, 1655, 1654, 1653, 1652, 1651, 1501,
    617      1644, 1505, 1507, 1509, 1510, 1514, 1641, 1513, 1540, 1518,
    618      1640, 1519, 1520, 1524, 1529, 1583, 1582, 1581, 1580, 1579,
    619      1578, 1577, 1576, 1575, 1574, 1573, 1572, 1571, 1573, 1522,
    620      1530, 1533, 1535, 1539, 1534, 1571, 1570, 1545, 1370, 1315,
    621      1546, 1258, 1257, 1129, 1082,  984,  983,  982,  944, 1547,
    622 
    623      1550,  916, 1554,  758, 1558, 1559, 1560,  677,  676, 1552,
    624      1553, 1564, 1566,  635,  595, 1565,  544,  419,  236,  165,
    625      3520, 1639, 1656, 1673, 1687, 1701, 1718, 1732, 1749, 1764,
    626      1781, 1798, 1810, 1823, 1834, 1844, 1854, 1864, 1874, 1884,
    627      1894, 1904, 1914, 1930, 1941, 1952, 1963, 1973, 1983, 1993,
    628      2003, 2013, 2023, 2036, 2053, 2070, 2081, 2091, 2101, 2111,
    629      2121, 2131, 2141, 2151, 2161, 2171, 2181, 2191, 2201, 2211,
    630      2221, 2231, 2241, 2251, 2262, 2272, 2282, 2292, 2302, 2312,
    631      2322, 2332, 2342, 2352, 2362, 2375, 2392, 2403, 2413, 2423,
    632      2433, 2443, 2453, 2463, 2473, 2483, 2493, 2503, 2513, 2523,
    633 
    634      2533, 2543, 2553, 2563, 2573, 2583, 2593, 2603, 2613, 2623,
    635      2633, 2643, 2653, 2663, 2673, 2683, 2693, 2703, 2716, 2733,
    636      2744, 2754, 2764, 2774, 2784, 2794, 2804, 2814, 2824, 2834,
    637      2844, 2854, 2864, 2874, 2884, 2894, 2904, 2914, 2924, 2934,
    638      2944, 2954, 2964, 2974, 2984, 2994, 3004, 3017, 3028, 3044,
    639      3055, 3065, 3075, 3085, 3095, 3105, 3118, 3129, 3139, 3149,
    640      3159, 3169, 3179, 3189, 3199, 3209, 3219, 3229, 3239, 3249,
    641      3259, 3269, 3282, 3293, 3303, 3313, 3323, 3333, 3343, 3353,
    642      3363, 3373, 3383, 3393, 3403, 3413, 3423, 3433, 3443, 3453,
    643      3463, 3473, 3483, 3493, 3503
     535        0,   83, 2266, 2265,   93,    0,  175,  176,  177,  178,
     536     2281, 2568,  189, 2568,  195,   54, 2568, 2223,   59,  171,
     537     2568, 2568, 2568,   55,  186, 2568,  189,  187,  202,  214,
     538      272,    0, 2241, 2568,  214, 2241,  150,  340, 2215,  222,
     539     2568,  157, 2568, 2234,  277, 2568,  192,  133,  196,  198,
     540      204,  271,  155,  218,  181,  200,  266,  238,  337,  224,
     541      227, 2568,  223, 2568, 2231,  372,  400, 2568, 2237, 2568,
     542     2206,  213, 2568,    0, 2568,  427,    0, 2568,  363, 2568,
     543      381,  393, 2568,  498, 2205,  229, 2568, 2568, 2568, 2568,
     544     2568, 2217, 2568, 2216, 2568, 2568, 2228,  558, 2568, 2240,
     545
     546     2568,  603,  385,  443,  419,  259,  239,  280,  399,  406,
     547        0,  305,  240,  335,  411, 2568, 2568, 2568, 2210, 2568,
     548     2568, 2568, 2209, 2188,  215,  277, 2203,  310,  383,  384,
     549      327,  425,  380,  399, 2180,  448, 2130,  458, 2160,  288,
     550     2568, 2568,  486, 2151, 2150, 2568,  420,  423,  439,  456,
     551      445,  455,  460,  329,  483,  469,  462,  467,  480,  494,
     552      396,  471,  472,  487,  470,  513,  489,  506,  508,  509,
     553      386,  510,  516, 2152,  520,  522,  518,  541,  526,  543,
     554      540,  551,  549,  553,  565,  598,  572,  581,  557, 2568,
     555     2568,  669,  659, 2195,  686, 2568,  692, 2568, 2145,  559,
     556
     557     2141, 2135,    0,  649, 2568, 2568,  679, 2134, 2133, 2127,
     558        0, 2149,  535,  606,  607,  674,  635,  625,  646,  664,
     559      689, 2146,  692,  693, 2119, 2118, 2568,  712,  723, 2568,
     560     2117, 2165, 2568,  714,    0,  555,  705,  759,  765,  776,
     561      593, 2568, 2123, 2099,    0,  784, 2141,  787,  632, 2568,
     562     2116, 2087,  798, 2568, 2568, 2119, 2568, 2568,  710,  725,
     563     2099, 2094,  720, 2090, 2089, 2085,    0, 2084,    0,  712,
     564      548,  710,  766,  767,  597,  745,  711,  777,  764,  788,
     565      720,  783,  792,  713,  639,  789,  611,  793, 2086,  794,
     566      791,  795,  810,  800,  805,  813,  814,  361,  818,  815,
     567
     568      816,  821,  825,  822,  826,  828,  829,  836,  838, 2080,
     569      841,  842,  843,  839,  844,  845,  846,  849,  847,  853,
     570      855,  860, 2079,  859,  905,  864,  866,  872,  870,  871,
     571      933,  930, 2075, 2069, 2068,    0, 2067,    0,  920,  924,
     572     2061,    0, 2060,    0, 2059,    0, 2074, 2568,  919,  920,
     573     2054, 2051,    0, 2045,    0,  935,  941,  953,  963,  974,
     574      986,  996, 2568, 2568,  960,  961, 1013,  989, 1047,  926,
     575     1045,  968, 2568, 2568, 2044, 2043, 2037,    0, 2036,    0,
     576     2035,    0, 2014,    0,  874,  873,  987,  903,  931,  932,
     577      984,  920,  994,  995,  974,  976, 1009, 1024, 1017,  992,
     578
     579     1029, 1027,  952, 1030, 1034, 1040, 2016, 1031, 2011, 1047,
     580     2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052,
     581     1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078,
     582     1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099,  583,
     583     1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991,    0, 1990,
     584        0, 1984,    0, 1983,    0, 1149, 1982,    0, 1978,    0,
     585     1977, 1976, 1972,    0, 1971,    0, 1156, 1162, 1207, 1121,
     586     1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954,
     587     1959, 1957,    0, 1953,    0, 1951,    0, 1945,    0, 1944,
     588        0, 1943,    0, 1125, 1144, 1940, 1146, 1149, 1147, 1153,
     589
     590     1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225,
     591     1226,  164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235,
     592     1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930,
     593     1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264,
     594      709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279,
     595     1915, 1963, 1905,    0, 1904,    0, 1903,    0, 1897,    0,
     596     1896,    0, 1895,    0, 1891,    0, 1890,    0, 1322, 1328,
     597     1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885,    0,
     598     1884,    0, 1883,    0, 1850,    0,    0,    0, 1852,    0,
     599     1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336,
     600
     601     1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314,
     602     1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381,
     603     1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831,
     604     1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793,
     605        0, 1792,    0,    0,    0, 1791,    0,    0,    0, 2568,
     606        0,    0,    0,    0, 1446, 1452, 1497, 1787,    0, 1786,
     607        0,    0,    0,    0, 1782, 1408, 1430, 1784, 1410, 1432,
     608     1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413,
     609     1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779,
     610     1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486,
     611
     612        0,    0, 1768, 1764, 1763, 1762, 1537,    0, 1758, 1757,
     613     1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499,
     614     1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737,
     615     1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707,
     616     1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653,
     617     1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542,
     618     1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608,
     619     1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597,
     620     1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286,
     621     1285, 1575, 1188, 1158, 1576, 1001,  997,  950,  901,  753,
     622
     623      752,  642,  556, 1577, 1580,  519, 1584,  475, 1588, 1589,
     624     1590,  471,  407, 1582, 1583, 1594, 1596,  353,  298, 1595,
     625      274,  234,  233,  165, 2568, 1669, 1681, 1693, 1702, 1711,
     626     1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802,
     627     1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866,
     628     1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929,
     629     1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973,
     630     1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022,
     631     2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075,
     632     2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119,
     633
     634     2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163,
     635     2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203,
     636     2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256,
     637     2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296,
     638     2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336,
     639     2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384,
     640     2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412,
     641     2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451,
     642     2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507,
     643     2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555
    644644
    645645    } ;
    646646
    647 static yyconst flex_int16_t yy_def[996] =
     647static yyconst flex_int16_t yy_def[999] =
    648648    {   0,
    649       821,    1,  822,  822,  821,    5,  823,  823,  824,  824,
    650       821,  821,  821,  821,  821,  821,  821,  825,  821,  821,
    651       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    652       821,   31,  821,  821,  821,  821,  821,  821,  826,  825,
    653       821,  821,  821,  821,  825,  821,  825,  825,  825,  825,
     649      825,    1,  826,  826,  825,    5,  827,  827,  828,  828,
     650      825,  825,  825,  825,  825,  825,  825,  829,  825,  825,
    654651      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    655       825,  821,  821,  821,  821,  821,  827,  821,  821,  821,
    656       828,  821,  821,  829,  821,  830,  831,  821,  821,  821,
    657       821,  821,  821,  821,  825,  821,  821,  821,  821,  821,
    658       821,  821,  821,  821,  821,  821,  821,  821,  821,  832,
    659 
    660       821,  821,   30,  821,  821,  821,  821,  833,   30,  821,
    661        31,  821,  821,   31,  821,  821,  821,  821,  821,  821,
    662       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    663       821,  821,  821,  821,  821,  821,  821,  821,  834,  821,
    664       821,  821,  825,  835,  836,  821,  825,  825,  825,  825,
     652      825,   31,  825,  825,  825,  825,  825,  825,  830,  829,
     653      825,  825,  825,  825,  829,  825,  829,  829,  829,  829,
     654      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
     655      829,  825,  825,  825,  825,  825,  831,  825,  825,  825,
     656      832,  825,  825,  833,  825,  825,  834,  825,  825,  825,
     657      825,  825,  825,  825,  829,  825,  825,  825,  825,  825,
     658      825,  825,  825,  825,  825,  825,  825,  825,  825,  835,
     659
     660      825,  825,   30,  825,  825,  825,  825,  836,   30,  825,
     661       31,  825,  825,   31,  825,  825,  825,  825,  825,  825,
     662      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     663      825,  825,  825,  825,  825,  825,  825,  825,  837,  825,
     664      825,  825,  829,  838,  839,  825,  829,  829,  829,  829,
     665      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
     666      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
     667      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
     668      829,  829,  829,  829,  829,  829,  829,  829,  829,  825,
     669      825,  825,  831,  831,  831,  825,  831,  825,  832,  825,
     670
     671      840,  841,  833,  825,  825,  825,  825,  842,  843,  844,
     672      834,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     673      825,  825,  825,  825,  845,  846,  825,  825,  825,  825,
     674      228,  847,  825,  825,  103,  103,  825,  825,  825,  825,
     675      825,  825,  825,  825,  848,  849,  850,  825,  825,  825,
     676      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     677      825,  837,  825,  851,  852,  853,  854,  855,  856,  857,
     678      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     679      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     680      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     681
     682      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     683      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     684      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     685      858,  859,  860,  861,  862,  863,  864,  865,  825,  825,
     686      866,  867,  868,  869,  870,  871,  825,  825,  825,  825,
     687      825,  872,  873,  874,  875,  825,  825,  825,  825,  825,
     688      825,  825,  825,  825,  876,  877,  878,  825,  825,  825,
     689      878,  825,  825,  825,  879,  880,  881,  882,  883,  884,
     690      885,  886,  887,  888,  889,  889,  889,  889,  889,  889,
     691      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     692
     693      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     694      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     695      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     696      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
     697      889,  889,  889,  889,  889,  889,  890,  891,  892,  893,
     698      894,  895,  896,  897,  898,  825,  899,  900,  901,  902,
     699      903,  903,  904,  905,  906,  907,  825,  825,  825,  908,
     700      825,  908,  825,  825,  825,  825,  825,  825,  825,  825,
     701      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
     702      919,  920,  921,  922,  922,  922,  922,  922,  922,  922,
     703
     704      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     705      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     706      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     707      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     708      922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
     709      922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
     710      932,  933,  934,  935,  936,  937,  938,  939,  825,  825,
     711      825,  825,  940,  825,  825,  825,  825,  825,  941,  942,
     712      943,  944,  945,  946,  947,  948,  949,  950,  951,  952,
     713      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     714
     715      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     716      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     717      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     718      951,  951,  951,  951,  951,  951,  951,  953,  825,  954,
     719      955,  956,  957,  958,  959,  960,  961,  962,  963,  825,
     720      964,  965,  966,  967,  825,  825,  825,  968,  969,  970,
     721      971,  972,  973,  974,  975,  976,  976,  976,  976,  976,
     722      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     723      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     724      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     725
     726      977,  978,  956,  979,  980,  981,  825,  982,  968,  970,
     727      983,  984,  975,  976,  976,  976,  976,  976,  976,  976,
     728      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     729      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
     730      976,  985,  986,  979,  987,  980,  988,  981,  989,  990,
     731      983,  991,  984,  976,  976,  976,  976,  976,  976,  976,
     732      976,  976,  976,  976,  976,  976,  976,  976,  976,  992,
     733      985,  993,  986,  994,  987,  995,  988,  996,  989,  997,
     734      990,  991,  976,  976,  976,  976,  976,  976,  976,  976,
     735      976,  976,  976,  976,  976,  998,  992,  993,  994,  995,
     736
     737      970,  996,  997,  976,  976,  976,  976,  976,  976,  976,
     738      976,  998,  970,  976,  976,  976,  976,  976,  976,  976,
     739      976,  976,  976,  976,    0,  825,  825,  825,  825,  825,
    665740      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    666741      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    667742      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    668       825,  825,  825,  825,  825,  825,  825,  825,  821,  821,
    669       821,  827,  827,  827,  821,  827,  821,  828,  821,  837,
    670 
    671       838,  829,  821,  821,  839,  840,  841,  831,  821,  821,
    672       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    673       821,  842,  843,  821,  821,  821,  821,  225,  844,  821,
    674       821,  103,  103,  821,  821,  821,  821,  821,  821,  821,
    675       821,  845,  846,  847,  821,  821,  821,  821,  821,  821,
    676       821,  821,  821,  821,  821,  821,  821,  821,  834,  821,
    677       848,  849,  850,  851,  852,  853,  854,  854,  854,  854,
    678       854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
    679       854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
    680       854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
    681 
    682       854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
    683       854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
    684       854,  854,  854,  854,  854,  854,  855,  856,  857,  858,
    685       859,  860,  861,  862,  821,  821,  863,  864,  865,  866,
    686       867,  868,  821,  821,  821,  821,  821,  869,  870,  871,
    687       872,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    688       873,  874,  875,  821,  821,  821,  875,  821,  821,  821,
    689       876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
    690       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    691       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    692 
    693       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    694       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    695       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    696       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    697       886,  886,  887,  888,  889,  890,  891,  892,  893,  894,
    698       895,  821,  896,  897,  898,  899,  900,  900,  901,  902,
    699       903,  904,  821,  821,  821,  905,  821,  905,  821,  821,
    700       821,  821,  821,  821,  821,  821,  906,  907,  908,  909,
    701       910,  911,  912,  913,  914,  915,  916,  917,  918,  919,
    702       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    703 
    704       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    705       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    706       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    707       919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
    708       919,  919,  919,  919,  919,  919,  919,  920,  921,  922,
    709       923,  924,  925,  926,  927,  928,  929,  930,  931,  932,
    710       933,  934,  935,  936,  821,  821,  821,  821,  937,  821,
    711       821,  821,  821,  821,  938,  939,  940,  941,  942,  943,
    712       944,  945,  946,  947,  948,  949,  948,  948,  948,  948,
    713       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    714 
    715       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    716       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    717       948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
    718       948,  948,  948,  950,  821,  951,  952,  953,  954,  955,
    719       956,  957,  958,  959,  960,  821,  961,  962,  963,  964,
    720       821,  821,  821,  965,  966,  967,  968,  969,  970,  971,
    721       972,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    722       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    723       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    724       973,  973,  973,  973,  973,  973,  974,  975,  953,  976,
    725 
    726       977,  978,  821,  979,  965,  967,  980,  981,  972,  973,
    727       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    728       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    729       973,  973,  973,  973,  973,  973,  973,  982,  983,  976,
    730       984,  977,  985,  978,  986,  987,  980,  988,  981,  973,
    731       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    732       973,  973,  973,  973,  973,  989,  982,  990,  983,  991,
    733       984,  992,  985,  993,  986,  994,  987,  988,  973,  973,
    734       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    735       973,  995,  989,  990,  991,  992,  967,  993,  994,  973,
    736 
    737       973,  973,  973,  973,  973,  973,  973,  995,  967,  973,
    738       973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
    739         0,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    740       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    741       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    742       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    743       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    744       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    745       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    746       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    747 
    748       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    749       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    750       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    751       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    752       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    753       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    754       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    755       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    756       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    757       821,  821,  821,  821,  821
     743      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     744      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     745      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     746      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     747
     748      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     749      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     750      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     751      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     752      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     753      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     754      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     755      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     756      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     757      825,  825,  825,  825,  825,  825,  825,  825
    758758
    759759    } ;
    760760
    761 static yyconst flex_int16_t yy_nxt[3605] =
     761static yyconst flex_int16_t yy_nxt[2653] =
    762762    {   0,
    763763       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    765765       28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
    766766       35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
    767        18,   18,   18,   40,   18,   18,   18,   18,   18,   18,
     767       18,   18,   18,   40,   18,   18,   18,   18,   40,   18,
    768768       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
    769769       51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
     
    780780       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    781781       71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
    782        78,  122,  123,   89,   86,   78,   78,  604,   75,   75,
     782       78,  122,  123,   89,   86,   78,   78,  608,   75,   75,
    783783       79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
    784784
     
    787787       95,   96,   84,  100,  173,  117,   76,   76,   76,   76,
    788788      141,  145,   86,  101,  102,  142,  103,  103,  103,  103,
    789       104,  104,  118,   86,  119,  120,  253,   86,  254,   86,
    790       176,   86,  159,  105,  189,   86,  177,  106,  162,  160,
    791       178,   86,  107,  108,  156,  161,  157,  163,  109,   86,
    792       165,  164,  166,   86,  105,   86,  143,  200,  186,  174,
    793       110,  167,  222,  240,  248,  141,  175,   86,  107,   86,
    794       142,  108,  102,  187,  111,  111,  111,  111,  111,  111,
    795 
    796       242,  183,   86,  201,  190,  238,  241,  249,  223,  184,
    797       239,  105,  147,  148,  149,  112,  185,   86,  150,  151,
    798       113,  152,   86,  153,  154,  295,  114,  168,   86,  179,
    799       180,  155,  105,   86,  244,  169,  239,  170,  115,  181,
    800       171,  253,  182,  254,  172,  188,  113,  124,  246,   86,
    801       255,  125,  126,  247,  127,  821,  128,  129,  253,  130,
    802       254,  131,  194,  195,  253,  261,  254,  194,  255,  303,
    803       132,  133,  134,  191,   80,   81,   81,   81,  191,  247,
    804       253,  192,  254,  196,  196,  196,  196,  196,  196,  250,
    805       135,  262,  253,  136,  254,   86,  204,  204,  204,  204,
    806 
    807        79,   80,   81,   81,   81,   79,   81,   80,   81,   81,
    808        81,   81,   81,   80,   82,   82,   82,   81,  298,   86,
    809       137,  138,  205,  232,  232,  232,  232,   86,  239,  256,
    810       253,  253,  254,  254,  102,  272,  104,  104,  104,  104,
    811       104,  104,  253,  257,  254,  269,  238,  247,  206,   86,
    812       821,  207,  209,  105,  239,  233,  210,  211,  253,  294,
    813       254,  212,  213,  821,  214,  246,  215,  253,  234,  254,
    814        86,   86,   86,  247,  105,  216,  217,  218,  821,  235,
    815       271,  235,   86,   86,  236,  236,  236,  236,  236,  236,
    816        86,  141,  821,   86,  274,  219,  142,  245,  220,   86,
    817 
    818       270,  273,   86,   86,   86,  267,   86,   86,  291,  286,
    819        86,  275,  268,  288,   86,   86,  237,   86,   86,   86,
    820       821,  292,  300,  293,  287,   86,  221,  225,  225,  225,
    821       225,  225,  225,  302,   86,  289,  290,  296,  297,   86,
    822       299,   86,  301,   86,  226,  227,  304,   86,  227,   86,
    823        86,   86,  309,   86,  596,  316,  306,   86,   86,  228,
    824       308,  305,  329,  307,  314,  226,  227,  313,  310,   86,
    825       317,  227,   98,   98,   98,   98,   98,   98,  311,  312,
    826        86,  315,  318,   86,   86,  320,   86,   86,  330,  226,
    827       227,  821,   86,  227,   86,   86,  343,  322,  344,  324,
    828 
    829       319,  325,  321,  384,  231,  323,   86,  326,   86,  385,
    830       226,  227,  343,  276,  344,  277,  227,  278,  279,  359,
    831       343,  280,  344,  281,  382,  356,  194,  195,  282,  283,
    832       284,  194,  285,  191,   80,   81,   81,   81,  191,  194,
    833       195,  192,  369,  344,  194,  359,   86,  196,  196,  196,
    834       196,  196,  196,  335,  335,  335,  335,  343,  344,  344,
    835       196,  196,  196,  196,  196,  196,  327,  195,  369,   86,
    836       343,  327,  344,  328,  343,  412,  344,  345,  343,  343,
    837       344,  344,  343,  346,  344,  336,   86,  196,  196,  196,
    838       196,  196,  196,  343,  343,  344,  344,  225,  225,  225,
    839 
    840       225,  225,  225,  352,  253,  352,  254,  371,  353,  353,
    841       353,  353,  353,  353,  226,  227,  226,  227,  227,  253,
    842       227,  254,  104,  104,  104,  104,  104,  104,  195,  228,
    843       821,  821,   86,  372,  193,  226,  227,  226,  227,  105,
    844       354,  227,   86,  227,  236,  236,  236,  236,  236,  236,
    845       383,   86,   86,   86,  245,  381,  386,  388,  362,   86,
    846       105,  357,  357,  357,  357,  357,  357,  235,   86,  235,
    847        86,  393,  236,  236,  236,  236,  236,  236,   86,  227,
    848        86,  364,  227,  365,   86,  394,  366,   86,  387,  398,
    849       389,  400,  367,  358,  104,  104,  104,  104,  104,  104,
    850 
    851       227,   86,  395,   86,  368,  227,   86,  401,  365,   86,
    852       399,   86,  366,  111,  111,  111,  111,  111,  111,  396,
    853       397,  390,   86,   86,   86,   86,  245,  391,  392,  402,
    854       404,  406,  405,   86,   86,   86,   86,   86,   86,   86,
    855       403,  411,   86,   86,   86,  250,  414,   86,  418,   86,
    856        86,  416,  408,  407,  415,  419,  409,  410,  413,  417,
    857        86,   86,   86,   86,   86,  420,  422,  423,   86,   86,
    858        86,   86,   86,  425,  424,   86,   86,  427,  426,   86,
    859        86,  432,  421,   86,   86,   86,   86,  431,  475,   86,
    860       428,  430,  429,  437,  440,   86,  439,  433,  436,  434,
    861 
    862       441,  435,   86,  438,  442,  327,  195,  343,  509,  344,
    863       327,  476,  328,  203,  203,  203,  203,  335,  335,  335,
    864       335,  343,   86,  344,  353,  353,  353,  353,  353,  353,
    865       463,  463,  463,  463,  463,  463,  225,  225,  225,  225,
    866       225,  225,   86,  510,   86,  452,  471,  352,  227,  352,
    867        86,  227,  353,  353,  353,  353,  353,  353,  491,  492,
    868        86,  490,  464,   86,  470,  470,  672,   86,  355,  227,
    869       471,  495,  471,   86,  227,  232,  232,  232,  232,  104,
    870       104,  357,  357,  357,  357,  357,  357,  357,  357,  357,
    871       357,  357,  357,  362,  516,   86,  471,  467,  821,  227,
    872 
    873        86,   86,  227,  467,   86,  227,  468,  356,  227,  494,
    874       496,   86,  469,  358,  493,   86,  364,  499,  365,  465,
    875       227,  366,  467,   86,  498,  227,  227,  367,  467,   86,
    876        86,  227,  821,  497,   86,  506,  821,  809,  821,  368,
    877        86,  505,   86,  365,  472,  500,  472,  366,   86,  473,
    878       473,  473,  473,  473,  473,  364,  501,  365,  502,  503,
    879       366,   86,  504,  507,   86,   86,  477,   86,   86,   86,
    880       508,   86,  511,   86,   86,   86,   86,   86,  368,  515,
    881       513,  474,  365,  512,  518,  514,  366,   86,  519,  521,
    882       517,   86,  520,  523,   86,   86,  522,   86,  524,  526,
    883 
    884        86,   86,   86,   86,   86,   86,  525,   86,   86,  527,
    885       529,   86,   86,   86,  530,  528,  536,   86,   86,  539,
    886       540,  538,  533,  531,  532,  534,  535,   86,   86,  537,
    887        86,  195,   86,   86,   86,  542,  821,  548,  570,  545,
    888       546,  547,  541,  600,  595,  543,  467,  544,  203,  203,
    889       203,  203,  463,  463,  463,  463,  463,  463,  463,  463,
    890       463,  463,  463,  463,  570,   86,   86,   86,  467,  467,
    891       227,  467,   86,  227,   86,   86,  227,  468,  569,  227,
    892       588,  589,  587,  821,  464,   86,  602,  591,   86,   86,
    893       565,  227,  590,  467,  467,   86,  227,  227,  593,   86,
    894 
    895       594,  616,  227,  357,  357,  357,  357,  357,  357,  566,
    896       592,  566,  603,   86,  567,  567,  567,  567,  567,  567,
    897       473,  473,  473,  473,  473,  473,  571,  571,  571,  571,
    898       571,  571,  472,  597,  472,  465,   86,  473,  473,  473,
    899       473,  473,  473,   86,  572,   86,  568,  572,   86,   86,
    900       601,   86,   86,   86,   86,  598,   86,  605,  573,  609,
    901        86,  608,  610,   86,  599,  572,   86,   86,  607,   86,
    902       572,  606,   86,   86,  619,  614,   86,  612,  613,   86,
    903        86,   86,  611,   86,  615,  620,   86,  617,  618,  621,
    904        86,   86,   86,   86,  623,   86,  626,   86,  625,  627,
    905 
    906       624,  622,   86,   86,  630,  629,   86,  631,   86,   86,
    907        86,  821,  808,  628,  670,  664,  633,  669,  665,  632,
    908       463,  463,  463,  463,  463,  463,  567,  567,  567,  567,
    909       567,  567,  651,  651,  651,  651,  651,  651,  566,   86,
    910       566,   86,   86,  567,  567,  567,  567,  567,  567,   86,
    911       572,   86,  565,  572,  571,  571,  571,  571,  571,  571,
    912        86,  675,  666,  677,  652,  668,   86,  680,  667,   86,
    913        86,  572,  572,   86,  662,  572,  572,  671,  571,  571,
    914       571,  571,  571,  571,   86,  674,  573,  663,   86,   86,
    915       676,  678,   86,  572,   86,   86,  572,  673,  572,  572,
    916 
    917        86,   86,   86,   86,   86,   86,  679,  681,   86,  683,
    918       653,   86,   86,   86,   86,  682,   86,  572,   86,  684,
    919       693,   86,  572,  692,  685,  686,  694,  687,   86,  691,
    920       688,  689,  690,  696,   86,   86,   86,  695,  651,  651,
    921       651,  651,  651,  651,  651,  651,  651,  651,  651,  651,
    922        86,   86,   86,   86,  718,  710,  572,  714,  713,  572,
    923       711,  712,  572,   86,   86,  572,  716,  717,   86,   86,
    924       652,  723,   86,  715,  719,  721,  703,  572,  720,   86,
    925       726,   86,  572,  572,  724,   86,   86,   86,  572,  571,
    926       571,  571,  571,  571,  571,  725,   86,  730,   86,   86,
    927 
    928       722,  727,   86,   86,   86,   86,   86,   86,  733,  728,
    929       729,   86,   86,  732,   86,   86,  731,   86,   86,  736,
    930       752,  653,   86,  737,   86,   86,  734,  753,  754,  735,
    931       651,  651,  651,  651,  651,  651,   86,  750,   86,  751,
    932       759,  757,   86,   86,   86,  760,  761,  755,   86,  758,
    933        86,  756,   86,  763,   86,  762,   86,  764,   86,  765,
    934        86,   86,  703,  782,   86,   86,  786,   86,  784,   86,
    935        86,   86,  787,   86,  789,   86,  781,  780,  790,  779,
    936        86,   86,  785,  783,   86,   86,   86,  802,  801,  791,
    937        86,   86,  788,  804,  800,  803,   86,   86,   86,  806,
    938 
    939       807,   86,  805,   86,   86,   86,  811,  810,  812,   86,
    940        86,   86,  813,  814,  815,   86,   86,   86,  818,  817,
    941       819,   86,   86,  816,   86,  821,  821,  799,  821,  798,
    942       821,  796,  821,  795,  821,  794,  821,  793,  820,   68,
     789      104,  104,  118,   86,  119,  120,  256,   86,  257,   86,
     790      176,   86,  159,  105,  190,   86,  177,  106,  162,  160,
     791      178,  201,  107,  108,  156,  161,  157,  163,  109,   86,
     792      165,  164,  166,   86,  105,   86,  143,  225,   86,  174,
     793      110,  167,  243,  251,   86,   86,  175,  202,  107,   86,
     794      189,  108,  102,  188,  111,  111,  111,  111,  111,  111,
     795
     796      245,  183,  241,  226,  191,  244,  252,  242,  256,  184,
     797      257,  105,  147,  148,  149,  112,  185,   86,  150,  151,
     798      113,  152,   86,  153,  154,   86,  114,  168,   86,  179,
     799      180,  155,  105,  242,  247,  169,  264,  170,  115,  181,
     800      171,  256,  182,  257,  172,  141,  113,  124,  249,   86,
     801      142,  125,  126,  250,  127,  825,  128,  129,  256,  130,
     802      257,  131,  265,  186,   79,   80,   81,   81,   81,   79,
     803      132,  133,  134,  192,   80,   81,   81,   81,  192,  250,
     804       86,  193,   81,   80,   81,   81,   81,   81,   86,  253,
     805      135,  143,  278,  136,   81,   80,   82,   82,   82,   81,
     806
     807      258,  195,  196,  258,   86,  187,  195,  235,  235,  235,
     808      235,  256,   86,  257,  256,  256,  257,  257,  416,  825,
     809      137,  138,  197,  197,  197,  197,  197,  197,  204,  205,
     810      256,  260,  257,  204,  825,  206,  238,   86,  238,  236,
     811      206,  239,  239,  239,  239,  239,  239,   86,  825,  207,
     812      207,  207,  207,  248,  242,  259,  256,  306,  257,  250,
     813      206,  825,  825,  102,  296,  104,  104,  104,  104,  104,
     814      104,   86,  241,  240,   86,  208,  825,  249,  206,  256,
     815      242,  257,  105,  206,  206,  250,  270,  206,  206,  256,
     816       86,  257,  272,  271,  141,  206,   86,  237,  206,  142,
     817
     818      206,  209,  206,  105,  210,  212,   86,   86,  273,  213,
     819      214,   86,  275,   86,  215,  216,  274,  217,   86,  218,
     820       86,   86,   86,   86,  276,  825,   86,  291,  219,  220,
     821      221,   86,  297,  277,   86,  290,  289,   86,   86,  279,
     822       86,  280,  300,  281,  282,   86,  298,  283,  222,  284,
     823      294,  223,  292,  293,  285,  286,  287,   86,  288,   86,
     824       86,   86,  302,  295,   86,  299,  347,   86,  348,   86,
     825       86,   86,  303,   86,  312,  825,  304,   86,  305,  224,
     826      228,  228,  228,  228,  228,  228,  309,  301,  307,  308,
     827      311,   86,   86,  310,   86,  316,  319,  229,  230,   86,
     828
     829       86,  230,   86,  313,   86,  317,  141,  333,   86,  360,
     830      825,  320,  231,  314,  315,  321,   86,  386,  229,  230,
     831      322,  330,  318,   86,  230,   98,   98,   98,   98,   98,
     832       98,  323,   86,  334,   86,  324,  326,  347,  347,  348,
     833      348,  363,  229,  230,  327,  328,  230,  329,   86,   86,
     834      204,  205,  325,  390,  348,  204,  347,  234,  348,  545,
     835      195,  196,   86,  229,  230,  195,  347,  363,  348,  230,
     836      192,   80,   81,   81,   81,  192,  349,  347,  193,  348,
     837      373,  197,  197,  197,  197,  197,  197,  195,  196,  405,
     838       86,  348,  195,  331,  196,  347,  825,  348,  331,  403,
     839
     840      332,  339,  339,  339,  339,  347,  373,  348,  197,  197,
     841      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
     842      347,  350,  348,  347,  347,  348,  348,  104,  104,  104,
     843      104,  104,  104,  340,  228,  228,  228,  228,  228,  228,
     844      356,  256,  356,  257,  105,  357,  357,  357,  357,  357,
     845      357,  229,  230,  229,  230,  230,  256,  230,  257,  248,
     846       86,   86,   86,   86,   86,  105,  231,  392,  375,  402,
     847      630,   86,  229,  230,  229,  230,  385,  358,  230,  387,
     848      230,  239,  239,  239,  239,  239,  239,  361,  361,  361,
     849      361,  361,  361,  238,  376,  238,   86,  398,  239,  239,
     850
     851      239,  239,  239,  239,  366,  230,  813,  825,  230,  104,
     852      104,  104,  104,  104,  104,   86,  391,   86,   86,  362,
     853      111,  111,  111,  111,  111,  111,  230,  368,   86,  369,
     854      394,  230,  370,  388,   86,  389,  395,  396,  371,   86,
     855       86,  248,   86,   86,   86,   86,   86,  408,  393,  399,
     856      372,   86,  253,  404,  369,  409,   86,  397,  370,  400,
     857      401,   86,  406,  407,   86,   86,   86,   86,  410,   86,
     858      415,  411,   86,   86,  412,  418,   86,   86,  422,   86,
     859       86,  420,  423,  419,  424,  413,  414,   86,  417,   86,
     860       86,  421,   86,   86,   86,   86,   86,   86,   86,  426,
     861
     862       86,  425,  428,  429,   86,  427,   86,  431,  430,  436,
     863       86,   86,  432,  141,  435,   86,  434,   86,  433,  441,
     864      437,   86,   86,   86,   86,   86,  445,  438,  439,  440,
     865      443,  444,  196,  442,  331,  196,  494,  446,  194,  331,
     866      495,  332,  206,  206,  206,  206,  339,  339,  339,  339,
     867      347,  347,  348,  348,   86,  825,   86,  357,  357,  357,
     868      357,  357,  357,  467,  467,  467,  467,  467,  467,  479,
     869      356,   86,  356,  497,  456,  357,  357,  357,  357,  357,
     870      357,  230,   86,   86,  230,  228,  228,  228,  228,  228,
     871      228,  498,  480,  501,  499,  468,  235,  235,  235,  235,
     872
     873      104,  104,  230,   86,  825,  471,  471,  230,  361,  361,
     874      361,  361,  361,  361,  472,  473,  475,  359,  361,  361,
     875      361,  361,  361,  361,  514,   86,  230,   86,  360,  230,
     876      471,  471,  474,  366,  474,   86,  230,  475,   86,  230,
     877      362,  504,  475,   86,  500,   86,   86,  230,  510,  505,
     878      469,  825,  230,  496,  502,  812,  368,  230,  369,  503,
     879       86,  370,  230,  475,  476,  825,  476,  371,   86,  477,
     880      477,  477,  477,  477,  477,   86,  506,  507,   86,  372,
     881       86,   86,   86,  369,  513,   86,  509,  370,  368,   86,
     882      369,   86,  515,  370,   86,  511,  518,  508,   86,  481,
     883
     884       86,  478,  512,   86,  516,   86,  517,   86,   86,   86,
     885      519,  372,  524,   86,  522,  369,  521,  526,  523,  370,
     886       86,  520,  525,  527,   86,   86,   86,   86,  529,   86,
     887       86,  528,   86,   86,   86,  533,   86,   86,   86,  531,
     888       86,  540,  530,   86,  534,  532,   86,  543,   86,  549,
     889       86,  536,  535,  537,  538,  541,  542,  544,  539,   86,
     890       86,   86,  196,  548,  600,  471,  471,  546,  552,  551,
     891      550,  206,  206,  206,  206,  472,   86,  547,  467,  467,
     892      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
     893      471,  471,  574,  591,  471,   86,  230,   86,   86,  230,
     894
     895       86,   86,  230,  573,   86,  230,   86,   86,  592,   86,
     896      468,  595,  593,   86,  597,   86,  569,  230,  574,  471,
     897      594,   86,  230,  230,  599,  602,  596,  601,  230,  361,
     898      361,  361,  361,  361,  361,  570,  603,  570,  611,   86,
     899      571,  571,  571,  571,  571,  571,  477,  477,  477,  477,
     900      477,  477,  575,  575,  575,  575,  575,  575,  476,   86,
     901      476,  469,   86,  477,  477,  477,  477,  477,  477,   86,
     902      576,  604,  572,  576,  598,   86,   86,   86,   86,   86,
     903      605,  610,   86,   86,  577,   86,   86,  606,  609,   86,
     904      607,  576,  612,   86,  613,  614,  576,   86,   86,  616,
     905
     906      617,   86,  618,   86,  615,   86,   86,   86,   86,   86,
     907      620,  623,   86,   86,  619,   86,  621,  624,  622,   86,
     908      627,  625,   86,  629,   86,   86,  628,  626,   86,  631,
     909       86,  633,   86,  634,   86,  632,   86,   86,  635,  668,
     910       86,  673,  636,  637,  467,  467,  467,  467,  467,  467,
     911      571,  571,  571,  571,  571,  571,  655,  655,  655,  655,
     912      655,  655,  570,  672,  570,   86,   86,  571,  571,  571,
     913      571,  571,  571,   86,  576,  669,  569,  576,  575,  575,
     914      575,  575,  575,  575,   86,  686,  670,   86,  656,   86,
     915      676,   86,   86,   86,   86,  576,  576,  674,  666,  576,
     916
     917      576,  671,  575,  575,  575,  575,  575,  575,  675,  678,
     918      577,  667,   86,   86,  679,   86,   86,  576,   86,  682,
     919      576,  684,  576,  576,   86,  677,   86,   86,   86,   86,
     920      680,   86,   86,   86,  657,  683,  687,  681,   86,  685,
     921       86,  576,   86,   86,  688,   86,  576,   86,   86,  697,
     922      689,  690,  693,  698,  691,  692,  696,  695,   86,   86,
     923      700,   86,   86,   86,   86,  694,  720,  699,  655,  655,
     924      655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
     925      714,   86,  719,   86,   86,  726,  576,  716,   86,  576,
     926      717,  715,  576,  718,   86,  576,   86,  721,   86,  727,
     927
     928      656,   86,  722,  730,  723,  724,  707,  576,   86,   86,
     929      729,  725,  576,  576,   86,   86,  766,  728,  576,  575,
     930      575,  575,  575,  575,  575,   86,   86,   86,   86,  731,
     931       86,   86,   86,   86,   86,  738,   86,   86,  732,  733,
     932      734,   86,  736,   86,   86,  735,  741,   86,   86,  740,
     933       86,  657,   86,   86,  758,  756,   86,  737,  739,  655,
     934      655,  655,  655,  655,  655,  755,  759,  754,  757,   86,
     935       86,  763,  761,   86,   86,   86,  764,  765,  760,   86,
     936       86,   86,  767,  762,  768,   86,   86,   86,  790,   86,
     937      769,  707,  786,   86,   86,   86,  788,   86,   86,   86,
     938
     939      791,   86,  793,   86,  785,   86,  784,  783,  794,  787,
     940      795,   86,  789,   86,   86,   86,   86,  792,  805,  806,
     941      825,  825,   86,  807,  804,  808,   86,   86,   86,  810,
     942      811,   86,  809,   86,   86,   86,  815,  814,  816,   86,
     943       86,   86,  817,  818,  819,   86,   86,   86,  822,  821,
     944      823,  803,  825,  820,  802,  825,  800,  825,  799,  825,
     945      798,  825,  797,   86,   86,   86,  825,  782,  824,   68,
    943946       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
    944        68,   68,   68,   68,   68,   68,   74,   74,   74,   74,
    945        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
     947       68,   74,   74,   74,   74,   74,   74,   74,   74,   74,
    946948       74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
    947        77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
    948        85,   86,   86,   85,   85,   86,   85,   85,   85,   85,
    949 
    950        85,   85,   85,   85,  139,  821,  778,  821,  777,  775,
    951       139,  139,  139,  139,  139,  139,  139,  139,  193,  193,
    952       193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
    953       193,  193,  193,  193,  193,  198,  821,  773,  198,  198,
    954       821,  198,  198,  198,  198,  198,  198,  198,  198,  202,
    955       771,  202,  202,  821,  202,  202,  202,  202,  202,  202,
    956       202,  202,  769,  202,  202,  202,  203,  767,  203,   86,
    957       203,   86,  203,   86,   86,   86,  203,  203,   86,  203,
    958       203,  208,   86,   86,  208,  208,  208,  208,  208,  208,
    959       208,  208,  208,  208,   86,  208,  208,  208,  229,  229,
    960 
    961       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
    962       229,  229,  229,  229,  229,  243,  243,  243,   86,  243,
    963        86,   86,  821,  749,  243,  243,  259,  747,  821,  259,
    964       259,  821,  259,  259,  259,  259,  259,  259,  259,  259,
    965       263,  263,  744,  263,  742,  740,  821,   86,  263,  263,
    966       265,  265,   86,  265,   86,   86,   86,   86,  265,  265,
    967       331,  331,   86,  331,  709,  706,  705,  199,  331,  331,
    968       333,  333,  699,  333,  698,  635,   86,   86,  333,  333,
    969       337,  337,   86,  337,   86,   86,   86,   86,  337,  337,
    970       339,  339,   86,  339,   86,   86,   86,   86,  339,  339,
    971 
    972       341,  341,   86,  341,   86,  660,  659,  657,  341,  341,
    973       348,  348,  655,  348,  569,  650,  649,  647,  348,  348,
    974       350,  350,  645,  350,  643,  641,  639,  637,  350,  350,
    975       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
    976       229,  229,  229,  229,  229,  229,  229,  361,  361,  635,
    977       361,   86,   86,   86,   86,   86,  361,  363,  363,  363,
    978        86,  363,  363,  363,  363,   86,  363,  363,  243,  243,
    979       243,   86,  243,   86,   86,   86,  586,  584,  243,  373,
    980       373,  582,  373,  580,  578,  576,  477,  373,  373,  375,
    981       375,  574,  375,  574,  564,  562,  458,  375,  375,  377,
    982 
    983       377,  458,  377,  560,  558,  556,  554,  377,  377,  263,
    984       263,  552,  263,  550,   86,   86,   86,   86,  263,  379,
    985       379,   86,  379,   86,   86,   86,  489,  379,  379,  265,
    986       265,  487,  265,  485,  483,  481,  479,  462,  265,   85,
    987       460,  344,   85,   85,  344,   85,   85,   85,   85,   85,
    988        85,   85,   85,  193,  193,  193,  193,  193,  193,  193,
    989       193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
    990       443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
    991       443,  443,  443,  443,  443,  443,  443,  444,  444,  458,
    992       444,  456,  454,  451,  449,  444,  444,  446,  446,  447,
    993 
    994       446,  445,   86,   86,   86,  446,  446,  448,  448,  380,
    995       448,  378,  376,  374,  260,  448,  448,  331,  331,  255,
    996       331,  254,  370,  370,  242,  360,  331,  450,  450,  360,
    997       450,  230,  355,  351,  349,  450,  450,  333,  333,  347,
    998       333,  343,  342,  340,  338,  334,  333,  453,  453,  332,
    999       453,  199,  195,   86,  266,  453,  453,  337,  337,  264,
    1000       337,  260,  255,  258,  255,  253,  337,  455,  455,  252,
    1001       455,  251,  230,  224,   84,  455,  455,  339,  339,   84,
    1002       339,   86,  199,  197,   84,  146,  339,  457,  457,  140,
    1003       457,  121,  116,   86,  821,  457,  457,  341,  341,   69,
    1004 
    1005       341,   69,  821,  821,  821,  821,  341,  459,  459,  821,
    1006       459,  821,  821,  821,  821,  459,  459,  348,  348,  821,
    1007       348,  821,  821,  821,  821,  821,  348,  461,  461,  821,
    1008       461,  821,  821,  821,  821,  461,  461,  350,  350,  821,
    1009       350,  821,  821,  821,  821,  821,  350,  466,  466,  821,
    1010       466,  821,  466,  821,  821,  466,  466,  361,  361,  821,
    1011       361,  821,  361,  821,  821,  361,  361,  363,  363,  363,
    1012       821,  363,  363,  363,  363,  821,  363,  363,  478,  478,
    1013       821,  478,  821,  821,  821,  821,  478,  478,  480,  480,
    1014       821,  480,  821,  821,  821,  821,  480,  480,  482,  482,
    1015 
    1016       821,  482,  821,  821,  821,  821,  482,  482,  373,  373,
    1017       821,  373,  821,  821,  821,  821,  821,  373,  484,  484,
    1018       821,  484,  821,  821,  821,  821,  484,  484,  375,  375,
    1019       821,  375,  821,  821,  821,  821,  821,  375,  486,  486,
    1020       821,  486,  821,  821,  821,  821,  486,  486,  377,  377,
    1021       821,  377,  821,  821,  821,  821,  821,  377,  488,  488,
    1022       821,  488,  821,  821,  821,  821,  488,  488,  379,  379,
    1023       821,  379,  821,  821,  821,  821,  821,  379,   85,  821,
    1024       821,   85,   85,  821,   85,   85,   85,   85,   85,   85,
    1025        85,   85,  443,  443,  443,  443,  443,  443,  443,  443,
    1026 
    1027       443,  443,  443,  443,  443,  443,  443,  443,  443,  549,
    1028       549,  821,  549,  821,  821,  821,  821,  549,  549,  444,
    1029       444,  821,  444,  821,  821,  821,  821,  821,  444,  551,
    1030       551,  821,  551,  821,  821,  821,  821,  551,  551,  446,
    1031       446,  821,  446,  821,  821,  821,  821,  821,  446,  553,
    1032       553,  821,  553,  821,  821,  821,  821,  553,  553,  448,
    1033       448,  821,  448,  821,  821,  821,  821,  821,  448,  555,
    1034       555,  821,  555,  821,  821,  821,  821,  555,  555,  450,
    1035       450,  821,  450,  821,  821,  821,  821,  821,  450,  557,
    1036       557,  821,  557,  821,  821,  821,  821,  557,  557,  453,
    1037 
    1038       453,  821,  453,  821,  821,  821,  821,  821,  453,  559,
    1039       559,  821,  559,  821,  821,  821,  821,  559,  559,  455,
    1040       455,  821,  455,  821,  821,  821,  821,  821,  455,  457,
    1041       457,  821,  457,  821,  821,  821,  821,  457,  457,  561,
    1042       561,  821,  561,  821,  821,  821,  821,  561,  561,  459,
    1043       459,  821,  459,  821,  821,  821,  821,  821,  459,  563,
    1044       563,  821,  563,  821,  821,  821,  821,  563,  563,  461,
    1045       461,  821,  461,  821,  821,  821,  821,  821,  461,  466,
    1046       466,  821,  466,  821,  466,  821,  821,  466,  466,  363,
    1047       363,  821,  363,  821,  821,  821,  821,  363,  363,  575,
    1048 
    1049       575,  821,  575,  821,  821,  821,  821,  575,  575,  478,
    1050       478,  821,  478,  821,  821,  821,  821,  821,  478,  577,
    1051       577,  821,  577,  821,  821,  821,  821,  577,  577,  480,
    1052       480,  821,  480,  821,  821,  821,  821,  821,  480,  579,
    1053       579,  821,  579,  821,  821,  821,  821,  579,  579,  482,
    1054       482,  821,  482,  821,  821,  821,  821,  821,  482,  581,
    1055       581,  821,  581,  821,  821,  821,  821,  581,  581,  484,
    1056       484,  821,  484,  821,  821,  821,  821,  821,  484,  583,
    1057       583,  821,  583,  821,  821,  821,  821,  583,  583,  486,
    1058       486,  821,  486,  821,  821,  821,  821,  821,  486,  585,
    1059 
    1060       585,  821,  585,  821,  821,  821,  821,  585,  585,  488,
    1061       488,  821,  488,  821,  821,  821,  821,  821,  488,   85,
    1062       821,  821,   85,   85,  821,   85,   85,   85,   85,   85,
    1063        85,   85,   85,  634,  634,  634,  634,  634,  634,  634,
    1064       634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
    1065       636,  636,  821,  636,  821,  821,  821,  821,  636,  636,
    1066       549,  549,  821,  549,  821,  821,  821,  821,  821,  549,
    1067       638,  638,  821,  638,  821,  821,  821,  821,  638,  638,
    1068       551,  551,  821,  551,  821,  821,  821,  821,  821,  551,
    1069       640,  640,  821,  640,  821,  821,  821,  821,  640,  640,
    1070 
    1071       553,  553,  821,  553,  821,  821,  821,  821,  821,  553,
    1072       642,  642,  821,  642,  821,  821,  821,  821,  642,  642,
    1073       555,  555,  821,  555,  821,  821,  821,  821,  821,  555,
    1074       644,  644,  821,  644,  821,  821,  821,  821,  644,  644,
    1075       557,  557,  821,  557,  821,  821,  821,  821,  821,  557,
    1076       646,  646,  821,  646,  821,  821,  821,  821,  646,  646,
    1077       559,  559,  821,  559,  821,  821,  821,  821,  821,  559,
    1078       648,  648,  821,  648,  821,  821,  821,  821,  648,  648,
    1079       561,  561,  821,  561,  821,  821,  821,  821,  821,  561,
    1080        85,   85,  821,   85,  821,  821,  821,  821,   85,   85,
    1081 
    1082       563,  563,  821,  563,  821,  821,  821,  821,  821,  563,
    1083       466,  466,  821,  466,  821,  821,  821,  821,  466,  466,
    1084       654,  654,  821,  654,  821,  821,  821,  821,  654,  654,
    1085       575,  575,  821,  575,  821,  821,  821,  821,  821,  575,
    1086       656,  656,  821,  656,  821,  821,  821,  821,  656,  656,
    1087       577,  577,  821,  577,  821,  821,  821,  821,  821,  577,
    1088       658,  658,  821,  658,  821,  821,  821,  821,  658,  658,
    1089       579,  579,  821,  579,  821,  821,  821,  821,  821,  579,
    1090       139,  139,  821,  139,  821,  821,  821,  821,  139,  139,
    1091       581,  581,  821,  581,  821,  821,  821,  821,  821,  581,
    1092 
    1093       661,  661,  821,  661,  821,  821,  821,  821,  821,  661,
    1094       583,  583,  821,  583,  821,  821,  821,  821,  821,  583,
    1095        85,  821,  821,   85,   85,  821,   85,   85,   85,   85,
    1096        85,   85,   85,   85,  585,  585,  821,  585,  821,  821,
    1097       821,  821,  821,  585,  634,  634,  634,  634,  634,  634,
    1098       634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
    1099       634,  697,  697,  821,  697,  821,  821,  821,  821,  697,
    1100       697,  636,  636,  821,  636,  821,  821,  821,  821,  821,
    1101       636,  198,  198,  821,  198,  821,  821,  821,  821,  198,
    1102       198,  638,  638,  821,  638,  821,  821,  821,  821,  821,
    1103 
    1104       638,  700,  700,  821,  700,  821,  821,  821,  821,  821,
    1105       700,  640,  640,  821,  640,  821,  821,  821,  821,  821,
    1106       640,  198,  821,  821,  198,  198,  821,  198,  198,  198,
    1107       198,  198,  198,  198,  198,  642,  642,  821,  642,  821,
    1108       821,  821,  821,  821,  642,  701,  701,  821,  701,  821,
    1109       821,  821,  821,  821,  701,  644,  644,  821,  644,  821,
    1110       821,  821,  821,  821,  644,  646,  646,  821,  646,  821,
    1111       821,  821,  821,  821,  646,  702,  702,  821,  702,  821,
    1112       821,  821,  821,  821,  702,  648,  648,  821,  648,  821,
    1113       821,  821,  821,  821,  648,   85,   85,  821,   85,  821,
    1114 
    1115       821,  821,  821,  821,   85,  704,  704,  821,  704,  821,
    1116       821,  821,  821,  704,  704,  654,  654,  821,  654,  821,
    1117       821,  821,  821,  821,  654,  259,  259,  821,  259,  821,
    1118       821,  821,  821,  259,  259,  656,  656,  821,  656,  821,
    1119       821,  821,  821,  821,  656,  707,  707,  821,  707,  821,
    1120       821,  821,  821,  821,  707,  658,  658,  821,  658,  821,
    1121       821,  821,  821,  821,  658,  139,  139,  821,  139,  821,
    1122       821,  821,  821,  821,  139,  708,  708,  821,  708,  821,
    1123       821,  821,  821,  708,  708,   85,  821,  821,   85,   85,
    1124       821,   85,   85,   85,   85,   85,   85,   85,   85,  738,
    1125 
    1126       738,  821,  738,  821,  821,  821,  821,  821,  738,  697,
    1127       697,  821,  697,  821,  821,  821,  821,  821,  697,  739,
    1128       739,  821,  739,  821,  821,  821,  821,  739,  739,  741,
    1129       741,  821,  741,  821,  821,  821,  821,  741,  741,  743,
    1130       743,  821,  743,  821,  821,  821,  821,  743,  743,  745,
    1131       745,  821,  745,  821,  821,  821,  821,  821,  745,  746,
    1132       746,  821,  746,  821,  821,  821,  821,  746,  746,  748,
    1133       748,  821,  748,  821,  821,  821,  821,  748,  748,  766,
    1134       766,  821,  766,  821,  821,  821,  821,  766,  766,  768,
    1135       768,  821,  768,  821,  821,  821,  821,  768,  768,  770,
    1136 
    1137       770,  821,  770,  821,  821,  821,  821,  770,  770,  772,
    1138       772,  821,  772,  821,  821,  821,  821,  772,  772,  774,
    1139       774,  821,  774,  821,  821,  821,  821,  774,  774,  776,
    1140       776,  821,  776,  821,  821,  821,  821,  776,  776,  585,
    1141       585,  821,  585,  821,  821,  821,  821,  585,  585,  792,
    1142       792,  821,  792,  821,  821,  821,  821,  792,  792,  642,
    1143       642,  821,  642,  821,  821,  821,  821,  642,  642,  646,
    1144       646,  821,  646,  821,  821,  821,  821,  646,  646,   85,
    1145        85,  821,   85,  821,  821,  821,  821,   85,   85,  797,
    1146       797,  821,  797,  821,  821,  821,  821,  797,  797,  139,
    1147 
    1148       139,  821,  139,  821,  821,  821,  821,  139,  139,  198,
    1149       198,  821,  198,  821,  821,  821,  821,  198,  198,   11,
    1150       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1151       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1152       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1153       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1154       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1155       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1156       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1157       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1158 
    1159       821,  821,  821,  821
     949
     950       77,   77,   77,   77,   77,   85,  825,  781,   85,   85,
     951       85,   85,   85,   85,  139,  779,  825,  777,  139,  139,
     952      139,  139,  139,  194,  194,  194,  194,  194,  194,  194,
     953      194,  194,  194,  194,  194,  199,  825,  775,  199,  199,
     954      199,  199,  199,  199,  203,  825,  203,  203,  773,  203,
     955      203,  203,  203,  203,  771,  203,  211,   86,   86,  211,
     956      211,  211,  211,  211,  211,  211,   86,  211,  232,  232,
     957      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
     958      246,  246,  246,   86,   86,   86,  246,  262,   86,   86,
     959      262,  262,  262,  262,  262,  262,  266,  266,   86,   86,
     960
     961       86,  266,  268,  268,   86,  825,  753,  268,  335,  335,
     962      751,  825,  825,  335,  337,  337,  748,  746,  744,  337,
     963      341,  341,  825,   86,   86,  341,  343,  343,   86,   86,
     964       86,  343,  345,  345,   86,   86,  713,  345,  352,  352,
     965      710,  709,  200,  352,  354,  354,  703,  702,  639,  354,
     966      232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
     967      232,  232,  365,  365,  367,  367,  367,  367,  367,   86,
     968      367,  246,  246,  246,  377,  377,   86,   86,   86,  377,
     969      379,  379,   86,   86,   86,  379,  381,  381,   86,   86,
     970       86,  381,  266,  266,  383,  383,   86,   86,   86,  383,
     971
     972      268,  268,   85,   86,  664,   85,   85,   85,   85,   85,
     973       85,  194,  194,  194,  194,  194,  194,  194,  194,  194,
     974      194,  194,  194,  447,  447,  447,  447,  447,  447,  447,
     975      447,  447,  447,  447,  447,  448,  448,  663,  661,  659,
     976      448,  450,  450,  573,  654,  653,  450,  452,  452,  651,
     977      649,  647,  452,  335,  335,  454,  454,  645,  643,  641,
     978      454,  337,  337,  457,  457,  639,   86,   86,  457,  341,
     979      341,  459,  459,   86,   86,   86,  459,  343,  343,  461,
     980      461,   86,   86,   86,  461,  345,  345,  463,  463,   86,
     981       86,   86,  463,  352,  352,  465,  465,  590,  588,  586,
     982
     983      465,  354,  354,  470,  470,  584,  470,  582,  470,  365,
     984      365,  580,  365,  481,  365,  367,  367,  367,  367,  367,
     985      578,  367,  482,  482,  578,  568,  566,  482,  484,  484,
     986      462,  462,  564,  484,  486,  486,  562,  560,  558,  486,
     987      377,  377,  488,  488,  556,  554,   86,  488,  379,  379,
     988      490,  490,   86,   86,   86,  490,  381,  381,  492,  492,
     989       86,   86,   86,  492,  383,  383,   85,   86,  493,   85,
     990       85,   85,   85,   85,   85,  447,  447,  447,  447,  447,
     991      447,  447,  447,  447,  447,  447,  447,  553,  553,  491,
     992      489,  487,  553,  448,  448,  555,  555,  485,  483,  466,
     993
     994      555,  450,  450,  557,  557,  464,  348,  348,  557,  452,
     995      452,  559,  559,  462,  460,  458,  559,  454,  454,  561,
     996      561,  455,  453,  451,  561,  457,  457,  563,  563,  449,
     997       86,   86,  563,  459,  459,  461,  461,   86,  384,  382,
     998      461,  565,  565,  380,  378,  263,  565,  463,  463,  567,
     999      567,  258,  257,  374,  567,  465,  465,  470,  470,  374,
     1000      470,  245,  470,  367,  367,  364,  364,  233,  367,  579,
     1001      579,  359,  355,  353,  579,  482,  482,  581,  581,  351,
     1002      347,  346,  581,  484,  484,  583,  583,  344,  342,  338,
     1003      583,  486,  486,  585,  585,  336,  200,  196,  585,  488,
     1004
     1005      488,  587,  587,   86,  269,  267,  587,  490,  490,  589,
     1006      589,  263,  258,  261,  589,  492,  492,   85,  258,  256,
     1007       85,   85,   85,   85,   85,   85,  638,  638,  638,  638,
     1008      638,  638,  638,  638,  638,  638,  638,  638,  640,  640,
     1009      255,  254,  233,  640,  553,  553,  642,  642,  227,   84,
     1010       84,  642,  555,  555,  644,  644,   86,  200,  198,  644,
     1011      557,  557,  646,  646,   84,  146,  140,  646,  559,  559,
     1012      648,  648,  121,  116,   86,  648,  561,  561,  650,  650,
     1013      825,   69,   69,  650,  563,  563,  652,  652,  825,  825,
     1014      825,  652,  565,  565,   85,   85,  825,  825,  825,   85,
     1015
     1016      567,  567,  470,  470,  825,  825,  825,  470,  658,  658,
     1017      825,  825,  825,  658,  579,  579,  660,  660,  825,  825,
     1018      825,  660,  581,  581,  662,  662,  825,  825,  825,  662,
     1019      583,  583,  139,  139,  825,  825,  825,  139,  585,  585,
     1020      665,  665,  587,  587,   85,  825,  825,   85,   85,   85,
     1021       85,   85,   85,  589,  589,  638,  638,  638,  638,  638,
     1022      638,  638,  638,  638,  638,  638,  638,  701,  701,  825,
     1023      825,  825,  701,  640,  640,  199,  199,  825,  825,  825,
     1024      199,  642,  642,  704,  704,  644,  644,  199,  825,  825,
     1025      199,  199,  199,  199,  199,  199,  646,  646,  705,  705,
     1026
     1027      648,  648,  650,  650,  706,  706,  652,  652,   85,   85,
     1028      708,  708,  825,  825,  825,  708,  658,  658,  262,  262,
     1029      825,  825,  825,  262,  660,  660,  711,  711,  662,  662,
     1030      139,  139,  712,  712,  825,  825,  825,  712,   85,  825,
     1031      825,   85,   85,   85,   85,   85,   85,  742,  742,  701,
     1032      701,  743,  743,  825,  825,  825,  743,  745,  745,  825,
     1033      825,  825,  745,  747,  747,  825,  825,  825,  747,  749,
     1034      749,  750,  750,  825,  825,  825,  750,  752,  752,  825,
     1035      825,  825,  752,  770,  770,  825,  825,  825,  770,  772,
     1036      772,  825,  825,  825,  772,  774,  774,  825,  825,  825,
     1037
     1038      774,  776,  776,  825,  825,  825,  776,  778,  778,  825,
     1039      825,  825,  778,  780,  780,  825,  825,  825,  780,  589,
     1040      589,  825,  825,  825,  589,  796,  796,  825,  825,  825,
     1041      796,  646,  646,  825,  825,  825,  646,  650,  650,  825,
     1042      825,  825,  650,   85,   85,  825,  825,  825,   85,  801,
     1043      801,  825,  825,  825,  801,  139,  139,  825,  825,  825,
     1044      139,  199,  199,  825,  825,  825,  199,   11,  825,  825,
     1045      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1046      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1047      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1048
     1049      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1050      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1051      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1052      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1053      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1054      825,  825
    11601055    } ;
    11611056
    1162 static yyconst flex_int16_t yy_chk[3605] =
     1057static yyconst flex_int16_t yy_chk[2653] =
    11631058    {   0,
    11641059        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11811076        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11821077        5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
    1183        10,   37,   37,   20,   48,    9,   10,  508,    7,    8,
     1078       10,   37,   37,   20,   48,    9,   10,  512,    7,    8,
    11841079       13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
    11851080
    11861081       15,   15,   20,   25,   48,   42,   53,   28,   27,   28,
    1187        28,   28,   28,   28,   28,  508,  820,   25,   29,   25,
     1082       28,   28,   28,   28,   28,  512,  824,   25,   29,   25,
    11881083       27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
    11891084       40,   42,   55,   29,   30,   40,   30,   30,   30,   30,
    11901085       30,   30,   35,   47,   35,   35,  125,   49,  125,   50,
    11911086       55,   56,   49,   30,   63,   51,   55,   30,   50,   49,
    1192        56,   59,   30,   30,   47,   49,   47,   50,   30,   54,
    1193        51,   50,   51,   40,   30,   60,   40,   72,   59,   54,
    1194        30,   51,   86,  107,  113,   45,   54,  819,   30,   58,
    1195        45,   30,   31,   60,   31,   31,   31,   31,   31,   31,
    1196 
    1197       108,   58,  163,   72,   63,  106,  107,  113,   86,   58,
    1198       106,   31,   45,   45,   45,   31,   58,   57,   45,   45,
    1199        31,   45,   52,   45,   45,  163,   31,   52,   45,   57,
    1200        57,   45,   31,   61,  108,   52,  106,   52,   31,   57,
    1201        52,  126,   57,  126,   52,   61,   31,   38,  112,  171,
    1202       129,   38,   38,  112,   38,  114,   38,   38,  128,   38,
    1203       128,   38,   67,   67,  129,  140,  129,   67,  130,  171,
     1087       56,   72,   30,   30,   47,   49,   47,   50,   30,   54,
     1088       51,   50,   51,   40,   30,   60,   40,   86,   61,   54,
     1089       30,   51,  107,  113,  823,  822,   54,   72,   30,   58,
     1090       61,   30,   31,   60,   31,   31,   31,   31,   31,   31,
     1091
     1092      108,   58,  106,   86,   63,  107,  113,  106,  126,   58,
     1093      126,   31,   45,   45,   45,   31,   58,   57,   45,   45,
     1094       31,   45,   52,   45,   45,  821,   31,   52,   45,   57,
     1095       57,   45,   31,  106,  108,   52,  140,   52,   31,   57,
     1096       52,  128,   57,  128,   52,   59,   31,   38,  112,  819,
     1097       59,   38,   38,  112,   38,  114,   38,   38,  131,   38,
     1098      131,   38,  140,   59,   79,   79,   79,   79,   79,   79,
    12041099       38,   38,   38,   66,   66,   66,   66,   66,   66,  112,
    1205       130,   66,  130,   67,   67,   67,   67,   67,   67,  114,
    1206        38,  140,  131,   38,  131,  166,   76,   76,   76,   76,
    1207 
    1208        79,   79,   79,   79,   79,   79,   81,   81,   81,   81,
    1209        81,   81,   82,   82,   82,   82,   82,   82,  166,  151,
    1210        38,   38,   76,  103,  103,  103,  103,  148,  110,  132,
    1211       132,  133,  132,  133,  104,  151,  104,  104,  104,  104,
    1212       104,  104,  134,  134,  134,  148,  110,  115,   76,  162,
    1213       103,   76,   84,  104,  110,  103,   84,   84,  136,  162,
    1214       136,   84,   84,  109,   84,  115,   84,  138,  104,  138,
    1215       818,  150,  153,  115,  104,   84,   84,   84,  103,  105,
    1216       150,  105,  149,  152,  105,  105,  105,  105,  105,  105,
    1217       147,  143,  109,  156,  153,   84,  143,  109,   84,  154,
    1218 
    1219       149,  152,  157,  160,  158,  147,  161,  168,  160,  156,
    1220       164,  154,  147,  158,  159,  170,  105,  165,  167,  172,
    1221       109,  160,  168,  161,  157,  169,   84,   98,   98,   98,
    1222        98,   98,   98,  170,  143,  159,  159,  164,  165,  173,
    1223       167,  175,  169,  176,   98,   98,  172,  177,   98,  179,
    1224       181,  500,  177,  180,  500,  181,  175,  178,  184,   98,
    1225       176,  173,  199,  175,  180,   98,   98,  179,  178,  182,
    1226       181,   98,  102,  102,  102,  102,  102,  102,  178,  178,
    1227       183,  180,  182,  185,  186,  184,  187,  270,  199,  102,
    1228       102,  233,  271,  102,  188,  817,  210,  186,  210,  187,
    1229 
    1230       183,  187,  185,  270,  102,  186,  268,  188,  155,  271,
    1231       102,  102,  211,  155,  211,  155,  102,  155,  155,  238,
    1232       212,  155,  212,  155,  268,  233,  192,  192,  155,  155,
    1233       155,  192,  155,  191,  191,  191,  191,  191,  191,  194,
    1234       194,  191,  246,  213,  194,  238,  815,  192,  192,  192,
    1235       192,  192,  192,  204,  204,  204,  204,  213,  214,  213,
    1236       194,  194,  194,  194,  194,  194,  196,  196,  246,  295,
    1237       214,  196,  214,  196,  215,  295,  215,  216,  216,  217,
    1238       216,  217,  218,  218,  218,  204,  814,  196,  196,  196,
    1239       196,  196,  196,  220,  221,  220,  221,  225,  225,  225,
    1240 
    1241       225,  225,  225,  226,  256,  226,  256,  260,  226,  226,
    1242       226,  226,  226,  226,  225,  225,  231,  231,  225,  257,
    1243       231,  257,  234,  234,  234,  234,  234,  234,  328,  225,
    1244       809,  808,  269,  260,  328,  225,  225,  231,  231,  234,
    1245       226,  225,  267,  231,  235,  235,  235,  235,  235,  235,
    1246       269,  272,  274,  277,  234,  267,  272,  274,  243,  278,
    1247       234,  236,  236,  236,  236,  236,  236,  237,  273,  237,
    1248       275,  277,  237,  237,  237,  237,  237,  237,  283,  236,
    1249       284,  243,  236,  243,  281,  278,  243,  279,  273,  281,
    1250       275,  283,  243,  236,  245,  245,  245,  245,  245,  245,
    1251 
    1252       236,  282,  279,  280,  243,  236,  276,  284,  243,  804,
    1253       282,  285,  243,  250,  250,  250,  250,  250,  250,  280,
    1254       280,  276,  287,  289,  290,  288,  245,  276,  276,  285,
    1255       288,  290,  289,  291,  292,  293,  294,  297,  298,  296,
    1256       287,  294,  299,  301,  300,  250,  297,  304,  301,  305,
    1257       302,  299,  292,  291,  298,  302,  293,  293,  296,  300,
    1258       303,  306,  308,  309,  310,  303,  304,  305,  311,  312,
    1259       314,  313,  315,  308,  306,  316,  317,  310,  309,  318,
    1260       319,  315,  303,  323,  321,  322,  324,  314,  366,  326,
    1261       311,  313,  312,  321,  324,  325,  323,  316,  319,  317,
    1262 
    1263       325,  318,  398,  322,  326,  327,  327,  345,  398,  345,
    1264       327,  366,  327,  335,  335,  335,  335,  336,  336,  336,
    1265       336,  346,  399,  346,  352,  352,  352,  352,  352,  352,
    1266       353,  353,  353,  353,  353,  353,  355,  355,  355,  355,
    1267       355,  355,  382,  399,  383,  335,  368,  354,  353,  354,
    1268       381,  353,  354,  354,  354,  354,  354,  354,  382,  383,
    1269       386,  381,  353,  596,  368,  364,  596,  802,  355,  353,
    1270       364,  386,  368,  408,  353,  356,  356,  356,  356,  356,
    1271       356,  357,  357,  357,  357,  357,  357,  358,  358,  358,
    1272       358,  358,  358,  363,  408,  384,  364,  361,  799,  357,
    1273 
    1274       385,  387,  357,  362,  390,  358,  361,  356,  358,  385,
    1275       387,  388,  362,  357,  384,  389,  363,  390,  363,  358,
    1276       357,  363,  361,  395,  389,  357,  358,  363,  362,  391,
    1277       396,  358,  367,  388,  392,  396,  798,  797,  796,  363,
    1278       394,  395,  393,  363,  365,  391,  365,  363,  397,  365,
    1279       365,  365,  365,  365,  365,  367,  392,  367,  393,  393,
    1280       367,  400,  394,  397,  401,  402,  367,  406,  409,  411,
    1281       397,  404,  400,  416,  412,  410,  417,  419,  367,  406,
    1282       402,  365,  367,  401,  410,  404,  367,  413,  410,  412,
    1283       409,  418,  411,  416,  420,  421,  413,  424,  417,  419,
    1284 
    1285       426,  422,  428,  427,  430,  429,  418,  431,  433,  420,
    1286       422,  432,  434,  435,  424,  421,  431,  436,  441,  434,
    1287       435,  433,  428,  426,  427,  429,  430,  437,  439,  432,
    1288       438,  443,  442,  499,  504,  437,  795,  443,  470,  439,
    1289       441,  442,  436,  504,  499,  437,  469,  438,  452,  452,
    1290       452,  452,  463,  463,  463,  463,  463,  463,  464,  464,
    1291       464,  464,  464,  464,  470,  490,  493,  491,  466,  468,
    1292       463,  469,  494,  463,  495,  506,  464,  466,  468,  464,
    1293       491,  493,  490,  794,  463,  497,  506,  495,  496,  524,
    1294       464,  463,  494,  466,  468,  498,  463,  464,  497,  507,
    1295 
    1296       498,  524,  464,  465,  465,  465,  465,  465,  465,  467,
    1297       496,  467,  507,  501,  467,  467,  467,  467,  467,  467,
    1298       472,  472,  472,  472,  472,  472,  473,  473,  473,  473,
    1299       473,  473,  474,  501,  474,  465,  502,  474,  474,  474,
    1300       474,  474,  474,  503,  473,  505,  467,  473,  509,  510,
    1301       505,  511,  512,  516,  513,  502,  518,  509,  473,  513,
    1302       519,  512,  516,  520,  503,  473,  521,  523,  511,  528,
    1303       473,  510,  525,  527,  528,  521,  530,  519,  520,  532,
    1304       531,  533,  518,  534,  523,  530,  537,  525,  527,  531,
    1305       536,  539,  538,  540,  533,  542,  537,  543,  536,  538,
    1306 
    1307       534,  532,  545,  546,  542,  540,  594,  543,  588,  589,
    1308       593,  793,  792,  539,  594,  588,  546,  593,  589,  545,
    1309       565,  565,  565,  565,  565,  565,  566,  566,  566,  566,
    1310       566,  566,  567,  567,  567,  567,  567,  567,  568,  599,
    1311       568,  601,  592,  568,  568,  568,  568,  568,  568,  590,
    1312       567,  591,  565,  567,  571,  571,  571,  571,  571,  571,
    1313       595,  599,  590,  601,  567,  592,  790,  604,  591,  587,
    1314       598,  567,  571,  600,  587,  571,  567,  595,  573,  573,
    1315       573,  573,  573,  573,  597,  598,  571,  587,  602,  603,
    1316       600,  602,  605,  571,  604,  606,  573,  597,  571,  573,
    1317 
    1318       607,  608,  609,  611,  612,  617,  603,  605,  613,  607,
    1319       573,  616,  619,  623,  622,  606,  630,  573,  633,  608,
    1320       623,  789,  573,  622,  609,  611,  630,  612,  632,  619,
    1321       613,  616,  617,  633,  662,  665,  671,  632,  651,  651,
    1322       651,  651,  651,  651,  652,  652,  652,  652,  652,  652,
    1323       663,  666,  667,  668,  671,  662,  651,  667,  666,  651,
    1324       663,  665,  652,  669,  670,  652,  669,  670,  673,  674,
    1325       651,  677,  675,  668,  673,  675,  652,  651,  674,  676,
    1326       680,  678,  651,  652,  678,  689,  679,  684,  652,  653,
    1327       653,  653,  653,  653,  653,  679,  682,  684,  681,  677,
    1328 
    1329       676,  681,  683,  685,  687,  680,  692,  693,  689,  682,
    1330       683,  695,  717,  687,  696,  716,  685,  714,  718,  695,
    1331       716,  653,  715,  696,  719,  720,  692,  717,  718,  693,
    1332       703,  703,  703,  703,  703,  703,  722,  714,  721,  715,
    1333       723,  721,  725,  727,  731,  725,  727,  719,  728,  722,
    1334       729,  720,  750,  729,  730,  728,  752,  730,  753,  731,
    1335       754,  755,  703,  754,  758,  756,  759,  723,  756,  760,
    1336       762,  763,  760,  780,  763,  764,  753,  752,  764,  750,
    1337       765,  781,  758,  755,  782,  785,  783,  782,  781,  765,
    1338       784,  759,  762,  784,  780,  783,  788,  791,  800,  788,
    1339 
    1340       791,  801,  785,  810,  811,  803,  801,  800,  803,  805,
    1341       806,  807,  805,  806,  807,  812,  816,  813,  812,  811,
    1342       813,  787,  786,  810,  779,  778,  777,  776,  775,  774,
    1343       773,  772,  771,  770,  769,  768,  767,  766,  816,  822,
    1344       822,  822,  822,  822,  822,  822,  822,  822,  822,  822,
    1345       822,  822,  822,  822,  822,  822,  823,  823,  823,  823,
    1346       823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
    1347       823,  823,  823,  824,  824,  824,  824,  824,  824,  824,
    1348       824,  824,  824,  824,  824,  824,  824,  824,  824,  824,
    1349       825,  761,  757,  825,  825,  751,  825,  825,  825,  825,
    1350 
    1351       825,  825,  825,  825,  826,  749,  748,  747,  746,  745,
    1352       826,  826,  826,  826,  826,  826,  826,  826,  827,  827,
    1353       827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
    1354       827,  827,  827,  827,  827,  828,  744,  743,  828,  828,
    1355       742,  828,  828,  828,  828,  828,  828,  828,  828,  829,
    1356       741,  829,  829,  740,  829,  829,  829,  829,  829,  829,
    1357       829,  829,  739,  829,  829,  829,  830,  738,  830,  737,
    1358       830,  736,  830,  735,  734,  733,  830,  830,  732,  830,
    1359       830,  831,  726,  724,  831,  831,  831,  831,  831,  831,
    1360       831,  831,  831,  831,  713,  831,  831,  831,  832,  832,
    1361 
    1362       832,  832,  832,  832,  832,  832,  832,  832,  832,  832,
    1363       832,  832,  832,  832,  832,  833,  833,  833,  712,  833,
    1364       711,  710,  709,  708,  833,  833,  834,  707,  706,  834,
    1365       834,  705,  834,  834,  834,  834,  834,  834,  834,  834,
    1366       835,  835,  702,  835,  701,  700,  699,  694,  835,  835,
    1367       836,  836,  691,  836,  690,  688,  686,  672,  836,  836,
    1368       837,  837,  664,  837,  661,  656,  654,  642,  837,  837,
    1369       838,  838,  638,  838,  636,  634,  631,  629,  838,  838,
    1370       839,  839,  628,  839,  627,  626,  625,  624,  839,  839,
    1371       840,  840,  621,  840,  620,  618,  615,  614,  840,  840,
    1372 
    1373       841,  841,  610,  841,  585,  581,  579,  577,  841,  841,
    1374       842,  842,  575,  842,  569,  563,  561,  559,  842,  842,
    1375       843,  843,  557,  843,  555,  553,  551,  549,  843,  843,
    1376       844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
    1377       844,  844,  844,  844,  844,  844,  844,  845,  845,  548,
    1378       845,  547,  544,  541,  535,  529,  845,  846,  846,  846,
    1379       526,  846,  846,  846,  846,  522,  846,  846,  847,  847,
    1380       847,  517,  847,  515,  514,  492,  488,  486,  847,  848,
    1381       848,  484,  848,  482,  480,  478,  477,  848,  848,  849,
    1382       849,  476,  849,  475,  461,  459,  458,  849,  849,  850,
    1383 
    1384       850,  457,  850,  455,  453,  450,  448,  850,  850,  851,
    1385       851,  446,  851,  444,  440,  425,  423,  415,  851,  852,
    1386       852,  414,  852,  407,  405,  403,  379,  852,  852,  853,
    1387       853,  377,  853,  375,  373,  372,  371,  350,  853,  854,
    1388       348,  347,  854,  854,  343,  854,  854,  854,  854,  854,
    1389       854,  854,  854,  855,  855,  855,  855,  855,  855,  855,
    1390       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
    1391       856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
    1392       856,  856,  856,  856,  856,  856,  856,  857,  857,  341,
    1393       857,  339,  337,  333,  331,  857,  857,  858,  858,  330,
    1394 
    1395       858,  329,  320,  307,  286,  858,  858,  859,  859,  265,
    1396       859,  263,  262,  261,  259,  859,  859,  860,  860,  258,
    1397       860,  253,  249,  248,  244,  241,  860,  861,  861,  240,
    1398       861,  229,  228,  223,  222,  861,  861,  862,  862,  219,
    1399       862,  209,  207,  206,  205,  201,  862,  863,  863,  200,
    1400       863,  198,  193,  174,  145,  863,  863,  864,  864,  144,
    1401       864,  139,  137,  135,  127,  124,  864,  865,  865,  123,
    1402       865,  119,  100,   97,   94,  865,  865,  866,  866,   92,
    1403       866,   85,   71,   69,   65,   44,  866,  867,  867,   39,
    1404       867,   36,   33,   18,   11,  867,  867,  868,  868,    4,
    1405 
    1406       868,    3,    0,    0,    0,    0,  868,  869,  869,    0,
    1407       869,    0,    0,    0,    0,  869,  869,  870,  870,    0,
    1408       870,    0,    0,    0,    0,    0,  870,  871,  871,    0,
    1409       871,    0,    0,    0,    0,  871,  871,  872,  872,    0,
    1410       872,    0,    0,    0,    0,    0,  872,  873,  873,    0,
    1411       873,    0,  873,    0,    0,  873,  873,  874,  874,    0,
    1412       874,    0,  874,    0,    0,  874,  874,  875,  875,  875,
    1413         0,  875,  875,  875,  875,    0,  875,  875,  876,  876,
    1414         0,  876,    0,    0,    0,    0,  876,  876,  877,  877,
    1415         0,  877,    0,    0,    0,    0,  877,  877,  878,  878,
    1416 
    1417         0,  878,    0,    0,    0,    0,  878,  878,  879,  879,
    1418         0,  879,    0,    0,    0,    0,    0,  879,  880,  880,
    1419         0,  880,    0,    0,    0,    0,  880,  880,  881,  881,
    1420         0,  881,    0,    0,    0,    0,    0,  881,  882,  882,
    1421         0,  882,    0,    0,    0,    0,  882,  882,  883,  883,
    1422         0,  883,    0,    0,    0,    0,    0,  883,  884,  884,
    1423         0,  884,    0,    0,    0,    0,  884,  884,  885,  885,
    1424         0,  885,    0,    0,    0,    0,    0,  885,  886,    0,
    1425         0,  886,  886,    0,  886,  886,  886,  886,  886,  886,
    1426       886,  886,  887,  887,  887,  887,  887,  887,  887,  887,
    1427 
    1428       887,  887,  887,  887,  887,  887,  887,  887,  887,  888,
    1429       888,    0,  888,    0,    0,    0,    0,  888,  888,  889,
    1430       889,    0,  889,    0,    0,    0,    0,    0,  889,  890,
    1431       890,    0,  890,    0,    0,    0,    0,  890,  890,  891,
    1432       891,    0,  891,    0,    0,    0,    0,    0,  891,  892,
    1433       892,    0,  892,    0,    0,    0,    0,  892,  892,  893,
    1434       893,    0,  893,    0,    0,    0,    0,    0,  893,  894,
    1435       894,    0,  894,    0,    0,    0,    0,  894,  894,  895,
    1436       895,    0,  895,    0,    0,    0,    0,    0,  895,  896,
    1437       896,    0,  896,    0,    0,    0,    0,  896,  896,  897,
    1438 
    1439       897,    0,  897,    0,    0,    0,    0,    0,  897,  898,
    1440       898,    0,  898,    0,    0,    0,    0,  898,  898,  899,
    1441       899,    0,  899,    0,    0,    0,    0,    0,  899,  900,
    1442       900,    0,  900,    0,    0,    0,    0,  900,  900,  901,
    1443       901,    0,  901,    0,    0,    0,    0,  901,  901,  902,
    1444       902,    0,  902,    0,    0,    0,    0,    0,  902,  903,
    1445       903,    0,  903,    0,    0,    0,    0,  903,  903,  904,
    1446       904,    0,  904,    0,    0,    0,    0,    0,  904,  905,
    1447       905,    0,  905,    0,  905,    0,    0,  905,  905,  906,
    1448       906,    0,  906,    0,    0,    0,    0,  906,  906,  907,
    1449 
    1450       907,    0,  907,    0,    0,    0,    0,  907,  907,  908,
    1451       908,    0,  908,    0,    0,    0,    0,    0,  908,  909,
    1452       909,    0,  909,    0,    0,    0,    0,  909,  909,  910,
    1453       910,    0,  910,    0,    0,    0,    0,    0,  910,  911,
    1454       911,    0,  911,    0,    0,    0,    0,  911,  911,  912,
    1455       912,    0,  912,    0,    0,    0,    0,    0,  912,  913,
    1456       913,    0,  913,    0,    0,    0,    0,  913,  913,  914,
    1457       914,    0,  914,    0,    0,    0,    0,    0,  914,  915,
    1458       915,    0,  915,    0,    0,    0,    0,  915,  915,  916,
    1459       916,    0,  916,    0,    0,    0,    0,    0,  916,  917,
    1460 
    1461       917,    0,  917,    0,    0,    0,    0,  917,  917,  918,
    1462       918,    0,  918,    0,    0,    0,    0,    0,  918,  919,
    1463         0,    0,  919,  919,    0,  919,  919,  919,  919,  919,
    1464       919,  919,  919,  920,  920,  920,  920,  920,  920,  920,
    1465       920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
    1466       921,  921,    0,  921,    0,    0,    0,    0,  921,  921,
    1467       922,  922,    0,  922,    0,    0,    0,    0,    0,  922,
    1468       923,  923,    0,  923,    0,    0,    0,    0,  923,  923,
    1469       924,  924,    0,  924,    0,    0,    0,    0,    0,  924,
    1470       925,  925,    0,  925,    0,    0,    0,    0,  925,  925,
    1471 
    1472       926,  926,    0,  926,    0,    0,    0,    0,    0,  926,
    1473       927,  927,    0,  927,    0,    0,    0,    0,  927,  927,
    1474       928,  928,    0,  928,    0,    0,    0,    0,    0,  928,
    1475       929,  929,    0,  929,    0,    0,    0,    0,  929,  929,
    1476       930,  930,    0,  930,    0,    0,    0,    0,    0,  930,
    1477       931,  931,    0,  931,    0,    0,    0,    0,  931,  931,
    1478       932,  932,    0,  932,    0,    0,    0,    0,    0,  932,
    1479       933,  933,    0,  933,    0,    0,    0,    0,  933,  933,
    1480       934,  934,    0,  934,    0,    0,    0,    0,    0,  934,
    1481       935,  935,    0,  935,    0,    0,    0,    0,  935,  935,
    1482 
    1483       936,  936,    0,  936,    0,    0,    0,    0,    0,  936,
    1484       937,  937,    0,  937,    0,    0,    0,    0,  937,  937,
    1485       938,  938,    0,  938,    0,    0,    0,    0,  938,  938,
    1486       939,  939,    0,  939,    0,    0,    0,    0,    0,  939,
    1487       940,  940,    0,  940,    0,    0,    0,    0,  940,  940,
    1488       941,  941,    0,  941,    0,    0,    0,    0,    0,  941,
    1489       942,  942,    0,  942,    0,    0,    0,    0,  942,  942,
    1490       943,  943,    0,  943,    0,    0,    0,    0,    0,  943,
    1491       944,  944,    0,  944,    0,    0,    0,    0,  944,  944,
    1492       945,  945,    0,  945,    0,    0,    0,    0,    0,  945,
    1493 
    1494       946,  946,    0,  946,    0,    0,    0,    0,    0,  946,
    1495       947,  947,    0,  947,    0,    0,    0,    0,    0,  947,
    1496       948,    0,    0,  948,  948,    0,  948,  948,  948,  948,
    1497       948,  948,  948,  948,  949,  949,    0,  949,    0,    0,
    1498         0,    0,    0,  949,  950,  950,  950,  950,  950,  950,
    1499       950,  950,  950,  950,  950,  950,  950,  950,  950,  950,
    1500       950,  951,  951,    0,  951,    0,    0,    0,    0,  951,
    1501       951,  952,  952,    0,  952,    0,    0,    0,    0,    0,
    1502       952,  953,  953,    0,  953,    0,    0,    0,    0,  953,
    1503       953,  954,  954,    0,  954,    0,    0,    0,    0,    0,
    1504 
    1505       954,  955,  955,    0,  955,    0,    0,    0,    0,    0,
    1506       955,  956,  956,    0,  956,    0,    0,    0,    0,    0,
    1507       956,  957,    0,    0,  957,  957,    0,  957,  957,  957,
    1508       957,  957,  957,  957,  957,  958,  958,    0,  958,    0,
    1509         0,    0,    0,    0,  958,  959,  959,    0,  959,    0,
    1510         0,    0,    0,    0,  959,  960,  960,    0,  960,    0,
    1511         0,    0,    0,    0,  960,  961,  961,    0,  961,    0,
    1512         0,    0,    0,    0,  961,  962,  962,    0,  962,    0,
    1513         0,    0,    0,    0,  962,  963,  963,    0,  963,    0,
    1514         0,    0,    0,    0,  963,  964,  964,    0,  964,    0,
    1515 
    1516         0,    0,    0,    0,  964,  965,  965,    0,  965,    0,
    1517         0,    0,    0,  965,  965,  966,  966,    0,  966,    0,
    1518         0,    0,    0,    0,  966,  967,  967,    0,  967,    0,
    1519         0,    0,    0,  967,  967,  968,  968,    0,  968,    0,
    1520         0,    0,    0,    0,  968,  969,  969,    0,  969,    0,
    1521         0,    0,    0,    0,  969,  970,  970,    0,  970,    0,
    1522         0,    0,    0,    0,  970,  971,  971,    0,  971,    0,
    1523         0,    0,    0,    0,  971,  972,  972,    0,  972,    0,
    1524         0,    0,    0,  972,  972,  973,    0,    0,  973,  973,
    1525         0,  973,  973,  973,  973,  973,  973,  973,  973,  974,
    1526 
    1527       974,    0,  974,    0,    0,    0,    0,    0,  974,  975,
    1528       975,    0,  975,    0,    0,    0,    0,    0,  975,  976,
    1529       976,    0,  976,    0,    0,    0,    0,  976,  976,  977,
    1530       977,    0,  977,    0,    0,    0,    0,  977,  977,  978,
    1531       978,    0,  978,    0,    0,    0,    0,  978,  978,  979,
    1532       979,    0,  979,    0,    0,    0,    0,    0,  979,  980,
    1533       980,    0,  980,    0,    0,    0,    0,  980,  980,  981,
    1534       981,    0,  981,    0,    0,    0,    0,  981,  981,  982,
    1535       982,    0,  982,    0,    0,    0,    0,  982,  982,  983,
    1536       983,    0,  983,    0,    0,    0,    0,  983,  983,  984,
    1537 
    1538       984,    0,  984,    0,    0,    0,    0,  984,  984,  985,
    1539       985,    0,  985,    0,    0,    0,    0,  985,  985,  986,
    1540       986,    0,  986,    0,    0,    0,    0,  986,  986,  987,
    1541       987,    0,  987,    0,    0,    0,    0,  987,  987,  988,
    1542       988,    0,  988,    0,    0,    0,    0,  988,  988,  989,
    1543       989,    0,  989,    0,    0,    0,    0,  989,  989,  990,
    1544       990,    0,  990,    0,    0,    0,    0,  990,  990,  991,
    1545       991,    0,  991,    0,    0,    0,    0,  991,  991,  992,
    1546       992,    0,  992,    0,    0,    0,    0,  992,  992,  993,
    1547       993,    0,  993,    0,    0,    0,    0,  993,  993,  994,
    1548 
    1549       994,    0,  994,    0,    0,    0,    0,  994,  994,  995,
    1550       995,    0,  995,    0,    0,    0,    0,  995,  995,  821,
    1551       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1552       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1553       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1554       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1555       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1556       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1557       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1558       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
    1559 
    1560       821,  821,  821,  821
     1100      154,   66,   81,   81,   81,   81,   81,   81,   59,  114,
     1101       38,   59,  154,   38,   82,   82,   82,   82,   82,   82,
     1102
     1103      129,   67,   67,  130,  818,   59,   67,  103,  103,  103,
     1104      103,  133,  298,  133,  129,  130,  129,  130,  298,  109,
     1105       38,   38,   67,   67,   67,   67,   67,   67,   76,   76,
     1106      134,  134,  134,   76,  103,   76,  105,  171,  105,  103,
     1107       76,  105,  105,  105,  105,  105,  105,  161,  109,   76,
     1108       76,   76,   76,  109,  110,  132,  132,  171,  132,  115,
     1109       76,  813,  103,  104,  161,  104,  104,  104,  104,  104,
     1110      104,  147,  110,  105,  148,   76,  109,  115,   76,  136,
     1111      110,  136,  104,   76,   76,  115,  147,   76,   76,  138,
     1112      149,  138,  148,  147,  143,   76,  151,  104,   76,  143,
     1113
     1114       76,   76,   76,  104,   76,   84,  152,  150,  149,   84,
     1115       84,  153,  151,  157,   84,   84,  150,   84,  158,   84,
     1116      156,  165,  162,  163,  152,  812,  808,  158,   84,   84,
     1117       84,  159,  162,  153,  155,  157,  156,  143,  164,  155,
     1118      167,  155,  165,  155,  155,  160,  163,  155,   84,  155,
     1119      160,   84,  159,  159,  155,  155,  155,  168,  155,  169,
     1120      170,  172,  167,  160,  166,  164,  213,  173,  213,  177,
     1121      806,  175,  168,  176,  177,  236,  169,  179,  170,   84,
     1122       98,   98,   98,   98,   98,   98,  175,  166,  172,  173,
     1123      176,  181,  178,  175,  180,  179,  181,   98,   98,  271,
     1124
     1125      183,   98,  182,  178,  184,  180,  186,  200,  189,  236,
     1126      803,  181,   98,  178,  178,  182,  185,  271,   98,   98,
     1127      183,  189,  180,  187,   98,  102,  102,  102,  102,  102,
     1128      102,  184,  188,  200,  440,  185,  187,  214,  215,  214,
     1129      215,  241,  102,  102,  187,  188,  102,  188,  275,  186,
     1130      204,  204,  186,  275,  217,  204,  218,  102,  218,  440,
     1131      193,  193,  287,  102,  102,  193,  217,  241,  217,  102,
     1132      192,  192,  192,  192,  192,  192,  219,  219,  192,  219,
     1133      249,  193,  193,  193,  193,  193,  193,  195,  195,  287,
     1134      285,  216,  195,  197,  197,  220,  802,  220,  197,  285,
     1135
     1136      197,  207,  207,  207,  207,  216,  249,  216,  195,  195,
     1137      195,  195,  195,  195,  197,  197,  197,  197,  197,  197,
     1138      221,  221,  221,  223,  224,  223,  224,  237,  237,  237,
     1139      237,  237,  237,  207,  228,  228,  228,  228,  228,  228,
     1140      229,  259,  229,  259,  237,  229,  229,  229,  229,  229,
     1141      229,  228,  228,  234,  234,  228,  260,  234,  260,  237,
     1142      541,  272,  277,  270,  284,  237,  228,  277,  263,  284,
     1143      541,  281,  228,  228,  234,  234,  270,  229,  228,  272,
     1144      234,  238,  238,  238,  238,  238,  238,  239,  239,  239,
     1145      239,  239,  239,  240,  263,  240,  276,  281,  240,  240,
     1146
     1147      240,  240,  240,  240,  246,  239,  801,  800,  239,  248,
     1148      248,  248,  248,  248,  248,  279,  276,  273,  274,  239,
     1149      253,  253,  253,  253,  253,  253,  239,  246,  278,  246,
     1150      279,  239,  246,  273,  282,  274,  279,  279,  246,  280,
     1151      286,  248,  291,  283,  288,  290,  292,  291,  278,  282,
     1152      246,  294,  253,  286,  246,  292,  295,  280,  246,  283,
     1153      283,  293,  288,  290,  296,  297,  300,  301,  293,  299,
     1154      297,  294,  302,  304,  295,  300,  303,  305,  304,  306,
     1155      307,  302,  305,  301,  306,  296,  296,  308,  299,  309,
     1156      314,  303,  311,  312,  313,  315,  316,  317,  319,  307,
     1157
     1158      318,  306,  309,  311,  320,  308,  321,  313,  312,  318,
     1159      324,  322,  314,  325,  317,  326,  316,  327,  315,  324,
     1160      319,  329,  330,  328,  386,  385,  329,  320,  321,  322,
     1161      327,  328,  332,  326,  331,  331,  385,  330,  332,  331,
     1162      386,  331,  339,  339,  339,  339,  340,  340,  340,  340,
     1163      349,  350,  349,  350,  388,  799,  325,  356,  356,  356,
     1164      356,  356,  356,  357,  357,  357,  357,  357,  357,  370,
     1165      358,  392,  358,  388,  339,  358,  358,  358,  358,  358,
     1166      358,  357,  389,  390,  357,  359,  359,  359,  359,  359,
     1167      359,  389,  370,  392,  390,  357,  360,  360,  360,  360,
     1168
     1169      360,  360,  357,  403,  798,  365,  366,  357,  361,  361,
     1170      361,  361,  361,  361,  365,  366,  372,  359,  362,  362,
     1171      362,  362,  362,  362,  403,  395,  361,  396,  360,  361,
     1172      365,  366,  368,  367,  372,  391,  362,  368,  387,  362,
     1173      361,  395,  372,  400,  391,  393,  394,  361,  400,  396,
     1174      362,  797,  361,  387,  393,  796,  367,  362,  367,  394,
     1175      397,  367,  362,  368,  369,  371,  369,  367,  399,  369,
     1176      369,  369,  369,  369,  369,  398,  397,  397,  402,  367,
     1177      401,  404,  408,  367,  402,  405,  399,  367,  371,  415,
     1178      371,  406,  404,  371,  413,  401,  408,  398,  410,  371,
     1179
     1180      412,  369,  401,  420,  405,  414,  406,  416,  417,  421,
     1181      410,  371,  415,  422,  414,  371,  413,  417,  414,  371,
     1182      423,  412,  416,  420,  424,  425,  426,  428,  422,  430,
     1183      431,  421,  435,  432,  433,  426,  434,  436,  443,  424,
     1184      438,  435,  423,  437,  428,  425,  442,  438,  445,  443,
     1185      439,  431,  430,  432,  433,  436,  437,  439,  434,  441,
     1186      446,  504,  447,  442,  504,  473,  470,  441,  447,  446,
     1187      445,  456,  456,  456,  456,  470,  494,  441,  467,  467,
     1188      467,  467,  467,  467,  468,  468,  468,  468,  468,  468,
     1189      473,  470,  474,  494,  472,  495,  467,  497,  499,  467,
     1190
     1191      498,  501,  468,  472,  500,  468,  506,  505,  495,  794,
     1192      467,  499,  497,  503,  501,  507,  468,  467,  474,  472,
     1193      498,  515,  467,  468,  503,  506,  500,  505,  468,  469,
     1194      469,  469,  469,  469,  469,  471,  507,  471,  515,  793,
     1195      471,  471,  471,  471,  471,  471,  476,  476,  476,  476,
     1196      476,  476,  477,  477,  477,  477,  477,  477,  478,  514,
     1197      478,  469,  508,  478,  478,  478,  478,  478,  478,  502,
     1198      477,  508,  471,  477,  502,  509,  510,  511,  522,  513,
     1199      509,  514,  523,  516,  477,  524,  520,  510,  513,  517,
     1200      511,  477,  516,  525,  517,  520,  477,  527,  528,  523,
     1201
     1202      524,  529,  525,  531,  522,  536,  532,  537,  534,  538,
     1203      528,  532,  535,  543,  527,  540,  529,  534,  531,  544,
     1204      537,  535,  542,  540,  546,  549,  538,  536,  547,  542,
     1205      550,  544,  592,  546,  597,  543,  791,  790,  547,  592,
     1206      596,  597,  549,  550,  569,  569,  569,  569,  569,  569,
     1207      570,  570,  570,  570,  570,  570,  571,  571,  571,  571,
     1208      571,  571,  572,  596,  572,  610,  593,  572,  572,  572,
     1209      572,  572,  572,  594,  571,  593,  569,  571,  575,  575,
     1210      575,  575,  575,  575,  595,  610,  594,  600,  571,  598,
     1211      600,  599,  603,  591,  602,  571,  575,  598,  591,  575,
     1212
     1213      571,  595,  577,  577,  577,  577,  577,  577,  599,  602,
     1214      575,  591,  601,  604,  603,  605,  606,  575,  607,  606,
     1215      577,  608,  575,  577,  609,  601,  612,  611,  613,  615,
     1216      604,  616,  620,  617,  577,  607,  611,  605,  621,  609,
     1217      623,  577,  627,  634,  612,  637,  577,  626,  608,  627,
     1218      613,  615,  620,  634,  616,  617,  626,  623,  636,  666,
     1219      637,  669,  672,  673,  680,  621,  673,  636,  655,  655,
     1220      655,  655,  655,  655,  656,  656,  656,  656,  656,  656,
     1221      666,  667,  672,  670,  675,  680,  655,  669,  671,  655,
     1222      670,  667,  656,  671,  674,  656,  678,  674,  677,  681,
     1223
     1224      655,  683,  675,  684,  677,  678,  656,  655,  679,  732,
     1225      683,  679,  655,  656,  682,  696,  732,  682,  656,  657,
     1226      657,  657,  657,  657,  657,  686,  685,  681,  684,  685,
     1227      688,  687,  689,  691,  693,  696,  697,  700,  686,  687,
     1228      688,  699,  691,  723,  722,  689,  700,  718,  719,  699,
     1229      720,  657,  724,  721,  722,  720,  783,  693,  697,  707,
     1230      707,  707,  707,  707,  707,  719,  723,  718,  721,  725,
     1231      726,  727,  725,  729,  731,  735,  729,  731,  724,  733,
     1232      754,  734,  733,  726,  734,  756,  757,  759,  763,  758,
     1233      735,  707,  758,  760,  762,  766,  760,  764,  727,  767,
     1234
     1235      764,  769,  767,  784,  757,  768,  756,  754,  768,  759,
     1236      769,  785,  762,  763,  787,  789,  786,  766,  785,  786,
     1237      782,  781,  788,  787,  784,  788,  792,  795,  804,  792,
     1238      795,  805,  789,  814,  815,  807,  805,  804,  807,  809,
     1239      810,  811,  809,  810,  811,  816,  820,  817,  816,  815,
     1240      817,  780,  779,  814,  778,  777,  776,  775,  774,  773,
     1241      772,  771,  770,  765,  761,  755,  753,  752,  820,  826,
     1242      826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
     1243      826,  827,  827,  827,  827,  827,  827,  827,  827,  827,
     1244      827,  827,  827,  828,  828,  828,  828,  828,  828,  828,
     1245
     1246      828,  828,  828,  828,  828,  829,  751,  750,  829,  829,
     1247      829,  829,  829,  829,  830,  749,  748,  747,  830,  830,
     1248      830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
     1249      831,  831,  831,  831,  831,  832,  746,  745,  832,  832,
     1250      832,  832,  832,  832,  833,  744,  833,  833,  743,  833,
     1251      833,  833,  833,  833,  742,  833,  834,  741,  740,  834,
     1252      834,  834,  834,  834,  834,  834,  739,  834,  835,  835,
     1253      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
     1254      836,  836,  836,  738,  737,  736,  836,  837,  730,  728,
     1255      837,  837,  837,  837,  837,  837,  838,  838,  717,  716,
     1256
     1257      715,  838,  839,  839,  714,  713,  712,  839,  840,  840,
     1258      711,  710,  709,  840,  841,  841,  706,  705,  704,  841,
     1259      842,  842,  703,  698,  695,  842,  843,  843,  694,  692,
     1260      690,  843,  844,  844,  676,  668,  665,  844,  845,  845,
     1261      660,  658,  646,  845,  846,  846,  642,  640,  638,  846,
     1262      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
     1263      847,  847,  848,  848,  849,  849,  849,  849,  849,  635,
     1264      849,  850,  850,  850,  851,  851,  633,  632,  631,  851,
     1265      852,  852,  630,  629,  628,  852,  853,  853,  625,  624,
     1266      622,  853,  854,  854,  855,  855,  619,  618,  614,  855,
     1267
     1268      856,  856,  857,  589,  585,  857,  857,  857,  857,  857,
     1269      857,  858,  858,  858,  858,  858,  858,  858,  858,  858,
     1270      858,  858,  858,  859,  859,  859,  859,  859,  859,  859,
     1271      859,  859,  859,  859,  859,  860,  860,  583,  581,  579,
     1272      860,  861,  861,  573,  567,  565,  861,  862,  862,  563,
     1273      561,  559,  862,  863,  863,  864,  864,  557,  555,  553,
     1274      864,  865,  865,  866,  866,  552,  551,  548,  866,  867,
     1275      867,  868,  868,  545,  539,  533,  868,  869,  869,  870,
     1276      870,  530,  526,  521,  870,  871,  871,  872,  872,  519,
     1277      518,  496,  872,  873,  873,  874,  874,  492,  490,  488,
     1278
     1279      874,  875,  875,  876,  876,  486,  876,  484,  876,  877,
     1280      877,  482,  877,  481,  877,  878,  878,  878,  878,  878,
     1281      480,  878,  879,  879,  479,  465,  463,  879,  880,  880,
     1282      462,  461,  459,  880,  881,  881,  457,  454,  452,  881,
     1283      882,  882,  883,  883,  450,  448,  444,  883,  884,  884,
     1284      885,  885,  429,  427,  419,  885,  886,  886,  887,  887,
     1285      418,  411,  409,  887,  888,  888,  889,  407,  383,  889,
     1286      889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
     1287      890,  890,  890,  890,  890,  890,  890,  891,  891,  381,
     1288      379,  377,  891,  892,  892,  893,  893,  376,  375,  354,
     1289
     1290      893,  894,  894,  895,  895,  352,  351,  347,  895,  896,
     1291      896,  897,  897,  345,  343,  341,  897,  898,  898,  899,
     1292      899,  337,  335,  334,  899,  900,  900,  901,  901,  333,
     1293      323,  310,  901,  902,  902,  903,  903,  289,  268,  266,
     1294      903,  904,  904,  265,  264,  262,  904,  905,  905,  906,
     1295      906,  261,  256,  252,  906,  907,  907,  908,  908,  251,
     1296      908,  247,  908,  909,  909,  244,  243,  232,  909,  910,
     1297      910,  231,  226,  225,  910,  911,  911,  912,  912,  222,
     1298      212,  210,  912,  913,  913,  914,  914,  209,  208,  202,
     1299      914,  915,  915,  916,  916,  201,  199,  194,  916,  917,
     1300
     1301      917,  918,  918,  174,  145,  144,  918,  919,  919,  920,
     1302      920,  139,  137,  135,  920,  921,  921,  922,  127,  124,
     1303      922,  922,  922,  922,  922,  922,  923,  923,  923,  923,
     1304      923,  923,  923,  923,  923,  923,  923,  923,  924,  924,
     1305      123,  119,  100,  924,  925,  925,  926,  926,   97,   94,
     1306       92,  926,  927,  927,  928,  928,   85,   71,   69,  928,
     1307      929,  929,  930,  930,   65,   44,   39,  930,  931,  931,
     1308      932,  932,   36,   33,   18,  932,  933,  933,  934,  934,
     1309       11,    4,    3,  934,  935,  935,  936,  936,    0,    0,
     1310        0,  936,  937,  937,  938,  938,    0,    0,    0,  938,
     1311
     1312      939,  939,  940,  940,    0,    0,    0,  940,  941,  941,
     1313        0,    0,    0,  941,  942,  942,  943,  943,    0,    0,
     1314        0,  943,  944,  944,  945,  945,    0,    0,    0,  945,
     1315      946,  946,  947,  947,    0,    0,    0,  947,  948,  948,
     1316      949,  949,  950,  950,  951,    0,    0,  951,  951,  951,
     1317      951,  951,  951,  952,  952,  953,  953,  953,  953,  953,
     1318      953,  953,  953,  953,  953,  953,  953,  954,  954,    0,
     1319        0,    0,  954,  955,  955,  956,  956,    0,    0,    0,
     1320      956,  957,  957,  958,  958,  959,  959,  960,    0,    0,
     1321      960,  960,  960,  960,  960,  960,  961,  961,  962,  962,
     1322
     1323      963,  963,  964,  964,  965,  965,  966,  966,  967,  967,
     1324      968,  968,    0,    0,    0,  968,  969,  969,  970,  970,
     1325        0,    0,    0,  970,  971,  971,  972,  972,  973,  973,
     1326      974,  974,  975,  975,    0,    0,    0,  975,  976,    0,
     1327        0,  976,  976,  976,  976,  976,  976,  977,  977,  978,
     1328      978,  979,  979,    0,    0,    0,  979,  980,  980,    0,
     1329        0,    0,  980,  981,  981,    0,    0,    0,  981,  982,
     1330      982,  983,  983,    0,    0,    0,  983,  984,  984,    0,
     1331        0,    0,  984,  985,  985,    0,    0,    0,  985,  986,
     1332      986,    0,    0,    0,  986,  987,  987,    0,    0,    0,
     1333
     1334      987,  988,  988,    0,    0,    0,  988,  989,  989,    0,
     1335        0,    0,  989,  990,  990,    0,    0,    0,  990,  991,
     1336      991,    0,    0,    0,  991,  992,  992,    0,    0,    0,
     1337      992,  993,  993,    0,    0,    0,  993,  994,  994,    0,
     1338        0,    0,  994,  995,  995,    0,    0,    0,  995,  996,
     1339      996,    0,    0,    0,  996,  997,  997,    0,    0,    0,
     1340      997,  998,  998,    0,    0,    0,  998,  825,  825,  825,
     1341      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1342      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1343      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1344
     1345      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1346      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1347      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1348      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1349      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
     1350      825,  825
    15611351    } ;
    15621352
    15631353/* Table of booleans, true if rule could match eol. */
    1564 static yyconst flex_int32_t yy_rule_can_match_eol[171] =
     1354static yyconst flex_int32_t yy_rule_can_match_eol[172] =
    15651355    {   0,
    156613561, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    15691359    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    15701360    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1571     0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
     1361    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
    15721362    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    15731363    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1574     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
     1364    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
    15751365
    15761366static yy_state_type yy_last_accepting_state;
     
    16001390 * Created On       : Sat Sep 22 08:58:10 2001
    16011391 * Last Modified By : Peter A. Buhr
    1602  * Last Modified On : Wed Jun  3 22:24:07 2015
    1603  * Update Count     : 336
     1392 * Last Modified On : Fri Jun  5 17:50:17 2015
     1393 * Update Count     : 373
    16041394 */
    16051395#line 19 "lex.ll"
     
    16141404#include "lex.h"
    16151405#include "ParseNode.h"
    1616 #include "parser.h"                                                                     // YACC generated definitions based on C++ grammar
     1406#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
    16171407
    16181408char *yyfilename;
     
    16211411#define WHITE_RETURN(x)                                                                 // do nothing
    16221412#define NEWLINE_RETURN()        WHITE_RETURN('\n')
    1623 #define RETURN_VAL(x)           yylval.tok.str = new std::string(yytext); \
     1413#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); \
    16241414                                        yylval.tok.loc.file = yyfilename; \
    16251415                                        yylval.tok.loc.line = yylineno; \
     
    16651455
    16661456
    1667 #line 1668 "Parser/lex.cc"
     1457#line 1458 "Parser/lex.cc"
    16681458
    16691459#define INITIAL 0
     
    18591649        register int yy_act;
    18601650   
    1861 #line 140 "lex.ll"
     1651#line 142 "lex.ll"
    18621652
    18631653                                   /* line directives */
    1864 #line 1865 "Parser/lex.cc"
     1654#line 1655 "Parser/lex.cc"
    18651655
    18661656        if ( !(yy_init) )
     
    19161706                                {
    19171707                                yy_current_state = (int) yy_def[yy_current_state];
    1918                                 if ( yy_current_state >= 822 )
     1708                                if ( yy_current_state >= 826 )
    19191709                                        yy_c = yy_meta[(unsigned int) yy_c];
    19201710                                }
     
    19221712                        ++yy_cp;
    19231713                        }
    1924                 while ( yy_base[yy_current_state] != 3520 );
     1714                while ( yy_base[yy_current_state] != 2568 );
    19251715
    19261716yy_find_action:
     
    19591749/* rule 1 can match eol */
    19601750YY_RULE_SETUP
    1961 #line 142 "lex.ll"
     1751#line 144 "lex.ll"
    19621752{
    19631753        /* " stop highlighting */
     
    19861776/* rule 2 can match eol */
    19871777YY_RULE_SETUP
    1988 #line 165 "lex.ll"
     1778#line 167 "lex.ll"
    19891779;
    19901780        YY_BREAK
     
    19921782case 3:
    19931783YY_RULE_SETUP
    1994 #line 168 "lex.ll"
     1784#line 170 "lex.ll"
    19951785{ BEGIN COMMENT; }
    19961786        YY_BREAK
     
    19981788/* rule 4 can match eol */
    19991789YY_RULE_SETUP
    2000 #line 169 "lex.ll"
     1790#line 171 "lex.ll"
    20011791;
    20021792        YY_BREAK
    20031793case 5:
    20041794YY_RULE_SETUP
    2005 #line 170 "lex.ll"
     1795#line 172 "lex.ll"
    20061796{ BEGIN 0; }
    20071797        YY_BREAK
     
    20101800/* rule 6 can match eol */
    20111801YY_RULE_SETUP
    2012 #line 173 "lex.ll"
     1802#line 175 "lex.ll"
    20131803;
    20141804        YY_BREAK
     
    20161806case 7:
    20171807YY_RULE_SETUP
    2018 #line 176 "lex.ll"
     1808#line 178 "lex.ll"
    20191809{ WHITE_RETURN(' '); }
    20201810        YY_BREAK
    20211811case 8:
    20221812YY_RULE_SETUP
    2023 #line 177 "lex.ll"
     1813#line 179 "lex.ll"
    20241814{ WHITE_RETURN(' '); }
    20251815        YY_BREAK
     
    20271817/* rule 9 can match eol */
    20281818YY_RULE_SETUP
    2029 #line 178 "lex.ll"
     1819#line 180 "lex.ll"
    20301820{ NEWLINE_RETURN(); }
    20311821        YY_BREAK
     
    20331823case 10:
    20341824YY_RULE_SETUP
    2035 #line 181 "lex.ll"
     1825#line 183 "lex.ll"
    20361826{ KEYWORD_RETURN(ALIGNAS); }                    // C11
    20371827        YY_BREAK
    20381828case 11:
    20391829YY_RULE_SETUP
    2040 #line 182 "lex.ll"
     1830#line 184 "lex.ll"
    20411831{ KEYWORD_RETURN(ALIGNOF); }                    // C11
    20421832        YY_BREAK
    20431833case 12:
    20441834YY_RULE_SETUP
    2045 #line 183 "lex.ll"
     1835#line 185 "lex.ll"
    20461836{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    20471837        YY_BREAK
    20481838case 13:
    20491839YY_RULE_SETUP
    2050 #line 184 "lex.ll"
     1840#line 186 "lex.ll"
    20511841{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    20521842        YY_BREAK
    20531843case 14:
    20541844YY_RULE_SETUP
    2055 #line 185 "lex.ll"
     1845#line 187 "lex.ll"
    20561846{ KEYWORD_RETURN(ASM); }
    20571847        YY_BREAK
    20581848case 15:
    20591849YY_RULE_SETUP
    2060 #line 186 "lex.ll"
     1850#line 188 "lex.ll"
    20611851{ KEYWORD_RETURN(ASM); }                                // GCC
    20621852        YY_BREAK
    20631853case 16:
    20641854YY_RULE_SETUP
    2065 #line 187 "lex.ll"
     1855#line 189 "lex.ll"
    20661856{ KEYWORD_RETURN(ASM); }                                // GCC
    20671857        YY_BREAK
    20681858case 17:
    20691859YY_RULE_SETUP
    2070 #line 188 "lex.ll"
     1860#line 190 "lex.ll"
    20711861{ KEYWORD_RETURN(ATOMIC); }                             // C11
    20721862        YY_BREAK
    20731863case 18:
    20741864YY_RULE_SETUP
    2075 #line 189 "lex.ll"
     1865#line 191 "lex.ll"
    20761866{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    20771867        YY_BREAK
    20781868case 19:
    20791869YY_RULE_SETUP
    2080 #line 190 "lex.ll"
     1870#line 192 "lex.ll"
    20811871{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    20821872        YY_BREAK
    20831873case 20:
    20841874YY_RULE_SETUP
    2085 #line 191 "lex.ll"
     1875#line 193 "lex.ll"
    20861876{ KEYWORD_RETURN(AUTO); }
    20871877        YY_BREAK
    20881878case 21:
    20891879YY_RULE_SETUP
    2090 #line 192 "lex.ll"
     1880#line 194 "lex.ll"
    20911881{ KEYWORD_RETURN(BOOL); }                               // C99
    20921882        YY_BREAK
    20931883case 22:
    20941884YY_RULE_SETUP
    2095 #line 193 "lex.ll"
     1885#line 195 "lex.ll"
    20961886{ KEYWORD_RETURN(BREAK); }
    20971887        YY_BREAK
    20981888case 23:
    20991889YY_RULE_SETUP
    2100 #line 194 "lex.ll"
     1890#line 196 "lex.ll"
    21011891{ KEYWORD_RETURN(CASE); }
    21021892        YY_BREAK
    21031893case 24:
    21041894YY_RULE_SETUP
    2105 #line 195 "lex.ll"
     1895#line 197 "lex.ll"
    21061896{ KEYWORD_RETURN(CATCH); }                              // CFA
    21071897        YY_BREAK
    21081898case 25:
    21091899YY_RULE_SETUP
    2110 #line 196 "lex.ll"
     1900#line 198 "lex.ll"
    21111901{ KEYWORD_RETURN(CHAR); }
    21121902        YY_BREAK
    21131903case 26:
    21141904YY_RULE_SETUP
    2115 #line 197 "lex.ll"
     1905#line 199 "lex.ll"
    21161906{ KEYWORD_RETURN(CHOOSE); }                             // CFA
    21171907        YY_BREAK
    21181908case 27:
    21191909YY_RULE_SETUP
    2120 #line 198 "lex.ll"
     1910#line 200 "lex.ll"
    21211911{ KEYWORD_RETURN(COMPLEX); }                    // C99
    21221912        YY_BREAK
    21231913case 28:
    21241914YY_RULE_SETUP
    2125 #line 199 "lex.ll"
     1915#line 201 "lex.ll"
    21261916{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    21271917        YY_BREAK
    21281918case 29:
    21291919YY_RULE_SETUP
    2130 #line 200 "lex.ll"
     1920#line 202 "lex.ll"
    21311921{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    21321922        YY_BREAK
    21331923case 30:
    21341924YY_RULE_SETUP
    2135 #line 201 "lex.ll"
     1925#line 203 "lex.ll"
    21361926{ KEYWORD_RETURN(CONST); }
    21371927        YY_BREAK
    21381928case 31:
    21391929YY_RULE_SETUP
    2140 #line 202 "lex.ll"
     1930#line 204 "lex.ll"
    21411931{ KEYWORD_RETURN(CONST); }                              // GCC
    21421932        YY_BREAK
    21431933case 32:
    21441934YY_RULE_SETUP
    2145 #line 203 "lex.ll"
     1935#line 205 "lex.ll"
    21461936{ KEYWORD_RETURN(CONST); }                              // GCC
    21471937        YY_BREAK
    21481938case 33:
    21491939YY_RULE_SETUP
    2150 #line 204 "lex.ll"
     1940#line 206 "lex.ll"
    21511941{ KEYWORD_RETURN(CONTEXT); }                    // CFA
    21521942        YY_BREAK
    21531943case 34:
    21541944YY_RULE_SETUP
    2155 #line 205 "lex.ll"
     1945#line 207 "lex.ll"
    21561946{ KEYWORD_RETURN(CONTINUE); }
    21571947        YY_BREAK
    21581948case 35:
    21591949YY_RULE_SETUP
    2160 #line 206 "lex.ll"
     1950#line 208 "lex.ll"
    21611951{ KEYWORD_RETURN(DEFAULT); }
    21621952        YY_BREAK
    21631953case 36:
    21641954YY_RULE_SETUP
    2165 #line 207 "lex.ll"
     1955#line 209 "lex.ll"
    21661956{ KEYWORD_RETURN(DO); }
    21671957        YY_BREAK
    21681958case 37:
    21691959YY_RULE_SETUP
    2170 #line 208 "lex.ll"
     1960#line 210 "lex.ll"
    21711961{ KEYWORD_RETURN(DOUBLE); }
    21721962        YY_BREAK
    21731963case 38:
    21741964YY_RULE_SETUP
    2175 #line 209 "lex.ll"
     1965#line 211 "lex.ll"
    21761966{ KEYWORD_RETURN(DTYPE); }                              // CFA
    21771967        YY_BREAK
    21781968case 39:
    21791969YY_RULE_SETUP
    2180 #line 210 "lex.ll"
     1970#line 212 "lex.ll"
    21811971{ KEYWORD_RETURN(ELSE); }
    21821972        YY_BREAK
    21831973case 40:
    21841974YY_RULE_SETUP
    2185 #line 211 "lex.ll"
     1975#line 213 "lex.ll"
    21861976{ KEYWORD_RETURN(ENUM); }
    21871977        YY_BREAK
    21881978case 41:
    21891979YY_RULE_SETUP
    2190 #line 212 "lex.ll"
     1980#line 214 "lex.ll"
    21911981{ KEYWORD_RETURN(EXTENSION); }                  // GCC
    21921982        YY_BREAK
    21931983case 42:
    21941984YY_RULE_SETUP
    2195 #line 213 "lex.ll"
     1985#line 215 "lex.ll"
    21961986{ KEYWORD_RETURN(EXTERN); }
    21971987        YY_BREAK
    21981988case 43:
    21991989YY_RULE_SETUP
    2200 #line 214 "lex.ll"
     1990#line 216 "lex.ll"
    22011991{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    22021992        YY_BREAK
    22031993case 44:
    22041994YY_RULE_SETUP
    2205 #line 215 "lex.ll"
     1995#line 217 "lex.ll"
    22061996{ KEYWORD_RETURN(FINALLY); }                    // CFA
    22071997        YY_BREAK
    22081998case 45:
    22091999YY_RULE_SETUP
    2210 #line 216 "lex.ll"
     2000#line 218 "lex.ll"
    22112001{ KEYWORD_RETURN(FLOAT); }
    22122002        YY_BREAK
    22132003case 46:
    22142004YY_RULE_SETUP
    2215 #line 217 "lex.ll"
     2005#line 219 "lex.ll"
    22162006{ KEYWORD_RETURN(FLOAT); }                              // GCC
    22172007        YY_BREAK
    22182008case 47:
    22192009YY_RULE_SETUP
    2220 #line 218 "lex.ll"
     2010#line 220 "lex.ll"
    22212011{ KEYWORD_RETURN(FOR); }
    22222012        YY_BREAK
    22232013case 48:
    22242014YY_RULE_SETUP
    2225 #line 219 "lex.ll"
     2015#line 221 "lex.ll"
    22262016{ KEYWORD_RETURN(FORALL); }                             // CFA
    22272017        YY_BREAK
    22282018case 49:
    22292019YY_RULE_SETUP
    2230 #line 220 "lex.ll"
     2020#line 222 "lex.ll"
    22312021{ KEYWORD_RETURN(FORTRAN); }
    22322022        YY_BREAK
    22332023case 50:
    22342024YY_RULE_SETUP
    2235 #line 221 "lex.ll"
     2025#line 223 "lex.ll"
    22362026{ KEYWORD_RETURN(FTYPE); }                              // CFA
    22372027        YY_BREAK
    22382028case 51:
    22392029YY_RULE_SETUP
    2240 #line 222 "lex.ll"
     2030#line 224 "lex.ll"
    22412031{ KEYWORD_RETURN(GENERIC); }                    // C11
    22422032        YY_BREAK
    22432033case 52:
    22442034YY_RULE_SETUP
    2245 #line 223 "lex.ll"
     2035#line 225 "lex.ll"
    22462036{ KEYWORD_RETURN(GOTO); }
    22472037        YY_BREAK
    22482038case 53:
    22492039YY_RULE_SETUP
    2250 #line 224 "lex.ll"
     2040#line 226 "lex.ll"
    22512041{ KEYWORD_RETURN(IF); }
    22522042        YY_BREAK
    22532043case 54:
    22542044YY_RULE_SETUP
    2255 #line 225 "lex.ll"
     2045#line 227 "lex.ll"
    22562046{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    22572047        YY_BREAK
    22582048case 55:
    22592049YY_RULE_SETUP
    2260 #line 226 "lex.ll"
     2050#line 228 "lex.ll"
    22612051{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    22622052        YY_BREAK
    22632053case 56:
    22642054YY_RULE_SETUP
    2265 #line 227 "lex.ll"
     2055#line 229 "lex.ll"
    22662056{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    22672057        YY_BREAK
    22682058case 57:
    22692059YY_RULE_SETUP
    2270 #line 228 "lex.ll"
     2060#line 230 "lex.ll"
    22712061{ KEYWORD_RETURN(INLINE); }                             // C99
    22722062        YY_BREAK
    22732063case 58:
    22742064YY_RULE_SETUP
    2275 #line 229 "lex.ll"
     2065#line 231 "lex.ll"
    22762066{ KEYWORD_RETURN(INLINE); }                             // GCC
    22772067        YY_BREAK
    22782068case 59:
    22792069YY_RULE_SETUP
    2280 #line 230 "lex.ll"
     2070#line 232 "lex.ll"
    22812071{ KEYWORD_RETURN(INLINE); }                             // GCC
    22822072        YY_BREAK
    22832073case 60:
    22842074YY_RULE_SETUP
    2285 #line 231 "lex.ll"
     2075#line 233 "lex.ll"
    22862076{ KEYWORD_RETURN(INT); }
    22872077        YY_BREAK
    22882078case 61:
    22892079YY_RULE_SETUP
    2290 #line 232 "lex.ll"
     2080#line 234 "lex.ll"
    22912081{ KEYWORD_RETURN(INT); }                                // GCC
    22922082        YY_BREAK
    22932083case 62:
    22942084YY_RULE_SETUP
    2295 #line 233 "lex.ll"
     2085#line 235 "lex.ll"
    22962086{ KEYWORD_RETURN(LABEL); }                              // GCC
    22972087        YY_BREAK
    22982088case 63:
    22992089YY_RULE_SETUP
    2300 #line 234 "lex.ll"
     2090#line 236 "lex.ll"
    23012091{ KEYWORD_RETURN(LONG); }
    23022092        YY_BREAK
    23032093case 64:
    23042094YY_RULE_SETUP
    2305 #line 235 "lex.ll"
     2095#line 237 "lex.ll"
    23062096{ KEYWORD_RETURN(LVALUE); }                             // CFA
    23072097        YY_BREAK
    23082098case 65:
    23092099YY_RULE_SETUP
    2310 #line 236 "lex.ll"
     2100#line 238 "lex.ll"
    23112101{ KEYWORD_RETURN(NORETURN); }                   // C11
    23122102        YY_BREAK
    23132103case 66:
    23142104YY_RULE_SETUP
    2315 #line 237 "lex.ll"
     2105#line 239 "lex.ll"
    23162106{ KEYWORD_RETURN(REGISTER); }
    23172107        YY_BREAK
    23182108case 67:
    23192109YY_RULE_SETUP
    2320 #line 238 "lex.ll"
     2110#line 240 "lex.ll"
    23212111{ KEYWORD_RETURN(RESTRICT); }                   // C99
    23222112        YY_BREAK
    23232113case 68:
    23242114YY_RULE_SETUP
    2325 #line 239 "lex.ll"
     2115#line 241 "lex.ll"
    23262116{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    23272117        YY_BREAK
    23282118case 69:
    23292119YY_RULE_SETUP
    2330 #line 240 "lex.ll"
     2120#line 242 "lex.ll"
    23312121{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    23322122        YY_BREAK
    23332123case 70:
    23342124YY_RULE_SETUP
    2335 #line 241 "lex.ll"
     2125#line 243 "lex.ll"
    23362126{ KEYWORD_RETURN(RETURN); }
    23372127        YY_BREAK
    23382128case 71:
    23392129YY_RULE_SETUP
    2340 #line 242 "lex.ll"
     2130#line 244 "lex.ll"
    23412131{ KEYWORD_RETURN(SHORT); }
    23422132        YY_BREAK
    23432133case 72:
    23442134YY_RULE_SETUP
    2345 #line 243 "lex.ll"
     2135#line 245 "lex.ll"
    23462136{ KEYWORD_RETURN(SIGNED); }
    23472137        YY_BREAK
    23482138case 73:
    23492139YY_RULE_SETUP
    2350 #line 244 "lex.ll"
     2140#line 246 "lex.ll"
    23512141{ KEYWORD_RETURN(SIGNED); }                             // GCC
    23522142        YY_BREAK
    23532143case 74:
    23542144YY_RULE_SETUP
    2355 #line 245 "lex.ll"
     2145#line 247 "lex.ll"
    23562146{ KEYWORD_RETURN(SIGNED); }                             // GCC
    23572147        YY_BREAK
    23582148case 75:
    23592149YY_RULE_SETUP
    2360 #line 246 "lex.ll"
     2150#line 248 "lex.ll"
    23612151{ KEYWORD_RETURN(SIZEOF); }
    23622152        YY_BREAK
    23632153case 76:
    23642154YY_RULE_SETUP
    2365 #line 247 "lex.ll"
     2155#line 249 "lex.ll"
    23662156{ KEYWORD_RETURN(STATIC); }
    23672157        YY_BREAK
    23682158case 77:
    23692159YY_RULE_SETUP
    2370 #line 248 "lex.ll"
     2160#line 250 "lex.ll"
    23712161{ KEYWORD_RETURN(STATICASSERT); }               // C11
    23722162        YY_BREAK
    23732163case 78:
    23742164YY_RULE_SETUP
    2375 #line 249 "lex.ll"
     2165#line 251 "lex.ll"
    23762166{ KEYWORD_RETURN(STRUCT); }
    23772167        YY_BREAK
    23782168case 79:
    23792169YY_RULE_SETUP
    2380 #line 250 "lex.ll"
     2170#line 252 "lex.ll"
    23812171{ KEYWORD_RETURN(SWITCH); }
    23822172        YY_BREAK
    23832173case 80:
    23842174YY_RULE_SETUP
    2385 #line 251 "lex.ll"
     2175#line 253 "lex.ll"
    23862176{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    23872177        YY_BREAK
    23882178case 81:
    23892179YY_RULE_SETUP
    2390 #line 252 "lex.ll"
     2180#line 254 "lex.ll"
    23912181{ KEYWORD_RETURN(THROW); }                              // CFA
    23922182        YY_BREAK
    23932183case 82:
    23942184YY_RULE_SETUP
    2395 #line 253 "lex.ll"
     2185#line 255 "lex.ll"
    23962186{ KEYWORD_RETURN(TRY); }                                // CFA
    23972187        YY_BREAK
    23982188case 83:
    23992189YY_RULE_SETUP
    2400 #line 254 "lex.ll"
     2190#line 256 "lex.ll"
    24012191{ KEYWORD_RETURN(TYPE); }                               // CFA
    24022192        YY_BREAK
    24032193case 84:
    24042194YY_RULE_SETUP
    2405 #line 255 "lex.ll"
     2195#line 257 "lex.ll"
    24062196{ KEYWORD_RETURN(TYPEDEF); }
    24072197        YY_BREAK
    24082198case 85:
    2409 YY_RULE_SETUP
    2410 #line 256 "lex.ll"
    2411 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2412         YY_BREAK
    2413 case 86:
    2414 YY_RULE_SETUP
    2415 #line 257 "lex.ll"
    2416 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2417         YY_BREAK
    2418 case 87:
    24192199YY_RULE_SETUP
    24202200#line 258 "lex.ll"
    24212201{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    24222202        YY_BREAK
     2203case 86:
     2204YY_RULE_SETUP
     2205#line 259 "lex.ll"
     2206{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2207        YY_BREAK
     2208case 87:
     2209YY_RULE_SETUP
     2210#line 260 "lex.ll"
     2211{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2212        YY_BREAK
    24232213case 88:
    24242214YY_RULE_SETUP
    2425 #line 259 "lex.ll"
     2215#line 261 "lex.ll"
    24262216{ KEYWORD_RETURN(UNION); }
    24272217        YY_BREAK
    24282218case 89:
    24292219YY_RULE_SETUP
    2430 #line 260 "lex.ll"
     2220#line 262 "lex.ll"
    24312221{ KEYWORD_RETURN(UNSIGNED); }
    24322222        YY_BREAK
    24332223case 90:
    24342224YY_RULE_SETUP
    2435 #line 261 "lex.ll"
     2225#line 263 "lex.ll"
    24362226{ KEYWORD_RETURN(VOID); }
    24372227        YY_BREAK
    24382228case 91:
    24392229YY_RULE_SETUP
    2440 #line 262 "lex.ll"
     2230#line 264 "lex.ll"
    24412231{ KEYWORD_RETURN(VOLATILE); }
    24422232        YY_BREAK
    24432233case 92:
    24442234YY_RULE_SETUP
    2445 #line 263 "lex.ll"
     2235#line 265 "lex.ll"
    24462236{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    24472237        YY_BREAK
    24482238case 93:
    24492239YY_RULE_SETUP
    2450 #line 264 "lex.ll"
     2240#line 266 "lex.ll"
    24512241{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    24522242        YY_BREAK
    24532243case 94:
    24542244YY_RULE_SETUP
    2455 #line 265 "lex.ll"
     2245#line 267 "lex.ll"
    24562246{ KEYWORD_RETURN(WHILE); }
    24572247        YY_BREAK
     
    24592249case 95:
    24602250YY_RULE_SETUP
    2461 #line 268 "lex.ll"
     2251#line 270 "lex.ll"
    24622252{ IDENTIFIER_RETURN(); }
    24632253        YY_BREAK
    24642254case 96:
    24652255YY_RULE_SETUP
    2466 #line 269 "lex.ll"
     2256#line 271 "lex.ll"
    24672257{ ATTRIBUTE_RETURN(); }
    24682258        YY_BREAK
    24692259case 97:
    24702260YY_RULE_SETUP
    2471 #line 270 "lex.ll"
     2261#line 272 "lex.ll"
    24722262{ BEGIN BKQUOTE; }
    24732263        YY_BREAK
    24742264case 98:
    24752265YY_RULE_SETUP
    2476 #line 271 "lex.ll"
     2266#line 273 "lex.ll"
    24772267{ IDENTIFIER_RETURN(); }
    24782268        YY_BREAK
    24792269case 99:
    24802270YY_RULE_SETUP
    2481 #line 272 "lex.ll"
     2271#line 274 "lex.ll"
    24822272{ BEGIN 0; }
    24832273        YY_BREAK
     
    24852275case 100:
    24862276YY_RULE_SETUP
    2487 #line 275 "lex.ll"
     2277#line 277 "lex.ll"
    24882278{ NUMERIC_RETURN(ZERO); }                               // CFA
    24892279        YY_BREAK
    24902280case 101:
    24912281YY_RULE_SETUP
    2492 #line 276 "lex.ll"
     2282#line 278 "lex.ll"
    24932283{ NUMERIC_RETURN(ONE); }                                // CFA
    24942284        YY_BREAK
    24952285case 102:
    2496 YY_RULE_SETUP
    2497 #line 277 "lex.ll"
    2498 { NUMERIC_RETURN(INTEGERconstant); }
    2499         YY_BREAK
    2500 case 103:
    2501 YY_RULE_SETUP
    2502 #line 278 "lex.ll"
    2503 { NUMERIC_RETURN(INTEGERconstant); }
    2504         YY_BREAK
    2505 case 104:
    25062286YY_RULE_SETUP
    25072287#line 279 "lex.ll"
    25082288{ NUMERIC_RETURN(INTEGERconstant); }
    25092289        YY_BREAK
     2290case 103:
     2291YY_RULE_SETUP
     2292#line 280 "lex.ll"
     2293{ NUMERIC_RETURN(INTEGERconstant); }
     2294        YY_BREAK
     2295case 104:
     2296YY_RULE_SETUP
     2297#line 281 "lex.ll"
     2298{ NUMERIC_RETURN(INTEGERconstant); }
     2299        YY_BREAK
    25102300case 105:
    25112301YY_RULE_SETUP
    2512 #line 280 "lex.ll"
     2302#line 282 "lex.ll"
    25132303{ NUMERIC_RETURN(FLOATINGconstant); }
    25142304        YY_BREAK
    25152305case 106:
    25162306YY_RULE_SETUP
    2517 #line 281 "lex.ll"
     2307#line 283 "lex.ll"
    25182308{ NUMERIC_RETURN(FLOATINGconstant); }
    25192309        YY_BREAK
     
    25212311case 107:
    25222312YY_RULE_SETUP
    2523 #line 284 "lex.ll"
     2313#line 286 "lex.ll"
    25242314{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    25252315        YY_BREAK
    25262316case 108:
    25272317YY_RULE_SETUP
    2528 #line 285 "lex.ll"
     2318#line 287 "lex.ll"
    25292319{ *strtext += std::string( yytext ); }
    25302320        YY_BREAK
     
    25322322/* rule 109 can match eol */
    25332323YY_RULE_SETUP
    2534 #line 286 "lex.ll"
     2324#line 288 "lex.ll"
    25352325{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    25362326        YY_BREAK
     
    25392329case 110:
    25402330YY_RULE_SETUP
    2541 #line 290 "lex.ll"
     2331#line 292 "lex.ll"
    25422332{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    25432333        YY_BREAK
    25442334case 111:
    25452335YY_RULE_SETUP
    2546 #line 291 "lex.ll"
     2336#line 293 "lex.ll"
    25472337{ *strtext += std::string( yytext ); }
    25482338        YY_BREAK
     
    25502340/* rule 112 can match eol */
    25512341YY_RULE_SETUP
    2552 #line 292 "lex.ll"
    2553 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(STRINGliteral); }
     2342#line 294 "lex.ll"
     2343{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    25542344        YY_BREAK
    25552345/* " stop highlighting */
     2346/* common character/string constant */
    25562347case 113:
    25572348YY_RULE_SETUP
    2558 #line 295 "lex.ll"
     2349#line 298 "lex.ll"
    25592350{ rm_underscore(); *strtext += std::string( yytext ); }
    25602351        YY_BREAK
    25612352case 114:
    2562 YY_RULE_SETUP
    2563 #line 296 "lex.ll"
     2353/* rule 114 can match eol */
     2354YY_RULE_SETUP
     2355#line 299 "lex.ll"
     2356{}                                              // continuation
     2357        YY_BREAK
     2358case 115:
     2359YY_RULE_SETUP
     2360#line 300 "lex.ll"
    25642361{ *strtext += std::string( yytext ); } // unknown escape character
    25652362        YY_BREAK
    25662363/* punctuation */
    2567 case 115:
    2568 YY_RULE_SETUP
    2569 #line 299 "lex.ll"
    2570 { ASCIIOP_RETURN(); }
    2571         YY_BREAK
    25722364case 116:
    2573 YY_RULE_SETUP
    2574 #line 300 "lex.ll"
    2575 { ASCIIOP_RETURN(); }
    2576         YY_BREAK
    2577 case 117:
    2578 YY_RULE_SETUP
    2579 #line 301 "lex.ll"
    2580 { ASCIIOP_RETURN(); }
    2581         YY_BREAK
    2582 case 118:
    2583 YY_RULE_SETUP
    2584 #line 302 "lex.ll"
    2585 { ASCIIOP_RETURN(); }
    2586         YY_BREAK
    2587 case 119:
    25882365YY_RULE_SETUP
    25892366#line 303 "lex.ll"
    25902367{ ASCIIOP_RETURN(); }
    25912368        YY_BREAK
    2592 case 120:
     2369case 117:
    25932370YY_RULE_SETUP
    25942371#line 304 "lex.ll"
    25952372{ ASCIIOP_RETURN(); }
    25962373        YY_BREAK
    2597 case 121:
     2374case 118:
    25982375YY_RULE_SETUP
    25992376#line 305 "lex.ll"
    2600 { ASCIIOP_RETURN(); }                                   // also operator
    2601         YY_BREAK
    2602 case 122:
     2377{ ASCIIOP_RETURN(); }
     2378        YY_BREAK
     2379case 119:
    26032380YY_RULE_SETUP
    26042381#line 306 "lex.ll"
    26052382{ ASCIIOP_RETURN(); }
    26062383        YY_BREAK
    2607 case 123:
     2384case 120:
    26082385YY_RULE_SETUP
    26092386#line 307 "lex.ll"
    26102387{ ASCIIOP_RETURN(); }
    26112388        YY_BREAK
     2389case 121:
     2390YY_RULE_SETUP
     2391#line 308 "lex.ll"
     2392{ ASCIIOP_RETURN(); }
     2393        YY_BREAK
     2394case 122:
     2395YY_RULE_SETUP
     2396#line 309 "lex.ll"
     2397{ ASCIIOP_RETURN(); }                                   // also operator
     2398        YY_BREAK
     2399case 123:
     2400YY_RULE_SETUP
     2401#line 310 "lex.ll"
     2402{ ASCIIOP_RETURN(); }
     2403        YY_BREAK
    26122404case 124:
    26132405YY_RULE_SETUP
    2614 #line 308 "lex.ll"
     2406#line 311 "lex.ll"
     2407{ ASCIIOP_RETURN(); }
     2408        YY_BREAK
     2409case 125:
     2410YY_RULE_SETUP
     2411#line 312 "lex.ll"
    26152412{ ASCIIOP_RETURN(); }                                   // also operator
    26162413        YY_BREAK
    2617 case 125:
    2618 YY_RULE_SETUP
    2619 #line 309 "lex.ll"
     2414case 126:
     2415YY_RULE_SETUP
     2416#line 313 "lex.ll"
    26202417{ NAMEDOP_RETURN(ELLIPSIS); }
    26212418        YY_BREAK
    26222419/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2623 case 126:
    2624 YY_RULE_SETUP
    2625 #line 312 "lex.ll"
     2420case 127:
     2421YY_RULE_SETUP
     2422#line 316 "lex.ll"
    26262423{ RETURN_VAL('['); }
    26272424        YY_BREAK
    2628 case 127:
    2629 YY_RULE_SETUP
    2630 #line 313 "lex.ll"
     2425case 128:
     2426YY_RULE_SETUP
     2427#line 317 "lex.ll"
    26312428{ RETURN_VAL(']'); }
    26322429        YY_BREAK
    2633 case 128:
    2634 YY_RULE_SETUP
    2635 #line 314 "lex.ll"
     2430case 129:
     2431YY_RULE_SETUP
     2432#line 318 "lex.ll"
    26362433{ RETURN_VAL('{'); }
    26372434        YY_BREAK
    2638 case 129:
    2639 YY_RULE_SETUP
    2640 #line 315 "lex.ll"
     2435case 130:
     2436YY_RULE_SETUP
     2437#line 319 "lex.ll"
    26412438{ RETURN_VAL('}'); }
    26422439        YY_BREAK
    26432440/* operators */
    2644 case 130:
    2645 YY_RULE_SETUP
    2646 #line 318 "lex.ll"
    2647 { ASCIIOP_RETURN(); }
    2648         YY_BREAK
    26492441case 131:
    2650 YY_RULE_SETUP
    2651 #line 319 "lex.ll"
    2652 { ASCIIOP_RETURN(); }
    2653         YY_BREAK
    2654 case 132:
    2655 YY_RULE_SETUP
    2656 #line 320 "lex.ll"
    2657 { ASCIIOP_RETURN(); }
    2658         YY_BREAK
    2659 case 133:
    2660 YY_RULE_SETUP
    2661 #line 321 "lex.ll"
    2662 { ASCIIOP_RETURN(); }
    2663         YY_BREAK
    2664 case 134:
    26652442YY_RULE_SETUP
    26662443#line 322 "lex.ll"
    26672444{ ASCIIOP_RETURN(); }
    26682445        YY_BREAK
    2669 case 135:
     2446case 132:
    26702447YY_RULE_SETUP
    26712448#line 323 "lex.ll"
    26722449{ ASCIIOP_RETURN(); }
    26732450        YY_BREAK
    2674 case 136:
     2451case 133:
    26752452YY_RULE_SETUP
    26762453#line 324 "lex.ll"
    26772454{ ASCIIOP_RETURN(); }
    26782455        YY_BREAK
    2679 case 137:
     2456case 134:
    26802457YY_RULE_SETUP
    26812458#line 325 "lex.ll"
    26822459{ ASCIIOP_RETURN(); }
    26832460        YY_BREAK
    2684 case 138:
     2461case 135:
    26852462YY_RULE_SETUP
    26862463#line 326 "lex.ll"
    26872464{ ASCIIOP_RETURN(); }
    26882465        YY_BREAK
    2689 case 139:
     2466case 136:
    26902467YY_RULE_SETUP
    26912468#line 327 "lex.ll"
    26922469{ ASCIIOP_RETURN(); }
    26932470        YY_BREAK
    2694 case 140:
     2471case 137:
    26952472YY_RULE_SETUP
    26962473#line 328 "lex.ll"
    26972474{ ASCIIOP_RETURN(); }
    26982475        YY_BREAK
    2699 case 141:
     2476case 138:
    27002477YY_RULE_SETUP
    27012478#line 329 "lex.ll"
    27022479{ ASCIIOP_RETURN(); }
    27032480        YY_BREAK
    2704 case 142:
     2481case 139:
    27052482YY_RULE_SETUP
    27062483#line 330 "lex.ll"
    27072484{ ASCIIOP_RETURN(); }
    27082485        YY_BREAK
    2709 case 143:
     2486case 140:
    27102487YY_RULE_SETUP
    27112488#line 331 "lex.ll"
    27122489{ ASCIIOP_RETURN(); }
    27132490        YY_BREAK
     2491case 141:
     2492YY_RULE_SETUP
     2493#line 332 "lex.ll"
     2494{ ASCIIOP_RETURN(); }
     2495        YY_BREAK
     2496case 142:
     2497YY_RULE_SETUP
     2498#line 333 "lex.ll"
     2499{ ASCIIOP_RETURN(); }
     2500        YY_BREAK
     2501case 143:
     2502YY_RULE_SETUP
     2503#line 334 "lex.ll"
     2504{ ASCIIOP_RETURN(); }
     2505        YY_BREAK
    27142506case 144:
    27152507YY_RULE_SETUP
    2716 #line 333 "lex.ll"
     2508#line 335 "lex.ll"
     2509{ ASCIIOP_RETURN(); }
     2510        YY_BREAK
     2511case 145:
     2512YY_RULE_SETUP
     2513#line 337 "lex.ll"
    27172514{ NAMEDOP_RETURN(ICR); }
    27182515        YY_BREAK
    2719 case 145:
    2720 YY_RULE_SETUP
    2721 #line 334 "lex.ll"
     2516case 146:
     2517YY_RULE_SETUP
     2518#line 338 "lex.ll"
    27222519{ NAMEDOP_RETURN(DECR); }
    27232520        YY_BREAK
    2724 case 146:
    2725 YY_RULE_SETUP
    2726 #line 335 "lex.ll"
     2521case 147:
     2522YY_RULE_SETUP
     2523#line 339 "lex.ll"
    27272524{ NAMEDOP_RETURN(EQ); }
    27282525        YY_BREAK
    2729 case 147:
    2730 YY_RULE_SETUP
    2731 #line 336 "lex.ll"
     2526case 148:
     2527YY_RULE_SETUP
     2528#line 340 "lex.ll"
    27322529{ NAMEDOP_RETURN(NE); }
    27332530        YY_BREAK
    2734 case 148:
    2735 YY_RULE_SETUP
    2736 #line 337 "lex.ll"
     2531case 149:
     2532YY_RULE_SETUP
     2533#line 341 "lex.ll"
    27372534{ NAMEDOP_RETURN(LS); }
    27382535        YY_BREAK
    2739 case 149:
    2740 YY_RULE_SETUP
    2741 #line 338 "lex.ll"
     2536case 150:
     2537YY_RULE_SETUP
     2538#line 342 "lex.ll"
    27422539{ NAMEDOP_RETURN(RS); }
    27432540        YY_BREAK
    2744 case 150:
    2745 YY_RULE_SETUP
    2746 #line 339 "lex.ll"
     2541case 151:
     2542YY_RULE_SETUP
     2543#line 343 "lex.ll"
    27472544{ NAMEDOP_RETURN(LE); }
    27482545        YY_BREAK
    2749 case 151:
    2750 YY_RULE_SETUP
    2751 #line 340 "lex.ll"
     2546case 152:
     2547YY_RULE_SETUP
     2548#line 344 "lex.ll"
    27522549{ NAMEDOP_RETURN(GE); }
    27532550        YY_BREAK
    2754 case 152:
    2755 YY_RULE_SETUP
    2756 #line 341 "lex.ll"
     2551case 153:
     2552YY_RULE_SETUP
     2553#line 345 "lex.ll"
    27572554{ NAMEDOP_RETURN(ANDAND); }
    27582555        YY_BREAK
    2759 case 153:
    2760 YY_RULE_SETUP
    2761 #line 342 "lex.ll"
     2556case 154:
     2557YY_RULE_SETUP
     2558#line 346 "lex.ll"
    27622559{ NAMEDOP_RETURN(OROR); }
    27632560        YY_BREAK
    2764 case 154:
    2765 YY_RULE_SETUP
    2766 #line 343 "lex.ll"
     2561case 155:
     2562YY_RULE_SETUP
     2563#line 347 "lex.ll"
    27672564{ NAMEDOP_RETURN(ARROW); }
    27682565        YY_BREAK
    2769 case 155:
    2770 YY_RULE_SETUP
    2771 #line 344 "lex.ll"
     2566case 156:
     2567YY_RULE_SETUP
     2568#line 348 "lex.ll"
    27722569{ NAMEDOP_RETURN(PLUSassign); }
    27732570        YY_BREAK
    2774 case 156:
    2775 YY_RULE_SETUP
    2776 #line 345 "lex.ll"
     2571case 157:
     2572YY_RULE_SETUP
     2573#line 349 "lex.ll"
    27772574{ NAMEDOP_RETURN(MINUSassign); }
    27782575        YY_BREAK
    2779 case 157:
    2780 YY_RULE_SETUP
    2781 #line 346 "lex.ll"
     2576case 158:
     2577YY_RULE_SETUP
     2578#line 350 "lex.ll"
    27822579{ NAMEDOP_RETURN(MULTassign); }
    27832580        YY_BREAK
    2784 case 158:
    2785 YY_RULE_SETUP
    2786 #line 347 "lex.ll"
     2581case 159:
     2582YY_RULE_SETUP
     2583#line 351 "lex.ll"
    27872584{ NAMEDOP_RETURN(DIVassign); }
    27882585        YY_BREAK
    2789 case 159:
    2790 YY_RULE_SETUP
    2791 #line 348 "lex.ll"
     2586case 160:
     2587YY_RULE_SETUP
     2588#line 352 "lex.ll"
    27922589{ NAMEDOP_RETURN(MODassign); }
    27932590        YY_BREAK
    2794 case 160:
    2795 YY_RULE_SETUP
    2796 #line 349 "lex.ll"
     2591case 161:
     2592YY_RULE_SETUP
     2593#line 353 "lex.ll"
    27972594{ NAMEDOP_RETURN(ANDassign); }
    27982595        YY_BREAK
    2799 case 161:
    2800 YY_RULE_SETUP
    2801 #line 350 "lex.ll"
     2596case 162:
     2597YY_RULE_SETUP
     2598#line 354 "lex.ll"
    28022599{ NAMEDOP_RETURN(ORassign); }
    28032600        YY_BREAK
    2804 case 162:
    2805 YY_RULE_SETUP
    2806 #line 351 "lex.ll"
     2601case 163:
     2602YY_RULE_SETUP
     2603#line 355 "lex.ll"
    28072604{ NAMEDOP_RETURN(ERassign); }
    28082605        YY_BREAK
    2809 case 163:
    2810 YY_RULE_SETUP
    2811 #line 352 "lex.ll"
     2606case 164:
     2607YY_RULE_SETUP
     2608#line 356 "lex.ll"
    28122609{ NAMEDOP_RETURN(LSassign); }
    28132610        YY_BREAK
    2814 case 164:
    2815 YY_RULE_SETUP
    2816 #line 353 "lex.ll"
     2611case 165:
     2612YY_RULE_SETUP
     2613#line 357 "lex.ll"
    28172614{ NAMEDOP_RETURN(RSassign); }
    28182615        YY_BREAK
    28192616/* CFA, operator identifier */
    2820 case 165:
    2821 YY_RULE_SETUP
    2822 #line 356 "lex.ll"
     2617case 166:
     2618YY_RULE_SETUP
     2619#line 360 "lex.ll"
    28232620{ IDENTIFIER_RETURN(); }                                // unary
    28242621        YY_BREAK
    2825 case 166:
    2826 YY_RULE_SETUP
    2827 #line 357 "lex.ll"
     2622case 167:
     2623YY_RULE_SETUP
     2624#line 361 "lex.ll"
    28282625{ IDENTIFIER_RETURN(); }
    28292626        YY_BREAK
    2830 case 167:
    2831 YY_RULE_SETUP
    2832 #line 358 "lex.ll"
     2627case 168:
     2628YY_RULE_SETUP
     2629#line 362 "lex.ll"
    28332630{ IDENTIFIER_RETURN(); }                // binary
    28342631        YY_BREAK
     
    28592656          an argument list.
    28602657        */
    2861 case 168:
    2862 YY_RULE_SETUP
    2863 #line 385 "lex.ll"
     2658case 169:
     2659YY_RULE_SETUP
     2660#line 389 "lex.ll"
    28642661{
    28652662        // 1 or 2 character unary operator ?
     
    28742671        YY_BREAK
    28752672/* unknown characters */
    2876 case 169:
    2877 YY_RULE_SETUP
    2878 #line 397 "lex.ll"
     2673case 170:
     2674YY_RULE_SETUP
     2675#line 401 "lex.ll"
    28792676{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    28802677        YY_BREAK
    2881 case 170:
    2882 YY_RULE_SETUP
    2883 #line 399 "lex.ll"
     2678case 171:
     2679YY_RULE_SETUP
     2680#line 403 "lex.ll"
    28842681ECHO;
    28852682        YY_BREAK
    2886 #line 2887 "Parser/lex.cc"
     2683#line 2684 "Parser/lex.cc"
    28872684case YY_STATE_EOF(INITIAL):
    28882685case YY_STATE_EOF(COMMENT):
     
    31812978                        {
    31822979                        yy_current_state = (int) yy_def[yy_current_state];
    3183                         if ( yy_current_state >= 822 )
     2980                        if ( yy_current_state >= 826 )
    31842981                                yy_c = yy_meta[(unsigned int) yy_c];
    31852982                        }
     
    32093006                {
    32103007                yy_current_state = (int) yy_def[yy_current_state];
    3211                 if ( yy_current_state >= 822 )
     3008                if ( yy_current_state >= 826 )
    32123009                        yy_c = yy_meta[(unsigned int) yy_c];
    32133010                }
    32143011        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3215         yy_is_jam = (yy_current_state == 821);
     3012        yy_is_jam = (yy_current_state == 825);
    32163013
    32173014        return yy_is_jam ? 0 : yy_current_state;
     
    39003697#define YYTABLES_NAME "yytables"
    39013698
    3902 #line 399 "lex.ll"
     3699#line 403 "lex.ll"
    39033700
    39043701
  • src/Parser/lex.h

    ra65d92e r59db689  
    1010// Created On       : Sat Sep 22 08:58:10 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun  3 21:53:39 2015
    13 // Update Count     : 335
     12// Last Modified On : Sat Jun  6 07:44:39 2015
     13// Update Count     : 338
    1414//
    1515
  • src/Parser/lex.ll

    ra65d92e r59db689  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Wed Jun  3 22:24:07 2015
    13  * Update Count     : 336
     12 * Last Modified On : Fri Jun  5 17:50:17 2015
     13 * Update Count     : 373
    1414 */
    1515
     
    2727#include "lex.h"
    2828#include "ParseNode.h"
    29 #include "parser.h"                                                                     // YACC generated definitions based on C++ grammar
     29#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
    3030
    3131char *yyfilename;
     
    3434#define WHITE_RETURN(x)                                                                 // do nothing
    3535#define NEWLINE_RETURN()        WHITE_RETURN('\n')
    36 #define RETURN_VAL(x)           yylval.tok.str = new std::string(yytext); \
     36#define RETURN_VAL(x)           yylval.tok.str = new std::string( yytext ); \
    3737                                        yylval.tok.loc.file = yyfilename; \
    3838                                        yylval.tok.loc.line = yylineno; \
     
    114114hex_escape "\\""x""_"?{hex_digits}
    115115escape_seq {simple_escape}|{octal_escape}|{hex_escape}|{universal_char}
     116cwide_prefix "L"|"U"|"u"
     117swide_prefix {cwide_prefix}|"u8"
    116118
    117119                                // display/white-space characters
     
    275277"0"                             { NUMERIC_RETURN(ZERO); }                               // CFA
    276278"1"                             { NUMERIC_RETURN(ONE); }                                // CFA
    277 {decimal_constant}      { NUMERIC_RETURN(INTEGERconstant); }
    278 {octal_constant}        { NUMERIC_RETURN(INTEGERconstant); }
    279 {hex_constant}          { NUMERIC_RETURN(INTEGERconstant); }
     279{decimal_constant} { NUMERIC_RETURN(INTEGERconstant); }
     280{octal_constant} { NUMERIC_RETURN(INTEGERconstant); }
     281{hex_constant}  { NUMERIC_RETURN(INTEGERconstant); }
    280282{floating_constant}     { NUMERIC_RETURN(FLOATINGconstant); }
    281283{hex_floating_constant} { NUMERIC_RETURN(FLOATINGconstant); }
    282284
    283285                                /* character constant, allows empty value */
    284 "L"?"_"?[']             { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     286({cwide_prefix}[_]?)?['] { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    285287<QUOTE>[^'\\\n]* { *strtext += std::string( yytext ); }
    286288<QUOTE>['\n]    { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
     
    288290
    289291                                /* string constant */
    290 "L"?"_"?["]             { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     292({swide_prefix}[_]?)?["] { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    291293<STRING>[^"\\\n]* { *strtext += std::string( yytext ); }
    292 <STRING>["\n]   { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(STRINGliteral); }
     294<STRING>["\n]   { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    293295                                /* " stop highlighting */
    294296
     297                                /* common character/string constant */
    295298<QUOTE,STRING>{escape_seq} { rm_underscore(); *strtext += std::string( yytext ); }
    296 <QUOTE,STRING>[\\]      { *strtext += std::string( yytext ); } // unknown escape character
     299<QUOTE,STRING>"\\"{h_white}*"\n" {}                                             // continuation
     300<QUOTE,STRING>"\\" { *strtext += std::string( yytext ); } // unknown escape character
    297301
    298302                                /* punctuation */
  • src/Parser/parser.cc

    ra65d92e r59db689  
    51905190/* Line 1806 of yacc.c  */
    51915191#line 297 "parser.yy"
    5192     { (yyval.constant) = new ConstantNode(ConstantNode::Integer, (yyvsp[(1) - (1)].tok)); }
     5192    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    51935193    break;
    51945194
     
    51975197/* Line 1806 of yacc.c  */
    51985198#line 298 "parser.yy"
    5199     { (yyval.constant) = new ConstantNode(ConstantNode::Float, (yyvsp[(1) - (1)].tok)); }
     5199    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    52005200    break;
    52015201
     
    52045204/* Line 1806 of yacc.c  */
    52055205#line 299 "parser.yy"
    5206     { (yyval.constant) = new ConstantNode(ConstantNode::Character, (yyvsp[(1) - (1)].tok)); }
     5206    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    52075207    break;
    52085208
     
    52115211/* Line 1806 of yacc.c  */
    52125212#line 323 "parser.yy"
    5213     { (yyval.constant) = new ConstantNode(ConstantNode::String, (yyvsp[(1) - (1)].tok)); }
     5213    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    52145214    break;
    52155215
     
    52185218/* Line 1806 of yacc.c  */
    52195219#line 324 "parser.yy"
    5220     { (yyval.constant) = (yyvsp[(1) - (2)].constant)->append( (yyvsp[(2) - (2)].tok) ); }
     5220    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    52215221    break;
    52225222
     
    56595659/* Line 1806 of yacc.c  */
    56605660#line 538 "parser.yy"
    5661     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList((*(yyvsp[(1) - (5)].en),*(yyvsp[(3) - (5)].en),*(yyvsp[(5) - (5)].en)))); }
     5661    { (yyval.en) = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en)) ) ); }
    56625662    break;
    56635663
     
    56735673/* Line 1806 of yacc.c  */
    56745674#line 542 "parser.yy"
    5675     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList(( *(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ))); }
     5675    { (yyval.en) = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en)) ) ); }
    56765676    break;
    56775677
  • src/Parser/parser.yy

    ra65d92e r59db689  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun  4 21:38:06 2015
    13 // Update Count     : 1021
     12// Last Modified On : Sat Jun  6 20:18:36 2015
     13// Update Count     : 1026
    1414//
    1515
     
    295295                // ENUMERATIONconstant is not included here; it is treated as a variable with type
    296296                // "enumeration constant".
    297         INTEGERconstant                                                         { $$ = new ConstantNode(ConstantNode::Integer, $1); }
    298         | FLOATINGconstant                                                      { $$ = new ConstantNode(ConstantNode::Float, $1); }
    299         | CHARACTERconstant                                                     { $$ = new ConstantNode(ConstantNode::Character, $1); }
     297        INTEGERconstant                                                         { $$ = new ConstantNode( ConstantNode::Integer, $1 ); }
     298        | FLOATINGconstant                                                      { $$ = new ConstantNode( ConstantNode::Float, $1 ); }
     299        | CHARACTERconstant                                                     { $$ = new ConstantNode( ConstantNode::Character, $1 ); }
    300300        ;
    301301
     
    321321
    322322string_literal_list:                                                                    // juxtaposed strings are concatenated
    323         STRINGliteral                                                           { $$ = new ConstantNode(ConstantNode::String, $1); }
    324         | string_literal_list STRINGliteral                     { $$ = $1->append( $2 ); }
     323        STRINGliteral                                                           { $$ = new ConstantNode( ConstantNode::String, $1 ); }
     324        | string_literal_list STRINGliteral                     { $$ = $1->appendstr( $2 ); }
    325325        ;
    326326
     
    536536        logical_OR_expression
    537537        | logical_OR_expression '?' comma_expression ':' conditional_expression
    538                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList((*$1,*$3,*$5))); }
     538                { $$ = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*$1, *$3, *$5) ) ); }
    539539        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    540540                { $$=new CompositeExprNode(new OperatorNode(OperatorNode::NCond),$1,$4); }
    541541        | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    542                 { $$ = new CompositeExprNode(new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList(( *$1, *$3, *$5 ))); }
     542                { $$ = new CompositeExprNode( new OperatorNode(OperatorNode::Cond), (ExpressionNode *)mkList( (*$1, *$3, *$5) ) ); }
    543543        ;
    544544
  • src/SynTree/ArrayType.cc

    ra65d92e r59db689  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun  4 21:16:46 2015
    13 // Update Count     : 7
     12// Last Modified On : Sat Jun  6 14:11:48 2015
     13// Update Count     : 9
    1414//
    1515
     
    5050        } // if
    5151        if ( dimension ) {
     52                os << "with dimension of ";
    5253                dimension->print( os, indent );
    5354        } // if
  • src/SynTree/BasicType.cc

    ra65d92e r59db689  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 07:55:16 2015
    13 // Update Count     : 1
     12// Last Modified On : Sat Jun  6 11:52:43 2015
     13// Update Count     : 2
    1414//
    1515
  • src/SynTree/Constant.cc

    ra65d92e r59db689  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 08:13:25 2015
    13 // Update Count     : 1
     12// Last Modified On : Sat Jun  6 12:17:22 2015
     13// Update Count     : 2
    1414//
    1515
     
    2020#include "Type.h"
    2121
    22 Constant::Constant( Type *_type, std::string _value ) : type(_type), value(_value) {}
     22Constant::Constant( Type *type_, std::string value_ ) : type( type_ ), value( value_ ) {}
    2323
    2424Constant::~Constant() {}
  • src/SynTree/Expression.cc

    ra65d92e r59db689  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun  5 07:51:09 2015
    13 // Update Count     : 11
     12// Last Modified On : Sat Jun  6 14:13:39 2015
     13// Update Count     : 14
    1414//
    1515
     
    5050}
    5151
    52 void Expression::print(std::ostream &os, int indent) const {
     52void Expression::print( std::ostream &os, int indent ) const {
    5353        if ( env ) {
    5454                os << std::string( indent, ' ' ) << "with environment:" << std::endl;
     
    7272
    7373void ConstantExpr::print( std::ostream &os, int indent ) const {
    74         os << std::endl;
    75         os << std::string( indent, ' ' ) << "dimension of constant expression: " ;
     74        os << std::string( indent, ' ' ) << "constant expression: " ;
    7675        constant.print( os );
    7776        Expression::print( os, indent );
  • src/SynTree/Type.h

    ra65d92e r59db689  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:01:40 2015
    13 // Update Count     : 1
     12// Last Modified On : Sat Jun  6 14:12:14 2015
     13// Update Count     : 2
    1414//
    1515
     
    110110        }; 
    111111
    112         static const char *typeNames[];                 // string names for basic types, MUST MATCH with Kind
     112        static const char *typeNames[];                                         // string names for basic types, MUST MATCH with Kind
    113113
    114114        BasicType( const Type::Qualifiers &tq, Kind bt );
  • src/examples/constants.c

    ra65d92e r59db689  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:11:03 2015
    13 // Update Count     : 3
     12// Last Modified On : Sat Jun  6 15:08:43 2015
     13// Update Count     : 63
    1414//
    1515
     
    1717        1_234_Ul;
    1818        -0_177;
     19        017777777777;
     20        037777777777;
     21        0x_7f_FF_ff_FF;
    1922        0x_ff_FF_ff_FF;
    20         +9_223_372_036_854_775_807;
    21         12.123_333_E_27;
     23        2_147_483_647;
     24        4_294_967_295;
     25        0777777777777777777777;
     26        01777777777777777777777;
     27        0x_7f_FF_ff_FF_ff_FF_ff_FF;
     28        0x_ff_FF_ff_FF_ff_FF_ff_FF;
     29        9_223_372_036_854_775_807;
     30        18_446_744_073_709_551_615;
     31        12.123_333_E_27L;
    2232        0X_1.ff_ff_ff_ff_ff_fff_P_1023;
    2333        '\0';
    2434        '\1_2_3';
    25         L_'\x_ff_ee';
    26         L"a_bc\u_00_40xyz\xff_AA";
    27         "a_bc\\
    28   u_00_40xyz";
     35        L'\x_ff_ee';
     36        L_"\x_ff_ee";
     37        L"a_b\r\Qyc\u_00_40  x_y_z\xff_AA";
     38        L_"a_b\r\Qyc\u_00_40\   
     39  x_y_z\xff_AA";
     40        "abc" "def" "ghi";
    2941}
    3042
Note: See TracChangeset for help on using the changeset viewer.