2013-12-11 50 views
1

在我的筆記本必要條件我寫道:的語法歧義

的語法歧義的必要條件是

  1. 它包含規則A->BB,其中A和B都是非終結。
  2. 或者它包含規則A->a|b,其中A是非終端,{a,b}是終端。

請您確認或反駁本聲明?

+0

曖昧語法的定義是明確的:有一個以上的推導在語言的句子。我不記得一個算法解決方案來發現一個語法是否含糊。 – Apalala

回答

1

這不是真的,因爲還有其他不明確的語法沒有這些規則。

例如cc可以通過A -> Bc -> cc而且通過A -> cC -> cc在下面的語法來製備:

A -> Bc | cC 
B -> c 
C -> c 
+1

謝謝。老師是否有可能談論某種簡化算法的產物 - 語法?你的例子可以簡化爲A - > cc | CC。 – Josef

+0

這可能是因爲老師用這些規則給出了含糊不清的語法的例子。雖然我不明白爲什麼使用第二種規則會導致模糊的語法。 –

+0

@Grant其實'A - > cc | cc'與寫作'A - > cc'是相同的,它不*不明確。請記住,形式語法是形式爲'α - >β'的**集**。並且由於集合不包含重複,因此{α - >β,α - >β} = {α - >β}。但是,您可以在答案中簡化語法:'A - > Ac | cA | C'。 – Bakuriu