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 ビジター デザイン パターン(ウィキペディアでも説明されています)の実装です。

acceptメソッドon は、ビジター実装のメソッドを呼び出すだけで、それ自体をメソッドのパラメーターとして渡しASTNodeます。visitvisit

于 2010-12-01T14:10:35.597 に答える