switch (kind) {
// boolean
case LT:
case LTX:
return new Boolean(lhs < rhs);
case GT:
case GTX:
return new Boolean(lhs > rhs);
case EQ:
return new Boolean(lhs == rhs);
case LE:
case LEX:
return new Boolean(lhs <= rhs);
case GE:
case GEX:
return new Boolean(lhs >= rhs);
case NE:
return new Boolean(lhs != rhs);
// arithmetic
case PLUS:
return new [[#variableae2b0c0]](lhs + rhs);
case MINUS:
return new [[#variableae2b0c0]](lhs - rhs);
case STAR:
return new [[#variableae2b0c0]](lhs * rhs);
case SLASH:
return new [[#variableae2b0c0]](lhs / rhs);
case MOD:
return new [[#variableae2b0c0]](lhs % rhs);
// can't shift floats
// can't shift floating-point values
case LSHIFT:
case LSHIFTX:
case RSIGNEDSHIFT:
case RSIGNEDSHIFTX:
case RUNSIGNEDSHIFT:
case RUNSIGNEDSHIFTX:
throw new UtilEvalError( [[#variableae2ddc0]]);
default:
throw new InterpreterError( [[#variableae2b100]]);
}
|