- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算符优先矩阵
第五章 自底向上的语法分析 * * * * 5.3.5 LALR(1)分析表的构造 LR(1)对应的C太大 问题:是否可以将某些闭包/状态合并? 不同的LR(1)项目闭包可能有相同的LR(0)项目,但后继符可能不同——同心 合并后可能带来归约归约冲突 合并那些不会带来冲突的同心的LR(1)闭包/状态 ( lookahead-LR ) 在不带来移进归约冲突的条件下,合并状态,重构分析表 * * LALR(1) 的分析能力 强于 SLR(1) 合并的后继符仍为 FOLLOW 集的子集 局限性 合并中不出现归约-归约冲突 如果CFG G的LALR(1)分析表无冲突则称G为LALR(1)文法 * * 5.3.6 二义性文法的应用 I1: E’→E. E→E . +E E→E.*E I7: E→E+E. E→E.+E E→E.*E I8: E→E*E. E→E.+E E→E.*E 采用二义性文法,可以减少结果分析器的状态数,并能减少对单非终结符( E→T )的归约。 在构造分析表时采用消除二义性的规则(按优先级) * * 5.3.6 二义性文法的应用 I4: S→iS.eS S→iS . 选择移进else,以便让它与前面的then配对 * * 5.3.7 LR分析中的出错处理 当分析器处于某一状态S,且当前输入符号为a时,就以符号对(S,a)查LR分析表,如果分析表元素action[S,a]为空(或出错),则表示检测到了一个语法错误。 紧急方式的错误恢复:从栈顶开始退栈,直至发现在特定语法变量A上具有转移的状态S为止,然后丢弃零个或多个输入符号,直至找到符号a ?FOLLOW(A) 为止。接着,分析器把状态goto[S,A]压进栈,并恢复正常分析。 * * LR分析的基本步骤 1、编写拓广文法,求Follow集 2、求识别所有活前缀的DFA 3、构造LR分析表 * * 5.4 语法分析程序的自动生成工具Yacc YSP(Yacc Specification) %{变量定义:头文件和全局变量 %开始符号 词汇表:%Token n1,n2,…(自动定义种别码) %Token n1,i1(用户指定种别码) …… %Token nh,ih(用户指定种别码) 类型说明 %type 其它说明%} %%规则部分 给出文法规则的描述 %%程序部分 扫描器和语义动作程序 输出:LALR(1)分析器 * * 用Yacc和Lex合建编译程序 * * 本章小结 自底向上的语法分析从给定的输入符号串w出发,自底向上地为其建立一棵语法分析树。 移进-归约分析是最基本的分析方式,分为优先法和状态法。 算符优先分析法是一种有效的方法,通过定义终结符号之间的优先关系来确定移进和归约。 LR分析法有着更宽的适应性。该方法通过构建识别规范句型活前缀的DFA来设计分析过程中的状态。可以将LR分析法分成LR(0)、SLR(1)、LR(1)、LALR(1)。 通过增加附加的信息可以解决一些二义性问题。 Yacc是LALR(1)语法分析器的自动生成工具。 * * 识别拓广文法所有规范句型活前缀的DFA 识别文法G=(V,T,P,S)的拓广文法G的所有规范句型活前缀的DFA : M=(C, V∪T, go, I0, C) I0=CLOSURE({S →.S} C={I0}∪{I|?J∈C,X∈V∪T,I=go(J,X)} 称为G的LR(0)项目集规范族(Canonical Collection) * * 计算LR(0)项目集规范族C即:分析器状态集合 begin C := {closure({ S→.S})}; repeat for ?I∈C,? X ∈ V∪T if go(I,X)≠Φ go(I,X)?C then C=C∪{go(I,X)} until C不变化 end. * * 例4-13S→BBB→aBB→b I0: S→.S S→.BB B→.aB B→.b I1: S→S. S B I2: S→B.B B→.aB B→.b a I4: B→a.B B→.aB B→.b b I3: B→b. B I5: S→BB. a b B I6: B→aB. a b 核心项目Kernel Item * * LR(0)分析表的构造算法 算法5.6 LR(0)分析表的构造。 输入:文法G=(V, T, P, S)的拓广文法G ; 输出:G 的LR(0)分析表,即action表和goto表; 步骤: 1.令I0= CLOSURE({S →.
您可能关注的文档
最近下载
- 庭院设计课件 第五章 功能布局与平面设计.pptx VIP
- 2021年Fall AMC 10B真题含答案.pdf VIP
- 2025年辽宁省地矿集团面向校园招聘80人考试备考试题【含答案解析】.pdf VIP
- 九一八事变(课件)小学生主题班会通用版(共22张PPT).pptx VIP
- 屋顶分布式光伏发电施工组织设计.docx VIP
- 小学三年级班主任工作计划安排.doc VIP
- 广州某1200吨超低温金枪鱼冷库制冷系统设计.docx VIP
- 2025年美丽中国全国国家版图知识竞赛题库(附答案).docx VIP
- 中医辩证施护课件.ppt VIP
- Mysql数据库及应用 广东开放大学考试题库答案.doc VIP
文档评论(0)