private static void ProcessFunction(FormulaToken token, Stack operandsStack) { byte num = (token is FunctionFormulaToken) ? (token as FunctionFormulaToken).ArgumentsCount : (token as FunctionVarFormulaToken).ArgumentsCount; if (token is FunctionFormulaToken) { ushort code = (token as FunctionFormulaToken).Function.Code; } else { ushort num1 = (token as FunctionVarFormulaToken).Function.Code; } StringBuilder builder = new StringBuilder(); builder.Append(token.ToString()); builder.Append("("); string[] strArray = new string[num]; for (byte i = 0; i < num; i = (byte)(i + 1)) { strArray[i] = operandsStack.Pop() as string; } for (byte j = num; j > 0; j = (byte)(j - 1)) { string str = strArray[j - 1]; builder.Append(str); if (j != 1) { builder.Append(","); } } builder.Append(")"); operandsStack.Push(builder.ToString()); }
private static void ProcessUnaryOperator(FormulaToken token, Stack operandsStack) { string str = operandsStack.Pop() as string; if (token.Code == 20) { operandsStack.Push(str + token.ToString()); } else if (token.Code == 21) { operandsStack.Push("(" + str + ")"); } else { operandsStack.Push(token.ToString() + str); } }
private static void ProcessOperand(FormulaToken token, Stack operandsStack) { operandsStack.Push(token.ToString()); }
private static void ProcessBinaryOperator(FormulaToken token, Stack operandsStack) { operandsStack.Push((operandsStack.Pop() as string) + token.ToString() + (operandsStack.Pop() as string)); }