从ANTLR4中的Parser访问解析数据

时间:2013-03-14 18:24:09

标签: antlrworks antlr4

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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