1import sys
2import getopt
3
4from compiler import compileFile, visitor
5
6import profile
7
8def main():
9    VERBOSE = 0
10    DISPLAY = 0
11    PROFILE = 0
12    CONTINUE = 0
13    opts, args = getopt.getopt(sys.argv[1:], 'vqdcp')
14    for k, v in opts:
15        if k == '-v':
16            VERBOSE = 1
17            visitor.ASTVisitor.VERBOSE = visitor.ASTVisitor.VERBOSE + 1
18        if k == '-q':
19            if sys.platform[:3]=="win":
20                f = open('nul', 'wb') # /dev/null fails on Windows...
21            else:
22                f = open('/dev/null', 'wb')
23            sys.stdout = f
24        if k == '-d':
25            DISPLAY = 1
26        if k == '-c':
27            CONTINUE = 1
28        if k == '-p':
29            PROFILE = 1
30    if not args:
31        print "no files to compile"
32    else:
33        for filename in args:
34            if VERBOSE:
35                print filename
36            try:
37                if PROFILE:
38                    profile.run('compileFile(%r, %r)' % (filename, DISPLAY),
39                                filename + ".prof")
40                else:
41                    compileFile(filename, DISPLAY)
42
43            except SyntaxError, err:
44                print err
45                if err.lineno is not None:
46                    print err.lineno
47                if not CONTINUE:
48                    sys.exit(-1)
49
50if __name__ == "__main__":
51    main()
52