Antlr4有一个新的类ParseTreeWalker。但是我该怎么使用它?我正在寻找一个最小的工作示例。我的语法文件是'gram.g4',我想解析一个名为'program.txt'的文件。
到目前为止,这是我的代码。(假设ANTLR已经运行了我的语法文件,并创建了所有的gramBaseListener,gramLexer等等):
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;
import static org.antlr.v4.runtime.CharStreams.fromFileName;
public class launch{
public static void main(String[] args) {
CharStream cs = fromFileName("gram.g4"); //load the file
gramLexer lexer = new gramLexer(cs); //instantiate a lexer
CommonTokenStream tokens = new CommonTokenStream(lexer); //scan stream for tokens
gramParser parser = new gramParser(tokens); //parse the tokens
// Now what?? How do I connect the above with the below?
ParseTreeWalker walker = new ParseTreeWalker(); // how do I use this to parse program.txt??
}}
我正在使用Java,但我认为其他语言类似。
ANTLR文档 (http://www.antlr.org/api/Java/index.html) 缺少示例。虽然网络上有许多教程,但它们大多是针对ANTLR版本3的。使用版本4的教程很少能正常工作或者已经过时(例如,没有parser.init()功能,而像ANTLRInputStream这样的类已经过时)。
提前感谢任何能够提供帮助的人。