有没有一套确定语法歧义的方法?

时间:2013-03-02 15:25:42

标签: grammar context-free-grammar bnf ambiguous-grammar

我们正在学习课堂上的歧义,并且下面的语法是作为模糊语法的一个例子。我只是没有看到它是多么模糊。是否存在人们用来确定歧义的设定模式或方法,或者它就像一个逻辑谜题,你必须通过组合来找到语法中的歧义句子?我在网上看到的例子大多已经给出了含糊不清的句子,但是你怎么在第一时间找到这句话呢?我很感激你的帮助,谢谢你。

< stmt_list> ==> < stmt>

               | < stmt> ; < stmt_list>

< var> ==> A | B | C

< stmt> ==> < var> + < var>

               | < var> - < var>

               | < var>

1 个答案:

答案 0 :(得分:2)

一般来说,determining whether a grammar is ambiguous or not is undecidable.所以是的,在语法中找到一个含糊不清的句子会减少到一个非常困难的逻辑难题。然而,解决特定案例和发现启发式是一个活跃的研究领域。这是找到歧义的一个相当好的工具:http://www.brics.dk/grammar/。该网页包含一个纸张的链接,解释它是如何工作的,但诚实地说,这是我的头脑。