我创建了一个名为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()不存在......
我该如何解决这个问题? 谢谢 卢卡
答案 0 :(得分:1)
看看你的语法。您必须确定要使用的开始规则。通常,起始规则位于文件顶部附近和/或是少数(或仅一个)未被任何其他规则调用的之一。
无论你选择什么规则,它都会返回一个解析树上下文,它形成你的解析树的根,例如。
ParseTree tree = parser.start();