#pragma once #include "basic_printers.hpp" #include "expression_nodes.hpp" namespace printers { void print_expression(const nodes::Expression &expression, printers::Printer &printer); // --- flow control void print_match(const nodes::Match &expression, printers::Printer &printer); void print_condition(const nodes::Condition &expression, printers::Printer &printer); void print_loop(const nodes::Loop &expression, printers::Printer &printer); // --- containers void print_container(const nodes::Container &expression, printers::Printer &printer); // --- modifiers void print_return(const nodes::Return &expression, printers::Printer &printer); void print_name_definition(const nodes::NameDefinition &expression, printers::Printer &printer); void print_access(const nodes::Access &expression, printers::Printer &printer); void print_loop_control(const nodes::LoopControl &expression, printers::Printer &printer); void print_modifier_expression(const nodes::ModifierExpression &expression, printers::Printer &printer); // --- other void print_name_expression(const nodes::NameExpression &expression, printers::Printer &printer); void print_constructor(const nodes::Constructor &expression, printers::Printer &printer); void print_lambda(const nodes::Lambda &expression, printers::Printer &printer); } // namespace printers