LR(0)和SLR解析有什么区别?

时间:2011-09-11 12:59:31

标签: algorithm parsing compiler-construction lr

我正在研究我的编译器概念但是我有点困惑...... 谷歌搜索让我无处可定。

SLR和LR(0)解析器是同一个吗?如果没有,那么差异是什么?

3 个答案:

答案 0 :(得分:219)

答案 1 :(得分:1)

这就是我所学到的。通常LR(0)解析器可能有歧义,即表的一个框(您为创建解析器而导出)可以有多个值(或)以更好地放置它:解析器导致具有相同输入的两个最终状态。因此创建SLR解析器以消除这种歧义。为了构造它,找到导致goto状态的所有产品,在左侧找到生产符号的跟随,并且仅包括在下面出现的那些goto状态。这个转换意味着你不包括使用原始语法不可能的作品(因为状态不在下面的集合中)

答案 2 :(得分:0)

在 LR(0) 的解析表中,产生式的缩减规则放置在整行中,跨越所有终端,而在 SLR 解析表中,产生式的缩减规则仅放置在左侧的 Follow 集合中还原生产的非终端。

parsing-EMU这个工具对解析很有帮助,可以生成first、follow、LR(0)项集、LALR Evaluation等。你可以找到here