编译原理复习提纲整理Word文档格式.docx

上传人:b****4 文档编号:17601920 上传时间:2022-12-07 格式:DOCX 页数:30 大小:1,012.41KB
下载 相关 举报
编译原理复习提纲整理Word文档格式.docx_第1页
第1页 / 共30页
编译原理复习提纲整理Word文档格式.docx_第2页
第2页 / 共30页
编译原理复习提纲整理Word文档格式.docx_第3页
第3页 / 共30页
编译原理复习提纲整理Word文档格式.docx_第4页
第4页 / 共30页
编译原理复习提纲整理Word文档格式.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

编译原理复习提纲整理Word文档格式.docx

《编译原理复习提纲整理Word文档格式.docx》由会员分享,可在线阅读,更多相关《编译原理复习提纲整理Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。

编译原理复习提纲整理Word文档格式.docx

识别(接受)一定的符号串(单词)

2.状态转换图的程序实现的思路:

为每个状态结点都编写一个子程序

3.字母表的概念:

一般用∑表示

4.闭包的概念:

闭包V*中的每个字都是由V中的字经过若干次连接而成的

5.正则闭包的概念:

是V上所有符号串的集合

6.∑*定义:

表示∑上所有字的全体,空字ε也包括在其中

7.∑+空字ε不包含,非ε

8.ε,{},{ε}之间的区别

9.ε所对应的正规集为{ε}

10.正规式与正规集的定义:

知道如何用正规式表示一个正规集

11.简述和的定义与区别

12.若M的某些结点既是初态结点又是终态结点,或者存在一条从某初态结点到某个终态结点的ε通路,那么空字ε可为M所识别

13.正规式与优先自动机的等价性

14.定理2.对于∑上的每一个正规式V,存在一个∑上的M,使得L(M)(V)

15.M的化简的概念和方法:

终态和非终态是可区别的,因为终态可以读出空字ε,而非终态不能读出空字ε

16.课后作业一个例题

17.构造一个,它接受∑={x,y}上所有倒数第二个字符为y的字符串

三、语法分析

(1)基本定义

1.上下文无关文法的定义

2.句型、句子的概念

3.文法和语言的对应关系,给出文法构造语言,文法G产生的句子的全体是该文法的语言

4.语法分析树与二义性:

判断文法的二义性方法:

如果一个文法含有二义性的句子(对应两棵不同的语法树),则称该文法是二义性文法

5.3型文法是正规文法、正则文法、线性文法

6.2型文法也称为称为上下文无关文法

7.若一个文法是递归的,则由它产生的语言的句子个数是无限的

(2)自上而下

8.文法左递归的定义

9.消除文法的左递归的方法:

直接左递归

10.消除回溯的方法:

提取公共左因子

11.递归下降分析法的概念,应满足什么条件?

12.递归下降法对文法的每个非终结符构造一个相应的子程序

13.预测分析法:

给文法构造预测分析表:

消除左递归、消除回溯、集、集。

举例子时,便成S→(T)

(3)自下而上

14.短语、直接短语的概念

15.句柄的概念(一个句型的最左直接短语)

16.规范归约(最左)、规范推导(最右)、规范句型

17.规范归约的关键问题是寻找句柄

18.在规范归约中,可归约串必出现在栈顶

19.算符文法、算符优先文法的概念,如何判断

20.构造算符优先关系表、、集合,可不考虑#号

21.素短语:

算符优先归约的关键问题是寻找最左素短语

22.算符优先法尤其适用于表达式的分析

23.给出文法G(P)

X→

Y→

Z→

24.该文法是否为算符优先文法?

请根据、集合构造算符优先关系表说明之(12分)

25.优先函数的优点:

便于比较,节省空间

26.优先函数的构造方法

27.欲构造行之有效的自上而下分析器,则必须消除文法中含有的左递归

28.分析法属于自底向上分析方法

29.从文法出发构造(0)分析表的步骤

四、语义分析

1.综合属性和继承属性概念

五、中间代码生成

1.中间代码是一种面向语法,易于翻译成目标代码的代码

2.后缀式(逆波兰式)的概念

3.逆波兰式中各运算法出现的顺序与实际运算顺序一致

4.后缀式与抽象语法树(表达式树)的关系

5.的含义

6.四元式表示方法,联系时通过临时变量,可以翻译各种语句

7.将赋值语句表示成后缀式和四元式

六、代码优化

1.简述代码优化的原则与优化的级别,并列举三种常用的优化技术

2.基本块、流图的概念,如何画、节点对应基本块

3.局部优化的方法,是对基本块进行优化的有效工具

4.P285中间注意

5.不变运算的代码外提的条件

6.循环优化中的强度削弱的含义

七、目标代码生成

1.编译程序生成的目标程序种类

一:

概述

1.编译方式与解释方式区别(小题)

在于是否生成目标代码,编译方式生成了目标代码。

2.编译程序总框架(简答题,背!

二:

词法分析

1.状态转换图的功能:

(较重要铺垫)

上图是一个很简单的状态转换图。

上图代表:

状态0通过X弧可以转换到状态1,通过Y弧可以转换到状态2

2.字母表的概念:

一个由有限元素组成的集合,每个元素称为一个符号或一个字,一般用∑表示一个字母表

例:

∑={a,b,c}

元素:

a,b,c

字母表中的字可拼接在一起构成一个序列,如等,符号的顺序不同所代表的序列也不同。

不包含任何字符的序列称为空字,用ε来表示

另外有几个概念必须先了解:

字(符号串)的连接

设x和y是两个字(符号串),则定义为他们的连接

和连接是

注:

(1)ε(空字)是连结运算的恒等元素εx=xε=x

(2)字(符号串)的n次连接

=…x

规定x0=ε

x1=x,x2,x3=

集合的(连接)积

设U和V是两个“字(符号串)的集合”,

则定义为他们的(连接)积

{∈U且y∈V}

例:

设{a,},{b,},

则{,,,}

集合V的n次(连接)积记为:

=VVV…V

n个

规定V0={ε}

设{a,b},那么

V0={ε}

V1={}

V2{}

V32{,

}

3.闭包的概念:

设V是一个字(符号串)的集合,

则V的闭包定义为V*,

V*=V0∪V1∪V2∪…

注:

闭包V*中的每个字都是由V中的字经过有限次连接而成的

正则闭包的定义为

=*

闭包与正则闭包的差别在于,闭包里是含有ε的,因为闭包里有集合V0,而正则闭包由于在闭包的基础上又连接了一个V,所以正则闭包里是没有空字ε的。

∑*定义:

∑+表示∑上所有字的全体,但不包括ε

4.ε,{},{ε}之间的区别(小题)

ε空字:

表不包含任示何字符的序列称

{}:

表示一个空集

{ε}:

表示含有空字ε的集合

5.正规式与正规集的定义:

我们可以把具有相同特征的字放在一起组成一个集合,即所谓的正规集

然后使用一种形式化的方法来表示正规集,即所谓的正规式

正规式是描述单词结构的一种形式;

正规集是该类单词的全集。

举例

对于下面的例子,大家应该好好思考一下后面4个的含义,对做大题是很有帮助的。

做大题时,题目通常会给你一个实际问题,你需要先把他要实现的功能抽象成一个正规集,再用正规式表达出来,才能继续做后面的步骤。

ε所对应的正规集为{ε}

6.简述有限自动机和的定义与区别(重要铺垫)

代表非确定的有限自动机;

代表确定的有限自动机

所谓的有限自动机,大家一定觉得这个概念坑爹死了。

其实他并不代表任何实体的机器,只是一种数学模型而已。

就像函数、数列是一种数学模型一样。

函数通过函数表达式实现他的功能:

你给他一个自变量,他能根据表达式求出因变量的值。

而有限自动机是通过状态转换图来实现功能,你给他一个初始状态和一个输入符号,他能根据你输入的这个符号将原状态转换到另一个状态,用他来模拟计算机的识别功能。

下面简单介绍一下(确定的有限自动机)的五元式表示法:

(重要)

定义:

一个确定有限自动机()M是一个五元式:

M=(S,∑,f,s0,F),其中

1)S是一个有限的状态集合,它的每个元素我们称为一个状态

2)∑是一个有穷的输入符号的字母表,它的每个元素我们称为一个输入字符

3)f是从S×

∑→S的单值部分映射

4)s0是S的一个元素,为初始状态,它是唯一的

5)状态集合F是终止状态的集合,它是S的子集(可空)

一个非确定有限自动机()M是一个五元式

M=(S,∑,f,S0,F),其中

S是一个有限的状态集合,它的每个元素我们称为一个状态

∑是一个有限的输入符号的字母表,它的每个元素我们称为一个输入字符

f是从S×

∑*→2S的部分映射,其中,2S表示S的幂集合(所有S的子集组成的集合)(f是非单值的à

M是非确定)

状态集合S0是初始状态集合,它是S的子集

状态集合F是终止状态的集合,它是S的子集

注:

和的区别在于(3)和(4),其他几点都差不多,这是有可能出简答题的,大家要记住他们的区别和联系

7的识别功能(小题)

对于∑*中任何字α,如果存在一条从初态结点到某个终态结点的道路,这条路上所有的标识符连成的字等于α,则α可被M所识别(接受,读出)

若M的某些结点既是初态结点又是终态结点,或者存在一条从某初态结点到某个终态结点的ε通路,那么空字ε可为M所识别

8.状态转换图的分裂规则(大题步骤)

例子:

(这里Y有两个圈圈代表他是最终状态的点)

划到最后要求每条弧上都只有一个字母或者数字

9.ε(I)和=ε(J)的构造方法(大题步骤)

这里先需要了解几个定义

我们假设有某个状态集I,这个集合中含有不同的状态。

定义1状态集I的a弧转换:

(I,a)

☐是一个状态集,是从I中的状态出发经过一条a弧到达的状态的全体。

定义2状态集I的ε(空字)闭包:

ε(I)

是一个状态集,由两部分组成:

⏹状态集I中的所有原状态。

⏹从I中的状态出发经过任意条ε弧,所能到达的状态的全体。

定义3=ε((I,a))

☐是一个状态集。

下面给出一个实例:

有如下一个状态转换图假定{1,2},求=?

()={5,4,3}

ε(J)={5,4,3,6,2,7,8}

(即先做a弧转换,将求得的状态再求空字闭包)

本知识点旨在让大家掌握在知道了I这个状态集合后,怎样求

10.如何用子集法将非确定的有限自动机确定化(大题步骤)

方法:

先画一张表

I

ε(S0)

A

B

C

D

E

F

G

1.这张表的首行上首列上固定是大写字母I

2.表格后面有几列,取决于这个有限自动机的输入符号数量,有几个输入符号就有几列,这里假设的下标ab代表这个有限自动机的输入符号

3.第二行的第一列也是固定的,S0代表的是这个有限自动机的初始状态,即求S0的空字闭包,我们假设求出来的状态集合是A

4.将A所对应的分别求出来,我们假设是B和C

5.如果B和C都分别于A不同,需要将B,C作为新的状态集合加入到第一列中

6.继续求出B和C所对应的,再检验:

对于这四个状态集合,有没有与是不同的,如果有,加入到第一列的下面,再继续计算,如果与前面的相同就不再需要加入了。

7.按照这样的方法一直进行下去,知道第一列不再有新的状态集合加入了,这个表就构造好了。

8.再画一张表,与上面的表相对应

S

a

b

1

2

3

4

9.对于上面这种表的构造方法很简单,大家也可以不另外画表,而直接标在原来的表中

这种表来源是,在原来表的第一列上分别表上s01234·

·

,a和b不变,然后按照第一列中数字所对应的状态集,依次对应在后面的列上标上相应数字。

例如第一列中B对应1,C对应2,那么将第二列第二行中的B也标上1,第三列第二行中的C标上2,等等。

10.画出下面的这个表或在原表中标好后,就可以按照这个表画出状态转换图了,例如,0状态通过a弧转换成1状态,通过b弧转换成2状态;

1状态通过a弧转换成3状态,通过b弧转换成4状态,等等。

画出这个状态转换图后,就完成了一个非确定有限自动机的确定化。

11.有限自动机的化简(大题步骤)

分析:

这是一块用文字很难表述清楚的内容,并且在实际的化简中如果题目难度大是很容易出错的,但是期末考试通常不会太复杂,整体的思路如下:

1.将第10步中得到的已经确定的中的所有状态分为两组,一组为终态节点,一组为非终态节点。

需要补充的是,在上一步构造的表格中,s那一列的节点哪些是终态哪些是非终态呢?

这需要看你最初构造的正规式中的哪个是终态节点了。

例如在下面的12中,Y为终态节点,那么在以上的表格中只要是含有Y元素的状态集合都将成为终态集。

2.将每个分组检验,看他们是否还能分割,检验的方法实在难以用文字描述清楚,请大家看下面的实际例题,自己领会。

3.每个分组都不能再分割后,若还含有大于2个元素的分组,则这个分组中的所有状态都是等价的,可以用其中的一个代替他们,代替的方法是:

假设用状态1代替状态2,则把状态2及其引出去的弧全部删去,并把原来指向状态2的弧指向状态1

下面是老师复习上的一个例子,这是一个较为复杂的例子,可能会看不懂,大家多问一问周围会的同学,期末考试时,肯定不会出这么复杂,通常在将终态节点和非终态节点区分开后,剩下的就已经快分好了,所以大家不用太担心,化简也是有可能不考察的,大家看清题目要求。

12.实际大题

例题:

构造一个,它接受∑={x,y}上所有倒数第二个字符为y的字符串

在这里还是想先说明一下这道题的解题思路和步骤,希望大家能真正明白整个解题的过程,让大家真正明白这样的一道大题是应该怎么做的(具体的完整解答过程这里不贴出来了,这是2012年考试之前老师复习课上给的一道题目,本以为会考原题,但是最后考的是一个(0|10)*的题,

大家也可以看老师复习上给出的例题,都是非常经典的例题!

也是有可能出原题的)

上面这道题的分析思路是

1.根据他所描述的功能,构造出一个正规式,正规式先给大家:

()*y()

(其实对于这样的大题最关键就是构造对正规式,大家一定把老师最后的上所有的例题是如何构造正规式的都记下来!

这一步做不出来后面的都没分了!

2.构造一个初始状态X和和最终状态Y,将正规式写在他们的转换弧上。

3.按照第8点中的分裂规则对他进行分裂,分裂直到每一条转换弧上都只含有一个字符

4.分裂结束得到的一个状态转换图实际上就是一个(非确定的有限自动机)

5.在掌握了第9点知识的前提下,就可以按照第10点说的步骤,将求得的确定化

6.得到确定化之后的状态转换图,剩下的事情就是化简了。

也就是第11点当中的只是

看到这里强烈建议大家先动笔试一试上面这道例题,相信只要你认真学习了前面的知识,做出来是没有问题的,祝大家成功!

三:

语法分析

1.上下文无关文法的定义(重要铺垫)

文法:

是描述语言的语法结构的形式规则(或称语法规则)

上下文无关文法概念:

它所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的(与它所在的上下文无关)

(重要!

以下的概念一定要理解熟知!

上下文无关文法G可定义为一个四元式(,,S,P)

是终结符号集合,它的每个元素称为终结符号,用小写字母表示。

是非终结符号集合,它的每个元素称为非终结符号,用大写字母表示。

S是一个开始符号,是一个非终结符,至少在一个产生式作为左部出现

P是一个产生式的集合,它的每个元素称为一条产生式,可以表示为:

P→α|b,其中P是非终结符,叫做产生式的左部,α和b分别叫做这个产生式的一个侯选式,他们既可以是终结符,也可以是非终结符,也可以是他们的组合。

2.句型、句子的概念(小题)

设G是一个文法,S是它的开始符号,如果S

α,且α∈(∪)*则称α是G的一个句型;

如果S

α,且α∈*,则称α是G的一个句子;

句子实际上是仅含有终结符号的句型

3.文法和语言的对应关系:

(了解)

一个文法G所产生的句子的全体就是一个语言。

给定一个文法,就能从结构上唯一确定其语言;

给定一种语言,能找到其文法,但该文法不是唯一的

4.语法分析树与二义性:

用一棵树来表示句型的推导,简称语法树。

若一个文法的一个句子对应两棵不同的语法树,则称该句子是二义性句子如果一个文法含有二义性的句子,则称该文法是二义性文法。

(5,6,7均可能出填空判断选择等小题)

5.3型文法是正规文法、正则文法、线性文法(用于词法分析)

6.2型文法也称为上下文无关文法(用于语法分析)

7.1型文法也称为上下文有关文法

若一个文法是递归的,则由它产生的语言的句子个数是无限的。

(2)自上而下(以下8~12均为13的大题铺垫)

一个文法中如果存在某个产生式P→Pα(即有某个侯选式的最左边的符号是这个产生式左部非终结符本身),则此文法是有左递归的。

只要求消除直接左递归,方法见下面的例子。

设有产生式P→Pα|β

其中β不以P开头,α不为ε,那么,我们可以把P的规则改为如下的非直接左递归形式:

P→βP’

P’→αP’|ε

这样就消除了P→Pα|β这个式子的左递归。

(提示:

在做题时,要把整个文法的每个产生式都逐一检验,有时含有左递归的产生式是不只一个的,需要逐个消除。

10集合集的构造方法(较抽象)

集的构造方法:

对于任意一个符号X,构造他的集的方法是:

(1)若X∈(终结符),则(X)={X}.

(2)若X∈(非终结符),且有产生式X→a…(小写a代表任意一个终结符号,他是侯选式左边的第一个字符),则把a加入到(X)中;

若X→ε也是一条产生式,则把ε也加到(X)中。

若有产生式X→Y…(大写Y代表任意一个非终结符号,他是侯选式左边的第一个字符),则把(Y)中所有非ε元素都加到(X)中;

(书上的表述很难懂,这里我用自己的水话表述)

(1)对于文法中给定的开始符号S,置#与(S)中;

(2)将所有产生式侯选式中的非终结符都标出来,并从前往后挨个检查

为方便讨论,我们假设A→α是一个产生式,(这里B和C代表非终结符,α代表终结符)

1.先检验这个非终结符的右边还有没有别的符号(不管这个符号是终结符还是非终结符),在这是我们检查的第一个非终结符,它右边是有符号C的,

如果检验到的某个非终结符右边有别的符号,例如这里的B,那么检验他右边符号的集合,这里是(C)。

先将(C)中非空字ε的元素加入到(B)中;

注意,如果(C)中含有空字ε,还要把(A)中的元素也加入到(B)中(如果不含空字就不这么做)

2.如果检验到的终结符右边没有别的符号了,例如这里的C,那么,直接将(A)中的元素加入到(C)中。

在这里,α的存在是无关痛痒的。

也就是说,我们在检验某个非终结符时只要看他的右边就好了,左边有没有有什么都是无所谓的。

大家按照上面的方法,将每一个侯选式中的非终结符都这样检查一遍,最后就能求得所有非终结符的集了

大家不必知道概念,只须知道能够用递归下降分析法分析的文法是

(1)文法,要成为这种文法,必须满足以下条件:

(1)文法不含左递归(在这里提一句:

欲构造行之有效的自上而下分析器,则必须消除文法中含有的左递归,请大家记住这句话,有可能考小题)

(2)对于文法中每一个非终结符A的各个产生式的候选式的集两两不相交。

即,若

A→α1|α2|…|αn

则(αi)∩(αj)=Φ(i≠j)

(3)对于文法中的每个非终结符A,若它的某个候选式的集中包含ε,则必须满足

(A)∩(A)=Φ

12.预测分析表的构造

构造预测分析表的算法是:

(这里需要先画一张表格,代入题中很容易理解,光看步骤比较抽象,大家可以看第13中的大题,边看边理解)

(1)先画一张表格,表的首行是文法中所有的终结符号,首列是所有产生式的左部)

(2)检验文法中每个产生式的每一个侯选式。

我们先假设这里有一个产生式为A→α,若(α)中含有终结符a,则把“A→α”写入

(1)中构造的表中的M[]项(M[]表示以产生式左部A为行,终结符a为列所对应的表格);

若(b)中含有终结符β,则把“A→β”写入

(1)中构造的表中的M[A,β]项(M[A,β]表示以产生式左部A为行,终结符β为列所对应的表格);

按照这样的方法依次执行下去,直到把每一个产生式的每一个侯选式都检验完并对应填入表格。

(3)特别地,若某个产生式侯选式的集中包含有空子ε:

我们接着引用上例进行说明。

在A→α中,假设(α)里还包含有ε,则找出(A)中的所有终结符元素,我们假设其中一个是β,那么把“A→α”写入M[A,β]中,按照此方法将(A)中的所有元素逐一检验,并将“A→α”填入对应的表格中去即可。

13.实际大题(8~12点的综合知识,15分左右!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1