koala.dynamicjava.tree.visitor
Class DepthFirstVisitor

java.lang.Object
  extended by koala.dynamicjava.tree.visitor.DepthFirstVisitor
All Implemented Interfaces:
Runnable1<Node>, Visitor<Void>

public class DepthFirstVisitor
extends Object
implements Visitor<Void>, Runnable1<Node>

A visitor that traverses an AST in depth-first order. Clients should invoke run() rather than acceptVisitor() to invoke instances. To design a visitor that may perform an action or prune the traversal for each node, override run(), which by default just calls n.acceptVisitor(this). To customize behavior for specific node types, override the appropriate visit() method, which by default simply invokes a recur() method for each subtree. It is very important that changes to the AST class declarations be reflected here (otherwise, for example, a newly-added field will be silently ignored by the traversal).


Constructor Summary
DepthFirstVisitor()
           
 
Method Summary
protected  void recur(Iterable<? extends Node> l)
           
protected  void recur(Node... ns)
           
protected  void recur(Node n)
           
protected  void recur(Option<? extends Node> opt)
           
protected  void recurOnList(Option<? extends Iterable<? extends Node>> opt)
           
protected  void recurOnLists(Iterable<? extends Iterable<? extends Node>> l)
           
protected  void recurOnPairSeconds(Iterable<? extends Pair<?,? extends Node>> l)
           
 void run(Node n)
           
 Void visit(AddAssignExpression node)
           
 Void visit(AddExpression node)
           
 Void visit(AmbiguousName node)
           
 Void visit(AndExpression node)
           
 Void visit(Annotation node)
           
 Void visit(AnonymousAllocation node)
           
 Void visit(AnonymousInnerAllocation node)
           
 Void visit(ArrayAccess node)
           
 Void visit(ArrayAllocation node)
           
 Void visit(ArrayInitializer node)
           
 Void visit(ArrayTypeName node)
           
 Void visit(AssertStatement node)
           
 Void visit(BitAndAssignExpression node)
           
 Void visit(BitAndExpression node)
           
 Void visit(BitOrAssignExpression node)
           
 Void visit(BitOrExpression node)
           
 Void visit(BlockStatement node)
           
 Void visit(BooleanTypeName node)
           
 Void visit(BreakStatement node)
           
 Void visit(ByteTypeName node)
           
 Void visit(CastExpression node)
           
 Void visit(CatchStatement node)
           
 Void visit(CharTypeName node)
           
 Void visit(ClassDeclaration node)
           
 Void visit(ClassInitializer node)
           
 Void visit(CompilationUnit node)
           
 Void visit(ComplementExpression node)
           
 Void visit(ConditionalExpression node)
           
 Void visit(ConstructorCall node)
           
 Void visit(ConstructorDeclaration node)
           
 Void visit(ContinueStatement node)
           
 Void visit(DivideAssignExpression node)
           
 Void visit(DivideExpression node)
           
 Void visit(DoStatement node)
           
 Void visit(DoubleTypeName node)
           
 Void visit(EmptyStatement node)
           
 Void visit(EnumDeclaration.EnumConstant node)
           
 Void visit(EqualExpression node)
           
 Void visit(ExclusiveOrAssignExpression node)
           
 Void visit(ExclusiveOrExpression node)
           
 Void visit(ExpressionStatement node)
           
 Void visit(FieldDeclaration node)
           
 Void visit(FloatTypeName node)
           
 Void visit(ForEachStatement node)
           
 Void visit(FormalParameter node)
           
 Void visit(ForStatement node)
           
 Void visit(GenericReferenceTypeName node)
           
 Void visit(GreaterExpression node)
           
 Void visit(GreaterOrEqualExpression node)
           
 Void visit(HookTypeName node)
           
 Void visit(IfThenElseStatement node)
           
 Void visit(IfThenStatement node)
           
 Void visit(ImportDeclaration node)
           
 Void visit(InnerAllocation node)
           
 Void visit(InstanceInitializer node)
           
 Void visit(InstanceOfExpression node)
           
 Void visit(InterfaceDeclaration node)
           
 Void visit(IntTypeName node)
           
 Void visit(LabeledStatement node)
           
 Void visit(LessExpression node)
           
 Void visit(LessOrEqualExpression node)
           
 Void visit(Literal node)
           
 Void visit(LongTypeName node)
           
 Void visit(MethodDeclaration node)
           
 Void visit(MinusExpression node)
           
 Void visit(ModifierSet node)
           
 Void visit(MultiplyAssignExpression node)
           
 Void visit(MultiplyExpression node)
           
 Void visit(NotEqualExpression node)
           
 Void visit(NotExpression node)
           
 Void visit(ObjectFieldAccess node)
           
 Void visit(ObjectMethodCall node)
           
 Void visit(OrExpression node)
           
 Void visit(PackageDeclaration node)
           
 Void visit(PlusExpression node)
           
 Void visit(PostDecrement node)
           
 Void visit(PostIncrement node)
           
 Void visit(PreDecrement node)
           
 Void visit(PreIncrement node)
           
 Void visit(ReferenceTypeName node)
           
 Void visit(RemainderAssignExpression node)
           
 Void visit(RemainderExpression node)
           
 Void visit(ReturnStatement node)
           
 Void visit(ShiftLeftAssignExpression node)
           
 Void visit(ShiftLeftExpression node)
           
 Void visit(ShiftRightAssignExpression node)
           
 Void visit(ShiftRightExpression node)
           
 Void visit(ShortTypeName node)
           
 Void visit(SimpleAllocation node)
           
 Void visit(SimpleAssignExpression node)
           
 Void visit(SimpleFieldAccess node)
           
 Void visit(SimpleMethodCall node)
           
 Void visit(StaticFieldAccess node)
           
 Void visit(StaticMethodCall node)
           
 Void visit(SubtractAssignExpression node)
           
 Void visit(SubtractExpression node)
           
 Void visit(SuperFieldAccess node)
           
 Void visit(SuperMethodCall node)
           
 Void visit(SwitchBlock node)
           
 Void visit(SwitchStatement node)
           
 Void visit(SynchronizedStatement node)
           
 Void visit(ThisExpression node)
           
 Void visit(ThrowStatement node)
           
 Void visit(TryStatement node)
           
 Void visit(TypeExpression node)
           
 Void visit(UnsignedShiftRightAssignExpression node)
           
 Void visit(UnsignedShiftRightExpression node)
           
 Void visit(VariableAccess node)
           
 Void visit(VariableDeclaration node)
           
 Void visit(VoidTypeName node)
           
 Void visit(WhileStatement node)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DepthFirstVisitor

public DepthFirstVisitor()
Method Detail

run

public void run(Node n)
Specified by:
run in interface Runnable1<Node>

recur

protected void recur(Node n)

recur

protected void recur(Node... ns)

recur

protected void recur(Iterable<? extends Node> l)

recur

protected void recur(Option<? extends Node> opt)

recurOnLists

protected void recurOnLists(Iterable<? extends Iterable<? extends Node>> l)

recurOnList

protected void recurOnList(Option<? extends Iterable<? extends Node>> opt)

recurOnPairSeconds

protected void recurOnPairSeconds(Iterable<? extends Pair<?,? extends Node>> l)

visit

public Void visit(CompilationUnit node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(PackageDeclaration node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ImportDeclaration node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(EmptyStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ExpressionStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(WhileStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ForStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ForEachStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(DoStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SwitchStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SwitchBlock node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(LabeledStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(BreakStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(TryStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(CatchStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ThrowStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ReturnStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SynchronizedStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ContinueStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(IfThenStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(IfThenElseStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(AssertStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(Literal node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ThisExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(AmbiguousName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(VariableAccess node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SimpleFieldAccess node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ObjectFieldAccess node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(StaticFieldAccess node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SuperFieldAccess node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ArrayAccess node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ObjectMethodCall node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SimpleMethodCall node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(StaticMethodCall node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ConstructorCall node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SuperMethodCall node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(BooleanTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ByteTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ShortTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(CharTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(IntTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(LongTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(FloatTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(DoubleTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(VoidTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ReferenceTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(GenericReferenceTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ArrayTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(HookTypeName node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(TypeExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(PostIncrement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(PostDecrement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(PreIncrement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(PreDecrement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ArrayInitializer node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ArrayAllocation node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SimpleAllocation node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(AnonymousAllocation node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(InnerAllocation node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(AnonymousInnerAllocation node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(CastExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(NotExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ComplementExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(PlusExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(MinusExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(MultiplyExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(DivideExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(RemainderExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(AddExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SubtractExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ShiftLeftExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ShiftRightExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(UnsignedShiftRightExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(LessExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(GreaterExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(LessOrEqualExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(GreaterOrEqualExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(InstanceOfExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(EqualExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(NotEqualExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(BitAndExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ExclusiveOrExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(BitOrExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(AndExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(OrExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ConditionalExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SimpleAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(MultiplyAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(DivideAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(RemainderAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(AddAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(SubtractAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ShiftLeftAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ShiftRightAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(UnsignedShiftRightAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(BitAndAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ExclusiveOrAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(BitOrAssignExpression node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(BlockStatement node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ClassDeclaration node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(InterfaceDeclaration node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ConstructorDeclaration node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(MethodDeclaration node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(FormalParameter node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(FieldDeclaration node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(VariableDeclaration node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(EnumDeclaration.EnumConstant node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ClassInitializer node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(InstanceInitializer node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(ModifierSet node)
Specified by:
visit in interface Visitor<Void>

visit

public Void visit(Annotation node)
Specified by:
visit in interface Visitor<Void>