Package org.codehaus.groovy.ast
Class TransformingCodeVisitor
java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.TransformingCodeVisitor
- All Implemented Interfaces:
GroovyCodeVisitor
Code visitor that combines depth-first traversal with expression transformation, delegating both
to an underlying
ClassCodeExpressionTransformer.
This visitor implements a two-phase approach for each statement and expression:
- Depth-first traversal via the parent
CodeVisitorSupportclass visits child nodes - Expression transformation via the
ClassCodeExpressionTransformerprocesses the node
This pattern enables both traversal and transformation in a single pass. The transformer receives fully-traversed nodes, allowing it to operate on complete subtrees or apply post-processing transformations after children are visited.
Typical usage involves creating a subclass of ClassCodeExpressionTransformer and
passing it to this visitor:
ClassCodeExpressionTransformer transformer = new MyTransformer(...); TransformingCodeVisitor visitor = new TransformingCodeVisitor(transformer); node.visit(visitor);
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new transforming visitor with the given transformer. -
Method Summary
Modifier and TypeMethodDescriptionvoidVisits anArgumentListExpression, treating it as a tuple expression.voidvisitArrayExpression(ArrayExpression expression) Visits anArrayExpression, traversing element expressions and size expressions.voidvisitAssertStatement(AssertStatement statement) Visits anAssertStatement, traversing the assertion condition and optional message expression.voidvisitAttributeExpression(AttributeExpression expression) Visits anAttributeExpression, traversing the object and attribute name expressions.voidvisitBinaryExpression(BinaryExpression expression) Visits aBinaryExpression, traversing left and right operand expressions.voidVisits aBitwiseNegationExpression, traversing the operand expression.voidVisits aBlockStatement, performing depth-first traversal followed by transformer processing.voidvisitBooleanExpression(BooleanExpression expression) Visits aBooleanExpression, traversing the contained expression.voidvisitBreakStatement(BreakStatement statement) Visits aBreakStatement.voidVisits aBytecodeExpression.voidvisitCaseStatement(CaseStatement statement) Visits aCaseStatement, traversing the case expression and code block.voidvisitCastExpression(CastExpression expression) Visits aCastExpression, traversing the operand expression.voidvisitCatchStatement(CatchStatement statement) Visits aCatchStatement, traversing the catch block code.voidvisitClassExpression(ClassExpression expression) Visits aClassExpression.voidvisitClosureExpression(ClosureExpression expression) Visits aClosureExpression, traversing parameter initializers and the closure code block.voidVisits aClosureListExpression, traversing all contained expressions.voidvisitConstantExpression(ConstantExpression expression) Visits aConstantExpression.voidvisitContinueStatement(ContinueStatement statement) Visits aContinueStatement.voidvisitDeclarationExpression(DeclarationExpression expression) Visits aDeclarationExpression, treating it as a binary expression.voidVisits aDoWhileStatement, traversing the loop body before the boolean condition.voidvisitExpressionStatement(ExpressionStatement statement) Visits anExpressionStatement, traversing its contained expression.voidvisitFieldExpression(FieldExpression expression) Visits aFieldExpression.voidvisitForLoop(ForStatement forLoop) Visits aForStatement, traversing the collection expression and loop body.voidvisitGStringExpression(GStringExpression expression) Visits aGStringExpression, traversing string parts and interpolated value expressions.voidvisitIfElse(IfStatement ifElse) Visits anIfStatement, traversing the condition, if-block, and optional else-block.voidvisitListExpression(ListExpression expression) Visits aListExpression, traversing all contained expressions.voidvisitMapEntryExpression(MapEntryExpression expression) Visits aMapEntryExpression, traversing key and value expressions.voidvisitMapExpression(MapExpression expression) Visits aMapExpression, traversing all map entry expressions.voidvisitMethodPointerExpression(MethodPointerExpression expression) Visits aMethodPointerExpression, traversing the object and method name expressions.voidvisitNotExpression(NotExpression expression) Visits aNotExpression, traversing the operand expression.voidvisitPostfixExpression(PostfixExpression expression) Visits aPostfixExpression, traversing the operand expression.voidvisitPrefixExpression(PrefixExpression expression) Visits aPrefixExpression, traversing the operand expression.voidvisitPropertyExpression(PropertyExpression expression) Visits aPropertyExpression, traversing the object and property name expressions.voidvisitRangeExpression(RangeExpression expression) Visits aRangeExpression, traversing from and to boundary expressions.voidvisitReturnStatement(ReturnStatement statement) Visits aReturnStatement, traversing its return expression.voidvisitShortTernaryExpression(ElvisOperatorExpression expression) Visits aElvisOperatorExpression, treating it as a ternary expression.voidvisitSpreadExpression(SpreadExpression expression) Visits aSpreadExpression, traversing the operand expression.voidvisitSpreadMapExpression(SpreadMapExpression expression) Visits aSpreadMapExpression, traversing the operand expression.voidVisits aStaticMethodCallExpression, traversing its argument list.voidvisitSwitch(SwitchStatement statement) Visits aSwitchStatement, traversing the switch expression, case statements, and default statement.voidvisitSynchronizedStatement(SynchronizedStatement statement) Visits aSynchronizedStatement, traversing the synchronization expression and code block.voidvisitTernaryExpression(TernaryExpression expression) Visits aTernaryExpression, traversing the condition, true-branch, and false-branch expressions.voidvisitThrowStatement(ThrowStatement statement) Visits aThrowStatement, traversing the exception expression.voidvisitTryCatchFinally(TryCatchStatement statement) Visits aTryCatchStatement, traversing resource statements, try block, catch statements, and finally block.voidvisitTupleExpression(TupleExpression expression) Visits aTupleExpression, traversing all contained expressions.voidvisitUnaryMinusExpression(UnaryMinusExpression expression) Visits aUnaryMinusExpression, traversing the operand expression.voidvisitUnaryPlusExpression(UnaryPlusExpression expression) Visits aUnaryPlusExpression, traversing the operand expression.voidvisitVariableExpression(VariableExpression expression) Visits aVariableExpression.voidvisitWhileLoop(WhileStatement loop) Visits aWhileStatement, traversing the boolean condition and loop body.Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, visitConstructorCallExpression, visitEmptyStatement, visitLambdaExpression, visitMethodCallExpression, visitMethodReferenceExpressionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor
visit, visit, visitEmptyExpression, visitListOfExpressions
-
Constructor Details
-
TransformingCodeVisitor
Creates a new transforming visitor with the given transformer.- Parameters:
trn- theClassCodeExpressionTransformerto apply after traversing each node; must not be null
-
-
Method Details
-
visitBlockStatement
Visits aBlockStatement, performing depth-first traversal followed by transformer processing.- Specified by:
visitBlockStatementin interfaceGroovyCodeVisitor- Overrides:
visitBlockStatementin classCodeVisitorSupport- Parameters:
block- the block statement to visit and transform- See Also:
-
visitForLoop
Description copied from class:CodeVisitorSupportVisits aForStatement, traversing the collection expression and loop body.- Specified by:
visitForLoopin interfaceGroovyCodeVisitor- Overrides:
visitForLoopin classCodeVisitorSupport- Parameters:
forLoop- the for loop statement
-
visitWhileLoop
Description copied from class:CodeVisitorSupportVisits aWhileStatement, traversing the boolean condition and loop body.- Specified by:
visitWhileLoopin interfaceGroovyCodeVisitor- Overrides:
visitWhileLoopin classCodeVisitorSupport- Parameters:
loop- the while loop statement
-
visitDoWhileLoop
Description copied from class:CodeVisitorSupportVisits aDoWhileStatement, traversing the loop body before the boolean condition.- Specified by:
visitDoWhileLoopin interfaceGroovyCodeVisitor- Overrides:
visitDoWhileLoopin classCodeVisitorSupport- Parameters:
loop- the do-while loop statement
-
visitIfElse
Description copied from class:CodeVisitorSupportVisits anIfStatement, traversing the condition, if-block, and optional else-block.- Specified by:
visitIfElsein interfaceGroovyCodeVisitor- Overrides:
visitIfElsein classCodeVisitorSupport- Parameters:
ifElse- the if-else statement
-
visitExpressionStatement
Description copied from class:CodeVisitorSupportVisits anExpressionStatement, traversing its contained expression.- Specified by:
visitExpressionStatementin interfaceGroovyCodeVisitor- Overrides:
visitExpressionStatementin classCodeVisitorSupport- Parameters:
statement- the expression statement
-
visitReturnStatement
Description copied from class:CodeVisitorSupportVisits aReturnStatement, traversing its return expression.- Specified by:
visitReturnStatementin interfaceGroovyCodeVisitor- Overrides:
visitReturnStatementin classCodeVisitorSupport- Parameters:
statement- the return statement
-
visitAssertStatement
Description copied from class:CodeVisitorSupportVisits anAssertStatement, traversing the assertion condition and optional message expression.- Specified by:
visitAssertStatementin interfaceGroovyCodeVisitor- Overrides:
visitAssertStatementin classCodeVisitorSupport- Parameters:
statement- the assert statement
-
visitTryCatchFinally
Description copied from class:CodeVisitorSupportVisits aTryCatchStatement, traversing resource statements, try block, catch statements, and finally block.- Specified by:
visitTryCatchFinallyin interfaceGroovyCodeVisitor- Overrides:
visitTryCatchFinallyin classCodeVisitorSupport- Parameters:
statement- the try-catch-finally statement
-
visitSwitch
Description copied from class:CodeVisitorSupportVisits aSwitchStatement, traversing the switch expression, case statements, and default statement.- Specified by:
visitSwitchin interfaceGroovyCodeVisitor- Overrides:
visitSwitchin classCodeVisitorSupport- Parameters:
statement- the switch statement
-
visitCaseStatement
Description copied from class:CodeVisitorSupportVisits aCaseStatement, traversing the case expression and code block.- Specified by:
visitCaseStatementin interfaceGroovyCodeVisitor- Overrides:
visitCaseStatementin classCodeVisitorSupport- Parameters:
statement- the case statement
-
visitBreakStatement
Description copied from class:CodeVisitorSupportVisits aBreakStatement. No traversal is performed as break statements contain no child nodes.- Specified by:
visitBreakStatementin interfaceGroovyCodeVisitor- Overrides:
visitBreakStatementin classCodeVisitorSupport- Parameters:
statement- the break statement
-
visitContinueStatement
Description copied from class:CodeVisitorSupportVisits aContinueStatement. No traversal is performed as continue statements contain no child nodes.- Specified by:
visitContinueStatementin interfaceGroovyCodeVisitor- Overrides:
visitContinueStatementin classCodeVisitorSupport- Parameters:
statement- the continue statement
-
visitSynchronizedStatement
Description copied from class:CodeVisitorSupportVisits aSynchronizedStatement, traversing the synchronization expression and code block.- Specified by:
visitSynchronizedStatementin interfaceGroovyCodeVisitor- Overrides:
visitSynchronizedStatementin classCodeVisitorSupport- Parameters:
statement- the synchronized statement
-
visitThrowStatement
Description copied from class:CodeVisitorSupportVisits aThrowStatement, traversing the exception expression.- Specified by:
visitThrowStatementin interfaceGroovyCodeVisitor- Overrides:
visitThrowStatementin classCodeVisitorSupport- Parameters:
statement- the throw statement
-
visitStaticMethodCallExpression
Description copied from class:CodeVisitorSupportVisits aStaticMethodCallExpression, traversing its argument list.- Specified by:
visitStaticMethodCallExpressionin interfaceGroovyCodeVisitor- Overrides:
visitStaticMethodCallExpressionin classCodeVisitorSupport- Parameters:
call- the static method call expression
-
visitBinaryExpression
Description copied from class:CodeVisitorSupportVisits aBinaryExpression, traversing left and right operand expressions.- Specified by:
visitBinaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBinaryExpressionin classCodeVisitorSupport- Parameters:
expression- the binary expression
-
visitTernaryExpression
Description copied from class:CodeVisitorSupportVisits aTernaryExpression, traversing the condition, true-branch, and false-branch expressions.- Specified by:
visitTernaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitTernaryExpressionin classCodeVisitorSupport- Parameters:
expression- the ternary expression
-
visitShortTernaryExpression
Description copied from class:CodeVisitorSupportVisits aElvisOperatorExpression, treating it as a ternary expression.- Specified by:
visitShortTernaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitShortTernaryExpressionin classCodeVisitorSupport- Parameters:
expression- the elvis operator expression
-
visitPostfixExpression
Description copied from class:CodeVisitorSupportVisits aPostfixExpression, traversing the operand expression.- Specified by:
visitPostfixExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPostfixExpressionin classCodeVisitorSupport- Parameters:
expression- the postfix expression
-
visitPrefixExpression
Description copied from class:CodeVisitorSupportVisits aPrefixExpression, traversing the operand expression.- Specified by:
visitPrefixExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPrefixExpressionin classCodeVisitorSupport- Parameters:
expression- the prefix expression
-
visitBooleanExpression
Description copied from class:CodeVisitorSupportVisits aBooleanExpression, traversing the contained expression.- Specified by:
visitBooleanExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBooleanExpressionin classCodeVisitorSupport- Parameters:
expression- the boolean expression
-
visitNotExpression
Description copied from class:CodeVisitorSupportVisits aNotExpression, traversing the operand expression.- Specified by:
visitNotExpressionin interfaceGroovyCodeVisitor- Overrides:
visitNotExpressionin classCodeVisitorSupport- Parameters:
expression- the not expression
-
visitClosureExpression
Description copied from class:CodeVisitorSupportVisits aClosureExpression, traversing parameter initializers and the closure code block.- Specified by:
visitClosureExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClosureExpressionin classCodeVisitorSupport- Parameters:
expression- the closure expression
-
visitTupleExpression
Description copied from class:CodeVisitorSupportVisits aTupleExpression, traversing all contained expressions.- Specified by:
visitTupleExpressionin interfaceGroovyCodeVisitor- Overrides:
visitTupleExpressionin classCodeVisitorSupport- Parameters:
expression- the tuple expression
-
visitListExpression
Description copied from class:CodeVisitorSupportVisits aListExpression, traversing all contained expressions.- Specified by:
visitListExpressionin interfaceGroovyCodeVisitor- Overrides:
visitListExpressionin classCodeVisitorSupport- Parameters:
expression- the list expression
-
visitArrayExpression
Description copied from class:CodeVisitorSupportVisits anArrayExpression, traversing element expressions and size expressions.- Specified by:
visitArrayExpressionin interfaceGroovyCodeVisitor- Overrides:
visitArrayExpressionin classCodeVisitorSupport- Parameters:
expression- the array expression
-
visitMapExpression
Description copied from class:CodeVisitorSupportVisits aMapExpression, traversing all map entry expressions.- Specified by:
visitMapExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMapExpressionin classCodeVisitorSupport- Parameters:
expression- the map expression
-
visitMapEntryExpression
Description copied from class:CodeVisitorSupportVisits aMapEntryExpression, traversing key and value expressions.- Specified by:
visitMapEntryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMapEntryExpressionin classCodeVisitorSupport- Parameters:
expression- the map entry expression
-
visitRangeExpression
Description copied from class:CodeVisitorSupportVisits aRangeExpression, traversing from and to boundary expressions.- Specified by:
visitRangeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitRangeExpressionin classCodeVisitorSupport- Parameters:
expression- the range expression
-
visitSpreadExpression
Description copied from class:CodeVisitorSupportVisits aSpreadExpression, traversing the operand expression.- Specified by:
visitSpreadExpressionin interfaceGroovyCodeVisitor- Overrides:
visitSpreadExpressionin classCodeVisitorSupport- Parameters:
expression- the spread expression
-
visitSpreadMapExpression
Description copied from class:CodeVisitorSupportVisits aSpreadMapExpression, traversing the operand expression.- Specified by:
visitSpreadMapExpressionin interfaceGroovyCodeVisitor- Overrides:
visitSpreadMapExpressionin classCodeVisitorSupport- Parameters:
expression- the spread map expression
-
visitMethodPointerExpression
Description copied from class:CodeVisitorSupportVisits aMethodPointerExpression, traversing the object and method name expressions.- Specified by:
visitMethodPointerExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMethodPointerExpressionin classCodeVisitorSupport- Parameters:
expression- the method pointer expression
-
visitUnaryMinusExpression
Description copied from class:CodeVisitorSupportVisits aUnaryMinusExpression, traversing the operand expression.- Specified by:
visitUnaryMinusExpressionin interfaceGroovyCodeVisitor- Overrides:
visitUnaryMinusExpressionin classCodeVisitorSupport- Parameters:
expression- the unary minus expression
-
visitUnaryPlusExpression
Description copied from class:CodeVisitorSupportVisits aUnaryPlusExpression, traversing the operand expression.- Specified by:
visitUnaryPlusExpressionin interfaceGroovyCodeVisitor- Overrides:
visitUnaryPlusExpressionin classCodeVisitorSupport- Parameters:
expression- the unary plus expression
-
visitBitwiseNegationExpression
Description copied from class:CodeVisitorSupportVisits aBitwiseNegationExpression, traversing the operand expression.- Specified by:
visitBitwiseNegationExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBitwiseNegationExpressionin classCodeVisitorSupport- Parameters:
expression- the bitwise negation expression
-
visitCastExpression
Description copied from class:CodeVisitorSupportVisits aCastExpression, traversing the operand expression.- Specified by:
visitCastExpressionin interfaceGroovyCodeVisitor- Overrides:
visitCastExpressionin classCodeVisitorSupport- Parameters:
expression- the cast expression
-
visitConstantExpression
Description copied from class:CodeVisitorSupportVisits aConstantExpression. No traversal is performed as constants contain no child expressions.- Specified by:
visitConstantExpressionin interfaceGroovyCodeVisitor- Overrides:
visitConstantExpressionin classCodeVisitorSupport- Parameters:
expression- the constant expression
-
visitClassExpression
Description copied from class:CodeVisitorSupportVisits aClassExpression. No traversal is performed as class expressions contain no child expressions.- Specified by:
visitClassExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClassExpressionin classCodeVisitorSupport- Parameters:
expression- the class expression
-
visitVariableExpression
Description copied from class:CodeVisitorSupportVisits aVariableExpression. No traversal is performed as variable expressions contain no child expressions.- Specified by:
visitVariableExpressionin interfaceGroovyCodeVisitor- Overrides:
visitVariableExpressionin classCodeVisitorSupport- Parameters:
expression- the variable expression
-
visitDeclarationExpression
Description copied from class:CodeVisitorSupportVisits aDeclarationExpression, treating it as a binary expression.- Specified by:
visitDeclarationExpressionin interfaceGroovyCodeVisitor- Overrides:
visitDeclarationExpressionin classCodeVisitorSupport- Parameters:
expression- the declaration expression
-
visitPropertyExpression
Description copied from class:CodeVisitorSupportVisits aPropertyExpression, traversing the object and property name expressions.- Specified by:
visitPropertyExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPropertyExpressionin classCodeVisitorSupport- Parameters:
expression- the property expression
-
visitAttributeExpression
Description copied from class:CodeVisitorSupportVisits anAttributeExpression, traversing the object and attribute name expressions.- Specified by:
visitAttributeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitAttributeExpressionin classCodeVisitorSupport- Parameters:
expression- the attribute expression
-
visitFieldExpression
Description copied from class:CodeVisitorSupportVisits aFieldExpression. No traversal is performed as field expressions contain no child expressions.- Specified by:
visitFieldExpressionin interfaceGroovyCodeVisitor- Overrides:
visitFieldExpressionin classCodeVisitorSupport- Parameters:
expression- the field expression
-
visitGStringExpression
Description copied from class:CodeVisitorSupportVisits aGStringExpression, traversing string parts and interpolated value expressions.- Specified by:
visitGStringExpressionin interfaceGroovyCodeVisitor- Overrides:
visitGStringExpressionin classCodeVisitorSupport- Parameters:
expression- the GString expression
-
visitCatchStatement
Description copied from class:CodeVisitorSupportVisits aCatchStatement, traversing the catch block code.- Specified by:
visitCatchStatementin interfaceGroovyCodeVisitor- Overrides:
visitCatchStatementin classCodeVisitorSupport- Parameters:
statement- the catch statement
-
visitArgumentlistExpression
Description copied from class:CodeVisitorSupportVisits anArgumentListExpression, treating it as a tuple expression.- Specified by:
visitArgumentlistExpressionin interfaceGroovyCodeVisitor- Overrides:
visitArgumentlistExpressionin classCodeVisitorSupport- Parameters:
ale- the argument list expression
-
visitClosureListExpression
Description copied from class:CodeVisitorSupportVisits aClosureListExpression, traversing all contained expressions.- Specified by:
visitClosureListExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClosureListExpressionin classCodeVisitorSupport- Parameters:
cle- the closure list expression
-
visitBytecodeExpression
Description copied from class:CodeVisitorSupportVisits aBytecodeExpression. No traversal is performed as bytecode expressions are terminal.- Specified by:
visitBytecodeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBytecodeExpressionin classCodeVisitorSupport- Parameters:
cle- the bytecode expression
-