《编译原理》样卷及答案Word格式文档下载.docx
《《编译原理》样卷及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《编译原理》样卷及答案Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
![《编译原理》样卷及答案Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/26/4407e0a4-1373-4588-8a22-1dcdd7e88fb0/4407e0a4-1373-4588-8a22-1dcdd7e88fb01.gif)
B→1
1型文法/上下文有关文法
5、按Thmopson算法构造与正则表达式(1*|0)*等价的NFA。
略
6、设计一个状态转换图,其描述的语言规则为:
如果以a开头,则其后是由a、b组成的任意符号串;
如果以b开头,则其后是至少包含一个a的由a、b组成的任意符号串。
二、(本题10分)对于文法G[E]:
E→ET+|T
T→TF*|F
F→F^|a
(1)给出句子FF^^*的最左推导和语法树;
(2)给出句子FF^^*的短语、直接短语和句柄。
(1)2分:
句子FF^^*的最左推导2分:
句子FF^^*的语法树
E=>
T=>
TF*=>
FF*=>
FF^*=>
FF^^*
(2)3分:
句子FF^^*的短语
FF^^*、FF^^*、F、F^、F^^
2分:
句子FF^^*的直接短语
F、F^
1分:
句子FF^^*的句柄
F
三、(本题15分)构造与下列NFA等价的最小化DFA。
(1)10分:
构造与NFA等价的DFA
(2)5分:
对DFA最小化
首先,将所有的状态集合分成子集:
k1={0,1,2,4}k2={3,5}
四、(本题15分)对下列文法G[S]:
s→eT|RT
T→DR|ε
R→dR|ε
D→a|bd
(1)写出文法G[S]每个非终结符的FIRST集和FOLLOW集;
(2)判断文法G[S]是否LL
(1)文法(注:
必须给出判断过程,否则不得分);
(3)写出文法文法G[S]的预测分析表。
(1)8分:
每个First集合和FOLLOW集合各1分
FIRST集
FOLLOW集
s→eT
|RT
{e}
{a,b,d,ε}
#
T→DR
{a,b}
{ε}
R→dR
{d}
a,b,#
D→a
|bd
{a}
{b}
D,#
(2)2分:
判断文法G[S]是LL
(1)文法。
对于产生式s→eT|RT:
FIRST(eT)∩FIRST(RT)-ε={e}∩{a,b,d}=Φ
FIRST(eT)∩FOLLOW(S)={e}∩{#}=Φ
对于产生式T→DR|ε:
FIRST(DR)∩FOLLOW(T)={a,b}∩{#}=Φ`
对于产生式R→dR|ε:
FIRST(dR)∩FOLLOW(R)={d}∩{a,b,#}=Φ
对于产生式D→a|bd:
FIRST(a)∩FIRST(bd)={a}∩{b}=Φ
所以,对于文法G[S]是LL
(1)文法。
(3)5分:
文法G[S]的预测分析表。
五、(本题18分)已知文法G[S]:
S→rD
D→D,i|i
(1)画出识别文法活前缀的完整DFA,并判断该文法是否LR(0)文法(必须说明判断依据);
(2)构造该文法的SLR
(1)分析表,并判断该文法是否SLR
(1)文法(必须说明判断依据)。
(1)8分:
画出识别文法活前缀的完整DFA
文法拓展并对产生式编号:
(0)S'
→S
(1)S→rD
(2)D→D,i(3)D→i
判断该文法不是LR(0)文法
对于状态3,项目集中存在“移进-规约”冲突,所以该文法不是LR(0)文法。
(3)6分:
构造该文法的SLR
(1)分析表
状态
ACTION
GOTO
r
,
i
S
D
S2
1
acc
2
S4
3
S5
r1
4
r3
5
S6
6
r2
(4)2分:
判断文法是SLR
(1)分析表
回答1:
因为SLR
(1)分析表不存在冲突,所以文法是SLR
(1)分析表。
回答2:
对于状态3,FOLLOW(S)∩{,}=(#)∩{,}=Ф,“移进-规约”冲突可以用
SLR
(1)方法解决,所以文法是SLR
(1)分析表。
六、(本题8分)文法G[E]的LR分析表如下图所示:
(1)E→E+T
(2)E→T(3)T→T*F
(4)T→F(5)F→(E)(6)F→i
写出对输入串i*i+i的LR分析过程(即状态,符号,输入串的变化过程)。
解答:
七、(本题10分)写出下列语句的四元式序列
if(y>
z&
&
(c<
d||m>
n))
while(a>
b)
x=x+y*a;
else
m=m+n;
1(j>
y,z,3)
2(j,-,-,13)
3(j<
c,d,7)
4(j,-,-,5)
5(j>
m,n,7)
6(j,-,-,13)
7(j>
a,b,9)
8(j,-,-,13/16)
9(*,y,a,t0)
10(+,x,t0,t1)
11(=,t1,-,x)
12(j,-,-,7)
13(j,-,-,16)
14(-,x,1,t5)
15(=,t5,-,x)
16..........
《编译原理》模拟试题一
一、是非题(请在括号内,正确的划√,错误的划×
)(每个2分,共20分)
1.计算机高级语言翻译成低级语言只有解释一种方式。
(×
)
2.在编译中进行语法检查的目的是为了发现程序中所有错误。
3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
(√)
4.正则文法其产生式为A->
a,A->
Bb,
A,B∈VN,a、b∈VT。
(×
5.每个文法都能改写为LL
(1)文法。
(√)
6.递归下降法允许任一非终极符是直接左递归的。
7.算符优先关系表不一定存在对应的优先函数。
8.自底而上语法分析方法的主要问题是候选式的选择。
9.LR法是自顶向下语法分析方法。
10.简单优先文法允许任意两个产生式具有相同右部。
二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)
1.一个编译程序中,不仅包含词法分析,_____,中间代码生成,代码优化,目标代码生成等五个部分。
A.()语法分析 B.()文法分析 C.()语言分析 D.()解释分析
2.词法分析器用于识别_____。
A.()字符串
B.()语句
C.()单词 D.()标识符
3.语法分析器则可以发现源程序中的_____。
A.()语义错误
B.()语法和语义错误
C.()错误并校正
D.()语法错误
4.下面关于解释程序的描述正确的是_____。
(1)解释程序的特点是处理程序时不产生目标代码
(2)解释程序适用于COBOL和FORTRAN语言
(3)解释程序是为打开编译程序技术的僵局而开发的
A.()
(1)
(2) B.()
(1) C.()
(1)
(2)(3)
D.()
(2)(3)
5.解释程序处理语言时,大多数采用的是_____方法。
A.()源程序命令被逐个直接解释执行
B.()先将源程序转化为中间代码,再解释执行
C.()先将源程序解释转化为目标程序,再执行
D.()以上方法都可以
6.编译过程中,语法分析器的任务就是_____。
(1)分析单词是怎样构成的
(2)
分析单词串是如何构成语句和说明的
(3)分析语句和说明是如何构成程序的
(4)分析程序的结构
A.()
(2)(3) B.()
(2)(3)(4)
C.()
(1)
(2)(3) D.()
(1)
(2)(3)(4)
7.编译程序是一种_____。
A.()汇编程序 B.()翻译程序
C.()解释程序
D.()目标程序
8.文法G所描述的语言是_____的集合。
A.()文法G的字母表V中所有符号组成的符号串
B.()文法G的字母表V的闭包V*中的所有符号串
C.()由文法的开始符号推出的所有终极符串
D.()由文法的开始符号推出的所有符号串
9.文法分为四种类型,即0型、1型、2型、3型。
其中3型文法是_____。
A.()短语文法
B.()正则文法
C.()上下文有关文法 D.()上下文无关文法
10.一个上下文无关文法G包括四个组成部分,它们是:
一组非终结符号,一组终结符号,一个开始符号,以及一组_____。
A.()句子 B.()句型
C.()单词 D.()产生式
三、填空题(每空1分,共10分)
1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有__表格处理___和___出错处理__。
2.若源程序是用高级语言编写的,___目标程序__是机器语言程序或汇编程序,则其翻译程序称为___编译程序__。
3.编译方式与解释方式的根本区别在于__是否生成目标代码___。
4.对编译程序而言,输入数据是___源程序__,输出结果是__目标程序___。
5.产生式是用于定义___语法成分__的一种书写规则。
6.语法分析最常用的两类方法是___自上而下__和___自下而上__分析法。
四、简答题(20分)
1.什么是句子?
什么是语言?
答:
(1)设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈VT*),则称x是文法的一个句子。
(2)设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:
L(G)={x│Sx,x∈VT*}。
参考答案:
(每个2分,共4分)
2.写一文法,使其语言是偶正整数的集合,要求:
(1)允许0打头;