c++ - DSL 的嵌入式脚本引擎

标签 c++ qt dsl embedded-language

我正在从事一个需要嵌入式 DSL 来满足其预期要求的项目。

DSL 将基于用户定义的事件。这是所需语法的模型:

user-defined-event-1 {
    // event body
}

user-defined-event-2 {
    // event body
}

根据事件,我知道的最相似的语言可能是 LSL (from Second Life) .

因此,在阅读了关于 SO 的其他类似问题之后,我想寻求 C++(我在 Qt 中工作)上最好的可嵌入脚本引擎(Ruby、Lua、Python 等),它允许我创建此 DSL。

在我的项目中,我会测试脚本是否正确使用 DSL 语法(至少定义了一个事件)并为用户提供底层脚本引擎的所有功能,如果可能的话,Qt。

嵌入式语言与 Qt 一起工作不是必需的。它可以是孤立的,但也有一些集成会很好。

最佳答案

at least a few Qt-Lua bindings在那里。 Lua 在某种程度上可以执行上面显示的语法;具体来说,{} 表示 Lua 中的表(关联数组),如果您只是将匿名表传递给函数,则不需要括号:

Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> function LengthOfTable(t) print(#t) end
> LengthOfTable ({"a","b","c"})
3
> LengthOfTable {"a","b","c"}
3

Lua 是否真的最适合您的应用程序,当然取决于您的应用程序。无论哪种方式,Lua 都非常容易 (IMO) 嵌入到 C 或 C++ 中。

关于c++ - DSL 的嵌入式脚本引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1591114/

相关文章:

c++ - 如何检测 Windows 是否正在关闭或重新启动

c++ - 如何在 Linux 上的 c 中休眠或暂停 PThread

c++ - 映射多变量/层系统的泛化

c++ - QT 4.3 在线程之间传递类指针

python - 与 Python 的流畅界面

c# - 解释自定义语言

c++ - union float 和整数

c++ - 为什么 C++ 变量声明语法不一致?

c++ - Qt使用离屏渲染的例子

javascript - 创建 DSL 表达式解析器/规则引擎