#pragma once #include "expression_nodes.hpp" #include "tree_sitter_wrapper.hpp" namespace builders { // --- flow control nodes::ExpressionProxy build_expression(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::Match build_match(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::Condition build_condition(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::Loop build_loop(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); // --- operators nodes::NameExpression build_comma_expression(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::NameExpression build_operator_expression(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); // --- continers nodes::Container build_block(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::Container build_array(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); // --- modifiers nodes::Return build_return(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::NameDefinition build_name_definition(parser::ParseTree::Node parse_node); nodes::Access build_array_access(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::Access build_tuple_access(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::LoopControl build_loop_control(parser::ParseTree::Node parse_node); nodes::ModifierExpression build_reference_expression(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::ModifierExpression build_suffix_expression(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); // --- other nodes::NameExpression build_name_expression(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::Constructor build_constructor(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); nodes::Lambda build_lambda(parser::ParseTree::Node parse_node, nodes::ExpressionStorage &expression_storage, nodes::TypeStorage &type_storage); } // namespace builders