@Override public TextBuffer toJava(int indent, BytecodeMappingTracer tracer) { tracer.addMapping(bytecode); return condition.toJava(indent, tracer).enclose("if (", ")"); }
@Override public TextBuffer toJava(int indent, BytecodeMappingTracer tracer) { tracer.addMapping(bytecode); return value.toJava(indent, tracer).enclose("switch(", ")"); }
@Override public TextBuffer toJava(int indent, BytecodeMappingTracer tracer) { tracer.addMapping(bytecode); if (monType == MONITOR_ENTER) { return value.toJava(indent, tracer).enclose("synchronized(", ")"); } else { return new TextBuffer(); } }
private TextBuffer wrapOperandString(Exprent expr, boolean eq, int indent, BytecodeMappingTracer tracer) { int myprec = getPrecedence(); int exprprec = expr.getPrecedence(); boolean parentheses = exprprec > myprec; if (!parentheses && eq) { parentheses = (exprprec == myprec); if (parentheses) { if (expr.type == Exprent.EXPRENT_FUNCTION && ((FunctionExprent)expr).getFuncType() == funcType) { parentheses = !ASSOCIATIVITY.contains(funcType); } } } TextBuffer res = expr.toJava(indent, tracer); if (parentheses) { res.enclose("(", ")"); } return res; }
@Override public TextBuffer toJava(int indent, BytecodeMappingTracer tracer) { TextBuffer res = array.toJava(indent, tracer); if (array.getPrecedence() > getPrecedence()) { // array precedence equals 0 res.enclose("(", ")"); } VarType arrType = array.getExprType(); if (arrType.arrayDim == 0) { VarType objArr = VarType.VARTYPE_OBJECT.resizeArrayDim(1); // type family does not change res.enclose("((" + ExprProcessor.getCastTypeName(objArr) + ")", ")"); } tracer.addMapping(bytecode); return res.append('[').append(index.toJava(indent, tracer)).append(']'); }
return wrapOperandString(lstOperands.get(0), true, indent, tracer).prepend("-"); case FUNCTION_CAST: return lstOperands.get(1).toJava(indent, tracer).enclose("(", ")").append(wrapOperandString(lstOperands.get(0), true, indent, tracer)); case FUNCTION_ARRAY_LENGTH: Exprent arr = lstOperands.get(0); if (arr.getExprType().arrayDim == 0) { VarType objArr = VarType.VARTYPE_OBJECT.resizeArrayDim(1); // type family does not change res.enclose("((" + ExprProcessor.getCastTypeName(objArr) + ")", ")");
res.enclose("(", ")");
(rightType.equals(VarType.VARTYPE_OBJECT) || leftType.type != CodeConstants.TYPE_OBJECT)) { if (right.getPrecedence() >= FunctionExprent.getPrecedence(FunctionExprent.FUNCTION_CAST)) { res.enclose("(", ")");