HC4*_*ica 10 c++ lisp scheme boost dsel
我在boost邮件列表上发现了以下帖子(强调我的):
大家好,
有没有人知道现有的精神/ lisp实施,是否有兴趣在开源中开发这样的项目?
还没有,AFAIK.
我将为Spirit2编写一个示例,以补充那里的tiny-C虚拟机.同样有趣的是,方案(或至少它的一个子集)可以用纯c ++实现.没有解析,只是C++中的纯DSEL.现在,想象一个针对此DSEL(通过C++)的解析器 - 源代码转换器.从本质上讲,您的方案代码将被编译为高效的C++.
有人真的这样做过吗?我会对这样的DSEL非常感兴趣.
我在C++中使用Spirit编写了一个名为Funky的类似Lisp的语言.开源版本可在http://funky.vlinder.ca上找到.将它变成类似Lisp的C++转换器并不需要太多.
实际上,它需要的是一个运行时支持库来提供通用的闭包时间,以及其中一些:如果你想将Lisp代码转换为高效的C++,你基本上需要C++类(仿函数等)来完成繁重的工作.一旦你到了运行时,所以你的Lisp-to-C++翻译需要:
如果你从Funky开始,你已经有了解析和AST(虽然Funky没有优化AST),所以你可以从那里创建运行时并生成C++ ......
从头开始写一个也不会过于复杂:Lisp语法并不那么困难,所以大部分工作都会进入AST和运行时支持.
如果我现在没有编写面向对象的DSL,我可能会尝试这一点.
不确定这是否是您想要的,但是:
http://howtowriteaprogram.blogspot.com/2010/11/lisp-interpreter-in-90-lines-of-c.html
至少,这看起来像是一个开始。