编译为惯用语C

时间:2009-12-08 17:34:30

标签: compiler-construction haskell lisp

是否有任何编译器可用于编译为惯用C的函数或lisp-ish语言?大多数编译器似乎提供了类似于由C宏组成的机器语言的东西。我想知道是否有任何东西可以生成基于更高级语言的可读C代码。

5 个答案:

答案 0 :(得分:7)

鉴于你用Haskell标记了这个问题,我会给出一个Haskell答案。 JHC是一个Haskell编译器,它可以产生相当惯用的ansi-C。它是一个优化的整个程序编译器,可以生成令人难以置信的快速二进制文件。我现在不确定它有多稳定,而且它可以处理的程序似乎有限。但是不要相信我的话,自己检查一下。

答案 1 :(得分:5)

对于Common Lisp,目前只有一个广泛使用的编译器可以编译为C:ECL。您需要查看输出是否足够可读。

多年前,一家公司为了这个目的而出售了一个Common Lisp编译器:将Lisp编译为'可维护'C.编译器非常昂贵。它已不再可用,但似乎仍在一两家公司中使用:Lisp to C

答案 2 :(得分:0)

我只找到C->C++ converter。我不确定您是否可以将大多数功能语言转换为LISP。结构和语法不匹配。我相信你可以找到许多C ++转换器。

答案 3 :(得分:0)

内置的haskell编译器编译为C.尽管IIRC看起来并不那么漂亮 (已检查,162行 main = putStrLn“Hello,World!”

编辑:GHC当然。

答案 4 :(得分:0)

有一个名为Stalin的Scheme编译器可以生成高度优化的C源代码。