List of usage examples for org.eclipse.jdt.core.dom PrefixExpression getAST
public final AST getAST()
From source file:org.eclipse.xtend.core.javaconverter.JavaASTFlattener.java
License:Open Source License
@Override public boolean visit(final PrefixExpression node) { final Expression operand = node.getOperand(); PrefixExpression.Operator _operator = node.getOperator(); boolean _matched = false; if (Objects.equal(_operator, PrefixExpression.Operator.DECREMENT)) { _matched = true;/*from w w w . j a v a2 s . com*/ } if (!_matched) { if (Objects.equal(_operator, PrefixExpression.Operator.INCREMENT)) { _matched = true; } } if (_matched) { if ((operand instanceof ArrayAccess)) { final String arrayName = this.computeArrayName(((ArrayAccess) operand)); StringConcatenation _builder = new StringConcatenation(); _builder.append("_tPreInx_"); _builder.append(arrayName); final String idxName = _builder.toString(); String op = "-"; PrefixExpression.Operator _operator_1 = node.getOperator(); boolean _equals = Objects.equal(_operator_1, PrefixExpression.Operator.INCREMENT); if (_equals) { op = "+"; } StringConcatenation _builder_1 = new StringConcatenation(); _builder_1.append("{val "); _builder_1.append(idxName); _builder_1.append("="); this.appendToBuffer(_builder_1.toString()); ((ArrayAccess) operand).getIndex().accept(this); StringConcatenation _builder_2 = new StringConcatenation(); _builder_2.append(" "); _builder_2.append("val "); _builder_2.append(idxName, " "); _builder_2.append("_res="); _builder_2.append(arrayName, " "); _builder_2.append(".get("); _builder_2.append(idxName, " "); _builder_2.append(")"); _builder_2.append(op, " "); _builder_2.append("1"); this.appendToBuffer(_builder_2.toString()); StringConcatenation _builder_3 = new StringConcatenation(); _builder_3.append(" "); _builder_3.append(arrayName, " "); _builder_3.append(".set("); _builder_3.append(idxName, " "); _builder_3.append(", "); _builder_3.append(idxName, " "); _builder_3.append("_res) "); _builder_3.append(idxName, " "); _builder_3.append("_res}"); this.appendToBuffer(_builder_3.toString()); return false; } else { final AST dummyAST = AST.newAST(node.getAST().apiLevel()); final Assignment assigment = dummyAST.newAssignment(); final InfixExpression infixOp = dummyAST.newInfixExpression(); ASTNode _copySubtree = ASTNode.copySubtree(dummyAST, operand); infixOp.setLeftOperand(((Expression) _copySubtree)); PrefixExpression.Operator _operator_2 = node.getOperator(); boolean _equals_1 = Objects.equal(_operator_2, PrefixExpression.Operator.DECREMENT); if (_equals_1) { infixOp.setOperator(InfixExpression.Operator.MINUS); } else { infixOp.setOperator(InfixExpression.Operator.PLUS); } infixOp.setRightOperand(dummyAST.newNumberLiteral("1")); ASTNode _copySubtree_1 = ASTNode.copySubtree(dummyAST, operand); final Expression leftSide = ((Expression) _copySubtree_1); assigment.setLeftHandSide(leftSide); assigment.setRightHandSide(infixOp); this.appendToBuffer("{"); Type type = null; if ((operand instanceof SimpleName)) { type = this._aSTFlattenerUtils.findDeclaredType(((SimpleName) operand)); } this.handleAssignment(assigment, leftSide, type); this.appendToBuffer("}"); return false; } } if (!_matched) { if (Objects.equal(_operator, PrefixExpression.Operator.COMPLEMENT)) { _matched = true; node.getOperand().accept(this); this.appendToBuffer(".bitwiseNot"); } } if (!_matched) { { this.appendToBuffer(node.getOperator().toString()); node.getOperand().accept(this); } } return false; }