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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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分析表

ACTION GOTO

b D a#S B D

0r3s312

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

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→ }

I3={ S→ }

I4={ S→ A→. }

I5={ S→ B→. }

I6={ S→ }

I7={ S→ }

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

相关文档
最新文档