"Construct -- parsing made fun" info, demos, and download at: http://pyconstruct.sourceforge.net ------------------------ about: ------------------------ Construct is a library for declaratively defining parsers and builders for arbitrary data structures. Constructs are symmetrical: they can do both parsing and building. Using the vast number of provided primitives, you can easily define your data structures, including advanced concepts like meta-constructs, as shown below. And it's declarative -- so you don't need to write any code for the common cases. You can also easily subclass Construct and write user-defined constructs. Unlike most parsers, Construct works at the bit-level, which means you can easily parse unaligned fields, or work with bit fields of arbitrary lengths. The library supports Fields, Structs, Unions, and Repeaters; Adapters and Validators; Switches, Pointers and other Meta-constructs. To show its power, I provided a fully functional ELF32 file parser, WITHOUT ONE LINE OF PROCEDURAL CODE. It's all declerative. I used it to parse python23.o (2.1MB), in 2.88 sec on my machine. The library comes with a demos folder, an "inventory" of useful ready-made protocols, and is fully documented with doc-strings, for easy viewing with pydoc and the like. ------------------------ examples: ------------------------ from Construct import * # # simple structures # ethernet_header = Struct("ethernet_header", Bytes("destination", 6), Bytes("source", 6), UInt16("type"), ) print ethernet_header.parse("123456ABCDEF\x08\x00") # # meta constructs -- uses meta data # tlv = Struct("tlv", Byte("type"), Byte("length"), MetaBytes("value", "_.length"), ) print ethernet_header.parse("\x01\x05ABCDE") ------------------------ -tomer
participants (1)
-
tomerfilibaï¼ gmail.com