我正在通过自定义语法处理输入文件并提取标记并将其返回到HashMap
。在ANTLR 3中,我能够通过在解析器上调用rule()
方法并获取HashMap
之类的parser.record
来解析文件。
这似乎在ANTLR 4中不起作用。我参考了这本书,似乎我必须调用parser.init()
来开始解析,但我在解析器中看不到任何方法。
我使用ANTLRWorks 2生成我的词法分析器和解析器文件。我没有生成监听器类。
答案 0 :(得分:5)
在ANTLR 4中,您可以通过调用与条目规则名称匹配的方法来开始解析。如果语法中的规则被称为rule
,则可以通过调用rule()
开始解析。如果您的语法中的规则被称为init
,那么您将通过调用init()
开始解析。
请注意,ANTLR 4中的Java目标不允许您使用名为rule
的规则,因此如果您的语法中有这样的规则,则需要在语法编译之前重命名它。 / p>