没有方法 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+'
编程:状态+;
然后,找不到初始符号去遍历树。
我在使用访问者 类 时遇到了 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+' 编程:状态+; 然后,找不到初始符号去遍历树。