/// <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); }