?如果對于一部文法中,存在至少一個句子有兩個或者兩個以上的語法樹則該文法是二義性的。
我們可以以上面的例子進行解釋,對于第棵個語法樹,我們可以看到是先進行了加法運算再進行的乘法運算,因為需要先把E+E作為整體運算完后再成為E*E的右部后再進行下一步的乘法運算。
而同理我們可以看出右邊的那棵語法樹是先進行的乘法運算然后再進行的加法運算。
這個句子產生二義性的原因在于:
- 沒有定義乘法運算與加法運算的優先級
- ‘+’與‘*’的自身結合規則不明確?
如果要消除二義性我們定義乘法的優先級比加法高,所以先進行乘法運算:
E->E+T|T
T->T*F|F
F->(F)|i
對于Chomsky分類有以下內容:
?