protected override void Main() { TraceLine(Instructions.WaitForCompletion); IEnumerable<char> source = new[] { 'f', '3', 'a', 'a', '4', 'b', 'b', 'j', 'd', 'e', '1', 'c', 'c', '9' } .Do(ConsoleOutput(Text.Generated)); IEnumerable<string> parsed = from word in source.Parse(parser => from next in parser let letter = next.Where(char.IsLetter) let number = next.Where(char.IsNumber) let word = from _ in number from twoInARow in letter.And(letter).Join() select twoInARow select word) where !word.Contains('b') select word; parsed.ForEach(ConsoleOutput); }
public void ParserSelectManyCollection_MovesToEndOfFirstMatch() { var source = new[] { 2, 2, 0, 1, 0, 1 }; var results = source.Parse(parser => from next in parser select from elements in next.Exactly(2) from value in elements where value < 2 select value); var values = new List<int>(); foreach (var result in results) { values.Add(result); } Assert.AreEqual(4, values.Count); }