2010-12-01 2 views
3

Что делает метод accept ASTNode (javadoc не очень помог ...), и когда будет вызван метод visit(Expression node)? Вот пример кода, как мне нужно использовать:Что делает метод accept() ASTNode и как он использует ASTVisitor?

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

Спасибо

ответ

1

Я предполагаю, что ваш Expression класс является подтипом ASTNode класса, и настоящие другие методы посещения ASTVisitor класса (который наверняка будет пустым), принимая в качестве аргумента другие ASTNode подклассы.

Это реализация GoF Visitor Design Pattern (также описано в Wikipedia).

Способ по ASTNodeaccept просто вызвать метод visit на реализацию посетителя, передавая себя в качестве параметра для метода visit.

Смежные вопросы