private object EvaluateBinaryExpression(ScriptBinaryExpression expression, ScriptTimeSpan left,
ScriptTimeSpan right)
{
switch (expression.Operator)
{
case ScriptBinaryOperator.Add:
return new ScriptTimeSpan(left.value + right.value);
case ScriptBinaryOperator.Substract:
return new ScriptTimeSpan(left.value - right.value);
case ScriptBinaryOperator.CompareEqual:
return left.value == right.value;
case ScriptBinaryOperator.CompareNotEqual:
return left.value != right.value;
case ScriptBinaryOperator.CompareLess:
return left.value < right.value;
case ScriptBinaryOperator.CompareLessOrEqual:
return left.value <= right.value;
case ScriptBinaryOperator.CompareGreater:
return left.value > right.value;
case ScriptBinaryOperator.CompareGreaterOrEqual:
return left.value >= right.value;
}
throw new ScriptRuntimeException(expression.Span, $"Operator [{expression.Operator}] is not supported for timespan");
}