返回笔记目录 编译原理 / 4 分钟
目录-知识地图
收在「编译原理」里的笔记,适合回看概念、方法和当时的判断
编译原理 来自 MyNote
编译原理 · 知识地图
教材:编译原理及实践(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章 → 建立整体认知
- 第2章 → 词法分析(正则表达式 + 自动机基础)
- 第3章 → 语法分析理论基础(CFG、分析树、二义性)
- 第4章 → 自顶向下分析(递归下降、LL(1))
- 第5章 → 自底向上分析(LR 系列、Yacc)
- 第6章 → 语义分析(属性文法、类型检查)
- 第7章 → 运行时环境(内存布局、参数传递)
- 第8章 → 代码生成(中间代码、TM 机、优化)
建议优先攻破第4章和第5章,这两章在考试中占比最高。
章节笔记
- [[编译原理/第1章-概论|第1章 概论]]
- [[编译原理/第2章-词法分析|第2章 词法分析]]
- [[编译原理/第3章-上下文无关文法|第3章 上下文无关文法及分析]]
- [[编译原理/第4章-自顶向下分析|第4章 自顶向下的分析]]
- [[编译原理/第5章-自底向上分析|第5章 自底向上的分析]]
- [[编译原理/第6章-语义分析|第6章 语义分析]]
- [[编译原理/第7章-运行时环境|第7章 运行时环境]]
- [[编译原理/第8章-代码生成|第8章 代码生成]]