(2) 对于合并同心集后的项目集的转换函数仍为同心集,因为相同的心之转换函数的心仍相同,即仍属同心集,所以合并同心集后转换函数为自动合并,如例中I3和I6为同心集,它们的转换函数分别为: I3: GO(I3,a)= I3 GO(I3,b)= I4 GO(I3,B)= I8 I6: GO(I6,a)= I6 GO(I6,b)= I7 GO(I6,B)= I9 然而,I3和I6,I4和I7,I8 和I9分别都为同心集。 (3) 若文法是LR(1)文法,合并同心集后若有冲突也只可能是归约-归约冲突,而不可能产生移进-归约冲突 对(3)的证明不防假设某LR(1)文法的项目集Ik 与Ij为同心集,其中: Ik 为:[A→α·,u1] [B→β·aγ,b] Ij 为:[A→α·,u2] [B→β·aγ,c] 其中u1,u2分别为超前搜索符集合,因为假设文法是LR(1)的,所以不可能有移进-归约冲突,也就是在Ik 中{u1}∩{a}= ![]() ![]() ![]() ![]() ![]() ![]() (4) 合并同心集后对某些错误发现的时间会产生推迟现象,但错误的出现位置仍是准确的。这意味着LALR(1)分析表比LR(1)分析表对同一输入串的分析可能会有多余归约。这个问题将在后面用例子来说明。 |