2023-07-24 18:47:57 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "basic_printers.hpp"
|
|
|
|
|
#include "expression_nodes.hpp"
|
|
|
|
|
namespace printers {
|
|
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Expression &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
|
|
|
|
// --- flow control
|
|
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Match::Case &expression, Printer &printer);
|
2023-07-24 21:23:18 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Match &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Condition &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Loop &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
|
|
|
|
// --- containers
|
|
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Container &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
|
|
|
|
// --- modifiers
|
|
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Return &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::NameDefinition &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Access &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::LoopControl &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::ModifierExpression &expression,
|
|
|
|
|
printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
|
|
|
|
// --- other
|
|
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::NameExpression &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Constructor &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
2024-05-01 14:05:29 +03:00
|
|
|
void print(const nodes::Lambda &expression, printers::Printer &printer);
|
2023-07-24 18:47:57 +03:00
|
|
|
|
|
|
|
|
} // namespace printers
|