如果假设我有以下状态:
I1: S->TaV.,$
T -> V.,a
I2: T -> V.,a|$
我会合并这些州吗?
基本上,我想知道I1的核心是什么。是 { S->TaV。, T->V。I1 的核心还是我会说 I1 包含两个核心 - S->TaV & T->V?
Dragonbook 说,对于 LR(1) 项目集合中存在的每个核心,找到所有具有该核心的集合,并将其替换为它们的并集。
现在,如果 { S->TaV。, T->V。} 是I1的核心,那我就不合并集合了。但是,对于核心T->V。,I1 和 I2 都包含核心,因此必须用它们的并集替换。
那么我应该合并集合吗?
一些可能有用的背景细节:
最初的语法是
G: S->TaV | T
T->V | b
V->Ta | c