IEnumerable <ITokenCollection> SplitBySpaceTokens(ITokenCollection tokens) { var groupTokens = new List <IToken>(); foreach (var token in tokens) { if (token is SpaceToken) { yield return(groupTokens.ToTokenCollection()); groupTokens = new List <IToken>(); } else { groupTokens.Add(token); if (token == tokens.Last()) { yield return(groupTokens.ToTokenCollection()); } } } }