Eclipse JDT
2.0

org.eclipse.jdt.core.dom
Class ASTVisitor

java.lang.Object
  |
  +--org.eclipse.jdt.core.dom.ASTVisitor

public abstract class ASTVisitor
extends Object

A visitor for abstract syntax trees.

For each different concrete AST node type T there are a pair of methods:

In addition, there are a pair of methods for visiting AST nodes in the abstract, regardless of node type:

For nodes with list-valued properties, the child nodes within the list are visited in order. For nodes with multiple properties, the child nodes are visited in the order that most closely corresponds to the lexical reading order of the source program. For instance, for a type declaration node, the child ordering is: name, superclass, superinterfaces, and body declarations.

While it is possible to modify the tree in the visitor, care is required to ensure that the consequences are as expected and desirable. During the course of an ordinary visit starting at a given node, every node in the subtree is visited exactly twice, first with visit and then with endVisit. During a traversal of a stationary tree, each node is either behind (after endVisit), ahead (before visit), or in progress (between visit and the matching endVisit). Changes to the "behind" region of the tree are of no consequence to the visit in progress. Changes to the "ahead" region will be taken in stride. Changes to the "in progress" portion are the more interesting cases. With a node, the various properties are arranged in a linear list, with a cursor that separates the properties that have been visited from the ones that are still to be visited (the cursor is between the elements, rather than on an element). The cursor moves from the head to the tail of this list, advancing to the next position just before visit if called for that child. After the child subtree has been completely visited, the visit moves on the child immediately after the cursor. Removing a child while it is being visited does not alter the course of the visit. But any children added at positions after the cursor are considered in the "ahead" portion and will be visited.

Cases to watch out for:

See Also:
ASTNode.accept(org.eclipse.jdt.core.dom.ASTVisitor)

Constructor Summary
ASTVisitor()
           
 
Method Summary
 void endVisit(AnonymousClassDeclaration node)
           
 void endVisit(ArrayAccess node)
           
 void endVisit(ArrayCreation node)
           
 void endVisit(ArrayInitializer node)
           
 void endVisit(ArrayType node)
           
 void endVisit(AssertStatement node)
           
 void endVisit(Assignment node)
           
 void endVisit(Block node)
           
 void endVisit(BooleanLiteral node)
           
 void endVisit(BreakStatement node)
           
 void endVisit(CastExpression node)
           
 void endVisit(CatchClause node)
           
 void endVisit(CharacterLiteral node)
           
 void endVisit(ClassInstanceCreation node)
           
 void endVisit(CompilationUnit node)
           
 void endVisit(ConditionalExpression node)
           
 void endVisit(ConstructorInvocation node)
           
 void endVisit(ContinueStatement node)
           
 void endVisit(DoStatement node)
           
 void endVisit(EmptyStatement node)
           
 void endVisit(ExpressionStatement node)
           
 void endVisit(FieldAccess node)
           
 void endVisit(FieldDeclaration node)
           
 void endVisit(ForStatement node)
           
 void endVisit(IfStatement node)
           
 void endVisit(ImportDeclaration node)
           
 void endVisit(InfixExpression node)
           
 void endVisit(Initializer node)
           
 void endVisit(InstanceofExpression node)
           
 void endVisit(Javadoc node)
           
 void endVisit(LabeledStatement node)
           
 void endVisit(MethodDeclaration node)
           
 void endVisit(MethodInvocation node)
           
 void endVisit(NullLiteral node)
           
 void endVisit(NumberLiteral node)
           
 void endVisit(PackageDeclaration node)
           
 void endVisit(ParenthesizedExpression node)
           
 void endVisit(PostfixExpression node)
           
 void endVisit(PrefixExpression node)
           
 void endVisit(PrimitiveType node)
           
 void endVisit(QualifiedName node)
           
 void endVisit(ReturnStatement node)
           
 void endVisit(SimpleName node)
           
 void endVisit(SimpleType node)
           
 void endVisit(SingleVariableDeclaration node)
           
 void endVisit(StringLiteral node)
           
 void endVisit(SuperConstructorInvocation node)
           
 void endVisit(SuperFieldAccess node)
           
 void endVisit(SuperMethodInvocation node)
           
 void endVisit(SwitchCase node)
           
 void endVisit(SwitchStatement node)
           
 void endVisit(SynchronizedStatement node)
           
 void endVisit(ThisExpression node)
           
 void endVisit(ThrowStatement node)
           
 void endVisit(TryStatement node)
           
 void endVisit(TypeDeclaration node)
           
 void endVisit(TypeDeclarationStatement node)
           
 void endVisit(TypeLiteral node)
           
 void endVisit(VariableDeclarationExpression node)
           
 void endVisit(VariableDeclarationFragment node)
           
 void endVisit(VariableDeclarationStatement node)
           
 void endVisit(WhileStatement node)
           
 void postVisit(ASTNode node)
          Visits the given AST node following the type-specific visit (after endVisit).
 void preVisit(ASTNode node)
          Visits the given AST node prior to the type-specific visit.
 boolean visit(AnonymousClassDeclaration node)
           
 boolean visit(ArrayAccess node)
           
 boolean visit(ArrayCreation node)
           
 boolean visit(ArrayInitializer node)
           
 boolean visit(ArrayType node)
           
 boolean visit(AssertStatement node)
           
 boolean visit(Assignment node)
           
 boolean visit(Block node)
           
 boolean visit(BooleanLiteral node)
           
 boolean visit(BreakStatement node)
           
 boolean visit(CastExpression node)
           
 boolean visit(CatchClause node)
           
 boolean visit(CharacterLiteral node)
           
 boolean visit(ClassInstanceCreation node)
           
 boolean visit(CompilationUnit node)
           
 boolean visit(ConditionalExpression node)
           
 boolean visit(ConstructorInvocation node)
           
 boolean visit(ContinueStatement node)
           
 boolean visit(DoStatement node)
           
 boolean visit(EmptyStatement node)
           
 boolean visit(ExpressionStatement node)
           
 boolean visit(FieldAccess node)
           
 boolean visit(FieldDeclaration node)
           
 boolean visit(ForStatement node)
           
 boolean visit(IfStatement node)
           
 boolean visit(ImportDeclaration node)
           
 boolean visit(InfixExpression node)
           
 boolean visit(Initializer node)
           
 boolean visit(InstanceofExpression node)
           
 boolean visit(Javadoc node)
           
 boolean visit(LabeledStatement node)
           
 boolean visit(MethodDeclaration node)
           
 boolean visit(MethodInvocation node)
           
 boolean visit(NullLiteral node)
           
 boolean visit(NumberLiteral node)
           
 boolean visit(PackageDeclaration node)
           
 boolean visit(ParenthesizedExpression node)
           
 boolean visit(PostfixExpression node)
           
 boolean visit(PrefixExpression node)
           
 boolean visit(PrimitiveType node)
           
 boolean visit(QualifiedName node)
           
 boolean visit(ReturnStatement node)
           
 boolean visit(SimpleName node)
           
 boolean visit(SimpleType node)
           
 boolean visit(SingleVariableDeclaration node)
           
 boolean visit(StringLiteral node)
           
 boolean visit(SuperConstructorInvocation node)
           
 boolean visit(SuperFieldAccess node)
           
 boolean visit(SuperMethodInvocation node)
           
 boolean visit(SwitchCase node)
           
 boolean visit(SwitchStatement node)
           
 boolean visit(SynchronizedStatement node)
           
 boolean visit(ThisExpression node)
           
 boolean visit(ThrowStatement node)
           
 boolean visit(TryStatement node)
           
 boolean visit(TypeDeclaration node)
           
 boolean visit(TypeDeclarationStatement node)
           
 boolean visit(TypeLiteral node)
           
 boolean visit(VariableDeclarationExpression node)
           
 boolean visit(VariableDeclarationFragment node)
           
 boolean visit(VariableDeclarationStatement node)
           
 boolean visit(WhileStatement node)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ASTVisitor

public ASTVisitor()
Method Detail

preVisit

public void preVisit(ASTNode node)
Visits the given AST node prior to the type-specific visit. (before visit).

The default implementation does nothing. Subclasses may reimplement.

Parameters:
node - the node to visit

postVisit

public void postVisit(ASTNode node)
Visits the given AST node following the type-specific visit (after endVisit).

The default implementation does nothing. Subclasses may reimplement.

Parameters:
node - the node to visit

visit

public boolean visit(AnonymousClassDeclaration node)

visit

public boolean visit(ArrayAccess node)

visit

public boolean visit(ArrayCreation node)

visit

public boolean visit(ArrayInitializer node)

visit

public boolean visit(ArrayType node)

visit

public boolean visit(AssertStatement node)

visit

public boolean visit(Assignment node)

visit

public boolean visit(Block node)

visit

public boolean visit(BooleanLiteral node)

visit

public boolean visit(BreakStatement node)

visit

public boolean visit(CastExpression node)

visit

public boolean visit(CatchClause node)

visit

public boolean visit(CharacterLiteral node)

visit

public boolean visit(ClassInstanceCreation node)

visit

public boolean visit(CompilationUnit node)

visit

public boolean visit(ConditionalExpression node)

visit

public boolean visit(ConstructorInvocation node)

visit

public boolean visit(ContinueStatement node)

visit

public boolean visit(DoStatement node)

visit

public boolean visit(EmptyStatement node)

visit

public boolean visit(ExpressionStatement node)

visit

public boolean visit(FieldAccess node)

visit

public boolean visit(FieldDeclaration node)

visit

public boolean visit(ForStatement node)

visit

public boolean visit(IfStatement node)

visit

public boolean visit(ImportDeclaration node)

visit

public boolean visit(InfixExpression node)

visit

public boolean visit(InstanceofExpression node)

visit

public boolean visit(Initializer node)

visit

public boolean visit(Javadoc node)

visit

public boolean visit(LabeledStatement node)

visit

public boolean visit(MethodDeclaration node)

visit

public boolean visit(MethodInvocation node)

visit

public boolean visit(NullLiteral node)

visit

public boolean visit(NumberLiteral node)

visit

public boolean visit(PackageDeclaration node)

visit

public boolean visit(ParenthesizedExpression node)

visit

public boolean visit(PostfixExpression node)

visit

public boolean visit(PrefixExpression node)

visit

public boolean visit(PrimitiveType node)

visit

public boolean visit(QualifiedName node)

visit

public boolean visit(ReturnStatement node)

visit

public boolean visit(SimpleName node)

visit

public boolean visit(SimpleType node)

visit

public boolean visit(StringLiteral node)

visit

public boolean visit(SuperConstructorInvocation node)

visit

public boolean visit(SuperFieldAccess node)

visit

public boolean visit(SuperMethodInvocation node)

visit

public boolean visit(SwitchCase node)

visit

public boolean visit(SwitchStatement node)

visit

public boolean visit(SynchronizedStatement node)

visit

public boolean visit(ThisExpression node)

visit

public boolean visit(ThrowStatement node)

visit

public boolean visit(TryStatement node)

visit

public boolean visit(TypeDeclaration node)

visit

public boolean visit(TypeDeclarationStatement node)

visit

public boolean visit(TypeLiteral node)

visit

public boolean visit(SingleVariableDeclaration node)

visit

public boolean visit(VariableDeclarationExpression node)

visit

public boolean visit(VariableDeclarationStatement node)

visit

public boolean visit(VariableDeclarationFragment node)

visit

public boolean visit(WhileStatement node)

endVisit

public void endVisit(AnonymousClassDeclaration node)

endVisit

public void endVisit(ArrayAccess node)

endVisit

public void endVisit(ArrayCreation node)

endVisit

public void endVisit(ArrayInitializer node)

endVisit

public void endVisit(ArrayType node)

endVisit

public void endVisit(AssertStatement node)

endVisit

public void endVisit(Assignment node)

endVisit

public void endVisit(Block node)

endVisit

public void endVisit(BooleanLiteral node)

endVisit

public void endVisit(BreakStatement node)

endVisit

public void endVisit(CastExpression node)

endVisit

public void endVisit(CatchClause node)

endVisit

public void endVisit(CharacterLiteral node)

endVisit

public void endVisit(ClassInstanceCreation node)

endVisit

public void endVisit(CompilationUnit node)

endVisit

public void endVisit(ConditionalExpression node)

endVisit

public void endVisit(ConstructorInvocation node)

endVisit

public void endVisit(ContinueStatement node)

endVisit

public void endVisit(DoStatement node)

endVisit

public void endVisit(EmptyStatement node)

endVisit

public void endVisit(ExpressionStatement node)

endVisit

public void endVisit(FieldAccess node)

endVisit

public void endVisit(FieldDeclaration node)

endVisit

public void endVisit(ForStatement node)

endVisit

public void endVisit(IfStatement node)

endVisit

public void endVisit(ImportDeclaration node)

endVisit

public void endVisit(InfixExpression node)

endVisit

public void endVisit(InstanceofExpression node)

endVisit

public void endVisit(Initializer node)

endVisit

public void endVisit(Javadoc node)

endVisit

public void endVisit(LabeledStatement node)

endVisit

public void endVisit(MethodDeclaration node)

endVisit

public void endVisit(MethodInvocation node)

endVisit

public void endVisit(NullLiteral node)

endVisit

public void endVisit(NumberLiteral node)

endVisit

public void endVisit(PackageDeclaration node)

endVisit

public void endVisit(ParenthesizedExpression node)

endVisit

public void endVisit(PostfixExpression node)

endVisit

public void endVisit(PrefixExpression node)

endVisit

public void endVisit(PrimitiveType node)

endVisit

public void endVisit(QualifiedName node)

endVisit

public void endVisit(ReturnStatement node)

endVisit

public void endVisit(SimpleName node)

endVisit

public void endVisit(SimpleType node)

endVisit

public void endVisit(StringLiteral node)

endVisit

public void endVisit(SuperConstructorInvocation node)

endVisit

public void endVisit(SuperFieldAccess node)

endVisit

public void endVisit(SuperMethodInvocation node)

endVisit

public void endVisit(SwitchCase node)

endVisit

public void endVisit(SwitchStatement node)

endVisit

public void endVisit(SynchronizedStatement node)

endVisit

public void endVisit(ThisExpression node)

endVisit

public void endVisit(ThrowStatement node)

endVisit

public void endVisit(TryStatement node)

endVisit

public void endVisit(TypeDeclaration node)

endVisit

public void endVisit(TypeDeclarationStatement node)

endVisit

public void endVisit(TypeLiteral node)

endVisit

public void endVisit(SingleVariableDeclaration node)

endVisit

public void endVisit(VariableDeclarationExpression node)

endVisit

public void endVisit(VariableDeclarationStatement node)

endVisit

public void endVisit(VariableDeclarationFragment node)

endVisit

public void endVisit(WhileStatement node)

Eclipse JDT
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.