def parse(spec, data, offset=0): ast = bitwise_grammar.parse(spec) p = Processor(data, offset) return p.parse(ast)
u8 one; u8 upper:2, twobit:1, onebit:1, lower:4; u8 array[3]; char str[3]; bbcd bcdL[2]; } foo[2]; u8 tail; """ data = "\xfe\x10\x00\x08\xFF\x23\x01\x02\x03abc\x34\x89" data = (data * 2) + "\x12" data = MemoryMap(data) ast = bitwise_grammar.parse(test) # Just for testing, pretty-print the tree pp(ast) # Mess with it a little p = Processor(data, 0) obj = p.parse(ast) print "Object: %s" % obj print obj["foo"][0]["bcdL"] print obj["tail"] print obj["foo"][0]["bar"] obj["foo"][0]["bar"].set_value(255 << 8) obj["foo"][0]["twobit"].set_value(0) obj["foo"][0]["onebit"].set_value(1) print "%i" % int(obj["foo"][0]["bar"])