- 5
- 0
- 约1.83万字
- 约 103页
- 2019-04-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 →.
您可能关注的文档
- 安徽文达信息工程学院——秘书心理学——第四节:心理学流派之行为主义.ppt
- 安静及运动状态下心率及动脉血压的测定.ppt
- 安培力的应用.pptx
- 安全阀在线检测技术.ppt
- 安全基础教材-安全防护篇精讲.ppt
- 安全培训-临时用电及机械设备安全管理.pptx
- 安全人机600全章新课件.ppt
- 安全生产管理培训-生产经营单位安全管理人员培训.ppt
- 安全生产事故(第6讲).ppt
- 氨类药物分析浅谈.ppt
- 中国国家标准 GB/Z 37551.300-2026海洋能 波浪能、潮流能及其他水流能转换装置 第300部分:河流能转换装置发电性能评估.pdf
- GB/T 44937.3-2025集成电路 电磁发射测量 第3部分:辐射发射测量 表面扫描法.pdf
- 中国国家标准 GB/T 44937.3-2025集成电路 电磁发射测量 第3部分:辐射发射测量 表面扫描法.pdf
- 《GB/T 44937.3-2025集成电路 电磁发射测量 第3部分:辐射发射测量 表面扫描法》.pdf
- 中国国家标准 GB/T 44937.1-2025集成电路 电磁发射测量 第1部分:通用条件和定义.pdf
- GB/T 44937.1-2025集成电路 电磁发射测量 第1部分:通用条件和定义.pdf
- 《GB/T 44937.1-2025集成电路 电磁发射测量 第1部分:通用条件和定义》.pdf
- 中国国家标准 GB/T 4937.37-2025半导体器件 机械和气候试验方法 第37部分:采用加速度计的板级跌落试验方法.pdf
- 《GB/T 4937.10-2025半导体器件 机械和气候试验方法 第10部分:机械冲击 器件和组件》.pdf
- 中国国家标准 GB/T 44937.2-2025集成电路 电磁发射测量 第2部分:辐射发射测量TEM小室和宽带TEM小室法.pdf
原创力文档

文档评论(0)