Ignore:
Timestamp:
Aug 16, 2016, 8:59:49 AM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
0da3e2c, 13e3b50, 7527e63
Parents:
b1848a0
Message:

more refactoring of parser code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ExpressionNode.cc

    rb1848a0 r7880579  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Aug 15 14:30:42 2016
    13 // Update Count     : 490
     12// Last Modified On : Tue Aug 16 00:09:20 2016
     13// Update Count     : 495
    1414//
    1515
     
    3232using namespace std;
    3333
    34 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {}
     34ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {}
    3535
    3636//##############################################################################
     
    166166} // build_constantStr
    167167
    168 //##############################################################################
    169 
    170168NameExpr * build_varref( const string *name, bool labelp ) {
    171169        return new NameExpr( *name, nullptr );
    172170}
    173 
    174 //##############################################################################
    175171
    176172static const char *OperName[] = {
     
    184180};
    185181
    186 //##############################################################################
    187 
    188182Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    189183        Type *targetType = decl_node->buildType();
    190184        if ( dynamic_cast< VoidType * >( targetType ) ) {
    191185                delete targetType;
    192                 return new CastExpr( maybeBuild<Expression>(expr_node) );
     186                return new CastExpr( maybeBuild< Expression >(expr_node) );
    193187        } else {
    194                 return new CastExpr( maybeBuild<Expression>(expr_node), targetType );
     188                return new CastExpr( maybeBuild< Expression >(expr_node), targetType );
    195189        } // if
    196190}
    197191
    198192Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    199         UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild<Expression>(expr_node) );
     193        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild< Expression >(expr_node) );
    200194        delete member;
    201195        return ret;
     
    204198Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
    205199        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    206         deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
     200        deref->get_args().push_back( maybeBuild< Expression >(expr_node) );
    207201        UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    208202        delete member;
     
    211205
    212206Expression *build_addressOf( ExpressionNode *expr_node ) {
    213                 return new AddressExpr( maybeBuild<Expression>(expr_node) );
     207                return new AddressExpr( maybeBuild< Expression >(expr_node) );
    214208}
    215209Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
    216         return new SizeofExpr( maybeBuild<Expression>(expr_node) );
     210        return new SizeofExpr( maybeBuild< Expression >(expr_node) );
    217211}
    218212Expression *build_sizeOftype( DeclarationNode *decl_node ) {
     
    220214}
    221215Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
    222         return new AlignofExpr( maybeBuild<Expression>(expr_node) );
     216        return new AlignofExpr( maybeBuild< Expression >(expr_node) );
    223217}
    224218Expression *build_alignOftype( DeclarationNode *decl_node ) {
     
    230224
    231225Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
    232         return new LogicalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );
     226        return new LogicalExpr( notZeroExpr( maybeBuild< Expression >(expr_node1) ), notZeroExpr( maybeBuild< Expression >(expr_node2) ), kind );
    233227}
    234228
    235229Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
    236         std::list<Expression *> args;
    237         args.push_back( maybeBuild<Expression>(expr_node) );
     230        std::list< Expression * > args;
     231        args.push_back( maybeBuild< Expression >(expr_node) );
    238232        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    239233}
    240234Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
    241         std::list<Expression *> args;
    242         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node) ) );
     235        std::list< Expression * > args;
     236        args.push_back( new AddressExpr( maybeBuild< Expression >(expr_node) ) );
    243237        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    244238}
    245239Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    246         std::list<Expression *> args;
    247         args.push_back( maybeBuild<Expression>(expr_node1) );
    248         args.push_back( maybeBuild<Expression>(expr_node2) );
     240        std::list< Expression * > args;
     241        args.push_back( maybeBuild< Expression >(expr_node1) );
     242        args.push_back( maybeBuild< Expression >(expr_node2) );
    249243        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    250244}
    251245Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    252         std::list<Expression *> args;
    253         args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node1) ) );
    254         args.push_back( maybeBuild<Expression>(expr_node2) );
     246        std::list< Expression * > args;
     247        args.push_back( new AddressExpr( maybeBuild< Expression >(expr_node1) ) );
     248        args.push_back( maybeBuild< Expression >(expr_node2) );
    255249        return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
    256250}
    257251
    258252Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
    259         return new ConditionalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), maybeBuild<Expression>(expr_node2), maybeBuild<Expression>(expr_node3) );
     253        return new ConditionalExpr( notZeroExpr( maybeBuild< Expression >(expr_node1) ), maybeBuild< Expression >(expr_node2), maybeBuild< Expression >(expr_node3) );
    260254}
    261255
    262256Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    263         return new CommaExpr( maybeBuild<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );
     257        return new CommaExpr( maybeBuild< Expression >(expr_node1), maybeBuild< Expression >(expr_node2) );
    264258}
    265259
    266260Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
    267         return new AttrExpr( var, maybeBuild<Expression>(expr_node) );
     261        return new AttrExpr( var, maybeBuild< Expression >(expr_node) );
    268262}
    269263Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
     
    278272
    279273Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
    280         std::list<Expression *> args;
     274        std::list< Expression * > args;
    281275
    282276        buildList( expr_node, args );
    283         return new UntypedExpr( maybeBuild<Expression>(function), args, nullptr );
     277        return new UntypedExpr( maybeBuild< Expression >(function), args, nullptr );
    284278}
    285279
    286280Expression *build_range( ExpressionNode * low, ExpressionNode *high ) {
    287         Expression *low_cexpr = maybeBuild<Expression>( low );
    288         Expression *high_cexpr = maybeBuild<Expression>( high );
     281        Expression *low_cexpr = maybeBuild< Expression >( low );
     282        Expression *high_cexpr = maybeBuild< Expression >( high );
    289283        return new RangeExpr( low_cexpr, high_cexpr );
    290284}
    291285
    292 //##############################################################################
    293 
    294286Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
    295         return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild<Expression>(operand) );
    296 }
    297 
    298 //##############################################################################
    299 
    300 //void LabelNode::print( std::ostream &os, int indent ) const {}
    301 
    302 //void LabelNode::printOneLine( std::ostream &os, int indent ) const {}
    303 
    304 //##############################################################################
     287        return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild< Expression >(operand) );
     288}
    305289
    306290Expression *build_valexpr( StatementNode *s ) {
    307         return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr );
    308 }
    309 
    310 //##############################################################################
    311 
     291        return new UntypedValofExpr( maybeBuild< Statement >(s), nullptr );
     292}
    312293Expression *build_typevalue( DeclarationNode *decl ) {
    313294        return new TypeExpr( decl->buildType() );
    314295}
    315296
    316 //##############################################################################
    317 
    318297Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
    319         Declaration * newDecl = maybeBuild<Declaration>(decl_node); // compound literal type
     298        Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type
    320299        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
    321                 return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     300                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild< Initializer >(kids) );
    322301        // these types do not have associated type information
    323302        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
    324                 return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
     303                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild< Initializer >(kids) );
    325304        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
    326                 return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
     305                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild< Initializer >(kids) );
    327306        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
    328                 return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
     307                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild< Initializer >(kids) );
    329308        } else {
    330309                assert( false );
Note: See TracChangeset for help on using the changeset viewer.