public IEnumerable<IToken> Tokenize(string expression)
{
_states = new Stack<IState>();
_currentState = new LiteralState();
_characters = expression.GetEnumerator();
while (_characters.MoveNext())
{
var token = _currentState.Handle(this);
if (token != null)
{
yield return token;
}
}
}