diff --git a/src/main.cpp b/lang/app/main.cpp similarity index 100% rename from src/main.cpp rename to lang/app/main.cpp diff --git a/include/sources_manager.hpp b/lang/app/sources_manager.hpp similarity index 100% rename from include/sources_manager.hpp rename to lang/app/sources_manager.hpp diff --git a/include/builders/basic_builders.hpp b/lang/builders/include/basic_builders.hpp similarity index 100% rename from include/builders/basic_builders.hpp rename to lang/builders/include/basic_builders.hpp diff --git a/include/builders/doc_builders.hpp b/lang/builders/include/doc_builders.hpp similarity index 100% rename from include/builders/doc_builders.hpp rename to lang/builders/include/doc_builders.hpp diff --git a/include/builders/expression_builders.hpp b/lang/builders/include/expression_builders.hpp similarity index 100% rename from include/builders/expression_builders.hpp rename to lang/builders/include/expression_builders.hpp diff --git a/include/builders/statement_builders.hpp b/lang/builders/include/statement_builders.hpp similarity index 100% rename from include/builders/statement_builders.hpp rename to lang/builders/include/statement_builders.hpp diff --git a/include/tokens.hpp b/lang/builders/include/tokens.hpp similarity index 100% rename from include/tokens.hpp rename to lang/builders/include/tokens.hpp diff --git a/include/builders/type_builders.hpp b/lang/builders/include/type_builders.hpp similarity index 100% rename from include/builders/type_builders.hpp rename to lang/builders/include/type_builders.hpp diff --git a/src/builders/basic_builders.cpp b/lang/builders/src/basic_builders.cpp similarity index 100% rename from src/builders/basic_builders.cpp rename to lang/builders/src/basic_builders.cpp diff --git a/src/builders/doc_builders.cpp b/lang/builders/src/doc_builders.cpp similarity index 100% rename from src/builders/doc_builders.cpp rename to lang/builders/src/doc_builders.cpp diff --git a/src/builders/expression_builders.cpp b/lang/builders/src/expression_builders.cpp similarity index 100% rename from src/builders/expression_builders.cpp rename to lang/builders/src/expression_builders.cpp diff --git a/src/builders/statement_builders.cpp b/lang/builders/src/statement_builders.cpp similarity index 100% rename from src/builders/statement_builders.cpp rename to lang/builders/src/statement_builders.cpp diff --git a/src/builders/type_builders.cpp b/lang/builders/src/type_builders.cpp similarity index 100% rename from src/builders/type_builders.cpp rename to lang/builders/src/type_builders.cpp diff --git a/lang/builders/xmake.lua b/lang/builders/xmake.lua new file mode 100644 index 0000000..8e83267 --- /dev/null +++ b/lang/builders/xmake.lua @@ -0,0 +1,12 @@ +includes("../utils/xmake.lua") +includes("../nodes/xmake.lua") + +set_languages("c++20") + +target("lang.builders") + set_kind("static") + add_includedirs("include", {public = true}) + add_files("src/**.cpp") + add_deps("lang.utils", "lang.nodes") + set_warnings("allextra", "error") + set_rundir("$(projectdir)") diff --git a/include/nodes/basic_nodes.hpp b/lang/nodes/include/basic_nodes.hpp similarity index 100% rename from include/nodes/basic_nodes.hpp rename to lang/nodes/include/basic_nodes.hpp diff --git a/include/nodes/doc_nodes.hpp b/lang/nodes/include/doc_nodes.hpp similarity index 100% rename from include/nodes/doc_nodes.hpp rename to lang/nodes/include/doc_nodes.hpp diff --git a/include/nodes/expression_nodes.hpp b/lang/nodes/include/expression_nodes.hpp similarity index 100% rename from include/nodes/expression_nodes.hpp rename to lang/nodes/include/expression_nodes.hpp diff --git a/include/name_tree.hpp b/lang/nodes/include/name_tree.hpp similarity index 86% rename from include/name_tree.hpp rename to lang/nodes/include/name_tree.hpp index 3f0bad3..ddfeb5c 100644 --- a/include/name_tree.hpp +++ b/lang/nodes/include/name_tree.hpp @@ -1,6 +1,6 @@ #pragma once -#include "basic_printers.hpp" +// #include "basic_printers.hpp" #include "statement_nodes.hpp" #include "tree_sitter_wrapper.hpp" @@ -79,7 +79,7 @@ public: std::optional find(const std::string &path); - void print(printers::Printer &printer) const; + // void print(printers::Printer &printer) const; // // TODO // void add_statement_children_to_tree(); @@ -135,19 +135,19 @@ private: return true; } - void print(const std::vector &nodes, - printers::Printer &printer) const { - printer.print("Node - has statement: "); - printer.print(statement_.has_value() ? "true" : "false"); - printer.indent(); - for (auto &iter : children_) { - printer.new_indent_line(); - printer.print(std::to_string(iter.first) + " -> "); - nodes[iter.second].print(nodes, printer); - } - printer.deindent(); - printer.new_indent_line(); - } + // void print(const std::vector &nodes, + // printers::Printer &printer) const { + // printer.print("Node - has statement: "); + // printer.print(statement_.has_value() ? "true" : "false"); + // printer.indent(); + // for (auto &iter : children_) { + // printer.new_indent_line(); + // printer.print(std::to_string(iter.first) + " -> "); + // nodes[iter.second].print(nodes, printer); + // } + // printer.deindent(); + // printer.new_indent_line(); + // } private: std::unordered_map children_; diff --git a/include/nodes/statement_nodes.hpp b/lang/nodes/include/statement_nodes.hpp similarity index 100% rename from include/nodes/statement_nodes.hpp rename to lang/nodes/include/statement_nodes.hpp diff --git a/include/nodes/type_nodes.hpp b/lang/nodes/include/type_nodes.hpp similarity index 100% rename from include/nodes/type_nodes.hpp rename to lang/nodes/include/type_nodes.hpp diff --git a/src/nodes/expression_nodes.cpp b/lang/nodes/src/expression_nodes.cpp similarity index 100% rename from src/nodes/expression_nodes.cpp rename to lang/nodes/src/expression_nodes.cpp diff --git a/src/name_tree.cpp b/lang/nodes/src/name_tree.cpp similarity index 98% rename from src/name_tree.cpp rename to lang/nodes/src/name_tree.cpp index da32e5a..4faf28a 100644 --- a/src/name_tree.cpp +++ b/lang/nodes/src/name_tree.cpp @@ -65,9 +65,9 @@ std::optional NameTree::find(const std::string &path) { return std::nullopt; } -void NameTree::print(printers::Printer &printer) const { - nodes_[get_root()].print(nodes_, printer); -} +// void NameTree::print(printers::Printer &printer) const { +// nodes_[get_root()].print(nodes_, printer); +// } // // TODO // void NameTree::add_statement_children_to_tree() { diff --git a/src/nodes/statement_nodes.cpp b/lang/nodes/src/statement_nodes.cpp similarity index 100% rename from src/nodes/statement_nodes.cpp rename to lang/nodes/src/statement_nodes.cpp diff --git a/src/nodes/type_nodes.cpp b/lang/nodes/src/type_nodes.cpp similarity index 97% rename from src/nodes/type_nodes.cpp rename to lang/nodes/src/type_nodes.cpp index 52394f0..6ee941b 100644 --- a/src/nodes/type_nodes.cpp +++ b/lang/nodes/src/type_nodes.cpp @@ -203,8 +203,8 @@ TypeStorage::get_local_type_requirements(const std::string &name) const { // TODO -bool TypeStorage::unify(TypeProxy left_proxy, TypeProxy right_proxy, - UnifyModePolicy policy) { +bool TypeStorage::unify(TypeProxy /*left_proxy*/, TypeProxy /*right_proxy*/, + UnifyModePolicy /*policy*/) { // Type &left = left_id.get(); // Type &right = right_id.get(); @@ -261,7 +261,8 @@ bool TypeStorage::unify(TypeProxy left_proxy, TypeProxy right_proxy, // } // TODO - return true; + // return true; + throw std::exception(); } bool TypeStorage::resolve(TypeProxy generic, @@ -275,6 +276,8 @@ bool TypeStorage::resolve(TypeProxy generic, // type.mode = mode; } } + // TODO + throw std::exception(); } // diff --git a/lang/nodes/xmake.lua b/lang/nodes/xmake.lua new file mode 100644 index 0000000..0c30656 --- /dev/null +++ b/lang/nodes/xmake.lua @@ -0,0 +1,11 @@ +includes("../utils/xmake.lua") + +set_languages("c++20") + +target("lang.nodes") + set_kind("static") + add_includedirs("include", {public = true}) + add_files("src/**.cpp") + add_deps("lang.utils") + set_warnings("allextra", "error") + set_rundir("$(projectdir)") diff --git a/include/printers/basic_printers.hpp b/lang/printers/include/basic_printers.hpp similarity index 100% rename from include/printers/basic_printers.hpp rename to lang/printers/include/basic_printers.hpp diff --git a/include/printers/doc_printers.hpp b/lang/printers/include/doc_printers.hpp similarity index 100% rename from include/printers/doc_printers.hpp rename to lang/printers/include/doc_printers.hpp diff --git a/include/printers/expression_printers.hpp b/lang/printers/include/expression_printers.hpp similarity index 100% rename from include/printers/expression_printers.hpp rename to lang/printers/include/expression_printers.hpp diff --git a/include/printers/statement_printers.hpp b/lang/printers/include/statement_printers.hpp similarity index 100% rename from include/printers/statement_printers.hpp rename to lang/printers/include/statement_printers.hpp diff --git a/include/printers/type_printers.hpp b/lang/printers/include/type_printers.hpp similarity index 100% rename from include/printers/type_printers.hpp rename to lang/printers/include/type_printers.hpp diff --git a/src/printers/basic_printers.cpp b/lang/printers/src/basic_printers.cpp similarity index 100% rename from src/printers/basic_printers.cpp rename to lang/printers/src/basic_printers.cpp diff --git a/src/printers/doc_printers.cpp b/lang/printers/src/doc_printers.cpp similarity index 100% rename from src/printers/doc_printers.cpp rename to lang/printers/src/doc_printers.cpp diff --git a/src/printers/expression_printers.cpp b/lang/printers/src/expression_printers.cpp similarity index 100% rename from src/printers/expression_printers.cpp rename to lang/printers/src/expression_printers.cpp diff --git a/src/printers/statement_printers.cpp b/lang/printers/src/statement_printers.cpp similarity index 100% rename from src/printers/statement_printers.cpp rename to lang/printers/src/statement_printers.cpp diff --git a/src/printers/type_printers.cpp b/lang/printers/src/type_printers.cpp similarity index 100% rename from src/printers/type_printers.cpp rename to lang/printers/src/type_printers.cpp diff --git a/lang/printers/xmake.lua b/lang/printers/xmake.lua new file mode 100644 index 0000000..06e4d4b --- /dev/null +++ b/lang/printers/xmake.lua @@ -0,0 +1,12 @@ +includes("../utils/xmake.lua") +includes("../nodes/xmake.lua") + +set_languages("c++20") + +target("lang.printers") + set_kind("static") + add_includedirs("include", {public = true}) + add_files("src/**.cpp") + add_deps("lang.utils", "lang.nodes") + set_warnings("allextra", "error") + set_rundir("$(projectdir)") diff --git a/lang/type_check/_xmake.lua b/lang/type_check/_xmake.lua new file mode 100644 index 0000000..18790de --- /dev/null +++ b/lang/type_check/_xmake.lua @@ -0,0 +1,12 @@ +includes("../utils/xmake.lua") +includes("../nodes/xmake.lua") + +set_languages("c++20") + +target("lang.type_check") + set_kind("static") + add_includedirs("include", {public = true}) + add_files("src/**.cpp") + add_deps("lang.utils", "lang.nodes") + set_warnings("allextra", "error") + set_rundir("$(projectdir)") diff --git a/include/basic_type_check.hpp b/lang/type_check/include/basic_type_check.hpp similarity index 100% rename from include/basic_type_check.hpp rename to lang/type_check/include/basic_type_check.hpp diff --git a/include/expression_type_check.hpp b/lang/type_check/include/expression_type_check.hpp similarity index 100% rename from include/expression_type_check.hpp rename to lang/type_check/include/expression_type_check.hpp diff --git a/include/type_check_utils.hpp b/lang/type_check/include/type_check_utils.hpp similarity index 100% rename from include/type_check_utils.hpp rename to lang/type_check/include/type_check_utils.hpp diff --git a/src/basic_type_check.cpp b/lang/type_check/src/basic_type_check.cpp similarity index 100% rename from src/basic_type_check.cpp rename to lang/type_check/src/basic_type_check.cpp diff --git a/src/expression_type_check.cpp b/lang/type_check/src/expression_type_check.cpp similarity index 100% rename from src/expression_type_check.cpp rename to lang/type_check/src/expression_type_check.cpp diff --git a/src/type_check_utils.cpp b/lang/type_check/src/type_check_utils.cpp similarity index 100% rename from src/type_check_utils.cpp rename to lang/type_check/src/type_check_utils.cpp diff --git a/include/builtin_types.hpp b/lang/utils/include/builtin_types.hpp similarity index 100% rename from include/builtin_types.hpp rename to lang/utils/include/builtin_types.hpp diff --git a/include/error_handling.hpp b/lang/utils/include/error_handling.hpp similarity index 100% rename from include/error_handling.hpp rename to lang/utils/include/error_handling.hpp diff --git a/include/error_log.hpp b/lang/utils/include/error_log.hpp similarity index 100% rename from include/error_log.hpp rename to lang/utils/include/error_log.hpp diff --git a/include/tree_sitter_wrapper.hpp b/lang/utils/include/tree_sitter_wrapper.hpp similarity index 100% rename from include/tree_sitter_wrapper.hpp rename to lang/utils/include/tree_sitter_wrapper.hpp diff --git a/include/utils.hpp b/lang/utils/include/utils.hpp similarity index 100% rename from include/utils.hpp rename to lang/utils/include/utils.hpp diff --git a/lang/utils/xmake.lua b/lang/utils/xmake.lua new file mode 100644 index 0000000..15a7127 --- /dev/null +++ b/lang/utils/xmake.lua @@ -0,0 +1,8 @@ +set_languages("c++20") + +target("lang.utils") + set_kind("static") + add_includedirs("include", {public = true}) + add_files("src/**.cpp") + set_warnings("allextra", "error") + set_rundir("$(projectdir)") diff --git a/xmake.lua b/xmake.lua index decb371..f265782 100644 --- a/xmake.lua +++ b/xmake.lua @@ -1,12 +1,9 @@ includes("deps/**/xmake.lua") +includes("lang/**/xmake.lua") add_requires("tree-sitter") --- add_requires("toml++") --- add_requires("nlohmann_json") --- add_requires("cli11") --- add_requires("catch2") -add_rules("mode.debug", "mode.release") +-- add_rules("mode.debug", "mode.release") -- add_rules("c++.unity_build") set_languages("c++20") @@ -16,10 +13,11 @@ set_languages("c++20") target("lang") set_kind("binary") - add_includedirs("include") - add_includedirs(os.dirs(path.join(os.scriptdir(), "include/**"))) - add_files("src/**.cpp") + -- add_includedirs("include") + -- add_includedirs(os.dirs(path.join(os.scriptdir(), "include/**"))) + add_files("lang/app/**.cpp") add_packages("tree-sitter") - add_deps("tree-sitter-lang") + add_deps("tree-sitter-lang", "lang.utils", "lang.nodes", + "lang.builders", "lang.printers") -- set_warnings("allextra", "error") set_rundir("$(projectdir)")