如果你已经走完整条主线,接下来最值得做的不是盲目加功能,而是带着课程里已经建立的直觉去读更完整的编译器项目。
A3.1 先回读你已经完成的 lab
主线 lab 是有意缩小边界后的练习。如果你做完一章后觉得“我知道核心动作了,但还没有完全把前后关系串起来”,最适合先回读的就是自己刚完成的 lab:
miniCompiler_lab/labs/lab02-step2/framework/student.cminiCompiler_lab/labs/lab03-step3/framework/student.cminiCompiler_lab/labs/lab04-step4/framework/student.cminiCompiler_lab/labs/lab05-step5/framework/student.c
回读时不要只看最终代码。更有效的方式是打开对应 TASK.md,把“本章目标 -> TODO 函数 -> 验证输出”重新连一遍。这样你能确认自己记住的不是某几行实现,而是这一章在整个编译器链路中的位置。
这时候再回看,会比一开始直接硬啃有效得多。
A3.2 推荐继续看的方向
如果你想继续扩展 minicc,比较自然的下一步是:
- 增加更多表达式和语句形式
- 完整支持函数参数与调用约定
- 增加更严谨的类型系统
- 把错误恢复和错误定位做得更好
- 引入中间表示,而不是直接从 AST 落到汇编
A3.3 参考材料
- 《编译原理》相关教材,用来补系统化术语
- RISC-V calling convention 文档,用来补参数、返回值和栈帧规则
- 更完整的教学编译器项目,例如
chibicc、8cc一类
但顺序很重要:先带着你在这门课里已经做过的代码经验去看,再去吸收这些材料,效果会比先背定义好很多。