Esempio n. 1
0
        private void AddToken(Tokens.IToken token)
        {
            if (token == null)
            {
                return;
            }

            if (token is Tokens.IOperand)
            {
                _Result.Add(token);
            }

            if (token is Tokens.IPrioritable)
            {
                AddToStack(token as Tokens.IPrioritable);
            }
        }
Esempio n. 2
0
        public List <Tokens.IToken> Parse(string expression)
        {
            _Stack.Push(new Tokens.End());

            int i = 0;

            while (i < expression.Length - 1)
            {
                Tokens.IToken token = TokenFactory.Get(expression[i], expression[i + 1]);

                i++;

                AddToken(token);
            }

            Tokens.IToken lastToken = TokenFactory.Get(expression[i], '|');
            AddToken(lastToken);


            Tokens.IToken endToken = TokenFactory.Get('|', null);
            AddToStack(endToken as Tokens.IPrioritable);

            return(IsFinish ? _Result : throw new Exceptions.InvalidExpression("Internal error"));
        }