编译原理Word格式.docx
《编译原理Word格式.docx》由会员分享,可在线阅读,更多相关《编译原理Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
)
1.若一个文法是递归的,则它所产生的语言的句子是()。
(5分)
A.无穷多个
B.有穷多个
C.可枚举的
D.个数是常量
2.文法G[A]:
A→εA→aBB→AbB→a是()。
A.0型文法
B.1型文法
C.2型文法
D.3型文法
3.词法分析器的输入是()。
A.单词符号串
B.源程序
C.语法单位
D.目标程序
4.一个上下文无关文法G包括四个组成部分,它们是:
一组非终结符号,一组终结符号,一个开始符号,以及一组()。
A.句子
B.句型
C.单词
D.产生式
二填空题(共2题,总分值10分)
5.编译程序的功能可以分解为词法分析、语法分析、_____语义分析_____、中间代码生成、中间代码优化、目标代码生成。
6.微小语言Micro的单词有下面的几种:
标识符、_____整常数_____、实常数、保留字、_____符号词______、换行符。
三简答题(共2题,总分值20分)
7.给出与正规式R=1(0|1)*101等价的NFA。
(10分)
答:
8.写出下面程序经词法分析后的TOKEN表示。
beginvarX:
real;
varJ:
integer;
read(J);
J:
=J+(J*20);
X:
=J-1;
Write(2*J+X)
End(10分)
四综合计算题(共2题,总分值50分)
9.已知文法G(S)S→a|(T)T→T,S|S
写出句子((a,a),a)的规范归约过程及每一步的归约规则和句柄。
(25分)
10.已知文法G[E]为:
E→T|E+T|E-TT→F|T*F|T/FF→(E)|i
①该文法的开始符号(识别符号)是什么?
②请给出该文法的终结符号集合Vt和非终结符号集合Vn。
③找出句型T+T*F+i的所有短语、简单短语和句柄。
解:
①该文法的开始符号(识别符号)是E。
②该文法的终结符号集合VT={+、-、*、/、(、)、i}。
非终结符号集合VN={E、T、F}。
③句型T+T*F+I的短语为i、T*F、第一个T、T+T*F+i;
简单短语为i、T*F、第一个T;
句柄为第一个T。
江南大学网络教育第二阶段练习题
1.有限状态自动机能识别()。
A.上下文无关文法
B.上下文有关文法
C.正则文法
D.短语文法
2.文法G[E]:
E→E+T|T,T→T*P|P,P→(E)|I,则句型P+T+i的短语有()。
A.i,P+T
B.P,P+T,i,P+T+i
C.P+T+i
D.P,P+T,i
3.在自底向上的语法分析方法中,分析的关键是()。
A.寻找句柄
B.寻找句型
C.消除递归
D.消除公共前缀
4.在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合都是()。
A.非终极符集
B.终极符集
C.字母表
D.状态集
5.文法要满足两个条件:
__没有左递归________和_____没有公共前缀_____才可以使用自顶向下的语法分析方法。
6.__尾文作文法________是这样一种动作文法,即动作符只出现于产生式的末尾。
7.若有文法G[S]为:
S->
Ac|aBA->
dfB->
be,请写出语言L(G[S])的全部元素。
8.文法G[S]为:
S→V
V→T|ViT
T→F|T+F
F→)V*|(
试给出句型ViFi(的短语,简单(直接)短语,句柄。
9.写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列。
10.下面的文法是不是LL
(1)文法?
若是,请构造相应的LL
(1)分析表。
S→aDD→STe|ε T→bH|H H→d|ε(25分)
首先计算文法的FIRST集和FOLLOW集如下表。
非终结符SDTH{a}{a,ε}{b,d,ε}{d,ε}FIRST集FOLLOW集{#,b,d,e}.{#,b,d,e}{e}{e}由于predict(D→STe)∩predict(D→ε)={a}∩{#,b,d,e}=predict(T→bH)∩predict(T→H)={b}∩{e}=predict(H→d)∩predict(H→ε)={d}∩{e}=所以该文法是LL
(1)文法,LL
(1)分析表如下表:
SDTH
江南大学网络教育第三阶段练习题
1.四元式之间的联系是通过()来实现的。
A.指示器
B.临时变量
C.符号表
D.程序变量
2.优化可生成()的目标代码。
A.运行时间较短
B.运行时间短但占用内存空间大
C.占用存储空间较小
D.运行时间短且占用存储空间小
3.在目标代码生成阶段,符号表用于()。
A.目标代码生成
B.语义检查
C.语法检查
D.地址分配
4.下列()优化方法不是针对循环优化进行的。
A.强度削弱
B.删除归纳变量
C.删除多余运算
D.代码外提
5.优化可分为___局部优化______、__循环优化_______和全局优化三种。
6.语法分析是依据语言的_____语法_____规则进行的,中间代码产生是依据语言的___语义_______规进行的。
7.什么是活动记录?
它主要由哪些内容构成?
答:
-个过程的一次执行所需信息的管理,是通过称为活动记录的连续存储块来实现的,活动记录的主要内容有:
1、临时变里域,存放目标程序临时变里的值;
2、局部数据域,存放过程本次执行时的局部数据、简单变里及数组内情向里等;
3、机器状态域,保存在调用过程前有关机器状态的信息,包括各寄存器的当前值及返回地址等;
4、存取链,为访问其它活动记录中所存放的非局部数据所提供的链地址;
5、控制链,指向主调过程的活动记录;
6、实参,存放主调过程为被调用过程所提供的实参信息;
7、返回值,为主调过程存放被调过程的返回值;
8.写出表达式A*(B/C-D)+E/F的逆波兰中间代码。
8.文法G[M]及其LR分析表如下,请给出对串dada#的分析过程。
G[M]:
1)S→VdB 2)V→e
3)V→ε 4)B→a
5)B→Bda 6)B→ε
10.试写出算术表达式a+b*c-(c*b+a-e)/(b*c+d)优化后的四元式序列。