#pragma once #include "basic_nodes.hpp" #include "tree_sitter_wrapper.hpp" namespace builders { // returns Modifier::NONE for incorrecnt input nodes::Modifier build_modifier(parser::ParseTree::Node parser_node); nodes::Node build_node(parser::ParseTree::Node parser_node); // --- literals nodes::Literal build_float_literal(parser::ParseTree::Node parser_node); nodes::Literal build_double_literal(parser::ParseTree::Node parser_node); nodes::Literal build_int_literal(parser::ParseTree::Node parser_node); nodes::Literal build_long_literal(parser::ParseTree::Node parser_node); nodes::Literal build_index_literal(parser::ParseTree::Node parser_node); nodes::Literal build_string_literal(parser::ParseTree::Node parser_node); nodes::Literal build_unicode_string_literal(parser::ParseTree::Node parser_node); nodes::Literal build_char_literal(parser::ParseTree::Node parser_node); nodes::Literal build_unicode_literal(parser::ParseTree::Node parser_node); nodes::Literal build_bool_literal(parser::ParseTree::Node parser_node); nodes::Literal build_unit_literal(parser::ParseTree::Node parser_node); nodes::Literal build_null_literal(parser::ParseTree::Node parser_node); // --- identifiers nodes::Identifier build_identifier(parser::ParseTree::Node parser_node); nodes::Identifier build_simple_name(parser::ParseTree::Node parser_node); nodes::Identifier build_simple_type(parser::ParseTree::Node parser_node); nodes::Identifier build_typeclass(parser::ParseTree::Node parser_node); nodes::Identifier build_argument_name(parser::ParseTree::Node parser_node); nodes::Identifier build_argument_type(parser::ParseTree::Node parser_node); // Annotations are used as strings std::string build_annotation(parser::ParseTree::Node parser_node); nodes::Identifier build_operator(parser::ParseTree::Node parser_node); nodes::Identifier build_placeholder(parser::ParseTree::Node parser_node); // --- extra nodes::Extra build_extra(parser::ParseTree::Node parser_node); // --- empty lines nodes::EmptyLines build_empty_lines(parser::ParseTree::Node parser_node); } // namespace builders