def parse(content): try: with tempfile.NamedTemporaryFile(delete = False) as temp: temp.write(content) temp.flush() return patch.parse(temp.name) finally: os.unlink(temp.name)
def parse(content): try: with tempfile.NamedTemporaryFile(delete=False) as temp: temp.write(content) temp.flush() return patch.parse(temp.name) finally: os.unlink(temp.name)
def main(): opts = options.parse_options() if opts.version: print "prophyc {}".format(__version__) sys.exit(0) if not opts.input_files: sys.exit("prophyc: error: missing input file") if opts.isar: from prophyc.parsers.isar import IsarParser parser = IsarParser() parse_error = None elif opts.sack: if not module_exists("clang"): sys.exit("Sack input requires clang and it's not installed") from prophyc.parsers.sack import SackParser parser = SackParser(opts.include_dirs) parse_error = None else: from prophyc.parsers.prophy import ProphyParser, ParseError parser = ProphyParser() parse_error = ParseError serializers = [] if opts.python_out: from prophyc.generators.python import PythonGenerator serializers.append(PythonGenerator(opts.python_out)) if opts.cpp_out: from prophyc.generators.cpp import CppGenerator serializers.append(CppGenerator(opts.cpp_out)) if not serializers: sys.exit("Missing output directives") for input_file in opts.input_files: try: nodes = parser.parse(input_file) except parse_error as e: sys.exit('\n'.join(e.errors)) if opts.patch: from prophyc import patch patches = patch.parse(opts.patch) patch.patch(nodes, patches) model.topological_sort(nodes) model.cross_reference(nodes) model.evaluate_kinds(nodes) for serializer in serializers: basename = get_basename(input_file) serializer.serialize(nodes, basename)
def get_patcher(patch_file_path): if patch_file_path: from prophyc import patch patches = patch.parse(patch_file_path) return lambda nodes: patch.patch(nodes, patches)
def get_patcher(opts): if opts.patch: from prophyc import patch patches = patch.parse(opts.patch) return lambda nodes: patch.patch(nodes, patches)