为什么这是一个有歧义的语法?

why is this a ambiguous grammar?

我有以下练习:

证明此语法有歧义:

S-> bA | aB
A-> a | aS | bAA
B-> b | bS | aBB

根据我读过的语法的理论,如果:

1) A string W ∈ L(G), generates two differents trees 
2) Makes 2 or more left/right derivations

所以,我无法确定确认 1) 的字符串,所以我已经 尝试使用 2)。据我所知,只需要 2 个反身推导就可以使我的语法变得模棱两可?

例如:

w=bbaa S->bA->bbAA->bbaA->bbaa 
                ^^--here i made two reflexive/recursive derivation              

这是否如我所描述的那样正确或需要更详细的信息?

PD:获取字符串生成两个三的有什么技巧吗??

不,这不是歧义的正确证明。

您对第 2 点的理解有误。文法 G 是有歧义的,当且仅当 L(G) 中的某些 w 具有不止一个最左(或最右)推导。你已经展示了 w=bbaa 的一个最左边的推导,所以如果你可以展示另一个(即,同一个字符串的不同的最左边的推导),那将证明歧义。但是,似乎没有,因此您必须选择其他字符串。

请注意,这与推导是否涉及recursive/reflexive产生式的应用无关。