加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Lisp / Scheme DSEL

发布时间:2020-12-16 06:03:35 所属栏目:百科 来源:网络整理
导读:我在 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虚
我在 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,我可以试试我的手.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读