给定文法G,如果存在句子s,它有两棵不同的分析树,那么称G是二义性文法 从编译器角度,二义性文法存在问题: 同一个程序会有不同的含义 因此程序运行的结果不是唯一的 一个句子有多于一棵分析树,仅与文法和句子有关,与采用的推导方式无关。 悬空else问题 在复合if语句中,可能then多于else,使得else不知与哪个then结合.一般原则是右结合,即else与左边最靠近的then结合。改写文法的根据是将S分为完全匹配(MS)和不完全匹配(UMS)两类,并且在UMS中规定else右结合。 然而,悬空else问题不能够完全解决问题