示例#1
0
 def test_pcomb_anyof(self):
     c1 = char("a")
     c2 = char("b")
     c3 = char("c")
     c = anyof([c1, c2, c3])
     self.assertEqual(c("abc"), Right(("a", "bc")))
     self.assertEqual(c("bbc"), Right(("b", "bc")))
     self.assertEqual(c("cbc"), Right(("c", "bc")))
示例#2
0
 def test_pcomb_sep_by_digits(self):
     c = sep_by(char("|").discard(), many(digits))
     self.assertTrue(c("123|78|23x"), Right((["123", "78", "23"], "x")))
示例#3
0
 def test_pcomb_sep_by(self):
     c = sep_by(char(",").discard(), many(char("a") | char("b")))
     self.assertTrue(c("ababx"), Right((["a", "b", "a", "b"], "x")))
示例#4
0
 def test_pcomb_many1(self):
     """ should return Left if there is no match"""
     c = many1(char("a"))
     self.assertEqual(c("aaaaaaaaaabbbb"), Right(("aaaaaaaaaa", "bbbb")))
     self.assertTrue(isinstance(c("bb"), Left))
示例#5
0
 def test_pcomb_many(self):
     """ should return Right for 0 to many matches"""
     c = many(char("a"))
     self.assertEqual(c("aaaaaaaaaabbbb"), Right(("aaaaaaaaaa", "bbbb")))
     self.assertEqual(c("bb"), Right(("", "bb")))
示例#6
0
 def test_pcomb_until(self):
     c = until(char("x"))
     self.assertEqual(c("xxabc"), Right(("", "xxabc")))
示例#7
0
 def test_pcomb_ntimes(self):
     c1 = char("a")
     c = c1 * 3
     self.assertEqual(c("aaaab"), Right(("aaa", "ab")))
示例#8
0
 def test_pcomb_otherwise(self):
     c1 = char("a")
     c2 = char("b")
     c = c1 | c2
     self.assertEqual(c("abc"), Right(("a", "bc")))
     self.assertEqual(c("bbc"), Right(("b", "bc")))
示例#9
0
 def test_pcomb_then(self):
     c1 = char("a")
     c2 = char("b")
     c3 = char("c")
     c = c1 >> c2 >> c3
     self.assertEqual(c("abcde"), Right((["abc"], "de")))
示例#10
0
 def test_pcomb_char(self):
     """ test the basic parse combination """
     c = char("a")
     self.assertEqual(c("abcd"), Right(("a", "bcd")))
示例#11
0
 def test_pcomb_option(self):
     """ return None if there is no match """
     c = optional(char("a"))
     self.assertEqual(c("bc"), Right((None, "")))