同心集是指两个项目集它们所含的LR(0)项目相同(即不看搜索符时),而加了搜索符变成不同的LR(1)项目集。这种现象也可以看成是由于LR(1)项目集的构造使某些同心集进行了分裂。
  若文法G′为:
  (0) S′→S (2) B→aB
  (1) S→BB (3) B→b
  它的LR(1)项目集族和转换函数如图7.12,LR(1)分析表如表7.11。
图 7.12 LR(1)项目集和转换函数
  只要仔细分析该文法的LR(1)每个项目集的项目,不难发现,即使不考查搜索符,它的任何项目集中都没有动作冲突,因此实际上这个文法是LR(0)文法,读者可以自己构造它的LR(0)项目集,可以得知它的LR(0)分析器只含7个状态,而现在LR(1)分析器却含有10个状态,其中I3和I6,I4和I7,I8和I9分别为同心集。
表 7.11 LR(1)分析表
状态 ACTION GOTO
a b # S B
0
1
2
3
4
5
6
7
8
9
S3
.
S6
S3
r3
.
S6
.
r2
S4
.
S7
S4
r3
.
S7
.
r2
.
acc
.
.
.
r1
.
r3
.
r2
1 2
.
5
8
.
.
9

  如果一个文法的LR(1)分析表不含多重入口时,(或任何一个LR(1)项目集中无移进-归约冲突或归约-归约冲突)则称该文法为LR(1)文法,所构造的相应分析表称为LR(1)分析表,能使用LR(1)分析表的分析器称为LR(1)分析器或称规范的LR分析器。
  结论: LR(1)文法是无二义的。
  LR(1)项目集的构造对某些同心集的分裂可能使状态数目剧烈的增长。
  一个文法是LR(0)文法一定也是SLR(1)文法,也是LR(1)文法。反之则不一定成立。