编译原理,陈意云 ,课后答案3
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
L
I8 L -> ML · b, b b I9 L -> ML b ·, b
M
M
a
2011-3-28
luanj@mail.ustc.edu.cn
20
3.26 (续) (续
• I0,I2,I5面临a时存在移进-规约冲突
2011-3-28
luanj@mail.ustc.edu.cn
21
3.30
• 下面哪个不是LR(1)文法?对非LR(1)文法 给出所有冲突的LR(1)项目集
S->aAc A->Abb|b S->aAc A->bAb|b
2011-3-28
luanj@mail.ustc.edu.cn
22
3.30 (续) (续
• 第二个不是LR(1)文法 第二个文法在句子的正中心按A->b规约, 而只向后看一位是无法判断是否到达句子 的中心位置的 • 存在冲突的项目集:
S -> a·Ac, $ A -> ·bAb, c A -> ·b, c b A -> b·Ab, c A -> b·, c A -> ·bAb, b A -> ·b, b b A A -> b·Ab, c A -> ·bAb, b A -> ·b, b b b A -> b·Ab, b A -> b·, b A -> ·bAb, b luanj@mail.ustc.edu.cn A -> ·b, b
2011-3-28
luanj@mail.ustc.edu.cn
17
3.26
• 一个非LR(1)的文法如下: L -> MLb | a M -> ε 给出所有有移进-规约冲突的规范LR(1)项目 集
2011-3-28
luanj@mail.ustc.edu.cn
18
3.26 (续) (续
• 拓广文法: L’ -> L L -> MLb | a M -> ε • I0 I
2011-3-28
23
谢谢!! 谢谢!!
(
S
2011-3-28
luanj@mail.ustc.edu.cn
12
3.16 (续) (续
• SLR(1)分析表构造
1) 若A→α∙aβ∈I,且goto(I,a)=J,则 action[I,a]=sJ 2)若A→α∙ ∈ I,则action[I,b] = r A→α∙ ∈ A→α,b∈Follow(A) 3)若S‘→S∙ ∈ I,则action[I,$] = acc 4)若goto(I,B)=K,则GOTO[I,B]=K 5)其它为空白/error
编译原理习题课(3) 编译原理习题课(3)
栾 俊 luanj@mail.ustc.edu.cn 3/28/2011
3.8(a)
• (a) 消除3.1的左递归 (b) 在(a)的基础上构造LL(1)分析表
2011-3-28
luanj@mail.ustc.edu.cn
2
3.8(a) (续) (续
• S -> (L)|a L -> L,S|S • 只有直接左递归 S -> (L)|a L -> SL’ L’-> ,SL’|ε
15
3.23
• 证明下面文法不是SLR(1)文法 S -> X X -> Ma | bMc | dc | bda M -> d
2011-3-28
luanj@mail.ustc.edu.cn
16
3.23 (续) (续
• S -> X X -> Ma | bMc | dc | bda M -> d • 存在移进-规约冲突 如句子dc,当d进栈后,面临c,此时项目 [X -> d · c]要求移进,而c在FOLLOW(M)中, 因此项目[M -> d ·]要求规约
2011-3-28 luanj@mail.ustc.edu.cn 13
3.16 (续) (续
状 态 0 1 2 3 4 5 6 7 8
2011-3-28
( s2 s2
)
action a s3 s3
goto , $ acc 1 4 r3 s6 r5 r2 r3 S 1 L
r3 s5 r5 r2 s2 r4 s3
2011-3-28
luanj@mail.ustc.edu.cn
3
3.8(b) (续) (续
• S -> (L)|a L -> SL’ L’-> ,SL’|ε • FIRST(S) = {(, a} FIRST(L) = FIRST(S) = {(, a} FIRST(L’) = {,, ε} • FOLLOW(S) = (FIRST(L’)-{ε}) + FOLLOW(L) + FOLLOW(L’) + {$} = {,, ), $} FOLLOW(L) = {)} FOLLOW(L’) = FOLLOW(L) = {),$}
2011-3-28 luanj@mail.ustc.edu.cn 4
3.8(b) (续) (续
( S L L’
2011-3-28
)
,
a
S -> a
$
S -> (L)
L -> SL’
L -> SL’
L’ -> ε
L’-> ,SL’
L’ -> ε
5
luanj@mail.ustc.edu.cn
3.16
r2 7
r4
luanj@mail.ustc.edu.cn 14
3.16 (续) (续
• S -> ( L ) | a L -> L , S | S • FOLLOW(S) = {$} + FOLLOW(L) = {$, ), ,} FOLLOW(L) = {), ,}
2011-3-28
luanj@mail.ustc.edu.cn
0
L’ -> ·L, $ L -> ·MLb, $ L -> ·a, $ M -> · , $/a
2011-3-28
luanj@mail.ustc.edu.cn
19
3.26 (续) (续
I0 L’ -> ·L, $ L -> ·MLb, $ L -> ·a, $ M -> · , a L L I1 L’ -> L ·, $ I2 L -> M ·Lb, $ L -> ·MLb, b L -> ·a, b M -> ·, a I3 L -> a ·, $ I4 L -> M L · b, $ b I7 L -> M L b ·, $ I5 M L -> M · Lb, b L -> ·MLb, b L -> ·a, b M -> ·, a a a I6 L -> a ·, b
• Goto(wk.baidu.com0, a) =
I3 S -> a·
2011-3-28 luanj@mail.ustc.edu.cn 8
3.16 (续) (续
• Goto(I2, L) =
I4 S -> (L · ) L -> L · , S
• Goto(I2, S)=
I5 L -> S ·
• Goto(I2, ()=I2 • Goto(I2, a)=I3
2011-3-28 luanj@mail.ustc.edu.cn 9
3.16 (续) (续
• Goto(I4, )) =
I6 S -> (L ) ·
• Goto(I4, ,)=
I7 L -> L , · S S -> ·(L) S -> ·a
2011-3-28
luanj@mail.ustc.edu.cn
10
3.16 (续) (续
• Goto(I6, S) =
I8 L -> L , S ·
• Goto(I6, () =I2 • Goto(I6, a) =I3
2011-3-28
luanj@mail.ustc.edu.cn
11
3.16 (续) (续
I0 S’ -> ·S S -> ·(L) S -> ·a S I1 S’ -> S · S ( I2 S -> (· L) L -> · L , S L -> · S S -> ·(L) S -> ·a a a I3 S -> a· a I5 L -> S · I6 S -> (L ) · ( L I4 S -> (L · ) L -> L · , S , ( I7 L -> L , · S S -> ·(L) S -> ·a I8 L -> L , S ·
• 给出接收文法 S -> ( L ) | a L -> L , S | S 的LR(0)活前缀的DFA;并且在此基础上构 造SLR(1)分析表.
2011-3-28
luanj@mail.ustc.edu.cn
6
3.16 (续) (续
• 拓展文法: (1) S‘ -> S (2) S -> ( L ) (3) S -> a (4) L -> L , S (5) L -> S • 初态:I0 = closure{S’ -> ∙S} =
I0 S’ -> ·S S -> ·(L) S -> ·a
2011-3-28
luanj@mail.ustc.edu.cn
7
3.16 (续) (续
• Goto(I0, S) =
I1 S’ -> S ·
• Goto(I0, () =
I2 S -> (· L) L -> · L , S L -> · S S -> ·(L) S -> ·a