Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
    }