编译原理复习题--有答案版

1、给出下面语言的相应文法。L1={a n b n c i|n≥1,i≥0}

答案: S→ AB|B

A→ a|aA

B→ bBc|bc

2.给出下面语言的相应文法

L1={a n b n c m d m| m,n≥1,n为奇数,m为偶数}。

答案:文法G(S):S→AC

A→aaAbb/ab

C→ccCcc/cc

3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。

(要求:先将正规式转化为NFA,再将NFA确定化,最小化)

(一)相应的正规式为(a|b)*ab(a|b)*

(二)①与此正规式对应的NFA为

答案;在自己写的纸上

4、对下面的文法G:

E→TE’ E’→+E|ε T→FT’ T’→T|ε

F→PF’ F’→*F’|ε P→(E)|a|b|∧

(1)证明这个文法是LL(1)的。

考虑下列产生式:

E’->E|ε

T’->T|ε

F’->*F’ |ε

P->(E) |∧a|b

FIRST(+E)∩FIRST(ε)={+}∩{ε}=φ

FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ

FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ

FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ

FIRST(*F')∩FIRST(ε)={*}∩{ε}=φ

FIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ

FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ

所以,该文法式LL(1)文法.

计算这个文法的每个非终结符的FIRST和FOLLOW。(8分)

答案:FIRST(E)={(,a,b,^}

FIRST(E')={+,ε}

FIRST(T)={(,a,b,^}

FIRST(T')={(,a,b,^,ε}

FIRST(F)={(,a,b,^}

FIRST(F')={*,ε}

FIRST(P)={(,a,b,^}

FOLLOW(E)={#,)}

FOLLOW(E')={#,)}

FOLLOW(T)={+,),#}

FOLLOW(T')={+,),#}

FOLLOW(F)={(,a,b,^,+,),#}

FOLLOW(F')={(,a,b,^,+,),#}

FOLLOW(P)={*,(,a,b,^,+,),#}

(3)构造它的预测分析表。(6分)

答案;在手机上

写出表达式a+b*(c-d)对应的逆波兰式和三元式序列。

答案:逆波兰式:(abcd-*+)

三元式序列:

OP ARG1 ARG2

(1) - c d

(2) * b (1)

(3) + a (2)

给出下面语言的相应文法

L1={a n b n a m b m|n,m≥0}

给出下面语言的相应文法

答案: S→AB|A|B|∑

A→ aAb|ab

B→ aBb|ab

L2={a n b n c i|n≥1,i≥0}

给出下面语言的相应文法

答案: S→ AB|B

A→ a|aA

B→ bBc|bc

17、对下面的文法G:

S → S ∨ a T | a T | ∨ a T

T →∧ a T | ∧ a

(1) 消除该文法的左递归和提取左公因子;

(2) 构造各非终结符的FIRST和FOLLOW集合;

(3) 构造该文法的LL(1)分析表,并判断该文法是否是LL(1)的。

编译原理复习题--有答案版

18、文法G(S)及其LR分析表如下,请给出串baba#的分析过程。

(1) S → DbB(2) D → d(3) D → ε

(4) B → a(5) B → Bba(6) B → ε

LR分析表

编译原理复习题--有答案版

答案:步骤状态符号输入串

0 0 # baba#

1 02 #D baba#

2 024 #Db aba#

3 0245 #Dba ba#

4 0246 #DbB ba#

5 02467 #DbBb a#

6 024678 #DbBba #

7 0246 #DbB #

8 01 #S # acc

七、证明题

1、证明下面文法是LL(1)的但不是SLR(1)的。

S→AaAb|BbBa

A→ε

B→ε

首先该文法无左递归存在,没有公共左因子。

其次:对于S→AaAb|BbBa FIRST(AaAb)={a} FIRST(BbBa)={b} FIRST(AaAb)∩FIRST(BbBa)=Φ

所以该文法是LL(1)文法。

(2)证明该文法不是SLR的。

文法的LR(0)项目集规范族为:

I0={S’→.S S→.AaAb S→.BbBa A→. B→.}

I1={ S’→ S. }

I2={ S→A.aAb }

I3={ S→B.bBa }

I4={ S→Aa.Ab A→. }

I5={ S→Bb.Ba B→. }

I6={ S→AaA.b }

I7={ S→BbB.a }

I8={ S→AaAb. }

I9={ S→BbBa. }

考察I0:

FOLLOW(A)={a,b} FOLLOW(B)={a,b} FOLLOW(A)∩FOLLOW(B)= {a,b} 产生规约-规约冲突。

所以该文法不是SLR(1)文法。

2、证明下面文法是SLR(1)但不是LR(0)的。

S→A

A→Ab|bBa

B→aAc|a|aAb

解:文法G[S]:

0:S→A

1:A→Ab

2:A→bBa

3:B→aAc

4:B→a

5:B→aAb

编译原理复习题--有答案版

编译原理复习题--有答案版

编译原理复习题--有答案版

状态5存在“归约-移进”冲突,状态9存在“归约-归约”冲突,因此该文法不是LR(0)文法。

状态5: FOLLOW(B)={a},因此,FOLLOW(B)∩{b}=Φ

状态9: FOLLOW(B)={a},FOLLOW(A)={#,b,c},因此FOLLOW(B)∩FOLLOW(A)=Φ

状态5和状态9的冲突均可用SLR(1)方法解决,构造SLR(1)分析表

编译原理复习题--有答案版

编译原理复习题--有答案版

编译原理复习题--有答案版

该SLR(1)分析表无重定义,因此该文法是SLR(1)文法,不是LR(0)文法。

八、语义分析题

1、将语句

if ((A<0) (B>0)) then while (C>0) do C:=C-D

翻译成四元式

答案:100 (j<, A, 0, 104)

101 (j, -, -, 102)

102 (j>, B, 0, 104)

103 (j, -, -, 109)

104 (j>, C, 0, 106)

105 (j, -, -, 109)

106 (-, C, D, T1)

107 (:=, T1, -, C)

108 (j, -, -, 104)

109

2、写出下面语句经语法制导翻译后所生成的四元式代码序列。

if xc do c:=c+1 else x:=x+5

答案:假设初始为100,则四元式代码序列为

100 if x

101 goto 107

102 if e>c goto 104

103 goto 109

104 M:=C+1

105 C:=M

106 goto 102

107 N:=X+5

108 X:=N

109

7、设有文法:E→E+T|T

T→T*F|F

F→(E)|i

(1)证明E+T*F是它的一个句型。(3分)

编译原理复习题--有答案版

(2)给出E+T*F的所有短语,直接短语和句柄。(4分) 短语: E+T*F, T*F,

直接短语: T*F

句柄: T*F

(3)给出句子i+i*i的最右推导。(4分)

没有答案

10、11、构造下面正规式相应的DFA

1(0|1)*101

答案: I I0 I1

{X} Ф {A,B,C}

{A,B,C} { B,C} { B,C,D}

{B,C} { B,C} { B,C,D}

{B,C,D} { B,C,E} { B,C,D}

{B,C,E} { B,C} {B,C,D,y}

{B,C,D,y} {B,C,E} { B,C,D}

14、对下面的文法G:

Expr→- Expr

Expr→(Expr)|Var ExprTail

ExprTail→- Expr|ε

Var→id VarTail

VarTail→(Expr) |ε

(1)构造LL(1)分析表。(12分)

(2)给出对句子id—id((id))的分析过程。(8分)

答案:(1)FIRST(Expr)={_ , ( , id } FIRST(ExprTail)={_ , ε }

FIRST(Var)={id} FIRST(VarTail)={ ( , ε}

FOLLOW(Expr)={# , ) } FOLLOW(ExprTail) ={# , ) } FOLLOW(Var) ={_ , # , ) } FOLLOW(VarTail) ={_ , # , ) }

编译原理复习题--有答案版

(2)给出对句子id—id((id))的分析过程。(

步骤符号栈输入串所用产生式

0 #Expr id_ _id((id))#

1 # ExprTail Var id_ _id((id))# Expr→Var ExprTail

2 # ExprTail VarTail id id_ _id((id))# Var→id VarTail

3 # ExprTail VarTail _ _id((id))#

4 # ExprTail _ _id((id))# VarTail→ε

5 # Expr_ _ _id((id))# ExprTail→_ Expr

6 # Expr _id((id))#

7 # Expr_ _id((id))# Expr→_Expr

8 # Expr id((id))#

9 # ExprTail Var id((id))# Expr→Var ExprTail

10 # ExprTail VarTail id id((id))# Var→id VarTail

11 # ExprTail VarTail ((id))#

12 # ExprTail )Expr( ((id))# VarTail→(Expr)

13 # ExprTail )Expr (id))#

14 # ExprTail ) )Expr( (id))# Expr→(Expr)

15 # ExprTail ) )Expr id))#

16 # ExprTail ) ) ExprTail Var id))# Exp→VarExprTai

17 # ExprTail ) ) ExprTail VarTail id id))# Var→id VarTail

18 # ExprTail ) ) ExprTail VarTail ))#

19 # ExprTail ) ) ExprTail ))# VarTail→ε

20 # ExprTail ) ) ))# ExprTail→ε

21 # ExprTail ) )#

22 # ExprTail # ExprTail→ε

23 # # 分析成功

推荐阅读

编译原理复习题--有答案版
编译原理复习题--有答案版_IT认证_资格考试/认证_教育专区。1、 给出下面语...
编译原理复习题有答案版
编译原理复习题有答案版_计算机软件及应用_IT/计算机_专业资料。1、 给出下面...
编译原理试题及答案(期末复习版)
<编译原理>历年试题及答案一. (每项选择 2 分,共 20 分)选...
完整版编译原理复习题及答案
1. 编译原理复习题及答案 2. 选择题 3. 一个正规语言只能对应 (B ) ...
(完整版)编译原理复习题及答案
编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B ) A 一...
编译原理复习题及答案
编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B ) A 一...
编译原理试题及答案(期末复习版)
. <编译原理>历年试题及答案 一. (每项选择 2 分,共 20 ...
编译原理复习题及答案
编译原理复习题及答案一、选择题 1. 一个正规语言只能对应( B A 一个正规文...
编译原理复习题及答案
.. 编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B ) ...
编译原理复习题附标准答案
编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B ) A 一...
编译原理复习题及答案
编译原理复习题及答案 编译原理复习题及答案 复习 一、选择题 选择题 1. 一个...
编译原理试题及答案(期末复习版).pdf
编译原理试题及答案(期末复习版).pdf_IT认证_资格考试/认证_教育专区。. <编译原理>历年试题及答案 一. (每项选择 2 分,共 20 分)选择题 1.将 编译程序......
最新编译原理复习题及答案
精品文档编译原理复习题及答案 一、 选择题 1. 一个正规语言只能对应( B )...
编译原理复习题及答案
编译原理复习题及答案一、选择题 1. 一个正规语言只能对应( B ) A 一个正...
编译原理复习题答案
编译原理复习题答案_IT认证_资格考试/认证_教育专区。二、概念题 1、设有文法...
编译原理期末试题(8套含答案+大题集)
编译原理期末试题(8套含答案+大题集)_工学_高等教育_教育专区。编译原理 期末复习 八套试卷 含答案编译原理》期末试题(五)一、单项选择题(共 10 小题,每......
编译原理试题及答案(期末复习版).pdf资料
编译原理试题及答案(期末复习版).pdf资料_IT认证_资格考试/认证_教育专区。<编译原理 >历年试题及答案 一. (每项选择 2 分,共 20 分)选择题 1.将编译程序......
编译原理期末复习题(含答案)
编译原理期末复习题(含答案)_工学_高等教育_教育专区。河北工业大学 第八节 习...
编译原理复习题及答案
编译原理复习题及答案 编译原理复习题及答案 一、 选择题 1. 一个正规语言只能...