从ANTLR4中的Parser访问解析数据

jav*_*rer 0 antlrworks antlr4

我正在通过我的自定义语法处理我的输入文件并提取令牌并将其返回到HashMap.在ANTLR 3中,我能够通过rule()在解析器上调用方法并获取HashMap类似的东西来解析文件parser.record.

这似乎在ANTLR 4中不起作用.我参考了这本书,看来我必须调用parser.init()才能开始解析但我在解析器中看不到任何方法.

我使用ANTLRWorks 2生成我的词法分析器和解析器文件.我没有生成监听器类.

Sam*_*ell 5

在ANTLR 4中,您可以通过调用与条目规则名称匹配的方法来开始解析.如果调用语法中的规则,则rule可以通过调用开始解析rule().如果调用语法中的规则init,那么您将通过调用开始解析init().

请注意,ANTLR 4中的Java目标不允许您调用规则rule,因此如果您的语法中有这样的规则,则需要在语法编译之前重命名它.