Example usage for org.eclipse.jdt.core.dom InfixExpression extendedOperands

List of usage examples for org.eclipse.jdt.core.dom InfixExpression extendedOperands

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom InfixExpression extendedOperands.

Prototype

ASTNode.NodeList extendedOperands

To view the source code for org.eclipse.jdt.core.dom InfixExpression extendedOperands.

Click Source Link

Document

The list of extended operand expressions (element type: Expression ).

Usage

From source file:at.bestsolution.fxide.jdt.corext.dom.ASTFlattener.java

License:Open Source License

@Override
public boolean visit(InfixExpression node) {
    node.getLeftOperand().accept(this);
    this.fBuffer.append(' '); // for cases like x= i - -1; or x= i++ + ++i;
    this.fBuffer.append(node.getOperator().toString());
    this.fBuffer.append(' ');
    node.getRightOperand().accept(this);
    final List<Expression> extendedOperands = node.extendedOperands();
    if (extendedOperands.size() != 0) {
        this.fBuffer.append(' ');
        for (Iterator<Expression> it = extendedOperands.iterator(); it.hasNext();) {
            this.fBuffer.append(node.getOperator().toString()).append(' ');
            Expression e = it.next();
            e.accept(this);
        }// w  ww  .j  av a  2s  . c  om
    }
    return false;
}

From source file:boa.datagen.util.Java7Visitor.java

License:Apache License

@Override
public boolean visit(InfixExpression node) {
    boa.types.Ast.Expression.Builder b = boa.types.Ast.Expression.newBuilder();
    //      b.setPosition(pos.build());
    if (node.getOperator() == InfixExpression.Operator.AND)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.BIT_AND);
    else if (node.getOperator() == InfixExpression.Operator.CONDITIONAL_AND)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.LOGICAL_AND);
    else if (node.getOperator() == InfixExpression.Operator.CONDITIONAL_OR)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.LOGICAL_OR);
    else if (node.getOperator() == InfixExpression.Operator.DIVIDE)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_DIV);
    else if (node.getOperator() == InfixExpression.Operator.EQUALS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.EQ);
    else if (node.getOperator() == InfixExpression.Operator.GREATER)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.GT);
    else if (node.getOperator() == InfixExpression.Operator.GREATER_EQUALS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.GTEQ);
    else if (node.getOperator() == InfixExpression.Operator.LEFT_SHIFT)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.BIT_LSHIFT);
    else if (node.getOperator() == InfixExpression.Operator.LESS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.LT);
    else if (node.getOperator() == InfixExpression.Operator.LESS_EQUALS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.LTEQ);
    else if (node.getOperator() == InfixExpression.Operator.MINUS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_SUB);
    else if (node.getOperator() == InfixExpression.Operator.NOT_EQUALS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.NEQ);
    else if (node.getOperator() == InfixExpression.Operator.OR)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.BIT_OR);
    else if (node.getOperator() == InfixExpression.Operator.PLUS)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_ADD);
    else if (node.getOperator() == InfixExpression.Operator.REMAINDER)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_MOD);
    else if (node.getOperator() == InfixExpression.Operator.RIGHT_SHIFT_SIGNED)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.BIT_RSHIFT);
    else if (node.getOperator() == InfixExpression.Operator.RIGHT_SHIFT_UNSIGNED)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.BIT_UNSIGNEDRSHIFT);
    else if (node.getOperator() == InfixExpression.Operator.TIMES)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.OP_MULT);
    else if (node.getOperator() == InfixExpression.Operator.XOR)
        b.setKind(boa.types.Ast.Expression.ExpressionKind.BIT_XOR);
    node.getLeftOperand().accept(this);
    b.addExpressions(expressions.pop());
    node.getRightOperand().accept(this);
    b.addExpressions(expressions.pop());
    for (Object e : node.extendedOperands()) {
        ((org.eclipse.jdt.core.dom.Expression) e).accept(this);
        b.addExpressions(expressions.pop());
    }/* ww  w .ja  va  2 s.  c  o m*/
    expressions.push(b.build());
    return false;
}

From source file:coloredide.utils.CopiedNaiveASTFlattener.java

License:Open Source License

public boolean visit(InfixExpression node) {
    node.getLeftOperand().accept(this);
    this.buffer.append(' '); // for cases like x= i - -1; or x= i++ +
    // ++i;//from   w  w  w. j a  va  2 s .c o  m
    this.buffer.append(node.getOperator().toString());
    this.buffer.append(' ');
    node.getRightOperand().accept(this);
    final List extendedOperands = node.extendedOperands();
    if (extendedOperands.size() != 0) {
        this.buffer.append(' ');
        for (Iterator it = extendedOperands.iterator(); it.hasNext();) {
            this.buffer.append(node.getOperator().toString()).append(' ');
            Expression e = (Expression) it.next();
            e.accept(this);
        }
    }
    return false;
}

From source file:com.bsiag.eclipse.jdt.java.formatter.linewrap.WrapPreparator.java

License:Open Source License

private void findTokensToWrap(InfixExpression node, int depth) {
    Expression left = node.getLeftOperand();
    if (left instanceof InfixExpression && samePrecedence(node, (InfixExpression) left)) {
        findTokensToWrap((InfixExpression) left, depth + 1);
    } else if (this.wrapIndexes.isEmpty() // always add first operand, it will be taken as wrap parent
            || !this.options.wrap_before_binary_operator) {
        this.wrapIndexes.add(this.tm.firstIndexIn(left, -1));
    }/*from w ww  .  j a v a 2 s.c o m*/

    Expression right = node.getRightOperand();
    List<Expression> extended = node.extendedOperands();
    for (int i = -1; i < extended.size(); i++) {
        Expression operand = (i == -1) ? right : extended.get(i);
        if (operand instanceof InfixExpression && samePrecedence(node, (InfixExpression) operand)) {
            findTokensToWrap((InfixExpression) operand, depth + 1);
        }
        int indexBefore = this.tm.firstIndexBefore(operand, -1);
        while (this.tm.get(indexBefore).isComment())
            indexBefore--;
        assert node.getOperator().toString().equals(this.tm.toString(indexBefore));
        int indexAfter = this.tm.firstIndexIn(operand, -1);
        this.wrapIndexes.add(this.options.wrap_before_binary_operator ? indexBefore : indexAfter);

        if (!this.options.join_wrapped_lines) {
            // TODO there should be an option for never joining wraps on opposite side of the operator
            if (this.options.wrap_before_binary_operator) {
                if (this.tm.countLineBreaksBetween(this.tm.get(indexAfter - 1), this.tm.get(indexAfter)) > 0)
                    this.wrapIndexes.add(indexAfter);
            } else {
                if (this.tm.countLineBreaksBetween(this.tm.get(indexBefore), this.tm.get(indexBefore - 1)) > 0)
                    this.wrapIndexes.add(indexBefore);
            }
        }
    }
}

From source file:com.bsiag.eclipse.jdt.java.formatter.SpacePreparator.java

License:Open Source License

@Override
public boolean visit(InfixExpression node) {
    String operator = node.getOperator().toString();
    handleOperator(operator, node.getRightOperand(), this.options.insert_space_before_binary_operator,
            this.options.insert_space_after_binary_operator);
    List<Expression> extendedOperands = node.extendedOperands();
    for (Expression operand : extendedOperands) {
        handleOperator(operator, operand, this.options.insert_space_before_binary_operator,
                this.options.insert_space_after_binary_operator);
    }/*  ww w.jav a  2s.c  o  m*/
    return true;
}

From source file:com.google.dart.java2dart.SyntaxTranslator.java

License:Open Source License

@Override
public boolean visit(org.eclipse.jdt.core.dom.InfixExpression node) {
    Expression left = translate(node.getLeftOperand());
    Expression right = translate(node.getRightOperand());
    // operator//from ww w.j  a  va 2  s .  co m
    TokenType tokenType = null;
    org.eclipse.jdt.core.dom.InfixExpression.Operator javaOperator = node.getOperator();
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.PLUS) {
        tokenType = TokenType.PLUS;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.MINUS) {
        tokenType = TokenType.MINUS;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.TIMES) {
        tokenType = TokenType.STAR;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.DIVIDE) {
        if (isIntegerType(node.getLeftOperand()) && isIntegerType(node.getRightOperand())) {
            tokenType = TokenType.TILDE_SLASH;
        } else {
            tokenType = TokenType.SLASH;
        }
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.REMAINDER) {
        tokenType = TokenType.PERCENT;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.LEFT_SHIFT) {
        tokenType = TokenType.LT_LT;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.RIGHT_SHIFT_SIGNED
            || javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.RIGHT_SHIFT_UNSIGNED) {
        tokenType = TokenType.GT_GT;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.CONDITIONAL_OR) {
        tokenType = TokenType.BAR_BAR;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.CONDITIONAL_AND) {
        tokenType = TokenType.AMPERSAND_AMPERSAND;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.XOR) {
        tokenType = TokenType.CARET;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.OR) {
        tokenType = TokenType.BAR;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.AND) {
        tokenType = TokenType.AMPERSAND;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.LESS) {
        tokenType = TokenType.LT;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.GREATER) {
        tokenType = TokenType.GT;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.LESS_EQUALS) {
        tokenType = TokenType.LT_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.GREATER_EQUALS) {
        tokenType = TokenType.GT_EQ;
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.EQUALS) {
        if (isNumberOrNull(left) || isNumberOrNull(right)) {
            tokenType = TokenType.EQ_EQ;
        } else {
            return done(methodInvocation("identical", left, right));
        }
    }
    if (javaOperator == org.eclipse.jdt.core.dom.InfixExpression.Operator.NOT_EQUALS) {
        tokenType = TokenType.BANG_EQ;
    }
    Assert.isNotNull(tokenType, "No token for: " + javaOperator);
    // create BinaryExpression
    BinaryExpression binary = binaryExpression(left, tokenType, right);
    for (Object javaOperand : node.extendedOperands()) {
        Expression operand = translate((org.eclipse.jdt.core.dom.ASTNode) javaOperand);
        binary = binaryExpression(binary, tokenType, operand);
    }
    return done(binary);
}

From source file:com.google.devtools.j2cpp.gen.CppStatementGenerator.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//  www.jav  a  2  s.co m
public boolean visit(InfixExpression node) {
    InfixExpression.Operator op = node.getOperator();
    ITypeBinding type = Types.getTypeBinding(node);
    if (Types.isJavaStringType(type) && op.equals(InfixExpression.Operator.PLUS)) {
        printStringConcatenation(node.getLeftOperand(), node.getRightOperand(), node.extendedOperands(), false);
    } else if (op.equals(InfixExpression.Operator.RIGHT_SHIFT_UNSIGNED)) {
        printUnsignedRightShift(node.getLeftOperand(), node.getRightOperand());
    } else if (op.equals(InfixExpression.Operator.REMAINDER) && isFloatingPoint(node)) {
        buffer.append(type.isEqualTo(node.getAST().resolveWellKnownType("float")) ? "fmodf" : "fmod");
        buffer.append('(');
        node.getLeftOperand().accept(this);
        buffer.append(", ");
        node.getRightOperand().accept(this);
        buffer.append(')');
    } else {
        node.getLeftOperand().accept(this);
        buffer.append(' ');
        buffer.append(node.getOperator().toString());
        buffer.append(' ');
        node.getRightOperand().accept(this);
        final List<Expression> extendedOperands = node.extendedOperands();
        if (extendedOperands.size() != 0) {
            buffer.append(' ');
            for (Iterator<Expression> it = extendedOperands.iterator(); it.hasNext();) {
                buffer.append(node.getOperator().toString()).append(' ');
                it.next().accept(this);
            }
        }
    }
    return false;
}

From source file:com.google.devtools.j2cpp.types.ImplementationImportCollector.java

License:Open Source License

@Override
public boolean visit(InfixExpression node) {
    if (Types.isJavaStringType(Types.getTypeBinding(node))) {
        boolean needsImport = false;
        if (Types.isBooleanType(Types.getTypeBinding(node.getLeftOperand()))
                || Types.isBooleanType(Types.getTypeBinding(node.getRightOperand()))) {
            needsImport = true;//from   w  w w . ja  v  a2  s.  c  om
        } else {
            @SuppressWarnings("unchecked")
            List<Expression> extendedExpressions = node.extendedOperands(); // Safe by definition
            for (Expression extendedExpression : extendedExpressions) {
                if (Types.isBooleanType(Types.getTypeBinding(extendedExpression))) {
                    needsImport = true;
                    break;
                }
            }
        }

        if (needsImport) {
            // Implicit conversion from boolean -> String translates into a
            // Boolean.toString(...) call, so add a reference to java.lang.Boolean.
            addReference(node.getAST().resolveWellKnownType("java.lang.Boolean"));
        }
    }
    return super.visit(node);
}

From source file:com.google.devtools.j2objc.util.ASTUtil.java

License:Apache License

@SuppressWarnings("unchecked")
public static List<Expression> getExtendedOperands(InfixExpression expr) {
    return expr.extendedOperands();
}

From source file:com.google.googlejavaformat.java.JavaInputAstVisitor.java

License:Apache License

/**
 * Helper method for {@link InfixExpression}s. Visit this {@link Expression} node, and its
 * children, as long as they are {@link InfixExpression} nodes of the same precedence. Accumulate
 * the operands and operators.//from   ww w .  j  av  a 2  s  .  c  om
 * @param precedence the precedence of the operators to collect
 * @param operands the output list of {@code n + 1} operands
 * @param operators the output list of {@code n} operators
 */
private static void walkInfix(int precedence, Expression expression, List<Expression> operands,
        List<String> operators) {
    if (expression.getNodeType() == ASTNode.INFIX_EXPRESSION) {
        InfixExpression infixExpression = (InfixExpression) expression;
        String myOperator = infixExpression.getOperator().toString();
        if (PRECEDENCE.get(myOperator) == precedence) {
            walkInfix(precedence, infixExpression.getLeftOperand(), operands, operators);
            operators.add(myOperator);
            walkInfix(precedence, infixExpression.getRightOperand(), operands, operators);
            if (infixExpression.hasExtendedOperands()) {
                for (Expression extendedOperand : (List<Expression>) infixExpression.extendedOperands()) {
                    operators.add(myOperator);
                    walkInfix(precedence, extendedOperand, operands, operators);
                }
            }
        } else {
            operands.add(expression);
        }
    } else {
        operands.add(expression);
    }
}