diff --git a/Tools/compiler/compile.py b/Tools/compiler/compile.py
index 1a843e2..c90d851 100644
--- a/Tools/compiler/compile.py
+++ b/Tools/compiler/compile.py
@@ -1,7 +1,7 @@
 import sys
 import getopt
 
-from compiler import compile, visitor
+from compiler import compileFile, visitor
 
 import profile
 
@@ -35,14 +35,16 @@
                 print filename
             try:
                 if PROFILE:
-                    profile.run('compile(%s, %s)' % (`filename`, `DISPLAY`),
+                    profile.run('compileFile(%s, %s)' % (`filename`,
+                                                         `DISPLAY`),
                                 filename + ".prof")
                 else:
-                    compile(filename, DISPLAY)
+                    compileFile(filename, DISPLAY)
                     
             except SyntaxError, err:
                 print err
-                print err.lineno
+                if err.lineno is not None:
+                    print err.lineno
                 if not CONTINUE:
                     sys.exit(-1)
 
diff --git a/Tools/compiler/regrtest.py b/Tools/compiler/regrtest.py
index 1425518..aae0ec2 100644
--- a/Tools/compiler/regrtest.py
+++ b/Tools/compiler/regrtest.py
@@ -7,7 +7,7 @@
 that import problems can be observed easily.
 """
 
-from compiler import compile
+from compiler import compileFile
 
 import os
 import sys
@@ -25,12 +25,13 @@
     dest = tempfile.mktemp()
     os.mkdir(dest)
     libdir = os.path.split(test.__path__[0])[0]
-    os.system("cp -r %s/* %s" % (libdir, dest))
+    print "Found standard library in", libdir
     print "Creating copy of standard library in", dest
+    os.system("cp -r %s/* %s" % (libdir, dest))
     return dest
 
 def compile_files(dir):
-    print "Compiling", dir
+    print "Compiling", dir, "\n\t",
     line_len = 10
     for file in os.listdir(dir):
         base, ext = os.path.splitext(file)
@@ -42,7 +43,7 @@
                 line_len = len(source) + 9
             print file,
             try:
-                compile(source)
+                compileFile(source)
             except SyntaxError, err:
                 print err
                 continue
@@ -52,13 +53,16 @@
             path = os.path.join(dir, file)
             if os.path.isdir(path):
                 print
+                print
                 compile_files(path)
+                print "\t",
+                line_len = 10
     print
 
 def run_regrtest(lib_dir):
     test_dir = os.path.join(lib_dir, "test")
     os.chdir(test_dir)
-    os.system("PYTHONPATH=%s %s -v regrtest.py -r" % (lib_dir, sys.executable))
+    os.system("PYTHONPATH=%s %s -v regrtest.py" % (lib_dir, sys.executable))
 
 def cleanup(dir):
     os.system("rm -rf %s" % dir)
