课程内容
1. 编译器介绍
2. 词法分析
- 词法分析的概念
- 词法分析的设计
- 词法分析的实现
- 基本思路
- 正则表达式 -> NFA
- NFA -> DFA
- DFA -> 分析表
- 词法分析的挑战
- 歧义:最长匹配,优先匹配
- 出错处理:设置默认匹配规则
3. 语法分析与上下午无关文法
4. 自顶向下语法分析
- 递归下降语法分析器
- 预测分析器
- 回溯的消除:提取左因子
- LL(1)文法
- First集与Follow集
- 构造分析表
- 递归实现与栈式实现
- 出错的处理
5. 自底向上语法分析
- 自底向上分析概述
- 归约与推导
- shift-reduce分析
- 归约对象的选择:句柄、活前缀
- 自底向上分析器的构造
- 拓广文法
- 文法—>活前缀DFA的构建
- LR(0)项目集的划分:shift, reduce, goto
- 分析表的构建:action表、goto表
- SLR分析器
- LR(1)分析器
- LR(1)项目: (LR(0), Follow(A))
- 解决Follow集,区分更多的状态或项目集
- LALR分析器
- 合并LR(1)中相同LR(0)分量
6. 语义分析
7. 代码生成
8. 代码优化