Class InfixExpression


public class InfixExpression extends Expression
Infix expression AST node type.
 InfixExpression:
    Expression InfixOperator Expression { InfixOperator Expression }
 
Since:
2.0
Restriction:
This class is not intended to be instantiated by clients.
  • Field Details

    • LEFT_OPERAND_PROPERTY

      public static final ChildPropertyDescriptor LEFT_OPERAND_PROPERTY
      The "leftOperand" structural property of this node type (child type: Expression).
      Since:
      3.0
    • OPERATOR_PROPERTY

      public static final SimplePropertyDescriptor OPERATOR_PROPERTY
      The "operator" structural property of this node type (type: InfixExpression.Operator).
      Since:
      3.0
    • RIGHT_OPERAND_PROPERTY

      public static final ChildPropertyDescriptor RIGHT_OPERAND_PROPERTY
      The "rightOperand" structural property of this node type (child type: Expression).
      Since:
      3.0
    • EXTENDED_OPERANDS_PROPERTY

      public static final ChildListPropertyDescriptor EXTENDED_OPERANDS_PROPERTY
      The "extendedOperands" structural property of this node type (element type: Expression).
      Since:
      3.0
  • Method Details

    • propertyDescriptors

      public static 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:
      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:
      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:
      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 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)