显然,这是因为这
容易行走时的第一棵树,它正确地显示来自这两个文件的信息。
public class Program
{
private static ParserRuleContext getTree(String file) throws Exception
{
InputStream input = new FileInputStream(file);
Reader reader = new InputStreamReader(input);
ANTLRInputStream inputStream = new ANTLRInputStream(reader);
JavaLexer lexer = new JavaLexer(inputStream);
CommonTokenStream tokens = new CommonTokenStream(lexer);
JavaParser parser = new JavaParser(tokens);
ParserRuleContext tree = parser.compilationUnit(); // parse
return tree;
}
public static void main(String args[]) throws Exception
{
ParserRuleContext tree1 = getTree("E:\\Users\\nessy\\IdeaProjects\\AntlrTest\\src\\in1.java");
ParserRuleContext tree2 = getTree("E:\\Users\\nessy\\IdeaProjects\\AntlrTest\\src\\in2.java");
tree1.addChild(tree2);
ParseTreeWalker walker = new ParseTreeWalker(); // create standard walker
JavaWalker extractor = new JavaWalker();
walker.walk(extractor, tree1); // initiate walk of tree with listener
}
}
通常,Antlr4不支持对分析树的直接修改。可能会更好地支持一步,并提出关于您想要做什么的更多细节,可以在何处以及如何实施泛型。 – GRosenberg
不幸的是,除了这种方法之外,没有办法实现泛型。猜猜我会深入到构造函数中,并试图找出那个int参数的作用>:o。 – nestharus