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

标签 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吗?

最佳答案

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

关于java - 没有方法program()来构建解析树对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685615/

相关文章:

parsing - 如何更正 token ,然后从ANTLR中的失败谓词中恢复?

java - 使用 ANTLR4 解析公式

c++ - 包括使用 cmake 的 antlr4 c++ 运行时

java - 如何在JAVA中获取剪贴板中文件的绝对路径并获取粘贴位置

java - 在java中检查电子邮件抄送字段是否有错误电子邮件地址的最佳方法是什么

java - 如何使spring boot永远不会发出 session cookie?

parsing - 为什么这个 ANTLR4 语法有歧义?

antlr - 如何在 ANTLR3 中制作 TreeParser?

java - IzPack 错误 2 - "the file version is different from the compiler version"

java - 将无效字符视为 ANTLR4 词法分析器中的单个标记