首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中的Lisp/Scheme

C++中的Lisp/Scheme
EN

Stack Overflow用户
提问于 2011-02-24 08:00:01
回答 3查看 1.6K关注 0票数 10

我在boost邮件列表 (强调我的文章)上看到了以下文章:

大家好, 有没有人知道一个现有的精神/lisp实现,是否有兴趣开发这样一个项目的开放源码?还没有,AFAIK。 我将为Spirit2编写一个示例,以补充其中的微型-C虚拟机。同样有趣的是,该方案(或至少一个子集)可以在纯c++中实现。没有解析,只有C++中的纯DSEL。现在,假设一个解析器(通过C++)针对这个DSEL --一个源到源转换器。基本上,您的方案代码将被编译成高效的C++.

有人真的这么做过吗?我会非常感兴趣的。

EN

回答 3

Stack Overflow用户

发布于 2011-03-17 02:38:42

我在C++中编写了一种名为Funky的类似Lisp的语言。开放源码版本可在http://funky.vlinder.ca上获得。把它变成一个像Lisp一样的C++翻译器不需要太多的时间。

实际上,需要一个运行时支持库来提供一般的闭包时间和一些代码:如果您想要将Lisp代码转换成高效的C++,您基本上需要C++类(函子等等)。要完成运行时的繁重工作,您的Lisp到C++转换器需要:

  1. 解析Lisp
  2. 从Lisp创建AST
  3. 转换AST来优化它,如果可能的话( Lisp中的优化不同于C++中的优化,所以如果您想要快速恢复C++,就必须优化Lisp并让您的C++编译器优化生成的C++)
  4. 生成C++,您将依赖于运行时支持库来实现内置函数、函子类型等。

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

从头开始编写Lisp语法也不会太复杂:Lisp语法并不那么困难,所以大部分工作都会转到AST和运行时支持中。

如果我现在不写一个面向对象的DSL,我可能会尝试一下。

票数 6
EN

Stack Overflow用户

发布于 2011-10-26 17:30:07

(可读) c++ http://www.suri.cs.okayama-u.ac.jp/servlets/APPLICATION.rkt方案

这个怎么样?

票数 1
EN

Stack Overflow用户

发布于 2011-03-01 21:41:20

不知道这是不是你想要的,但是:

http://howtowriteaprogram.blogspot.com/2010/11/lisp-interpreter-in-90-lines-of-c.html

至少看起来是个开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5101874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档