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 Visitor
public 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 Visitor
public 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 Visitor
public boolean preStatement(Statement arg)
public void postStatement(Statement arg)
public void visitStatement(Statement arg)
visitStatement
in interface Visitor
public boolean preThrowStatement(ThrowStatement arg)
public void postThrowStatement(ThrowStatement arg)
public void visitThrowStatement(ThrowStatement arg)
visitThrowStatement
in interface Visitor
public boolean preAssignmentStatement(AssignmentStatement arg)
public void assignmentStatementBeforeLeftSide(AssignmentStatement arg)
public void postAssignmentStatement(AssignmentStatement arg)
public void visitAssignmentStatement(AssignmentStatement arg)
visitAssignmentStatement
in interface Visitor
public boolean preBlockStatement(BlockStatement arg)
public void blockStatementBeforeBodyStatement(BlockStatement arg, Statement stmt)
public void postBlockStatement(BlockStatement arg)
public void visitBlockStatement(BlockStatement arg)
visitBlockStatement
in interface Visitor
public boolean preCaseBranch(CaseBranch arg)
public void caseBranchBeforeBodyStatement(CaseBranch arg)
public void postCaseBranch(CaseBranch arg)
public void visitCaseBranch(CaseBranch arg)
visitCaseBranch
in interface Visitor
public boolean preDefinitionStatement(DefinitionStatement arg)
public boolean definitionStatementBeforeExpr(DefinitionStatement arg)
public void postDefinitionStatement(DefinitionStatement arg)
public void visitDefinitionStatement(DefinitionStatement arg)
visitDefinitionStatement
in interface Visitor
public 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 Visitor
public boolean preBreakStatement(BreakStatement arg)
public void postBreakStatement(BreakStatement arg)
public void visitBreakStatement(BreakStatement arg)
visitBreakStatement
in interface Visitor
public boolean preReturnStatement(ReturnStatement arg)
public void postReturnStatement(ReturnStatement arg)
public void visitReturnStatement(ReturnStatement arg)
visitReturnStatement
in interface Visitor
public 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 Visitor
public 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 Visitor
public boolean preWhileStatement(WhileStatement arg)
public void whileStatementBeforeBody(WhileStatement arg)
public void postWhileStatement(WhileStatement arg)
public void visitWhileStatement(WhileStatement arg)
visitWhileStatement
in interface Visitor
public boolean preExpression(ExpressionInternal arg)
public void postExpression(ExpressionInternal arg)
public void visitExpression(ExpressionInternal arg)
visitExpression
in interface Visitor
public boolean preVariable(Variable arg)
public void postVariable(Variable arg)
public final void visitVariable(Variable arg)
visitVariable
in interface Visitor
public boolean preConstantExpression(ExpressionFactory.ConstantExpression arg)
public void postConstantExpression(ExpressionFactory.ConstantExpression arg)
public void visitConstantExpression(ExpressionFactory.ConstantExpression arg)
visitConstantExpression
in interface Visitor
public boolean preVoidExpression(ExpressionFactory.VoidExpression arg)
public void postVoidExpression(ExpressionFactory.VoidExpression arg)
public void visitVoidExpression(ExpressionFactory.VoidExpression arg)
visitVoidExpression
in interface Visitor
public boolean preThisExpression(ExpressionFactory.ThisExpression arg)
public void postThisExpression(ExpressionFactory.ThisExpression arg)
public void visitThisExpression(ExpressionFactory.ThisExpression arg)
visitThisExpression
in interface Visitor
public boolean preUnaryOperatorExpression(ExpressionFactory.UnaryOperatorExpression arg)
public void postUnaryOperatorExpression(ExpressionFactory.UnaryOperatorExpression arg)
public void visitUnaryOperatorExpression(ExpressionFactory.UnaryOperatorExpression arg)
visitUnaryOperatorExpression
in interface Visitor
public 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 Visitor
public boolean preCastExpression(ExpressionFactory.CastExpression arg)
public void postCastExpression(ExpressionFactory.CastExpression arg)
public void visitCastExpression(ExpressionFactory.CastExpression arg)
visitCastExpression
in interface Visitor
public boolean preInstofExpression(ExpressionFactory.InstofExpression arg)
public void postInstofExpression(ExpressionFactory.InstofExpression arg)
public void visitInstofExpression(ExpressionFactory.InstofExpression arg)
visitInstofExpression
in interface Visitor
public 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 Visitor
public 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 Visitor
public 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 Visitor
public 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 Visitor
public 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 Visitor
public 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 Visitor
public 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 Visitor
public boolean preNonStaticFieldAccessExpression(ExpressionFactory.NonStaticFieldAccessExpression arg)
public void postNonStaticFieldAccessExpression(ExpressionFactory.NonStaticFieldAccessExpression arg)
public void visitNonStaticFieldAccessExpression(ExpressionFactory.NonStaticFieldAccessExpression arg)
visitNonStaticFieldAccessExpression
in interface Visitor
public boolean preStaticFieldAccessExpression(ExpressionFactory.StaticFieldAccessExpression arg)
public void postStaticFieldAccessExpression(ExpressionFactory.StaticFieldAccessExpression arg)
public void visitStaticFieldAccessExpression(ExpressionFactory.StaticFieldAccessExpression arg)
visitStaticFieldAccessExpression
in interface Visitor
public 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 Visitor
public boolean preArrayLengthExpression(ExpressionFactory.ArrayLengthExpression arg)
public void postArrayLengthExpression(ExpressionFactory.ArrayLengthExpression arg)
public void visitArrayLengthExpression(ExpressionFactory.ArrayLengthExpression arg)
visitArrayLengthExpression
in interface Visitor
public 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 Visitor
Copyright © 2017 Oracle. All rights reserved.