跳到内容

第十一卷:编译原理与形式语言 ​

这一卷把源文本逐步变成 token、语法树、IR 和机器码,同时保住语义。每个 pass 都有前置条件和验证点,否则优化只会更快地产生错误答案。

先修知识 ​

  • 能写函数、递归,并使用栈、树和图;可参考第一卷与第二卷。
  • 理解集合、关系和基本证明会有帮助,可按需查阅 Math A。目标代码与 ABI 部分还会用到第三卷的机器模型。

覆盖内容 ​

第 1–4 章从文法、自动机走到可计算性与复杂度;第 5–8 章沿编译过程讨论扫描、解析、名称与类型、中间表示、优化和代码生成。

第 1 章 ​

第 2 章 ​

第 3 章 ​

第 4 章 ​

第 5 章 ​

第 6 章 ​

第 7 章 ​

第 8 章 ​

学完能做什么 ​

  • 为简单语言定义文法与识别器,说明正则、上下文无关和可判定问题的区别。
  • 跟踪源位置、作用域和类型信息从字符流进入 AST 与 IR 的过程。
  • 解释一项优化为什么保持程序语义,以及目标平台的 ABI 和寄存器约束怎样影响生成代码。

怎样使用这份目录 ​

希望补理论时,从第 1 章按顺序阅读。希望动手做小语言时,可以先从第 5–6 章写扫描器和表达式解析器,再回补相关理论。每加入一个阶段,都保留输入、输出和错误位置;先用正确而简单的实现作参照,再检查优化版本的结果。

Built with VitePress | Software Systems Atlas