我需要一个简单的解释器,它将执行简单的表达式/语句的执行(评估),并且还可以从主C ++应用程序调用函数。目前我不需要编写应用程序的脚本,但以后可能会有用。
对于其他团队成员来说,从Source Repository中提取我的应用程序并构建它也不需要安装其他应用程序,库等。 搜索令人惊叹的选项,如:Python(通过Boost和/或Python API),Lua,Guile,TinyScheme。
我最接近Python,但是使用Boost,构建Python库,将主应用程序与Python连接起来的复杂任务使得这个选择太过分了,也许我错了。
此请求应该有一个简单的解决方案,您的经验和建议是什么?
答案 0 :(得分:4)
您已经列出的两个很棒的选项是Python和Lua。以下是您需要考虑的一些权衡因素:
如果您预见到将来需要编写脚本,那么尽早构建脚本引擎是一个好主意,因为它可能会为您开发一些有趣的可能性。上面列出的两个选项都很好,你可以毫不费力地嵌入其中任何一个。
答案 1 :(得分:3)
如果您只想评估算术表达式,请尝试使用ae这个Lua的简单接口来完成该任务。
答案 2 :(得分:2)
无论您选择哪种脚本语言(我可能会投票选择Python),您都可以考虑使用SWIG(www.swig.org)来减轻与C ++接口的负担。虽然通常用于为python(或ruby,lua,guile,以及其他许多其他人)构建C ++扩展,但它也可用于帮助嵌入。
你曾经提到过boost :: python,它肯定是一个全功能的选项,并允许更接近的Python / C ++集成(特别是涉及虚拟功能的地方)。但是,根据我的经验,SWIG更易于集成,与大量脚本语言一起使用,而对于python,则由Python的distutils本身支持。
答案 3 :(得分:1)
Guile易于嵌入和扩展,并且如果是强大的编程语言则可以设计
您可以编译libguile并将其添加到lib目录中的存储库中,或者为guile添加源代码并在用户编译项目时进行编译。
但我不试图在Windows上使用guile。