forked from NUDT-compiler/nudt-compiler-cpp
parent
b30c963eb7
commit
cf2e6e0b46
@ -0,0 +1,5 @@
|
||||
# 忽略构建产物与中间文件:
|
||||
# - build/ 等构建目录
|
||||
# - ANTLR 自动生成文件(若产生在源码树中应忽略)
|
||||
# - test/test_result/ 等测试输出目录
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// AST 节点定义与实现:
|
||||
// - 表达式、语句、声明、函数、类型等节点
|
||||
// - 支持后续阶段在节点上附加信息(类型、符号绑定、常量值等)
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// AST 调试打印:
|
||||
// - 以可读形式打印 AST 结构
|
||||
// - 用于验证 AST 构建与语义分析结果,便于定位问题
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
// 前端解析驱动:
|
||||
// - 读取源代码
|
||||
// - 调用 ANTLR 生成的 lexer/parser 得到 parse tree
|
||||
// - 对外提供“可用的解析入口”(语法正确性由测试保证)
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// IR 基本块:
|
||||
// - 保存指令序列
|
||||
// - 维护或可计算前驱/后继关系,用于 CFG 分析与优化
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// IR 上下文:
|
||||
// - 管理类型与常量的创建/复用
|
||||
// - 保存字符串常量、符号等公共资源(按需要扩展)
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// IR 构建工具:
|
||||
// - 管理插入点(当前基本块/位置)
|
||||
// - 提供创建各类指令的便捷接口,降低 IRGen 复杂度
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// IR 指令体系:
|
||||
// - 二元运算/比较、load/store、call、br/condbr、ret、phi、alloca 等
|
||||
// - 指令操作数与结果类型管理,支持打印与优化
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// IR 类型系统:
|
||||
// - i32/f32/void、指针、数组、函数类型等
|
||||
// - 按 SysY 支持范围裁剪并逐步补齐
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// SSA 值体系抽象:
|
||||
// - 常量、参数、指令结果等统一为 Value
|
||||
// - 提供类型信息与使用/被使用关系(按需要实现)
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// 支配树分析:
|
||||
// - 构建/查询 Dominator Tree 及相关关系
|
||||
// - 为 mem2reg、CFG 优化与循环分析提供基础能力
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// 循环分析:
|
||||
// - 识别循环结构与层级关系
|
||||
// - 为后续优化(可选)提供循环信息
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// CFG 简化:
|
||||
// - 删除不可达块、合并空块、简化分支等
|
||||
// - 改善 IR 结构,便于后续优化与后端生成
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// IR 常量折叠:
|
||||
// - 折叠可判定的常量表达式
|
||||
// - 简化常量控制流分支(按实现范围裁剪)
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// 常量求值:
|
||||
// - 处理数组维度、全局初始化、const 表达式等编译期可计算场景
|
||||
// - 为语义分析与 IR 生成提供常量折叠/常量值信息
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
// 语义分析主流程:
|
||||
// - 符号解析与绑定、类型检查、控制流规则检查
|
||||
// - 记录/插入必要的隐式转换(或在节点上标注)
|
||||
// - 输出为“带类型 / 符号 / 常量信息”的 AST
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// 符号表与作用域管理:
|
||||
// - 支持嵌套作用域(块/函数/全局)
|
||||
// - 变量/函数/参数/常量的注册、查找与遮蔽规则
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// 日志模块:
|
||||
// - 统一输出调试信息、阶段信息与错误信息
|
||||
// - 提供可配置的日志级别与输出位置(按需要实现)
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// SysY 运行库实现:
|
||||
// - 按实验/评测规范提供 I/O 等函数实现
|
||||
// - 与编译器生成的目标代码链接,支撑运行时行为
|
||||
|
||||
@ -0,0 +1,4 @@
|
||||
// SysY 运行库头文件:
|
||||
// - 声明运行库函数原型(供编译器生成 call 或链接阶段引用)
|
||||
// - 与 sylib.c 配套,按规范逐步补齐声明
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
# Bash 测试脚本:
|
||||
# - 批量编译 test/test_case/ 下的 *.sy 用例
|
||||
# - 将产物与日志写入 test/test_result/(例如 .ll/.s、运行输出、diff 结果)
|
||||
# - 汇总通过/失败信息并给出统计
|
||||
|
||||
Loading…
Reference in new issue