diff --git a/src/main/java/org/jcnc/snow/compiler/ir/doc/README.md b/src/main/java/org/jcnc/snow/compiler/ir/doc/README.md index 758600b..a51e21c 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/doc/README.md +++ b/src/main/java/org/jcnc/snow/compiler/ir/doc/README.md @@ -1,49 +1,31 @@ -# Snow Compiler – IR 模块 +# Snow Compiler - IR 模块 -> Snow 编译器的中间表示子模块 —— 负责将带有类型和符号信息的 AST 转换为可优化的中间表示(IR)并管理相关数据结构 +> Snow 编译器的中间表示模块 —— 负责构建、组织和输出中间表示指令(IR) ## 项目简介 -**IR** 是 [Snow 编译器]() 的后端子模块,承担在语义分析(Semantic)之后,将抽象语法树(AST)构建成一套通用、可扩展的中间表示。 -该模块定义了 IR 的核心数据结构、指令集与构建流程,通过分层的 Builder API 从高层 AST 生成完整的 `IRProgram`,为后续优化和目标代码生成阶段提供坚实基础。 +**IR(Intermediate Representation)** 是 [Snow 编译器]() 项目的核心模块,承担中间表示的构建、组织与管理任务。 +它用于在前端语法分析与后端目标代码生成之间,提供结构清晰、便于优化和转换的抽象表示形式。 + +IR 模块以类 SSA(Static Single Assignment)形式设计,通过统一的指令体系、虚拟寄存器模型和构建器架构,实现了良好的表达力与可扩展性,为后续优化和代码生成阶段打下基础。 ## 核心功能 -* **IR 构建**:`IRProgramBuilder` 将顶层 AST 节点列表或模块节点,构建为完整的 `IRProgram` -* **分块构建器**:`FunctionBuilder`、`ExpressionBuilder`、`StatementBuilder` 在上下文 `IRContext` 和 `IRBuilderScope` 中协同生成 IR -* **指令定义**:提供一元运算、二元运算、加载常量、返回等指令实现 -* **核心数据结构**:`IRProgram`、`IRFunction`、`IRInstruction`、`IROpCode`、`IRValue` -* **值管理**:支持虚拟寄存器(`IRVirtualRegister`)、常量(`IRConstant`)、标签(`IRLabel`) -* **可扩展性**:`InstructionFactory` 支持自定义或扩展新指令 +* **统一的中间表示模型**:表达控制流与数据流,支持函数、指令、值等核心结构 +* **IR 构建器体系**:模块化构建函数、表达式与语句 IR,简化前端对接 +* **灵活的指令层级结构**:支持二元操作、跳转、返回等多种基本指令 +* **寄存器与常量模型**:统一管理虚拟寄存器、常量、标签等值类型 +* **IR 打印与调试支持**:辅助输出 IR 文本格式,支持可视化与调试 ## 模块结构 ``` ir/ - ├── builder/ // AST → IR 构建器 - │ ├── IRProgramBuilder.java - │ ├── FunctionBuilder.java - │ ├── ExpressionBuilder.java - │ ├── StatementBuilder.java - │ ├── InstructionFactory.java - │ ├── IRContext.java - │ └── IRBuilderScope.java - ├── core/ // 核心 IR 数据结构 - │ ├── IRProgram.java - │ ├── IRFunction.java - │ ├── IRInstruction.java - │ ├── IROpCode.java - │ └── IRValue.java - ├── instruction/ // 各类指令实现 - │ ├── BinaryOperationInstruction.java - │ ├── UnaryOperationInstruction.java - │ ├── LoadConstInstruction.java - │ └── ReturnInstruction.java - ├── value/ // IR 值类型 - │ ├── IRVirtualRegister.java - │ ├── IRConstant.java - │ └── IRLabel.java - └── doc/ // 文档与示例(README 等) + ├── builder/ // 构建器模块:负责构造表达式、函数与语句的 IR + ├── core/ // 核心定义:IR 基础结构,如函数、指令、程序、访问器等 + ├── instruction/ // 指令实现:具体的 IR 指令类型(如加法、跳转、返回等) + ├── value/ // 值模型:常量、标签、虚拟寄存器等 + └── doc/ // 模块文档 ``` ## 开发环境 @@ -52,4 +34,4 @@ ir/ * Maven 构建管理 * 推荐 IDE:IntelliJ IDEA ---- +--- \ No newline at end of file