def makeFunctionList(filename,verbose=False): 'Convert a .fun file into a function dictionary' tlist = common.tokenize_by_line( FuncScanner, filename ) if verbose: dump_token_list(tlist) if verbose: print '***** Tree ******' atree = common.parse_tokens( FuncParser, tlist ) if verbose: dump_ast(atree) if verbose: print '**** Compile ****' fc = FuncCompiler(atree) if verbose: fc.flist.dump() return fc.flist
def compileTSP(filename,function_dict,stop_after=None,verbose=0): fd = open(filename) bs = BaseScanner() tlist = bs.process_lines(fd) if verbose: print '********** First tokenizing pass *************' dump_token_list(tlist) final_list = basic_parse(tlist) if verbose: print '********** Second tokenizing pass *************' if verbose or stop_after == 'token': dump_token_list(final_list) if stop_after == 'token': return parser = TSPParser(AST) atree = parser.parse(final_list) if verbose: print '***** Initial Parse Tree ******' if verbose or stop_after == 'buildtree': dump_ast(atree) if stop_after == 'buildtree': return PrintInversion(atree) if verbose: print '***** Print inversion parse tree *****' if verbose or stop_after == 'checktree': dump_ast(atree) if stop_after == 'checktree': return tspc = TSPCompiler(atree,function_dict) pseudo_byte_code = tspc.do_parse() if verbose: print '**** Generated Byte Code ****' if verbose or stop_after == 'pseudocode': dump_pseudo_byte_code(pseudo_byte_code) if stop_after == 'pseudocode': return bcc = ByteCodeCompiler(function_dict) return bcc.compile(pseudo_byte_code)