使用 ANTLR 4.7.1 生成的解析器中的问题
issue in the generated parser with ANTLR 4.7.1
我创建了一个名为 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() 方法。
但是日食告诉我 parser.start() 不存在...
我该如何解决这个问题?
谢谢
卢卡
看看你的语法。您必须确定要使用的开始规则。通常开始规则位于文件顶部附近 and/or 是少数(或仅有的)不被任何其他规则调用的规则之一。
无论您选择什么规则,它都会 return 一个解析树上下文,它构成了解析树的根,例如
ParseTree tree = parser.start();
我创建了一个名为 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() 方法。 但是日食告诉我 parser.start() 不存在...
我该如何解决这个问题? 谢谢 卢卡
看看你的语法。您必须确定要使用的开始规则。通常开始规则位于文件顶部附近 and/or 是少数(或仅有的)不被任何其他规则调用的规则之一。
无论您选择什么规则,它都会 return 一个解析树上下文,它构成了解析树的根,例如
ParseTree tree = parser.start();