Example #1
0
 private static IEnumerable <Token> makeEnumerable(LexReader reader, IEnumerable <Token.Parser> tokenParsers, ICollection <Type> ignoreTokens, Type stopToken, bool swallowWhitespace)
 {
     while (true)
     {
         if (swallowWhitespace)
         {
             reader.ConsumeAnyWhitespace();
         }
         var token = tokenParsers.Select(p => p.ParseToken(reader)).FirstOrDefault(t => t != null);
         if (token == null)
         {
             throw new LexException(reader.GetPosition(), "Unrecognized sequence of characters.");
         }
         var type = token.GetType();
         if (!ignoreTokens.Contains(type))
         {
             yield return(token);
         }
         if (type == stopToken)
         {
             yield break;
         }
     }
 }