有兴趣的读者也可证明该二义性文法用LR(k)方法仍不能解决此冲突。可以用LR(1)方法检验该二义性文法不是LR(1)文法。
然而我们用优先关系和结合性可以解决这类冲突,假如我们仍规定'*'号优先级高于'+'号,且它们都服从左结合,那么在I7中,由于'*' ·> '+'所以遇'*'移进,又因'+'服从左结合,所以遇'+'则用E→E+E归约,在I8中,由'*' ·> '+'且'*'服从左结合,因此 不论遇到'+'、'*'或'#'号都应归约,该二义性文法的LR分析表如表7.17所示。
表 7.17 对二义性表达式文法的LR分析表
状态
ACTION
GOTO
=
*
(
)
i
#
E
0
1
2
3
4
5
6
7
8
9
.
S4
.
r4
.
.
S4
r1
r2
r3
.
S5
.
r4
.
.
S5
S5
r2
r3
S2
.
S2
.
S2
S2
.
.
.
r4
.
.
S9
r1
r2
r3
S3
.
S3
.
S3
S3
.
acc
.
r4
.
.
.
r1
r2
r3
1
.
6
.
7
8