- 11
- 0
- 约5.13千字
- 约 30页
- 2016-12-10 发布于江苏
- 举报
第7章 自下而上的LRk分析方法 LRk分析器是这样一种分析程序:它总是按从左至右方式扫描输入串,并按自下而上方式进行规范归约。在这种分析过程中,它至多只向前查看k个输入符号就能确定当前的动作是移进还是归约;若动作为归约,则它还能唯一地选中一个产生式去归约当前已识别出的句柄(这里称为活前缀)。若该输入串是给定文法的一个句子,则它总可以把这个输入串归约到文法的开始符号;否则报错,指明它不是该文法的一个句子。 7.1 LRk文法和LRk分析器给定文法G,S是其开始符号。考虑该文法中一个终结符号串w的一个规范推导Sw1w2…w假定 uAvuxv 是上述推导中的一个推导步。A::x是用于该推导步的产生式。对于每一个这样的推导和推导步,仅通过扫描ux和查看v中开始的k个符号就能唯一确定选用产生式A::x,我们就称G为LRk文法。 7.2 LR0分析表的构造LR分析方法的基本原理是:把每个句柄(某个产生式的右部)的识别过程划分为若干状态,每个状态从左至右识别句柄中的一个符号,若干个状态就可识别句柄左端的一部分符号。识别了句柄的这一部分就相当于识别了当前规范句型的左起部分——规范句型的活前缀。因而,对句柄的识别就变成了对规范句型活前缀的识别。 7.3 SLR分析表的构造 LR0文法所构造出来的识别活前缀的DFA中每个状态(每个项目集)不能包含冲突项目。 许多冲突动作都可以通过考察有
原创力文档

文档评论(0)