import os QIC = os.getenv("QIC", "qic") os.system(f"{QIC} -p qistd std.qi -o std.c") with open("std.c", "r") as f: lines = f.readlines() lines = map(lambda l: l.strip(), lines) lines = filter(lambda l: len(l) > 0, lines) lines = list(lines) os.remove("std.c") main_pos = lines.index("int main(int argc, char **argv) {") args_pos = lines.index("qi_decl_const(state, \"ARGS\", qi_make_list(state, args));") fin_pos = lines.index("qi_finalize();") decls = lines[1:main_pos] init = lines[args_pos+1:fin_pos-1] output = [] output.extend(decls) output.append("static void qi_init_std(qi_state_t *state) {") output.extend(init) output.append("}") with open("qistd.c", "w") as f: f.write("\n".join(output))