我试图从方案函数开始生成 C 代码,但我没有找到任何从方案到 C 的转换器。我试图将此函数转换为 C。
(define f
(lambda(n)
(if (= n 0) 1
(* n (f (- n 1))))))
(display (f 10))
(newline)
我尝试使用 gambit (gsc) 并生成一个 C 文件,该文件看起来只是一个要加载到某个解释器中的文件,而不是包含
main
的文件。可以执行的功能。是否有一些应用程序可以生成可以直接执行的 C 代码?来自标准方案库的函数,如
display
应该与一些目标文件链接。编辑:
我的目的是了解专业翻译人员使用的算法。
最佳答案
有很多这样的翻译者,我认为至少可以追溯到1980年代CHICKEN是一个很好的当前。
如果你想使用它:
make
构建和安装它咒语(这对我来说在 OSX 上是无痛的,因此在 Linux 上确实应该是非常无痛的,尽管在 Windows 上可能更难); f.scm
. chicken f.scm
编译这将产生几百行难以理解的 C; csc
创建它。 有一个广泛的manual如果您想做任何重要的事情,例如在 C 库中链接或与 C 中的 Scheme 代码交谈,则您需要阅读它。
不知道你在追求什么,这闻起来好像它可能是 XY problem .特别是:
每一个都有很多例子。其中一些系统也可以编译为或通过 C,但一个不依赖于另一个。
最后,如果您想了解以 C 为目标的 Scheme 编译器如何工作(或以任何语言为目标的 Scheme 编译器如何工作,包括汇编程序),那么传统方法可能仍然最有效:找到一个编写良好且源代码可用的方法,然后阅读并修改其源代码。
关于c - 方案到 C 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60003133/