mirror of
https://codeberg.org/ProgramSnail/lang.git
synced 2025-12-05 22:48:43 +00:00
project structure change
This commit is contained in:
parent
0876ce8c76
commit
49edbfb60c
50 changed files with 86 additions and 30 deletions
12
lang/builders/xmake.lua
Normal file
12
lang/builders/xmake.lua
Normal file
|
|
@ -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)")
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "basic_printers.hpp"
|
// #include "basic_printers.hpp"
|
||||||
#include "statement_nodes.hpp"
|
#include "statement_nodes.hpp"
|
||||||
#include "tree_sitter_wrapper.hpp"
|
#include "tree_sitter_wrapper.hpp"
|
||||||
|
|
||||||
|
|
@ -79,7 +79,7 @@ public:
|
||||||
|
|
||||||
std::optional<AnyStatementProxy> find(const std::string &path);
|
std::optional<AnyStatementProxy> find(const std::string &path);
|
||||||
|
|
||||||
void print(printers::Printer &printer) const;
|
// void print(printers::Printer &printer) const;
|
||||||
|
|
||||||
// // TODO
|
// // TODO
|
||||||
// void add_statement_children_to_tree();
|
// void add_statement_children_to_tree();
|
||||||
|
|
@ -135,19 +135,19 @@ private:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print(const std::vector<Node> &nodes,
|
// void print(const std::vector<Node> &nodes,
|
||||||
printers::Printer &printer) const {
|
// printers::Printer &printer) const {
|
||||||
printer.print("Node - has statement: ");
|
// printer.print("Node - has statement: ");
|
||||||
printer.print(statement_.has_value() ? "true" : "false");
|
// printer.print(statement_.has_value() ? "true" : "false");
|
||||||
printer.indent();
|
// printer.indent();
|
||||||
for (auto &iter : children_) {
|
// for (auto &iter : children_) {
|
||||||
printer.new_indent_line();
|
// printer.new_indent_line();
|
||||||
printer.print(std::to_string(iter.first) + " -> ");
|
// printer.print(std::to_string(iter.first) + " -> ");
|
||||||
nodes[iter.second].print(nodes, printer);
|
// nodes[iter.second].print(nodes, printer);
|
||||||
}
|
// }
|
||||||
printer.deindent();
|
// printer.deindent();
|
||||||
printer.new_indent_line();
|
// printer.new_indent_line();
|
||||||
}
|
// }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unordered_map<size_t, size_t> children_;
|
std::unordered_map<size_t, size_t> children_;
|
||||||
|
|
@ -65,9 +65,9 @@ std::optional<AnyStatementProxy> NameTree::find(const std::string &path) {
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NameTree::print(printers::Printer &printer) const {
|
// void NameTree::print(printers::Printer &printer) const {
|
||||||
nodes_[get_root()].print(nodes_, printer);
|
// nodes_[get_root()].print(nodes_, printer);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// // TODO
|
// // TODO
|
||||||
// void NameTree::add_statement_children_to_tree() {
|
// void NameTree::add_statement_children_to_tree() {
|
||||||
|
|
@ -203,8 +203,8 @@ TypeStorage::get_local_type_requirements(const std::string &name) const {
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
bool TypeStorage::unify(TypeProxy left_proxy, TypeProxy right_proxy,
|
bool TypeStorage::unify(TypeProxy /*left_proxy*/, TypeProxy /*right_proxy*/,
|
||||||
UnifyModePolicy policy) {
|
UnifyModePolicy /*policy*/) {
|
||||||
// Type &left = left_id.get();
|
// Type &left = left_id.get();
|
||||||
// Type &right = right_id.get();
|
// Type &right = right_id.get();
|
||||||
|
|
||||||
|
|
@ -261,7 +261,8 @@ bool TypeStorage::unify(TypeProxy left_proxy, TypeProxy right_proxy,
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
return true;
|
// return true;
|
||||||
|
throw std::exception();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TypeStorage::resolve(TypeProxy generic,
|
bool TypeStorage::resolve(TypeProxy generic,
|
||||||
|
|
@ -275,6 +276,8 @@ bool TypeStorage::resolve(TypeProxy generic,
|
||||||
// type.mode = mode;
|
// type.mode = mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// TODO
|
||||||
|
throw std::exception();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
11
lang/nodes/xmake.lua
Normal file
11
lang/nodes/xmake.lua
Normal file
|
|
@ -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)")
|
||||||
12
lang/printers/xmake.lua
Normal file
12
lang/printers/xmake.lua
Normal file
|
|
@ -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)")
|
||||||
12
lang/type_check/_xmake.lua
Normal file
12
lang/type_check/_xmake.lua
Normal file
|
|
@ -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)")
|
||||||
8
lang/utils/xmake.lua
Normal file
8
lang/utils/xmake.lua
Normal file
|
|
@ -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)")
|
||||||
16
xmake.lua
16
xmake.lua
|
|
@ -1,12 +1,9 @@
|
||||||
includes("deps/**/xmake.lua")
|
includes("deps/**/xmake.lua")
|
||||||
|
includes("lang/**/xmake.lua")
|
||||||
|
|
||||||
add_requires("tree-sitter")
|
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")
|
-- add_rules("c++.unity_build")
|
||||||
|
|
||||||
set_languages("c++20")
|
set_languages("c++20")
|
||||||
|
|
@ -16,10 +13,11 @@ set_languages("c++20")
|
||||||
|
|
||||||
target("lang")
|
target("lang")
|
||||||
set_kind("binary")
|
set_kind("binary")
|
||||||
add_includedirs("include")
|
-- add_includedirs("include")
|
||||||
add_includedirs(os.dirs(path.join(os.scriptdir(), "include/**")))
|
-- add_includedirs(os.dirs(path.join(os.scriptdir(), "include/**")))
|
||||||
add_files("src/**.cpp")
|
add_files("lang/app/**.cpp")
|
||||||
add_packages("tree-sitter")
|
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_warnings("allextra", "error")
|
||||||
set_rundir("$(projectdir)")
|
set_rundir("$(projectdir)")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue