3.4 自下而上分析|3.5 LR分析器

3.4 自下而上分析

3.4.1 归约

3.4 自下而上分析|3.5 LR分析器
3.4 自下而上分析|3.5 LR分析器

3.4.2 句柄

句型的句柄是和**某产生式右部匹配**的**子串**,并且,把它归约成该产生式左部的非终结符代表了**最右推导过程的逆过程的一步**。
	S → aABe  
	A → Abc | b
	B → d

句柄的右边仅含终结符
如果文法二义,那么句柄可能不唯一

3.4.3 用栈实现移进-归约分析

移进-归约分析器在分析输入串id1 * id2 + id3时的动作序列:
3.4 自下而上分析|3.5 LR分析器

3.5 LR分析器

本节介绍LR(k)分析技术

特点
适用于一大类上下文无关文法
效率高

主要介绍构造LR分析表的三种技术
简单的LR方法(简称SLR)
规范的LR方法
向前看的LR方法(简称LALR)

3.5.1 LR分析算法

3.4 自下而上分析|3.5 LR分析器
3.4 自下而上分析|3.5 LR分析器

3.5.2 LR文法和LR分析方法的特点

1、概念
活前缀:右句型的前缀,该前缀不超过最右句柄的右端

2、定义
LR文法:我们能为之构造出所有条目都唯一的LR分析表

3、LR分析方法的特点

  • 栈中的文法符号总是形成一个活前缀

  • 分析表的转移函数本质上是识别活前缀的DFA

  • 栈顶的状态符号包含了确定句柄所需要的一切信息

  • 是已知的最一般的无回溯的移进归约方法

  • 能及时发现语法错误

  • 手工构造分析表的工作量太大
    4、LR分析方法和LL分析方法的比较

3.5.3 构造SLR分析表

术语:LR(0)项目(简称项目

  • 在右部的某个地方加点的产生式

  • 加点的目的是用来表示分析过程中的状态

构造SLR分析表的两大步骤

1、从文法构造识别活前缀的DFA
2、从上述DFA构造分析表

具体步骤

1、从文法构造识别活前缀的DFA
1)拓广文法

E → E
E → E + T | T
T →T * F | F
F →( E ) | id 

2)构造LR(0)项目集规范族
3.4 自下而上分析|3.5 LR分析器
3.4 自下而上分析|3.5 LR分析器
3.4 自下而上分析|3.5 LR分析器
3.4 自下而上分析|3.5 LR分析器
3.4 自下而上分析|3.5 LR分析器
3.4 自下而上分析|3.5 LR分析器
3.4 自下而上分析|3.5 LR分析器

上一篇:图像超分辨率 之 GLEAN论文解读与感想


下一篇:【Python】利用skorch进行深度学习