import re import itertools def ltrim(s: str, target = " ") -> str: return ''.join(list(itertools.dropwhile(lambda x: x == target, s))) def param_to_pt(param: str) -> (str, str): pr = re.search("\w*$", param).span() n = param[pr[0]:pr[1]].strip() t = param[:pr[0]].strip() return (n, t) def fn_name(fn: str) -> str: return re.search("\w*\(", fn).group()[:-1] def fn_out(fn: str) -> str: return fn[:re.search("\w*\(", fn).span()[0]].rstrip() def params(fn: str) -> [str]: param_list = re.search("\(.*\)", fn).group()[:-1][1:].split(',') return list(map(param_to_pt, param_list)) def build_param_list(plist: (str, str)) -> str: out = "" comma = "" for p in plist: out += comma + p[0] + ": " + p[1] comma = ", " return out def build_fn(fn: str) -> str: name = fn_name(fn) out = fn_out(fn) ps = build_param_list(params(fn)) return "export @symbol(\"%s\") fn %s(%s) %s;" % (name, name, ps, out) file = "process.txt" with open(file) as file: for item in file: print(build_fn(item))