Package org.codehaus.groovy.ast.expr
Class BinaryExpression
java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.ast.expr.BinaryExpression
- All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>,NodeMetaDataHandler
- Direct Known Subclasses:
CompareIdentityExpression,CompareToNullExpression,DeclarationExpression
Represents a binary operation between two expressions, such as addition, subtraction, comparison,
or array/map access. The operation is specified by a
Token indicating the operation type
(e.g., +, -, ==, []). Supports safe operations where null objects
are handled gracefully, returning null instead of throwing an exception.- See Also:
-
Field Summary
Fields inherited from class org.codehaus.groovy.ast.expr.Expression
EMPTY_ARRAYFields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT -
Constructor Summary
ConstructorsConstructorDescriptionBinaryExpression(Expression leftExpression, Token operation, Expression rightExpression) Creates a binary expression with the given left operand, operation, and right operand.BinaryExpression(Expression leftExpression, Token operation, Expression rightExpression, boolean safe) Creates a binary expression with optional safe navigation support. -
Method Summary
Modifier and TypeMethodDescriptionReturns the left operand of this binary expression.Returns the operation token representing the binary operation.Returns the right operand of this binary expression.getText()Returns a human-readable text representation of this AST node.booleanisSafe()Indicates whether this binary expression uses safe navigation.static BinaryExpressionnewAssignmentExpression(Variable variable, Expression rhs) Creates an assignment expression in which the specified expression is written into the specified variable.static BinaryExpressionnewInitializationExpression(String variable, ClassNode type, Expression rhs) Creates a variable initialization expression in which the specified expression is written into the specified variable name with an optional type annotation.voidsetLeftExpression(Expression leftExpression) Sets the left operand of this binary expression.voidsetRightExpression(Expression rightExpression) Sets the right operand of this binary expression.voidsetSafe(boolean safe) Sets whether this binary expression should use safe navigation.toString()transformExpression(ExpressionTransformer transformer) Transforms this expression and any nested expressions according to the provided transformer.voidvisit(GroovyCodeVisitor visitor) Accepts a code visitor for AST traversal and transformation.Methods inherited from class org.codehaus.groovy.ast.expr.Expression
getType, setType, transformExpressions, transformExpressionsMethods inherited from class org.codehaus.groovy.ast.AnnotatedNode
addAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSyntheticMethods inherited from class org.codehaus.groovy.ast.ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePositionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler
copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData
-
Constructor Details
-
BinaryExpression
Creates a binary expression with the given left operand, operation, and right operand.- Parameters:
leftExpression- the left operand of the binary operation; must not be nulloperation- the operation token (e.g.,Types.PLUS,Types.MINUS); may not be nullrightExpression- the right operand of the binary operation; must not be null
-
BinaryExpression
public BinaryExpression(Expression leftExpression, Token operation, Expression rightExpression, boolean safe) Creates a binary expression with optional safe navigation support.- Parameters:
leftExpression- the left operand of the binary operation; must not be nulloperation- the operation token; may not be nullrightExpression- the right operand of the binary operation; must not be nullsafe- if true, enables safe navigation (e.g., null-safe array access with?[])
-
-
Method Details
-
toString
-
visit
Description copied from class:ASTNodeAccepts a code visitor for AST traversal and transformation. Subclasses must implement this method to support visitor pattern-based processing. The visitor pattern enables decoupling of AST structure from processing logic.- Overrides:
visitin classASTNode- Parameters:
visitor- theGroovyCodeVisitorto process this node
-
transformExpression
Description copied from class:ExpressionTransforms this expression and any nested expressions according to the provided transformer. This method is called during AST transformation phases and must recursively transform any nested expressions to support full AST tree transformation.- Specified by:
transformExpressionin classExpression- Parameters:
transformer- theExpressionTransformerto apply- Returns:
- a transformed copy of this expression (or this expression itself if no changes are needed)
-
getLeftExpression
Returns the left operand of this binary expression.- Returns:
- the left operand
Expression; never null
-
setLeftExpression
Sets the left operand of this binary expression.- Parameters:
leftExpression- the new left operand; must not be null
-
setRightExpression
Sets the right operand of this binary expression.- Parameters:
rightExpression- the new right operand; must not be null
-
getOperation
Returns the operation token representing the binary operation.- Returns:
- the operation
Token(e.g.,Types.PLUS,Types.EQUAL); never null
-
getRightExpression
Returns the right operand of this binary expression.- Returns:
- the right operand
Expression; never null
-
getText
Description copied from class:ASTNodeReturns a human-readable text representation of this AST node. Used for debugging and error messages. Default implementation returns a message indicating the representation is not yet implemented for this node type. -
isSafe
public boolean isSafe()Indicates whether this binary expression uses safe navigation. Safe operations return null instead of throwing a NullPointerException when the left operand is null (e.g.,obj?.property).- Returns:
- true if safe navigation is enabled; false otherwise
-
setSafe
public void setSafe(boolean safe) Sets whether this binary expression should use safe navigation.- Parameters:
safe- true to enable safe navigation; false otherwise
-
newAssignmentExpression
Creates an assignment expression in which the specified expression is written into the specified variable. This is a factory method for constructing assignment operations likex = value.- Parameters:
variable- the target variable for assignment; must not be nullrhs- the right-hand side expression to assign; must not be null- Returns:
- a new
BinaryExpressionrepresenting the assignment
-
newInitializationExpression
public static BinaryExpression newInitializationExpression(String variable, ClassNode type, Expression rhs) Creates a variable initialization expression in which the specified expression is written into the specified variable name with an optional type annotation. This is a factory method for constructing typed variable declarations likeString x = value.- Parameters:
variable- the variable name to initialize; must not be nulltype- the type annotation for the variable; may be null for untyped variablesrhs- the right-hand side expression to assign; must not be null- Returns:
- a new
BinaryExpressionrepresenting the initialization
-