首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是文法LR(1)吗?

这是文法LR(1)吗?
EN

Stack Overflow用户
提问于 2015-03-28 02:49:38
回答 1查看 690关注 0票数 1

对于这个语法是否含糊不清有点困惑。

代码语言:javascript
复制
C' -> C
C -> d C u C
C -> d C
C -> ε

我试着为这个建立DFA,但我在其中一个州得到了这个:

代码语言:javascript
复制
C -> d C DOT u C, $
C -> d C DOT, $

这不是一个转移-减少冲突,所以它肯定意味着语法不是LR(1)?或者它是否减少了,因为$和u都在下面的C集合中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-28 03:25:26

它确实有一个转变-减少冲突。这是通过选择shift生成的状态机。冲突处于第四状态。

我应该指出,你的问题有点离题。语法可以是明确的,但仍然不能LR(1)。

但这一次恰好是模棱两可的。考虑一下字符串ddudu。两个最左边的导子是

代码语言:javascript
复制
C'->C->dCuC->ddCuCuC->dduCuC->ddudCuC->dduduC->ddudu
C'->C->dCuC->ddCuC->dduC->ddudCuC->dduduC->ddudu

这些语法的存在表明语法是模糊的。

证明一个普通的语法模棱两可是一个不可判定的问题:它不可能有算法。幸运的是,这个问题不难解决。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29313104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档