2023-07-20 14:38:44 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "basic_nodes.hpp"
|
|
|
|
|
#include "tree_sitter_wrapper.hpp"
|
|
|
|
|
|
|
|
|
|
namespace builders {
|
|
|
|
|
|
2023-07-23 19:40:27 +03:00
|
|
|
// returns Modifier::NONE for incorrecnt input
|
|
|
|
|
nodes::Modifier build_modifier(parser::ParseTree::Node parser_node);
|
|
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Node build_node(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
|
|
|
|
// --- literals
|
|
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Literal build_float_number_literal(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Literal build_number_literal(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Literal build_string_literal(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Literal build_char_literal(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Literal build_bool_literal(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Literal build_unit_literal(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Literal build_null_literal(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
|
|
|
|
// --- identifiers
|
|
|
|
|
|
2023-07-23 19:40:27 +03:00
|
|
|
nodes::Identifier build_identifier(parser::ParseTree::Node parser_node);
|
|
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Identifier build_simple_name(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Identifier build_simple_type(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Identifier build_typeclass(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Identifier build_argument_name(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Identifier build_argument_type(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
|
|
|
|
// Annotations are used as strings
|
2023-07-22 13:33:33 +03:00
|
|
|
std::string build_annotation(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Identifier build_operator(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-22 13:33:33 +03:00
|
|
|
nodes::Identifier build_placeholder(parser::ParseTree::Node parser_node);
|
2023-07-20 14:38:44 +03:00
|
|
|
|
2023-07-25 21:33:57 +03:00
|
|
|
// --- empty lines
|
|
|
|
|
|
|
|
|
|
nodes::EmptyLines build_empty_lines(parser::ParseTree::Node parser_node);
|
|
|
|
|
|
2023-07-20 14:38:44 +03:00
|
|
|
} // namespace builders
|