fix(ir): 规范ir实现

This commit is contained in:
jing
2026-03-11 00:38:05 +08:00
parent c72ffa6e39
commit 8f448df4bc
8 changed files with 132 additions and 22 deletions

View File

@@ -69,3 +69,8 @@ java -jar third_party/antlr-4.13.2-complete.jar \
# 仅输出语法树
./build/bin/compiler --emit-parse-tree test/test_case/simple_add.sy
```
## 7. 关于 AST 的建议
同学们也可以自行设计一层抽象语法树AST将 ANTLR 语法树先转换为 AST再进入后续阶段。
这样可以减少对具体文法细节的依赖使语义分析、IR 生成和后续扩展更清晰。这里不做具体要求。

View File

@@ -57,6 +57,9 @@ Lab2 的目标是在该示例基础上扩展语义覆盖范围,逐步把更多
说明:当前阶段变量统一采用内存模型:先 `alloca` 分配栈槽,再通过 `store/load` 读写。即使变量由常量初始化(如 `int a = 1;`),也会先 `store` 到栈槽,而不是直接把变量替换成 SSA 值。后续实验中,同学可按需求再重构。
此外,当前 IR 还维护了最基本的 use-def 关系:每个 `Value` 会记录哪些 `Instruction` 使用了它。
这对后续做数据流分析、死代码删除、常量传播等优化会很有帮助;但目前相关实现,接口仍不完整,后续实验中还需要同学继续补充和完善。
## 6. 构建与运行
```bash