【发布时间】:2019-04-25 18:27:54
【问题描述】:
我很久以前就开始研究动态图形可视化器、编辑器和算法测试平台(具有节点和弧线的图形,而不是其他类型的图形)。 对于算法测试平台,我需要让用户编写脚本或从文件中调用脚本,这将与当前加载的图形进行交互。可视化器会在脚本算法访问节点时执行诸如点亮节点之类的操作,添加一些人为延迟,以便可视化算法导航和执行操作。 脚本也将用于添加第三方功能,我可以在程序文件夹中将其作为预先存在的脚本提供,或者在它们经过测试和工作后在 C++ 中集成到程序中。
我对嵌入程序的解释器的所有搜索都将我发送到 lua; 然后我开始为我自己的类 C 语法脚本语言(我计划使用 C++ 语法的一个子集,以便用我的脚本语言编写的任何代码可以复制粘贴到任何 C++ 代码中)手写我自己的递归下降解析器。 这是一个有趣的疯狂想法,我一点也不后悔,我有范围、函数、循环、goto、类型安全变量、表达式。
但是现在我正在接近添加类、类方法、继承(一些默认类对于将脚本与程序接口是必需的),我意识到这将花费大量时间和精力。对于一个有考试要学习的未毕业学生的个人项目来说有点太多了……但我仍然希望完成这个项目。
脚本 100% 与 C++ 兼容的自我要求几乎是必要的,这只是一个不错的额外的东西,我可以不用它。
现在的问题是,是否有替代 lua 的替代方法,它具有类似 c 的语法,支持我已经完成的所有操作以及类和继承? (必须能够将接口脚本的自定义“类”添加到程序中)
(我不能假设用户安装了完整的 c++ 编译器,所以我不能在运行时将他们的“脚本”编译为 dll 来加载和调用它,尽管我希望我可以)
【问题讨论】:
-
你能加载一个 C++ 编译器作为你的应用程序的一部分吗?否则我会坚持使用 lua。
-
也许这对你有用:chaiscript.com
-
Emscripten 也许?
-
Javascript?它有点像 C... :-P en.wikipedia.org/wiki/List_of_ECMAScript_engines
-
这似乎是 C++ 脚本的实现:github.com/tapika/cppscriptcore
标签: c++ interpreter scripting-language