编译原理阶段测试题.docx
《编译原理阶段测试题.docx》由会员分享,可在线阅读,更多相关《编译原理阶段测试题.docx(12页珍藏版)》请在冰豆网上搜索。
编译原理阶段测试题
第一阶段测试卷
考试科目:
《编译原理》第1章至第4章(总分100分)时间:
90分钟
学习中心(教学点)批次:
层次:
专业:
学号:
身份证号:
姓名:
得分:
一、选择与填充(30)
1.一个正则语言只能对应()?
A.一个正则文法B.一个最小有限状态自动机
C.一个自然语言D.一个上下文有关文法
2.对于编译程序而言,输入数据是源程序,输出数据是___________________。
3.给出在字母表{0,1}上的“所有以00结尾的符号串的集合”的语言的正则表达式:
_____________________。
4.一个句型中最左的()称为该句型的句柄。
A.简单短语B.短语C.非终结符号D.终结符号
5.Micro语言只有三种语句:
()、输入语句和输出语句。
A.GOTO语句B.赋值语句C.条件语句D.循环语句
6.描述高级语言语法的常用方法有________________和BNF范式。
二、给出与正规式R=(ab)*(a|b*)ab等价的NFA。
(16)
三、简述DFA与NFA有何区别。
(14)
四、判断下列文法是否具有二义性:
G[P]:
P→PaP|PbP|cP|Pe|f(18)
五、对于下面的文法G[Z],构造句子(i*i+i)*i的最左和最右推导及相应的语法树。
(22)
(1)Z:
:
=E
(2)E:
:
=T+E(3)E:
:
=T(4)T:
:
=F*T
(5)T:
:
=F(6)F:
:
=(E)(7)F:
:
=i
附:
参考答案:
一、选择与填充(30)
1.一个正则语言只能对应(B)?
A.一个正则文法B.一个最小有限状态自动机
C.一个自然语言D.一个上下文有关文法
2.对于编译程序而言,输入数据是源程序,输出数据是____目标程序_________。
3.给出在字母表{0,1}上的“所有以00结尾的符号串的集合”的语言的正则表达式:
________(0|1)*00__________。
4.一个句型中最左的(A)称为该句型的句柄。
A.简单短语B.短语C.非终结符号D.终结符号
5.Micro语言只有三种语句:
(B)、输入语句和输出语句。
A.GOTO语句B.赋值语句C.条件语句D.循环语句
6.描述高级语言语法的常用方法有___语法图_____和BNF范式。
二、给出与正规式R=(ab)*(a|b*)ab等价的NFA。
(16)
三、简述DFA与NFA有何区别。
(14)
解:
DFA与NFA的区别主要有两点:
1是NFA可以若干个开始状态,而DFA仅只一个开始状态。
2是DFA的映象M是从K×∑到K,而NFA的映象M是从K×∑到K的子集,即映象M将产生一个状态集合(可能为空集),而不是单个状态。
四、判断下列文法是否具有二义性:
G[P]:
P→PaP|PbP|cP|Pe|f(18)
解:
因为文法存在句型fbfbf,此句型有两棵不同的语法树,所以文法具有二义性。
五、对于下面的文法G[Z],构造句子(i*i+i)*i的最左和最右推导及相应的语法树。
(22)
(1)Z:
:
=E
(2)E:
:
=T+E(3)E:
:
=T(4)T:
:
=F*T
(5)T:
:
=F(6)F:
:
=(E)(7)F:
:
=i
解:
最左:
Z=>E=>T=>F*T=>(E)*T=>(T+E)*T=>(F*T+E)*T=>(i*T+E)*T=>(i*F+E)*T=>(i*i+E)*T
=>(i*i+T)*T=>(i*i+F)*T=>(i*i+i)*T=>(i*i+i)*F=>(i*i+i)*i
最右:
Z=>E=>T=>F*T=>F*F=>F*i=>(E)*i=>(T+E)*i=>(T+T)*i=>(T+F)*i=>(T*i)*i=>(F*T+i)*i
=>(F*F+i)*i=>(F*i+i)*i=>(i*i+i)*i
第二阶段测试卷
考试科目:
《编译原理》第4章至第7章(总分100分)时间:
90分钟
学习中心(教学点)批次:
层次:
专业:
学号:
身份证号:
姓名:
得分:
一、选择与填充(30)
1.有限状态自动机能识别()。
A.上下文无关文法B.上下文有关文法C.正则文法D.短语文法
2.在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合都是()。
A.非终极符集B.终极符集C.字母表D.状态集
3.在自底向上的语法分析方法中,分析的关键是()。
A.寻找句柄B.寻找句型C.消除递归D.消除公共前缀
4.______________________是这样一种动作文法,即动作符只出现于产生式的末尾。
5.文法要满足两个条件:
_____________________和_________________________才可以使用自顶向下的语法分析方法。
6.文法G[E]:
E→E+T|T,T→T*P|P,P→(E)|I,则句型P+T+i的短语有()。
A.i,P+TB.P,P+T,i,P+T+iC.P+T+iD.P,P+T,i
二、若有文法G[S]为:
S->Ac|aBA->dfB->be,请写出语言L(G[S])的全部元素。
(12)
三、文法G[S]为:
(18)
S→V
V→T|ViT
T→F|T+F
F→)V*|(
试给出句型ViFi(的短语,简单(直接)短语,句柄。
四、写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列。
(15)
五、下面的文法是不是LL
(1)文法?
若是,请构造相应的LL
(1)分析表。
(25)
S→aDD→STe|ε T→bH|H H→d|ε
附:
参考答案:
一、选择与填充(30)
1.有限状态自动机能识别(C)
A.上下文无关文法B.上下文有关文法C.正则文法D.短语文法
2.在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合都是(B)。
A.非终极符集B.终极符集C.字母表D.状态集
3.在自底向上的语法分析方法中,分析的关键是(A)。
A.寻找句柄B.寻找句型C.消除递归D.消除公共前缀
4._______尾动作文法________是这样一种动作文法,即动作符只出现于产生式的末尾。
5.文法要满足两个条件:
________没有左递归_____和______没有公共前缀_____才可以使用自顶向下的语法分析方法。
6.文法G[E]:
E→E+T|T,T→T*P|P,P→(E)|I,则句型P+T+i的短语有(B)。
A.i,P+TB.P,P+T,i,P+T+iC.P+T+iD.P,P+T,i
二、若有文法G[S]为:
S->Ac|aBA->dfB->be,请写出语言L(G[S])的全部元素。
(12)
解:
因为S=>Ac=>dfc
S=>aB=>abe
所以L(G[S])={abcdef}
三、文法G[S]为:
(18)
S→V
V→T|ViT
T→F|T+F
F→)V*|(
试给出句型ViFi(的短语,简单(直接)短语,句柄。
解:
句型ViFi(的语法树如下:
F是句型ViFi(相对于T的短语、简单短语、句柄
(是句型ViFi(相对于F的短语、简单短语
(是句型ViFi(相对于T的短语
ViF是句型ViFi(相对于V的短语
ViFi(是句型ViFi(相对于V的短语
ViFi(是句型ViFi(相对于S的短语
四、写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列。
(15)
解:
逆波兰表示:
abc*+ab+/d-
三元式序列:
(1)(*,b,c)
(2)(+,a,
(1))
(3)(+,a,b)
(4)(/,
(2),(3))
(5)(-,(4),d)
五、下面的文法是不是LL
(1)文法?
若是,请构造相应的LL
(1)分析表。
(25)
S→aDD→STe|ε T→bH|H H→d|ε
解:
Predict(S→aD)=first(aD)={a}
Predict(D→STe)=first(STe)={a}
Predict(D→ε)=follow(D)={#,b,d,e}
Predict(T→bH)=first(bH)={b}
Predict(T→H)=first(H)∪follow(T)={d,e}
Predict(H→d)=first(d)={d}
Pridict(H→ε)=follow(H)={e}
所以该文法是LL
(1)文法,LL
(1)分析表如下表:
a
e
b
d
#
S
1
D
2
3
3
3
3
T
5
4
5
H
7
6
第三阶段测试卷
考试科目:
《编译原理》第8章至第10章(总分100分)时间:
90分钟
学习中心(教学点)批次:
层次:
专业:
学号:
身份证号:
姓名:
得分:
一、选择与填充(30)
1.四元式之间的联系是通过()来实现的。
A.指示器B.临时变量C.符号表D.程序变量
2.优化可生成()的目标代码。
A.运行时间较短B.运行时间短但占用内存空间大
C.占用存储空间较小D.运行时间短且占用存储空间小
3.下列()优化方法不是针对循环优化进行的。
A.强度削弱B.删除归纳变量C.删除多余运算D.代码外提
4.在目标代码生成阶段,符号表用于()。
A.目标代码生成B.语义检查C.语法检查D.地址分配
5.语法分析是依据语言的__________规则进行的,中间代码产生是依据语言的_________规进行的。
6.优化可分为局部优化、_____________和全局优化三种。
二、写出表达式A*(B/C-D)+E/F的逆波兰中间代码。
(15)
三、什么是活动记录?
它主要由哪些内容构成?
(15)
四、试写出算术表达式a+b*c-(c*b+a-e)/(b*c+d)优化后的四元式序列。
(15)
五、文法G[M]及其LR分析表如下,请给出对串dada#的分析过程。
(30)
G[M]:
1)S→VdB 2)V→e
3)V→ε 4)B→a
5)B→Bda 6)B→ε
状态
ACTION
GOTO
d
e
a
#
S
B
V
0
r3
S3
1
2
1
acc
2
S4
3
r2
4
r6
S5
r6
6
5
r4
r4
6
S7
r1
7
S8
8
r5
r5
附:
参考答案:
一、选择与填充(30)
1.四元式之间的联系是通过(B)来实现的。
A.指示器B.临时变量C.符号表D.程序变量
2.优化可生成(D)的目标代码。
A.运行时间较短B.运行时间短但占用内存空间大
C.占用存储空间较小D.运行时间短且占用存储空间小
3.下列(C)优化方法不是针对循环优化进行的。
A.强度削弱B.删除归纳变量C.删除多余运算D.代码外提
4.在目标代码生成阶段,符号表用于(D)。
A.目标代码生成B.语义检查C.语法检查D.地址分配
5.语法分析是依据语言的___语法__规则进行的,中间代码产生是依据语言的__语义___规进行的。
6.优化可分为局部优化、____循环优化____和全局优化三种。
二、写出表达式A*(B/C-D)+E/F的逆波兰中间代码。
(15)
解:
ABC/D-*EF/+
三、什么是活动记录?
它主要由哪些内容构成?
(15)
解:
一个过程的一次执行所需信息的管理,是通过称为活动记录的连续存储块来实现的。
活动记录的主要内容有:
(1)临时变量域存放目标程序临时变量的值;
(2)局部数据域存放过程本次执行时的局部数据、简单变量及数组内情向量等;
(3)机器状态域保存在调用过程前有关机器状态的信息,包括各寄存器的当前值及返回地址等;
(4)存取链为访问其它活动记录中所存放的非局部数据所提供的链地址;
(5)控制链指向主调过程的活动记录;
(6)实参存放主调过程为被调用过程所提供的实参信息;
(7)返回值为主调过程存放被调过程的返回值
四、试写出算术表达式a+b*c-(c*b+a-e)/(b*c+d)优化后的四元式序列。
(15)
解:
该表达式的四元式序列为:
(1)(*,b,c,T1)
(2)(+,a,T1,T2)
(3)(*,c,b,T3)
(4)(+,T3,a,T4)
(5)(-,T4,e,T5)
(6)(*,b,c,T6)
(7)(+,T6,d,T7)
(8)(/,T5,T7,T8)
(9)(-,T2,T8,T9)
可以对该表达式进行删除公共子表达式的优化。
优化后的四元式序列为:
(1)(*,b,c,T1)
(2)(+,a,T1,T2)
(3)(-,T2,e,T5)
(4)(+,T1,d,T7)
(5)(/,T5,T7,T8)
(6)(-,T2,T8,T9)
五、文法G[M]及其LR分析表如下,请给出对串dada#的分析过程。
(30)
G[M]:
1)S→VdB 2)V→e
3)V→ε 4)B→a
5)B→Bda 6)B→ε
状态
ACTION
GOTO
d
e
a
#
S
B
V
0
r3
S3
1
2
1
acc
2
S4
3
r2
4
r6
S5
r6
6
5
r4
r4
6
S7
r1
7
S8
8
r5
r5
解:
状态栈
符号栈
输入流
动作
S0
#
dada#
r3
S0S2
#V
dada#
S4
S0S2S4
#Vd
ada#
S5
S0S2S4S5
#Vda
da#
r4
S0S2S4S6
#VdB
da#
S7
S0S2S4S6S7
#VdBd
a#
S8
S0S2S4S6S7S8
#VdBda
#
r5
S0S2S4S6
#VdB
#
r1
S0S1
#S
#
acc