代码之家  ›  专栏  ›  技术社区  ›  FreeMemory

将编程语言嵌入程序[关闭]

c
  •  10
  • FreeMemory  · 技术社区  · 14 年前

    我想在我正在编写的应用程序中添加某种程度的“脚本能力”。大致来说,我希望有一种方法可以将编程语言API嵌入到我的程序中。我看过Tinypy,但我担心——考虑到它的尺寸很小——它可能会受到欺骗性的限制(即,它看起来和感觉像蟒蛇,但缺少成熟的蟒蛇的许多特性)。

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

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

    对于要使用的API/库,有人有什么建议吗?它既轻量又功能全面,并且具有相对容易使用或易于理解的C库?

    谢谢!

    7 回复  |  直到 14 年前
        1
  •  5
  •   Jacob Mattison    14 年前

    你可能想看看 SpiderMonkey 这将允许您在C程序中嵌入一个javascript引擎。

        2
  •  16
  •   Ignacio Vazquez-Abrams    14 年前

    Lua 是一个流行的选择。

        3
  •  3
  •   David Thornley    14 年前

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

        4
  •  2
  •   Martin Beckett    14 年前

    您可以将“c”与 ch 工具包。
    正如您所说,python很好,特别是如果您可以使用boost::python包装器。
    另一个流行的选择是javascript,它被qt的脚本系统使用。

        5
  •  2
  •   nategoose    14 年前

    Lua和俚语都是为这个发明的。Lua对沙盒代码有一些很好的特性,所以如果用户可以提供代码,你可以尝试限制他们的能力,让他们自己的脚。

    Lisp的味道已经被用于此目的(在GNU Emacs中很有名)。

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

        6
  •  2
  •   John R. Strohm    14 年前

    GUILE 是GNU无处不在的智能扩展语言。它是一种图式方言(lisp方言)。在你大喊Lisp之前,考虑一下AutoCAD使用Lisp作为扩展语言,并且至少有一个主要的秘书文字处理系统使用它,秘书们在为他们的特定任务编写扩展时完全没有问题。(似乎人们没有意识到,如果你不告诉他们他们正在进行编程,那么编程应该是很困难的。)

        7
  •  1
  •   Lothar    14 年前

    最常见的语言是javascript。有一些好的和简单的(如果您将它与Lua进行比较,就不可能真正的简单)嵌入到Javascript解释器中。

    关于外部图书馆,你什么都没说。像Lua一样,这些JavaScript系统是裸的。没有太多的信息可以与外界交流。这与Ruby和Python形成了鲜明对比,Ruby和Python提供了一个包含电池的系统,运行时库提供了大量函数。

    从阅读以下内容开始:

    Why embed JavaScript?

    How to embed the JavaScript engine