[我试图从一个方案函数开始生成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
创建它。[如果您想做一些平凡的事情,例如在C库中进行链接或与C中的Scheme代码进行对话,则需要阅读大量的manual。
[不知道您要干什么,闻起来好像是XY problem。特别是:
每个都有很多示例。这些系统中的某些可能最后,如果您想了解针对C的Scheme编译器如何工作(或针对任何语言(包括汇编器)的Scheme编译器如何工作,那么传统方法可能仍然是最佳的方法:找到一个编写良好的源,该源可用,并仔细阅读其源代码。