- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理部分
第7章 自下而上的LR(k)分析方法 LR(k)文法:从左到右扫描输入串(LR) 自下而上规范归约 向前查看k个输入符号 7.1 LR(k)文法和LR(k)分析器 LR分析器是一个确定的下推自动机,它由一个输入串,一个下推栈和一个带分析表的总控程序组成。 分析表的结构 状态: 分析动作表(ACTION):Sm—移进符号,转m状态; r j—按产生式j归约; 接收; 出错; goto函数表(GOTO): K 转K状态; 例如:文法G(E) 1 E→E+T 2 E→T 3 T→T*F 4 T→F 5 F→(E) 6 F→id SLR(1)分析表(右) LR分析器识别id+id*id 栈内容 输入串 0 id+id*id# 0id5 +id*id# 0F +id*id# 0F3 +id*id# 0T +id*id# 0T2 +id*id# 0E +id*id# 0E1 +id*id# 0E1+6 id*id# 0E1+6id5 *id# 0E1+6F *id# 0E1+6F3 *id# 0E1+6T *id# 0E1+6T9 *id# 0E1+6T9*7 id# 0E1+6T9*7id5 # 分析表的构造 LR(0)分析表的构造 SLR分析表的构造 LR(1)分析表的构造 LALR分析表的构造 7.2 LR(0)分析表的构造 活前缀 前缀:指符号串的任意首部,包括ε 活前缀:右边加上一些VT 符号,可构成规范句型 LR(0)项目:每个产生式右部在某个位置加上“.” 如:A→xyz的项目有四个 A→.xyz A→x.yz A→xy.z A→xyz. 拓广文法:如果开始符号S的产生式有多个右部,则另外加S’→S 产生式,S’为开始符号。如 G[S]:S→A | B = G[S’]: S’→S S→A | B 7.2.4 CLOSURE(I)函数 项目集I属于CLOSURE(I) 若S→α.B β属于CLOSURE(I) 则B→.γ也属于CLOSURE(I) 如文法G(E’) 0 E’→E 1 E→E+T 2 E→T 3 T→T*F 4 T→F 5 F→(E) 6 F→id 7.2.5 goto(I,X)函数 goto(I,X)={CLOSURE(A→αX .β) | 所有A→α . X Β∈I} 如 I0: E’→.E E→.E+T E→.T T→.T*F T→.F F→.(E) F→.id 7.2.6 LR(0)项目规范族 拓广文法为: 0: Z→A 1: A→BA 2: A→i 3: B→AB 4: B→j LR(0)项目族 LR(0)项目分析表 拓广文法为: 0: Z→A 1: A→BA 2: A→i 3: B→AB 4: B→j LR(0)项目族 7.2.7 有效项目 一个项目[A→x .y]称为对某个活前缀是有效的(valid),当且仅当存在某个规范推导: S uAv=uxyv 其中,xy是句型uxyv的句柄,v是VT串 LR(0) 文法 移进项目与归约项目不能并存同一项目集。 多个归约项目不能并存同一项目集。 LR(0)项目分析表的构造 A→α . X β∈Ii,goto(Ii,X)=Ij, 如果X ∈VT,则ACTION[Ii,X]=Sj A→α . X β∈Ii,goto(Ii,X)=Ij, 如果X ∈VN,则GOTO[Ii,X]=j S’→S . ∈Ii,则ACTION[Ii,#]=Acc A→α. ∈Ii,该项目为k产生式的, 则ACTION[Ii,v]=rk
文档评论(0)