def __init__(self): SequenceParser.__init__(self, WordParser(), CharacterParser(":"), OneOrMoreParser( CharacterParser(" ") ), WordParser(), CharacterParser("\n") )
def setUp(self): a = CharacterParser("a") b = CharacterParser("b") c = CharacterParser("c") eos = EndOfStringParser() self.seq = SequenceParser( a, b, c, eos )
class TestSequenceParser(TestCase): def setUp(self): a = CharacterParser("a") b = CharacterParser("b") c = CharacterParser("c") self.seqparser = SequenceParser(a, b, c) def test_accept(self): self.assertEqual(self.seqparser.parse("abc"), (["a", "b", "c"], "")) def test_fail(self): self.assertRaises(ParseError, self.seqparser.parse, "add") self.assertRaises(ParseError, self.seqparser.parse, "ddd")
class TestSequenceParser(TestCase): def setUp(self): a = CharacterParser("a") b = CharacterParser("b") c = CharacterParser("c") self.seqparser = SequenceParser(a, b, c) def test_accept(self): self.assertEqual( self.seqparser.parse("abc"), (["a", "b", "c"], "") ) def test_fail(self): self.assertRaises(ParseError, self.seqparser.parse, "add") self.assertRaises(ParseError, self.seqparser.parse, "ddd")
class TestEndOfStringParser(TestCase): def setUp(self): a = CharacterParser("a") b = CharacterParser("b") c = CharacterParser("c") eos = EndOfStringParser() self.seq = SequenceParser( a, b, c, eos ) def test_accept(self): self.assertEqual( self.seq.parse("abc"), (["a", "b", "c", ""], "") ) def test_fail(self): self.assertRaises(ParseError, self.seq.parse, "abcd")
def setUp(self): a = CharacterParser("a") b = CharacterParser("b") c = CharacterParser("c") self.seqparser = SequenceParser(a, b, c)
def __init__(self): SequenceParser.__init__(self, WordParser(), CharacterParser(":"), OneOrMoreParser(CharacterParser(" ")), WordParser(), CharacterParser("\n"))
asdf/asdf ------------------------ """ class WordParser(OneOrMoreParser): def __init__(self): OneOrMoreParser.__init__( self, CharacterClassParser(ascii_letters + digits + "-")) def transform(self, result): return "".join(result) seplineparser = SequenceParser(CharacterParser("-"), OneOrMoreParser(CharacterParser("-")), CharacterParser("\n")) class KVLineParser(SequenceParser): def __init__(self): SequenceParser.__init__(self, WordParser(), CharacterParser(":"), OneOrMoreParser(CharacterParser(" ")), WordParser(), CharacterParser("\n")) def transform(self, result): return (result[0], result[3]) headerparser = SequenceParser(seplineparser, OneOrMoreParser(KVLineParser()), seplineparser)
SequenceParser.__init__(self, WordParser(), CharacterParser(":"), OneOrMoreParser( CharacterParser(" ") ), WordParser(), CharacterParser("\n") ) def transform(self, result): return (result[0], result[3]) headerparser = SequenceParser( seplineparser, OneOrMoreParser( KVLineParser() ), seplineparser ) try: headerparser.parse(string) except ParseError as p: desc = p.parser.describe() print("[e] ParseError in parser \"%s\"" % (desc['name'])) print(" wants: %s" % desc ['wants']) print(" got: %s" % p.got[:10])