首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SLR(1)或LR(1)解析

SLR(1)或LR(1)解析
EN

Stack Overflow用户
提问于 2013-10-17 19:11:13
回答 1查看 979关注 0票数 3

如果我们找到一个类型的乘积,我们会发现如下(A)

一个→α

α这里可以是ε吗?

如下面的示例所示:

P_ aPa _ bPb _ε

如果α可能是ε,则它不是LR(1)

EN

回答 1

Stack Overflow用户

发布于 2013-10-17 19:46:13

是的,α可以是ε。α表示任意字符串,因为ε是字符串,所以它是可能的α。

因此,语法不是LR(1),因此也不是SLR(1) (因为所有SLR(1)语法也都是LR(1))。

要看到这一点,我们可以构造LR(1)配置集:

代码语言:javascript
复制
(1)  P' -> .P     ($)
     P  -> .aPa   ($)
     P  -> .bPb   ($)
     P  -> .      ($)

(2)  P  -> a.Pa   ($)
     P  -> .aPa   (a)
     P  -> .bPb   (a)
     P  -> .      (a)

在这一点上,我们可以停止,因为有一个shift/reduce描述:考虑到终端a,我们无法判断是移动a还是减少P→ε。

使用一些更高级的数学,您可以证明这种语言没有LR(1)语法(所有偶数长度回文的语言)。这是因为具有LR(1)语法的语言正是确定性上下文无关语言,而所有偶数长度回文集都不是确定性上下文无关语言。

希望这能有所帮助!

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

https://stackoverflow.com/questions/19435201

复制
相关文章

相似问题

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