#include #include #include "Statement.h" #include "Expression.h" #include "CodeGenVisitor.h" using namespace std; //*** Types void CodeGenVisitor::visit(Type *type){ } void CodeGenVisitor::visit(BasicType *basicType) { } //*** Constant void CodeGenVisitor::visit(Constant *constant) { cout << constant->get_value() << endl; } //*** Expressions void CodeGenVisitor::visit(Expression *expr){ } void CodeGenVisitor::visit(ConstantExpr *cnst){ if(cnst != 0) visit(cnst->get_constant()); } //*** Statements void CodeGenVisitor::visit(Statement *stmt){ } void CodeGenVisitor::visit(ExprStmt *exprStmt){ if(exprStmt != 0) exprStmt->get_expr()->accept(*this); // visit(exprStmt->get_expr()) doesn't work } void CodeGenVisitor::visit(SwitchStmt *switchStmt){ cout << "switch(" << endl; // visit(switchStmt->get_condition()); // why doesn't this work? switchStmt->get_condition()->accept(*this); cout << ") {" << endl; // visit(switchStmt->get_body()); // why doesn't this work? cout << "}" << endl; }