From 49edbfb60c5a44ec32355b779e0792e4814f6cdf Mon Sep 17 00:00:00 2001 From: programsnail Date: Sat, 20 Jul 2024 11:30:05 +0300 Subject: [PATCH] project structure change --- {src => lang/app}/main.cpp | 0 {include => lang/app}/sources_manager.hpp | 0 .../builders/include}/basic_builders.hpp | 0 .../builders/include}/doc_builders.hpp | 0 .../builders/include}/expression_builders.hpp | 0 .../builders/include}/statement_builders.hpp | 0 {include => lang/builders/include}/tokens.hpp | 0 .../builders/include}/type_builders.hpp | 0 .../builders/src}/basic_builders.cpp | 0 .../builders/src}/doc_builders.cpp | 0 .../builders/src}/expression_builders.cpp | 0 .../builders/src}/statement_builders.cpp | 0 .../builders/src}/type_builders.cpp | 0 lang/builders/xmake.lua | 12 ++++++++ .../nodes/include}/basic_nodes.hpp | 0 .../nodes/include}/doc_nodes.hpp | 0 .../nodes/include}/expression_nodes.hpp | 0 {include => lang/nodes/include}/name_tree.hpp | 30 +++++++++---------- .../nodes/include}/statement_nodes.hpp | 0 .../nodes/include}/type_nodes.hpp | 0 .../nodes/src}/expression_nodes.cpp | 0 {src => lang/nodes/src}/name_tree.cpp | 6 ++-- .../nodes/src}/statement_nodes.cpp | 0 {src/nodes => lang/nodes/src}/type_nodes.cpp | 9 ++++-- lang/nodes/xmake.lua | 11 +++++++ .../printers/include}/basic_printers.hpp | 0 .../printers/include}/doc_printers.hpp | 0 .../printers/include}/expression_printers.hpp | 0 .../printers/include}/statement_printers.hpp | 0 .../printers/include}/type_printers.hpp | 0 .../printers/src}/basic_printers.cpp | 0 .../printers/src}/doc_printers.cpp | 0 .../printers/src}/expression_printers.cpp | 0 .../printers/src}/statement_printers.cpp | 0 .../printers/src}/type_printers.cpp | 0 lang/printers/xmake.lua | 12 ++++++++ lang/type_check/_xmake.lua | 12 ++++++++ .../type_check/include}/basic_type_check.hpp | 0 .../include}/expression_type_check.hpp | 0 .../type_check/include}/type_check_utils.hpp | 0 .../type_check/src}/basic_type_check.cpp | 0 .../type_check/src}/expression_type_check.cpp | 0 .../type_check/src}/type_check_utils.cpp | 0 .../utils/include}/builtin_types.hpp | 0 .../utils/include}/error_handling.hpp | 0 {include => lang/utils/include}/error_log.hpp | 0 .../utils/include}/tree_sitter_wrapper.hpp | 0 {include => lang/utils/include}/utils.hpp | 0 lang/utils/xmake.lua | 8 +++++ xmake.lua | 16 +++++----- 50 files changed, 86 insertions(+), 30 deletions(-) rename {src => lang/app}/main.cpp (100%) rename {include => lang/app}/sources_manager.hpp (100%) rename {include/builders => lang/builders/include}/basic_builders.hpp (100%) rename {include/builders => lang/builders/include}/doc_builders.hpp (100%) rename {include/builders => lang/builders/include}/expression_builders.hpp (100%) rename {include/builders => lang/builders/include}/statement_builders.hpp (100%) rename {include => lang/builders/include}/tokens.hpp (100%) rename {include/builders => lang/builders/include}/type_builders.hpp (100%) rename {src/builders => lang/builders/src}/basic_builders.cpp (100%) rename {src/builders => lang/builders/src}/doc_builders.cpp (100%) rename {src/builders => lang/builders/src}/expression_builders.cpp (100%) rename {src/builders => lang/builders/src}/statement_builders.cpp (100%) rename {src/builders => lang/builders/src}/type_builders.cpp (100%) create mode 100644 lang/builders/xmake.lua rename {include/nodes => lang/nodes/include}/basic_nodes.hpp (100%) rename {include/nodes => lang/nodes/include}/doc_nodes.hpp (100%) rename {include/nodes => lang/nodes/include}/expression_nodes.hpp (100%) rename {include => lang/nodes/include}/name_tree.hpp (86%) rename {include/nodes => lang/nodes/include}/statement_nodes.hpp (100%) rename {include/nodes => lang/nodes/include}/type_nodes.hpp (100%) rename {src/nodes => lang/nodes/src}/expression_nodes.cpp (100%) rename {src => lang/nodes/src}/name_tree.cpp (98%) rename {src/nodes => lang/nodes/src}/statement_nodes.cpp (100%) rename {src/nodes => lang/nodes/src}/type_nodes.cpp (97%) create mode 100644 lang/nodes/xmake.lua rename {include/printers => lang/printers/include}/basic_printers.hpp (100%) rename {include/printers => lang/printers/include}/doc_printers.hpp (100%) rename {include/printers => lang/printers/include}/expression_printers.hpp (100%) rename {include/printers => lang/printers/include}/statement_printers.hpp (100%) rename {include/printers => lang/printers/include}/type_printers.hpp (100%) rename {src/printers => lang/printers/src}/basic_printers.cpp (100%) rename {src/printers => lang/printers/src}/doc_printers.cpp (100%) rename {src/printers => lang/printers/src}/expression_printers.cpp (100%) rename {src/printers => lang/printers/src}/statement_printers.cpp (100%) rename {src/printers => lang/printers/src}/type_printers.cpp (100%) create mode 100644 lang/printers/xmake.lua create mode 100644 lang/type_check/_xmake.lua rename {include => lang/type_check/include}/basic_type_check.hpp (100%) rename {include => lang/type_check/include}/expression_type_check.hpp (100%) rename {include => lang/type_check/include}/type_check_utils.hpp (100%) rename {src => lang/type_check/src}/basic_type_check.cpp (100%) rename {src => lang/type_check/src}/expression_type_check.cpp (100%) rename {src => lang/type_check/src}/type_check_utils.cpp (100%) rename {include => lang/utils/include}/builtin_types.hpp (100%) rename {include => lang/utils/include}/error_handling.hpp (100%) rename {include => lang/utils/include}/error_log.hpp (100%) rename {include => lang/utils/include}/tree_sitter_wrapper.hpp (100%) rename {include => lang/utils/include}/utils.hpp (100%) create mode 100644 lang/utils/xmake.lua 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)")