将编程语言嵌入到程序中

时间:2010-08-18 14:50:00

标签: c

我想为我正在编写的应用程序添加一定程度的“脚本性”。粗略地说,我想要一种将编程语言API嵌入到我的程序中的方法。我看过TinyPy,但我很担心 - 鉴于它的体积很小 - 它可能具有欺骗性的限制(即它的外观和感觉就像Python一样,但缺乏成熟的Python的许多功能)。

我不打算编写自己的编程语言;我想简单地使用一种用户可以编写函数的相对知名的语言,然后能够调用这些函数/从我的应用程序传递这些函数参数,这些参数将用C语言编写。

我也想访问这些函数返回给我的任何数据类型,也可以从C中访问。

有没有人对使用的API /库有任何建议,这些建议既轻巧又功能齐全,并且使用相对简单易用的C库?

谢谢!

7 个答案:

答案 0 :(得分:16)

Lua是一个受欢迎的选择。

答案 1 :(得分:5)

您可能需要查看SpiderMonkey,这样您就可以在C程序中嵌入Javascript引擎。

答案 2 :(得分:3)

大多数脚本语言都与C有很好的接口。我实际上看过的是Perl,Python和Lua。如果您的用户不是严肃的程序员,我建议给Perl一个小姐。如果他们是严肃的魔兽世界玩家,他们可能已经熟悉Lua,并编写Lua代码与编译程序接口,这可能是一个不错的选择。

答案 3 :(得分:2)

你总是可以在ch工具包中使用'c' 正如你所说python是好的,特别是如果你可以使用boost :: python包装器 另一个受欢迎的选择是Javascript,它被Qt的脚本系统

使用

答案 4 :(得分:2)

Lua和俚语都是为此而发明的。 Lua对沙箱代码有一些简洁的功能,所以如果用户可以提供代码,你可以尝试限制他们自己射击的能力。

lisp的味道已被用于此(着名的gnu emacs)。

您确实需要考虑嵌入式语言将用于何种类型的事物,然后考虑您可能希望编写该功能的语言类型,阅读其他人编写的代码,并轻松满足自己代码是正确的,或者至少可以轻松地调试它。

答案 5 :(得分:2)

GUILE是GNU无处不在的扩展智能语言。它是Scheme方言(LISP方言)。在您对LISP尖叫之前,请考虑AutoCAD使用LISP作为扩展语言,并且至少有一个主要的秘书文字处理系统使用它,并且秘书可以毫无困难地为他们的特定任务编写扩展。 (如果你不告诉他们他们正在编程,人们似乎并没有意识到编程应该很难。)

答案 6 :(得分:1)

最常见的语言是javascript。有一些好的和简单的(例如,如果你将它与Lua进行比较,那就不是那么简单)来嵌入Javascript解释器。

您还没有说过外部库。像Lua一样,这些javascript系统都是裸体的。没有提供与外部词的通信。这与ruby和python相反,在这里你可以获得一个包含电池的系统,其中包含来自运行时库的数十万个函数

首先阅读:

Why embed JavaScript?

How to embed the JavaScript engine