5第五章 自底向上语法分析法1.pdfVIP

  • 8
  • 0
  • 约1.16万字
  • 约 36页
  • 2018-10-19 发布于山东
  • 举报
第5章 自底向上的分析 主要内容 自底向上分析概述 LR(0)分析 SLR(1) 分析 LR(1)和LALR(1)分析 Yacc :一个LALR(1)分析程序的生成器 使用Yacc生成TINY分析程序 自底向上分析程序中的错误校正 • 自底向上分析方法: (1)LR(1)分析(LR(1)parsing) :L表示由左向 右处理输入,R表示生成了最右推导,数字1表示 需要超前查看输入串的一个符号才可以决定选择 使用哪个规则进行规约。 (2 )LR(0)分析(LR(0) parsing):分析时根本不 需要超前查看输入串的符号就可以决定选择使用 哪个规则进行规约。 (3 )SLR(1)分析(SLR(1)parsing,简写为LR(1) 分析):是对LR(1)分析的改进,即在构造分析表 的时候才考虑使用超前查看输入串的一个符号。 (4 )LALR(1)分析(LALR(1) parsing,即先行 LR(1)分析):比SLR(1)分析略微强大且比一般的 LR(1)分析简单的方法。 (5 )算符优先分析方法:根据文法终结符号之间 的优先关系来确定规则的选择。 • 结论: 一般而言,自底向上的分析算法的功能比自顶 下的方法强大(左递归在自底向上分析中就不成 问题) 。但是这些算法所涉及到的构造就更为复 杂。 所有重要的自底向上方法对于手工编码而言都 复杂,但对于诸如Yacc 的分析程序生成器却很 合适。 了解方法的操作很重要,这样作为编译程序的 写者就可对分析程序生成器的行为进行正确分 析。 由于分析程序生成器可以用BNF中建议的语言 语法来识别可能的问题,所以程序设计语言的 计者还可从这个信息中获益不少。 • 试编写分析如下文法所对应任意串(如efbaefb ) 的自底向上分析程序。 G[S]={S→AB A→Ba B→Cb C→ef} 思路:从符号串出发进行分析。 方法:按照自底向上的思想,即从具体到抽象; 从输入串出发进行路径的搜索,当该把若干个具 体的符号形成为一个抽象就做规约处理;可以用 图来表示整个机器的构造。 • 试分析文法G[A]={A→(A) | a}所对应的串((a))。 (1)先画图 分析栈 输入串 (2 )分析过程(即图的遍历) $ ((a)) $( (a)) $(( a)) $((a )) $((A )) $((A) ) $(A ) $(A) $A • 试分析如下文法所对应的 分析栈 输入串 串efbae

文档评论(0)

1亿VIP精品文档

相关文档