lang/include/statement_builders.hpp

46 lines
1.7 KiB
C++
Raw Normal View History

2023-07-22 19:49:52 +03:00
#pragma once
2023-07-28 19:42:09 +03:00
#include "name_tree.hpp"
2023-07-22 19:49:52 +03:00
#include "statement_nodes.hpp"
#include "tree_sitter_wrapper.hpp"
2023-07-26 14:21:33 +03:00
#include <vector>
2023-07-22 19:49:52 +03:00
namespace builders {
2023-07-28 19:42:09 +03:00
// statements (copies of statements are in name_tree) returned to print /
// translate them in required order
2023-07-26 14:21:33 +03:00
std::vector<nodes::Statement>
build_source_file(parser::ParseTree::Node parser_node,
nodes::ExpressionStorage &expression_storage,
2023-07-28 19:42:09 +03:00
nodes::TypeStorage &type_storage, names::NameTree &name_tree);
2023-07-22 19:49:52 +03:00
2023-07-28 19:42:09 +03:00
// copy of statement inserted into name_tree
2023-07-26 14:21:33 +03:00
nodes::Statement build_statement(parser::ParseTree::Node parser_node,
nodes::ExpressionStorage &expression_storage,
2023-07-28 19:42:09 +03:00
nodes::TypeStorage &type_storage,
names::NameTree &name_tree);
2023-07-22 19:49:52 +03:00
2023-07-23 19:40:27 +03:00
nodes::Import build_import(parser::ParseTree::Node parser_node);
2023-07-22 19:49:52 +03:00
2023-07-23 19:40:27 +03:00
nodes::Constraint build_constraint(parser::ParseTree::Node parser_node,
2023-07-22 19:49:52 +03:00
nodes::ExpressionStorage &expression_storage,
nodes::TypeStorage &type_storage);
nodes::TypeDefinition
2023-07-23 19:40:27 +03:00
build_type_definition(parser::ParseTree::Node parser_node,
2023-07-22 19:49:52 +03:00
nodes::ExpressionStorage &expression_storage,
nodes::TypeStorage &type_storage);
nodes::FunctionDefinition
2023-07-23 19:40:27 +03:00
build_function_definition(parser::ParseTree::Node parser_node,
2023-07-22 19:49:52 +03:00
nodes::ExpressionStorage &expression_storage,
nodes::TypeStorage &type_storage);
nodes::TypeclassDefinition
2023-07-23 19:40:27 +03:00
build_typeclass_definition(parser::ParseTree::Node parser_node,
2023-07-22 19:49:52 +03:00
nodes::ExpressionStorage &expression_storage,
nodes::TypeStorage &type_storage);
} // namespace builders