public void setRightExpression(Expression rightExpression) { super.setRightExpression(rightExpression); }
@Override public void visitBinaryExpression(BinaryExpression expr) { expr.setLeftExpression(replaceExpr(expr.getLeftExpression())); expr.setRightExpression(replaceExpr(expr.getRightExpression())); }
private static Expression transformDeclarationExpression(final BinaryExpression bin) { Expression leftExpression = bin.getLeftExpression(); if (leftExpression instanceof VariableExpression) { if (ClassHelper.char_TYPE.equals(((VariableExpression) leftExpression).getOriginType())) { Expression rightExpression = bin.getRightExpression(); if (rightExpression instanceof ConstantExpression && ClassHelper.STRING_TYPE.equals(rightExpression.getType())) { String text = (String) ((ConstantExpression) rightExpression).getValue(); if (text.length() == 1) { // optimize char initialization ConstantExpression ce = new ConstantExpression( text.charAt(0), true ); ce.setSourcePosition(rightExpression); bin.setRightExpression(ce); return bin; } } } } return null; }
private static BinaryExpression tryOptimizeCharComparison(final Expression left, final Expression right, final BinaryExpression bin) { int op = bin.getOperation().getType(); if (isCompareToBoolean(op) || op == COMPARE_EQUAL || op == COMPARE_NOT_EQUAL) { Character cLeft = tryCharConstant(left); Character cRight = tryCharConstant(right); if (cLeft != null || cRight != null) { Expression oLeft = cLeft == null ? left : new ConstantExpression(cLeft, true); oLeft.setSourcePosition(left); Expression oRight = cRight == null ? right : new ConstantExpression(cRight, true); oRight.setSourcePosition(right); bin.setLeftExpression(oLeft); bin.setRightExpression(oRight); return bin; } } return null; }
protected Expression transformBinaryExpression(BinaryExpression be) { int type = be.getOperation().getType(); boolean oldInLeftExpression; Expression right = transform(be.getRightExpression()); be.setRightExpression(right); Expression left; if (type == Types.EQUAL && be.getLeftExpression() instanceof VariableExpression) { oldInLeftExpression = inLeftExpression; inLeftExpression = true; left = transform(be.getLeftExpression()); inLeftExpression = oldInLeftExpression; if (left instanceof StaticMethodCallExpression) { StaticMethodCallExpression smce = (StaticMethodCallExpression) left; StaticMethodCallExpression result = new StaticMethodCallExpression(smce.getOwnerType(), smce.getMethod(), right); setSourcePosition(result, be); return result; } } else { left = transform(be.getLeftExpression()); } be.setLeftExpression(left); return be; }
BinaryExpression be = (BinaryExpression) exp; be.setLeftExpression(transformInlineConstants(be.getLeftExpression())); be.setRightExpression(transformInlineConstants(be.getRightExpression())); return be; } else if (exp instanceof ListExpression) {
be.setRightExpression(right); return be;
public void setRightExpression(Expression rightExpression) { super.setRightExpression(rightExpression); }
public void setRightExpression(Expression rightExpression) { check(getLeftExpression(),rightExpression); super.setRightExpression(rightExpression); }
public void setRightExpression(Expression rightExpression) { check(getLeftExpression(),rightExpression); super.setRightExpression(rightExpression); }
@Override public void visitBinaryExpression(BinaryExpression expression) { checkOperation(expression, expression.getOperation()); if (secondPass) { if (expression.getLeftExpression() instanceof VariableExpression) { VariableExpression variableExpression = (VariableExpression) expression.getLeftExpression(); if (variableExpressions.containsKey(variableExpression)) { expression.setLeftExpression(variableExpressions.get(variableExpression)); } } if (expression.getRightExpression() instanceof VariableExpression) { VariableExpression variableExpression = (VariableExpression) expression.getRightExpression(); if (variableExpressions.containsKey(variableExpression)) { expression.setRightExpression(variableExpressions.get(variableExpression)); } } } super.visitBinaryExpression(expression); }
@Override public void visitBinaryExpression(BinaryExpression expr) { expr.setLeftExpression(replaceExpr(expr.getLeftExpression())); expr.setRightExpression(replaceExpr(expr.getRightExpression())); }
protected Expression transformBinaryExpression(BinaryExpression be) { Expression left = transform(be.getLeftExpression()); int type = be.getOperation().getType(); if ((type == Types.ASSIGNMENT_OPERATOR || type == Types.EQUAL) && left instanceof ClassExpression) { ClassExpression ce = (ClassExpression) left; String error = "you tried to assign a value to the class '" + ce.getType().getName() + "'"; if (ce.getType().isScript()) { error += ". Do you have a script with this name?"; } addError(error, be.getLeftExpression()); return be; } if (left instanceof ClassExpression && be.getRightExpression() instanceof ListExpression) { // we have C[] if the list is empty -> should be an array then! ListExpression list = (ListExpression) be.getRightExpression(); if (list.getExpressions().isEmpty()) { return new ClassExpression(left.getType().makeArray()); } } Expression right = transform(be.getRightExpression()); be.setLeftExpression(left); be.setRightExpression(right); return be; }
protected Expression transformBinaryExpression(BinaryExpression be) { Expression left = transform(be.getLeftExpression()); int type = be.getOperation().getType(); if ((type == Types.ASSIGNMENT_OPERATOR || type == Types.EQUAL) && left instanceof ClassExpression) { ClassExpression ce = (ClassExpression) left; String error = "you tried to assign a value to the class '" + ce.getType().getName() + "'"; if (ce.getType().isScript()) { error += ". Do you have a script with this name?"; } addError(error, be.getLeftExpression()); return be; } if (left instanceof ClassExpression && be.getRightExpression() instanceof ListExpression) { // we have C[] if the list is empty -> should be an array then! ListExpression list = (ListExpression) be.getRightExpression(); if (list.getExpressions().isEmpty()) { return new ClassExpression(left.getType().makeArray()); } } Expression right = transform(be.getRightExpression()); be.setLeftExpression(left); be.setRightExpression(right); return be; }
protected Expression transformBinaryExpression(BinaryExpression be) { Expression left = transform(be.getLeftExpression()); int type = be.getOperation().getType(); if ((type == Types.ASSIGNMENT_OPERATOR || type == Types.EQUAL) && left instanceof ClassExpression) { ClassExpression ce = (ClassExpression) left; String error = "you tried to assign a value to the class '" + ce.getType().getName() + "'"; if (ce.getType().isScript()) { error += ". Do you have a script with this name?"; } addError(error, be.getLeftExpression()); return be; } if (left instanceof ClassExpression && be.getRightExpression() instanceof ListExpression) { // we have C[] if the list is empty -> should be an array then! ListExpression list = (ListExpression) be.getRightExpression(); if (list.getExpressions().isEmpty()) { return new ClassExpression(left.getType().makeArray()); } } Expression right = transform(be.getRightExpression()); be.setLeftExpression(left); be.setRightExpression(right); return be; }
protected Expression transformBinaryExpression(BinaryExpression be) { int type = be.getOperation().getType(); boolean oldInLeftExpression; Expression right = transform(be.getRightExpression()); be.setRightExpression(right); Expression left; if (type == Types.EQUAL && be.getLeftExpression() instanceof VariableExpression) { oldInLeftExpression = inLeftExpression; inLeftExpression = true; left = transform(be.getLeftExpression()); inLeftExpression = oldInLeftExpression; if (left instanceof StaticMethodCallExpression) { StaticMethodCallExpression smce = (StaticMethodCallExpression) left; StaticMethodCallExpression result = new StaticMethodCallExpression(smce.getOwnerType(), smce.getMethod(), right); setSourcePosition(result, be); return result; } } else { left = transform(be.getLeftExpression()); } be.setLeftExpression(left); return be; }
be.setRightExpression(right); return be;
be.setRightExpression(right); return be;