- MachineConfig.h/cpp:解析 machine.toml → meta/types/ops/fbs 表 - 强校验:全属性必填、base 命中内建基元、range min≤max、tag 契约(BOOL=0/INT=1/TIME=2 唯一)、 opcode 唯一 0..255、类别-格式互锁(instance↔CAL)、params 数量与 format 一致、 fb.opcode 匹配 instance op、fb 字段类型命中 type 表 - 基元内置表(bit/int8..uint64/float32/64,宽度/符号/浮点) - machine_test:38 断言(正例仓库表 + 9 类负例 + 最小配置),ctest 12/12
28 lines
908 B
CMake
28 lines
908 B
CMake
# CMake最低版本
|
|
cmake_minimum_required(VERSION 3.21)
|
|
|
|
# 工程名、版本号、工程描述
|
|
project(Compiler
|
|
VERSION 0.1
|
|
DESCRIPTION "ST / toml 编译器")
|
|
|
|
# 词法、语法、符号表、类型检查、codegen、链接都留在 compiler 一个库里
|
|
add_library(compiler STATIC
|
|
./src/Lexer.cpp
|
|
./src/Project.cpp
|
|
./src/Parser.cpp
|
|
./src/Linker.cpp
|
|
./src/Typecheck.cpp
|
|
./src/Codegen.cpp
|
|
./src/MachineConfig.cpp)
|
|
|
|
target_include_directories(compiler PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
target_include_directories(compiler PRIVATE ${CMAKE_SOURCE_DIR}/third_party/tomlplusplus/include)
|
|
target_link_libraries(compiler PUBLIC isa)
|
|
|
|
# 可执行入口:STCompiler <project.toml> -o <name>.stb
|
|
add_executable(STCompiler
|
|
./src/main.cpp)
|
|
|
|
target_link_libraries(STCompiler PRIVATE compiler)
|