Files
tinycc/.monkeycode/specs/2026-05-20-tiny-c-compiler-csharp/tasklist.md
2026-05-30 07:59:28 +08:00

2.9 KiB
Raw Blame History

Implementation Task List

Phase 1: 项目初始化与基础架构

  • 1.1 创建 .NET 8 控制台项目结构
  • 1.2 配置项目解决方案和模块划分
  • 1.3 实现基础的错误报告系统ErrorReporter
  • 1.4 实现源代码位置追踪SourceLocation

Phase 2: 预处理器实现

  • 2.1 实现 #include 指令处理
  • 2.2 实现 #define 宏定义和宏展开
  • 2.3 实现条件编译(#ifdef, #ifndef, #if, #else, #endif
  • 2.4 实现头文件搜索路径管理

Phase 3: 词法分析器实现

  • 3.1 定义所有 TokenType 枚举
  • 3.2 实现 Token 结构
  • 3.3 实现 Lexer 主类
  • 3.4 实现关键字识别
  • 3.5 实现标识符识别
  • 3.6 实现整数字面量识别
  • 3.7 实现浮点数字面量识别
  • 3.8 实现字符和字符串字面量识别
  • 3.9 实现运算符识别
  • 3.10 实现注释跳过
  • 3.11 编写 Lexer 单元测试

Phase 4: 语法分析器实现

  • 4.1 定义 AST 节点层次结构
  • 4.2 实现递归下降解析器框架
  • 4.3 实现表达式解析(处理运算符优先级)
  • 4.4 实现语句解析
  • 4.5 实现函数声明解析
  • 4.6 实现类型声明解析
  • 4.7 实现控制流语句解析if, while, for, switch
  • 4.8 实现结构体和联合体解析
  • 4.9 实现错误恢复机制
  • 4.10 编写 Parser 单元测试

Phase 5: 语义分析器实现

  • 5.1 实现类型系统CType 层次结构)
  • 5.2 实现符号表SymbolTable
  • 5.3 实现作用域管理
  • 5.4 实现类型检查
  • 5.5 实现函数签名验证
  • 5.6 实现变量声明检查
  • 5.7 编写 Semantic Analyzer 单元测试

Phase 6: 中间表示IR生成

  • 6.1 定义 IR 指令集
  • 6.2 实现基本块BasicBlock结构
  • 6.3 实现控制流图CFG
  • 6.4 实现 AST 到 IR 转换
  • 6.5 实现临时变量管理
  • 6.6 实现常量折叠优化
  • 6.7 编写 IR Generator 单元测试

Phase 7: x86/x64 代码生成器

  • 7.1 定义目标架构抽象
  • 7.2 实现寄存器管理
  • 7.3 实现栈帧管理
  • 7.4 实现 x86 指令编码
  • 7.5 实现 x64 指令编码
  • 7.6 实现 IR 到机器码转换
  • 7.7 实现函数调用约定cdecl, sysv64
  • 7.8 实现寄存器分配
  • 7.9 编写 CodeGen 单元测试

Phase 8: 可执行文件生成

  • 8.1 实现 PE 文件格式写入Windows
  • 8.2 实现 ELF 文件格式写入Linux
  • 8.3 实现节表管理
  • 8.4 实现重定位处理
  • 8.5 实现入口点设置

Phase 9: 编译器驱动与 CLI

  • 9.1 实现命令行参数解析
  • 9.2 实现编译流程编排
  • 9.3 实现错误汇总与报告
  • 9.4 实现多文件编译支持

Phase 10: 测试与优化

  • 10.1 编写端到端测试
  • 10.2 使用 TCC 测试套件进行回归测试
  • 10.3 性能测试与优化
  • 10.4 内存使用优化