二義性文法的理解和消除方法

給定文法G,如果存在句子s,它有兩棵不同的分析樹,那麼稱G是二義性文法
從編譯器角度,二義性文法存在問題:
同一個程序會有不同的含義
因此程序運行的結果不是唯一的
一個句子有多於一棵分析樹,僅與文法和句子有關,與採用的推導方式無關。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

懸空else問題

在複合if語句中,可能then多於else,使得else不知與哪個then結合.一般原則是右結合,即else與左邊最靠近的then結合。改寫文法的根據是將S分爲完全匹配(MS)和不完全匹配(UMS)兩類,並且在UMS中規定else右結合。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
然而,懸空else問題不能夠完全解決問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章