給定文法G,如果存在句子s,它有兩棵不同的分析樹,那麼稱G是二義性文法
從編譯器角度,二義性文法存在問題:
同一個程序會有不同的含義
因此程序運行的結果不是唯一的
一個句子有多於一棵分析樹,僅與文法和句子有關,與採用的推導方式無關。
懸空else問題
在複合if語句中,可能then多於else,使得else不知與哪個then結合.一般原則是右結合,即else與左邊最靠近的then結合。改寫文法的根據是將S分爲完全匹配(MS)和不完全匹配(UMS)兩類,並且在UMS中規定else右結合。
然而,懸空else問題不能夠完全解決問題