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.
    • Method Detail

      • 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
      • 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)