#include "EvalValues/NumericEvalValue.hpp" #include "Evaluator.hpp" #include "EvaluationException.hpp" #include "../Script.hpp" shared_ptr Evaluator::EvaluateIntegerUnary(BoundUnaryExpression *expression) { switch (expression->GetOperation()){ case BoundUnaryOperation::Negation: { auto operandValue = EvaluateIntegerExpression(expression->GetOperand()); if (operandValue->IsFloat()){ double f = operandValue->EvaluateFloat(); return make_shared(-f); } else{ long l = operandValue->EvaluateInteger(); return make_shared(-l); } } case BoundUnaryOperation::LogicalNegation: throw; } } shared_ptr Evaluator::EvaluateBooleanUnary(BoundUnaryExpression *expression) { switch (expression->GetOperation()){ case BoundUnaryOperation::LogicalNegation: { auto val = EvaluateBoolExpression(expression->GetOperand()); bool b = val->EvaluateBool(); return make_shared(!b); } case BoundUnaryOperation::Negation: throw; } }