- 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
您可能关注的文档
最近下载
- 2026年开工第一课主题.ppt
- 普通纪念币防伪课件.pptx VIP
- ASTM A388A388M-2018钢锻件超声检验标准操作方法中文版.pdf VIP
- 艺考真题|2020年中传文史哲初试真题原卷放送(附答案).doc VIP
- 毛石混凝土挡土墙施工方案.docx
- 八年级英语上册全册课课练.doc VIP
- POEMS综合征课件完整版.ppt VIP
- NB-T11409-2023水电工程费用构成及概(估)算费用标准.docx VIP
- 2026年春季学期学校德育工作计划.docx VIP
- 深度解析(2026)《TBT 3474.2-2018机车车辆螺纹连接软管 第2部分:橡胶软管》.pptx VIP
原创力文档

文档评论(0)