Permalink
Browse files

js autodebugger tool

  • Loading branch information...
1 parent be26b4a commit 03710544c7500d257a29c3733f171be6970e9765 @kripken committed Dec 25, 2012
Showing with 39 additions and 0 deletions.
  1. +39 −0 tools/autodebugger_js.py
View
39 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.'
+

0 comments on commit 0371054

Please sign in to comment.