编译原理复习整理总结.doc
《编译原理复习整理总结.doc》由会员分享,可在线阅读,更多相关《编译原理复习整理总结.doc(21页珍藏版)》请在三一办公上搜索。
1、编译原理期末复习鉴于编译原理马上就要期末考试,我将手中集中的一些资料上的题目进行了整理归类,每种类型题目给出了所涉及到的基本知识,然后对每类题目中的第一道例题进行了做法进行了讲解,剩下的例题请给大家作为练习,答案也都给出,希望对大家复习有所帮助,最后由于时间很紧,整理的有些仓促,整理中难免有遗漏或错误,请大家见谅。注:下面出现的字母中,若无特别说明,小写英文字母为终结符,大写英文字母为非终结符,希腊字母为终结符与非终结符的任意组合。1、简答题(或者名词解释)下面涉及到的概念中,加下划线的都是在以往一些试卷中出现的原题,务必掌握。注:这类题目老师说答案不会超过一百个字,否则写的再多也不给分,有些
2、点到即可,不要重复啰嗦。 (1)简述编译程序的概念及其构成答:1)编译程序:它特指把某种高级程序设计语言翻译成等价的低级程序设计语言的翻译程序。2)构成: (2)简述词法分析阶段的主要任务(也有可能问语法分析阶段主要任务)答:词法分析的任务是输入源程序,对源程序进行扫描,识别其中的单词符号,把字符串形式的源程序转换成单词符号形式的源程序。 语法分析的主要任务是对输入的单词符号进行语法分析(根据语法规则进行推导或者归约),识别各类语法单位,判断输入是不是语法上正确的程序(3) 简述编译程序的构造过程(这个大家看看,是对(1)和(2)的综合)答:1)构造词法分析器:用于输入源程序进行词法分析,输出
3、单词符号; 2)构造语法分析器:对输入的单词符号进行语法分析,识别各类语法单位,判断输入是不是语法上正确的程序3)构造语义分析和中间代码产生器:按照语义规则对已归约出的语法单位进行语义分析并把它们翻译成中间代码。4)构造优化器:对中间代码进行优化。 5) 构造目标代码生成器:把中间的代码翻译成目标程序。6) 构造表格管理程序:登记源程序的各类信息和编译各阶段的进展情况。7)构造错误处理程序:对出错进行处理。(4) 说明编译和解释的区别:1)编译要程序产生目标程序,解释程序是边解释边执行,不产生目标程序; 2)编译程序运行效率高而解释程序便于人机对话。(5) 文法:描述语言语法结构的形式规则,一
4、般用一个四元式表示: G=(VT,VN,S,P),其中VT:终结符集合(非空) VN:非终结符集合(非空),且VT VN= S:文法的开始符号,SVN P:产生式集合(有限)。 (6)二义性文法:一个文法中存某个句子,它有两个不同的最左(或者最右推导),则称该文法是二义性的。例子如文法G:Sif expr then S |other Sif expr then S else S 句子if e1 then if e2 then s1 else s2是二义性的。(7)文法的形式(注:文法的形式一定要牢记,特别是2型和3型文法一定要牢记,不仅在概念题中有用,在下面的根据语言写文法题中也有重要作用,如
5、果所写的文法形式不对,一切都是无用功)1)0型文法(短语文法,图灵机):产生式形式为:a b ,其中:a (VT VN)*且至少含有一个非终结符;b (VT VN)* 2)1型(上下文有关文法,线性界限自动机):产生式形式为:a b 其中:|a| |b|,仅 Se 例外。 3)2型文法(上下文无关文法,非确定下推自动机):产生式形式为:Pa, PVN, a (VT VN)* 。4)3型文法(正规文法,有限自动机):右线性文法:产生式形如:A aB 或 A a其中:a VT*;A,BVN 左线性文法:产生式形如:A Ba 或 A a 其中:a VT*;A,BVN 例题:设G=(VT,VN,S,P
6、)是一个上下文无关文法,产生集合P中的任一个产生式应具有什么样的形式?若G是1型文法呢?若G是正则文法呢?上下文无关文法, 产生式形式为:Pa, PVN, a (VT VN)* 。1型文法:产生式形式为:a b 其中:|a| |b|,仅 Se 例外。正则文法:右线性文法:产生式形如:A aB 或 A a其中:a VT*;A,BVN 左线性文法:产生式形如:A Ba 或 A a 其中:a VT*;A,BVN (8)什么是PDA(下推自动机)? 答:PDA是下推自动机,PDA M用一个七元组表示(K,f,H,h0,S,Z)K: 有穷状态集 S:输入字母表(有穷) H:下推栈符号的有穷字母表h0 :
7、H中的初始符号 f: K (e) H K H* S:属于K是初始状态。Z:包含于K,是终结状态集合。(9) 什么是DFA(有穷状态自动机)?自动机M是一个五元式M=(S, S, f, S0, F),其中:1)S: 有穷状态集, 2) S:输入字母表(有穷),3) f: 状态转换函数,为SSS的单值部分映射,f(s,a)=s表示:当现行状态为s,输入字符为a时,将状态转换到下一状态s。我们把s称为s的一个后继状态。4) S0S是唯一的一个初态; 5) FS :终态集(可空)。(10)推导:所谓推导就是对于一个含非终结符A的符号串,利用规则A,把A替换成得到新符号串的过程。 最左推导:在推导的每一
8、步,选择符号串最左边的非终结符进行替换。 最右推导:在推导的每一步,选择符号串最右边的非终结符进行替换。(11)归约:归约是推倒的逆过程,即用产生式的左部非终结符替换右部符号串。(12)什么是句型?什么称为句子?什么是语言? 句型:从文法的起始符号出发,经过有限步的推导能够推导出来的符号称为句子。 句子:只由终结符构成的句型称为句子。语言:所有句子的集合构成该文法描述的语言。(13)什么是短语?什么是直接短语(也称为简单短语)?什么是句柄?什么是素短语?什么是最左素短语?(以下几个概念一定要理解,考试中肯定会考哪些是短语,直接短语,句柄等,具体方法请参见后面的)短语:如果存在某个文法非终结符P
9、,满足S P,并且P则称为句型相对于非终结符P的短语。直接短语:如果P,即从P出发一步推出,则称为直接短语。句柄:一个句型的最左直接短语称为该句型的句柄。素短语:至少含有一个终结符的短语,并且除了自身外,不包含更小的素短语。最左素短语:句型中最左边的素短语。(14)自顶向下的语法分析方法中需要解决的主要问题什么?如何表示?答:1)主要需要解决回溯和左递归问题。 2)表示方式,回溯:文法中存在形如A1|2|n ,即产生式右部存在多个候选,导致推导时不能确定到底应该选择哪个候选式。 左递归:文法中存在形如PP的形式,推导时会导致推导过程无休止的进行下去。注:解决方法,对回溯采取的是提取左公因子,对
10、左递归使消除左递归(包括直接左递归和间接左递归)。(15)内情向量:一般编译程序对数组说明的处理是把数组的有关信息汇集在一个叫做“内情向量”或“信息向量”的表格中,以便以后计算数组元素的地址时引用这些信息。每个数组有一个内情向量。其中的信息包括,数组的类型,维数,各维的上、下界,以及数组的首地址。(16) C语言的活动记录:2、最左最右推导,画语法树,找短语、直接短语、句柄等。这种题目很简单,送分题,一定不能丢分!考题:1)文法GS为:SSdT | T TTG | G G(S) | a试给出句型(SdG)a的推导过程及语法树,并找出(SdG)a的短语,直接(简单)短语、句柄和最左素短语。分析:
11、(1)推导和画语法树这些都很简单,不再赘述。 (2)根据所画出的语法树,可以很快的找出短语,直接短语,句柄和最左素短语等,先讲一个简单子树的概念,所谓简单子树是指仅具有单层分支的子树。具体方法如下:短语:任一子树的树叶全体(具有共同祖先的叶节点符号串)皆为短语;直接短语:任一简单子树的树叶全体(具有共同父亲的叶节点符号串)皆为简单短语;句柄:最左边的直接短语;素短语:至少含有一个终结符的短语,并且除了自身外,不包含更小的素短语。 最左素短语:最左边的素短语。答:(1)ST TG GG(S)G(SdT)G(SdG)G(SdG)a语法树:(2)短语:G,SdG, (SdG), a, (SdG)a
12、直接短语:G,a 句柄:G 最左素短:a注:还有一份试卷将句型改为adT(S),与这个类似,大家自己做做,答案是短语:a,(S),T(S),adT0对应文法SaS| a 如果是n=0则为SaS|(是空字)anbn | n0对应文法SaSb| ab下面这四道题目老是在试卷中重复出现,所以大家好好看看。考题1、按指定类型给出下列语言的文法,并指出语言的类型。(10 分)(1)L1=anbmcn| n0,m0 二型文法:SaSc|B BbB|b(2) L2= 0na1nbmcm| n0,m 0 二型文法:SAB A0A1|0a1 BbBc|2、按指定类型给出下列语言的文法。(10 分)(1)L1=
13、candbm| n0,m0 用正规文法。ScA AaA|B BdC CbC|b(2)L2= 0na 1nbmcm| n0,m 0用二型文法。 SAB A0A1|0a1 BbBc|3、按指定的类型给出下列语言的文法(10 分)(1)L1= canbm| n0,m0 用正规文法。ScA AaA|B BbB|b(2)L2= 0na 1nbm| n0,m 0 用二型文法。SAB A0A1|0a1 BbB|4、按指定的类型给出下列语言的文法(10 分)(1) L1=anbmc|n=0,m0用正规文法SaS|A AbA|bB Bc(2) L2=a0n1nbdm|n0,m0用二型文法SAB AaT T0T1
14、|01 BbD DdD|d这是书P36 第11题的答案如下:大家作为练习,可以发现比上述题目简单的多了。G4:S1S0|AA0A1|G3:SABAaAb|BaAb|G2:SABAaA|BbBc|bcG1:SACAaAb|abCcC|或者 G4:4、词法分析正规式、NFA和DFA之间的转化:(1)这类题目一般是三者之间的转换,正规式NFA确定化的DFA最小化的DFA,有时已经给出NFA了,则只需要确定化为DFA和最小化就行了,一般每一步都是五分。具体怎么转换请参照我期中考试时整理的提纲,主要就是下面这幅关系对照图,因时间和篇幅限制不再追溯。(2)注意优先级关系,闭包运算*最高,连接运算.次之,或
15、运算|最低。 (3)考题1: 1)构造正则式a*b|(ab)*b对应的DFA。(15分) 画出NFA 确定化DFAXIaIbX,1,2,3,41,2,5Y1,2,51,23,4,YY-1,21,2Y3,4,Y5Y5-3,43,45YXIaIbABCBDEC-DDCEFCF-GGFC注:C和E是终态最小化DFA首先将集合分为A,B,D,F,G,C,E。A,B,D,G都有a,b作为条件输出,F只有b输出,所以分为A,B,D,G和F 同理C,E分为C,E。A,B,Da=B,D Ga=F所以A,B,D,G分为A,B,D和G。Ab=C B,Da=D所以分为A B,D 综上所述:划分的结果为A,B,D,C
16、,E,G.考题2: 将NFA确定化为DFA(10分)abSABAACBECDEDFEFDENFA: DFA:IaIbX,0,1,30,2,1,33,Y0,2,1,30,2,1,31,3,Y3,YY1,3,Y2Y21,3Y1,32Y含有Y的状态子集为DFA的终态,上例中的终态有B,C,E.题目中要求是确定化,没有要求最小化,如若最小化,划分的集合为S,A,B,CF,D,E然后再画出最小化后的DFA这里不再赘述。考题3:构造奇数个0和奇数个1组成的自动机。(10分)状态1:偶数个0 偶数个1 状态2:奇数个0偶数个1状态3:奇数个0 奇数个1 状态4:偶数个0奇数个1如果题目改成偶数个0,奇数个1
17、,只要将状态4转换成终态即可,其他类似。5、语法分析自顶向下分析法(LL(1)分析法和递归向下构造子程序法)注:自顶向下分析法本质是由开始符号,按照产生式逐步推导看能否产生需要分析的句子。(1)自顶向下分析中存在的问题左递归和回溯(具体请参见简答题中的第(14)题)(2)消除回溯提取公因子法提取公共左因子:假定关于A的规则 Adb 1 | db 2 | | db n | g 1 | g 2 | | gm(其中,每个g 不以d开头) 那么,可以把这些规则改写成AdA | g 1 | g 2 | | g m Ab 1 | b 2 | | b n (3)消除左递归1)消除直接左递归:直接消除见诸于产
18、生式中的左递归:假定关于非终结符P的规则为PPa | b ,其中b不以P开头。 我们可以把P的规则等价地改写为如下的非直接左递归形式:PbP PaP|e 注:一般而言,假定P关于的全部产生式是PPa1 | Pa2 | | Pam | b1 | b2|bn 其中,每个a都不等于e,每个b都不以P开头 那么,消除P的直接左递归性就是把这些规则改写成: Pb1P | b2P | | bnP Pa1P | a2P | | amP | e 例:文法G(E):EET | T TT*F | F F(E) | i 经消去直接左递归后变成: ETE E+TE | e TFT T *FT | e F(E) | i
19、2)消除间接左递归这个请参见我期中整理的提纲篇幅较多,这里不再重复赘述,请参照下面的考题2。考题1:将文法GS改写为等价的GS,使得GS不含左递归和左公因子。SA AB|AS BaB|a答:消除左递归和左公因子后的文法为:SA A BA A S A| e BaB B B| e考题2:写出文法GA: ABa|Cb|c BdA|Ae|f CBg|h消除左递归后的文法。答:(1)经分析发现文法GA并无直接左递归;(2)消除间接左递归:将A,B,C按照B,C,A排序(建议将A放在最后)由于出现CBg形式,将B代入C得:CdAg|Aeg|fg|h又由于A出现ABa ACb将B,C带入A得到:AdAa|A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 复习 整理 总结
链接地址:https://www.31ppt.com/p-2388274.html