如何使用GCC转译到C?[关闭]

92vpleto  于 2023-06-28  发布在  其他
关注(0)|答案(1)|浏览(102)

**已关闭。**此问题正在寻求书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。目前不接受答复。

我们不允许问题寻求书籍,工具,软件库等的建议。您可以编辑问题,以便可以用事实和引用来回答。
昨天关门了。
Improve this question
我正在开发一种编程语言。假设我能够生成一个AST,我将如何将AST转换为C代码?我可以使用GCC或任何其他编译器来实现这个目的吗?
我什么都没试过,因为我完全迷失了。

fnatzsnv

fnatzsnv1#

GCC已经有很多语言前端(C、C++、Fortran、ADA、Go、Rust等),所以你完全可以自己编写一个新的前端。您可以将documentation与现有前端一起用作模板,并将代码编写为GCC源代码的修改。您可以使用任何您喜欢的AST实现,然后将其转换为GCC内部表示(GIMPLE),而不需要中间的“C”步骤。
或者,LLVM也有一个well-documented IR,你可以从AST生成,模块化设计意味着它更容易构建为一个独立的项目,发出文本文件,甚至使用library API在内存中构建它。
但是,如果你想转译到“C”,那么我不认为这些项目会帮助你,因为这不是他们做的,他们从来没有见过你的自定义AST。然而,生成高级C代码可能比生成低级编译器IR代码更简单 *,如果您的新语言被设计为允许轻松 *(例如,如果它不能很好地与C整数提升,那么您最终将与C进行斗争并失败)。
最终,无论您选择做什么,您都将编写一个基于在AST上进行某种遍历而发出 * 东西 * 的程序。

相关问题