refactor(frontend): 添加对只编译前端的支持
This commit is contained in:
@@ -27,12 +27,13 @@ Lab1 聚焦前端第一步:词法/语法分析。
|
||||
当前仓库仅实现最小子集:
|
||||
|
||||
1. 主要覆盖 `int main() { ... }` 这一固定函数形态。
|
||||
2. 只包含少量声明/返回/表达式能力(用于演示完整流程)。
|
||||
2. 只包含少量声明/返回/表达式能力;当前默认示例主要覆盖简单加法。
|
||||
3. 示例用例位于 `test/test_case/functional/simple_add.sy`。
|
||||
|
||||
## 5. 构建与生成流程
|
||||
|
||||
Lab1 中需要先生成 Lexer/Parser 相关文件,再执行 CMake 构建。
|
||||
为了只聚焦语法树构建,建议启用 `parse-only` 模式,仅编译前端解析与语法树打印,不编译 `sem` / `irgen` / `mir`。
|
||||
|
||||
Lexer/Parser 生成文件统一位于:
|
||||
|
||||
@@ -50,8 +51,17 @@ java -jar third_party/antlr-4.13.2-complete.jar \
|
||||
src/antlr4/SysY.g4
|
||||
```
|
||||
|
||||
随后再执行构建:
|
||||
随后执行 Lab1 构建,下面的命令是只编译运行前端:
|
||||
|
||||
```bash
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCOMPILER_PARSE_ONLY=ON
|
||||
cmake --build build -j "$(nproc)"
|
||||
```
|
||||
|
||||
如果后续需要继续验证 `sem` / `irgen` / `mir`,再使用全量构建。需要注意的是,由于 `irgen` 需要直接遍历 ANTLR 生成的语法树,`sem` / `irgen` 会直接依赖 `SysYParser::*Context` 的节点类型、层级结构和访问接口。因此当 `src/antlr4/SysY.g4` 被扩展后,如果后续阶段代码没有同步适配新的语法树结构,就可能在全量构建或运行时出现报错;这部分适配工作属于 Lab2 及后续实验需要继续完成的内容。
|
||||
|
||||
|
||||
全量构建命令
|
||||
```bash
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build -j "$(nproc)"
|
||||
|
||||
Reference in New Issue
Block a user