import sys | |
import getopt | |
from compiler import compileFile, visitor | |
import profile | |
def main(): | |
VERBOSE = 0 | |
DISPLAY = 0 | |
PROFILE = 0 | |
CONTINUE = 0 | |
opts, args = getopt.getopt(sys.argv[1:], 'vqdcp') | |
for k, v in opts: | |
if k == '-v': | |
VERBOSE = 1 | |
visitor.ASTVisitor.VERBOSE = visitor.ASTVisitor.VERBOSE + 1 | |
if k == '-q': | |
if sys.platform[:3]=="win": | |
f = open('nul', 'wb') # /dev/null fails on Windows... | |
else: | |
f = open('/dev/null', 'wb') | |
sys.stdout = f | |
if k == '-d': | |
DISPLAY = 1 | |
if k == '-c': | |
CONTINUE = 1 | |
if k == '-p': | |
PROFILE = 1 | |
if not args: | |
print "no files to compile" | |
else: | |
for filename in args: | |
if VERBOSE: | |
print filename | |
try: | |
if PROFILE: | |
profile.run('compileFile(%r, %r)' % (filename, DISPLAY), | |
filename + ".prof") | |
else: | |
compileFile(filename, DISPLAY) | |
except SyntaxError, err: | |
print err | |
if err.lineno is not None: | |
print err.lineno | |
if not CONTINUE: | |
sys.exit(-1) | |
if __name__ == "__main__": | |
main() |