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