精文优选编译原理复习题答案doc.docx

上传人:b****2 文档编号:11782426 上传时间:2023-06-02 格式:DOCX 页数:15 大小:97.17KB
下载 相关 举报
精文优选编译原理复习题答案doc.docx_第1页
第1页 / 共15页
精文优选编译原理复习题答案doc.docx_第2页
第2页 / 共15页
精文优选编译原理复习题答案doc.docx_第3页
第3页 / 共15页
精文优选编译原理复习题答案doc.docx_第4页
第4页 / 共15页
精文优选编译原理复习题答案doc.docx_第5页
第5页 / 共15页
精文优选编译原理复习题答案doc.docx_第6页
第6页 / 共15页
精文优选编译原理复习题答案doc.docx_第7页
第7页 / 共15页
精文优选编译原理复习题答案doc.docx_第8页
第8页 / 共15页
精文优选编译原理复习题答案doc.docx_第9页
第9页 / 共15页
精文优选编译原理复习题答案doc.docx_第10页
第10页 / 共15页
精文优选编译原理复习题答案doc.docx_第11页
第11页 / 共15页
精文优选编译原理复习题答案doc.docx_第12页
第12页 / 共15页
精文优选编译原理复习题答案doc.docx_第13页
第13页 / 共15页
精文优选编译原理复习题答案doc.docx_第14页
第14页 / 共15页
精文优选编译原理复习题答案doc.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

精文优选编译原理复习题答案doc.docx

《精文优选编译原理复习题答案doc.docx》由会员分享,可在线阅读,更多相关《精文优选编译原理复习题答案doc.docx(15页珍藏版)》请在冰点文库上搜索。

精文优选编译原理复习题答案doc.docx

精文优选编译原理复习题答案doc

二、概念题

1、设有文法:

P→P+Q|Q

Q→QGR|R

R→(P)|i

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

(3分)

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

(4分)

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

(4分)

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

(4分)

2、设有文法:

E→E+T|TT→TGF|FF→(E)|i

(1)证明E+TGF是它的一个句型。

(3分)

答案:

(2)给出E+TGF的所有短语,直接短语和句柄。

(4分)

短语:

E+TGF,TGF,

直接短语:

TGF

句柄:

TGF

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

(4分)

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

答案:

逆波兰式:

(abcd-G+)

三元式序列:

OPARG1ARG2

(1)-cd

(2)Gb

(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)G|(11)G)G

(要求:

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

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

1(0|1)G101

答案:

II0I1

{G}Ф{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,P}

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

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

(要求:

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

答案:

(一)相应的正规式为(a|b)Gab(a|b)G

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

②状态转换矩阵为:

③最小化:

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

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

④所以此等价的DFA为:

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

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

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

五、语法分析题

1、对下面的文法G:

EGpr→-EGpr

EGpr→(EGpr)|VarEGprTail

EGprTail→-EGpr|ε

Var→idVarTail

VarTail→(EGpr)|ε

(1)构造LL

(1)分析表。

(12分)

答案:

(1)FIRST(EGpr)={_,(,id}FIRST(EGprTail)={_,ε}FIRST(Var)={id}FIRST(VarTail)={(,ε}

FOLLOW(EGpr)={#,)}FOLLOW(EGprTail)={#,)}

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

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

(8分)

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

0#EGprid__id((id))#

1#EGprTailVarid__id((id))#EGpr→VarEGprTail

2#EGprTailVarTailidid__id((id))#Var→idVarTail

3#EGprTailVarTail__id((id))#

4#EGprTail__id((id))#VarTail→ε

5#EGpr___id((id))#EGprTail→_EGpr

6#EGpr_id((id))#

7#EGpr__id((id))#EGpr→_EGpr

8#EGprid((id))#

9#EGprTailVarid((id))#EGpr→VarEGprTail

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

11#EGprTailVarTail((id))#

12#EGprTail)EGpr(((id))#VarTail→(EGpr)

13#EGprTail)EGpr(id))#

14#EGprTail))EGpr((id))#EGpr→(EGpr)

15#EGprTail))EGprid))#

16#EGprTail))EGprTailVarid))#EGp→VarEGprTail

17#EGprTail))

EGprTailVarTailidid))#Var→idVarTail

18#EGprTail))

EGprTailVarTail))#

19#EGprTail))

EGprTail))#VarTail→ε

20#EGprTail))))#EGprTail→ε

21#EGprTail))#

22#EGprTail#EGprTail→ε

23##分析成功

2、对下面的文法G:

E→TE’

E’→+E|ε

T→FT’

T’→T|ε

F→PF’

F’→GF’|ε

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')={G,ε}

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

FOLLOW(E)={#,)}

FOLLOW(E')={#,)}

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

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

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

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

FOLLOW(P)={G,(,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(GF')∩FIRST(ε)={G}∩{ε}=φ

FIRST(GF')∩FOLLOW(F')={G}∩{(,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:

SSaT|aT|aT

TaT|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

答案:

步骤状态符号输入串

00#baba#

102#Dbaba#

2024#Dbaba#

30245#Dbaba#

40246#DbBba#

502467#DbBba#

6024678#DbBba#

70246#DbB#

801#S#acc

六、语法分析题

考虑文法:

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={S’→S.}

  I2={S→A.aAb}

  I3={S→B.bBa}

  I4={S→Aa.AbA→.}

  I5={S→Bb.BaB→.}

  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

构造LR(0)项目集规范族:

状态

项目集

转换函数

0

S→·A

A→·Ab

A→·bBa

GO[0,A]=1

GO[0,A]=1

GO[0,b]=2

1

S→A·

A→A·b

ACCEPT

GO[1,b]=3

2

A→b·Ba

B→·aAc

B→·a

B→·aAb

GO[2,B]=4

GO[2,a]=5

GO[2,a]=5

GO[2,a]=5

3

A→Ab·

R1

4

A→bB·a

GO[4,a]=6

5

B→a·Ac

B→a·

B→a·Ab

A→·Ab

A→·bBa

GO[5,A]=7

R4

GO[5,A]=7

GO[5,A]=7

GO[5,b]=2

6

A→bBa·

R2

7

B→aA·c

B→aA·b

A→A·b

GO[7,c]=8

GO[7,b]=9

GO[7,b]=9

8

B→aAc·

R3

9

B→aAb·

A→Ab·

R5

R1

状态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)分析表如下:

状态

ACTION

GOTO

a

b

c

#

A

B

0

S2

1

1

S3

ACCEPT

2

S5

4

3

R1

R1

R1

4

S6

5

R4

S2

7

6

R2

R2

R2

7

S9

S8

8

R3

9

R5

R1

R1

R1

该SLR

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

(1)文法,不是LR(0)文法。

八、语义分析题

1、将语句

if((A<0)(B>0))thenwhile(C>0)doC:

=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、写出下面语句经语法制导翻译后所生成的四元式代码序列。

ifGcdoc:

=c+1elseG:

=G+5

答案:

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

100

if

G

goto

102

101

goto

107

102

if

e>c

goto

104

103

goto

109

104

M:

=C+1

105

C:

=M

106

goto

102

107

N:

=G+5

108

G:

=N

109

 

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2