mirror of
https://codeberg.org/ProgramSnail/lang.git
synced 2025-12-06 06:58:46 +00:00
39 lines
1.5 KiB
C++
39 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "name_tree.hpp"
|
|
#include "statement_nodes.hpp"
|
|
#include "tree_sitter_wrapper.hpp"
|
|
|
|
#include <vector>
|
|
|
|
namespace builders {
|
|
|
|
// statements (copies of statements are in name_tree) returned to print /
|
|
// translate them in required order
|
|
std::vector<nodes::Statement>
|
|
build_source_file(parser::ParseTree::Node parser_node,
|
|
nodes::ExpressionStorage &expression_storage,
|
|
nodes::TypeStorage &type_storage, names::NameTree &name_tree);
|
|
|
|
// copy of statement inserted into name_tree
|
|
nodes::Statement
|
|
build_statement(parser::ParseTree::Node parser_node,
|
|
std::optional<nodes::Identifier> &previous_defined_type_name,
|
|
nodes::ExpressionStorage &expression_storage,
|
|
nodes::TypeStorage &type_storage, names::NameTree &name_tree);
|
|
|
|
nodes::Import build_import(parser::ParseTree::Node parser_node);
|
|
|
|
nodes::Constraint build_constraint(parser::ParseTree::Node parser_node,
|
|
nodes::ExpressionStorage &expression_storage,
|
|
nodes::TypeStorage &type_storage);
|
|
|
|
nodes::TypeDefinition build_type_definition(parser::ParseTree::Node parser_node,
|
|
nodes::TypeStorage &type_storage);
|
|
|
|
nodes::FunctionDefinition build_function_definition(
|
|
parser::ParseTree::Node parser_node,
|
|
const std::optional<nodes::Identifier> &previous_defined_type_name,
|
|
nodes::ExpressionStorage &expression_storage,
|
|
nodes::TypeStorage &type_storage);
|
|
} // namespace builders
|