#pragma once #include "basic_nodes.hpp" #include "tree_sitter_wrapper.hpp" namespace builders { nodes::Node buildNode(parser::ParseTree::Node parser_node); // --- literals nodes::Literal buildFloatNumberLiteral(parser::ParseTree::Node parser_node); nodes::Literal buildNumberLiteral(parser::ParseTree::Node parser_node); nodes::Literal buildStringLiteral(parser::ParseTree::Node parser_node); nodes::Literal buildCharLiteral(parser::ParseTree::Node parser_node); nodes::Literal buildBoolLiteral(parser::ParseTree::Node parser_node); nodes::Literal buildUnitLiteral(parser::ParseTree::Node parser_node); nodes::Literal buildNullLiteral(parser::ParseTree::Node parser_node); // --- identifiers nodes::Identifier buildSimpleName(parser::ParseTree::Node parser_node); nodes::Identifier buildSimpleType(parser::ParseTree::Node parser_node); nodes::Identifier buildTypeclass(parser::ParseTree::Node parser_node); nodes::Identifier buildArgumentName(parser::ParseTree::Node parser_node); nodes::Identifier buildArgumentType(parser::ParseTree::Node parser_node); // Annotations are used as strings std::string buildAnnotation(parser::ParseTree::Node parser_node); nodes::Identifier buildOperator(parser::ParseTree::Node parser_node); nodes::Identifier buildPlaceholder(parser::ParseTree::Node parser_node); } // namespace builders