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

上传人:b****2 文档编号:3934819 上传时间:2023-05-02 格式:DOCX 页数:14 大小:20.68KB
下载 相关 举报
编译原理第二版第五章答案Word格式文档下载.docx_第1页
第1页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第2页
第2页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第3页
第3页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第4页
第4页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第5页
第5页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第6页
第6页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第7页
第7页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第8页
第8页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第9页
第9页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第10页
第10页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第11页
第11页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第12页
第12页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第13页
第13页 / 共14页
编译原理第二版第五章答案Word格式文档下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

 

改写文法为:

0>

S->

a

^

2>

T>

T->

SN

N->

SN

5>

ε

FIRST

FOLLOW

S

<

 

>

T

N

 

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

FIRST〔->

SN2〕={,}

ε〕={ε}

FOLLOW〔N2〕={>

{,}∩{>

}=Ø

所以文法是LL<

的。

预测分析表

#

->

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

对输入串〔a,a〕#的分析过程为:

步骤

状态栈

当前字符

剩余输入串

操作

1

#S

2

#>

T<

匹配

3

A

SN2

4

N2S

5

N2a

6

N2

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

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

证明这个文法是LL<

构造它的预测分析表。

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

[解]<

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

各非终结符的FIRST集为:

FIRST<

=FIRST<

={<

a,b,^} 

FIRST<

E′>

={+}∪{ε}={+,ε}

F>

a,b,^}

T′>

∪{ε}={<

a,b,^,ε}

P>

a,b,^}FIRST<

F′>

={*}∪{ε}={*,ε}

a,b,^}

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

={+,ε} 

={<

a,b,^,ε} 

={*,ε}

各非终结符的FOLLOW集为:

FOLLOW<

={#}∪FOLLOW<

∪{>

}

=FOLLOW<

∪<

-{ε}>

∪FOLLOW<

=<

∪FOLLOW<

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

={#,>

FOLLOW<

={#,>

={#,+,>

}

={#,+,>

a,b,^,#,+,>

={*,<

各产生式的SELECT集为:

SELECT<

E→TE′>

=FIRST<

TE′>

E′→+E>

+E>

={+}

E′→ε>

=<

ε>

T→FT′>

FT′>

T′→T>

T′→ε>

={#,+,>

F→PF′>

PF′>

F′→*F′>

*F′>

={*}

F′→ε>

P→a>

={a}

P→b>

b>

={b}

P→^>

^>

={^}

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

∩SELECT<

={+}∩{#,>

a,b,^>

∩{#,+,>

}=Φ

={*}∩{<

}=Φ

∩SELECT<

}∩{a}∩{b}∩{^}=Φ

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

∴这个文法是LL<

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

+

*

a

b

^

#

E

→TE′

E′

→+E

→ε

T

→FT′

T′

→T

F

→PF′

F′

→*F′

P

→<

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

文法。

C$

C->

bA|aB

A->

a|aC|bAA

B->

b|bC|aBB

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

并给出判断过程。

[解]因为SELECT<

aC>

≠Ф,根据LL〔1〕文法的判定条件:

文法不含左递归

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

Select<

U→α>

∩Select<

U→β>

=Φ一个文法若满足以上条件,称该文法G为LL<

得出该文法不是LL〔1〕文法。

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

aA'

|bAA

A’->

C|ε

bB'

|aBB

B’->

[证明]因为SELECT<

bA>

aB>

Aa>

bAA>

C>

∩FOLLOW<

A’>

≠Ф

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

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

文法?

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

baB|ε 

[1]

Abb|a 

[2]

A→aABe|a 

B→Bb|d 

S→Aa|b 

A→SB 

B→ab 

[3]

[解]

对于一个文法若消除了左递归,提取了左公因子后不一定是LL<

1题:

baB|ε

Abb|a

先改写文法为:

A->

baB

B->

baBbb

bb

再改写文法为:

{b}

{#}

B

{b,a}

{#,b}

{#,b}

bN

aBbb

b

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

2题:

[2]将产生式[1]提取左公因子后得:

A→a<

ABe|ε>

进一步变换为文法G1:

A→aA′

A′→Abe

A′→ε

B→Bb|d 

消除<

中的直接左递归,将B→Bb|d变换为:

B→dB′ 

B′→bB′|ε

该文法最终改写成的形式为:

A′→Abe|ε

对此改写后的文法进行判断其是否是LL<

由分析得可推导出ε的非终结符表为:

A

A′

B

B′

A>

A′>

∪{ε}={a,ε}

B>

={d} 

B′>

={b}∪{ε}={b,ε}

={#}∪<

-{ε}>

={#,d}

=FOLLOW<

={e}

A→aA′>

aA′>

A′→ABe>

ABe>

A′→ε>

={#,d}

dB′>

={d}

B′→bB′>

bB′>

={b}

B′→ε>

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

={a}∩{#,d}=Φ

∩SELECT<

={b}∩{e}=Φ

∴改写后的文法是LL<

3题:

该文法的非终结符S,A为间接左递归,以S,A,B为序消除一切左递归。

将<

的右部代入<

得:

A→AaB|bB 

消除其直接左递归得:

A→bBA′ 

A′→aBA′|ε 

此时文法变成如下形式:

S→Aa|b 

此文法中的<

<

产生式存在隐含的左公因子,消除隐含的左公因子后文法变成如下的形式:

S→bS′ 

S′→BA′a|ε 

此形式中A→bBA′是不可达的产生式,是多余的,所以应将其去掉。

所以文法最终改写成的形式为:

相同左部产生式的SELECT集为:

S′→BA′a>

S′→ε>

={#}

A′→aBA′>

相同左部产生式的SELECT交集为:

={a}∩{#}=Φ

={a}∩{a}≠Φ

∴关于A′的相同左部其产生式的SELECT集的交集不为空

∴此改写后的文法不是LL<

4题:

AS|b

SA|a

该文法含间接左递归,因此运用间接左递归的算法对文法进行改写后的文法为:

bAA'

|aA’

SAA’|ε

AS>

={b,a}∩{b}≠Φ,∴此改写后的文法不是LL<

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

当前位置:首页 > 高中教育 > 理化生

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

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