《《编译原理》期末考试题库含答案.pdf》由会员分享,可在线阅读,更多相关《《编译原理》期末考试题库含答案.pdf(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 编译原理模拟试题一一、是非题(请在括号内,正确的划J,错误的划义)(每个2 分,共 2 0 分)1 .计算机高级语言翻译成低级语言只有解释一种方式。(义)2 .在编译中进行语法检查的目的是为了发现程序中所有错误。(X)3 .甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。(J )4 .正则文法其产生式为 A-a,A-B b,A.B G V N ,a、b e V T。(X)5 .每个文法都能改写为L L(1)文法。(J)6 .递归下降法允许任一非终极符是直接左递归的。(J)7 .算符优先关系表不一定存在对应的优先函数。(X)8 .自底而上语法分析方法的主要问题
2、是候选式的选择。(X)9 .L R 法是自顶向下语法分析方法。(X)1 0 .简单优先文法允许任意两个产生式具有相同右部。(X)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个 4 分,共 4 0 分)1 .一个编译程序中,不仅包含词法分析,,中间代码生成,代码优化,目标代码生成等五个部分。A.()语法分析 B.()文法分析 C.()语 言 分 析 D.()解释分析2 .词法分析器用于识别 oA.()字符串 B.()语句C.()单词 D.()标识符3 .语法分析器则可以发现源程序中的。A.()语义错误 B.()语法和语义错误C.()错误并校正 D.()语法错误4 .
3、下面关于解释程序的描述正确的是。(1)解释程序的特点是处理程序时不产生目标代码(2)解释程序适用于C O B O L 和 F O R T R A N 语言(3)解释程序是为打开编译程序技术的僵局而开发的A.()(1)(2)B.()(1)C.()(1)(2)(3)D.()(2)(3)5.解释程序处理语言时,大多数采用的是 方法。A.()源程序命令被逐个直接解释执行B.()先将源程序转化为中间代码,再解释执行C.()先将源程序解释转化为目标程序,再执行D.()以上方法都可以6.编译过程中,语法分析器的任务就是 o(1)分析单词是怎样构成的(2)分析单词串是如何构成语句和说明的(3)分析语句和说明是
4、如何构成程序的(4)分析程序的结构A.()(2)(3)C.()(1)(2)(3)B.()D.()(2)(3)(4)(1)(2)(3)(4)7.编译程序是一种A.()汇编程序C.()解释程序B.()翻译程序D.()目标程序8.文 法 G所描述的语言是 的集合。A.()文 法 G的字母表V中所有符号组成的符号串B.()文 法 G的字母表V的闭包V*中的所有符号串C.()由文法的开始符号推出的所有终极符串D.()由文法的开始符号推出的所有符号串9 .文法分为四种类型,即0 型、1 型、2型、3 型。其中3 型文法是 oA.()短语文法 B.()正则文法C.()上下文有关文法 D.()上下文无关文法1
5、 0 .一个上下文无关文法G包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 oA.()句子 B.()句型C.()单词 D.()产生式三、填空题(每空1 分,共 1 0 分)1 .编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理。2 .若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为 编译程序。3 .编译方式与解释方式的根本区别在于是否生成目标代码 o4 .对编译程序而言,输入数据是 源 程 序 输出结果是 目标程序-05 .产生式是用于定义 语法成分的
6、一种书写规则。6 .语法分析最常用的两类方法是 自上而下和 自下而上分析法。四、简答题(2 0 分)1 .什么是句子?什么是语言?答:(1)设 G 是一个给定的文法,S 是文法的开始符号,如果Sx(其中xGVT*),则称x 是文法的一个句子。设 GS是给定文法,则由文法G 所定义的语言L(G)可描述为:L(G)=x|Sx,xeV T*。2 .写一文法,使其语言是偶正整数的集合,要求:(1)允许0打头;(2)不允许0 打头。解:(1)GS=(S,P,D,N,0,1,2,.,9,P,S)P:S-PD|DP-NP|ND-0|2|4|6|8N-0|l|2|3|4|5|6|7|8|9(2)GS=(S,P
7、,R,D,N,Q,0,l,2,.,9,P,S)P:S-PD|P0|DP-NR|NR-QR|QD-2|4|6|8N-1|2|3|4|5|6|7|8|9Q-0|l|2|3|4|5|6|7|8|93.已知文法G E 为:E 一 T|E+T|E-TTF|T*F|T/FF(E)|i该文法的开始符号(识别符号)是什么?请给出该文法的终结符号集合V T 和非终结符号集合V N。找 出 句 型 T+T*F+i的所有短语、简单短语和句柄。解:该文法的开始符号(识别符号)是 E。该文法的终结符号集合VT=+、-、*、/、(、)、i o 非终结符号集合VN=E、T、F句型T+T*F+I的短语为i、T*F、第-个 T
8、、T+T*F+i;简单短语为i、T*F、第一个T;句柄为第一个T。4.构造正规式相应的NFA:1(0|1)*101解 1(0|1)*101 对 应 的 NFA 为015.写出表达式(a+b*c)/(a+b)d 的逆波兰表示和三元式序列。逆波兰表示:abc*+ab+/d三元式序列:(*,b,c)(+,a,)(+,a,b)(/,,)(一,d)五.计算题(10分)构造下述文法G S 的自动机:S-A0A-A0|Sl|0该自动机是确定的吗?若不确定,则对它确定化。解:由于该文法的产生式S-A0,A-AO|S1中没有字符集V T 的输入,所以不是确定的自动机。要将其他确定化,必须先用代入法得到它对应的正
9、规式。把 S?A0代入产生式A?S1有:A=A0|AO 1|0=A(0|01)|0=0(0|01 )*,代入 S-A0 有该文法的正规式:0(0|01)*0,所以,改写该文法为确定的自动机为:由于状态A 有 3 次输入0 的重复输入,所以上图只是N F A,下面将它确定化:下 表 由 子 集 法 将 NFA 转 换 为 DFA:II.-e-cbiu rtf(Mova To(1,0)Iv-clcsurefMoveTbdi)AWBXBXCX,Y,ZCX,Y,ZCX,Y,ZBX由上表可知D F A 为:编译原理模拟试题二一、是 非 题(请在括号内,正确的划4错误的划*)(每个2 分,共 20分)I.
10、“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法。(x)2.若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。(x)3.一个句型的句柄一定是文法某产生式的右部。(4)4.在程序中标识符的出现仅为使用性的。(x)5.仅考虑一个基本块,不能确定一个赋值是否真是无用的。()6.削减运算强度破坏了临时变量在一基本块内仅被定义一次的特性。()7.在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。(x)8 .算符优先关系表不一定存在对应的优先函数。(x)9 .数组元素的地址计算与数组的存储方式有关。(x)1 0 .编译程序与具体的机器有关,与具体的语言
11、无关。(x)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共4 0分)1 .通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还 应 包 括。A.()模拟执行器 B.()解释器C.()表格处理和出错处理 D.()符号执行器2 .文法 G N=(b ,N,B ,N,Nb|b B ,B b N ),该文法所描述的语言是A.()L(G N)=b i|i 0 B.()L(G N)=b 2 i|i 0 C.()L(G N)=b 2 i+l|i 0 D.()L(G N)=b 2 i+l|i l 3 .一个句型中的最左 称为该
12、句型的句柄。A.()短语 B.()简单短语 C.()素短语 D.()终结符号4.设G是一个给定的文法,S是文法的开始符号,如 果S-x(其 中x d V*),则 称x是文 法G的一个。A.()候选式 B.()句型 C.()单词 D.()产生式5 .文法 G E:ETT I E +TT F|T *FF a|(E )该文法句型E +F *(E +T)的 简 单 短 语 是 下 列 符 号 串 中 的。(E +T )E +T F F *(E +T)A.()和 B.()和 C.()和 D.()6 .若一个文法是递归的,则 它 所 产 生 的 语 言 的 句 子。A.()是无穷多个 B.()是有穷多个C
13、.()是可枚举的 D.()个数是常量7 .词法分析器用于识别 oA.()句子 B.()句型 C.()单词 D.()产生式8 .在语法分析处理中,F I R S T 集合、FOL L OW集合、S E L E C T 集 合 均 是。A.()非终极符集 B.()终极符集 C.()字母表 D.()状态集9 .在自底向上的语法分析方法中,分 析 的 关 键 是。A.()寻找句柄 B.()寻找句型 C.()消除递归 D.()选择候选式1 0 .在 L R分析法中,分析栈中存放的状态是识别规范句型 的 DFA状态。A.()句柄 B.()前缀 C.()活前缀 D.()L R(0)项目三、填空题(每空1 分
14、,共 1 0 分)1 .设 G是一个给定的文法,S是文法的开始符号,如果S,x(其 中 x G V T*),则 称 x是文法的一个_句子 o2.递归下降法不允许任一非终极符是直接_左_递归的。3 .自顶向下的语法分析方法的基本思想是:从文法的一开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的一句子,使之与给定的输入串 匹配。4 .自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地向上进行 直接归约,力求归约到文法的_ 开 始符号。5.常用的参数传递方式有 传 地 址 传值和传名。6.在使用高级语言编程时,首先可通过编译程序发
15、现源程序的全部语法 错误和语义部分错误。四、简 答 题(20分)1.已知文法G S为:SdABA aA|aB-Bb|EG S产生的语言是什么?答:GS产生的语言是 L(GS)=danbm|nl,m0。2.简 述 D FA 与 N FA 有何区别?答:DFA与 NFA的区别表现为两个方面:一是NFA可以若干个开始状态,而 DFA仅只一个开始状态。另一方面,DFA的映象M 是从K。到 K,而 NFA的映象M 是 从 K Z 到 K 的子集,即映象M 将产生一个状态集合(可能为空集),而不是单个状态。3.构造正规式相应的 DFA:1(1010*|1(010)*l)*0o解:1(1010*|1(010
16、)*1)*0 对 应 的 NFA 为:4.已知文法G(S)S f|A|(T)TTT,S|S写出句子(a,a),a)的规范归约过程及每一步的句柄。解:句型 归约规则 句柄(a,a),a)S a a(S,a),a)TSs(T,a),a)S aa(T,S),a)TT,ST,S(S).a)TTSS(T),a)SS(T)(T)(S,a)TTSS(T(a)S-aa(T,S)TT,ST,S(T)S-(T)(T)s5.何谓优化?按所涉及的程序范围可分为哪几级优化?1)优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。(2)三种级别:局部优化、循环优化、全局优化。五.计算题(10分)
17、对下面的文法G:E-TEE-+E|T-FTT-T|EF-PFF-*F|P-(E)|a|b|A(1)计算这个文法的每个非终结符的FIRST集 和 FOLLOW集。(4 分)(2)证明这个方法是LL(1)的。(4 分)(3)构造它的预测分析表。(2 分)解:(1 )计算这个文法的每个非终结符的FIRST集和FOLLOW集。FIRST集合有:FIRST(E)=FIRST(T)=FIRST(F)=FIRST(P)=(,a,b,A;FIRST(E)=+FIRST(T)=FIRST(F)=FIRST(P)=(,a,b,A;FIRST(T)=FIRST(T)U&=(,a,b,八 间;FIRST(F)=FIR
18、ST(P)=(,a,b,A;FIRST(F尸FIRST(P)=*同;FIRST(P)=(,a,b,A);FOLLOW集合有:FOLLOW(E)=),#;FOLLOW.尸 FOLLOW(E 尸),#;FOLLOW(T)=FIRST(E,)U FOLLOW(E)=+,),#;不包含 FOLLOW(T,)=FOLLOW(T)=FIRST(E,)U FOLLOW(E)=+,),#;FOLLOW(F)=FIRST(T)U FOLLOW(T)=(,a,b,A,+,),#)FOLLOW(F,)=FOLLOW(F)=FIRST(T,)U FOLLOW(T)=(,a,b,A,+,),#;FOLLOW(P)=FI
19、RST(F,)U FOLLOW(F尸*,(,a,b,+,),#;不包含 e(2)证明这个方法是LL(1)的。各产生式的SELECT集合有:SELECT(E-TEl)=FIRST(T)=(,a,b,A;SELECT(E-+E尸+;SELECT(E,-8)=FOLLOW(E/)=),#SELECT(T-FTFIRST(F)=(,a,b,A;SELECT(T-T)=FIRST(T)=(,a,b,A);SELECT(T-8)=FOLLOW(T/)=+,),#);SELECT(F-PFFIRST(P)=(,a,b,A;SELECT(F-*F)=*;SELECT(F,-E)=FOLLOW(F,)=(,a,
20、b,A,+,),#;SELECT(P-(E)=(SELECT(P-a)=aSELECT(P-b)=bSELECT(P-A)=A可见,相同左部产生式的SELECT集的交集均为空,所以文法GE是 LL(1)文法。(3)构造它的预测分析表。文法GE的预测分析表如下:+*()ab#E-TEy-TEZ玲TETTEE,f+E-T-FT-FTZTFTTFTT-T3 Tf T-ZF-PFy-PFy今PF,1PF,F-*F,-T PT(E)3 afb-*编译原理模拟试题三一、是非题(请在括号内,正确的划4,错误的划x)(每个2 分,共 20分)1.对于数据空间的存贮分配,F O R T R A N 采用动态贮存
21、分配策略。(x)2.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。(x)3.递归下降分析法是自顶向上分析方法。N)4 .产生式是用于定义词法成分的一种书写规则。(x)5 .LR法是自顶向下语法分析方法。N)6 .在 S L R (1 )分析法的名称中,S的含义是简单的。(力7 .综合属性是用于“自上而下”传递信息。(x)8 .符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。(x)9 .程序语言的语言处理程序是一种应用软件。(x)10.解释程序适用于COBOL和 F O R T R A N 语言。(x)二、选择题(
22、请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共4 0分)1.文 法 G 产生的 的全体是该文法描述的语言。A.()句型 B.()终结符集 C.()非终结符集 D.()句子2.若 文 法 G 定义的语言是无限集,则文法必然是。A.()递归的c.()二义性的B.()前后文无关的D.()无二义性的3.四种形式语言文法中,1型文法又称为 文法。A.()短语结构文法 B.()前后文无关文法C.()前后文行关文法 D.()正规文法4.一 个 文 法 所 描 述 的 语 言 是。A.()唯一的 B.()不唯一的C.()可能唯一,好可能不唯一 D.()都不对5.和代码优化部分不是每个
23、编译程序都必需的。A.()语法分析 B.()中间代码生成C.()词法分析 D.()目标代码生成6.是两类程序语言处理程序。A.()高级语言程序和低级语言程序C.()编译程序和操作系统7.数组的内情向量中肯定不含有数组的A.()维数 B.()类型B.()解释程序和编译程序D.()系统程序和应用程序的信息。C.()维上下界 D.()各维的界差8.一个上下文无关文法G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 oA.()句子 B.()句型C.()单词 D.()产生式9.文法分为四种类型,即 0 型、1 型、2 型、3 型。其中2 型 文 法 是。A.()短语文法
24、 B.()正则文法C.()上下文有关文法 D.()上下文无关文法10.文 法 G 所描述的语言是 的集合。A.()文 法 G 的字母表V 中所有符号组成的符号串B.()文 法 G 的字母表V 的闭包V*中的所有符号串C.()由文法的开始符号推出的所有终极符串D.()由文法的开始符号推出的所有符号串三、填空题(每空1 分,共 10分)I.一个句型中的最左简单短语称为该句型的一句柄2.对于文法的每个产生式都配备了一组属性的计算规则,称 为 语义规则o3.一个典型的编译程序中,不仅包括 词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。4.从功能上说,程
25、序语言的语句大体可分为_执行性 语句和_说明性 语句两大类。5.扫描器的任务是从源程序 中识别出一个个 单词符号6.产生式是用于定义 语法范畴 的一种书写规则。四、简 答 题(20分)1.写一个文法,使其语言是奇数集,且每个奇数不以0 开头。解:文 法 G(N):NTAB|BA-AC|DBl|3|5|7|9DB|2|4|6|8CTO|D2.设文法G(S):ST(L)|a S|aLL,S|S(1)消除左递归和回溯;(2)计算每个非终结符的FIRST和 FOLLOW解:S-(L)|aSfS S|ELSLL JS L 归(2)FIRST)S)=(,a)FIRST(S)=,a,8FIRST(L)=(,
26、aFIRST(L()=,FOLLOW(S)=#,)FOLLOW(S)=#,)FOLLOW(L)=)FOLLOW(L)=)3.己知文法G(E)E-T|E+TT-F|T*FF-(E)|i(1)给出句型(T*F+i)的最右推导;(2)给出句型(T*F+i)的短语、素短语。解:(1)最 右 推 导:E-T-F-(E)-(E+T)-(E+F)-(E+i)-(T+i)-(T*F+i)短语:(T*F+i),T*F+i,T*F,i素短语:T*F,i4.While a0 V b0 then a:=a 1else b:=b+lEnd;翻译成四元式序列。解:a,0,5)(2)0,一,一,3)(3)(j,a,0,9)
27、(8)(j,-12)(9)(-,a,1,T2)(10)(:=,T2,a)(H)G-1)(12)(+,b,1,T3)(13)(:=,T3,b)(14)(j,一,-1)(15)五.计算题(10分)已知 NFA=(x,y,z,0,l,M,x,z),其中:M(x,0)=z,M(y,0)=x,y,M(z,0)=x,z,M(x,l)=x,M(y,l)=10 goto NEXT102:i:=j+j103:ai:=02.设基本块p 由如下语句构成:TO:=3.14;T 1 :=2*T 0;T 2:=R+r;A:=T 1 *T 2;B:=A;T 3:=2*T 0;T 4:=R+r;T 5:=T 3*T 4;T
28、6:=R-r;B:=T 5*T6;试给出基本块p 的 DAG oB3.写出表达式(a+b)/(a-b-(a+b*c)的三兀序列及四兀序歹U。解:(1)三元式:(+,a,b)(一,a,b)(/,,)(*,b c)(+,a,)(一,)(2)四元式:(+,a,b,Tl)(一,a,b,T2)(/,Tl,T2,T3)(*,b,c,T4)(+,a,T4,T5)(一,T3,T5,T6)4,写一个文法使其语言为偶数集,且每个偶数不以0开头。解:文法G (S):SA B|B|A OA A D|CBT2|4|6|8C-1|3|5|7|9|BD-O|C5.设 文 法 G (S):SS+a F|a F|+a FF*a
29、F|*a(1)消除左递归和回溯;(2)构造相应的FIR ST和Follow集合。1)S-aFS|+aFSS-+aFS|eF-*aFF-F|E(2 )FIRST(S)=a,+FOLLOW(S)=#FIRST(S)=+,FOLLOW(S)=#FIRST(F)=*FOLLoW(F)=(+,#)FIRST(F)=*,e FOLLOW(+,#五.计算题(1 0分)己知文法为:S-aP|(T)T-T,S|S构造它的LR(0)分析表。解:加入非终结符S,方法的增广文法为:S-SS-aS-AS-(T)T-T,ST-S下面构造它的LR(0)项目集规范族为:a*()9STi:s今sS-,aS fS*(T)L:S-
30、a。I):s今I:S E T)T-*T,ST SS,aS ST li:s2IIaccI:LI:SW T)TT,ST SS aS-TT)I;I,II(r)I.:T-T,ST。aS37T)l iI:SIe:-T,SS-*aS 3 OI:LI.hT-T,S心从上表可看出,不存在移进-归约冲突以及归约归约冲突,该文法是LR(O)文法。从而有下面的LR(O)分析表:状态ACTIONGOTOa*()#ST0s;s,s11acc2XlX 1XlXlXiXl3r-r:r:r:r:r:4s:s,S655S:S,6r$r$r$r5r$r57rsrrrr.目8s:S,S99rrrrrr.编译原理模拟试题五一、是非题
31、(请在括号内,正确的划4,错误的划X)(每个2分,共 2 0 分)1 .编译程序是对高级语言程序的解释执行。(x)2 .一个有限状态自动机中,有且仅有一个唯一的终态。(x)3 .一个算符优先文法可能不存在算符优先函数与之对应。N)4.语法分析时必须先消除文法中的左递归。(x)5 .LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。(力6 .逆波兰表示法表示表达式时无须使用括号。(0)D.()x*yx*4.如果文法G是无二义的,则它的任何句子a oA.()最左推导和最右推导对应的语法树必定相同B.()最左推导和最右推导对应的语法树可能不同C.()最左推导和最右推导必定相同
32、D.()可能存在两个不同的最左推导,但它们对应的语法树相同5.构 造 编 译 程 序 应 掌 握。A.()源程序 B.()目标语言C.()编译方法 D.()以上三项都是6.四元式之间的联系是通过 实现的。A.()指示器 B.()临时变量C.()符号表 D.()程序变量7.表达式(1 AVB)八(CVD)的逆波兰表示为 oA.()-|ABVACDV B.()A-J BVCDVAC.()ABV-CDVA D.()A-BVACDV8.优化可生成 的目标代码。A.()运行时间较短 B.()占用存储空间较小C.()运行时间短但占用内存空间大 D.()运行时间短且占用存储空间小9.下列 优化方法不是针对循
33、环优化进行的。A.()强度削弱 B.()删除归纳变量C.()删除多余运算 D.()代码外提10.编译程序使用 区别标识符的作用域。A.()说明标识符的过程或函数名B.()说明标识符的过程或函数的静态层次C.()说明标识符的过程或函数的动态层次D.()标识符的行号三、填空题(每空1 分,共 10分)1.计算机执行用高级语言编写的程序主要有两种途径:解释_ 和 _ 编译_。2 .扫描器是一词法分析器_,它接受输入的源程序,对源程序进行一 词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。3 .自上而下分析法采用 移进_、归约、错误处理、一 接受等四种操作。4 .一个L R分析
34、器包括两部分:一个总控程序和 一张分析表5 .后缀式a b c-/所代表的表达式是 a/(b-c)_ o6 .局部优化是在_ 基本块 范围内进行的一种优化。四、简 答 题(2 0 分)1 .简要说明语义分析的基本功能。答:语义分析的基本功能包括:确定类型、类型检查、语义处理和某些静态语义检查。2 .考虑文法G S :S t(T)|a+S|aT -T,S|S消除文法的左递归及提取公共左因子。解:消除文法GS的左递归:S(T)|a+S|aT 一 STT f ST1 8提取公共左因子:S(T)|aS,S一+S I Ts rTfSTl 83.试为表达式w+(a+b)*(c+d/(e-10)+8)写出相
35、应的逆波兰表示。解:w ab+cd e 10-/+8+*+4.按照三种基本控制结构文法将下面的语句翻译成四元式序列:while(AC A Bl)C=C+l;else while(A D)A=A+2;解:该语句的四元式序列如下(其中E l、E2和 E3分别对应AVC八BVD、A21和 A/D,并且关系运算符优先级高):100(j,A,C,102)101 0,_,_,113)102(j,B,D,104)103104 106)105106(+,C,1,C)107G,_,_,112)108(jaAd|aAb|s判断该文法是否是SLR(l)文法,若是构造相应分析表,并对输入串a b#给出分析过程。解:增
36、加一个非终结符S/后,产生原文法的增广文法有:S-AA-aAd|aAb|e下面构造它的 LR(0)项 目 集规范 族为:abdtAS,AAaAdAaAbAT。I:A-a*AdA-a*AbA+aAdA-*aAbIi:Ii:S /accI:iA-aaAdAaA bAaAdAeaAbA I:L:A-aA*dA-aAabL:A3aAdA-aA*bI:A-aAb-Is:A-aAd。I:A-aAb*L:A-aAd*从上表可看出,状 态1 0和1 2存在移进-归约冲突,该文法不是L R(0)文法。对 于1 0来说有:F O L L O W(A)n a =b,d,#n a =O,所以在1 0状态下面临输入符号
37、为a时移进,为b,d,#时归约,为其他时报错。对 于1 2来说有也有与1 0完全相同的结论。这就是说,以上的移进-归约冲突是可以解决的,因此该文法是S L R(l)文法。其S L R(l)分析表为:状态ACTIONG OTOabd*A0s:X 1rs11acc2s:X 1r2n33S.Ss4r:X:r5r-5X 1riX 1X 1对输入串a b#给出分析过程为:Jlh.flE步猱状态栈符号核输入串ACTIONG O TO10ab#s;202#ab#33023#aAb#S40234#aAbr:1501#Aacc 编译原理模拟试题六一、是非题(请在括号内,正确的划4 错误的划X)(每个2分,共 2
38、 0 分)1 .设 r 和 s 分别是正规式,则有L(r|s)=L(r)L(s)。(x)2 .确定的自动机以及不确定的自动机都能正确地识别正规集。(4)3 .词法分析作为单独的一遍来处理较好。(x)4 .构造L R分析器的任务就是产生LR分析表。()5 .规范归约和规范推导是互逆的两个过程。(x)6 .同心集的合并有可能产生新的“移进”/“归约”冲突。(x)7 .LR分析技术无法适用二义文法。(x )8 .树形表示和四元式不便于优化,而三元式和间接三元式则便于优化。(x)9 .程序中的表达式语句在语义翻译时不需要回填技术。N)10 .对中间代码的优化依赖于具体的计算机。(x)二、选择题(请在前
39、括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共4 0 分)1.编译程序绝大多数时间花在 上。A.()出错处理B.()词法分析C.()目标代码生成D.()表格管理2.编译程序是对A.()汇编程序的翻译C.()机器语言的执行B.()高级语言程序的解释执行D.()高级语言的翻译3.采用自上而下分析,必须A.()消除左递归C.()消除回溯B.()消除右递归D.()提取公共左因子4.在规范归约中,用 来刻画可归约串。A.()直接短语B.()句柄C.()最左素短语D.()素短语5.若 a 为终结符,则 A-a ap为 项目。A.()归约 B.()移进 C.6.间接三元式表示法的优点为
40、oA.()采用间接码表,便于优化处理C.()便于优化处理,节省存储空间7.基 本 块 内 的 优 化 为。A.()代码外提,删除归纳变量C.()强度削弱,代码外提 D.8.在目标代码生成阶段,符号表用。()接受 D.()待约B.()节省存储空间,不便于表的修改D.()节省存储空间,不便于优化处理B.()删除多余运算,删除无用赋值()循环展开,循环合并A.()目标代码生成C.()语法检查B.()语义检查D.()地址分配9.若项目集Ik含有A-,则在状态k 时,仅当面临的输入符号aeFOLLOW(A)时,才采取“A-a ”动作的一定是 oA.()LALR 文法 B.()LR(0)文法C.()LR(
41、1)文法 D.()SLR文法1 0.堆式动态分配申请和释放存储空间遵守 原则。A.()先请先放 B.()先请后放C.()后请先放 D.()任总:三、填空题(每空1 分,共 10分)1.词法分析基于正则 文法进行,即识别的单词是该类文法的句子。2.语法分析基于上下文无关 文法进行,即识别的是该类文法的句子。语法分析的有效工具是语法树。3.分析句型时,应用算符优先分析技术时,每步被直接归约的是最左素短语,而应用LR分析技术时,每步被直接归约的是一 句柄4.语义分析阶段所生成的与源程序等价的中间表示形式可以有逆 波%、_ 四无式衣示与 二元式表示等。5.按 Chomsky分类法,文法按照_ 规则定义
42、的形式 _ 进行分类。6.一个文法能用有穷多个规则描述无穷的符号串集合(语言)是因为文法中存在有 递归_定义的规则。四、简 答 题(20分)1.文 法 G S为:S-Ac|aBA-abB-bc写 出 L(GS)的全部元素。解:S=Ac=abc或 S=aB=abc所以 L(GS尸abc2.构 造 正 规 式 相 应 的 DFA。解:先构造NFA:重新命名,令 A B为 B、AC为 C、ABY为 D 得:3.文法S-a|A|(T)T-T,S|S对(a,(a,a)和(a,a),A,(a),a)的最左推导。解:对(a,(a,a)的最左推导为:S=(T)=(T,S)=(S,S)=(a,S)=(a,(T)
43、=(a,(T,S)=(a,(S,S)=(a,(a,S)=(a,(a,a)对(a,a/,(a),a)的最左推导为:S=(T)=(T,S)=(S,S)=(T),S)=(T,S),S)=(T,S,S),S)=(S,S,S),S)=(T),S,S),S)=(T,S),S,S),S)=(S,S),S,S),S)=(a,S),S,S),S)=(a,a),S,S),S)=(a,a)?,S),S)=(a,a,(T),S)=(a,a,(S),S)=(a,a),2(a),S)=(a,a),A,(a),a)4.文法:S-MH|aH-LSo|sK-dML|EL-eHfM-K|bLM判 断 G 是 否 为 LL(1)文
44、法,如果是,构 造 LL(1)分析表。解:各符号的FIRST集和FOLLOW集为:预测分析表为:FIRSTFOLLOWS ,c,e)礼0M3 c,b)H e,e#Xo)LeKd.ceAo)由于预测分析表中无多重入口,所以可判定文法是LL(1)的。a0defbS-MH-K-K-K-bLM-KH-8LSo-t-sL-eHfK-t-dN(L-s-s五.计算题(10分)已知文法G S为:S-a|A|(T)T-T,S|S(1)计算 G S的 FIRSTVT 和 LASTVT。(2)构 造 G S的算符优先关系表并说明G S是否未算符优先文法。(3)计 算 G S的优先函数。(4)给出输入串(a,a)#的算符优先分析过程。解:(1)各符号的FIRSTVT和 LASTVT:FIRSTVTLASTVTsTas 八、(,、a、八、(a、2,、a、八、)(2)算符优先关系表:a()A#a(鼻)A#(3)对应的算符优先函数为:a()9A#S212221T331131(4)句子(a,a)#分析过程如下:步骤栈优先关系当前符号剩余输入串移进或归妁1#*(a,a)#移进2(aa,a)#移进3敌aa,a)#归约4F(,a)#移进56研虾 a,)A)#移进归约7秋F,F,))#归妁8#(F(-)#移进9#归妁10iff#接受