From 642292108bb163862c20627e4c2067b5b58f100c Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sat, 12 Jan 2013 20:17:04 -0500 Subject: Improvements to bytecode tools. --- lab/parser.py | 6 +++++- lab/show_pyc.py | 14 ++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) (limited to 'lab') diff --git a/lab/parser.py b/lab/parser.py index 374acea7..ce6902a6 100644 --- a/lab/parser.py +++ b/lab/parser.py @@ -118,10 +118,14 @@ class ParserMain(object): else: srclines = None print("\n%s: " % bp.code) + upto = None for disline in disgen.disgen(bp.code): if disline.first: if srclines: - print("%100s%s" % ("", srclines[disline.lineno-1])) + upto = upto or disline.lineno-1 + while upto <= disline.lineno-1: + print("%100s%s" % ("", srclines[upto])) + upto += 1 elif disline.offset > 0: print("") line = disgen.format_dis_line(disline) diff --git a/lab/show_pyc.py b/lab/show_pyc.py index a0834e88..7dacc2b0 100644 --- a/lab/show_pyc.py +++ b/lab/show_pyc.py @@ -12,6 +12,9 @@ def show_pyc_file(fname): def show_py_file(fname): text = open(fname).read().replace('\r\n', '\n') + show_py_text(text, fname=fname) + +def show_py_text(text, fname=""): code = compile(text, fname, "exec") show_code(code) @@ -55,10 +58,13 @@ def show_file(fname): show_py_file(fname) else: print "Odd file:", fname - + def main(args): - for a in args: - show_file(a) - + if args[0] == '-c': + show_py_text(" ".join(args[1:]).replace(";", "\n")) + else: + for a in args: + show_file(a) + if __name__ == '__main__': main(sys.argv[1:]) -- cgit v1.2.1