blob: c90d8510f49963801c2b298aa033df1b51956f75 [file] [log] [blame]
Jeremy Hylton0c3208a2000-03-06 19:13:21 +00001import sys
2import getopt
3
Jeremy Hylton5d1e34a2001-09-17 21:31:35 +00004from compiler import compileFile, visitor
Jeremy Hylton0c3208a2000-03-06 19:13:21 +00005
Jeremy Hyltonbf80a032001-09-17 18:08:40 +00006import profile
Jeremy Hylton33c2a622001-08-27 20:39:21 +00007
Jeremy Hylton0c3208a2000-03-06 19:13:21 +00008def main():
9 VERBOSE = 0
Jeremy Hyltone7f710c2000-10-13 21:59:32 +000010 DISPLAY = 0
Jeremy Hyltonbf80a032001-09-17 18:08:40 +000011 PROFILE = 0
Jeremy Hylton33c2a622001-08-27 20:39:21 +000012 CONTINUE = 0
Jeremy Hyltonbf80a032001-09-17 18:08:40 +000013 opts, args = getopt.getopt(sys.argv[1:], 'vqdcp')
Jeremy Hylton0c3208a2000-03-06 19:13:21 +000014 for k, v in opts:
15 if k == '-v':
16 VERBOSE = 1
17 visitor.ASTVisitor.VERBOSE = visitor.ASTVisitor.VERBOSE + 1
18 if k == '-q':
Jeremy Hylton0a4f1ff2000-05-02 22:29:46 +000019 if sys.platform[:3]=="win":
20 f = open('nul', 'wb') # /dev/null fails on Windows...
21 else:
22 f = open('/dev/null', 'wb')
Jeremy Hylton0c3208a2000-03-06 19:13:21 +000023 sys.stdout = f
Jeremy Hyltone7f710c2000-10-13 21:59:32 +000024 if k == '-d':
25 DISPLAY = 1
Jeremy Hylton33c2a622001-08-27 20:39:21 +000026 if k == '-c':
27 CONTINUE = 1
Jeremy Hyltonbf80a032001-09-17 18:08:40 +000028 if k == '-p':
29 PROFILE = 1
Jeremy Hylton0c3208a2000-03-06 19:13:21 +000030 if not args:
31 print "no files to compile"
32 else:
33 for filename in args:
34 if VERBOSE:
35 print filename
Jeremy Hylton33c2a622001-08-27 20:39:21 +000036 try:
Jeremy Hyltonbf80a032001-09-17 18:08:40 +000037 if PROFILE:
Jeremy Hylton5d1e34a2001-09-17 21:31:35 +000038 profile.run('compileFile(%s, %s)' % (`filename`,
39 `DISPLAY`),
Jeremy Hyltonbf80a032001-09-17 18:08:40 +000040 filename + ".prof")
41 else:
Jeremy Hylton5d1e34a2001-09-17 21:31:35 +000042 compileFile(filename, DISPLAY)
Jeremy Hyltonbf80a032001-09-17 18:08:40 +000043
Jeremy Hylton33c2a622001-08-27 20:39:21 +000044 except SyntaxError, err:
45 print err
Jeremy Hylton5d1e34a2001-09-17 21:31:35 +000046 if err.lineno is not None:
47 print err.lineno
Jeremy Hylton33c2a622001-08-27 20:39:21 +000048 if not CONTINUE:
49 sys.exit(-1)
Jeremy Hylton0c3208a2000-03-06 19:13:21 +000050
51if __name__ == "__main__":
52 main()