コード例 #1
0
ファイル: tac_to_ivy.py プロジェクト: elazarg/pythia
def test(code_to_analyze):
    from pdb import set_trace
    # set_trace()
    #tac_blocks_cfg = tac_analysis.make_tacblock_cfg(code_to_analyze)
    tac_blocks_cfg = tac.make_tacblock_cfg(code_to_analyze)
    print("\n".join("# " + line for line in tac.cfg_to_lines(tac_blocks_cfg)))
    print()
    tac_to_ivy = TacToIvy()
    result = tac_to_ivy.tac_blocks_cfg_to_ivy(tac_blocks_cfg)
    open("ivy_file.ivy", 'w').write(result)
コード例 #2
0
ファイル: tac_analysis.py プロジェクト: elazarg/pythia
def make_tacblock_cfg(f, propagate_consts=True, liveness=True):
    cfg = tac.make_tacblock_cfg(f)
    if propagate_consts:
        dataflow(cfg, 0, {}, ConsProp)
    if liveness:
        for n in sorted(cfg.nodes()):
            block = cfg.node[n][BLOCKNAME]
            block = list(single_block_liveness(block))
            block.reverse()
            cfg.node[n][BLOCKNAME] = block
    return cfg
コード例 #3
0
ファイル: tac_analysis.py プロジェクト: elazarg/pythia
def test_single_block():
    import code_examples
    cfg = tac.make_tacblock_cfg(code_examples.RenderScene)
    for n in sorted(cfg.nodes()):
        block = cfg.node[n][BLOCKNAME]
        print('uses:', single_block_uses(block))
        # print_block(n, block)
        # print('push up:')
        ConsProp.single_block_update(block)
        block = list(single_block_liveness(block)); block.reverse()
        ConsProp.single_block_update(block)
        block = list(single_block_liveness(block)); block.reverse()
        print_block(n, block)