我正在拼命寻找快速, C-like语法,易于嵌入,易于包装脚本语言嵌入我的C ++游戏。
到目前为止,我已经尝试过:
我也曾调查过:
所以:
答案 0 :(得分:4)
您可能会考虑使用JavaScript。 V8脚本引擎可以嵌入到您的程序中,并且有关于如何expose your types的文档。
答案 1 :(得分:3)
对于类C语法,结帐
可能不适合你,但是因为这个问题可能会出现其他人会觉得有趣的替代品列表,我提供给你QtScript,它给你一个类似Javascript的语法。包装可以很简单,但你需要采用Qt框架来完成它,特别是信号和插槽的概念。
还有来自Firefox的JS引擎SpiderMonkey。
答案 2 :(得分:3)
您可能对Dao(http://daovm.net,https://github.com/daokoder/dao)感兴趣。
Dao在标准C中实现,具有最小依赖性(如果排除可选模块和工具)。它重量轻,效率高,可以很好地支持嵌入和扩展。它用于调用C函数的接口不基于堆栈。这是一个简单的例子:
#include "stdio.h"
#include "daoValue.h"
static void Square( DaoProcess *proc, DaoValue *param[], int nparam )
{
daoint num = param[0]->xInteger.value;
DaoProcess_PutInteger( proc, num*num );
}
int DaoOnLoad( DaoVmSpace *vmspace, DaoNamespace *nspace )
{
DaoNamespace_WrapFunction( nspace, Square, "Square( num : int ) => int" );
return 0;
}
您可能会注意到没有用于检查包装函数中参数类型的样板代码。这是因为此函数注册为Square(num:int)=>int
,这意味着此函数只能接受整数作为参数,并且由Dao运行时保证。
您可能也有兴趣知道它还有一个基于Clang的工具,用于自动/半自动生成C / C ++绑定。
免责声明:我是这种语言的作者。
答案 3 :(得分:2)
你可以通过像Cling这样的东西来使用C ++。
您可以获得熟悉的语法并轻松与静态C ++程序集成。
答案 4 :(得分:1)
我使用python作为脚本语言借调,我之前在我的程序(不是游戏)中使用boost python并且对它非常满意。如果您想尝试创建自己的脚本,可以尝试boost spirit
答案 5 :(得分:1)
除了其他人的建议之外,还有Cling被认为是实验性的。编写脚本语言并不容易,但现在你可以使用LLVM,至少是后端。 N. Wirth在旧的“算法+数据结构=程序”中简要讨论了编程语言设计(但请检查内容主题,在最新版本中删除了该章节),如果您在Google上搜索作者,那么'最后肯定会与其他一些关于这个主题的出版物结束。
答案 6 :(得分:1)
您可能对ObjectScript
感兴趣ObjectScript,简称OS,是一种新的编程语言。它是免费的,跨平台的,轻量级的,可嵌入的和开源的。它结合了多种语言的优点,包括:JavaScript,Lua,Ruby,Python和PHP。操作系统具有Javascripts的语法,来自lua的“多重结果”功能,来自Ruby的语法shugar以及来自PHP和Ruby的魔术方法 - 甚至更多!
使用ObjectScript的最小程序可能是这样的
#include <objectscript.h>
using namespace ObjectScript;
int main(int argc, char* argv[])
{
OS * os = OS::create(); // craete ObjectScript instance
os->require("main.os"); // run ObjectScript program
os->release(); // release the ObjectScript instance
return 0;
}
答案 7 :(得分:0)