如何证明语法是模棱两可的? S - > (S)| SS |()

时间:2017-04-13 23:27:42

标签: grammar context-free-grammar

我对语法很新,并且想知道是否有人可以帮我确定使用解析树如何使用下面的语法是不明确的?我知道它需要有两个不同的字符串可以创建。

S -> (S)|SS|()

我可以将它转换为chomsky普通形式和greibach,但模棱两可让我感到困惑。

1 个答案:

答案 0 :(得分:3)

证明语法含糊不清的最简单方法是找到一个包含两个不同解析树的句子。 (或两个不同的最右边的推导,这是完全相同的。或者,如果你愿意,两个不同的最左边的推导。)

S → S S | X总是含糊不清(对于任何X),因为句子X X X有两个不同的解析树:

     S            S
    / \          / \
   /   S        S   \
  /   / \      / \   \
 X   X   X    X   X   X