Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Statement.cc

    r4e06c1e r74d1804  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:52:32 2016
    13 // Update Count     : 55
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu May 12 13:33:18 2016
     13// Update Count     : 54
    1414//
    1515
     
    8787        Statement( labels ), originalTarget( _target ), target( _target ), computedTarget( NULL ), type( _type ) {
    8888        //actually this is a syntactic error signaled by the parser
    89         if ( type == BranchStmt::Goto && target.empty() )
     89        if ( type == BranchStmt::Goto && target.size() == 0 )
    9090                throw SemanticError("goto without target");
    9191}
     
    206206        for ( i = stmts.begin(); i != stmts.end(); i++)
    207207                (*i )->print( os, indent + 4 );
     208}
     209
     210//ChooseStmt::ChooseStmt( std::list<Label> labels, Expression *condition, Statement *body ) {}
     211ChooseStmt::ChooseStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ):
     212        Statement( _labels ), condition( _condition ), branches( _branches ) {
     213}
     214
     215ChooseStmt::ChooseStmt( const ChooseStmt & other ):
     216        Statement( other ), condition( maybeClone( other.condition ) ) {
     217                cloneAll( other.branches, branches );
     218}
     219
     220ChooseStmt::~ChooseStmt() {
     221        delete condition;
     222}
     223
     224void ChooseStmt::add_case( CaseStmt *c ) {}
     225
     226void ChooseStmt::print( std::ostream &os, int indent ) const {
     227        os << "Choose on condition: ";
     228        condition->print( os );
     229        os << endl;
     230
     231        // branches
     232        std::list<Statement *>::const_iterator i;
     233        for ( i = branches.begin(); i != branches.end(); i++)
     234                (*i )->print( os, indent + 4 );
     235
     236        //for_each( branches.begin(), branches.end(), mem_fun( bind1st(&Statement::print ), os ));
     237}
     238
     239void FallthruStmt::print( std::ostream &os, int indent ) const {
     240        os << string( indent, ' ' ) << "Fall-through statement" << endl;
    208241}
    209242
Note: See TracChangeset for help on using the changeset viewer.