#include "../Script.hpp" #include "EvaluationException.hpp" #include "Evaluator.hpp" #include "EvalValues/NumericEvalValue.hpp" NumericEvalValue* Evaluator::EvaluateIntegerBinary(BoundBinaryExpression *expression) { NumericEvalValue* leftValue = this -> EvaluateIntegerExpression(expression->GetLeft()); NumericEvalValue* rightValue = this -> EvaluateIntegerExpression(expression->GetRight()); NumericEvalValue* result; switch (expression->GetOperation()){ case BoundBinaryOperation ::Addition: result = leftValue -> operator+ (rightValue); break; case BoundBinaryOperation::Subtraction: result = leftValue -> operator- (rightValue); break; case BoundBinaryOperation::Multiplication: result = leftValue -> operator* (rightValue); break; case BoundBinaryOperation::Division: result = leftValue -> operator/ (rightValue); break; default: delete leftValue; delete rightValue; throw EvaluationException("Can't evaluate operation to numeric"); } delete leftValue; delete rightValue; return result; }