Lisp作为C ++应用程序中的脚本语言

时间:2009-11-11 16:38:56

标签: c++ scripting lisp scheme common-lisp

嘿,我一直在研究在我的框架中添加脚本语言的可能性,我听说过Lisp并认为我会试一试。是否有像Lua和Python这样的Lisp VM,或者我的思维方式错误。我在这里找到了CLISP http://clisp.cons.org/,但我不确定这是否是我要找的。

有人能指出我正确的方向吗?

9 个答案:

答案 0 :(得分:29)

CLISP只是Common Lisp的一个实现。这是一个非常好的实现,它确实有一些支持嵌入其他(基于C)的程序,但这不是它的焦点,它是GPL,这可能是也可能不是你的交易破坏者。

您可能有兴趣查看ECL。此实现专门设计为嵌入式(实际上,“E”代表“可嵌入”!),并且具有许多可能对您有用的功能,包括将Common Lisp程序编译为C的能力(以及提供字节) - 代码编译和解释器)。

答案 1 :(得分:16)

除非你需要整个Lisp,否则你可能想要解决一个像Guile这样的Scheme实现,它将被合并到另一个程序中。

答案 2 :(得分:8)

尝试使用Embeddable Common Lisp(ECL)。

http://ecls.sourceforge.net/

它的目标是嵌入,并且只获得您的脚本语言所需的Common Lisp链接部分。

答案 3 :(得分:6)

Lisp是嵌入式语言的不错选择。许多人认为Lisp很难,但语法相对较轻,特别是对于非程序员。基本上有前缀表示法,就是这样。优先规则总是明确的。函数名和变量名可以相同。您可以随意使用任何您喜欢的字符来获得有趣和无名字。

使用Lisp,您可以根据自己的喜好弯曲语法; 用户无需学习常见的lisp 。它易于扩展并提供更简单的工具,例如表达业务规则或从文件中提取数据。

我想我的观点是,Common Lisp的功能和复杂性使得能够为最终用户提供简单的,特定于域的构造。许多其他嵌入式语言将意味着那些用户学习该语言的复杂性。

答案 4 :(得分:5)

Chicken Scheme是嵌入的另一种选择。有关可嵌入API的详细信息,请参阅here

答案 5 :(得分:3)

有几个简单的选择。

GUILE是GNU扩展语言。它是一个可嵌入的方案(LISP的方言)。 GPL(自然)。

TinyScheme是一个非常小的,非常简单的基于解释器的Scheme实现。它被恶意软件公司成功用于处理各种令人讨厌的事情。它以源代码形式提供,我不记得在什么许可证下。

答案 6 :(得分:1)

谷歌搜索:Common Lisp as an Extension language

但请记住,与Lua或Guile不同,Common Lisp并非从头开始设计为扩展语言。

一般建议:尝试使用一种真正使编写它们的工作变得更容易的扩展语言,并记住掌握Lisp以便你可以真正有效地使用它可能需要很长时间(并且周围没有很多人可以站在那么多parens xD)。

答案 7 :(得分:1)

因为它不是Lisp,所以Fuzuli有一个类似于Lisp的语法。很容易将它集成到C ++应用程序中。官方网站是http://www.fuzuliproject.org

另一个是http://www.newlisp.org/的newLISP,它也不是Lisp,而是非常接近Lisp。

答案 8 :(得分:-2)

Lisp是一个语言系列。

Common Lisp是 huge 的ANSI标准。认为C ++很大。不要将它用作脚本语言。

除非你的目标是相当硬核的程序员,否则Lisp作为一种脚本语言将会......呃......不能很好地服用。 可能。作为脚本语言,Lua可能是更好的选择。

也就是说,Lisp在实现脚本语言方面很好(技术上)。