- 1、本文档共101页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Part5自底向上的语法分析教程
二义性文法在LR分析中的应用 悬空else的二义性构造LR(0)项目集后,发现冲突: I4:S→iS·eS S→iS· 程序设计语言中的规则,else要和最近的if…then…结构配对,因此当栈顶是iS,而输入是e的时候,要移进。 二义性文法在LR分析中的应用 特例产生式引起的二义性 数学公式编排预处理器EQN中使用了特例产生式 E→E sub E sup E E→E sub E E→E sup E E→{E} (复合表达式) E→c 二义性文法在LR分析中的应用 构造LR(0)项目集后,发现冲突: 一部分冲突如果定义了优先级和结合顺序,可以解决 定义sub和sup具有相同的优先级 定义其结合顺序是右结合的 一些归约-归约冲突不好解决: E→E sub E sup E· E→E sup E · LR语法分析中的错误恢复 在LR分析过程中,当我们处在这样一种状态下,即输入符号既不能移入栈顶,栈内元素又不能归约时,就意味着发现语法错误。 处理的方法分为两类: 第一类多半是用插入、删除或修改的办法。如果不能使用这种办法,则采用第二类办法, 第二类办法包括在检查到某一不合适的短语时,采用局部化的方法进行处理。类似前面讲过的同步符号 LR分析 LR(1)分析 LALR(1)分析 SLR(1)分析 LR(0)分析 自顶向下语法分析 非递归的预测语法分析 提取左因子 消除左递归 FIRST、FOLLOW 自底向上语法分析 算符优先分析法 LR语法分析 SLR(1) LR(1) LALR(1) 二义性文法在LR分析中的应用 Thanks for your time! Questions Answers * * * * SLR基本算法 解决冲突的方法是分析所有含A和B的句型,考察集合FOLLOW(A)和FOLLOW(B),如果这两个集合不相交,而且也不包含b,那么当状态I面临输入符号a时,我们可以使用如下策略: 若a=b,则移进。 若a∈FOLLOW(A),则用产生式A→α进行归约; 若a∈FOLLOW(B),则用产生式B→α进行归约; 此外,报错 SLR基本算法 假定LR(0)规范族的一个项目集I中含有m个移进项目 A1→α?a1β1,A2→α?a2β2,…,Am→α?amβm; 同时含有n个归约项目 B1→α?,B2→α?,…,B3→α?, 如果集合{ a1,…, am},FOLLOW(B1),…,FOLLOW(Bn)两两不相交(包括不得有两个FOLLOW集合有#),则隐含在I中的动作冲突可以通过检查现行输入符号a属于上述n+1个集合中的哪个集合而活的解决: 若a是某个ai,i=1,2,…,m,则移进。 若a∈FOLLOW(Bi),i=1,2,…,m,则用产生式Bi→α进行归约; 此外,报错 这种冲突的解决方法叫做SLR(1)解决办法。 SLR语法分析表的构造算法 首先把G拓广为G’,对G’构造LR(0)项目集规范族C和活前缀识别自动机的状态转换函数GO。函数ACTION和GOTO可按如下方法构造: 若项目A→α?bβ属于Ik,GO(Ik,a)= Ij,a为终结符,置ACTION[k,a]为“把状态j和符号a移进栈”,简记为“sj”; 若项目A→α?属于Ik,那么,对任何非终结符a,a∈FOLLOW(A),置ACTION[k,a]为“用产生式A→α进行归约”,简记为“rj”;其中,假定A→α为文法G’的第j个产生式 若项目S’→S?属于Ik,则置ACTION[k,#]为可“接受”,简记为“acc”; 若GO(Ik, A)= Ij,A为非终结符,则置GOTO[k, A]=j; 分析表中凡不能用规则1至4填入信息的空白格均填上“出错标志”。 语法分析器的初始状态是包含S’ →?S的项目集合的状态 SLR分析举例 文法G:(0) S’ ? E(1) E ? E+T (2) E ? T (3) T ? T*F(4) T ? F(5) F ? (E) (6) F ? i I0:S’ ? ?E E ? ?E+T E ? ?T T ? ?T*F T ? ?F F ? ?(E) F ? ?i I1:S’ ? E? E ? E?+T I2:E ? T? T ? T?*F I3:T ? F? I4:F ? (?E) E ? ?E+T E ? ?T T ? ?T*F T ? ?F F ? ?(E) F ? ?i I5:F ? i? I6:E ? E+?T T ? ?T*F T ? ?F F ? ?(E) F ? ?i I7:T ? T*?F F ? ?(E) F
您可能关注的文档
- OVATION--DCS系统检修工艺规程教程.doc
- OTN-协议介绍教程.ppt
- OVATIONDCS系统检修工艺规程教程.doc
- Origin软件使用指导教程.docx
- P17534-一种用于数字媒体分发的点对点通信方法教程.doc
- P2P整改进行时:主动停业平台近60家教程.pptx
- OVATION系统硬件介绍教程.pptx
- P2P行业简要分析教程.docx
- Origin数据分析与制图教程.pptx
- OSPF的五种报文介绍教程.pptx
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)