gpt4 book ai didi

java - ASTNode 的 accept() 方法是做什么的,它是如何使用 ASTVisitor 的?

转载 作者:搜寻专家 更新时间:2023-11-01 03:44:50 24 4
gpt4 key购买 nike

ASTNode 的accept 方法是干什么的(javadoc 帮不了什么忙。。。)什么时候调用visit(Expression node) 方法?这是我需要如何使用它的示例代码:

final List<Expression> listi = new ArrayList<Expression>();
String stringi = opi.generate(entryContract, true_false_maybe);
// stringi representes an expression, for example "g!=h".
parser.setSource(stringi.toCharArray());
unit = (CompilationUnit) parser.createAST(null);
ASTNode astRoot = unit.getRoot();
astRoot.accept(new ASTVisitor() {
public boolean visit(Expression node) {
listi.add(node);
return true;
}
});

谢谢

最佳答案

我猜你的 Expression 类是 ASTNode 类的子类型,而 ASTVisitor 类提供了其他访问方法(肯定会是空),接受其他 ASTNode 子类作为参数。

它是 GoF Visitor Design Pattern 的一个实现(也在 Wikipedia 中描述)。

ASTNode 上的accept 方法只会调用访问者实现上的visit 方法,将自身作为参数传递给visit 方法。

关于java - ASTNode 的 accept() 方法是做什么的,它是如何使用 ASTVisitor 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com