语法分析—自下而上分析教学幻灯片讲义.ppt

语法分析—自下而上分析教学幻灯片讲义.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教学课件课件PPT医学培训课件教育资源教材讲义

*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;*;文法G(S?) (0) S?→E (1) E→aA (2) E→bB (3) A→cA (4) A→d (5) B→cB (6) B→d ;识别活前缀的DFA;LR(0)分析表为;例: 按上表对acccd进行分析 步骤 状态 符号 输入串 1 0 # acccd# 2 02 #a cccd# 3 024 #ac ccd# 4 0244 #acc cd# 5 02444 #accc d# 6 0244410 #acccd # 7 024448 #acccA # 8 02448 #accA # 9 0248 #acA # 10 026 #aA # 11 01 #E #;*;*;假定LR(0)规范族的一个项目集I={A1→?·a1?1,A2→?·a2?2,…,Am→?·am?m,B1→?·,B2→?·,…,Bn→?·} 如果集合{a1,…,am},FOLLOW(B1),…,FOLLOW(Bn)两两不相交(包括不得有两个FOLLOW集合有#),则: 1. 若a是某个ai,i=1,2,…,m,则移进; 2. 若a?FOLLOW(Bi),i=1,2,…,n,则用产生式Bi→?进行归约; 3. 此外,报错。 冲突性动作的这种解决办法叫做SLR(1)解决办法。;*;*;按上述方法构造出的ACTION与GOTO表如果不含多重入口,则称该文法为SLR(1)文法。 使用SLR表的分析器叫做一个SLR分析器。 每个SLR(1)文法都是无二义的。但也存在许多无二义文法不是SLR(1)的. ;*;这个文法的LR(0)项目集规范族为:;;I1、I2和I9都含有“移进-归约”冲突。 FOLLOW(E)={#, ), +},;其分析表如下:;*;这个文法的LR(0)项目集规范族为:;I2含有“移进-归约”冲突。 FOLLOW(R)={#, =},;*;*;*;*;*;文法G?的LR(1)项目集族C的构造算法: BEGIN C:={CLOSURE({[S?→·S,#]})}; REPEAT FOR C中每个项目集I和G?的每个符号X DO IF GO(I,X)非空且不属于C,THEN 把GO(I,X)加入C中 UNTIL C不再增大 END;构造LR(1)分析表的算法。 令每个Ik的下标k为分析表的状态,令含有[S?→·S, #]的Ik的k为分析器的初态。;动作ACTION和状态转换GOTO构造如下: 1. 若项目[A→?·a?, b]属于Ik且GO(Ik, a)=Ij, a为终结符,则置ACTION[k, a]为 “sj”。 2. 若项目[A→?·,a]属于Ik,则置ACTION[k, a]为 “rj”;其中假定A→?为文法G?的第j个产生式。 3. 若项目[S?→S·, #]属于Ik,则置ACTION[k, #]为 “acc”。 4. 若GO(Ik,A)=Ij,则置GOTO[k, A]=j。 5. 分析表中凡不能用规则1至4填入信息的空白栏均填上“出错标志”。;按上述算法构造的分析表,若不存在多重定义的入口(即,动作冲突)的情形,则称它是文法G的一张规范的LR(1)分析表。 使用这种分析表的分析器叫做一个规范的LR分析器。 具有规范的LR(1)分析表的文法称为一个LR(1)文法。 LR(1)状态比SLR多, LR(0)?SLR ? LR(1);*;例5.13 (5.10)的拓广文法G( S?) (0) S?→S (1) S→BB (2) B→aB (3) B→b ;LR(1)的项目集C和函数GO;LR(1)分析表为:;例: 按上表对aabab进行分析 步骤 状态 符号 输入串 0 0 # aabab# 1 03 #a abab# 2 033 #aa bab# 3 0334 #aab ab# 4 0338 #aaB ab# 5 038 #aB ab# 6 02 #B ab# 7 026 #Ba b# 8 0267 #Baa # 9

文档评论(0)

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

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

1亿VIP精品文档

相关文档