网站大量收购独家精品文档,联系QQ:2885784924

ch07操作系统.ppt

  1. 1、本文档共161页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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]

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档