编译原理复习总结
title: 编译原理复习总结
文中截图来自老师的ppt && 课本
旨在方便复习查看相关内容
第一章 引论
编译步骤以及目的




第二章 前后文无关文法
2.2 符号和符号串


2.3 文法的类型
0 型文法类型

1型文法


2型文法
正规文法 3 型文法

2.4 短语和句柄

1 短语


2 句柄



第三章 词法分析及词法分析程序
1、词法分析的主要任务(功能、输入、输出、纠错)
词法分析的主要任务是从左到右逐个字符地对源程序进行扫描,产生一个个单词序列
2、单词的表示(正规式、正规文法)
(1)正规式:定义,对应的单词的集合(正规集)
(2)正规文法(左右线性文法)
3、有限自动机
(1)DFA、NFA(包括空转移的)的定义
(2)NFA确定化算法(NFA->DFA->最小化的DFA)
(3)DFA最小化算法
4、正规式->有限自动机的方法
5、正规文法->有限自动机
正规文法->正规式
解方程
右线性



左线性

正规式->正规文法

3.4 有限自动机
DFA:确定的有限自动机


NFA:非确定的有限自动机

右线性文法->状态转换图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZrNolfCc-1650703826918)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210521174806310.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0HWuImVw-1650703826918)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210406194128451.png)]

左线性文法->状态转换图

NFA的确定化

NFA确定化-有效子集法


具有ε动作的NFA




3.4.5 具有ε动作的NFA确定化


3.4.6 DFA状态数的最小化



3.5 正规式构造FA
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lC6fEWpl-1650703826925)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210522200250171.png)]

3.6 正规文法和有穷自动机的等价转换
3.6.1 右线性文法构造状态转换图
3.6.1.1 右线性文法->状态转换图

3.6.1.32 状态转换图->右线性文法

3.6.2 左线性文法构造状态转换图

第四章 自顶向下的语法分析
4.1 自顶向下的语法分析
4.2 消除文法的左递归
4.2.1 直接左递归

eq:

4.2.2 间接左递归

4.3 LL(1)文法
首先消除左递归
计算first follow select 集
通过判断select集中相同的左部 select集不同 则该文法为LL(1)文法
通过select 集可以构建预测分析表
4.3.1 FIRST集
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GiIBHsCZ-1650703826928)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210408101210147.png)]


eq:

4.3.2 FLLOW集



eq:

4.3.3 SELECT集
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gW3JjEDg-1650703826930)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210408101347685.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O6llqzIY-1650703826931)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210408104820546.png)]


4.4 非LL(1)文法的改造
4.4.1 提取左公因子法


例题1

4.4.2 消除左递归
例题2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJGzqE75-1650703826933)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210523155128699.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3eyTZXKC-1650703826933)(assets/image-20210523155521952.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i53eApFT-1650703826933)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210523160155443.png)]


第五章 自底向上优先分析
5.2 算符优先分析法

FirstVT &&LastVT 求解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kdZ2IMja-1650703826935)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210523163736697.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWFVeGLR-1650703826935)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210523164557564.png)]
例题1

算符优先关系

填写符号矩阵
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hJCWN9xF-1650703826936)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210523171901308.png)]
素短语与最左素短语


第六章 自底向上-LR分析
主要内容
- 基本概念(LR分析,分析方法,LR(0)项目,活前缀)
- 基本原理:LR分析器
- LR分析算法(LR(0),SLR(1),LR(1))
6.2 LR(0)分析



6.3 SLR(1)分析



6.4 LR(1)分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BKQFetGP-1650703826940)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210509150616645.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-45eCGU4N-1650703826941)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210509153816730.png)]


第七章
1、属性、属性文法、属性翻译文法
2、继承属性、综合属性
3、S属性翻译文法,L属性翻译文法
4、语法制导翻译相关概念
综合属性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fIwU1AqL-1650703826942)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210523185026545.png)]

继承属性



S-属性文法
只包含综合属性的文法
L-属性文法
翻译模式


第八章 静态语义分析和中间代码生成
1、符号表(定义、作用、常见的操作,常见的数据结构)
2、常见的中间语言表示(逆波兰、三元式、四元式、树形)
3、常见的流程控制语句的翻译(顺序、选择、循环)
符号表定义
存储语义分析结果的数据结构
符号表的的作用
- 记录源程序中出现的各种符号的相关属性,为编译提供相应的信息。
- 将变量从声明的地方传递到实际使用的地方。
符号表常见操作
- 创建符号表
- 插入表项
- 删除表项
- 修改表项
- 查询表项
- 释放表空间
符号表常见的数据结构
- 线性表,如数组,链表
- 有序表,使用折半查找
- 二插搜索树
- Hash表
逆波兰表达式 后缀表示法



字母相对顺序不变 符号插入

波兰表达式 前缀表示法

四元式和三元式

简单算术表达式和赋值语句的翻译






[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dclS2UcA-1650703826950)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210512155720093.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5GxibmK9-1650703826950)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210512160056496.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QYOFtInG-1650703826951)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210512161103046.png)]
布尔表达式的翻译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7HHr0PIU-1650703826952)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210525161731742.png)]





拉链与回填



选择语句的翻译
没有 else 的 if 语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4X3wrKD3-1650703826956)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210607121107035.png)]
带有 else 的 if 语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c473ig8K-1650703826957)(https://gitee.com/iforeverhz/picture/raw/master/img/image-20210607135923697.png)]
循环语句的翻译
while … do …

do … while …
Statement→do Statement1 while Expr
D1→do {$$.LoopStartPlace=NXQ;}
DSW→D1 Statement1 while
{
BackPatch($2.chain,NXQ);
$$.LoopStartPlace=$1.LoopStartPlace;
}
Statement→DSW Expr
{
BackPatch($2.FC,$1.LoopStartPlace); $$.Chain=$2.TC;
}
第九章
1、运行时的存储组织?
2、存储策略(静态,动态):静态分配策略,栈式动态策略,堆式动态策略,这三种策略的定义、基本思想、使用的场合
3、过程的活动记录(定义、最基本的使用方法)
4、递归与存储分配策略
5、堆式分配的基本思想
存储分配策略
静态分配策略:适合编译时就能确定的变量
栈式分配策略:适合过程的调用
堆式分配策略:适合在运行时动态地申请或释放存储空间
活动记录
定义:函数/过程调用或返回时,在运行栈上创建或从运行栈上消去的栈帧(frame),这个栈帧称为活动记录,其包含的主要内容有:局部变量,函数实参,临时值(用于表达式计算的中间单元)等数据信息以及必要的控制信息。
活动记录通过一个运行时的栈进行管理。

浙公网安备 33010602011771号