def main(argv: typing.List[str]) -> int: parser = Parser() groups = parser.parse() generator = Generator(groups) generator.generate(out_dir) return 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()