Exemple #1
0
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
Exemple #2
0
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)