没有方法程序()来构建Parse Tree对象

时间:2015-04-16 20:46:41

标签: java antlr antlr4

我使用访问者类遇到了ANTLR 4的问题。 我尝试编写以下代码:

import bla.gen.InputLexer;
import bla.gen.InputParser;
import org.antlr.v4.runtime.ANTLRFileStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;

public class Main {
    public static void main(String[] args) throws Exception {
        InputLexer lexer = new InputLexer(new ANTLRFileStream("pl_example.lp"));
        InputParser parser = new InputParser(new CommonTokenStream(lexer));
        parser.setBuildParseTree(true);
        ParseTree tree = parser.prog();
        ParserVisitor visitor = new ParserVisitor();
        visitor.visit();

    }
}

我尝试模仿书中示例中的代码: https://pragprog.com/titles/tpantlr2/source_code

(我无法访问这本书,只有例子)。

但我收到错误,因为方法parser.prog()不存在...

我使用的是ANTLR 4.5。

您知道如何使用此版本生成ParseTree吗?

2 个答案:

答案 0 :(得分:1)

用于检索解析树的方法的名称与所选的条目解析规则相同。如果您为条目分析规则使用了不同的名称,则将调用该方法。

答案 1 :(得分:0)

问题是你从图书中的LabeledExpr.g4语法中删除了初始符号,即' prog'并且有一个或多个统计数据' ' STAT +' 编:stat +; 然后,找不到要通过树的初始符号。