- 更新了类型系统,新增了类型并优化了结构。 - 引入了基类型和派生类,用于函数、结构体和接口类型。 - 实现了类型上下文,用于管理内置类型和类型解析。 - 添加了诊断类,用于收集和报告警告和错误。 - 通过改进错误处理增强了虚拟机执行,以应对递归限制问题。 - 实现了反汇编器,将字节码转换为代码,以改善调试和分析。 - 添加了新的抽象语法树节点,用于成员表达式、对象初始化、接口和结构体定义。 - 引入了语义错误测试,包括重定义、未声明的变量和无效的结构字段。
116 lines
3.8 KiB
Lua
116 lines
3.8 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("Fig")
|
|
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/main.cpp")
|