我怎么能证明这个语法含糊不清?

cro*_*wso 5 grammar

S -> bA|aB
A -> a|aS|bAA
B -> b|bS|aBB
Run Code Online (Sandbox Code Playgroud)

除了试图找到一个会生成两个解析树的字符串之外的任何简单方法?

有人可以给我一个可以证明这一点的字符串.

小智 18

但是有一个字符串: bbaaba

S -> bA -> bbAA -> bbaA -> bbaaS -> bbaabA -> bbaaba
S -> bA -> bbAA -> bbaSA -> bbaaBA -> bbaabA -> bbaaba
Run Code Online (Sandbox Code Playgroud)


Jim*_*wis 5

没有简单的方法来证明无上下文语法模糊 - 事实上,通过简化Post对应问题, 这个问题是不可判定的.

  • @user:没有任何快捷方式 - 基本上只生成所有可能的解析树,并查找其中两个产生相同字符串的树.最终会在有限的时间内检测到一个含糊不清的语法......一个明确的语法,而不是那么多!(否则问题将是可判定的).由于Hopcroft和Ullman提到了一个特定的字符串,所以可能会有一些有趣的东西.(不是试图围绕解决方案跳舞,我只是没有完成它.) (3认同)
  • @user:根据我的Hopcroft和Ullman的副本,您应该考虑字符串"aaabbabbba",并使用您指定的语法找到左派生,右派生和解析树.希望通过手头练习4.8的解决方案,其余的将变得清晰! (2认同)