| 
									
										
										
										
											2000-03-06 19:13:21 +00:00
										 |  |  | import sys | 
					
						
							|  |  |  | import getopt | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-09-17 21:31:35 +00:00
										 |  |  | from compiler import compileFile, visitor | 
					
						
							| 
									
										
										
										
											2000-03-06 19:13:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-09-17 18:08:40 +00:00
										 |  |  | import profile | 
					
						
							| 
									
										
										
										
											2001-08-27 20:39:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-03-06 19:13:21 +00:00
										 |  |  | def main(): | 
					
						
							|  |  |  |     VERBOSE = 0 | 
					
						
							| 
									
										
										
										
											2000-10-13 21:59:32 +00:00
										 |  |  |     DISPLAY = 0 | 
					
						
							| 
									
										
										
										
											2001-09-17 18:08:40 +00:00
										 |  |  |     PROFILE = 0 | 
					
						
							| 
									
										
										
										
											2001-08-27 20:39:21 +00:00
										 |  |  |     CONTINUE = 0 | 
					
						
							| 
									
										
										
										
											2001-09-17 18:08:40 +00:00
										 |  |  |     opts, args = getopt.getopt(sys.argv[1:], 'vqdcp') | 
					
						
							| 
									
										
										
										
											2000-03-06 19:13:21 +00:00
										 |  |  |     for k, v in opts: | 
					
						
							|  |  |  |         if k == '-v': | 
					
						
							|  |  |  |             VERBOSE = 1 | 
					
						
							|  |  |  |             visitor.ASTVisitor.VERBOSE = visitor.ASTVisitor.VERBOSE + 1 | 
					
						
							|  |  |  |         if k == '-q': | 
					
						
							| 
									
										
										
										
											2000-05-02 22:29:46 +00:00
										 |  |  |             if sys.platform[:3]=="win": | 
					
						
							|  |  |  |                 f = open('nul', 'wb') # /dev/null fails on Windows... | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 f = open('/dev/null', 'wb') | 
					
						
							| 
									
										
										
										
											2000-03-06 19:13:21 +00:00
										 |  |  |             sys.stdout = f | 
					
						
							| 
									
										
										
										
											2000-10-13 21:59:32 +00:00
										 |  |  |         if k == '-d': | 
					
						
							|  |  |  |             DISPLAY = 1 | 
					
						
							| 
									
										
										
										
											2001-08-27 20:39:21 +00:00
										 |  |  |         if k == '-c': | 
					
						
							|  |  |  |             CONTINUE = 1 | 
					
						
							| 
									
										
										
										
											2001-09-17 18:08:40 +00:00
										 |  |  |         if k == '-p': | 
					
						
							|  |  |  |             PROFILE = 1 | 
					
						
							| 
									
										
										
										
											2000-03-06 19:13:21 +00:00
										 |  |  |     if not args: | 
					
						
							|  |  |  |         print "no files to compile" | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         for filename in args: | 
					
						
							|  |  |  |             if VERBOSE: | 
					
						
							|  |  |  |                 print filename | 
					
						
							| 
									
										
										
										
											2001-08-27 20:39:21 +00:00
										 |  |  |             try: | 
					
						
							| 
									
										
										
										
											2001-09-17 18:08:40 +00:00
										 |  |  |                 if PROFILE: | 
					
						
							| 
									
										
										
										
											2004-02-12 17:35:32 +00:00
										 |  |  |                     profile.run('compileFile(%r, %r)' % (filename, DISPLAY), | 
					
						
							| 
									
										
										
										
											2001-09-17 18:08:40 +00:00
										 |  |  |                                 filename + ".prof") | 
					
						
							|  |  |  |                 else: | 
					
						
							| 
									
										
										
										
											2001-09-17 21:31:35 +00:00
										 |  |  |                     compileFile(filename, DISPLAY) | 
					
						
							| 
									
										
										
										
											2004-07-18 06:16:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-27 20:39:21 +00:00
										 |  |  |             except SyntaxError, err: | 
					
						
							|  |  |  |                 print err | 
					
						
							| 
									
										
										
										
											2001-09-17 21:31:35 +00:00
										 |  |  |                 if err.lineno is not None: | 
					
						
							|  |  |  |                     print err.lineno | 
					
						
							| 
									
										
										
										
											2001-08-27 20:39:21 +00:00
										 |  |  |                 if not CONTINUE: | 
					
						
							|  |  |  |                     sys.exit(-1) | 
					
						
							| 
									
										
										
										
											2000-03-06 19:13:21 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     main() |