编译原理第二版第五章答案Word下载.docx

上传人:b****2 文档编号:14362066 上传时间:2022-10-22 格式:DOCX 页数:13 大小:20.83KB
下载 相关 举报
编译原理第二版第五章答案Word下载.docx_第1页
第1页 / 共13页
编译原理第二版第五章答案Word下载.docx_第2页
第2页 / 共13页
编译原理第二版第五章答案Word下载.docx_第3页
第3页 / 共13页
编译原理第二版第五章答案Word下载.docx_第4页
第4页 / 共13页
编译原理第二版第五章答案Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

编译原理第二版第五章答案Word下载.docx

《编译原理第二版第五章答案Word下载.docx》由会员分享,可在线阅读,更多相关《编译原理第二版第五章答案Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

编译原理第二版第五章答案Word下载.docx

(T) 

(S,S) 

((T),S) 

((T,S),S) 

((T,S,S),S)

((S,S,S),S) 

(((T),S,S),S) 

(((T,S),S,S),S) 

(((S,S),S,S),S)

(((a,S),S,S),S) 

(((a,a),S,S),S) 

(((a,a),^,S),S) 

(((a,a),^,(T)),S)

(((a,a),^,(S)),S) 

(((a,a),^,(a)),S) 

(((a,a),^,(a)),a) 

(3)改写文法为:

0) 

S->

a

1) 

^

2) 

(T)

3) 

T->

SN

4) 

N->

SN

5) 

ε

FIRST

FOLLOW

S

 

T

N

 

对左部为N2的产生式可知:

FIRST(->

SN2)={,}

ε)={ε}

FOLLOW(N2)={)} 

{,}∩{)}=Ø

所以文法是LL

(1)的。

预测分析表

#

->

也可由预测分析表中无多重入口判定文法是LL

(1)的。

(4)对输入串(a,a)#的分析过程为:

步骤

状态栈

当前字符

剩余输入串

操作

1

#S

a,a)#

2

#)T(

匹配

3

#)T

A

a)#

SN2

4

#)N2S

5

#)N2a

6

#)N2

a)#

N2->

SN2

7

#)N2S,

8

)#

9

10

11

#)

12

可见输入串(a,a)#是文法的句子。

 

2.对下面的文法G:

E→TE′

E′→+E|ε

T→FT′

T′→T|ε

F→PF′

F′→*F′|ε

P→(E)|a|b|^

(1) 

计算这个文法的每个非终结符的FIRST集和FOLLOW集。

(2) 

证明这个文法是LL

(1)的。

(3) 

构造它的预测分析表。

(4)构造它的预测下降分析程序

【解】

(1)由题意分析得可推导出ε的非终结符表为:

各非终结符的FIRST集为:

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

FIRST(E′)={+}∪{ε}={+,ε}

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

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

FIRST(F)=FIRST(P)={(,a,b,^}FIRST(F′)={*}∪{ε}={*,ε}

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

∴最终求得各非终结符的FIRST集为:

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

FIRST(E′)={+,ε} 

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

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

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

FIRST(F′)={*,ε}

各非终结符的FOLLOW集为:

FOLLOW(E)={#}∪FOLLOW(E′)∪{)}

FOLLOW(E′)=FOLLOW(E)

FOLLOW(T)=FOLLOW(T′)∪(FIRST(E′)-{ε})∪FOLLOW(E)

FOLLOW(T′)=FOLLOW(T)

FOLLOW(F)=(FIRST(T′)-{ε})∪FOLLOW(T)

FOLLOW(F′)=FOLLOW(F)∪FOLLOW(F′)

FOLLOW(P)=(FIRST(F′)-{ε})∪FOLLOW(F)

∴最终求得各非终结符的FOLLOW集为:

FOLLOW(E)={#,)} 

FOLLOW(E′)={#,)} 

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

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

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

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

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

(2)各产生式的SELECT集为:

SELECT(E→TE′)=FIRST(TE′)=FIRST(T)={(,a,b,^}

SELECT(E′→+E)=FIRST(+E)={+}

SELECT(E′→ε)=(FIRST(ε)-{ε})∪FOLLOW(E′)=FOLLOW(E′)={#,)}

SELECT(T→FT′)=FIRST(FT′)=FIRST(F)={(,a,b,^}

SELECT(T′→T)=FIRST(T)={(,a,b,^}

SELECT(T′→ε)=(FIRST(ε)-{ε})∪FOLLOW(T′)=FOLLOW(T′)={#,+,)}

SELECT(F→PF′)=FIRST(PF′)=FIRST(P)={(,a,b,^}

SELECT(F′→*F′)=FIRST(*F′)=FIRST(P)={*}

SELECT(F′→ε)=(FIRST(ε)-{ε})∪FOLLOW(F′)=FOLLOW(F′)={(,a,b,^,#,+,)}

SELECT(P→(E))=FIRST((E))={(}

SELECT(P→a)=FIRST(a)={a}

SELECT(P→b)=FIRST(b)={b}

SELECT(P→^)=FIRST(^)={^}

∴由以上结果得相同左部产生式的SELECT交集为:

SELECT(E′→+E)∩SELECT(E′→ε)={+}∩{#,)}

SELECT(T′→T)∩SELECT(T′→ε)={(,a,b,^)∩{#,+,)}=Φ

SELECT(F′→*F′)∩SELECT(F′→ε)={*}∩{(,a,b,^,#,+,)}=Φ

SELECT(P→(E))∩SELECT(P→a)∩SELECT(P→b)∩SELECT(P→^)={(}∩{a}∩{b}∩{^}=Φ

∴相同左部产生式的SELECT集合的交集为空。

∴这个文法是LL

(1)的。

(3)由以上算出的SELECT集可以构造该文法的预测分析表如下:

+

*

a

b

^

#

E

→TE′

E′

→+E

→ε

T

→FT′

T′

→T

F

→PF′

F′

→*F′

P

→(E)

→a

→b

→^

voidP() 

{Getchar();

if 

ch=’(’

E();

Getchar();

ifch=’)’Getchar();

}

elseif 

ch=’a’

Getchar();

ch=’b’

elseerror(),

voidF’() 

ch=’*’

F’();

else 

error();

voidF() 

{

P();

voidT’() 

T();

(4)不妨约定:

在进入一个非终结符号相应的子程序前,已读到一个单词ch:

存放当前读到的单词,Getchar()为一子程序,每调用一次,完成读取一单词的任务,Error()为出错处理程序。

4.证明下述文法不是LL

(1)文法。

C$

C->

bA|aB

A->

a|aC|bAA

B->

b|bC|aBB

你能否构造一等价的文法,使其是LL

(1)?

并给出判断过程。

【解】因为SELECT(A->

a)∩SELECT(A->

aC)≠Ф,根据LL

(1)文法的判定条件:

(1)文法不含左递归

(2)对于文法U的任意两个不同的规则有:

Select(U→α)∩Select(U→)=Φ一个文法若满足以上条件,称该文法G为LL

(1)文法。

得出该文法不是LL

(1)文法。

该文法含公共因子,消除后的文法为:

aA'

|bAA

A’->

C|ε

bB'

|aBB

B’->

【证明】因为SELECT(C->

bA)∩SELECT(C->

aB)=Φ

SELECT(A->

Aa)∩SELECT(A->

bAA)=Φ

SELECT(A’->

C)∩SELECT(A’->

ε)=(FIRST(C)-{ε})∩FOLLOW(A’)≠Ф

因此消除公共因子后得到文法也不是LL

(1)文法。

7.对于一个文法若消除了左递归,提取了左公共因子后是否一定为LL

(1)文法?

试对下面文法进行改写,并对改写后的文法进行判断。

(1)A->

baB|ε 

[1]

Abb|a 

[2]

(2)A→aABe|a 

B→Bb|d 

(3)S→Aa|b 

A→SB 

B→ab 

[3]

对于一个文法若消

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

当前位置:首页 > 幼儿教育 > 育儿理论经验

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

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