org.eclipse.jdt.core.dom
Class InfixExpression

java.lang.Object
  extended by org.eclipse.jdt.core.dom.ASTNode
      extended by org.eclipse.jdt.core.dom.Expression
          extended by org.eclipse.jdt.core.dom.InfixExpression

public class InfixExpression
extends Expression

Infix expression AST node type.

 InfixExpression:
    Expression InfixOperator Expression { InfixOperator Expression } 
 

Since:
2.0

Nested Class Summary
static class InfixExpression.Operator
          Infix operators (typesafe enumeration).
 
Field Summary
static ChildListPropertyDescriptor EXTENDED_OPERANDS_PROPERTY
          The "extendedOperands" structural property of this node type.
static ChildPropertyDescriptor LEFT_OPERAND_PROPERTY
          The "leftOperand" structural property of this node type.
static SimplePropertyDescriptor OPERATOR_PROPERTY
          The "operator" structural property of this node type.
static ChildPropertyDescriptor RIGHT_OPERAND_PROPERTY
          The "rightOperand" structural property of this node type.
 
Fields inherited from class org.eclipse.jdt.core.dom.ASTNode
ANNOTATION_TYPE_DECLARATION, ANNOTATION_TYPE_MEMBER_DECLARATION, ANONYMOUS_CLASS_DECLARATION, ARRAY_ACCESS, ARRAY_CREATION, ARRAY_INITIALIZER, ARRAY_TYPE, ASSERT_STATEMENT, ASSIGNMENT, BLOCK, BLOCK_COMMENT, BOOLEAN_LITERAL, BREAK_STATEMENT, CAST_EXPRESSION, CATCH_CLAUSE, CHARACTER_LITERAL, CLASS_INSTANCE_CREATION, COMPILATION_UNIT, CONDITIONAL_EXPRESSION, CONSTRUCTOR_INVOCATION, CONTINUE_STATEMENT, DO_STATEMENT, EMPTY_STATEMENT, ENHANCED_FOR_STATEMENT, ENUM_CONSTANT_DECLARATION, ENUM_DECLARATION, EXPRESSION_STATEMENT, FIELD_ACCESS, FIELD_DECLARATION, FOR_STATEMENT, IF_STATEMENT, IMPORT_DECLARATION, INFIX_EXPRESSION, INITIALIZER, INSTANCEOF_EXPRESSION, JAVADOC, LABELED_STATEMENT, LINE_COMMENT, MALFORMED, MARKER_ANNOTATION, MEMBER_REF, MEMBER_VALUE_PAIR, METHOD_DECLARATION, METHOD_INVOCATION, METHOD_REF, METHOD_REF_PARAMETER, MODIFIER, NORMAL_ANNOTATION, NULL_LITERAL, NUMBER_LITERAL, ORIGINAL, PACKAGE_DECLARATION, PARAMETERIZED_TYPE, PARENTHESIZED_EXPRESSION, POSTFIX_EXPRESSION, PREFIX_EXPRESSION, PRIMITIVE_TYPE, PROTECT, QUALIFIED_NAME, QUALIFIED_TYPE, RECOVERED, RETURN_STATEMENT, SIMPLE_NAME, SIMPLE_TYPE, SINGLE_MEMBER_ANNOTATION, SINGLE_VARIABLE_DECLARATION, STRING_LITERAL, SUPER_CONSTRUCTOR_INVOCATION, SUPER_FIELD_ACCESS, SUPER_METHOD_INVOCATION, SWITCH_CASE, SWITCH_STATEMENT, SYNCHRONIZED_STATEMENT, TAG_ELEMENT, TEXT_ELEMENT, THIS_EXPRESSION, THROW_STATEMENT, TRY_STATEMENT, TYPE_DECLARATION, TYPE_DECLARATION_STATEMENT, TYPE_LITERAL, TYPE_PARAMETER, VARIABLE_DECLARATION_EXPRESSION, VARIABLE_DECLARATION_FRAGMENT, VARIABLE_DECLARATION_STATEMENT, WHILE_STATEMENT, WILDCARD_TYPE
 
Method Summary
 java.util.List extendedOperands()
          Returns the live list of extended operands.
 Expression getLeftOperand()
          Returns the left operand of this infix expression.
 InfixExpression.Operator getOperator()
          Returns the operator of this infix expression.
 Expression getRightOperand()
          Returns the right operand of this infix expression.
 boolean hasExtendedOperands()
          Returns where there are any extended operands.
static java.util.List propertyDescriptors(int apiLevel)
          Returns a list of structural property descriptors for this node type.
 void setLeftOperand(Expression expression)
          Sets the left operand of this infix expression.
 void setOperator(InfixExpression.Operator operator)
          Sets the operator of this infix expression.
 void setRightOperand(Expression expression)
          Sets the right operand of this infix expression.
 
Methods inherited from class org.eclipse.jdt.core.dom.Expression
resolveBoxing, resolveConstantExpressionValue, resolveTypeBinding, resolveUnboxing
 
Methods inherited from class org.eclipse.jdt.core.dom.ASTNode
accept, copySubtree, copySubtrees, delete, equals, getAST, getFlags, getLength, getLocationInParent, getNodeType, getParent, getProperty, getRoot, getStartPosition, getStructuralProperty, hashCode, nodeClassForType, properties, setFlags, setProperty, setSourceRange, setStructuralProperty, structuralPropertiesForType, subtreeBytes, subtreeMatch, toString
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

LEFT_OPERAND_PROPERTY

public static final ChildPropertyDescriptor LEFT_OPERAND_PROPERTY
The "leftOperand" structural property of this node type.

Since:
3.0

OPERATOR_PROPERTY

public static final SimplePropertyDescriptor OPERATOR_PROPERTY
The "operator" structural property of this node type.

Since:
3.0

RIGHT_OPERAND_PROPERTY

public static final ChildPropertyDescriptor RIGHT_OPERAND_PROPERTY
The "rightOperand" structural property of this node type.

Since:
3.0

EXTENDED_OPERANDS_PROPERTY

public static final ChildListPropertyDescriptor EXTENDED_OPERANDS_PROPERTY
The "extendedOperands" structural property of this node type.

Since:
3.0
Method Detail

propertyDescriptors

public static java.util.List propertyDescriptors(int apiLevel)
Returns a list of structural property descriptors for this node type. Clients must not modify the result.

Parameters:
apiLevel - the API level; one of the AST.JLS* constants
Returns:
a list of property descriptors (element type: StructuralPropertyDescriptor)
Since:
3.0

getOperator

public InfixExpression.Operator getOperator()
Returns the operator of this infix expression.

Returns:
the infix operator

setOperator

public void setOperator(InfixExpression.Operator operator)
Sets the operator of this infix expression.

Parameters:
operator - the infix operator
Throws:
java.lang.IllegalArgumentException - if the argument is incorrect

getLeftOperand

public Expression getLeftOperand()
Returns the left operand of this infix expression.

Returns:
the left operand node

setLeftOperand

public void setLeftOperand(Expression expression)
Sets the left operand of this infix expression.

Parameters:
expression - the left operand node
Throws:
java.lang.IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

getRightOperand

public Expression getRightOperand()
Returns the right operand of this infix expression.

Returns:
the right operand node

setRightOperand

public void setRightOperand(Expression expression)
Sets the right operand of this infix expression.

Parameters:
expression - the right operand node
Throws:
java.lang.IllegalArgumentException - if:
  • the node belongs to a different AST
  • the node already has a parent
  • a cycle in would be created

hasExtendedOperands

public boolean hasExtendedOperands()
Returns where there are any extended operands.

Returns:
true if there are one or more extended operands, and false if there are no extended operands

extendedOperands

public java.util.List extendedOperands()
Returns the live list of extended operands.

The extended operands is the preferred way of representing deeply nested expressions of the form L op R op R2 op R3... where the same operator appears between all the operands (the most common case being lengthy string concatenation expressions). Using the extended operands keeps the trees from getting too deep; this decreases the risk is running out of thread stack space at runtime when traversing such trees. ((a + b) + c) + d would be translated to: leftOperand: a rightOperand: b extendedOperands: {c, d} operator: +

Returns:
the live list of extended operands (element type: Expression)