3.4 自下而上分析
3.4.1 归约
3.4.2 句柄
句型的句柄是和**某产生式右部匹配**的**子串**,并且,把它归约成该产生式左部的非终结符代表了**最右推导过程的逆过程的一步**。
S → aABe
A → Abc | b
B → d
句柄的右边仅含终结符
如果文法二义,那么句柄可能不唯一
3.4.3 用栈实现移进-归约分析
移进-归约分析器在分析输入串id1 * id2 + id3时的动作序列:
3.5 LR分析器
本节介绍LR(k)分析技术
特点
适用于一大类上下文无关文法
效率高
主要介绍构造LR分析表的三种技术
简单的LR方法(简称SLR)
规范的LR方法
向前看的LR方法(简称LALR)
3.5.1 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 来源: https://www.cnblogs.com/hardworking-fairy/p/14750214.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。