1

给定一个 CFG: S--> aS | Sa | b 我找不到任何可以由两个不同的 pars 树组成的字符串。

中间状态已经离开递归但没有消除是否有任何字符串显示 CFG 歧义?任何人都可以帮助PLZ。

4

1 回答 1

1

如果您应用规则 1、2 和 3,您将获得:

S -> aS -> aSa -> aba

如果你应用规则 2、3 和 1,你会得到相同的字符串:

S -> Sa -> aSa -> aba

有歧义。

找到了一个检查歧义的工具:http ://services.brics.dk/java/grammar/demo.html

输入语法并检查analyze the grammar for potential ambiguity

S : "a" S
  | S "a"
  | "b"

结果:

*** vertical ambiguity: S[#1] <--> S[#2]
    ambiguous string: "aba"
the grammar is ambiguous!
于 2014-11-01T11:38:18.130 回答