C++程序中的Lisp解释器
Lisp Interpreter in a C++ Program
我不确定我的措辞是否正确,但我很确定我正在寻找一个可以放在C++程序中的LISP解释器。
我想象的理想情况是一个函数或其他东西,我可以将包含LISP代码的字符串、文件或文件名传递给它,然后在其他部分使用LISP代码的输出。
用(print (eval (read)))
的术语来说,我希望read
是我输入的东西,是我读取的东西,也是一个字符串或我可以从打印中解析的东西。
还有ECL("可嵌入公共Lisp")。它的优点是提供了完整的Common Lisp标准。不幸的是,关于嵌入的文档…嗯。。。有点稀少。
我自己从来没有用过,所以我真的不知道这是否真的是一件容易嵌入到应用程序中的事情。IMHO,Guile口译员将是一个合理的选择。
另一个可嵌入的Lisp是Rep,例如,它是Sawfish窗口管理器使用的扩展语言。它最初是Emacs lisp的克隆,但随着时间的推移变得有所不同,现在更接近Scheme。
如果您对Common Lisp感兴趣,那么有ECL。
来自常见问题解答:
2.1这种"嵌入"的东西是什么意思?
ECL是一个成熟的公共Lisp的实现语言然而,由于它的方式实现时,该实现可以用作可扩展语言对于您自己的应用程序,很像Guile为Scheme语言工作。通过一组相当简单的函数,您可以解析、编译和执行常见的Lisp形式,并使用外国功能接口(FFI),你可以向Common Lisp添加新函数适合您的特定域语言
和:
2.2如何将ECL嵌入到我的应用程序中?
您必须使用ECL库称为libecl.so、libecl.dyld或ecl.dll,具体取决于您的操作系统(Unix、Mac OSX或Windows)。这个ecl-config程序将为您提供你必须把旗传给C/C++编译器和链接器,使用ecl-config-cflags或ecl-config—分别为ldflags。关于你的计划,除了链接到ECL库,您必须调用正确的初始化例程,cl_boot(),以便ECL设置在适当的内部结构上。调用此例程后,您将能够运行lisp代码并创建或操作lisp数据
它不是Lisp,但Guile是GNU跨平台脚本语言,是Scheme的解释器/编译器,与Lisp非常接近。
您可以使用GNU Guile,这是一个专门设计的Scheme解释器,可轻松嵌入C/C++程序中。
尝试此搜索下出现的任何内容:http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=嵌入式+lisp
事实证明,很多人都想这样做。
对于比Guile更可嵌入的东西,还有Chibi。
(我<3 Guile BTW,所以这个答案并没有试图从中吸取教训——它只是提供了另一个选择。)
- 文件格式的编写解释器(C++ Arduino)
- 从嵌入式解释器捕获 python 窗口输出C++
- 为什么 Lisp 中 1000 阶乘的计算如此之快(并显示正确的结果)?
- 如何为 tflite 解释器调用 Flex 委托?
- 在解释器开发期间解析令牌问题
- 在C 11 printf格式上寻求解释器,这些printf格式会消耗多个值
- Brainfuck解释器奇怪的输出
- AOSP中的SH解释器源代码在哪里
- 是否有用于C++的类似 C 的语法脚本语言解释器?
- 在C++中嵌入 Python:解释器在执行过程中的持久性
- 脑解释器在C++产生不正确的结果
- 如何中断嵌入C++应用程序中的python解释器
- 解释器和中介器的设计模式有什么区别
- 嵌入式C++解释器,用于在编译程序中操作数据
- 如何在C++中将一个简单的类似 Lisp 的代码拆分为标记?
- 使用自定义模块构建 python 解释器时出现问题
- 如何中断本机扩展代码而不杀死解释器
- 如何强制编译器或解释器查看二进制数二的补码?
- 每个大型项目都包含一个Lisp解释器吗
- C++程序中的Lisp解释器