Example #1
0
 def __init__(self):
     SequenceParser.__init__(self,
         WordParser(),
         CharacterParser(":"),
         OneOrMoreParser(
             CharacterParser(" ")
         ),
         WordParser(),
         CharacterParser("\n")
     )
Example #2
0
 def setUp(self):
     a = CharacterParser("a")
     b = CharacterParser("b")
     c = CharacterParser("c")
     eos = EndOfStringParser()
     self.seq = SequenceParser(
         a,
         b,
         c,
         eos
     )
Example #3
0
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")
Example #4
0
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")
Example #5
0
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")
Example #6
0
 def setUp(self):
     a = CharacterParser("a")
     b = CharacterParser("b")
     c = CharacterParser("c")
     self.seqparser = SequenceParser(a, b, c)
Example #7
0
 def __init__(self):
     SequenceParser.__init__(self, WordParser(), CharacterParser(":"),
                             OneOrMoreParser(CharacterParser(" ")),
                             WordParser(), CharacterParser("\n"))
Example #8
0
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)
Example #9
0
        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])

Example #10
0
 def setUp(self):
     a = CharacterParser("a")
     b = CharacterParser("b")
     c = CharacterParser("c")
     self.seqparser = SequenceParser(a, b, c)