Lisp / Scheme DSEL

前端之家收集整理的这篇文章主要介绍了Lisp / Scheme DSEL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 boost mailing lists发现了以下帖子(重点是我):

hello all,

does anybody know of an existing spirit/lisp implimentation,and is there
any interest in developing such a project in open source?


没有,AFAIK.

我将为Spirit2写一个例子
补充小C虚拟
在那里的机器什么是同样的
有趣的是,该方案(或
至少它的一个子集)可以是
在纯c中实现.没有解析,
在C中只是纯DSEL.现在,想象一下
目标这个DSEL的解析器(通过
C)源译者.
基本上,您的方案代码将是
汇编成高效C.

有没有人实际做到这一点?我会对这样的DSEL感兴趣

解决方法

我在C中使用Spirit写了一个名为Funky的类似Lisp的语言.一个开放源代码版本可以在 http://funky.vlinder.ca.不要太多把它变成一个Lisp像C翻译器.

实际上,需要的是一个运行时支持库来提供通用的关闭时间和一些事情:如果你想将Lisp代码转换成高效的C,你将基本上需要C类(函子等)来做大量的提升一旦你得到运行时,所以你的Lisp到C的翻译将需要:

>解析Lisp
>从Lisp创建一个AST
>转换AST以优化它(如果可能的话)Lisp中的优化与C中的优化不同,所以如果想要快速C,则必须优化Lisp,让C编译器优化生成的C)
>生成C,您将依靠运行时支持库来处理内置函数,函子类型等.

如果您从Funky开始,您已经有了解析和AST(虽然Funky不优化AST),所以您可以从那里创建运行时并生成C …

从头开始写一个也不会过于复杂:Lisp语法不是那么困难,所以大部分的工作将进入AST和运行时支持.

如果我现在不写面向对象的DSL,我可以试试我的手.

猜你在找的C&C++相关文章