- 1、本文档共161页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch07操作系统
1 1 例如文法G`的产生式如下: (0)S` S (1)S CC (2)C cC (3)C d I0:S` ·S,# S ·CC,# C ·cC,c/d C ·d,c/d I1:S` S ·,# I2:S C ·C,# C ·cC,# C ·d,# I3:C c ·C,c/d C ·cC,c/d C ·d,c/d I4:C d ·,c/d I5:S CC ·,# I6:C c ·C,# C ·cC,# C ·d,# I7:C d ·,# I8:C c C·,c/d I9:C c C ·, # 构造出的LR(1)项目集规范族C和GO函数如下图: 二.LR(1)分析表的构造 ①若[ A α ·aβ,b] ∈Ii,且GO(Ii,a)=Ij,a∈VT,则置 ACTION[i,a]=Sj。若GO(Ii,A)=Ij,A∈VN,则置GO[i,A]=j ②若[ A α ·,a] ∈Ii,则置ACTION[i,a]=rj。j为在文法 中对产生式A α的编号 ③若[ S` S·,#] ∈Ii,则置ACTION[i,#]=acc ④凡不能用上述方法填入分析表的元素,均置ERROR(空白) 8 9 7 6 5 4 3 2 1 0 C S # d c GO ACTION s3 s4 1 2 acc s6 s7 5 s3 s4 8 r3 r3 r1 s6 s7 9 r3 r2 r2 r2 例如文法G`的LR(1)分析表如下: 根据这种文法构造的LR(1)分析表不含多重定义时,称 这样的分析表为LR(1)分析表,能用LR(1)分析表的 分析器称为LR(1)分析器(规范的LR分析器),能构造 的LR(1)分析表的文法称为LR(1)文法 为什么要引进LALR(1)文法? 若文法G`为: (0)S` S (1)S BB (2)B aB (3)B b 7.5 LALR(1)分析 LR(1)项目集和转换函数 : B LR(1)分析表: 这个文法是LR(0)文法吗? 分析这个LR(1)每个项目集的项目,可以发现,即使不考 查搜索符,它的任何项目集中都没有动作冲突,因此这 个文法是LR(0)文法 构造LR(0)项目集,它有几个状态? 7个,而现在LR(1)有10个状态,为什么多3个? 因为I3和I6,I4和I7,I8和I9分别为同心集 对于类似ALGOL一类的高级语言,处理它的LR分析表可 能要1000个状态,而用LALR分析器,只需要100个 LALR:向前看LR技术 介于规范LR分析器构造法和SLR分析器构造法之间的一 种方法 LALR分析表比规范LR分析表小很多,当然能力差一点, 但它却能处理一些SLR分析器难以处理的情况 LALR文法能描述大多数常用高级程序语言的语法结构 采用对LR(1)项目集规范族合并同心集的方法,若合 并同心集后不产生新的冲突,则为LALR(1)项目集 A· LR(0)项目集规范族的项目类型分为如下四种: 1)移进项目 A →? ? a? 2)待约项目 A →? ? B? 3)归约项目 A →? ? 4)接受项目 S`→ S ? 一个项目集可能包含多种项目 a) 移进和归约项目同时存在(移进-归约冲突) b) 归约和归约项目同时存在(归约-归约冲突) LR(0)文法: G`项目集规范族的每个项目集中不存在移进-归约,或 归约-归约冲突,称为LR(0)文法 注意:仅当一个文法是LR(0)文法时,才能构造出它的不 含冲突动作的LR(0)分析表,才能用LR(0)分析方法分析该文 法定义的符号串 (4)LR(0)分析表的构造 它可以用一个二维数组表示,行标为状态号,列标为文法符 号和# 分析表的内容的组成: 动作表:它表示当前状态下所面临输入符应做的工作是移进 、归约、接受或出错,动作表的行标只包含终结符和# 转换表:它表示在当前状态下面临文法符号时应转向的下一 个状态,相当于识别活前缀的有限自动机DFA的状态矩阵 LR(0)分析表的构造算法如下: 假设已构造出LR(0)项目集规范族为: C={I0,I1,…,In} 其中Ii为项目集的名字,i为状 态名,令包含S` ·S项目的集合Ik的下标k为分析器的初态 则构造LR(0)步骤为: ①若A α·xβ∈Ii且GO(Ii,a)=Ij,x ∈VT,则置ACTION[i,a] =Sj, x ∈VN,则置GO[i,x]=j ②若A α·∈Ii,则对∨a ∈ (VT∪{#}),置ACTION[i,a]
您可能关注的文档
最近下载
- 急诊与灾难医学-第二十二章 人为灾难的医学救援.pptx
- 030904《项目实施进度里程碑确认单》.xlsx VIP
- 治疗篇第六章骨伤科四肢病证推拿讲解.ppt
- 2025年广西机场管理集团有限责任公司人员招聘笔试备考题库及答案解析.docx
- 七年级下册英语课件Unit 3《Keep Fit》(Section A 1a-1d).pptx VIP
- 福特嘉年华说明书.pdf
- 医院医疗设备管理员及使用人员岗位职责.pptx VIP
- 江苏省小学科学实验知识竞赛题库附答案.pdf VIP
- 教科版(2017秋)四年级下册科学期末复习训练题(含答案).docx VIP
- 八年级下数学期中测试题(a卷).pdf VIP
文档评论(0)