- 14
- 0
- 约1.28万字
- 约 64页
- 2019-12-24 发布于广东
- 举报
状态 ACTION a b c d $ GOTO S A B 6 7 8 9 10 S8 r6 r6 r6 r6 r6 S10 r3 r3 r3 r3 r3 r5 r5 r5 r5 r5 0 1 2 3 4 5 S4 S5 S6 acc S4 S5 S6 r1 r1 r1 r1 r1 r2 r2 r2 r2 r2 r4 r4 r4 r4 r4 1 2 3 7 9 文法G[S]的LR(0)分析表 返回 文法G的全部LR(0)项目是构造识别文法所有规范句型活前缀的DFA的基础。我们将会看到这种DFA的每一个状态和有穷个LR(0) 项目的集合相关联。 一个LR(0)项目指明了对文法规范句型活前缀的不同识别状态, 由于不同的LR(0)项目反映了在分析过程中栈顶的不同情况,因此,我们可以根据圆点位置和圆点后是终结符还是非终结符,将一个文法的全部LR(0)项目进行分类。 4.5.2 LR(0)分析法 直观上说, 4.5.2 LR(0)分析法 LR(0)项目分类如下: 归约项目 移进项目 待约项目 接受项目 4.5.2 LR(0)分析法 ① 归约项目,形如A→α?,其中α∈(VN∪VT)*,即圆点在最右端的项目,它表示一个规则的右部已分析完, 句柄已形成,应该按此规则进行归约。 ② 移进项目,形如A→α? aβ,其中α, β∈(VN∪VT)* ,即圆点后面为终结符的项目, 它表示期待从输入串中移进一个符号,以待形成句柄。 4.5.2 LR(0)分析法 ③ 待约项目,形如A→α? Bβ,其中α, β∈(VN∪VT) * , B ∈VN*,即圆点后面为非终结符的项目,它表示期待从余留的输入串中进行归约得到B,然后分析A的右部。 ④ 接受项目,形如S→S? ,其中S为文法的开始符号,即文法开始符号的归约项目。 S为左部的规则仅只有一个,它是归约项目的特殊情况,它表示整个句子已经分析完毕,可以接受。 4.5.2 LR(0)分析法 构造识别文法所有规范句型活前缀DFA的方法 : 在这个项目集中,所有的LR(0)项目识别的活前缀是相同的,我们可以利用闭包函数(CLOSURE)来求DFA一个状态的项目集。 对于构成识别文法规范句型活前缀DFA的每一个状态是由若干个LR(0)项目所组成的集合,称为LR(0)项目集 , 4.5.2 LR(0)分析法 为了使“接受”项目唯一,我们总对文法G进行拓广。假定文法G的开始符号为S,在文法G中引入一个新的开始符号S,并加进一个新的规则S →S,从而得到文法G的拓广文法G。 (1) 定义闭包函数 设I是拓广文法G的一个LR(0)项目集,定义和构造I的闭包CLOSURE(I)如下: 4.5.2 LR(0)分析法 I中的任何一个项目都属于 CLOSURE(I)。 (b) 若A→α? Bβ属于CLOSURE(I), 则每一形如 B →?γ的项目 也属于CLOSURE(I)。 (c) 重复(b)直到CLOSURE(I)不再增 大为止。 4.5.2 LR(0)分析
原创力文档

文档评论(0)