Compilation 我可以一次解析/编译ChaiScript脚本并多次调用它吗?

Compilation 我可以一次解析/编译ChaiScript脚本并多次调用它吗?,compilation,evaluation,chaiscript,Compilation,Evaluation,Chaiscript,我正在尝试确定是否可以使用ChaiScript,但到目前为止,我非常担心似乎没有一种方法可以编译脚本供以后使用。例如,如果脚本必须每秒调用数百次,这将是一个问题 所有我找到的例子都引用了一个叫做EVE的C++函数,它把整个脚本作为一个参数并运行它。 那么,可以将编译和运行步骤分开吗?您的评论: 从实验来看,我似乎只是使用eval请求对函数的引用,然后我就可以直接多次调用该函数。这会直接调用编译后的代码吗 这是最好的处理方法。eval将只解析代码一次。当您将一个std::function作为结果并

我正在尝试确定是否可以使用ChaiScript,但到目前为止,我非常担心似乎没有一种方法可以编译脚本供以后使用。例如,如果脚本必须每秒调用数百次,这将是一个问题

所有我找到的例子都引用了一个叫做EVE的C++函数,它把整个脚本作为一个参数并运行它。 那么,可以将编译和运行步骤分开吗?

您的评论:


从实验来看,我似乎只是使用eval请求对函数的引用,然后我就可以直接多次调用该函数。这会直接调用编译后的代码吗


这是最好的处理方法。
eval
将只解析代码一次。当您将一个
std::function
作为结果并调用它时,您将以最有效的方式调用脚本。

从实验来看,我似乎只是使用eval请求对函数的引用,然后我就可以直接多次调用该函数。这会直接调用编译后的代码吗?是的,它可以工作——不幸的是,如果脚本出现问题,异常处理机制在捕获异常时,不会提供有关该问题的任何有用信息。我的观点是正确的——而像“详细信息”和“文件名”这样的字段不会被填充,pretty_print()不会返回有用的信息。不幸的是,我必须将结果字符串分开,才能得到我需要的部分---我不想只向最终用户显示那个漂亮的打印错误。@David在发生错误时,您实际上可以访问整个调用堆栈:但这与stackoverflow问题的主题相去甚远。我建议您将讨论转移到“谢谢”,我已经在那里创建了一个帐户并发布了我的其他问题。