斯坦福的编译原理课程,设计者开发了一个 Class-Object-Oriented-Language,简称 COOL 语言。这门课的核心就是通过理论知识的学习,为 COOL 语言实现一个编译器,将 COOL 高级语言编译为 MIPS 汇编并在 Spim 这个 MIPS 模拟器上成功执行。
理论部分基本按照龙书的顺序覆盖了词法分析、语法分析、语义分析、运行时环境、寄存器分配、代码优化与生成等内容,实践部分则相应地分为词法分析、语法分析、语义分析、代码生成四个阶段,难度循序渐进,并在优化部分给学生留下了很大的设计空间。
- CS143 斯坦福大学编译原理【中文字幕】
- 课程资料:https://web.stanford.edu/class/cs143/
- 课程文档:https://csdiy.wiki/en/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/CS143/
- 编译原理不要一开始就学理论, 最好先做一些简单的项目开始, 这样可以有直观的认识。市面上有不少实践书。@DominguitoLamo 介绍两个开源比较好的项目:——
- Super Tiny Compiler: /~https://github.com/jamiebuilds/the-super-tiny-compiler —— 这是用js做的最简单的编译器, 麻雀虽小, 但五脏俱全, 几百行代码就完成了。
- Crafting Interpreter: https://craftinginterpreters.com/ —— 这本书就是利用java和c实现一款叫lox的动态语言, 通过实践, 可以了解基础的编译原理知识, 如有限状态自动机, AST, 利用访问者模式遍历AST等。这本书好像中文版翻译了几章。