parsing - 这个语法是 LR(1) 而不是 SLR(1)?

标签 parsing grammar conflict context-free-grammar lr

我有以下语法,有人告诉我是 LR(1) 但不是 SLR(1):

S ::= a A | b A c | d c | b d a

A ::= d


我不明白这是为什么。你将如何证明这一点?

最佳答案

我没有足够的声誉来评论上述答案,我对这个问题有点晚了,但是......

我在其他地方看到过这种语法作为一个例子,而 OP 实际上打错了字。它应该是:

小号 ::= 一个 | b 一个 | |直流 |乙

一个 ::= d

的第一个子句小号 是 ' 一个 a',而不是 'a 一个 '。

在这种情况下,A 的 FOLLOWS 设置为 { $, a, c} 并且在状态 8 中存在 SLR 冲突。

关于parsing - 这个语法是 LR(1) 而不是 SLR(1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505717/

相关文章:

java - 如何将日期解析为 EEE MMM dd HH :mm:ss zzz yyyy format?

python - 使用 Universal Feed Parser 获取日期时出现问题

javascript - JavaScript 语法中有效的左侧表达式是什么?

ruby - 了解 Ruby 中赋值和逻辑运算符的优先级

JavaScript:扩充对象/函数原型(prototype)避免名称冲突

javascript - htaccess 与 ajax 脚本冲突

git - 如何使用 git difftool 区分 merge 冲突?

c++ - 如何解析表示树状数据结构的字符串

c# - 我可以将 Int.TryParse 更改为在解析不成功时返回 -1 而不是零吗?

c++ - 如何从 C++ 标准推断数组 [] 的优先级高于指针?