run method
Implementation
@override
FutureOr<ASTValue> run(VMContext parentContext, ASTRunStatus runStatus) {
var context = defineRunContext(parentContext);
var retVal2 = expression2.run(context, runStatus);
var retVal1 = expression1.run(context, runStatus);
return retVal2.resolveBoth(retVal1, (val2, val1) {
switch (operator) {
case ASTExpressionOperator.add:
return operatorAdd(parentContext, val1, val2);
case ASTExpressionOperator.subtract:
return operatorSubtract(parentContext, val1, val2);
case ASTExpressionOperator.multiply:
return operatorMultiply(parentContext, val1, val2);
case ASTExpressionOperator.divide:
return operatorDivide(parentContext, val1, val2);
case ASTExpressionOperator.divideAsInt:
return operatorDivideAsInt(parentContext, val1, val2);
case ASTExpressionOperator.divideAsDouble:
return operatorDivideAsDouble(parentContext, val1, val2);
case ASTExpressionOperator.equals:
return operatorEquals(parentContext, val1, val2);
case ASTExpressionOperator.notEquals:
return operatorNotEquals(parentContext, val1, val2);
case ASTExpressionOperator.greater:
return operatorGreater(parentContext, val1, val2);
case ASTExpressionOperator.greaterOrEq:
return operatorGreaterOrEq(parentContext, val1, val2);
case ASTExpressionOperator.lower:
return operatorLower(parentContext, val1, val2);
case ASTExpressionOperator.lowerOrEq:
return operatorLowerOrEq(parentContext, val1, val2);
}
});
}