2.9 KiB
2.9 KiB
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 内存使用优化