我在
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,我可以试试我的手.