def main(argv=None): print 'Coco/R v%s for Python (May 16, 2007) - Translated by %s (%s)\n' % ( MetaData['version'], MetaData['author'], MetaData['author_email']) if argv is None: if len(sys.argv) == 1: argv = [sys.argv[0], '-h'] else: argv = sys.argv options, args = Tab.parseArgs(argv) ATGName = args[1] dirName, fileName = os.path.split(ATGName) # Setup the default frame directory try: if options.frameFileDir: framesDir = options.frameFileDir else: framesDir = os.path.join(ROOT_DIR, 'frames') CodeGenerator.frameDir = framesDir Tab.frameDir = framesDir except: pass # Initialize the Scanner try: s = open(fileName, 'r') try: strVal = s.read() except IOError: sys.stdout.write( '-- Compiler Error: Failed to read from source file "%s"\n' % fileName) try: s.close() except IOError: raise RuntimeError( '-- Compiler Error: cannot close source file "%s"' % fileName) except IOError: raise RuntimeError('-- Compiler Error: Cannot open file "%s"' % fileName) scanner = Scanner(strVal) parser = Parser() Errors.Init(fileName, dirName, Tab.ddt[5], parser.getParsingPos, parser.errorMessages) Trace.Init(dirName) Tab.Init() DFA.Init(fileName, dirName) CodeGenerator.sourceDir = dirName CodeGenerator.frameDir = Tab.frameDir ParserGen.Init(fileName, dirName) DriverGen.Init(fileName, dirName) parser.Parse(scanner) Errors.Summarize(scanner.buffer) Trace.Close() if Errors.count != 0: sys.exit(1)