genstd.py 719 B

123456789101112131415161718192021222324252627282930
  1. import os
  2. QIC = os.getenv("QIC", "qic")
  3. os.system(f"{QIC} -p qistd std.qi -o std.c")
  4. with open("std.c", "r") as f:
  5. lines = f.readlines()
  6. lines = map(lambda l: l.strip(), lines)
  7. lines = filter(lambda l: len(l) > 0, lines)
  8. lines = list(lines)
  9. os.remove("std.c")
  10. main_pos = lines.index("int main(int argc, char **argv) {")
  11. args_pos = lines.index("qi_decl_const(state, \"ARGS\", qi_make_list(state, args));")
  12. fin_pos = lines.index("qi_finalize();")
  13. decls = lines[1:main_pos]
  14. init = lines[args_pos+1:fin_pos-1]
  15. output = []
  16. output.extend(decls)
  17. output.append("static void qi_init_std(qi_state_t *state) {")
  18. output.extend(init)
  19. output.append("}")
  20. with open("qistd.c", "w") as f:
  21. f.write("\n".join(output))