private bool ParseFunctions(Stack<Token> operands, List<Token> rpnOutput, Token token)
        {
            if (token?.action == null) //token == null || token.action == null
                return false;

            if (operands.Count == 0 || token.Precedence > operands.Peek().Precedence)
            {
                operands.Push(token);
            }else
            {
                Token e = operands.Pop();
                operands.Push(token);
                rpnOutput.Add(e);
            }

            return true;
        }
        private bool ParseParentheses(Stack<Token> operands, List<Token> rpnOutput, Token token)
        {
            if (token == null || token.action != null)
                return false;

            if (token.Symbol == "(")
            {
                operands.Push(token);
            }
            else
            {
                Token t = operands.Pop();
                while (t.Symbol != "(")
                {
                    rpnOutput.Add(t);
                    t = operands.Pop();
                }
            }
            return true;
        }
Пример #3
0
        /// <summary>
        /// This method adding tokens from outside - for example other class
        /// </summary>
        /// <param name="func">Token to add</param>
        /// <returns>Success</returns>
        public bool AddFunction(Token func)
        {
            if (tokens.Any(n => n.Symbol == func.Symbol))
                return false;

            tokens.Add(func);

            return true;
        }