// 字符串比较exp1与exp2
// }
Label isString = new Label();
Label end = new Label();
IExpression first;
IExpression second;
if (exp1IsNumber) {
first = exp2;
second = exp1;
} else {
first = exp1;
second = exp2;
}
first.parse(mw, local, variableNames);
mw.visitInsn(DUP);
mw.visitMethodInsn(INVOKESTATIC, NAME, "isNumeric",
"(Ljava/lang/Object;)Z");
mw.visitJumpInsn(IFEQ, isString);
mw.visitMethodInsn(INVOKESTATIC, NAME, "o2d", "(Ljava/lang/Object;)D");
second.parseDouble(mw, local, variableNames);
checkDouble(mw, exp1IsNumber);
mw.visitJumpInsn(GOTO, end);
mw.visitLabel(isString);
mw.visitMethodInsn(INVOKESTATIC, NAME, "o2s",
"(Ljava/lang/Object;)Ljava/lang/String;");
second.parseString(mw, local, variableNames);
checkString(mw, exp1IsNumber);
mw.visitLabel(end);
} else {
// if (弱类型(exp1) && 弱类型(exp2) instanceof