26#define __check_node_type(node, type, entry) \
27 if (auto node_type = std::dynamic_pointer_cast<type>(node)) { \
28 return entry(node_type); \
31#define VISIT_DEFAULT(node) \
34 return error::ok<RT>(); \
Base visitor class with default return type.
Definition base.hpp:46
virtual error::Result< RT > visit_unary_op(NodePtr< UnaryOpNode > &node) VISIT_DEFAULT(node)
Visit a unary operation node.
virtual error::Result< RT > visit_fcall(NodePtr< FcallNode > &node) VISIT_DEFAULT(node)
Visit a function call node.
virtual error::Result< RT > visit_number(NodePtr< NumberNode > &node) VISIT_DEFAULT(node)
Visit a number node.
virtual error::Result< RT > visit_import(NodePtr< ProgramImportNode > &node) VISIT_DEFAULT(node)
Visit a program import node.
virtual error::Result< RT > visit_varassign(NodePtr< VarAssignNode > &node) VISIT_DEFAULT(node)
Visit a variable assignment node.
virtual error::Result< RT > visit_program(NodePtr< ProgramNode > &node) VISIT_DEFAULT(node)
Visit a program node.
virtual error::Result< RT > visit_fdef(NodePtr< FdefNode > &node) VISIT_DEFAULT(node)
Visit a function definition node.
virtual error::Result< RT > visit_varref(NodePtr< VarRefNode > &node) VISIT_DEFAULT(node)
Visit a variable reference node.
virtual error::Result< RT > visit(NodePtr<> &node)
Visit a number node.
Definition base.hpp:56
virtual error::Result< RT > visit_if(NodePtr< IfNode > &node) VISIT_DEFAULT(node)
Visit an if node.
virtual error::Result< RT > visit_bin_op(NodePtr< BinaryOpNode > &node) VISIT_DEFAULT(node)
Visit a binary operation node.
Binary operation base class.
Definition binaryop.hpp:26
Function node.
Definition function.hpp:28
Function definition node.
Definition function.hpp:100
If node.
Definition control_flow.hpp:26
Number AST node.
Definition number.hpp:24
Program import node.
Definition program.hpp:86
Program node.
Definition program.hpp:26
Unary operation node.
Definition unaryop.hpp:25
Variable assign node.
Definition variable.hpp:65
Variable node.
Definition variable.hpp:27
_TCALC_EXPECTED_NS::expected< T, Error > Result
Result type.
Definition error.hpp:153
Base class for AST nodes.
std::shared_ptr< NT > NodePtr
Shared pointer to a node.
Definition node.hpp:119