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