LALR(2) 是否能够自然地处理悬空的 else 情况(没有任何特殊规则,如 LALR(1))?
谢谢
不,悬而未决的 else 问题是一个模棱两可的问题,所以再多的前瞻也无济于事。
这是模棱两可的,但是,这不是问题,因为表现良好的 LALR 解析器生成器将通过选择 shift 而不是 reduce 选项来解决模棱两可的问题。这就是你想要的——“else”与前面的“if”语句相匹配。所以结论是:没有问题。您只需要了解解析器生成器为所有移位减少歧义所做的默认选择。这个默认值可以被消除歧义的规则或类似 "yacc" 中的 "%prec" 操作符所覆盖。
但这是一个更高级的话题。