private Value Negation(NegationNode exp)
        {
            Value    val = Eval(exp.InnerNode);
            Constant obj = val.GetRValue();

            switch (obj.ConstantType)
            {
            case Constant.Type.Complex:
                return(ComplexValue.OpNeg((ComplexValue)obj));

            case Constant.Type.Int:
                return(IntValue.OpNeg((IntValue)obj));

            case Constant.Type.Float:
                return(FloatValue.OpNeg((FloatValue)obj));
            }
            throw new ModelInterpreterException($"Отрицание не определено для типа \"{obj.ConstantType.ToString()}\"")
                  {
                      Line     = exp.Line,
                      Position = exp.Position
                  };
        }