我正在尝试实现 Warshall 的算法来快速计算 LR(1) 闭包。
我想我了解它对 LR(0) 的工作原理:
- 图的节点是LR 项,例如
A → B • C
- 边缘是从
A → B • C
到的“过渡”C → • D
问题是,LR(1) 需要计算前瞻,我不知道如何将它们合并到算法中。
在我看来,即使我知道任何给定 LR 项目的传递闭包,我仍然需要通过所有相同的计算来确定每个项目的前瞻集是什么。
甚至可以使用 Warshall 的算法来计算规范的 LR(1) 闭包,还是仅适用于更受限制的情况(如 LR(0)、SLR(1) 等)?