| 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() |