0

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

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

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

4

1 回答 1

5

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

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

于 2013-03-14T21:04:48.733 回答