- 新增了一个名为 ArgumentParser 的类来处理命令行参数,其中包括用于显示帮助、显示版本和显示许可证的标志。 - 更新了 main.cpp 以使用 ArgumentParser 来改进命令行界面。 - 创建了 Entry.cpp 和 Entry.hpp 来封装虚拟机执行逻辑,从而实现更好的关注点分离。 - 调整了 xmake.lua 以包含 ArgumentParser 和 Entry 组件的新源文件。 - 强化了命令行使用的错误处理和用户反馈。
142 lines
4.6 KiB
Lua
142 lines
4.6 KiB
Lua
add_rules("mode.debug", "mode.release")
|
|
add_rules("plugin.compile_commands.autoupdate", {outputdir = ".vscode"})
|
|
|
|
set_policy("run.autobuild", false)
|
|
|
|
if is_plat("linux") then
|
|
-- Linux: clang + libc++
|
|
set_toolchains("clang")
|
|
add_cxxflags("-stdlib=libc++")
|
|
add_ldflags("-stdlib=libc++")
|
|
elseif is_plat("windows") then
|
|
-- 1. CI cross (Linux -> Windows)
|
|
-- 2. local dev (Windows + llvm-mingw)
|
|
set_toolchains("mingw") -- llvm-mingw
|
|
add_ldflags("-Wl,--stack,268435456")
|
|
end
|
|
|
|
set_languages("c++23")
|
|
add_includedirs("src")
|
|
|
|
add_defines("__FCORE_COMPILE_TIME=\"" .. os.date("%Y-%m-%d %H:%M:%S") .. "\"")
|
|
|
|
target("StringTest")
|
|
add_files("src/Deps/String/StringTest.cpp")
|
|
|
|
target("LexerTest")
|
|
add_files("src/Core/*.cpp")
|
|
add_files("src/Token/Token.cpp")
|
|
add_files("src/Error/Error.cpp")
|
|
add_files("src/Lexer/Lexer.cpp")
|
|
add_files("src/Lexer/LexerTest.cpp")
|
|
|
|
target("ParserTest")
|
|
add_files("src/Core/*.cpp")
|
|
add_files("src/Token/Token.cpp")
|
|
add_files("src/Error/Error.cpp")
|
|
add_files("src/Lexer/Lexer.cpp")
|
|
add_files("src/Ast/Operator.cpp")
|
|
add_files("src/Parser/ExprParser.cpp")
|
|
add_files("src/Parser/StmtParser.cpp")
|
|
add_files("src/Parser/TypeExprParser.cpp")
|
|
add_files("src/Parser/Parser.cpp")
|
|
add_files("src/Parser/ParserTest.cpp")
|
|
|
|
target("ObjectTest")
|
|
add_files("src/Object/Object.cpp")
|
|
add_files("src/Object/ObjectTest.cpp")
|
|
|
|
target("AnalyzerTest")
|
|
add_files("src/Core/*.cpp")
|
|
add_files("src/Token/Token.cpp")
|
|
add_files("src/Error/Error.cpp")
|
|
add_files("src/Lexer/Lexer.cpp")
|
|
add_files("src/Ast/Operator.cpp")
|
|
add_files("src/Parser/ExprParser.cpp")
|
|
add_files("src/Parser/StmtParser.cpp")
|
|
add_files("src/Parser/TypeExprParser.cpp")
|
|
add_files("src/Parser/Parser.cpp")
|
|
add_files("src/Sema/Type.cpp")
|
|
add_files("src/Sema/Analyzer.cpp")
|
|
add_files("src/Sema/AnalyzerTest.cpp")
|
|
|
|
target("CompilerTest")
|
|
add_files("src/Core/*.cpp")
|
|
add_files("src/Token/Token.cpp")
|
|
add_files("src/Error/Error.cpp")
|
|
add_files("src/Lexer/Lexer.cpp")
|
|
add_files("src/Ast/Operator.cpp")
|
|
add_files("src/Bytecode/Disassembler.cpp")
|
|
add_files("src/Parser/ExprParser.cpp")
|
|
add_files("src/Parser/StmtParser.cpp")
|
|
add_files("src/Parser/TypeExprParser.cpp")
|
|
add_files("src/Parser/Parser.cpp")
|
|
add_files("src/Object/Object.cpp")
|
|
add_files("src/Sema/Type.cpp")
|
|
add_files("src/Sema/Analyzer.cpp")
|
|
add_files("src/Compiler/ExprCompiler.cpp")
|
|
add_files("src/Compiler/StmtCompiler.cpp")
|
|
add_files("src/Compiler/Compiler.cpp")
|
|
add_files("src/Compiler/CompileTest.cpp")
|
|
|
|
target("LSP")
|
|
add_files("src/Core/*.cpp")
|
|
add_files("src/Token/Token.cpp")
|
|
add_files("src/Error/Error.cpp")
|
|
add_files("src/Lexer/Lexer.cpp")
|
|
add_files("src/Ast/Operator.cpp")
|
|
add_files("src/Parser/ExprParser.cpp")
|
|
add_files("src/Parser/StmtParser.cpp")
|
|
add_files("src/Parser/TypeExprParser.cpp")
|
|
add_files("src/Parser/Parser.cpp")
|
|
add_files("src/Sema/Type.cpp")
|
|
add_files("src/Sema/Analyzer.cpp")
|
|
add_files("src/LSP/LSPServer.cpp")
|
|
set_filename("Fig-LSP")
|
|
|
|
target("ReplTest")
|
|
add_files("src/Core/*.cpp")
|
|
add_files("src/Token/Token.cpp")
|
|
add_files("src/Error/Error.cpp")
|
|
add_files("src/Lexer/Lexer.cpp")
|
|
add_files("src/Ast/Operator.cpp")
|
|
add_files("src/Bytecode/Disassembler.cpp")
|
|
add_files("src/Parser/ExprParser.cpp")
|
|
add_files("src/Parser/StmtParser.cpp")
|
|
add_files("src/Parser/TypeExprParser.cpp")
|
|
add_files("src/Parser/Parser.cpp")
|
|
add_files("src/Object/Object.cpp")
|
|
add_files("src/Sema/Type.cpp")
|
|
add_files("src/Sema/Analyzer.cpp")
|
|
add_files("src/Compiler/ExprCompiler.cpp")
|
|
add_files("src/Compiler/StmtCompiler.cpp")
|
|
add_files("src/Compiler/Compiler.cpp")
|
|
add_files("src/VM/VM.cpp")
|
|
add_files("src/Repl/ReplTest.cpp")
|
|
|
|
target("Fig")
|
|
add_files("src/Core/*.cpp")
|
|
add_files("src/Error/Error.cpp")
|
|
|
|
add_files("src/Token/Token.cpp")
|
|
add_files("src/Lexer/Lexer.cpp")
|
|
|
|
add_files("src/Ast/Operator.cpp")
|
|
add_files("src/Parser/ExprParser.cpp")
|
|
add_files("src/Parser/StmtParser.cpp")
|
|
add_files("src/Parser/TypeExprParser.cpp")
|
|
add_files("src/Parser/Parser.cpp")
|
|
|
|
add_files("src/Sema/Type.cpp")
|
|
add_files("src/Sema/Analyzer.cpp")
|
|
|
|
add_files("src/Compiler/ExprCompiler.cpp")
|
|
add_files("src/Compiler/StmtCompiler.cpp")
|
|
add_files("src/Compiler/Compiler.cpp")
|
|
add_files("src/Bytecode/Disassembler.cpp")
|
|
|
|
add_files("src/Object/Object.cpp")
|
|
add_files("src/VM/VM.cpp")
|
|
add_files("src/VM/Entry.cpp")
|
|
add_files("src/main.cpp")
|