版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图5.7p106识别文法活前缀的DFA从初态出发,经读出活前缀γ后,而到达的项目集称为活前缀γ的有效项目集I0:S'
•E
E•aA
E•bBI5:Bc•B
B•cB
B•dI3:Eb•B
B•cB
B•dI2:Ea•A
A•cA
A•dI1:S'E•I4:Ac•A
A•cA
A•dI8:AcA•I10:Ad
•I6:EaA
•I7:EbB•I11:Bd
•I9:BcB•
b
E
a
c
c
c
c
d
d
d
d
A
A
B
B有效项目如果存在规范推导则项目A
1·
2
对活前缀
1
是有效的。如果
2
,应该移进如果
2=
,应该用产生式A
1归约
*R
R
1
2
A
S'LR分析理论的一条基本定理:在任何时候,分析栈中的活前缀X1X2...Xm的有效项目集正是栈顶状态Sm所代表的那个集合。I0:S'
•EE•aA
E•bBI5:Bc•B
B•cB
B•dI3:Eb•B
B•cB
B•dI2:Ea•A
A•cA
A•dI1:S'E•I4:Ac•A
A•cA
A•dI8:AcA•I10:Ad
•I6:EaA
•I7:EbB•I11:Bd
•I9:BcB•
b
E
a
c
c
c
c
d
d
d
d
A
A
B
BG':
S'→EE→aA|bBA→cA|dB→cB|d
项目集I5对活前缀bc有效考虑如下规范推导(1)
SE
bB
bcB(2)
SE
bB
bcB
bccB(3)SE
bB
bcB
bcdI0:S'
•EE•aA
E•bBI5:Bc•B
B•cB
B•dI3:Eb•B
B•cB
B•dI2:Ea•A
A•cA
A•dI1:S'E•I4:Ac•A
A•cA
A•dI8:AcA•I10:Ad
•I6:EaA
•I7:EbB•I11:Bd
•I9:BcB•
b
E
a
c
c
c
c
d
d
d
d
A
A
B
B同一个项目可能对好几个活前缀都有效G':
S'→EE→aA|bBA→cA|dB→cB|d
同一个活前缀,可能存在若干个项目对它都是有效的,而且告诉我们应做的事情各不相同,相互冲突。这种冲突通过向前多看几个输入符号,或许能够获得解决。5.3.3SLR分析表的构造SLR(1)分析法的引入:LR(0)文法的活前缀识别自动机的每一状态(项目集)都不含冲突性的项目大多数的程序设计语言的文法不能满足LR(0)文法的条件用向前查看一个符号的办法解决冲突例:设文法G的LR(0)项目集规范族中含有如下一个项目集(状态)I:I={ X
•b
/*移进项目*/ A
• /*归约项目*/
Bγ• /*归约项目*/}移进-归约冲突归约-归约冲突解决冲突策略(1)若a=b,则移进(2)若a∈Follow(A),则用A
归约(3)若a∈Follow(B),则用Bγ归约(4)此外,报错用SLR(1)方法解决冲突假定LR(0)规范族的一个项目集I中含有m个移进项目:
A1→α·a1β1,A2→α·a2β2,…,Am→α·amβm同时含有n个归约项目:
B1→α1·,B2→α2·,…,Bn→αn·如果集合{a1,…,am}、FOLLOW(B1)、…、FOLLOW(Bn)两两不相交,a是现行输入符号,则:(1)若a是某个ai,i=1,2,…,m,则移进;(2)若a∈FOLLOW(Bi),i=1,2,…,n, 则用产生式Bi→αi进行归约;(3)此外,报错。例5.11p111
考虑下面的拓广文法(文法5.8)(0)S
E(1)EE+T(2)ET
(3)TT*F(4)TF(5)F(E)(6)FI构造其LR(0)项目集规范族I0:S
·EE
·E+TE
·TT
·T*FT
·FF
·(E)F
·iI1:S
E·E
E·+TI2:E
T·T
T·*FI3:T
F·I4:F
(·E)E
·E+TE
·TT
·T*FT
·FF
·(E)F
·iI5:F
i·I6:E
E+·TT
·T*FT
·FF
·(E)F
·iI7:T
T*·FF
·(E)F
·iI8:F
(E·)E
E·+TI9:E
E+T·T
T·*FI10:T
T*F·I11:F
(E)·移进-接受冲突移进-归约冲突移进-归约冲突DFA图5.8p112FOLLOW(S′)={#},
{#}∩{+}=φ,因此I1中的冲突可解决。遇‘+’移进,遇‘#’接受其它情况则报错。
I1:S
E·E
E·+T(0)S
E(1)EE+T(2)ET
(3)TT*F(4)TF(5)F(E)(6)FISLR(1)解决方法FOLLOW(E)={+,),#}FOLLOW(E)∩{*}=
φ,因此I2中的冲突可解决。I2:E
T·T
T·*F(0)S
E(1)EE+T(2)ET
(3)TT*F(4)TF(5)F(E)(6)FIFOLLOW(E)={+,),#}FOLLOW(E)∩{*}=
φ,因此I9中的冲突可解决。I9:E
E+T·T
T·*F(0)S
E(1)EE+T(2)ET
(3)TT*F(4)TF(5)F(E)(6)FI构造SLR(1)分析表(1)若A→α·aβ
属于Ik
,且GO(Ik,a)=Ij
, 则置ACTION[k,a]为sj(2)若A→α·
属于Ik,a∈FOLLOW(A),
则置ACTION[k,a]为rj j是产生式A→α的编号。(3)若S
→S·属于Ik, 则置ACTION[k,#]为acc(4)若GO(Ik,A)=Ij
, 则置GOTO[k,A]=j(5)凡不能用规则(1)~(4)填入的空白格均置为“出错标志”。更正状态ACTIONGOTOi+*()#ETF0s5s41231s6acc2r2s7r2r2Follow(S
)={#}Follow(E)={#,),+}(0)S
E(1)
EE+T(2)ET
(3)TT*F(4)TF(5)F(E)(6)FI状态ACTIONGOTOi+*()#ETF0s5s41231s6acc2r2s7r2r23r4r4r4r44s5s48235r6r6r6r66s5s4937s5s4108s6s119r1s7r1r110r3r3r3r311r5r5r5r5SLR(1)分析表图5.5p101(0)S
E(1)
EE+T(2)ET
(3)TT*F(4)TF(5)F(E)(6)FISLR分析表: 按上述方法构造分析表,每个入口不含多重定义SLR(1)文法: 具有SLR表的文法SLR分析器
: 使用SLR表的分析器例:一个非SLR文法的例子p113有如下文法: (文法5.9) (0)S'
S (1)SL=R (2)SR (3)L*R (4)Li (5)RL求LR(0)项目集规范族及识别活前缀的DFAFollow(R)={#,=}识别活前缀的DFAI0:S'
•S
S•L=R
S•RL•*RL•iR•LI6:SL=•R
R•L
L•*RL
•iI2:SL•=R
RL•
I4:L*•R
R•L
L•*R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自我心理评估测试题与答案
- 太原卫生系统笔试试题与答案分享
- 单招专项练习题及参考答案
- 2026年计算机网络技术课程设计习题
- 2026年汽车维修技术综合训练题库
- 2026年电子设备维修技术综合测试卷
- 2026年计算机网络安全与防护习题集
- 2026年四川省人教版初中英语第7单元阅读练习
- 2026年信息安全意识综合测试题
- 2026年生活常识竞赛测试卷
- 装配整体式叠合剪力墙模板施工手册
- 2026年浙江平湖市国有企业公开招聘工作人员35人考试模拟试题及答案详解
- 2026年秋季开学第一课:强国复兴有我
- 2026年医保药店培训试题及答案
- 2025-2026学年江西省南昌中学教育集团八年级(下)期末数学试卷(含答案)
- 2026年四川省拟任县处级党政领导职务政治理论水平任职资格考试冲刺试题及答案
- 建筑识图与构造
- 2026年高考全国2卷数学高考真题试题(含答案)
- 2025年高校教学统计分析岗笔试试题(附答案)
- 2026湖南娄底新化县经济发展投资集团有限公司人员招聘1人笔试历年参考题库附带答案详解
- 2026年度全国保密教育线上培训题库(选择+判断)及参考答案
评论
0/150
提交评论