证明不是 LALR(1) 的 LR(1) 文法必须只有减少/减少冲突

问题描述

有人可以向我解释为什么不是 LALR(1) 的 LR(1) 语法必须只有减少/减少冲突

解决方法

因为如果有 shift-reduce 冲突,它也会存在于 LR(1) 解析器中。

每本介绍 LALR 解析的教科书都很好地证明了这一点。 LALR 算法将具有相同状态集的状态合并,因此合并状态中可能的移位动作与每个原始状态中的相同。此外,合并状态中的每个归约动作都至少处于原始状态之一。因此,如果合并状态中的归约动作与转移动作发生冲突,则它也必须与归约动作出现的原始状态中的转移动作发生冲突。