// // Created by martial.simon on 2/27/25. // #include "print_visitor.hh" #include #include "add.hh" #include "div.hh" #include "leaf.hh" #include "mul.hh" #include "sub.hh" void visitor::PrintVisitor::visit(const tree::Tree& e) { Visitor::visit(e); } void visitor::PrintVisitor::visit(const tree::Node& e) { visit(*e.get_lhs()); visit(*e.get_rhs()); } void visitor::PrintVisitor::visit(const tree::AddNode& e) { std::cout << "("; visit(*e.get_lhs()); std::cout << " + "; visit(*e.get_rhs()); std::cout << ")"; } void visitor::PrintVisitor::visit(const tree::SubNode& e) { std::cout << "("; visit(*e.get_lhs()); std::cout << " - "; visit(*e.get_rhs()); std::cout << ")"; } void visitor::PrintVisitor::visit(const tree::MulNode& e) { std::cout << "("; visit(*e.get_lhs()); std::cout << " * "; visit(*e.get_rhs()); std::cout << ")"; } void visitor::PrintVisitor::visit(const tree::DivNode& e) { std::cout << "("; visit(*e.get_lhs()); std::cout << " / "; visit(*e.get_rhs()); std::cout << ")"; } void visitor::PrintVisitor::visit(const tree::Leaf& e) { std::cout << e.get_value(); }