public void parserc_integer_list() { Parser <char, LinkedList <int> > parser = CharParserc.IntegerList(); string src = "{1,2,3,4,5}"; ITokenStream <char> tokens = new CharStream(src); var result = parser(tokens); Assert.AreEqual(1, result.Count()); Assert.AreEqual(5, result.First().Value.Count()); { int i = 1; foreach (int r in result.First().Value) { Assert.AreEqual(i, r); i++; } } string empty = "{}"; tokens = new CharStream(empty); result = parser(tokens); Assert.AreEqual(1, result.Count()); Assert.AreEqual(0, result.First().Value.Count()); }
public void parserc_natural() { Parser <char, uint> parser = CharParserc.Natural(); string src = "629abc"; ITokenStream <char> tokens = new CharStream(src); var result = parser(tokens); Assert.AreEqual(result.Count(), 3); Assert.AreEqual(result.First().Value, 629u); Assert.AreEqual(result.ElementAt(1).Value, 62u); Assert.AreEqual(result.ElementAt(2).Value, 6u); }
public void parserc_integer() { Parser <char, int> parser = CharParserc.Integer(); string src = "-629abc"; ITokenStream <char> tokens = new CharStream(src); var result = parser(tokens); Assert.AreEqual(result.Count(), 3); Assert.AreEqual(result.First().Value, -629); Assert.AreEqual(result.ElementAt(1).Value, -62); Assert.AreEqual(result.ElementAt(2).Value, -6); }
public void parserc_word() { Parser <char, string> parser = CharParserc.Word(); string src = "abc"; ITokenStream <char> tokens = new CharStream(src); var result = parser(tokens); Assert.AreEqual(result.Count(), 4); Assert.AreEqual(result.First().Value, "abc"); Assert.AreEqual(result.ElementAt(1).Value, "ab"); Assert.AreEqual(result.ElementAt(2).Value, "a"); Assert.AreEqual(result.ElementAt(3).Value, ""); }
public void parserc_bind() { Parser <char, char[]> parser = CharParserc.Lower().Bind(x => { return (CharParserc.Lower().Bind(y => { return Result <char, char[]>(new char[] { x, y }); })); }); string src = "abc"; ITokenStream <char> tokens = new CharStream(src); var result = parser(tokens); Assert.AreEqual(result.Count(), 1); Assert.AreEqual(result.First().Value.Length, 2); Assert.AreEqual(result.First().Value.First(), 'a'); Assert.AreEqual(result.First().Value[1], 'b'); Assert.AreEqual(result.First().Remain.Head(), 'c'); }