public void TestBind() { { // any two equal characters var parser = Any.Then(c => Token(c.Equals)); AssertSuccess(parser.Parse("aa"), 'a', true); AssertFailure(parser.Parse("ab"), new Expected <char>[] { }, new SourcePos(1, 2), true); } { var parser = Any.Bind(c => Token(c.Equals), (x, y) => new { x, y }); AssertSuccess(parser.Parse("aa"), new { x = 'a', y = 'a' }, true); AssertFailure(parser.Parse("ab"), new Expected <char>[] { }, new SourcePos(1, 2), true); } { var parser = Any.Then(c => Token(c.Equals), (x, y) => new { x, y }); AssertSuccess(parser.Parse("aa"), new { x = 'a', y = 'a' }, true); AssertFailure(parser.Parse("ab"), new Expected <char>[] { }, new SourcePos(1, 2), true); } { var parser = from x in Any from y in Token(x.Equals) select new { x, y }; AssertSuccess(parser.Parse("aa"), new { x = 'a', y = 'a' }, true); AssertFailure(parser.Parse("ab"), new Expected <char>[] { }, new SourcePos(1, 2), true); } { var parser = Char('x').Then(c => Char('y')); AssertSuccess(parser.Parse("xy"), 'y', true); AssertFailure(parser.Parse("yy"), new[] { new Expected <char>(new[] { 'x' }) }, new SourcePos(1, 1), false); AssertFailure(parser.Parse("xx"), new[] { new Expected <char>(new[] { 'y' }) }, new SourcePos(1, 2), true); } }