diff options
| author | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
|---|---|---|
| committer | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
| commit | c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch) | |
| tree | 3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /graphs/cpp/visitor/print_visitor.cc | |
add: graphs et rushs
Diffstat (limited to 'graphs/cpp/visitor/print_visitor.cc')
| -rw-r--r-- | graphs/cpp/visitor/print_visitor.cc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/graphs/cpp/visitor/print_visitor.cc b/graphs/cpp/visitor/print_visitor.cc new file mode 100644 index 0000000..bcfd565 --- /dev/null +++ b/graphs/cpp/visitor/print_visitor.cc @@ -0,0 +1,58 @@ +// +// Created by martial.simon on 2/27/25. +// + +#include "print_visitor.hh" + +#include <iostream> + +#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(); +}
\ No newline at end of file |
