Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++有一种类似C语言的脚本语言解释器吗?_C++_Interpreter_Scripting Language - Fatal编程技术网

C++有一种类似C语言的脚本语言解释器吗?

C++有一种类似C语言的脚本语言解释器吗?,c++,interpreter,scripting-language,C++,Interpreter,Scripting Language,很久以前,我就开始研究动态图形可视化工具、编辑器和算法测试平台——带有节点和圆弧的图形,而不是其他类型的图形。 对于算法测试平台,我需要让用户编写脚本或从文件调用脚本,这将与当前加载的图形交互。可视化工具会在脚本算法访问节点时点亮节点,增加一些人为延迟,以便可视化算法导航和执行任务。 脚本也将被用来添加第三方的功能,我可以使它们作为程序文件夹中的预先存在的脚本,或者在测试和工作之后,在C++中集成到程序中。 我对嵌入到我的程序中的解释器的所有搜索都把我送到了lua; 然后我开始为自己的C类语法脚

很久以前,我就开始研究动态图形可视化工具、编辑器和算法测试平台——带有节点和圆弧的图形,而不是其他类型的图形。 对于算法测试平台,我需要让用户编写脚本或从文件调用脚本,这将与当前加载的图形交互。可视化工具会在脚本算法访问节点时点亮节点,增加一些人为延迟,以便可视化算法导航和执行任务。 脚本也将被用来添加第三方的功能,我可以使它们作为程序文件夹中的预先存在的脚本,或者在测试和工作之后,在C++中集成到程序中。 我对嵌入到我的程序中的解释器的所有搜索都把我送到了lua; 然后我开始为自己的C类语法脚本语言编写自己的递归下降分析器,我计划使用C++语法的子集,以便用我的脚本语言编写的任何代码都可以用任何C++代码复制粘贴。 这是一个有趣的疯狂想法,我一点也不后悔,我有作用域、函数、循环、GOTO、类型安全变量、表达式

但是,现在我正在着手添加类、类方法、继承,一些默认类将是将脚本连接到程序所必需的,我意识到这将花费大量的时间和精力。对于一个有考试要考的未毕业学生的个人项目来说有点太多了……但我仍然渴望完成这个项目

<脚本100%的C++的自订要求是完全必要的,它只是一个小小的漂亮的额外的东西,我可以不用。

现在的问题是,是否有一种类似于c的语法来替代lua,这种语法支持我已经完成的所有工作,以及类和继承?必须能够添加将脚本连接到程序的自定义类

<>我不能假设用户安装了一个完整的C++编译器,所以我不能把它们的脚本编译成运行时的DLL来加载和调用它,尽管我可以即时地编译< C++ > 解析C++是很难的。见鬼,解析C很难。这是很难得到正确的,有很多边缘的情况。谢天谢地,有一些库可以为您获取代码,甚至编译代码

利勃朗

LBCLANG为C++提供了很多解析工具。这是一个好的、干净的库,它将解析clang编译器本身将解析的任何内容。这是一个很好的开端

LBCLANG提供了一个JIT编译工具,允许您在运行时编写和编译C++。请参见此处,了解其功能和使用方法的概述。它非常通用,功能非常强大,用户编写的代码应该很快

GCC在程序运行时调用libgccjit进行实时编译。LIGBGCJIT是一个C库,但是还有一个由库维护者提供的C++包装器。它可以编译抽象语法树并在运行时链接它们,尽管它仍然处于Alpha模式

cppast

如果你不想使用LILCLAN,还有一个正在开发的库叫做CPHOST,它是C++语法分析器,它将给你C++代码的抽象语法树表示。不幸的是,它不会解析函数体

其他工具

如果有人知道在运行时编译或解释C++的其他库,我鼓励他们更新这个帖子,或者评论他们,这样我就可以更新它了!P>实时编译C++ 解析C++是很难的。见鬼,解析C很难。这是很难得到正确的,有很多边缘的情况。谢天谢地,有一些库可以为您获取代码,甚至编译代码

利勃朗

LBCLANG为C++提供了很多解析工具。这是一个好的、干净的库,它将解析clang编译器本身将解析的任何内容。这是一个很好的开端

LBCLANG提供了一个JIT编译工具,允许您在运行时编写和编译C++。请参见此处,了解其功能和使用方法的概述。它非常通用,功能非常强大,用户编写的代码应该很快

GCC在程序运行时调用libgccjit进行实时编译。LIGBGCJIT是一个C库,但是还有一个由库维护者提供的C++包装器。它可以编译抽象语法树并在运行时链接它们,尽管它仍然处于Alpha模式

cppast

如果你不想使用LILCLAN,还有一个正在开发的库叫做CPHOST,它是C++语法分析器,它将给你C++代码的抽象语法树表示。不幸的是,它不会解析函数体

其他工具

如果有人知道在运行时编译或解释C++的其他库,我鼓励他们更新这个帖子,或者评论他们,这样我就可以更新它了!p> 这里有一些东西可以让你在y中嵌入类似C的脚本语言 我们的应用程序和其他一些很酷的东西:

有很多文档:


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

有很多文档:


你能把C++编译器加载到你的应用程序的一部分吗?否则我会坚持使用lua。也许这对你有用:Emscripten也许?Javascript?这有点像…:-这似乎是C++脚本实现的一个实现:你能把C++编译器加载到应用程序的一部分吗?否则我会坚持使用lua。也许这对你有用:Emscripten也许?Javascript?这有点像…:-这似乎是C++脚本的实现:解析C++是很难的,这是一个严重的轻描淡写。还有运行时编译的C++和替代方法:我也会尝试这个路线,但是与使用CasScript相比,我接受的答案是让用户脚本接口与程序中存在的类将是一个混乱……我想。实际上我不知道如何做。解析C++是很难的,这是一个严重的轻描淡写。还有运行时编译的C++和替代方案:我也会尝试这个路线,但是比起使用CasScript,我接受的答案是让用户脚本接口与程序中存在的类将是一个混乱的……我想。实际上,我不知道该怎么做。它不允许我用C++作为脚本语言,它提供了一个类似C语法的语法分析器,可以嵌入到C++程序中。说它足够接近我的需求,看起来像集成我的类的接口是很简单的,这是我最重要的要求。它不允许我使用C++作为脚本语言,它提供了一个类似C语法的语法分析器,可以嵌入到C++程序中。也就是说,它非常接近我的需求,看起来将接口集成到我的类非常容易,这是我最重要的需求。