编译原理 · 知识地图

教材:编译原理及实践(Compilation Principles and Practice)| 8 章 + 3 附录 | 按编译器工作流程组织


全书知识体系

编译器是将源语言翻译为目标语言的计算机程序,从源程序到目标程序需要经过一系列阶段:

源程序 → 词法分析 → 语法分析 → 语义分析 → 中间代码生成/优化 → 代码生成 → 目标程序
                                                                     运行时环境

各章对应关系

章节 对应编译器阶段 前置知识
[[编译原理/第1章-概论 第1章 概论]] 整体视角
[[编译原理/第2章-词法分析 第2章 词法分析]] 扫描程序
[[编译原理/第3章-上下文无关文法 第3章 上下文无关文法及分析]] 语法分析基础
[[编译原理/第4章-自顶向下分析 第4章 自顶向下的分析]] 语法分析实现(手写)
[[编译原理/第5章-自底向上分析 第5章 自底向上的分析]] 语法分析实现(生成器)
[[编译原理/第6章-语义分析 第6章 语义分析]] 语义分析
[[编译原理/第7章-运行时环境 第7章 运行时环境]] 运行时
[[编译原理/第8章-代码生成 第8章 代码生成]] 代码生成

考试重点优先级

★★★ 第一梯队(必考,占分最大)

考点 章节 典型题型
正则表达式 → NFA → DFA → 最小化 第2章 逐步构造
First/Follow 集合计算 + LL(1) 分析表 第4章 计算+填表
LR(0) 项目集规范族 + LR 分析表 第5章 计算+填表
属性文法与属性计算 第6章 计算+分析

★★☆ 第二梯队(常考)

考点 章节
分析树 vs 抽象语法树 第3章
二义性判定与消除 第3章
中间代码生成(三地址码/P-代码) 第8章
活动记录布局与运行时环境 第7章
参数传递机制 第7章
编译器阶段划分 第1章

★☆☆ 第三梯队(选考/简答)

考点 章节
自举与 T 型图 第1章
Lex 和 Yacc 的使用 第2、5章
符号表实现策略 第6章
TM 机指令 第8章
代码优化技术概览 第8章

学习路线

  1. 第1章 → 建立整体认知
  2. 第2章 → 词法分析(正则表达式 + 自动机基础)
  3. 第3章 → 语法分析理论基础(CFG、分析树、二义性)
  4. 第4章 → 自顶向下分析(递归下降、LL(1))
  5. 第5章 → 自底向上分析(LR 系列、Yacc)
  6. 第6章 → 语义分析(属性文法、类型检查)
  7. 第7章 → 运行时环境(内存布局、参数传递)
  8. 第8章 → 代码生成(中间代码、TM 机、优化)

建议优先攻破第4章和第5章,这两章在考试中占比最高。


章节笔记

  • [[编译原理/第1章-概论|第1章 概论]]
  • [[编译原理/第2章-词法分析|第2章 词法分析]]
  • [[编译原理/第3章-上下文无关文法|第3章 上下文无关文法及分析]]
  • [[编译原理/第4章-自顶向下分析|第4章 自顶向下的分析]]
  • [[编译原理/第5章-自底向上分析|第5章 自底向上的分析]]
  • [[编译原理/第6章-语义分析|第6章 语义分析]]
  • [[编译原理/第7章-运行时环境|第7章 运行时环境]]
  • [[编译原理/第8章-代码生成|第8章 代码生成]]