Esempio n. 1
0
        /// <summary>
        /// Выполняет конкретную операцию над соответсвующим количеством операндов
        /// </summary>
        /// <param name="operand">строковое представление операции</param>
        /// <param name="helperStack">вспомогательный стек операндов</param>
        /// <returns></returns>
        private double PerformOperation(string operand, Stack <string> helperStack)
        {
            var currentOperation  = recognizer.GetOperation(operand);
            var numberOfArguments = currentOperation.Arity;
            var arguments         = new double[numberOfArguments];

            for (var i = 0; i < numberOfArguments; i++)
            {
                arguments[i] = double.Parse(helperStack.Pop(), NumberStyles.AllowDecimalPoint, numberFormatInfo);
            }
            var result = currentOperation.Perform(arguments);

            helperStack.Push(result.ToString(numberFormatInfo));
            return(result);
        }
        /// <summary>
        /// Выполняет конкретную операцию над соответсвующим количеством операндов
        /// </summary>
        /// <param name="operand">строковое представление операции</param>
        /// <param name="helperStack">вспомогательный стек операндов</param>
        /// <returns></returns>
        private double PerformOperation(string operand, Stack <string> helperStack)
        {
            var currentOperation  = recognizer.GetOperation(operand);
            var numberOfArguments = currentOperation.Arity;
            var arguments         = new double[numberOfArguments];

            //try
            //{
            for (var i = 0; i < numberOfArguments; i++)
            {
                arguments[i] = double.Parse(helperStack.Pop(), styles, numberFormatInfo);
            }
            //}
            //catch
            //{
            //    throw new UnrecognizedOperationException();
            //}
            var result = currentOperation.Perform(arguments);

            helperStack.Push(result.ToString(numberFormatInfo));
            return(result);
        }