我们希望 CommonTree 有一个 visit(OurVisitor visitor) 方法,但 CommonTree 不是生成的类。
现在,我们有这个代码
ANTLRStringStream stream = new ANTLRStringStream(sql);
NoSqlLexer lexer = new NoSqlLexer(stream);
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
NoSqlParser parser = new NoSqlParser(tokenStream);
CommonTree tree = (CommonTree) parser.statement().getTree();
我总是可以外部化遍历树,但在这种情况下调用 tree.visit(myVisitor) 并让它为树中的每个节点调用 OurVisitor.visitNode(Node node) 会很好。有没有办法做到这一点?
另外,我期待一棵树,如果我有 expr = exprType1 | exprtType2 | exprType3*,我会有一棵树
ExprType1 exp1 = expr.getExprType1();
ExprType2 exp2 = expr.getExprType2();
List<ExprType3> exp3List = expr.getExprType3()
但 CommonTree 并非如此。有没有办法做到这一点?
谢谢,院长