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