跳到主要内容
🚨 重要提示

本项目目前仍处于早期开发阶段,核心功能尚未完全实现,语法规范和工具链仍在持续完善中。

当前开发进度

项目状态

当前已完成:

  • 词法分析器
  • 语法分析器
  • 语义分析器
  • 中间代码生成
  • 代码优化器
  • 目标代码生成

开发进度

已完成

  • 词法分析器基础功能
    • 基本的 Token 识别
    • UTF-16 字符支持
    • 多行字符串支持
    • 注释处理
    • 错误处理和恢复
  • 语法分析器基础功能
    • 表达式解析
    • 语句解析
    • 函数声明
    • 错误处理和恢复
  • 语义分析器基础功能
    • 类型检查
    • 作用域分析
    • 变量初始化检查
    • 函数调用检查
  • 中间代码生成器基础功能
    • 表达式生成
    • 语句生成
    • 函数生成
    • 基本块生成

进行中

  • IR 优化器基础功能
    • 常量折叠优化
    • 死代码消除
    • 基本块合并
    • 公共子表达式消除
    • 循环优化
    • 内联优化
  • 词法分析器增强功能
    • UTF-8 字符支持
    • 中文标识符支持
  • 语法分析器增强功能
    • 作用域分析

待开发

  • 目标代码生成
    • 指令选择
    • 寄存器分配
    • 代码生成

已完成功能

词法分析器 (Lexer)

  • 基本的 Token 识别
  • UTF-8/UTF-16 编码支持
  • 中文标识符支持
  • 多行字符串支持
  • 状态机实现
  • 错误处理和恢复机制

语法分析器 (Parser)

  • 基本表达式解析
    • 字面量表达式
    • 标识符表达式
    • 一元表达式
    • 二元表达式
    • 赋值表达式
    • 函数调用表达式
  • 语句解析
    • 表达式语句
    • 变量声明语句
    • 块语句
    • if 语句
    • while 语句
    • for 语句
    • return 语句
    • break 语句
    • continue 语句
    • 函数声明语句
    • 类声明语句
  • 错误处理
    • 错误恢复机制
    • 恐慌模式
    • 同步点机制
  • 访问权限控制
    • public/private/protected 修饰符
    • 成员访问控制

语义分析器 (Semantic Analyzer)

  • 基本框架搭建
  • 类型检查
  • 作用域分析
  • 变量初始化检查
  • 函数调用检查

中间代码生成器 (IR Generator)

  • 基本框架搭建
  • 表达式生成
    • 常量表达式
    • 变量表达式
    • 二元表达式
    • 函数调用表达式
  • 语句生成
    • 赋值语句
    • 条件语句
    • 循环语句
    • 返回语句
  • 函数生成
    • 函数声明
    • 参数处理
    • 基本块生成

代码优化器 (IR Optimizer)

  • 基本框架搭建
  • 常量折叠优化
  • 死代码消除
  • 基本块合并
  • 公共子表达式消除
  • 循环优化
    • 循环不变量外提
    • 循环展开
    • 循环融合
  • 内联优化

IR 节点 (IR Node)

  • 基本框架搭建
  • IR 节点类型定义
    • 基本节点类型
    • 操作数类型
    • 指令类型
    • 基本块类型
    • 函数类型
  • 控制流图支持
    • CFG 构建
    • 前驱/后继分析
    • 基本块关系维护
  • SSA 形式支持
    • 变量定义追踪
    • 使用-定义链维护
    • PHI 节点支持
  • 单元测试
    • 节点创建和操作测试
    • 控制流图测试
    • SSA 功能测试

进行中的工作

  1. 实现循环优化器
  2. 完善优化器测试用例
  3. 改进优化器性能
  4. 准备开始目标代码生成器的设计
  5. 实现 AST 到 IR 的转换

下一步计划

  1. 完成循环优化器的实现
  2. 实现内联优化器
  3. 开始设计目标代码生成器
  4. 完善文档和注释
  5. 实现 IR 生成器

遗留问题

  1. 需要添加更多的单元测试用例
  2. 需要完善错误信息的国际化支持
  3. 需要优化内存使用
  4. 需要添加性能测试
  5. 需要完善优化器的文档