编译原理复习题答案.doc

上传人:b****2 文档编号:1268126 上传时间:2022-10-19 格式:DOC 页数:16 大小:205KB
下载 相关 举报
编译原理复习题答案.doc_第1页
第1页 / 共16页
编译原理复习题答案.doc_第2页
第2页 / 共16页
编译原理复习题答案.doc_第3页
第3页 / 共16页
编译原理复习题答案.doc_第4页
第4页 / 共16页
编译原理复习题答案.doc_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

编译原理复习题答案.doc

《编译原理复习题答案.doc》由会员分享,可在线阅读,更多相关《编译原理复习题答案.doc(16页珍藏版)》请在冰豆网上搜索。

编译原理复习题答案.doc

二、概念题

1、设有文法:

P→P+Q|Q

Q→Q*R|R

R→(P)|i

(1)证明Q*R+Q+Q是它的一个句型。

(3分)

(2)给出Q*R+Q+Q的所有短语,直接短语和句柄。

(4分)

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

(4分)

(4)给出句子i+i*i的最左推导。

(4分)

2、设有文法:

E→E+T|TT→T*F|FF→(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分)

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

答案:

逆波兰式:

(abcd-*+)

三元式序列:

OPARG1ARG2

(1)-cd

(2)*b

(1)

(3)+a

(2)

三、词法分析题

给出下面语言的相应文法

L1={anbnambm|n,m≥0}

答案:

  S→AB|A|B|∑

 A→ aAb|ab 

B→ aBb|ab

给出下面语言的相应文法

L2={anbnci|n≥1,i≥0}

答案:

 S→ AB|B    

A→ a|aA 

B→ bBc|bc

给出下面语言的相应文法

L3={anbncm|m,n≥1,n为奇数,m为偶数}。

答案:

文法G(S):

S→AC

A→aaAbb/ab

C→ccCcc/cc

四、词法分析题

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

((0|1)*|(11)*)*

(要求:

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

2、构造下面正规式相应的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}

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

(要求:

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

答案:

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

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

②状态转换矩阵为:

③最小化:

{0,1,2}{3,4,5}

{0,2},1,{3,4,5}

b

a

a

0

1

b

3

b

a

④所以此等价的DFA为:

开始状态为0,终态集为{3},状态集为{0,1,3},

输入字母表是{a,b}状态转换图如上。

4、构造与正规式b(a|b)*ba等价的DFA

五、语法分析题

1、对下面的文法G:

Expr→-Expr

Expr→(Expr)|VarExprTail

ExprTail→-Expr|ε

Var→idVarTail

VarTail→(Expr)|ε

(1)构造LL

(1)分析表。

(12分)

答案:

(1)FIRST(Expr)={_,(,id}FIRST(ExprTail)={_,ε}FIRST(Var)={id}FIRST(VarTail)={(,ε}

FOLLOW(Expr)={#,)}FOLLOW(ExprTail)={#,)}

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

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

(8分)

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

0 #Expr id__id((id))#

1 #ExprTailVar id__id((id))# Expr→VarExprTail

2 #ExprTailVarTailid id__id((id))# Var→idVarTail

3 #ExprTailVarTail __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 #ExprTailVar id((id))# Expr→VarExprTail

10 #ExprTailVarTailid id((id))# Var→idVarTail

11 #ExprTailVarTail ((id))#

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

13 #ExprTail)Expr (id))#

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

15 #ExprTail))Expr id))#

16#ExprTail)) ExprTailVar id))# Exp→VarExprTail

17 #ExprTail))

ExprTailVarTailid id))# Var→idVarTail

18 #ExprTail))

ExprTailVarTail ))#

19 #ExprTail))

ExprTail ))# VarTail→ε

20 #ExprTail)) ))# ExprTail→ε

21 #ExprTail) )#

22 #ExprTail # ExprTail→ε

23 # # 分析成功

2、对下面的文法G:

E→TE’

E’→+E|ε

T→FT’

T’→T|ε

F→PF’

F’→*F’|ε

P→(E)|a|b|∧

(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,^,+,),#}

(2)证明这个文法是LL

(1)的。

(6分)

答案:

考虑下列产生式:

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)文法.

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

(6分)

3、已知文法G[S]为:

S->a|(T)

T->T,S|S

①消除文法G[S]中的左递归,得文法G´[S]。

②文法G´[S]是否为LL

(1)的?

若是,给出它的预测分析表。

4、对下面的文法G:

S®SÚaT|aT|ÚaT

T®ÙaT|Ùa

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

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

(3)构造该文法的LL

(1)分析表,并判断该文法是否是LL

(1)的。

答案:

5、文法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

0

r3

s3

1

2

1

acc

2

s4

3

r2

4

r6

S5

r6

6

5

r4

r4

6

s7

r1

7

S8

8

r5

r5

答案:

步骤 状态 符号 输入串

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

16

六、语法分析题

考虑文法:

S→AS|bA→SA|a

(1)列出这个文法的所有LR(0)项目。

(5分)

答案

0. 1. 2. 3.

4. 5. 6. 7.

8. 9. 10. 11.

(2)给出识别文法所有活前缀的DFA。

(5分)

(3)求所有非终结符的FOLLOW集。

(5分)

(4)文法是SLR文法吗?

若是,构造出它的SLR分析表,否则说明理由。

(5分)

不是SLR文法

状态3,6,7有移进归约冲突

状态3:

FOLLOW(S’)={#}不包含a,b

状态6:

FOLLOW(S)={#,a,b}包含a,b,;移进归约冲突无法消解

状态7:

FOLLOW(A)={a,b}包含a,b;移进归约冲突消解

所以不是SLR文法。

七、证明题

1、证明下面文法是LL

(1)的但不是SLR

(1)的。

S→AaAb|BbBa

A→ε

B→ε

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

  其次:

对于S→AaAb|BbBaFIRST(AaAb)={a}FIRST(BbBa)={b}

  FIRST(AaAb)∩FIRST(BbBa)=Φ

  所以该文法是LL

(1)文法。

  

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

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

  I0={S’→.SS→.AaAbS→.BbBaA→.B→.}

  I1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1