#pragma once #include "basic_printers.hpp" #include "expression_nodes.hpp" namespace printers { void print(const nodes::Expression &expression, printers::Printer &printer); // --- flow control void print(const nodes::Match::Case &expression, Printer &printer); void print(const nodes::Match &expression, printers::Printer &printer); void print(const nodes::Condition &expression, printers::Printer &printer); void print(const nodes::Loop &expression, printers::Printer &printer); // --- containers void print(const nodes::Container &expression, printers::Printer &printer); // --- modifiers void print(const nodes::Return &expression, printers::Printer &printer); void print(const nodes::NameDefinition &expression, printers::Printer &printer); void print(const nodes::Access &expression, printers::Printer &printer); void print(const nodes::LoopControl &expression, printers::Printer &printer); void print(const nodes::ModifierExpression &expression, printers::Printer &printer); // --- other void print(const nodes::NameExpression &expression, printers::Printer &printer); void print(const nodes::Constructor &expression, printers::Printer &printer); void print(const nodes::Lambda &expression, printers::Printer &printer); } // namespace printers