二义性文法的 LR 分析
每个二义性文法都不是 LR 的
但是某些二义性文法更加简短,描述更方便
如 I7 和 I8 具有移进归约冲突
使用优先级和结合性解决冲突
对于 I7,由于乘号优先级高于加号,所以当下一个输入符号为乘号时,我们优先进行移进;当输入符号为加号时,由于加号具有左结合性,我们优先处理状态内的加号,所以进行归约
对于 I8,由于乘号的优先级高,所以进行归约
LR 分析中的错误处理
语法错误的检测,当 LR 分析器在查询分析表并发现一个报错条目的时候,就检测到了一个语法错误
错误恢复策略:
(1)恐慌模式
(2)短语层次
恐慌模式已经做过介绍,这里对于短语层次错误恢复进行介绍
短语层次错误恢复
检查 LR 分析表中的每一个报错条目,并根据语言的使用方法来决定形成这个错误的原因,然后构造出适当的恢复进程