有没有办法在运行时编译C++代码?

4

我已经为JavaScript编写了一个复杂的数学库,它具有从人类可读的数学表达式字符串生成函数的能力。是否有一种方法在C ++中实现等效的运行时生成函数?


请将此限制为C或C++,否则范围有点宽。 - fuz
@FUZxxl,好了,已经修复了。 - Patrick Roberts
你可以呼叫编译器;)说真的,我认为LLVM团队曾经做过一些C++ JIT工作,你可以研究一下(不过我可能记错了)。 - Jesper Juhl
还有一个 tiny C compiler,可以用来编译和运行 C 代码,但它不能处理 C++,这就是为什么我要求澄清的原因。 - fuz
你可以实现一个C++解释器(虽然需要大量工作)。 - Jesper Juhl
最近我发现了一个嵌入式JavaScript引擎:http://duktape.org/ - Richard Hodges
3个回答

4

FUZxxl的答案是正确的,我建议看一下Clang/LLVM工具。

这里有一个基本的(不太有用)教程文件。还有一个关于在LLVM上编写语言的广泛教程Language on LLVM。你可以在C++应用程序中加载生成的库。

除非你有一个性能关键的组件,否则你可以使用ChaiScript(注意:我与它或作者没有任何关联)


感谢提供这些有用的链接,我会权衡一下我的选择。而且,这个组件将是性能关键的。我之所以要移植这个库,是因为我想提高我的分形生成程序的速度。 - Patrick Roberts

3
你可以执行C++编译器,让它生成共享库并将其加载到你的程序中,在运行时运行C++代码。请注意,具体细节取决于你的工作平台,因为Windows和POSIX有不同的机制来加载共享库。

0
“编译语言的方式”是定义语法,构建解析器、抽象语法树(AST)并解释/编译它。这样做,实际上就是在编写自己的编译器/解释器,非常有趣。如果您想轻松地让它工作,可以看看boost spirit。”

谢谢您的建议,但不幸的是,我想编译的字符串直到运行时才会知道,因为我期望从用户输入中获取它们。我认为解释器的性能不够高,无法满足我的需求。 - Patrick Roberts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接