Beispiel #1
0

if __name__ == "__main__":
    import sys, compiler
    import logging.config
    from p3declassify import P3Declassify
    from p3wrapper import P3Wrapper
    from p3uniquifyvars import P3UniquifyVars
    from gcflattener import GCFlattener
    from gcrefcount import GCRefCount
    if len(sys.argv) < 2:
        sys.exit(1)
    # configure logging
    logging.config.fileConfig('logging.cfg')
    testcases = sys.argv[1:]
    for testcase in testcases:
        varalloc = VariableAllocator()
        declassify = P3Declassify(varalloc)
        wrapper = P3Wrapper()
        gcflatten = GCFlattener(varalloc)
        uniquify = P3UniquifyVars()
        explicator = P3Explicate(varalloc, handleLambdas=False)
        gcrefcount = GCRefCount(varalloc)
        ast = compiler.parseFile(testcase)
        ast = declassify.transform(ast)
        ast = wrapper.transform(ast)
        ast = uniquify.transform(ast)
        ast = gcflatten.transform(ast)
        ast = gcrefcount.transform(ast)
        print prettyAST(explicator.transform(ast))
Beispiel #2
0
#    # configure logging 
#    logging.config.fileConfig('logging.cfg')
    logging.basicConfig(level=logging.ERROR)
    logging.disable(logging.ERROR)
    sys.setrecursionlimit(10000)

    testcases = sys.argv[1:]
    for testcase in testcases:
        logger.info("Working on test case '%s'" % testcase)

        # instantiate all classes needed for our pipeline
        varalloc = VariableAllocator()
        declassify = P3Declassify(varalloc)
        wrapper = P3Wrapper()
        uniquify = P3UniquifyVars()
        gcflattener = GCFlattener(varalloc)
        gcrefcount = GCRefCount(varalloc)
        explicator = P3Explicate(varalloc,handleLambdas=False)
        heap = P3Heapify(explicator)
        closer = P3ClosureConversion(explicator, varalloc)
        flattener = P3Flattener(varalloc)
        instruction_selector = P3InstructionSelector(varalloc)
        ifinsselector = P3IfInstructionSelector(varalloc,instruction_selector.labelalloc)
        generator = P3Generator(allowMem2Mem=True)

        # send the AST through the pipeline
        ast = compiler.parseFile(testcase)
        ast = declassify.transform(ast)
        ast = wrapper.transform(ast)
        ast = uniquify.transform(ast)
        ast = gcflattener.transform(ast)
    from p3explicate import P3Explicate
    from p3heapify import P3Heapify
    from p3closureconvert import P3ClosureConversion
    from p3flattener import P3Flattener
    from p3insselector import P3InstructionSelector
    if len(sys.argv) < 2:
        sys.exit(1)
    # configure logging 
    logging.config.fileConfig('logging.cfg')
    testcases = sys.argv[1:]
    for testcase in testcases:
        varalloc = VariableAllocator()
        declassify = P3Declassify(varalloc)
        unique = P3UniquifyVars()
        wrapper = P3Wrapper()
        gcflatten = GCFlattener(varalloc)
        gcrefcount = GCRefCount(varalloc)
        explicator = P3Explicate(varalloc, handleLambdas=False)
        heap = P3Heapify(explicator)
        closure = P3ClosureConversion(explicator, varalloc)
        flatten = P3Flattener(varalloc)
        insselector = P3InstructionSelector(varalloc)

        ast = compiler.parseFile(testcase)
        ast = declassify.transform(ast)
        ast = wrapper.transform(ast)
        ast = unique.transform(ast)        
        ast = gcflatten.transform(ast)
        ast = gcrefcount.transform(ast)         
        ast = explicator.explicate(ast)
        ast = heap.transform(ast)
Beispiel #4
0
    def visit_Compare(self, node, *args, **kwargs):
        return node


if __name__ == "__main__":
    import compiler, sys
    import logging.config
    
    if len(sys.argv) < 2:
        sys.exit(1)
    # configure logging 
    logging.config.fileConfig('logging.cfg')

    testcases = sys.argv[1:]
    for testcase in testcases:
        varalloc = VariableAllocator()
        declassify = P3Declassify(varalloc)
        wrapper = P3Wrapper()
        unique = P3UniquifyVars()
        flatten = GCFlattener(varalloc,True)
        refcount = GCRefCount(varalloc)

        ast = compiler.parseFile(testcase)
        ast = declassify.transform(ast)
        ast = wrapper.transform(ast)
        ast = unique.transform(ast)        
        ast = flatten.transform(ast)
        ast = refcount.transform(ast)
        print ast
        print prettyAST(ast)