使用ANTLR 4.7.1生成的解析器中的问题

时间:2017-12-17 13:02:53

标签: java antlr4

我创建了一个名为goal.g4的语法

然后,我从终端(在Mac上)启动了 “java -cp”antlr-4.7.1-complete.jar“org.antlr.v4.Tool goal.g4 -listener -visitor” 正确终止。

然后我使用以下java代码:

input = new ANTLRInputStream(fis); /* where fis is a FileInputStream */
goalLexer lexer = new goalLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
goalParser parser = new goalParser(tokens);
parser.start();

我的观点是:如何从解析器中检索ParseTree对象? 正如所建议的那样,我用start()方法替换了init()方法。 然而,eclipse告诉我parser.start()不存在......

我该如何解决这个问题? 谢谢 卢卡

1 个答案:

答案 0 :(得分:1)

看看你的语法。您必须确定要使用的开始规则。通常,起始规则位于文件顶部附近和/或是少数(或仅一个)未被任何其他规则调用的之一。

无论你选择什么规则,它都会返回一个解析树上下文,它形成你的解析树的根,例如。

ParseTree tree = parser.start();