首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何消除NAND上下文无关文法中的歧义

如何消除NAND上下文无关文法中的歧义
EN

Stack Overflow用户
提问于 2014-03-03 22:48:10
回答 1查看 1.5K关注 0票数 2

我正在尝试为布尔运算符NAND构造一个CFG。这就是我到目前为止所知道的:

代码语言:javascript
运行
复制
boolexp --> boolexp NAND boolexp
boolexp --> (boolexp)
boolexp --> True | False

问题是当输入类似于"False NAND False NAND (True NAND True)“时

这显然是模棱两可的,因为可能有两个不同的解析树,这取决于派生。

如何消除这种歧义并重新设计我的CFG??

我希望NAND运算符是左关联的。也就是说,如果输入是A nand B nand C,我希望它是(A nand B) nand C

EN

回答 1

Stack Overflow用户

发布于 2014-03-03 22:53:28

您可以执行以下操作

代码语言:javascript
运行
复制
boolexp --> boolexp NAND boolterm
boolexp --> boolterm
boolterm --> (boolexp)
boolterm --> True | False

a NAND b NAND c的情况下,您将获得唯一的派生

代码语言:javascript
运行
复制
boolexp(a NAND b) NAND boolterm(c)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22149743

复制
相关文章

相似问题

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