#include "AlternativePrinter.h" #include "AlternativeFinder.h" #include "Alternative.h" #include "SynTree/Statement.h" #include "SynTree/Type.h" #include "SynTree/Expression.h" #include "utility.h" namespace ResolvExpr { AlternativePrinter::AlternativePrinter( std::ostream &os ) : SymTab::Indexer( false ), os( os ) {} void AlternativePrinter::visit( ExprStmt *exprStmt ) { TypeEnvironment env; AlternativeFinder finder( *this, env ); finder.findWithAdjustment( exprStmt->get_expr() ); int count = 1; os << "There are " << finder.get_alternatives().size() << " alternatives" << std::endl; for ( AltList::const_iterator i = finder.get_alternatives().begin(); i != finder.get_alternatives().end(); ++i ) { os << "Alternative " << count++ << " ==============" << std::endl; printAll( i->expr->get_results(), os ); // i->print( os ); os << std::endl; } // for } // AlternativePrinter::visit } // namespace ResolvExpr