《编译原理》复习要点.docx

上传人:b****1 文档编号:1841110 上传时间:2022-10-24 格式:DOCX 页数:24 大小:914.89KB
下载 相关 举报
《编译原理》复习要点.docx_第1页
第1页 / 共24页
《编译原理》复习要点.docx_第2页
第2页 / 共24页
《编译原理》复习要点.docx_第3页
第3页 / 共24页
《编译原理》复习要点.docx_第4页
第4页 / 共24页
《编译原理》复习要点.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

《编译原理》复习要点.docx

《《编译原理》复习要点.docx》由会员分享,可在线阅读,更多相关《《编译原理》复习要点.docx(24页珍藏版)》请在冰豆网上搜索。

《编译原理》复习要点.docx

《编译原理》复习要点

考试安排:

7月13日(20周周三),15:

00-17:

00,20208

填空10X1分、选择10X2分、简答4X5分、大题5X10分

考试大题:

循环优化

LL

(1).定义之类的

算符优先算法

自下而上分析法(20分,选择、填空、大题)

第一章引论

一.编译程序(compiler):

把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序

二.编译程序的工作的五个阶段:

词法分析、语法分析、中间代码产生、优化、目标代码产生

1.词法分析

任务:

输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号。

依循的原则:

构词规则

描述工具:

有限自动机

FORI:

=1TO100DO

保留字标识符等符整常数保留字整常数保留字

2.语法分析

任务:

在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。

依循的原则:

语法规则

述工具:

上下文无关文法

3.语义分析与中间代码产生

任务:

对各类不同语法范畴按语言的语义进行初步翻译。

(变量是否定义、类型是否正确等)

依循的原则:

语义规则

中间代码:

三元式,四元式,逆波兰记号,树形结构等。

是一种独立于具体硬件的记号系统。

例:

将Z:

=X+0.618*Y翻译成四元式为

(1)*0.618YT1

(2)+XT1T2

(3):

=T2_Z

4.优化

任务:

对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。

依循的原则:

程序的等价变换规则

FORK:

=1TO100DO

BEGIN

M:

=I+10*K;

N:

=J+10*K;

END

4.目标代码产生

任务:

把中间代码变换成特定机器上的目标代码。

依赖于硬件系统结构和机器指令的含义

目标代码三种形式:

a)绝对指令代码:

可直接运行

b)可重新定位指令代码:

需要连接装配

c)汇编指令代码:

需要进行汇编

三.编译程序结构

▶编译程序总框(简答题5分)

第二章高级语言及其语法描述

2.1.1语法

词法规则:

单词符号的形成规则。

a)单词符号是语言中具有独立意义的最基本结构。

一般包括:

常数、标识符、基本字、算符、界符等。

b)描述工具:

正规式和有限自动机

语法规则:

语法单位的形成规则。

a)语法单位通常包括:

表达式、语句、分程序、过程、函数、程序等;

c)描述工具:

上下文无关文法

2.1.2语义

语义:

一组规则,用它可以定义一个程序的意义。

描述方法:

a)自然语言描述:

隐藏错误、二义性和不完整性

b)形式描述:

☞无二义性

☞完整性

多数语言中,算符的优先顺序如下:

▶乘幂(**或↑)

优先级由高自低

一元负(-)

▶乘、除

▶加、减

不同的语言对算符优先级的规定有差异,甚至差异很大!

关系符(<,=,>,<=,>=,<>)

▶非(¬,not)

▶与(Λ,&,and)

▶或(˅,|,or,)

▶隐含(或imp)

▶等值(或epui,或~)

2.3程序语言的语法描述

1.几个概念:

a)考虑一个有穷字母表∑字符集

b)其中每一个元素称为一个字符

c)∑上的字(也叫字符串)是指由∑中的字符所构成的一个有穷序列

d)不包含任何字符的序列称为空字,记为ε

e)用∑*表示∑上的所有字的全体,包含空字ε

例如:

设∑={a,b},则∑*={ε,a,b,aa,ab,ba,bb,aaa,...}

f)∑*的子集U和V的连接(积)定义为UV={b|U&bV}

例如:

设:

U={a,aa},V={b,bb}那么:

UV={ab,abb,aab,aabb}

g)V自身的n次积记为Vn=VV…V

h)规定V0={},令V*=V0∪V1∪V2∪V3∪…称V*是V的闭包;

记V+=VV*,称V+是V的正规闭包。

例如:

设:

U={a,aa}

那么:

U*={,a,aa,aaa,aaaa,…}

U+={a,aa,aaa,aaaa,…}

i)0型(短语文法,图灵机):

产生式形如:

其中:

(VTVN)*且至少含有一个非终结符;(VTVN)*

任何0型语言都是递归可枚举的。

j)1型(上下文有关文法,线性界限自动机):

产生式形如:

其中:

||||,仅S例外。

意味着对非终结符进行替换时务必考虑上下文,并且,一般不允许替换成空串。

k)2型(上下文无关文法,非确定下推自动机):

产生式形如:

A

其中:

AVN;(VTVN)*。

非终结符的替换可以不必考虑上下文。

l)3型(正规文法,有限自动机):

右线性文法

产生式形如:

AB或A

其中:

VT*;A,BVN

左线性文法

产生式形如:

AB或A

其中:

VT*;A,BVN

正规文法的能力要比上下文无关文法弱得多。

四种类型描述能力比较

m)上下文无关文法的定义:

一个上下文无关文法G是一个四元式

G=(VT,VN,S,P),其中

VT:

终结符集合(非空)

VN:

非终结符集合(非空),且VTVN=

S:

文法的开始符号,SVN

P:

产生式集合(有限),每个产生式形式为

P,PVN,(VTVN)*

开始符S至少必须在某个产生式的左部出现一次。

例:

文法G1(A):

Ac|Ab

G1(A)的语言?

解:

L(G1)={c,cb,cbb,},以c开头,后继若干个b

n)定义:

如果一个文法存在某个句子对应两颗不同的语法树,则说这个文法是二义的。

G(E):

Ei|E+E|E*E|(E)是二义文法。

o)语言的二义性:

一个语言是二义性的,如果对它不存在无二义性的文法。

可能存在G和G’,一个为二义的,一个为无二义的。

但L(G)=L(G’)

2.状态转换图

a)概念:

状态转换图是一张有限方向图。

b)结点代表状态,用圆圈表示。

c)状态之间用箭弧连结,箭弧上的标记(字符)代表射出结状态下可能出现的输入字符或字符类。

d)一张转换图只包含有限个状态,其中有一个为初态,至少要有一个终态

3.正规运算符优先顺序

在不致混淆时,括号可以省去,但规定算符的优先顺序为:

*(闭包).(连接)|(或)

4.3型文法-正规式

G的任何产生式为AB或A

其中:

VT*;A,BVN

3型文法等价于正规式,所以也称正规文法。

3.3.2确定有限自动机(DFA)

对状态图进行形式化,则可以下定义:

自动机M是一个五元式M=(S,,f,S0,F),其中:

a)S:

有穷状态集,

b):

输入字母表(有穷),

c)f:

状态转换函数,为SS的单值部分映射,f(s,a)=s’表示:

当现行状态为s,输入字符为a时,将状态转换到下一状态s’。

我们把s’称为s的一个后继状态。

d)S0S是唯一的一个初态;

e)FS:

终态集(可空)。

例如:

DFAM=({0,1,2,3},{a,b},f,0,{3}),其中:

f定义如下:

f(0,a)=1f(0,b)=2

f(1,a)=3f(1,b)=2

f(2,a)=1f(2,b)=3

f(3,a)=3f(3,b)=3

3.3.3非确定有限自动机(NFA)

定义:

一个非确定有限自动机(NFA)M是一个五元式M=(S,,f,S0,F),其中:

1S:

有穷状态集;

2:

输入字母表(有穷);

3f:

状态转换函数,为S*2S的部分映射(非单值);

4S0S是非空的初态集;

5FS:

终态集(可空)。

从状态图中看NFA和DFA的区别:

1弧上的标记可以是*中的一个字,而不一定是单个字符;

2同一个字可能出现在同状态射出的多条弧上。

DFA是NFA的特例。

定义:

对于任何两个有限自动机M和M’,如果L(M)=L(M’),则称M与M’等价。

自动机理论中一个重要的结论:

判定两个自动机等价性的算法是存在的。

对于每个NFAM存在一个DFAM’,使得L(M)=L(M’)。

亦即DFA与NFA描述能力相同。

把上述NFA确定化——采用子集法.

设I是M’的状态集的一个子集,定义I的-闭包-closure(I)为:

i)若sI,则s-closure(I);

ii)若sI,则从s出发经过任意条弧而能到达的任何状态s’都属于-closure(I)

即-closure(I)=I{s’|从某个sI出发经过任意条弧能到达s’}

例:

设a是中的一个字符,定义Ia=-closure(J)

其中,J为I中的某个状态出发经过一条a弧而到达的状态集合。

3.3.4正规文法与有限自动机的等价性

定理:

1.对每一个右线性正规文法G或左线性正规文法G,都存在一个有限自动机(FA)M,使得L(M)=L(G)。

2.对每一个FAM,都存在一个右线性正规文法GR和左线性正规文法GL,使得L(M)=L(GR)=L(GL)。

3.3.5正规式与有限自动机的等价性

定理:

1.对任何FAM,都存在一个正规式r,使得L(r)=L(M)。

2.对任何正规式r,都存在一个FAM,使得L(M)=L(r)。

2对转换图概念拓广,令每条弧可用一个正规式作标记。

(对一类输入符号)

3.3.6确定有限自动机的化简

▶对DFAM的化简:

寻找一个状态数比M少的DFAM’,使得L(M)=L(M’)

▶假设s和t为M的两个状态,称s和t等价:

如果从状态s出发能读出某个字而停止于终态,那么同样,从t出发也能读出而停止于终态;反之亦然。

▶两个状态不等价,则称它们是可区别的。

▶对一个DFAM最少化的基本思想:

把M的状态集划分为一些不相交的子集,使得任何两个不同子集的状态是可区别的,而同一子集的任何两个状态是等价的。

最后,让每个子集选出一个代表,同时消去其他状态。

I

(1)={0,1,2}I

(2)={3,4,5,6}

Ia

(1)={1,3}

I(11)={0,2}I(12)={1}I

(2)={3,4,5,6}

I(11)={0,2}

Ia(11)={1}Ib(11)={2,5}

I(111)={0}I(112)={2}I(12)={1}I

(2)={3,4,5,6}

Ia

(2)={3,6}Ia

(2)={4,5}

第四章语法分析——自上而下分析

▶语法分析的方法:

▶自下而上分析法(Bottom-up)

▶自上而下分析法(Top-down)

▶基本思想:

它从文法的开始符号出发,反复使用各种产生式,寻找"匹配"的推导。

▶递归下降分析法:

对每一语法变量(非终结符)构造一个相应的子程序,每个子程序识别一定的语法单位,通过子程序间的信息反馈和联合作用实现对输入串的识别。

▶预测分析程序

☞优点:

直观、简单和宜于手工实现。

4.3LL

(1)分析法

▶构造不带回溯的自上而下分析算法

▶要消除文法的左递归性

▶克服回溯

4.3.1左递归的消除

▶直接消除见诸于产生式中的左

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

当前位置:首页 > 小学教育 > 小学作文

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

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