gpt4 book ai didi

grammar - BNF 语法歧义

转载 作者:行者123 更新时间:2023-12-04 11:42:32 26 4
gpt4 key购买 nike

最近在想下面的BNF

A -> x | yA | yAzA

where x,y,z are terminals.

我很确定这个语法是模棱两可的,但是如何使它不含糊呢?

最佳答案

如果一个特定的字符串可以有多个解析树,则语法是不明确的。在您的语言中,字符串 yyxzx可以有这两个解析树之一:

    A                  A
/ \ /|\`\
y A y A z A
/|\`\ / \ \
y A z A y A x
| | |
x x x

因此语法是有歧义的。

这实际上相当于类 C 语言中臭名昭著的“if/then/else”歧义,其中 y=if , z=else , 和 x=statement . http://en.wikipedia.org/wiki/Dangling_else .我建议查看该页面以获取有关如何解决此问题的想法。

关于grammar - BNF 语法歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9245215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com