我正在 LLVM 之上引导一个编程语言编译器。目前,我主要为 C 的一个子集编写了一个编译器,该子集是自编译的。完成后,我将引导我的语言远离 C,同时保持自编译。
由于编译器是自编译的,因此我使用的任何 C 功能都必须实现。所以这是一个恒定的平衡:如果我使用了太多的特性,我将不得不实现比我想要的更多,但如果我没有实现足够的特性,那么编写代码就会很困难。
其中一项功能是 LLVM 绑定。在没有 LLVM C 绑定的情况下生成 LLVM 中间表示是很困难的。但是,如果我使用 LLVM 绑定,当我从 C 分支出来时,我必须再次实现它们。
我在这里遇到了一些困难,所以我正在寻找替代解决方案。有任何想法吗?