没有方法 program() 来构建解析树对象

No method prog() to build a ParseTree object

我在使用访问者 类 时遇到了 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吗?

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

问题是你把书上LabeledExpr.g4的语法首字母'prog'删掉了,有一个或多个'stats' 'stat+' 编程:状态+; 然后,找不到初始符号去遍历树。