Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 LL(k) 解析器中准确收集这些信息,其中 k>1,需要对解析器内部结构有透彻的了解。几年前,我遇到了 ANTLR 3 的这个问题,发现唯一真正的解决方案非常复杂,以至于我成为了 ANTLR 4的合著者,因此我可以处理这个问题。
ANTLR(包括 ANTLR 4)在解析阶段消除了解析树的歧义,这意味着如果您的语法不是 LL(1),那么在解析树中执行此分析意味着您已经丢失了准确所需的信息。您需要编写自己的版本ParserATNSimulator(或包装它的自定义解释器),它不会丢失信息。
ParserATNSimulator