编译原理复习总结


title: 编译原理复习总结


文中截图来自老师的ppt && 课本

旨在方便复习查看相关内容

第一章 引论

编译步骤以及目的

image-20210520153358746

image-20210520154429057

image-20210520153414777

image-20210520153930912

第二章 前后文无关文法

2.2 符号和符号串

image-20210520213937829

image-20210520214027859

2.3 文法的类型

0 型文法类型

image-20210521133613959

1型文法

image-20210521133654307image-20210521134010510

2型文法

正规文法 3 型文法

image-20210521134524306

2.4 短语和句柄

image-20210507173453022

1 短语

image-20210507185247101

2 句柄

image-20210507185625007

image-20210507185650226

image-20210521142308341

第三章 词法分析及词法分析程序

1、词法分析的主要任务(功能、输入、输出、纠错)

​ 词法分析的主要任务是从左到右逐个字符地对源程序进行扫描,产生一个个单词序列

2、单词的表示(正规式、正规文法)

(1)正规式:定义,对应的单词的集合(正规集)

(2)正规文法(左右线性文法)

3、有限自动机

(1)DFA、NFA(包括空转移的)的定义

(2)NFA确定化算法(NFA->DFA->最小化的DFA

(3)DFA最小化算法

4、正规式->有限自动机的方法

5、正规文法->有限自动机

正规文法->正规式

解方程

右线性

image-20210406130702018

image-20210406130749297

image-20210406130829132

左线性

image-20210406131023635

正规式->正规文法

image-20210406131250816

3.4 有限自动机

DFA:确定的有限自动机

image-20210521151105682

image-20210521151147564

NFA:非确定的有限自动机

image-20210521174745725

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]

image-20210406194348710

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

image-20210406195119721

NFA的确定化

image-20210406203228786

NFA确定化-有效子集法

image-20210521201709112image-20210521201727431

具有ε动作的NFA

image-20210507202140887

image-20210406210713952

image-20210406210753856

image-20210406210821332

3.4.5 具有ε动作的NFA确定化

image-20210521202911335

image-20210521211411125

3.4.6 DFA状态数的最小化

image-20210521212327343

image-20210521213006018

image-20210521222442283

3.5 正规式构造FA

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

image-20210522201355611

3.6 正规文法和有穷自动机的等价转换

3.6.1 右线性文法构造状态转换图

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

image-20210522203743362

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

image-20210522203912862

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

image-20210522204943509

第四章 自顶向下的语法分析

4.1 自顶向下的语法分析

4.2 消除文法的左递归

4.2.1 直接左递归

image-20210408100620040

eq:

image-20210408100638402

4.2.2 间接左递归

image-20210408100733073

4.3 LL(1)文法

  1. 首先消除左递归

  2. 计算first follow select 集

  3. 通过判断select集中相同的左部 select集不同 则该文法为LL(1)文法

  4. 通过select 集可以构建预测分析表

4.3.1 FIRST集

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

image-20210408101519817

image-20210408101533864

eq:

image-20210408102056498

4.3.2 FLLOW集

image-20210408101105438

image-20210408102216846

image-20210408105233212

eq:

image-20210408102345241

4.3.3 SELECT集

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

image-20210408101249690

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

image-20210408105117636

image-20210408111237762

4.4 非LL(1)文法的改造

4.4.1 提取左公因子法

image-20210523154019978

image-20210523154121975

例题1

image-20210523154154615

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)]

image-20210523160416380

image-20210523161655482

第五章 自底向上优先分析

5.2 算符优先分析法

image-20210523163456886

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

image-20210523171824374

算符优先关系

image-20210523171757532

填写符号矩阵

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

素短语与最左素短语

image-20210523175348922

image-20210523175434792

第六章 自底向上-LR分析

主要内容

  1. 基本概念(LR分析,分析方法,LR(0)项目,活前缀)
  2. 基本原理:LR分析器
  3. LR分析算法(LR(0),SLR(1),LR(1))

6.2 LR(0)分析

image-20210507151346248

image-20210507151358580

image-20210507151420415

6.3 SLR(1)分析

image-20210509145002091

image-20210509135214765image-20210509145105102

6.4 LR(1)分析

image-20210509150317651

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

image-20210510163328836

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

image-20210509153833622

image-20210510171036782

第七章

1、属性、属性文法、属性翻译文法

2、继承属性、综合属性

3、S属性翻译文法,L属性翻译文法

4、语法制导翻译相关概念

综合属性

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

image-20210523190043130

继承属性

image-20210523190157589

image-20210523210949290

image-20210523211013850

S-属性文法

只包含综合属性的文法

L-属性文法

翻译模式

image-20210512144908042

image-20210512150004249

第八章 静态语义分析和中间代码生成

1、符号表(定义、作用、常见的操作,常见的数据结构)

2、常见的中间语言表示(逆波兰、三元式、四元式、树形)

3、常见的流程控制语句的翻译(顺序、选择、循环)

符号表定义

存储语义分析结果的数据结构

符号表的的作用

  • 记录源程序中出现的各种符号的相关属性,为编译提供相应的信息。
  • 将变量从声明的地方传递到实际使用的地方。

符号表常见操作

  • 创建符号表
  • 插入表项
  • 删除表项
  • 修改表项
  • 查询表项
  • 释放表空间

符号表常见的数据结构

  • 线性表,如数组,链表
  • 有序表,使用折半查找
  • 二插搜索树
  • Hash表

逆波兰表达式 后缀表示法

image-20210512154200685image-20210512154208284

image-20210512154312939

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

波兰表达式 前缀表示法

image-20210525152843880

四元式和三元式

image-20210512154949053

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

image-20210512155216948

image-20210512155232288

image-20210512155242579

image-20210512155422282image-20210512155535702

image-20210512155710336

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]

image-20210512160728041

image-20210512160852776

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

布尔表达式的翻译

image-20210525161633127

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

image-20210525161843175

image-20210525161924105

image-20210525161948235

image-20210525163048830

image-20210525163145329

拉链与回填

image-20210525164448406

image-20210607093458640

image-20210607093328050

选择语句的翻译

没有 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 …

image-20210609224825396

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),这个栈帧称为活动记录,其包含的主要内容有:局部变量,函数实参,临时值(用于表达式计算的中间单元)等数据信息以及必要的控制信息。

活动记录通过一个运行时的栈进行管理。

posted @ 2022-05-10 23:18  iforeverhz  阅读(252)  评论(0)    收藏  举报