编译原理习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

成四元式序列。

相关文档
最新文档