编译原理复习要点

上传人:m**** 文档编号:511210897 上传时间:2022-10-26 格式:DOCX 页数:18 大小:990.01KB
返回 下载 相关 举报
编译原理复习要点_第1页
第1页 / 共18页
编译原理复习要点_第2页
第2页 / 共18页
编译原理复习要点_第3页
第3页 / 共18页
编译原理复习要点_第4页
第4页 / 共18页
编译原理复习要点_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《编译原理复习要点》由会员分享,可在线阅读,更多相关《编译原理复习要点(18页珍藏版)》请在金锄头文库上搜索。

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

2、= 1 TO 100 DO保留字 标识符 等符 整常数 保留字 整常数 保留字2. 语法分析任务:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位。依循的原则:语法规则述工具:上下文无关文法3. 语义分析与中间代码产生任务:对各类不同语法范畴按语言的语义进行初步翻译。(变量是否定义、类型是否正确等)依循的原则:语义规则中间代码:三元式,四元式,逆波兰记号,树形结构等。是一种独立于具体硬件的记号系统。例:将Z:=X + 0.618 * Y 翻译成四元式为(1) * 0.618 Y T1(2) + X T1 T2(3) := T2 _ Z4. 优化任务:对于前阶段产生的中间代码

3、进行加工变换,以期在最后阶段产生更高效的目标代码。依循的原则:程序的等价变换规则FOR K:=1 TO 100 DO BEGIN M := I + 10 * K; N := J + 10 * K; END4. 目标代码产生任务: 把中间代码变换成特定机器上的目标代码。依赖于硬件系统结构和机器指令的含义目标代码三种形式:a) 绝对指令代码: 可直接运行 b) 可重新定位指令代码: 需要连接装配c) 汇编指令代码: 需要进行汇编三. 编译程序结构u 编译程序总框 (简答题5分)第二章 高级语言及其语法描述2.1.1语法词法规则:单词符号的形成规则。a) 单词符号是语言中具有独立意义的最基本结构。一

4、般包括:常数、标识符、基本字、算符、界符等。b) 描述工具:正规式和有限自动机语法规则:语法单位的形成规则。a) 语法单位通常包括:表达式、语句、分程序、过程、函数、程序等;c) 描述工具:上下文无关文法2.1.2语义语义:一组规则,用它可以定义一个程序的意义。描述方法:a) 自然语言描述:隐藏错误、二义性和不完整性b) 形式描述:F 无二义性F 完整性多数语言中,算符的优先顺序如下:u 乘幂(*或)优先级由高自低u 一元负(-)u 乘、除u 加、减不同的语言对算符优先级的规定有差异,甚至差异很大!u 关系符(,=,)u 非(,not)u 与(,&,and )u 或(,|,or,)u 隐含(

5、或imp)u 等值( 或epui,或 )2.3 程序语言的语法描述1. 几个概念:a) 考虑一个有穷 字母表 字符集b) 其中每一个元素称为一个字符c) 上的字(也叫字符串) 是指由中的字符所构成的一个有穷序列d) 不包含任何字符的序列称为空字,记为e) 用*表示上的所有字的全体,包含空字例如: 设 =a, b,则 *=,a,b,aa,ab,ba,bb,aaa,.f) *的子集U和V的连接(积)定义为UV ab | aU & bV 例如: 设:U a, aa ,V b, bb 那么:UV= ab, abb, aab, aabb g) V自身的 n次积记为Vn=VVVh) 规定V0=e,令V*=

6、V0V1V2V3 称V*是V的闭包;记 VVV* ,称V+是V的正规闭包。例如: 设:U a, aa 那么:U* = e , a, aa, aaa, aaaa, U = a, aa, aaa, aaaa, i) 0型(短语文法,图灵机): 产生式形如: a b 其中:a (VT VN)*且至少含有一个非终结符;b (VT VN)* 任何0型语言都是递归可枚举的。j) 1型(上下文有关文法,线性界限自动机): 产生式形如: a b 其中:|a| |b|,仅 Se 例外。意味着对非终结符进行替换时务必考虑上下文,并且,一般不允许替换成空串e 。k) 2型(上下文无关文法,非确定下推自动机): 产生

7、式形如: A b 其中:A VN;b (VT VN)*。非终结符的替换可以不必考虑上下文。l) 3型(正规文法,有限自动机):右线性文法 产生式形如: A aB 或 A a 其中: a VT*;A,BVN左线性文法 产生式形如: A Ba 或 A a 其中: a VT*;A,BVN正规文法的能力要比上下文无关文法弱得多。四种类型描述能力比较 m) 上下文无关文法的定义: 一个上下文无关文法G是一个四元式 G=(VT,VN,S,P),其中VT:终结符集合(非空)VN:非终结符集合(非空),且VT VN=S:文法的开始符号,SVNP:产生式集合(有限),每个产生式形式为Pa, PVN, a (VT

8、 VN)*开始符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) 状态之间用箭弧连结,箭弧上的标记(字符)代表射出结状态下可能出现的输入

9、字符或字符类。d) 一张转换图只包含有限个状态,其中有一个为初态,至少要有一个终态3. 正规运算符优先顺序在不致混淆时,括号可以省去,但规定算符的优先顺序为:*(闭包) .(连接) |(或)4. 3型文法-正规式 G的任何产生式为 A aB 或 A a 其中: a VT*;A,BVN 3型文法等价于正规式,所以也称正规文法。3.3.2 确定有限自动机(DFA)对状态图进行形式化,则可以下定义:自动机M是一个五元式M=(S, S, f, S0, F),其中:a) S: 有穷状态集,b) S:输入字母表(有穷),c) f: 状态转换函数,为SSS的单值部分映射,f(s,a)=s表示:当现行状态为s

10、,输入字符为a时,将状态转换到下一状态s。我们把s称为s的一个后继状态。d) S0S是唯一的一个初态; e) FS :终态集(可空)。例如:DFA M=(0,1,2,3,a,b,f,0,3), 其中:f定义如下:f(0,a)=1f(0,b)=2f(1,a)=3 f(1,b)=2f(2,a)=1f(2,b)=3f(3,a)=3 f(3,b)=3 3.3.3 非确定有限自动机(NFA)定义:一个非确定有限自动机(NFA) M是一个五元式M=(S, S, f, S0, F),其中:1 S: 有穷状态集;2 S :输入字母表(有穷);3 f: 状态转换函数,为SS*2S的部分映射(非单值);4 S0S

11、是非空的初态集;5 F S :终态集(可空)。从状态图中看NFA 和DFA的区别: 1 弧上的标记可以是S*中的一个字,而不一定是单个字符; 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的e-闭包e-closure(I)为: i) 若sI,则se-closure(I); ii)

12、 若sI,则从s出发经过任意条e弧而能到达的任何状态s都属于e-closure(I) 即 e-closure(I)=Is|从某个sI出发经过任意条e弧能到达s例:设a是S中的一个字符,定义 Ia= e-closure(J)其中,J为I中的某个状态出发经过一条a弧而到达的状态集合。 3.3.4 正规文法与有限自动机的等价性定理: 1.对每一个右线性正规文法G或左线性正规文法G,都存在一个有限自动机(FA) M,使得L(M)L(G)。2.对每一个FA M,都存在一个右线性正规文法GR和左线性正规文法GL,使得L(M)L(GR)L(GL)。3.3.5 正规式与有限自动机的等价性定理: 1. 对任何F

13、A M,都存在一个正规式r,使得L(r)=L(M)。 2. 对任何正规式r,都存在一个FA M,使得L(M)=L(r)。2 对转换图概念拓广,令每条弧可用一个正规式作标记。(对一类输入符号)3.3.6 确定有限自动机的化简u 对DFA M的化简:寻找一个状态数比M少的DFA M,使得L(M)=L(M)u 假设s和t为M的两个状态,称s和t等价:如果从状态s出发能读出某个字a而停止于终态,那么同样,从t出发也能读出a而停止于终态;反之亦然。u 两个状态不等价,则称它们是可区别的。u 对一个DFA M最少化的基本思想: 把M的状态集划分为一些不相交的子集,使得任何两个不同子集的状态是可区别的,而同一子集的任何两个状态是等价的。最后,让每个子集选出一个代表,同时消去其他状态。I(1)=0,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号