编译原理习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、名词解释
1.正规文法
2. 编译程序
3. 文法的推导
4.子树
5. LL(1)文法
6. 文法的句子
7. LR (0)文法
8. 请写出四种参数传递的方式
二综合题
1. 请写出编译程序的五个步骤。
2. 给定文法G :(0)S →aAcBe (1)A →b
(2)A →Ab (3)B →d
若有句型 aAbcde ,试问b 是它的直接短语吗?它的短语是什么?句柄是什么?
3. 设有文法:S->aSbS|bSaS|ε
通过为句子abab 建立两个最左推导来说明该文法是二义文法。
4. 写出下列语言的上下文无关文法:{}0,|)(≥=m n G L c b a m n n
5. 写出下列语言的上下文无关文法:L(G)={a n b n c m d m
, n, m ≥0}。
6. 令文法G :S → aS
S →a | b
给出句子aaaab 的最左推导。
7. 证明下面的文法是有二义性的。
E →-EE
E →-E
E →a|b|c
8. 文法G 为: E→E+T|T
T→T*F|F
F→(E)|i
(1)画出句型(E+F)*i 的语法树;
(2)给出句型(E+F)*i 短语,简单(直接)短语,句柄。
9. 设字母表∑={a,b},给出∑上的正则式R=(a | ba )*
(1)构造NFA M ,使得L (M )=L (R )。
(2)将NFA M 确定化、最小化,得到minDFA M 。
(3)求右线形文法G ,使得L (G )=L (M ) 10. 设字母表∑={0,1},给出∑上的正则式R=0(0 | 1)*1
(1)构造NFA M ,使得L (M )=L (R )。
(2)将NFA M 确定化,最小化,得到minDFA M 。
11. 设字母表∑={0,1},给出∑上的正则式R=(a|b)*a (a|b)
(1)构造NFA M ,使得L (M )=L (R )。
(2)将NFA M确定化,得到DFA M。
12. 文法G:S →aABe
A → b | Abc
B → d
1)改写G为等价的LL(1)文法(消除左递归)。
2)求每个非终结符的FIRST集合和FOLLOW集合
3)构造预测分析表,即LL(1)分析表。
4)分析句子abbcde#的识别过程(25分)
13. 设文法G的产生式为:
S→aD
D→STe|ε
T→bH|H
H→d|ε
(1)求每个非终结符的First和follow集合;
(2)构造文法的LL(1)分析表;
(3)判定文法是否为LL(1)文法。
14. 对文法G[S]:
S→a| (T) |∧
T→T,S|S
(1) 消除文法左递归。
(2) 经改写后的文法是否是LL(1)的?给出它的预测分析表。
(3) 给出输入串(a,(a,a)#的分析过程,并说明该串是否为G的句子。
15.对文法G[S]:
S→a|(T)|∧
T→T,S|S
(1)计算该文法的Firstvt集合和Lastvt集合;
(2)计算该文法的优先关系。该文法是一个算符优先文法吗?
(3)计算它的优先函数。
(4)给出输入串(a,(a,a))#的算符优先分析过程。
16. 给定文法G:(0)A→A∨B|B
(1)B→B∧C|C
(2)C→┐D|D
(3)D→(A)|i
(1)请问该文法是LL(1)文法吗?若是请分析句子i∨┐i的正确性;若不是请说明原因。
17.给定文法G:(0)S→SaF|F
(1)F→FbP|P
(2)P→c|d
(1)计算该文法的Firstvt集合和Lastvt集合;
(2)计算该文法的优先关系。
(3)计算它的优先函数。
(4)给出输入串cadbc#的算符优先分析过程。
18. 已知文法G:A→aAd|aAb|ε请构造该文法的SLR分析表,并分析输入串aabd#是否为该文法的合法句子
19. 已知拓广文法G:
(0)S→A
(1)A→Ab
(2)A→bB
(3)B→a
(1)写出该文法的LR(0)项目集规范族。
(2)构造该文法的SLR(1)分析表。
20. 设文法G为:S → A
A → BA | ε
B → aB | b
1)构造文法的LR(0)项目集规范族及相应的DFA。(10分)
2)如果把每一个LR(0)项目看成一个状态,并从每一个形如B→α·Xβ的状态出发画一条标记为X的箭弧到状态B→αX·β,而且从每一个形如B→α·Aβ的状态出发画标记为ε的箭弧到所有形如A→·γ的状态。这样就得到了一个NFA。说明这个NFA与(1)中的DFA是等价的。
3) 构造它的LR(1)分析表。
4)给出输入符号串abab# 的LR(1)分析过程。
21. 考虑文法:
S →T
T →T(T)
T →ε
1)构造文法的LR(0)项目集规范族及相应的DFA。
2)如果把每一个LR(0)项目看成一个状态,并从每一个形如B→α·Xβ的状态出发画一条标记为X的箭弧到状态B →αX·β,而且从每一个形如B→α·A β的状态出发画标记为ε的箭弧到所有形如A ◊·γ的状态。这样就得到了一个NFA。说明这个NFA与(a)中的DFA是等价的。
3)构造文法的SLR分析表。
4)对于输入串(()),给出SLR分析器所作出的动作。
5) 构造它的LR(1)分析表。
22. 将下面的句子翻译成四元式。
while A 23. 将下面的句子翻译成四元式。 while C>0 do if A ∨ B then C:=C+D else C:=C*D; 24. 设数组A的说明语句是array[-4:5,-3:3],假定数组按行存放,存储器按字节编址,每6个字节为一机器字,令数组的首地址为1000,问 (1)A[I,J]和A[I+1,J+1]的地址是什么? (2)按上题对循环语句的翻译结构,翻译下列语句 for i:=-4 to 5 do for j:=-3 to 3 do A[i,j]:=0 成四元式序列。