1 #!/usr/bin/env python 2 3 import micropython.cmd 4 from micropython.graph import get_graph 5 import rsvp 6 import sys 7 import os 8 9 libdirs = [ 10 os.path.join(os.path.split(__file__)[0], "lib"), 11 "/usr/share/micropython/lib" 12 ] 13 14 def show_code(code): 15 for i, x in enumerate(code): 16 print i, x 17 18 def show_table_usage(raw_table, slice_size=100): 19 for x in xrange(0, len(raw_table), slice_size): 20 table_slice = raw_table[x:x+slice_size] 21 print "%6d" % (len(table_slice) - table_slice.count(None)), \ 22 "".join(entry and "#" or "_" for entry in table_slice) 23 24 def attrs(obj): 25 for name, attr in obj.items(): 26 print name, attr 27 28 # Main program. 29 30 if __name__ == "__main__": 31 args = sys.argv[2:] 32 path = libdirs + sys.path[:] 33 34 if "--help" in sys.argv: 35 print "Optimisations:" 36 print micropython.cmd.show_optimisations() 37 sys.exit(1) 38 39 if len(sys.argv) > 1 and sys.argv[1] != "-": 40 filename = os.path.abspath(sys.argv[1]) 41 path.append(os.path.split(filename)[0]) 42 else: 43 filename = None 44 45 # Load the program. 46 47 try: 48 p = micropython.cmd.get_program(path, args) 49 i = p.get_importer() 50 51 if filename is None or filename == "-": 52 print "Loading module micropython ..." 53 m = i.load("micropython") 54 else: 55 print "Loading from", filename, "..." 56 m = i.load_from_file(filename) 57 58 # Build the program. 59 60 if "-m" in args or "-t" in args: 61 rm = rsvp.machine(p, debug=("-g" in args), abort_upon_exception=("-x" in args)) 62 63 if "-t" in args: 64 success = rm.test(m) 65 print "Test successful?", success 66 67 print "RSVP machine: rm = %r" % rm 68 69 ot = p.get_object_table() 70 pt = p.get_parameter_table() 71 72 print "Object table: ot = %r" % ot 73 print "Parameter table: pt = %r" % pt 74 print "Importer: i = %r" % i 75 print "Program: p = %r" % p 76 print "Module: m = %r" % m 77 78 # Report any errors. 79 80 except micropython.ProcessingError, exc: 81 print repr(exc) 82 if "-tb" in args: 83 raise 84 85 # vim: tabstop=4 expandtab shiftwidth=4