Exemplo n.º 1
0
def main(argv: typing.List[str]) -> int:
    parser = Parser()

    groups = parser.parse()
    generator = Generator(groups)
    generator.generate(out_dir)

    return 0
Exemplo n.º 2
0
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='AST optimizer')
    parser.add_argument('input',
                        type=str,
                        metavar='Input_File',
                        help='Input .c file path')
    parser.add_argument('output',
                        type=str,
                        metavar='Output_File',
                        help='Output .c file path')
    parser.add_argument('--debug', action='store_true')
    args = parser.parse_args()

    src_path = args.input
    target_path = args.output
    parser = Parser(debug=args.debug)
    ast = parser.run(src_path)
    if args.debug:
        printVisitor = PrintVisitor()
        ast.accept(printVisitor)
        print(printVisitor)
    constantFoldingVisitor = ConstantFoldingVisitor(debug=args.debug,
                                                    mark_used=True)
    ast.accept(constantFoldingVisitor)
    ast.accept(constantFoldingVisitor)
    writeVisitor = WriteVisitor(dead_code_elimination=True)
    s = ast.accept(writeVisitor)
    f = open(target_path, 'w')
    f.write(s)
    f.close()