5

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;
 }
});

谢谢

4

1 回答 1

2

我猜您的Expression类是该类的子类型ASTNode,并且ASTVisitor该类存在其他访问方法(肯定为空),并接受其他子类作为参数ASTNode

它是GoF 访问者设计模式的实现(也在Wikipedia中进行了描述)。

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

于 2010-12-01T14:10:35.597 回答