编译原理复习题给学生讲解学习Word文件下载.docx
《编译原理复习题给学生讲解学习Word文件下载.docx》由会员分享,可在线阅读,更多相关《编译原理复习题给学生讲解学习Word文件下载.docx(39页珍藏版)》请在冰豆网上搜索。
B.M1和M2的有向边条数相等
C.M1和M2所识别的语言集相等
D.M1和M2状态数和有向边条数相等
4.词法分析器的加工对象是。
C
A.中间代码B.单词C.源程序D.元程序
5.同正规式(a|b)*等价的正规式为。
A.(a|b)+B.a*|b*C.(ab)*D.(a*|b*)+
6.两个DFA等价是指:
。
D
A.这两个DFA的状态数相同
B.这两个DFA的状态数和有向弧条数都相等
C.这两个DFA的有向弧条数相等
D.这两个DFA接受的语言相同
7.下列符号串不可以由符号集S={a,b}上的正闭包运算产生的是:
(A )
A.εB. a
C. aaD. ab
8.称有限自动机A1和A2等价是指________。
A.A1和A2都是定义在一个字母表上的有限自动机
B.A1和A2状态数和有向边数相等
C.A1和A2状态数或有向边数相等
D.A1和A2所能识别的字符串集合相等
9.同正规式(a|b)+等价的正规式是_______。
A.(a|b)*B.(a|b)(a|b)*
C.(ab)*(ab)D.(a|b)|(a|b)*
语法分析
1.在规范归约中,用来刻画可归约串。
B
A.直接短语B.句柄
C.最左素短语D.素短语
2.若B为非终结符,则A→α·
Bβ为项目。
A.归约B.移进
C.接受D.待约
3.如果文法G是无二义的,则它的任何句子α。
A
A.最左推导和最右推导对应的语法树必定相同
B.最左推导和最右推导对应的语法树可能不同
C.最左推导和最右推导必定相同
D.可能存在两个不同的最左推导,但它们对应的语法树相同
4.下列动作中,不是自下而上分析动作的是:
A.移进B.展开
C.接受D.报错
6.若a为终结符,则A→α·
aβ为项目。
A.归约B.移进
7.语法分析时所依据的是。
A
A.语法规则B.词法规则
C.语义规则D.等价变换规则
8.文法G:
S→xSx|y所识别的语言是。
C
A.xyxB.(xyx)*
C.xnyxn(n≥0)D.x*yx*
9.下列动作中,不是自上而下分析动作的是:
A.匹配B.展开
C.移进D.报错
10.若A为非终结符,则A→α·
为项目。
11.文法G:
S→xSx|xS|y所识别的语言是。
A
A.xmyxn(m≥n≥0)B.(xyx)*
C.xnyxn(n≥0)D.x*yx*
13.由文法的开始符号出发经过若干步(包括0步)推导产生的文法符号序列称为______。
A.语言B.句型C.句子D.句柄
14.在自上而下的语法分析中,应从开始分析。
A.句型B.句子C.文法开始符号D.句柄
15.一个文法G,若________,则称它是LL
(1)文法。
A.G中不含左递归B.G无二义性
C.G的LL
(1)分析表中不含多重定义的条目D.G中产生式不含左公因子
16.项目S’→S.为 。
A.归约项目B.移进项目
C.待约项目D.接受项目
17.语法分析器的输入是:
。
A
A.Token序列B.源程序
C.目标程序D.符号表
18.在LR(0)的Action表中,如果某行中存在标记为“rj”的栏,则:
A
A.该行必定填满“rj”B.该行未必填满“rj”
C.其他行可能也有“rj”D.goto表中也可能有“rj”
19.LR分析过程中栈内存储的是。
A.活前缀B.前缀
C.归约活前缀D.项目
20.文法G:
S→xxS|y所识别的语言是。
A.xxynB.(xxy)n
C.xxnyxD.(xx)ny
21.若状态k含有项目“A→α.”,对任意非终结符a,都用规则“A→α”归约的语法分析方法是。
A.LALR分析法B.LR(0)分析法
C.LR
(1)分析法D.SLR
(1)分析法
22.在SLR
(1)的Action表中,如果某行中存在标记为“rj”的栏,则:
23.一个指明了在LR分析过程中的某个时刻所能看到产生式多大一部分。
24.若状态k含有项目“A→α.”,且仅当输入符号a∈FOLLOW(A)时,才用规则“A→α”归约的语法分析方法是。
25.设有文法G[T]:
T→T*F|F
F→F↑P|P
P→(T)|a
该文法句型T*P↑(T*F)的句柄是下列符号串。
A.(T*F)B.T*FC.PD.P↑(T*F)
26.LR分析表中的转移表(goto)是以作为列标题的。
A.终结符B.非终结符C.终结符或非终结符D.表示状态的整形数
27.编译程序的语法分析器必须输出的信息是。
A.语法错误信息B.语法规则信息
C.语法分析过程D.语句序列
28.下列项目中为可移进项目的是。
A.E′→E.B.L→.C.L→.-LD.F→L*F.
29.LR分析表中的动作表(action)是以作为列标题的。
A.终结符B.非终结符
C.终结符或非终结符D.终结符和结束符#
30.下列项目中为可归约项目的是。
A.E′→.EB.L→.C.L→-.LD.F→L*.F
33.LR分析器的核心部分是一张分析表,该表由_________组成。
A.ACTION表B.GOTO表
C.预测分析表D.ACTION表和GOTO表
34.在递归下降子程序方法中,若文法存在左递归,则会使分析过程产生_______。
A.回溯B.非法调用C.有限次调用D.无限循环
35.最左简单子树的叶结点,自左至右排列组成句型的________。
A.短语B.句型C.句柄D.间接短语
36.由文法的开始符号出发经过若干步(包括0步)推导产生的文法符号序列中,如果只含有终结符,则文法符号序列称为________。
37.LL
(1)分析法中“1”的含义是在输入串中查看一个输入符号,其目的是________。
A.确定最左推导B.确定句柄
C.确定使用哪一个产生式进行展开D.确定是否推导
语义分析
1.表达式(┐a∨b)∧(e∨f)的逆波兰表示为。
A.┐ab∨∧ef∨B.a┐b∨ef∨∧
C.ab∨┐ef∨∧D.a┐b∨∧ef∨
2.中间代码生成时所依据的是。
A.词法规则B.语法规则
C.语义规则D.等价变换规则
3.-a-(b*c/(c-d)+(-b)*a)的逆波兰表示是。
(@代表后缀式中的求负运算符)C
A.abc*cd-b@a*+/-@B.a@bc*cd-b@a*+/-
C.a@bc*cd-/b@a*+-D.a@bc*/cd-b@a*+-
4.有文法G及其语法制导翻译如下所示(语义规则中的*和+分别是常规意义下的算术运算符):
E→E
(1)∧T{E.val=E
(1).val*T.val}
E→T{E.val=T.val}
T→T
(1)#n{T.val=T
(1).val+n.val}
T→n{T.val=n.val}
则分析句子1∧2∧3#4其值为。
C
A.10B.34C.14D.54
5.有文法G及其语法制导翻译如下所示(语义规则中的*和+分别是常规意义下的算术运算符):
则分析句子2∧3#4其值为。
A.10B.21
C.14D.24
6.间接三元式表示法的优点为。
A.采用间接码表,便于优化处理
B.节省存储空间,不便于表的修改
C.便于优化处理,节省存储空间
D.节省存储空间,不便于优化处理
7.文法G[S]及其语法制导翻译定义如下:
产生式语义动作
S’→Sprint(S.num)
S→(L)S.num=L.num+1
S→aS.num=0
L→L
(1),SL.num=L
(1).num+S.num
L→SL.num=S.num
若输入为(a,(a)),且采用自底向上的分析方法,则输出为。
A.0B.1C.2D.4
8.四元式之间的联系是通过____________实现的。
A.指示器B.临时变量C.符号表D.程序变量
9.表达式(┐a∨b)∧(c∨d)的逆波兰表示为。
A.┐ab∨∧cd∨B.a┐b∨cd∨∧
C.ab∨┐cd∨∧D.a┐b∨∧cd∨
10.表达式a+b+c+d的逆波兰表示为。
A.a+bc+d+B.ab+c+d+
C.ab+cd++D.abc+d++
11.有文法G及其语法制导翻译如下所示(语义规则中的*和+分别是常规意义下的算术运算符):
则分析句子3∧3#4其值为。
B
A.10B.21
C.14D.24
12.表达式a+b+c的逆波兰表示为。
A.a+bc+B.ab+c+
C.+abc+D.abc++
13.文法G[S]及其语法制导翻译定义如下:
L→SL.num=S.num
若输入为(a,a),且采用自底向上的分析方法,则输出为。
A.0B.1
C.2D.4
14.有一语法制导翻译定义如下:
S→bAbprint“1”
A→(Bprint“2”
A→aprint“3”
B→aA)print“4”
若输入序列为b(a(a(aa)))b,且采用自底向上的分析方法,则输出序列为。
A.32224441B.34242421
C.12424243D.34442212
15.赋值语句X:
=-(a+b)/(c-d)-(a+b*c)的逆波兰表示是。
A.Xab+cd-/-bc*a+-:
=
B.Xab+/cd-bc*a+--:
C.Xab+-cd-/abc*+-:
D.Xab+cd-/abc*+--:
16.有一语法制导翻译定义如下,其中+表示符号连接运算:
S→BprintB.vers
B→aB.vers=a
B→bB.vers=b
B→BaB.vers=a+B.vers
B→BbB.vers=b+B.vers
若输入序列为abab,且采用自底向上的分析方法,则输出序列为。
A.aabbB.ababC.bbaaD.baba
17.编译程序不能检查、处理的错误是程序中的________。
A.静态语义检查B.动态语义检查C.语法错误D.词法错误
(优化、存储、错误管理)
1.在编译过程中,如果遇到错误应该。
A.把错误理解成局部的错误
B.对错误在局部范围内进行纠正,继续向下分析
C.当发现错误时,跳过错误所在的语法单位继续分析下去
D.当发现错误时立即停止编译,待用户改正错误后再继续编译
二、填空题
概述部分:
1.编译程序的开发常常采用自编译、交叉编译、自展和移植等技术实现。
2.解释程序和编译程序的区别在于是否生成目标程序。
3.如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为3个阶段:
编译阶段、汇编阶段和运行阶段。
4.编译程序工作过程中,第一阶段输入是源程序,最后阶段的输出为目标程序。
5.编译过程通常可分为5个阶段词法分析阶段、语法分析阶段、语义分析和中间代码生成阶段、优化阶段和目标代码生成阶段。
6.如果编译阶段生成的目标程序是某特定计算机系统的机器代码程序,则源程序的执行分为两大阶段:
编译阶段和运行阶段。
7.对编译程序而言,输入数据是源程序,输出结果是目标程序。
8.贯穿于编译程始终的工作有符号表处理和出错处理。
词法分析部分:
1.词法分析的工作是将源程序中的字符串变换成单词符号流的过程,所遵循的是语言的构词规则。
2.若两个正规式所表示的正规集相同,则认为二者是等价的。
3.若两个正规式所表示的正规集相同,则认为二者是等价的。
4.正规式R1和R2等价是指_______表示相同的正规集。
5.词法分析器的输入是源程序字符串,输出结构是二元式(单词种别,单词自身的值)。
词法分析所遵循的是语言的构词规则。
6.确定的有限自动机是一个五元组,包含的五个元分别是:
状态集合、字母表、初态、终态集、状态转换函数集合。
7.有限自动机是更一般化的状态转换图,它分为确定的有限自动机DFA和非确定的有限自动机NFA两种。
8.NFA和DFA的区别主要有两点:
其一是NFA可以有若干个初始状态,而DFA仅有一个初始状态;
其二是NFA的状态转换函数f不是单值函数,而是一个多值函数。
语法分析部分:
(基本概念、LL
(1)、LR(0)、SLR
(1)、递归下降子程序)
1.语法分析的方法通常分为两类:
自上而下分析方法和自下而上分析方法。
2.文法中的终结符集和非终结符集的交集是空集。
3.一个句型的最左直接短语称为该句型的___句柄________________。
4.规范归约是最右推导的逆过程。
5.自下而上语法分析中分析器的动作有_移进、____归约、__接受_、__报错__。
6.自上而下语法分析中分析器的动作有___匹配终结符____、__展开非终结符_、__分析成功、报错__。
7.常用的自上而下语法分析方法有递归下降子程序方法和预测分析表方法(LL
(1)方法)。
8.常用的自下而上语法分析方法有算符优先分析法和LR分析法。
9.一个LL
(1)分析器由一张LL
(1)分析表(预测分析表)、一个先进后出分析栈和一个控制程序(表驱动程序)组成。
10.一个LR分析器由分析栈、分析表和总控程序三个部分组成。
11.LR(0)分析法的名字中,“L”表示自左至右分析输入串,“R”表示采用最右推导的逆过程即最左归约。
“0”表示向右查看0个字符。
12.LL
(1)分析法中,第一个L的含义是从左到右扫描输入串;
第二个L的含义是分析过程中采用最左推导;
“1”的含义是只需向右查看一个符号就可以决定如何推导。
13.LR
(1)文法的含义是:
L表明_____自左至右扫描输入串__,R表明___采用最右推导的逆过程(最左归约)方法进行分析__。
14.一个上下文无关文法是LL
(1)文法的充分必要条件是:
对每一个非终结符A的任何两个不同产生式A→α|β,有下面的条件成立:
(1)FIRST(α)∩FIRST(β)=Ø
;
(2)假若
,则有FIRST(α)∩FOLLOW(A)=Ø
15.对于LL
(1)文法中的任何产生式A→α|β,则需要满足__First(_α)∩First(β)=Φ、
_若_β=>
*ε,则_First(_α)∩__Follow(A)=_Φ_。
16.LR分析器的核心部分是一张分析表,该表包括动作(ACTION)表和状态转换(GOTO)表等两个子表。
17.关于非终结符A的直接左递归产生式:
A→Aα|β,其中α、β是任意的符号串且β不以A开头,则可以将A的产生式改写为右递归的形式为:
A→βA’,A’→αA’|ε。
18.在消除回溯,提取公共左因子时,关于A的产生式A→δβ1|δβ2|…|δβi|βi+1|…|βj,可以改写为:
A→δA’|βi+1|…|βj,A’→β1|…|βi。
19.设G[S]是一文法,如果符号串x是从识别符号推导出来的,即有
x,则称x是文法G[S]的____句型__,若x仅由终结符号组成,即
,则称x为文法G[S]的__句子。
20.已知文法G[S]:
S→eT|RTT→DR|εR→dR|εD→a|bd
求FIRST(S)={e,d,a,b,ε}______;
FOLLOW(D)=_{d,#}。
语义处理部分:
1.文法符号的属性有两种,一种称为继承属性,另一种称为综合属性。
2.编译过程中,常见的中间语言形式有逆波兰表示法、抽象语法树、三元式、四元式。
3.语法制导翻译的方法就是为每个产生式配上一个翻译子程序(语义动作或语义子程序),并在语法分析的同时执行它们。
4.编译过程中,常见的中间语言形式有逆波兰表示法、抽象语法树、三元式、四元式。
6.文法符号的属性有两种,一种称为继承属性,另一种称为综合属性。
7.四元式之间的联系是通过临时变量实现的。
8.在属性文法中,终结符只有____综合属性。
10.语法制导翻译的方法就是为每个产生式配上一个翻译子程序(语义动作或语义子程序),并在语法分析的同时执行它们。
11.目前较常见的语言语义的描述形式是__属性文法______,并使用__语法制导翻译方法完成对语法成分的翻译。
1.代码优化的含义是:
对代码进行等价变换,使得变换后的代码具有更高的时间效率和空间效率。
2.按照优化对象所涉及的程序范围,优化分为局部优化、循环优化和全局优化。
3.基本块,是指程序中—顺序执行的语句序列,其中只有一个入口和一个出口。
4.从编译角度看,分配目标程序数据空间的基本策略有:
静态分配策略、栈式动态分配策略和堆式动态分配策略。
三、判断题
1.设r和s分别为正规式,则有L(r|s)=L(r)|L(s).。
(×
)
2.一个文法的所有句型的集合形成该文法所能接受的语言。
3.语法分析之所以采用上下文无关文法是因为它的描述能力最强。
4.由于LR(0)分析表构造简单,所以它的描述能力强,适用面宽;
LR
(1)分析表因构造复杂而描述能力弱,适用面窄。
5.逆波兰表示法表示表达式时无需使用括号。
(√)
6.自动机M和M’的状态个数不同,则二者必不等价。
7.LL
(1)文法一定不含左递归和二义性。
8.所有LR分析器的总控程序都是一样的,只是分析表各有不同。
9.无论是三元式表示还是间接三元式表示的中间代码,其三元式在三元式表中的位置一旦确定就很难改变。
10.三地址语句类似于汇编语言代码,可以看成中间代码的一种抽象形式。
11.最左推导也被称为规范推导。
(×
12.运算对象排列的先后顺序在后缀式和中缀式中不同。
13.出现在移进-归约分析器栈中的内容被称为文法G的活前缀。
14.LR方法可以分析含有左递归的文法。
15.三元式的编号具有双重含义,既代表此三元式,又代表三元式存放的结果。
16.语义规则中的属性有两种:
综合属性与继承属性。
17.移进-归约分析器的格局中栈的内容一般是文法符号与状态。
18.由于递归下降子程序方法较LL
(1)方法简单,因此它要求文法不必是LL
(1)文法。
19.四元式的编号具有双重含义,既代表此四元式,又代表四元式存放的结果。
20.用高级语言编写的源程序必须经过编译,产生目标程序后才能运行。
21.源程序到目标程序的变换是等价变换,即两者结构不同,但语义是一致的。
22.对于任何一个正规式e,都存在一个DFAA,使得L(e)=L(A)。
23.最小化的DFA,它的状态数最小。
24.NFA的确定化算法具有消除ε边的功能。
25.每个非终结符产生的终结符号串都是该语言的子集。
26.一个语言的文法是不唯一的。
27.语法错误校正的目的是为了把错误改正过来。
28.源程序和目标程序是等价关系。
29.编译程序中错误处理的任务是对检查出的错误进行修改。
30.使用有限自动机可以实现单词的识别。
31.一个非确定的有限自动机NFA可以通过多条路径识别同一个符号串。
32.最小化的DFA所识别接受的正规集最小。
33.一个语言(如C语言)的