当前位置:文档之家› 编译原理复习要点

编译原理复习要点

考试安排:7月13日(20周周三),15:00-17:00,20208填空10X1分、选择10X2分、简答4X5分、大题5X10分考试大题:循环优化LL(1).定义之类的算符优先算法…自下而上分析法(20分,选择、填空、大题)第一章引论一.编译程序(compiler):把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序二.编译程序的工作的五个阶段:词法分析、语法分析、中间代码产生、优化、目标代码产生1.词法分析任务: 输入源程序,符号。

依循的原则:构词规则描述工具:有限自动机保留字标识符等符整常数保留字整常数保留字2.语法分析任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。

依循的原则:语法规则述工具:上下文无关文法3.语义分析与中间代码产生任务:对各类不同语法范畴按语言的语义进行初步翻译。

(变量是否定义、类型是否正确等)依循的原则:语义规则中间代码:三元式,四元式,逆波兰记号,树形结构等。

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

例:将Z:=X + 0.618 * Y 翻译成四元式为(1) * 0.618 Y T1(2) + X T1 T2(3) := T2 _ Z4. 优化任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。

依循的原则:程序的等价变换规则FOR K:=1 TO 100 DOBEGINM := I + 10 * K;N := J + 10 * K;END4.目标代码产生任务: 把中间代码变换成特定机器上的目标代码。

依赖于硬件系统结构和机器指令的含义目标代码三种形式: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 & b ∈V }例如: 设:U ={ a, aa } ,V = { b, bb } 那么:UV = { ab, abb, aab,aabb }g) V 自身的 n 次积记为V n =VV (V)h) 规定V 0={ε},令V *=V 0∪V 1∪V 2∪V 3∪… 称V *是V 的闭包;记 V +=VV * ,称V +是V 的正规闭包。

例如: 设:U ={ a, aa }那么:U * = { ε , a, aa, aaa, aaaa, …}U + = { a, aa, aaa, aaaa, …}i) 0型(短语文法,图灵机):产生式形如: α → β其中:α∈ (V T ⋃ V N )*且至少含有一个非终结符;β∈ (V T ⋃ V N )*任何0型语言都是递归可枚举的。

j) 1型(上下文有关文法,线性界限自动机):产生式形如: α → β其中:|α| ≤ |β|,仅 S →ε 例外。

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

k) 2型(上下文无关文法,非确定下推自动机):产生式形如: A → β其中:A ∈ V N ;β∈ (V T ⋃ V N )*。

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

l) 3型(正规文法,有限自动机):产生式形如: A → αB 或 A → α优先级由高自低不同的语言对算符优先级的规定有差异,甚至差异很大!其中:α∈ V T*;A,B∈V N产生式形如: A → Bα或 A →α其中:α∈ V T*;A,B∈V N正规文法的能力要比上下文无关文法弱得多。

四种类型描述能力比较m)上下文无关文法的定义:一个上下文无关文法G是一个四元式G=(V T,V N,S,P),其中V T:终结符集合(非空)V N:非终结符集合(非空),且V T ⋂V N=∅S:文法的开始符号,S∈V NP:产生式集合(有限),每个产生式形式为P→α, P∈V N,α∈ (V T ⋃V N)*开始符S至少必须在某个产生式的左部出现一次。

例:文法G1(A): A → c|AbG1(A)的语言?解:L(G1)={c,cb,cbb,⋯},以c开头,后继若干个bn)定义:如果一个文法存在某个句子对应两颗不同的语法树,则说这个文法是二义的。

G(E): E → i|E+E|E*E|(E) 是二义文法。

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

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

但L(G)=L(G’)2. 状态转换图a) 概念:状态转换图是一张有限方向图。

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

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

d) 一张转换图只包含有限个状态,其中有一个为初态,至少要有一个终态3. 正规运算符优先顺序在不致混淆时,括号可以省去,但规定算符的优先顺序为:*(闭包) .(连接) |(或)4. 3型文法-正规式G的任何产生式为 A →αB 或 A →α其中:α∈ V T*;A,B∈V N3型文法等价于正规式,所以也称正规文法。

3.3.2 确定有限自动机(DFA)对状态图进行形式化,则可以下定义:自动机M是一个五元式M=(S, ∑, f, S0, F),其中:a)S: 有穷状态集,b)∑:输入字母表(有穷),c)f: 状态转换函数,为S⨯∑→S的单值部分映射,f(s,a)=s’表示:当现行状态为s,输入字符为a时,将状态转换到下一状态s’。

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

d)S0∈S是唯一的一个初态;e)F⊆S :终态集(可空)。

例如:DFA M=({0,1,2,3},{a,b},f,0,{3}),其中:f定义如下:f(0,a)=1 f(0,b)=2f(1,a)=3 f(1,b)=2f(2,a)=1 f(2,b)=3f(3,a)=3 f(3,b)=33.3.3 非确定有限自动机(NFA)定义:一个非确定有限自动机(NFA) M是一个五元式M=(S, ∑, f, S0, F),其中:1 S: 有穷状态集;2 ∑:输入字母表(有穷);3 f: 状态转换函数,为S⨯∑*→2S的部分映射(非单值);4 S0⊆S是非空的初态集;5 F ⊆S :终态集(可空)。

从状态图中看NFA 和DFA的区别:1 弧上的标记可以是∑*中的一个字,而不一定是单个字符;2 同一个字可能出现在同状态射出的多条弧上。

DFA是NFA的特例。

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

自动机理论中一个重要的结论:判定两个自动机等价性的算法是存在的。

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

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

把上述NFA确定化——采用子集法.设I是M’的状态集的一个子集,定义I的ε-闭包ε-closure(I)为:i) 若s∈I,则s∈ε-closure(I);ii) 若s∈I,则从s出发经过任意条ε弧而能到达的任何状态s’都属于ε-closure(I)即ε-closure(I)=I⋃{s’|从某个s∈I出发经过任意条ε弧能到达s’}例:设a是∑中的一个字符,定义 I a= ε-closure(J)其中,J为I中的某个状态出发经过一条a弧而到达的状态集合。

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

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

3.3.5正规式与有限自动机的等价性定理:1. 对任何FA M,都存在一个正规式r,使得L(r)=L(M)。

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

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

(对一类输入符号)3.3.6 确定有限自动机的化简◆对DFA M的化简:寻找一个状态数比M少的DFA M’,使得L(M)=L(M’)◆假设s和t为M的两个状态,称s和t等价:如果从状态s出发能读出某个字α而停止于终态,那么同样,从t出发也能读出α而停止于终态;反之亦然。

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

◆对一个DFA M最少化的基本思想:把M的状态集划分为一些不相交的子集,使得任何两个不同子集的状态是可区别的,而同一子集的任何两个状态是等价的。

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

I(1)={0, 1, 2} I(2)={3, 4, 5, 6}I a(1) ={1, 3}I(11) ={0, 2} I(12) ={1} I(2)={3, 4, 5, 6}I(11) ={0, 2}I a(11) ={1} I b(11) ={2, 5}I(111) ={0} I(112) ={2} I(12) ={1} I(2)={3, 4, 5, 6}I a(2) ={3, 6} I a(2) ={4, 5}第四章语法分析——自上而下分析◆语法分析的方法:◆自下而上分析法(Bottom-up)◆自上而下分析法(Top-down)◆基本思想:它从文法的开始符号出发,反复使用各种产生式,寻找"匹配"的推导。

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

相关主题