编译原理第二版第五章答案.docx
- 文档编号:20017278
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:14
- 大小:20.68KB
编译原理第二版第五章答案.docx
《编译原理第二版第五章答案.docx》由会员分享,可在线阅读,更多相关《编译原理第二版第五章答案.docx(14页珍藏版)》请在冰豆网上搜索。
编译原理第二版第五章答案
第五章
第5章自顶向下语法分析方法
练习〔P99〕
1.文法
S->a|^|
T->T,S|S
<1>对和<<,^,>,a>的最左推导。
<3>经改写后的文法是否为LL〔1〕的?
给出它的预测分析表。
<4>给出输入串#的分析过程,并说明该串是否为G的句子。
<1>对的最左推导为:
S=>
S=> =><
=><,S> =><<,S,S>,S>
=><<,S,S>,S> =><<,S,S>,S> =><<,^,S>,S> =><<,^,
=><<,^,>,S> =><<,^,>,S> =><<,^,>,a>
<3>改写文法为:
0> S->a
1> S->^
2> S->
3> T->SN
4> N->,SN
5> N->ε
FIRST
FOLLOW
S
a ^ <
# , >
T
a ^ <
>
N
ε
>
对左部为N2的产生式可知:
FIRST〔->,SN2〕={,}
FIRST〔->ε〕={ε}
FOLLOW〔N2〕={>}
{,}∩{>}=Ø
所以文法是LL<1>的。
预测分析表
a
^
<
>
#
S
->a
->^
->
T
->SN
->SN
->SN
N
->ε
->,SN
也可由预测分析表中无多重入口判定文法是LL<1>的。
<4>对输入串〔a,a〕#的分析过程为:
步骤
状态栈
当前字符
剩余输入串
操作
1
#S
<
a,a>#
S->
2
#>T<
<
a,a>#
匹配
3
#>T
A
a>#
T->SN2
4
#>N2S
A
a>#
S->a
5
#>N2a
A
a>#
匹配
6
#>N2
a>#
N2->,SN2
7
#>N2S,
a>#
匹配
8
#>N2S
a
>#
S->a
9
#>N2a
a
>#
匹配
10
#>N2
>
#
N2->ε
11
#>
>
#
匹配
12
#
#
可见输入串〔a,a〕#是文法的句子。
2.对下面的文法G:
E→TE′
E′→+E|ε
T→FT′
T′→T|ε
F→PF′
F′→*F′|ε
P→
<1> 计算这个文法的每个非终结符的FIRST集和FOLLOW集。
<2> 证明这个文法是LL<1>的。
<3> 构造它的预测分析表。
<4>构造它的预测下降分析程序
[解]<1>由题意分析得可推导出ε的非终结符表为:
各非终结符的FIRST集为:
FIRST
FIRST
FIRST
FIRST ={<,a,b,^}FIRST FIRST ={<,a,b,^} ∴最终求得各非终结符的FIRST集为: FIRST FIRST FIRST ={<,a,b,^} 各非终结符的FOLLOW集为: FOLLOW FOLLOW FOLLOW FOLLOW FOLLOW FOLLOW FOLLOW = ∴最终求得各非终结符的FOLLOW集为: FOLLOW FOLLOW FOLLOW ={*,<,a,b,^,#,+,>} <2>各产生式的SELECT集为: SELECT SELECT SELECT SELECT SELECT SELECT SELECT ={<,a,b,^} SELECT ={*} SELECT SELECT >=FIRST< SELECT =FIRST={a} SELECT =FIRST={b} SELECT =FIRST<^>={^} ∴由以上结果得相同左部产生式的SELECT交集为: SELECT SELECT SELECT SELECT >∩SELECT ∩SELECT ∩SELECT ={<}∩{a}∩{b}∩{^}=Φ ∴相同左部产生式的SELECT集合的交集为空。 ∴这个文法是LL<1>的。 <3>由以上算出的SELECT集可以构造该文法的预测分析表如下: + * < > a b ^ # E →TE′ →TE′ →TE′ →TE′ E′ →+E →ε →ε T →FT′ →FT′ →FT′ →FT′ T′ →ε →T →ε →T →T →T →ε F →PF′ →PF′ →PF′ →PF′ F′ →ε →*F′ →ε →ε →ε →ε →ε →ε P → →a →b →^ voidP<> {Getchar<>; if ch=’<’ { E<>;Getchar<>;ifch=’>’Getchar<>;} elseif ch=’a’ Getchar<>; elseif ch=’b’ Getchar<>; elseerror<>, } } voidF’<> {Getchar<>; if ch=’*’ F’<>; else error<>; } F’<>; } voidF<> { P<>; F’<>; } voidT’<> { T<>; } 〔4〕不妨约定: 在进入一个非终结符号相应的子程序前,已读到一个单词ch: 存放当前读到的单词,Getchar<>为一子程序,每调用一次,完成读取一单词的任务,Error<>为出错处理程序。 4.证明下述文法不是LL<1>文法。 S->C$ C->bA|aB A->a|aC|bAA B->b|bC|aBB 你能否构造一等价的文法,使其是LL〔1〕? 并给出判断过程。 [解]因为SELECT <1>文法不含左递归 <2>对于文法U的任意两个不同的规则有: Select∩Select=Φ一个文法若满足以上条件,称该文法G为LL<1>文法。 得出该文法不是LL〔1〕文法。 该文法含公共因子,消除后的文法为: S->C$ C->bA|aB A->aA'|bAA A’->C|ε B->bB'|aBB B’->C|ε [证明]因为SELECT SELECT SELECTC>∩SELECTε>= 因此消除公共因子后得到文法也不是LL〔1〕文法。 7.对于一个文法若消除了左递归,提取了左公共因子后是否一定为LL<1>文法? 试对下面文法进行改写,并对改写后的文法进行判断。 <1>A->baB|ε [1] B->Abb|a [2] <2>A→aABe|a [1] B→Bb|d [2] <3>S→Aa|b [1] A→SB [2] B→ab [3] [解] 对于一个文法若消除了左递归,提取了左公因子后不一定是LL<1>文法。 1题: A->baB|ε B->Abb|a 先改写文法为: 0>A->baB 1>A->ε 2>B->baBbb 3>B->bb 4>B->a 再改写文法为: 0>A->baB FIRST FOLLOW A {b} {#} B {b,a} {#,b} N {b,a} {#,b} 1>A->ε 2>B->bN 3>B->a 4>N->aBbb 5>N->b 预测分析表 a b # A ->baB ->ε B ->a ->bN N ->aBbb ->b 由预测分析表中无多重入口判定文法是LL<1>的。 2题: [2]将产生式[1]提取左公因子后得: A→a 进一步变换为文法G1: A→aA′ A′→Abe A′→ε B→Bb|d 消除<2>中的直接左递归,将B→Bb|d变换为: B→dB′ B′→bB′|ε 该文法最终改写成的形式为: A→aA′ A′→Abe|ε B→dB′ B′→bB′|ε 对此改写后的文法进行判断其是否是LL<1>文法。 由分析得可推导出ε的非终结符表为: A A′ B B′ 否 是 否 是 各非终结符的FIRST集为: FIRST={a} FIRST=FIRST∪{ε}={a,ε} FIRST={d} FIRST={b}∪{ε}={b,ε} 各非终结符的FOLLOW集为: FOLLOW={#}∪ FOLLOW={e} FOLLOW=FOLLOW∪FOLLOW={e} 各产生式的SELECT集为: SELECT=FIRST SELECT= SELECT=FIRST SELECT=FIRST SELECT= 由以上结果得相同左部产生式的SELECT交集为: SELECT∩SELECT={a}∩{#,d}=Φ SELECT∩SELECT={b}∩{e}=Φ ∴相同左部产生式的SELECT集合的交集为空。 ∴改写后的文法是LL<1>的。 3题: 该文法的非终结符S,A为间接左递归,以S,A,B为序消除一切左递归。 将<1>的右部代入<2>得: A→AaB|bB 消除其直接左递归得: A→bBA′ A′→aBA′|ε 此时文法变成如下形式: S→Aa|b <1> A→bBA′ <2> A′→aBA′|ε B→ab 此文法中的<1>,<2>产生式存在隐含的左公因子,消除隐含的左公因子后文法变成如下的形式: S→bS′ S′→BA′a|ε A→bBA′ A′→aBA′|ε B→ab 此形式中A→bBA′是不可达的产生式,是多余的,所以应将其去掉。 所以文法最终改写成的形式为: S→bS′ S′→BA′a|ε A′→aBA′|ε B→ab 相同左部产生式的SELECT集为: SELECT SELECT SELECT={a} SELECT={a} 相同左部产生式的SELECT交集为: SELECT SELECT∩SELECT={a}∩{a}≠Φ ∴关于A′的相同左部其产生式的SELECT集的交集不为空 ∴此改写后的文法不是LL<1>的。 4题: S->AS|b A->SA|a 该文法含间接左递归,因此运用间接左递归的算法对文法进行改写后的文法为: S->AS|b A->bAA'|aA’ A’->SAA’|ε SELECT={a}={#}∩SELECT={a}∩{#}=Φ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 第二 第五 答案