run method

  1. @override
FutureOr<ASTValue> run(
  1. VMContext parentContext,
  2. ASTRunStatus runStatus
)
override

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);
    }
  });
}