回 帖 发 新 帖 刷新版面

主题:这个文法为什么会出现歧义

有一下一个文法:
  stmt->if expr then stmt
        |if expr then stmt else stmt
        |other
  other 表示其它语句
怎么会有歧义,请帮忙分析一下

回复列表 (共2个回复)

沙发

两个候选式的左端一样,所以产生 if expr then if expr then else if expr then else...的句子时,大概会有问题。没仔细研究,估计是else 与哪个 if 匹配没定义的问题。

板凳

对,是other与if的配对问题,(在有些语言里面要求else与和它最近的if配对)但在编译的过程中很难判断,你可以化个语法树看看

我来回复

您尚未登录,请登录后再回复。点此登录或注册