Trees | Indices | Help |
---|
|
1 import Martel 2 from Martel import RecordReader, Parser 3 4 from xml.sax import handler, saxutils 5 from StringIO import StringIO 6 7 # NOTE: Do not write formats like this, eg, with "(.|\n)*". Those 8 # depend on the implementation using a RecordReader-like interface. 9 # Instead, you need to write them so they could be used even as one 10 # huge regexp. 1113 record = Martel.Group("start", Martel.Rep(Martel.Str("abc"))) + \ 14 Martel.Group("end", Martel.Rep(Martel.Str("xyz"))) 15 parser = record.make_parser() 16 17 parser = Parser.Parser(parser.tagtable) 18 parser.setErrorHandler(handler.ErrorHandler()) 19 20 parser.parseString("abc" * 10 + "xyz") 21 22 try: 23 parser.parseString("abc" * 10 + "xyzQ") 24 except Parser.ParserPositionException: 25 pass 26 else: 27 raise AssertionError, "didn't get a position exception" 28 29 try: 30 parser.parseString("abc" * 10 + "x") 31 except Parser.ParserPositionException: 32 pass 33 else: 34 raise AssertionError, "didn't get a position exception"35 44 5254 record = Martel.Group("A", Martel.Str("X\n") + Martel.Re("a*\n")) 55 p = record.make_parser() 56 57 parser = Parser.RecordParser("blah", {}, p.tagtable, (0, 1, {}), 58 RecordReader.StartsWith, ("X",)) 59 60 err = CountErrors() 61 parser.setErrorHandler(err) 62 count = CountRecords("A") 63 parser.setContentHandler(count) 64 65 parser.parseString("X\na\nX\nb\nX\naaa\nX\naaaa\nX\nq\nX\na\n") 66 67 assert err.fatal_error_count == 0, err.fatal_error_count 68 assert err.error_count == 2, err.error_count 69 assert count.count == 4, count.count70 121 122 165 210 252 294 346 377 444446 test_reader_parser() 447 test_record_parser() 448 test_header_footer1() 449 test_header_footer2() 450 test_header_footer3() 451 test_header_footer4() 452 test_header_footer5() 453 test_header_footer7() 454 test_header_footer8()455 456 if __name__ == "__main__": 457 test() 458
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Mon Sep 15 09:26:34 2008 | http://epydoc.sourceforge.net |