2010-12-01 3 views
3

accept ASTNode의 메소드는 무엇입니까 (javadoc가 도움이되지 않았습니다 ...) visit(Expression node) 메서드는 언제 호출됩니까? 여기에 내가 그것을 사용해야하는 방법에 대한 예제 코드입니다 :ASTNode의 accept() 메소드는 무엇을합니까? 그리고 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; 
} 
}); 

내가 당신 Expression 클래스는 ASTNode 클래스의 하위 유형 및 ASTVisitor 클래스 존재하는 다른 여행 방법 (추측 당신에게

답변

1

감사는 틀림없이 비어있을 것입니다.) 다른 서브 클래스 인 ASTNode을 인수로 받아들입니다.

GoF Visitor Design Pattern (Wikipedia에도 설명되어 있음)의 구현입니다.

ASTNodeaccept 방법은 바로 visit 방법에 대한 매개 변수로 자신을 건네, 방문자 구현에 visit 메소드를 호출합니다.