Changeset 6d49ea3 for src/SynTree
- Timestamp:
- Aug 17, 2017, 5:37:20 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 274ce8c
- Parents:
- 936e9f4
- Location:
- src/SynTree
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/SynTree/Mutator.cc
r936e9f4 r6d49ea3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Mon Jul 24 16:32:00201713 // Update Count : 2 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 17 15:39:37 2017 13 // Update Count : 27 14 14 // 15 15 … … 114 114 115 115 Statement *Mutator::mutate( IfStmt *ifStmt ) { 116 mutateAll( ifStmt->get_initialization(), *this ); 116 117 ifStmt->set_condition( maybeMutate( ifStmt->get_condition(), *this ) ); 117 118 ifStmt->set_thenPart( maybeMutate( ifStmt->get_thenPart(), *this ) ); -
src/SynTree/Statement.cc
r936e9f4 r6d49ea3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Mon Aug 14 12:26:00 201713 // Update Count : 6 511 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 17 16:17:20 2017 13 // Update Count : 67 14 14 // 15 15 … … 32 32 using std::endl; 33 33 34 Statement::Statement( std::list<Label> _labels ) : labels( _labels ) {}34 Statement::Statement( std::list<Label> labels ) : labels( labels ) {} 35 35 36 36 void Statement::print( __attribute__((unused)) std::ostream &, __attribute__((unused)) int indent ) const {} … … 38 38 Statement::~Statement() {} 39 39 40 ExprStmt::ExprStmt( std::list<Label> _labels, Expression *_expr ) : Statement( _labels ), expr( _expr ) {}40 ExprStmt::ExprStmt( std::list<Label> labels, Expression *expr ) : Statement( labels ), expr( expr ) {} 41 41 42 42 ExprStmt::ExprStmt( const ExprStmt &other ) : Statement( other ), expr( maybeClone( other.expr ) ) {} … … 88 88 const char *BranchStmt::brType[] = { "Goto", "Break", "Continue" }; 89 89 90 BranchStmt::BranchStmt( std::list<Label> labels, Label _target, Type _type ) throw ( SemanticError ) :91 Statement( labels ), originalTarget( _target ), target( _target ), computedTarget( NULL ), type( _type ) {90 BranchStmt::BranchStmt( std::list<Label> labels, Label target, Type type ) throw ( SemanticError ) : 91 Statement( labels ), originalTarget( target ), target( target ), computedTarget( NULL ), type( type ) { 92 92 //actually this is a syntactic error signaled by the parser 93 93 if ( type == BranchStmt::Goto && target.empty() ) … … 95 95 } 96 96 97 BranchStmt::BranchStmt( std::list<Label> labels, Expression * _computedTarget, Type _type ) throw ( SemanticError ) :98 Statement( labels ), computedTarget( _computedTarget ), type( _type ) {97 BranchStmt::BranchStmt( std::list<Label> labels, Expression *computedTarget, Type type ) throw ( SemanticError ) : 98 Statement( labels ), computedTarget( computedTarget ), type( type ) { 99 99 if ( type != BranchStmt::Goto || computedTarget == 0 ) 100 100 throw SemanticError("Computed target not valid in branch statement"); … … 105 105 } 106 106 107 ReturnStmt::ReturnStmt( std::list<Label> labels, Expression * _expr ) : Statement( labels ), expr( _expr ) {}107 ReturnStmt::ReturnStmt( std::list<Label> labels, Expression *expr ) : Statement( labels ), expr( expr ) {} 108 108 109 109 ReturnStmt::ReturnStmt( const ReturnStmt & other ) : Statement( other ), expr( maybeClone( other.expr ) ) {} … … 122 122 } 123 123 124 IfStmt::IfStmt( std::list<Label> _labels, Expression *_condition, Statement *_thenPart, Statement *_elsePart):125 Statement( _labels ), condition( _condition ), thenPart( _thenPart ), elsePart( _elsePart) {}124 IfStmt::IfStmt( std::list<Label> labels, Expression *condition, Statement *thenPart, Statement *elsePart, std::list<Statement *> initialization ): 125 Statement( labels ), condition( condition ), thenPart( thenPart ), elsePart( elsePart ), initialization( initialization ) {} 126 126 127 127 IfStmt::IfStmt( const IfStmt & other ) : 128 Statement( other ), condition( maybeClone( other.condition ) ), thenPart( maybeClone( other.thenPart ) ), elsePart( maybeClone( other.elsePart ) ) {} 128 Statement( other ), condition( maybeClone( other.condition ) ), thenPart( maybeClone( other.thenPart ) ), elsePart( maybeClone( other.elsePart ) ) { 129 cloneAll( other.initialization, initialization ); 130 } 129 131 130 132 IfStmt::~IfStmt() { 133 deleteAll( initialization ); 131 134 delete condition; 132 135 delete thenPart; … … 139 142 condition->print( os, indent + 4 ); 140 143 144 if ( !initialization.empty() ) { 145 os << string( indent + 2, ' ' ) << "initialization: \n"; 146 for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) { 147 os << string( indent + 4, ' ' ); 148 (*it)->print( os, indent + 4 ); 149 } 150 os << endl; 151 } 152 141 153 os << string( indent+2, ' ' ) << "... then: " << endl; 142 154 … … 151 163 } 152 164 153 SwitchStmt::SwitchStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_statements ):154 Statement( _labels ), condition( _condition ), statements( _statements ) {165 SwitchStmt::SwitchStmt( std::list<Label> labels, Expression * condition, std::list<Statement *> &statements ): 166 Statement( labels ), condition( condition ), statements( statements ) { 155 167 } 156 168 … … 179 191 } 180 192 181 CaseStmt::CaseStmt( std::list<Label> _labels, Expression *_condition, std::list<Statement *> &_statements, bool deflt ) throw ( SemanticError ) :182 Statement( _labels ), condition( _condition ), stmts( _statements ), _isDefault( deflt ) {193 CaseStmt::CaseStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &statements, bool deflt ) throw ( SemanticError ) : 194 Statement( labels ), condition( condition ), stmts( statements ), _isDefault( deflt ) { 183 195 if ( isDefault() && condition != 0 ) 184 196 throw SemanticError("default with conditions"); … … 216 228 } 217 229 218 WhileStmt::WhileStmt( std::list<Label> labels, Expression *condition _, Statement *body_, bool isDoWhile_):219 Statement( labels ), condition( condition _), body( body_), isDoWhile( isDoWhile_) {230 WhileStmt::WhileStmt( std::list<Label> labels, Expression *condition, Statement *body, bool isDoWhile ): 231 Statement( labels ), condition( condition), body( body), isDoWhile( isDoWhile) { 220 232 } 221 233 … … 238 250 } 239 251 240 ForStmt::ForStmt( std::list<Label> labels, std::list<Statement *> initialization _, Expression *condition_, Expression *increment_, Statement *body_):241 Statement( labels ), initialization( initialization _ ), condition( condition_ ), increment( increment_ ), body( body_) {252 ForStmt::ForStmt( std::list<Label> labels, std::list<Statement *> initialization, Expression *condition, Expression *increment, Statement *body ): 253 Statement( labels ), initialization( initialization ), condition( condition ), increment( increment ), body( body ) { 242 254 } 243 255 … … 317 329 } 318 330 319 TryStmt::TryStmt( std::list<Label> labels, CompoundStmt *tryBlock, std::list<CatchStmt *> & _handlers, FinallyStmt *_finallyBlock ) :320 Statement( labels ), block( tryBlock ), handlers( _handlers ), finallyBlock( _finallyBlock ) {331 TryStmt::TryStmt( std::list<Label> labels, CompoundStmt *tryBlock, std::list<CatchStmt *> &handlers, FinallyStmt *finallyBlock ) : 332 Statement( labels ), block( tryBlock ), handlers( handlers ), finallyBlock( finallyBlock ) { 321 333 } 322 334 … … 351 363 } 352 364 353 CatchStmt::CatchStmt( std::list<Label> labels, Kind _kind, Declaration *_decl, Expression *_cond, Statement *_body ) :354 Statement( labels ), kind ( _kind ), decl ( _decl ), cond ( _cond ), body( _body ) {365 CatchStmt::CatchStmt( std::list<Label> labels, Kind kind, Declaration *decl, Expression *cond, Statement *body ) : 366 Statement( labels ), kind ( kind ), decl ( decl ), cond ( cond ), body( body ) { 355 367 } 356 368 … … 389 401 390 402 391 FinallyStmt::FinallyStmt( std::list<Label> labels, CompoundStmt * _block ) : Statement( labels ), block( _block ) {403 FinallyStmt::FinallyStmt( std::list<Label> labels, CompoundStmt *block ) : Statement( labels ), block( block ) { 392 404 assert( labels.empty() ); // finally statement cannot be labeled 393 405 } -
src/SynTree/Statement.h
r936e9f4 r6d49ea3 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Aug 16 16:28:55201713 // Update Count : 7 012 // Last Modified On : Thu Aug 17 15:37:53 2017 13 // Update Count : 72 14 14 // 15 15 … … 127 127 class IfStmt : public Statement { 128 128 public: 129 std::list<Statement *> initialization;130 129 Expression *condition; 131 130 Statement *thenPart; 132 131 Statement *elsePart; 133 134 IfStmt( std::list<Label> labels, Expression *condition, Statement *thenPart, Statement *elsePart ); 132 std::list<Statement *> initialization; 133 134 IfStmt( std::list<Label> labels, Expression *condition, Statement *thenPart, Statement *elsePart, 135 std::list<Statement *> initialization = std::list<Statement *>() ); 135 136 IfStmt( const IfStmt &other ); 136 137 virtual ~IfStmt(); 137 138 138 139 std::list<Statement *> &get_initialization() { return initialization; } 139 void set_initialization( std::list<Statement *> newValue ) { initialization = newValue; }140 140 Expression *get_condition() { return condition; } 141 141 void set_condition( Expression *newValue ) { condition = newValue; } … … 239 239 240 240 std::list<Statement *> &get_initialization() { return initialization; } 241 void set_initialization( std::list<Statement *> newValue ) { initialization = newValue; }242 241 Expression *get_condition() { return condition; } 243 242 void set_condition( Expression *newValue ) { condition = newValue; } -
src/SynTree/Visitor.cc
r936e9f4 r6d49ea3 9 9 // Author : Richard C. Bilson 10 10 // Created On : Mon May 18 07:44:20 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Mon Jul 24 16:30:00201713 // Update Count : 2 711 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 17 15:39:38 2017 13 // Update Count : 29 14 14 // 15 15 … … 99 99 100 100 void Visitor::visit( IfStmt *ifStmt ) { 101 acceptAll( ifStmt->get_initialization(), *this ); 101 102 maybeAccept( ifStmt->get_condition(), *this ); 102 103 maybeAccept( ifStmt->get_thenPart(), *this );
Note: See TracChangeset
for help on using the changeset viewer.