我正在尝试为布尔运算符NAND构造一个CFG。这就是我到目前为止所知道的:
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
发布于 2014-03-03 22:53:28
您可以执行以下操作
boolexp --> boolexp NAND boolterm
boolexp --> boolterm
boolterm --> (boolexp)
boolterm --> True | False
在a NAND b NAND c
的情况下,您将获得唯一的派生
boolexp(a NAND b) NAND boolterm(c)
https://stackoverflow.com/questions/22149743
复制相似问题