据我所知(阅读)关于生成 LR-Parsing 表的是列(=令牌),其中减少操作被写入特定状态的单元格,取决于终端,即在 FOLLOW 集中的简化符号。
那是对的吗?*
如果是这样,那么我想到的下一个问题是:是什么决定了下一个状态,在归约后发生转换。
例如,在状态 5 中,r6 意味着减少符号,然后转换到状态 6(并且可能考虑 goto-table,进一步转换到哪个状态)
解析表或 DFA 的状态——LR 解析器是——是图形表示中的路径。作为自下而上的解析器,LR-Parser 通过寻找回到起始符号/接受状态的路径来工作。解析表试图找到每一个这样的路径。
对我来说,因此选择正确的还原状态似乎很复杂。
因为它密切依赖于当前状态之前的状态/ItemSets 以及根据尚未读取的输入标记完全继承当前状态的状态。
与 reduce-actions 相比,shift-和 goto-actions 似乎很容易,因为它们只是移动点位置时出现的转换。
谢谢
PS:*如果正确,那么使用FOLLOW-Set作为附加功能生成LR1Items不是“双重麻烦”吗?