diff options
Diffstat (limited to 'tools/autodebugger_js.py')
-rw-r--r-- | tools/autodebugger_js.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/autodebugger_js.py b/tools/autodebugger_js.py new file mode 100644 index 00000000..ee90e6f1 --- /dev/null +++ b/tools/autodebugger_js.py @@ -0,0 +1,39 @@ +''' +Processes a C source file, adding debugging information. + +Similar to autodebugger.py, but runs on .js files. +''' + +import os, sys, re + +filename = sys.argv[1] +func = sys.argv[2] + +f = open(filename, 'r') +data = f.read() +f.close() + +lines = data.split('\n') +in_func = False +for i in range(len(lines)): + if lines[i].startswith('function ' + func + '('): + in_func = True + continue + elif lines[i].startswith('}'): + in_func = False + continue + if in_func: + m = re.match('^ +([$_\w\d \[\]]+) = +([^;]+);$', lines[i]) + if m and (' if ' not in lines[i-1] or '{' in lines[i-1]) and \ + (' if ' not in lines[i+1] or '{' in lines[i+1]) and \ + (' else' not in lines[i-1] or '{' in lines[i-1]) and \ + (' else' not in lines[i+1] or '{' in lines[i+1]): + var = m.groups(1)[0].rstrip().split(' ')[-1] + if 'STACKTOP' not in lines[i] and 'stackBase' not in lines[i]: + #lines[i] += ''' print("[%4d] %s = " + %s);''' % (i+1, var, var) + lines[i] += ''' print("%s = " + %s);''' % (var, var) + +print '\n'.join(lines) + +print >> sys.stderr, 'Success.' + |