0
4

1 回答 1

1

在 LL(k) 解析器中准确收集这些信息,其中 k>1,需要对解析器内部结构有透彻的了解。几年前,我遇到了 ANTLR 3 的这个问题,发现唯一真正的解决方案非常复杂,以至于我成为了 ANTLR 4的合著者,因此我可以处理这个问题。

ANTLR(包括 ANTLR 4)在解析阶段消除了解析树的歧义,这意味着如果您的语法不是 LL(1),那么在解析树中执行此分析意味着您已经丢失了准确所需的信息。您需要编写自己的版本ParserATNSimulator(或包装它的自定义解释器),它不会丢失信息。

于 2013-11-11T13:24:49.567 回答