我使用访问者类遇到了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吗?
答案 0 :(得分:1)
用于检索解析树的方法的名称与所选的条目解析规则相同。如果您为条目分析规则使用了不同的名称,则将调用该方法。
答案 1 :(得分:0)
问题是你从图书中的LabeledExpr.g4语法中删除了初始符号,即' prog'并且有一个或多个统计数据' ' STAT +' 编:stat +; 然后,找不到要通过树的初始符号。