《编译原理复习题及参考答案.docx》由会员分享,可在线阅读,更多相关《编译原理复习题及参考答案.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理课程复习资料一、推断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。 2.一个句型的干脆短语是唯一的。 3.已经证明文法的二义性是可断定的。 4.每个根本块可用一个DAG表示。 5.每个过程的活动记录的体积在编译时可静态确定。 6.2型文法确定是3 型文法。 7.一个句型确定句子。 8.算符优先分析法每次都是对句柄进展归约。 9.承受三元式实现三地址代码时,不利于对中间代码进展优化。 10.编译过程中,语法分析器的任务是分析单词是怎样构成的。 11.一个优先表确定存在相应的优先函数。 12.目的代码生成时,应考虑如何充分利用计算机的存放器的问题。 13.递归下降分析法是一种
2、自下而上分析法。 14.并不是每个文法都能改写成 LL(1)文法。 15.每个根本块只有一个入口和一个出口。 LL(1)文法确定是无二义的。 试亦称前缀式。 18.目的代码生成时,应考虑如何充分利用计算机的存放器的问题。 19.正规文法产生的语言都可以用上下文无关文法来描绘。 20.一个优先表确定存在相应的优先函数。 21.3型文法确定是2 型文法。 22.假设一个文法存在某个句子对应两棵不同的语法树,那么文法是二义性的。 二、填空题:1. 称为标准推导。2.编译过程可分为 , , , 和 五个阶段。3.假设一个文法存在某个句子对应两棵不同的语法树,那么称这个文法是 。4.从功能上说,程序语言
3、的语句大体可分为 语句和 语句两大类。5.语法分析器的输入是 ,其输出是 。6.扫描器的任务是从 中识别出一个个 。7.符号表中的信息栏中登记了每个名字的有关的性质,如 等等。8.一个过程相应的DISPLAY表的内容为 。 。10.常用的两种动态存贮支配方法是 动态支配和 动态支配。11.一个名字的属性包括 和 。12.常用的参数传递方式有 , 和 。13.根据优化所涉及的程序范围,可将优化分成为 , 和 三个级别。14.语法分析的方法大致可分为两类,一类是 分析法,另一类是 分析法。 和一个 进展结合限制的。16.常用的参数传递方式有 , 和 。17.一张转换图只包含有限个状态,其中有一个被
4、认为是 态;而且事实上至少要有一个 态。18.根据优化所涉及的程序范围,可将优化分成为 , 和 三个级别。 规那么进展。中间代码产生是根据语言的 规那么进展的。 。21.一个文法G,假设它的意料分析表M不含多重定义,那么该文法是 文法。22.对于数据空间的存贮支配, FORTRAN承受 策略, PASCAL承受 策略。23.假设一个文法存在某个句子对应两棵不同的语法树, 那么称这个文法是 。24.最右推导亦称为 ,由此得到的句型称为 句型。25.语法分析的方法大致可分为两类,一类是 分析法,另一类是 分析法。26.对于文法G,仅含终结符号的句型称为 。27.所谓自上而下分析法是指 。28.语法
5、分析器的输入是 ,其输出是 。29.局限于根本块范围的优化称 。30.意料分析程序是运用一张 和一个 进展结合限制的。31.2型文法又称为 文法;3型文法又称为 文法。32.每条指令的执行代价定义为 。33.算符优先分析法每次都是对 进展归约。三、名词说明:1.部分优化2.二义性文法3.DISPLAY表4.词法分析器5.最左推导6.语法7.文法8.根本块9.语法制导翻译10.短语11.待用信息12.标准句型四、简答题:G,使其语言为不以0开头的偶数集。G(S)及相应翻译方案 SaAb print “1”Sa print “2”AAS print “3”Ac print “4”输入acab,输出
6、是什么?3.文法G(S)SbAaA(B | aBAa)写出句子b(aa)b的标准归约过程。4.考虑下面的程序: Procedure p(x, y, z); beginy:=x+y;z:=z*z; end beginA:=2;B:=A*2;P(A, A, B);Print A, B end.试问,假设参数传递的方式分别承受传地址和传值时,程序执行后输出A,B的值是什么?5.文法GSSdABAaA| a BBb| 描绘的语言是什么?GS SSaS| 是二义性的。S SBA ABS| d BaA| bS | c 的意料分析表如下 a b c d # SSBASBASBA AABSABSABSAd B
7、BaA BbS Bc给出句子 adccd 的分析过程。8.写一个文法G, 使其语言为 L(G)=albmclanbn| l=0, m=1, n=2 9.文法G(S):Sa| (T)TT,S|S的优先关系表如下:关系a(),a-.(.=.,.请计算出该优先关系表所对应的优先函数表。10.何谓优化?按所涉及的程序范围可分为哪几级优化?11.目的代码有哪几种形式?生成目的代码时通常应考虑哪几个问题?12.一字母表=a, b,试写出上全部以a为首的字组成的正规集相对应的正规式。有哪几种?14.写一个文法G, 使其语言为 L(G)=abncn| n015.考虑下面的程序: procedure p(x,
8、y, z);begin y:=y+z; z:=y*z+xend;begin a:=2; b:=3; p(a+b, b, a); print aend.试问,假设参数传递的方式分别承受传地址和传值时,程序执行后输出 a的值是什么 16.写出表达式ab*(c-d)/e的逆波兰式和三元序列。文法GA AAA | (A)| 是二义性的。18.令=a,b,那么正规式a*b|b*a 表示的正规集是什么?19.何谓DISPLAY表?其作用是什么?20.考虑下面的程序:procedure p(x, y, z); beginy:=y+2;z:=z+x; end begina:=5;b:=2;p(a+b, a-b
9、, a);print a end.试问,假设参数传递的方式分别承受传地址和传值时,程序执行后输出 a的值是什么 21.写一个文法G, 使其语言为 L(G)=anbncm| n0为奇数, m0为偶数22.写出表达式a:=(b+c)*e+(b+c)/f的逆波兰式和三元序列。(1)文法的充要条件是什么?24.文法GSSS*aF | aF | *aFF+aF | +a消退文法左递归和提公共左因子。25.符号表的作用是什么?符号表查找和整理技术有哪几种?五、计算题:1.设文法GS: S | a | (T) TT,S | S 消退左递归; 构造相应的FIRST和FOLLOW集合; 构造意料分析表 2.语句
10、 if E then S(1)改写文法,使之相宜语法制导翻译; (2)写出改写后产生式的语义动作。 3.设文法GS:S(T) | aTT+S | S(1计算FIRSTVT 和LASTVT; 2构造优先关系表。 4.设某语言的for语句的形式为for i:E(1) to E(2) do S其语义说明为 i:E(1) LIMIT:E(2)again: if iLIMIT thenBeginS;i:i1goto againEnd;1写出相宜语法制导翻译的产生式;2写出每个产生式对应的语义动作。5.把语句 while a0 then a:=a+1 else a:=a*3-1;翻译成四元式序列。6.设有
11、根本块D:=A-CE:=A*CF:=D*ES:=2T:=A-CQ:=A*CG:=2*SJ:=T*QK:=G*5L:=K+JM:=L假设根本块出口时只有M还被引用,请写出优化后的四元序列。7.文法G(S)Sa | | (T)TT,S | S(1)给出句子(a,(a,a)的最左推导; (2)给出句型(T,S),a)的短语, 干脆短语,句柄。8.对于C语言do S while E语句(1)改写文法,使之相宜语法制导翻译;(2)写出改写后产生式的语义动作。9.文法GS: SaAcBe AAb| b Bd (1)给出句子abbcde的最左推导及画出语法树; (2)给出句型aAbcde的短语、素短语。S:
12、 S(T) | aS | a TT,S | S 消退左递归和提公共左因子; 构造相应的FIRST和FOLLOW集合; 构造意料分析表。 if X0 Y0 do X:=A*3 else Y:=B+3;翻译成四元式序列。12.文法GS: EE+T | T TT*F| F F(E)| i (1)给出句型(i+i)*i+i的最左推导及画出语法树; (2)给出句型(E+T)*i+F 的短语,素短语和最左素短语。 13.设文法GS: ST | ST TU |TU Ui |-U1计算FIRSTVT 和LASTVT; 2构造优先关系表。 参考答案一、推断题:1. 2. 3. 4. 5. 6. 7. 8. 9.
13、 10. 11.12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 二、填空题:1.(最右推导2.(词法分析,语法分析,中间代码生成,代码优化,目的代码生成3.(二义性的4.(执行性,说明性5.(单词符号,语法单位。6.(源程序,单词符号7.(类型、种属、所占单元大小、地址8.(现行活动记录地址和全部外层最新活动记录的地址)9.(句柄10.(栈式),堆式11.(类型),作用域12.(传地址,传值,传名13.(部分优化,循环优化,全局优化14.(自上而下,自下而上15.(分析表,符号栈16.(传地址,传值,传名17.(初,终18.9部分优化,循环优化,全局优化
14、19.(语法,语义20.(句柄21.(LL(1) 文法22.(静态,动态23.(二义性文法24.(标准推导,标准25.(自上而下,自下而上26.(句子)27.(从开始符号动身,向下推导,推出句子28.(单词符号,语法单位29.(部分优化30.(分析表,符号栈31.(上下文无关文法,正规32.(指令访问主存次数加133.(最左素短语三、名词说明:1.部分优化:局限于根本块范围的优化称。2.二义性文法:假设一个文法存在某个句子对应两棵不同的语法树,那么称这个文法是二义性文法。3.DISPLAY表:过程的嵌套层次显示表,记录该过程的各外层过程的最新活动记录的起始地址。4.词法分析器:执行词法分析的程
15、序。5.最左推导:任何一步=都是对中的最右非终结符交换。6.语法:一组规那么,用它可形成和产生一组合式的程序。7.文法:描绘语言的语法构造的形式规那么。8.根本块:指程序中一依次执行的语句序列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最终一个语句。9.语法制导翻译:在语法分析过程中,根据每个产生式所对应的语义子程序进展翻译的方法叫做语法制导翻译。10.短语:令G是一个文法,S划文法的开始符号,假定是文法G的一个句型,假设有SA且A,那么称是句型相对非终结符A的短语。11.待用信息:假设在一个根本块中,四元式i对A定值,四元式j要引用A值,而从i到j之间没有A的其它定
16、值,那么称j是四元式i的变量A的待用信息。12.标准句型:由标准推导所得到的句型。13.扫描器:执行词法分析的程序。14.超前搜寻:在词法分析过程中,有时为了确定词性,需超前扫描假设干个字符。15.句柄:一个句型的最左干脆短语。16.语法制导翻译:在语法分析过程中,根据每个产生式所对应的语义程序进展翻译的方法 叫做语法制导翻译。17.标准句型:由标准推导所得到的句型。18.素短语:素短语是指这样一个短语,至少含有一个终结符,并且,除它自身外不再含任何更小的素短语。19.语法:是组规那么,用它可形成和产生一个合式的程序。20.待用信息:假设在一个根本块中,四元式i对A定值,四元式j要引用A值,而
17、从i到j之间没有A的其它定值,那么称j是四元式i的变量A的待用信息。21.语义:定义程序的意义的一组规那么。四、简答题:1.所求文法是GS:SAB |B A0AAD |CB2 |4 |6 |8C1 |3 |5 |7 |9 |BD0 |C2.输出是42313.句子b(aa)b的标准归约过程:步骤符号栈输入串动作0#b(aa)b#预备1#b(aa)b#移进2#b(aa)b#移进3#b(aa)b#移进4#b(Aa)b#归约5#b(Mab)b#移进6#b(Ma)b#移进7#b(Bb#归约8#bAb#归约9#bAb#移进10#S#承受4.传地址 A=6, B=16传值 A=2, B=45.L(G)=da
18、nbm |n0, m06.证明: 因为文法GS存在句子aa有两个不同的最左推导,所以文法GS是是二义性的。S=SaS=SaSaS=aSaS=aaS=aa S=SaS=aS=aSaS=aaS=aa7.句子 adccd 的分析过程:步骤符号栈输入串产生式0#Sadccd#1#ABadccd#SBA2#AAaadccd#BaA3#AAdccd#4#Addccd#Ad5#Accd#6#SBccd#ABS7#Scccd# Bc8#Scd#9#ABcd#Bc10#Acd#11#A d#12#dd#Ad13# # 8.所求文法是GS: SAB AaAc | D DbD | bBaBb | aabb9.函数a
19、(),f4244g552310.优化:对程序进展各种等价变换,使得从变换后的程序动身,能产生更有效的目的代码。三种级别:部分优化、循环优化、全局优化11.目的代码通常承受三种形式:机器语言,汇编语言,待装配机器语言模块。应着重考虑的问题:(1)如何使生成的目的代码较短;(2)如何充分利用存放器,以削减访问内存次数;(3)如何充分利用指令系统的特点。12.正规式 a ( a | b )*。13.删除多余运算,代码外提,强度减弱,变换循环限制条件,合并量,复写传播和删除无用赋值。14.文法GS:S aB | a Bbc |bBc15.传值 a=2 传地址 a=1516.逆波兰式: abcd-*e/
20、+三元序列: op arg1 arg2 (1) - c d (2) * b (1) (3) / (2) e (4) + a (3)17.证明:因为文法GS存在句子 () 有两个不同的最左推导,所以文法GS是是二义性的。A=AA=(A)A=()A=() A=AA=A=(A)=()18.(a*b|b*a)=a,b,ab,ba,aab,bba19.Display表: 嵌套层次显示表由于过程嵌套允许内层过程引用外层过程定义的数据,因此,当一个过程运行时必需跟踪它的全部外层过程的最新活动记录起始地址, display表就是用于登记每个外层过程的最新活动记录起始地址。20.传地址 a=12传值 a=521
21、.所求文法是GS: SAC AaaAbb | ab CccC | cc22.逆波兰式 abc+e*bc+f/+:=三元序列 op arg1 arg2 (1) + b c (2) * (1) e (3) + b c (4) / (3) f (5) + (2) (4) (6) := a (5) 23.一个文法G别是LL(1)文法的充要条件是: (1) FIRST() FIRST()= (2) 假设 =*, FIRST() FOLLOW(A)= 24.消退左递归SaFS | *aFSS*aFS | F+aF | +a提公共左因子,文法 GS SaFS | *aFSS*aFS | F+aFFF |25
22、.作用:登记源程序中出现的各种名字及其信息,以及理解各阶段的进展状况。主要技术:线性表,对折查找,杂奏技术。五、计算题:1(1)消退左递,文法变为GS:S | a | (T)TST | ST,ST |此文法无左公共左因子。(2)构造相应的FIRST和FOLLOW集合: FIRST(S)=a, , (, FOLLOW(S)=#, , )FIRST(T)=a, , ( ,FOLLOW(T)=FIRST(T)=, ,FOLLOW(F)=)(3) 构造意料分析表:a(),#SSaSS(T)TTSTTSTTSTTTT,ST2. (1)Cif E thenSCS(1) (2) Cif E then BAC
23、K(E.TC, NXQ); C.chain:=E.FC SCS(1) S.chain:=MERG(C.Chain, S(1). Chain)3. (1) FIRSTVT(S)=a, ( FIRSTVT(T)=+, aa, ( LASTVT(S)=a, ) LASTVT(T)=+, a, ) (2) a + ( ) a . .+ ( . . . .4. (1) Ffor i:=E(1) to E(2) do SFS(1)(2)Ffor i:=E(1) to E(2) doGEN(:=, E(1).place, _, entry(i);F.place:=entry(i);LIMIT:=Newtem
24、p;GEN(:=, E(2).place, _, LIMIT);Q:=NXQ;F.QUAD:=q;GEN(j, entry(i), LIMIT, q+2)F.chain:=NXQ;GEN(j, _, _, 0)SFS(1)BACKPATCH(S(1).chain, NXQ); GEN(+, F.place, 1, F.place); GEN(j, _, _, F.QUAD);5.(1) (j, c, 0, (5)(4) (j, _, _, (8)(5) (+, a, 1, T1)(6) (:=, T1, _, a)(7) (j, _, _, (1)(8) (*, a, 13, T2)(9) (
25、-, T2, 1, T3)(10) (:=, T3, _, a)(11) (j, _, _, (1)(12)6.优化后的四元序列D:=A-CE:=A*CF:=D*EM:=F+207.最左推导S=(T)=(T,S)=(S,S)=(a,S)=(a,(T)=(a,(T,S)=(a,(S,S)=(a,(a,S)=(a,(a,a)短语 (T,S),a) (T,S),a (T,S) T,S a干脆短语 T,S a句柄 T,S8.(1)Sdo M1 S1 while M2 EM (2)M M.quad=nestquad;Sdo M1 S1 while M2 E backpatch(s1.nextlist,
26、M2.quad); backpatch(E.truelist, M1.quad); S.nextlist=E.falelist; 9.(1) S=aAcBe=AAbcBe=abbcBe=abbcde(2) 短语: aAbcde, Ab, d 素短语: Ab, d10 (1) S (L) | aS SS | LSL L,SL |(2) FIRST(S)=a, ( FIRST(S)=a, (, FIRST(L)=a, ( FIRST(L)=, FOLLOW(S)=, ), # FOLLOW(S)=, ), #FOLLOW(L)= ) FOLLOW(L)= )(3) 构造意料分析表 ( ) a ,
27、# SS (L)S aSSSSSSSSSLLSLLSLL,SL LL11.(1) (j, X, 0, (5)(2) (j, _, _, (3)(3) (j0, X, 0, (7)(6) (j, _, _, (7)(7) (*, A, 3, T1)(8) (:=, T1, _, N)(9) (j, _, _, (5)(10) (j, _, _, (13)(11) (+, B, 3, T2)(12) (:=, T2, _, Y)12.(1)E=E+T=T+T=T*F+T=F*F+T=(E)*F+T=(E+T)*F+T=(T+T)*F+T =(F+T)*F+T=(i+T)*F+T=(i+F)*F+T=(i+i)*F+T=(i+i)*i+T =(i+i)*i+F=(i+i)*i+i (2)短语 i, F, E+T, (E+T), (E+T)*i, (E+T)*i+F 素短语 i, E+T最左素短语 E+T13.(1) FIRSTVT(S)=, , i, - FIRSTVT(T)=, i, - FIRSTVT(U)=i, - LASTVT(S)=, , i, - LASTVT(T)=, i, - LASTVT(U)=i, -(2) i - S . . . . . . - . .
限制150内