编译原理

编译原理的名声是「难」,我的体验是「被讲难了」。这门课的本质是几个非常朴素的自动化思想(正则、上下文无关文法、不动点)在「把人话翻译成机器话」这个问题上的系统应用。本讲义按「真的写一个编译器」的顺序推进:每章都是那个迷你编译器的一段,第 10 章把它拼完整跑起来。和 jyy 的课一样,我信奉「不做实验的编译原理是文学课」。

十章的地图:前端(词法、语法、语义,02~06)→ 中端(中间表示与优化,07、09)→ 后端(运行时与代码生成,08、10):

先修:C 或 Python 任一(实验用)、数据结构(树)、离散数学的自动机部分(第 2 章前可补)。教材配合:《Crafting Interpreters》(手把手,免费在线)、龙书(工具书)、chibicc(读源码)。