Changeset df2be83 for src/SynTree


Ignore:
Timestamp:
Apr 11, 2016, 4:41:29 PM (10 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, 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:
4b8f918
Parents:
5ba653c (diff), e55ca05 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

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

Location:
src/SynTree
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Expression.cc

    r5ba653c rdf2be83  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Dec 09 14:10:29 2015
    13 // Update Count     : 34
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Apr  8 17:16:23 2016
     13// Update Count     : 40
    1414//
    1515
     
    2222
    2323#include "Type.h"
     24#include "Initializer.h"
    2425#include "Expression.h"
    2526#include "Declaration.h"
     
    464465
    465466
     467CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : type( type ), initializer( initializer ) {
     468        add_result( type->clone() );
     469}
     470
     471CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), type( maybeClone( other.type ) ), initializer( maybeClone( other.initializer ) ) {}
     472
     473CompoundLiteralExpr::~CompoundLiteralExpr() {
     474        delete initializer;
     475        delete type;
     476}
     477
     478void CompoundLiteralExpr::print( std::ostream &os, int indent ) const {
     479        os << "Compound Literal Expression: " << std::endl;
     480        if ( type ) type->print( os, indent + 2 );
     481        if ( initializer ) initializer->print( os, indent + 2 );
     482}
     483
    466484
    467485std::ostream & operator<<( std::ostream & out, Expression * expr ) {
  • src/SynTree/Expression.h

    r5ba653c rdf2be83  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Dec 09 14:10:21 2015
    13 // Update Count     : 19
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Apr  8 17:18:06 2016
     13// Update Count     : 21
    1414//
    1515
     
    577577};
    578578
     579/// CompoundLiteralExpr represents a C99 'compound literal'
     580class CompoundLiteralExpr : public Expression {
     581  public:
     582        CompoundLiteralExpr( Type * type, Initializer * initializer );
     583        CompoundLiteralExpr( const CompoundLiteralExpr &other );
     584        ~CompoundLiteralExpr();
     585
     586        Type * get_type() const { return type; }
     587        void set_type( Type * t ) { type = t; }
     588
     589        Initializer * get_initializer() const { return initializer; }
     590        void set_initializer( Initializer * i ) { initializer = i; }
     591
     592        virtual CompoundLiteralExpr *clone() const { return new CompoundLiteralExpr( *this ); }
     593        virtual void accept( Visitor &v ) { v.visit( this ); }
     594        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     595        virtual void print( std::ostream &os, int indent = 0 ) const;
     596  private:
     597        Type * type;
     598        Initializer * initializer;
     599};
     600
    579601std::ostream & operator<<( std::ostream & out, Expression * expr );
    580602
  • src/SynTree/Mutator.cc

    r5ba653c rdf2be83  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:28:20 2016
    13 // Update Count     : 12
     12// Last Modified On : Fri Apr  1 18:05:16 2016
     13// Update Count     : 16
    1414//
    1515
     
    342342}
    343343
     344Expression *Mutator::mutate( CompoundLiteralExpr *compLitExpr ) {
     345        mutateAll( compLitExpr->get_results(), *this );
     346        compLitExpr->set_type( maybeMutate( compLitExpr->get_type(), *this ) );
     347        compLitExpr->set_initializer( maybeMutate( compLitExpr->get_initializer(), *this ) );
     348        return compLitExpr;
     349}
     350
    344351Type *Mutator::mutate( VoidType *voidType ) {
    345352        mutateAll( voidType->get_forall(), *this );
  • src/SynTree/Mutator.h

    r5ba653c rdf2be83  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:33:11 2016
    13 // Update Count     : 9
     12// Last Modified On : Fri Apr  1 17:26:56 2016
     13// Update Count     : 10
    1414//
    1515#include <cassert>
     
    7777        virtual Expression* mutate( AsmExpr *asmExpr );
    7878        virtual Expression* mutate( UntypedValofExpr *valofExpr );
     79        virtual Expression* mutate( CompoundLiteralExpr *compLitExpr );
    7980
    8081        virtual Type* mutate( VoidType *basicType );
  • src/SynTree/SynTree.h

    r5ba653c rdf2be83  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:29:00 2016
    13 // Update Count     : 4
     12// Last Modified On : Fri Apr  1 16:47:44 2016
     13// Update Count     : 5
    1414//
    1515
     
    8282class AsmExpr;
    8383class UntypedValofExpr;
     84class CompoundLiteralExpr;
    8485
    8586class Type;
  • src/SynTree/Visitor.cc

    r5ba653c rdf2be83  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:29:23 2016
    13 // Update Count     : 16
     12// Last Modified On : Fri Apr  1 18:05:13 2016
     13// Update Count     : 18
    1414//
    1515
     
    289289}
    290290
     291void Visitor::visit( CompoundLiteralExpr *compLitExpr ) {
     292        acceptAll( compLitExpr->get_results(), *this );
     293        maybeAccept( compLitExpr->get_type(), *this );
     294        maybeAccept( compLitExpr->get_initializer(), *this );
     295}
     296
    291297void Visitor::visit( VoidType *voidType ) {
    292298        acceptAll( voidType->get_forall(), *this );
  • src/SynTree/Visitor.h

    r5ba653c rdf2be83  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:33:35 2016
    13 // Update Count     : 6
     12// Last Modified On : Fri Apr  1 17:26:55 2016
     13// Update Count     : 7
    1414//
    1515
     
    7777        virtual void visit( AsmExpr *asmExpr );
    7878        virtual void visit( UntypedValofExpr *valofExpr );
     79        virtual void visit( CompoundLiteralExpr *compLitExpr );
    7980
    8081        virtual void visit( VoidType *basicType );
Note: See TracChangeset for help on using the changeset viewer.