【发布时间】:2009-12-08 17:34:30
【问题描述】:
是否有编译成惯用 C 的函数或 lisp-ish 语言的编译器?那里的大多数编译器似乎都提供了类似于由 C 宏组成的机器语言的东西。我想知道是否有任何东西可以生成基于高级语言的可读 C 代码。
【问题讨论】:
-
但是……你为什么要它这样做?
-
问题在于,无论你怎么看,许多高级结构在 C 级别上都是混乱的。例如,考虑嵌套闭包。
-
我想知道是否有足够聪明的编译器可以弄清楚如何将尾递归循环转换为 for 循环,或者将事物转换为 CPS 并使用传递数据结构蹦床至少这通常是可读和可以理解的。
-
GCC 足够聪明,可以发现尾递归循环(甚至几乎是几乎尾递归循环)并将其转化为迭代——从 C 到 C,这使得在更高级别上做同样的事情看起来像无关的工作。
-
Steve:当然,每个 Scheme 编译器都需要发现尾递归。
标签: compiler-construction haskell lisp