public abstract class TreeWalker extends Object implements Visitor
This is used as follows:
TreeWalkerContext context = new TreeWalkerContext() ;
Visitor visitor = new SubclassOfTreeWalker( context, ... ) ;
context.push( visitor ) ;
node.accept( visitor ) ;
Note that this allows the temporary changing of the current visitor
while traversing the tree. The fact that the context support mark
and popMark operations makes it easy to process all of the children
of a node in any order: just call context.mark() in a preXXX method,
push appropriate visitors in the intermediate xXXBeforeYYY methods,
and then call context.popMark in the postXXX method.
Note that all preXXX methods return a boolean which indicates whether or not this node should be traversed. If true is return, any child nodes are traversed, and the postXXX method is called. If false is returned, the visitXXX method completes.
If the preXXX method returns true, the postXXX method is always called. If the preXXX method throws an exception or returns false, the postXXX method is not called.
The more complex node types also include intermediate control methods that can be overridden to affect the traversal.
| Modifier and Type | Field and Description |
|---|---|
protected TreeWalkerContext |
context |
| Constructor and Description |
|---|
TreeWalker(TreeWalkerContext context) |
protected final TreeWalkerContext context
public TreeWalker(TreeWalkerContext context)
public boolean preNode(Node arg)
public void postNode(Node arg)
public boolean preFieldGenerator(FieldGenerator arg)
public void postFieldGenerator(FieldGenerator arg)
public final void visitFieldGenerator(FieldGenerator arg)
visitFieldGenerator in interface Visitorpublic boolean preClassGenerator(ClassGeneratorImpl arg)
public boolean classGeneratorBeforeFields(ClassGeneratorImpl arg)
public void classGeneratorBeforeInitializer(ClassGeneratorImpl arg)
public void classGeneratorBeforeMethod(ClassGeneratorImpl arg)
public void classGeneratorBeforeConstructor(ClassGeneratorImpl arg)
public void postClassGenerator(ClassGeneratorImpl arg)
public void visitClassGenerator(ClassGeneratorImpl arg)
visitClassGenerator in interface Visitorpublic boolean preMethodGenerator(MethodGenerator arg)
public boolean methodGeneratorBeforeArguments(MethodGenerator arg)
public void methodGeneratorAfterArguments(MethodGenerator arg)
public void postMethodGenerator(MethodGenerator arg)
public void visitMethodGenerator(MethodGenerator arg)
visitMethodGenerator in interface Visitorpublic boolean preStatement(Statement arg)
public void postStatement(Statement arg)
public void visitStatement(Statement arg)
visitStatement in interface Visitorpublic boolean preThrowStatement(ThrowStatement arg)
public void postThrowStatement(ThrowStatement arg)
public void visitThrowStatement(ThrowStatement arg)
visitThrowStatement in interface Visitorpublic boolean preAssignmentStatement(AssignmentStatement arg)
public void assignmentStatementBeforeLeftSide(AssignmentStatement arg)
public void postAssignmentStatement(AssignmentStatement arg)
public void visitAssignmentStatement(AssignmentStatement arg)
visitAssignmentStatement in interface Visitorpublic boolean preBlockStatement(BlockStatement arg)
public void blockStatementBeforeBodyStatement(BlockStatement arg, Statement stmt)
public void postBlockStatement(BlockStatement arg)
public void visitBlockStatement(BlockStatement arg)
visitBlockStatement in interface Visitorpublic boolean preCaseBranch(CaseBranch arg)
public void caseBranchBeforeBodyStatement(CaseBranch arg)
public void postCaseBranch(CaseBranch arg)
public void visitCaseBranch(CaseBranch arg)
visitCaseBranch in interface Visitorpublic boolean preDefinitionStatement(DefinitionStatement arg)
public boolean definitionStatementBeforeExpr(DefinitionStatement arg)
public void postDefinitionStatement(DefinitionStatement arg)
public void visitDefinitionStatement(DefinitionStatement arg)
visitDefinitionStatement in interface Visitorpublic boolean preIfStatement(IfStatement arg)
public void ifStatementBeforeTruePart(IfStatement arg)
public boolean ifStatementBeforeFalsePart(IfStatement arg)
public void postIfStatement(IfStatement arg)
public void visitIfStatement(IfStatement arg)
visitIfStatement in interface Visitorpublic boolean preBreakStatement(BreakStatement arg)
public void postBreakStatement(BreakStatement arg)
public void visitBreakStatement(BreakStatement arg)
visitBreakStatement in interface Visitorpublic boolean preReturnStatement(ReturnStatement arg)
public void postReturnStatement(ReturnStatement arg)
public void visitReturnStatement(ReturnStatement arg)
visitReturnStatement in interface Visitorpublic boolean preSwitchStatement(SwitchStatement arg)
public boolean switchStatementBeforeCaseBranches(SwitchStatement arg)
public boolean switchStatementBeforeDefault(SwitchStatement arg)
public void postSwitchStatement(SwitchStatement arg)
public void visitSwitchStatement(SwitchStatement arg)
visitSwitchStatement in interface Visitorpublic boolean preTryStatement(TryStatement arg)
public void tryStatementBeforeBlock(TryStatement arg, Type type, Variable var, BlockStatement block)
public boolean tryStatementBeforeFinalPart(TryStatement arg)
public void postTryStatement(TryStatement arg)
public void visitTryStatement(TryStatement arg)
visitTryStatement in interface Visitorpublic boolean preWhileStatement(WhileStatement arg)
public void whileStatementBeforeBody(WhileStatement arg)
public void postWhileStatement(WhileStatement arg)
public void visitWhileStatement(WhileStatement arg)
visitWhileStatement in interface Visitorpublic boolean preExpression(ExpressionInternal arg)
public void postExpression(ExpressionInternal arg)
public void visitExpression(ExpressionInternal arg)
visitExpression in interface Visitorpublic boolean preVariable(Variable arg)
public void postVariable(Variable arg)
public final void visitVariable(Variable arg)
visitVariable in interface Visitorpublic boolean preConstantExpression(ExpressionFactory.ConstantExpression arg)
public void postConstantExpression(ExpressionFactory.ConstantExpression arg)
public void visitConstantExpression(ExpressionFactory.ConstantExpression arg)
visitConstantExpression in interface Visitorpublic boolean preVoidExpression(ExpressionFactory.VoidExpression arg)
public void postVoidExpression(ExpressionFactory.VoidExpression arg)
public void visitVoidExpression(ExpressionFactory.VoidExpression arg)
visitVoidExpression in interface Visitorpublic boolean preThisExpression(ExpressionFactory.ThisExpression arg)
public void postThisExpression(ExpressionFactory.ThisExpression arg)
public void visitThisExpression(ExpressionFactory.ThisExpression arg)
visitThisExpression in interface Visitorpublic boolean preUnaryOperatorExpression(ExpressionFactory.UnaryOperatorExpression arg)
public void postUnaryOperatorExpression(ExpressionFactory.UnaryOperatorExpression arg)
public void visitUnaryOperatorExpression(ExpressionFactory.UnaryOperatorExpression arg)
visitUnaryOperatorExpression in interface Visitorpublic boolean preBinaryOperatorExpression(ExpressionFactory.BinaryOperatorExpression arg)
public void binaryOperatorExpressionBeforeRight(ExpressionFactory.BinaryOperatorExpression arg)
public void postBinaryOperatorExpression(ExpressionFactory.BinaryOperatorExpression arg)
public void visitBinaryOperatorExpression(ExpressionFactory.BinaryOperatorExpression arg)
visitBinaryOperatorExpression in interface Visitorpublic boolean preCastExpression(ExpressionFactory.CastExpression arg)
public void postCastExpression(ExpressionFactory.CastExpression arg)
public void visitCastExpression(ExpressionFactory.CastExpression arg)
visitCastExpression in interface Visitorpublic boolean preInstofExpression(ExpressionFactory.InstofExpression arg)
public void postInstofExpression(ExpressionFactory.InstofExpression arg)
public void visitInstofExpression(ExpressionFactory.InstofExpression arg)
visitInstofExpression in interface Visitorpublic boolean preStaticCallExpression(ExpressionFactory.StaticCallExpression arg)
public void staticCallExpressionBeforeArg(ExpressionFactory.StaticCallExpression arg)
public void postStaticCallExpression(ExpressionFactory.StaticCallExpression arg)
public void visitStaticCallExpression(ExpressionFactory.StaticCallExpression arg)
visitStaticCallExpression in interface Visitorpublic boolean preNonStaticCallExpression(ExpressionFactory.NonStaticCallExpression arg)
public void nonStaticCallExpressionBeforeArg(ExpressionFactory.NonStaticCallExpression arg)
public void postNonStaticCallExpression(ExpressionFactory.NonStaticCallExpression arg)
public void visitNonStaticCallExpression(ExpressionFactory.NonStaticCallExpression arg)
visitNonStaticCallExpression in interface Visitorpublic boolean preNewObjExpression(ExpressionFactory.NewObjExpression arg)
public void newObjExpressionBeforeArg(ExpressionFactory.NewObjExpression arg)
public void postNewObjExpression(ExpressionFactory.NewObjExpression arg)
public void visitNewObjExpression(ExpressionFactory.NewObjExpression arg)
visitNewObjExpression in interface Visitorpublic boolean preNewArrExpression(ExpressionFactory.NewArrExpression arg)
public void newArrExpressionAfterSize(ExpressionFactory.NewArrExpression arg)
public void newArrExpressionBeforeExpression(ExpressionFactory.NewArrExpression arg)
public void newArrExpressionAfterExpression(ExpressionFactory.NewArrExpression arg)
public void postNewArrExpression(ExpressionFactory.NewArrExpression arg)
public void visitNewArrExpression(ExpressionFactory.NewArrExpression arg)
visitNewArrExpression in interface Visitorpublic boolean preSuperCallExpression(ExpressionFactory.SuperCallExpression arg)
public void superCallExpressionBeforeArg(ExpressionFactory.SuperCallExpression arg)
public void postSuperCallExpression(ExpressionFactory.SuperCallExpression arg)
public void visitSuperCallExpression(ExpressionFactory.SuperCallExpression arg)
visitSuperCallExpression in interface Visitorpublic boolean preSuperObjExpression(ExpressionFactory.SuperObjExpression arg)
public void superObjExpressionBeforeArg(ExpressionFactory.SuperObjExpression arg)
public void postSuperObjExpression(ExpressionFactory.SuperObjExpression arg)
public void visitSuperObjExpression(ExpressionFactory.SuperObjExpression arg)
visitSuperObjExpression in interface Visitorpublic boolean preThisObjExpression(ExpressionFactory.ThisObjExpression arg)
public void postThisObjExpression(ExpressionFactory.ThisObjExpression arg)
public void thisObjExpressionBeforeArg(ExpressionFactory.ThisObjExpression arg)
public void visitThisObjExpression(ExpressionFactory.ThisObjExpression arg)
visitThisObjExpression in interface Visitorpublic boolean preNonStaticFieldAccessExpression(ExpressionFactory.NonStaticFieldAccessExpression arg)
public void postNonStaticFieldAccessExpression(ExpressionFactory.NonStaticFieldAccessExpression arg)
public void visitNonStaticFieldAccessExpression(ExpressionFactory.NonStaticFieldAccessExpression arg)
visitNonStaticFieldAccessExpression in interface Visitorpublic boolean preStaticFieldAccessExpression(ExpressionFactory.StaticFieldAccessExpression arg)
public void postStaticFieldAccessExpression(ExpressionFactory.StaticFieldAccessExpression arg)
public void visitStaticFieldAccessExpression(ExpressionFactory.StaticFieldAccessExpression arg)
visitStaticFieldAccessExpression in interface Visitorpublic boolean preArrayIndexExpression(ExpressionFactory.ArrayIndexExpression arg)
public void arrayIndexExpressionBeforeExpr(ExpressionFactory.ArrayIndexExpression arg)
public void postArrayIndexExpression(ExpressionFactory.ArrayIndexExpression arg)
public void visitArrayIndexExpression(ExpressionFactory.ArrayIndexExpression arg)
visitArrayIndexExpression in interface Visitorpublic boolean preArrayLengthExpression(ExpressionFactory.ArrayLengthExpression arg)
public void postArrayLengthExpression(ExpressionFactory.ArrayLengthExpression arg)
public void visitArrayLengthExpression(ExpressionFactory.ArrayLengthExpression arg)
visitArrayLengthExpression in interface Visitorpublic boolean preIfExpression(ExpressionFactory.IfExpression arg)
public void ifExpressionBeforeTruePart(ExpressionFactory.IfExpression arg)
public boolean ifExpressionBeforeFalsePart(ExpressionFactory.IfExpression arg)
public void postIfExpression(ExpressionFactory.IfExpression arg)
public void visitIfExpression(ExpressionFactory.IfExpression arg)
visitIfExpression in interface VisitorCopyright © 2017 Oracle. All rights reserved.