是否有C语言的C语法脚本语言解释器?

问题描述 投票:1回答:2

我很久以前就开始研究动态图形可视化器,编辑器和算法测试平台(带有节点和弧的图形,而不是其他类型)。对于算法测试平台,我需要让用户编写脚本或从文件中调用脚本,该文件将与当前加载的图形进行交互。可视化工具可以在脚本算法访问节点时点亮节点,添加一些人工延迟,以便可视化算法导航和执行操作。脚本也将被用于添加第三方功能,我可以将其作为程序文件夹中的预先存在的脚本提供,或者只要它们经过测试和工作就可以在c ++中集成到程序中。

我所有搜索到我的程序中的口译员都把我送到了lua;然后我开始手写我自己的递归下降解析器,用于我自己的C语法脚本语言(我计划使用C ++语法的一个子集,以便用我的脚本语言编写的任何代码都可以在任何C ++代码中进行复制粘贴。一个有趣的疯狂想法,我不后悔,我有范围,功能,周期,gotos,类型安全变量,表达式。

但是现在我正在接近添加类,类方法,继承(将脚本连接到程序需要一些默认类),我意识到这需要花费大量的时间和精力。对于一个没有考试的学生的个人项目有点太多,考试可以学习...但我仍然希望完成这个项目。

脚本与C ++ 100%兼容的自我强制要求几乎是必要的,它只是一个额外的小东西,我可以不用。

现在的问题是,有没有替代lua的c语法支持我已经完成的所有加上类和继承? (能够添加将脚本连接到程序的自定义“类”是必需的)

(我不能假设用户安装了完整的c ++编译器,所以我不能在运行时编译他们的“脚本”作为加载和调用它的DLL,虽然我能告诉我)

c++ interpreter scripting-language
2个回答
1
投票

这里有一些东西可以让你在你的应用程序中嵌入类似C语言的脚本语言(以及其他一些很酷的东西):

http://chaiscript.com/

有很多文档:

https://codedocs.xyz/ChaiScript/ChaiScript/


5
投票

即时编译C ++

解析C ++很难。哎呀,解析C很难。很难做到正确,并且有很多边缘案例。值得庆幸的是,有一些库可以获取代码,甚至可以为您编译。

libclang

libclang为解析c ++提供了很多工具。它是一个很好的,干净的库,它将解析clang编译器本身将解析的任何内容。 This article here是一个很好的首发

libclang提供了一个JIT编译工具,允许您在运行时编写和编译C ++。请参阅this blog post,了解它的用途和使用方法。它非常通用,非常强大,用户编写的代码应该很快。

GCC also provides a library在程序运行期间调用libgccjit进行即时编译。 libgccjit是一个C库,但是库维护者也提供了一个C ++包装器。它可以编译抽象语法树并在运行时链接它们,尽管它仍处于Alpha模式。

cppast

如果您不想使用libclang,那么还有一个名为cppast的正在开发的库,它是一个C ++解析器,它将为您提供c ++代码的抽象语法树表示。不幸的是,它不会解析函数体。

Other tools

如果有人知道在运行时编译或解释C ++的任何其他库,我鼓励他们更新这篇文章,或者评论它们以便我可以更新它!

© www.soinside.com 2019 - 2024. All rights reserved.