2016-06-12 96 views
3

我已经为JavaScript编写了一个复杂的数学库,它具有从人类可读的数学表达式字符串中生成函数的功能。有没有办法在C++中实现相当于运行时生成的函数?有没有什么方法可以在运行时编译C++代码?

+0

请限制它为C或C++,否则它有点宽泛。 – fuz

+0

@FUZxxl在那里,它是固定的。 –

+0

你可以调用编译器;)。说真的,我认为LLVM人员在某些时候做了一些C++ JIT工作,你可以看看(虽然我可能记错了)。 –

回答

3

FUZxxl的回答是对的,我建议看看Clang/LLVM设施。

有一个基本的(不太有用)教程file here。以及编写您的Language on LLVM的广泛教程。您可以将您生成的库加载到C++应用程序中。

除非,你有一个性能的关键组件,可以采用使用ChaiScript的(注:我在没有办法隶属于它或作者)

+0

感谢您的有用链接,我会衡量我的选择。是的,组件将是性能至关重要的。我移植图书馆的原因是因为我想提高分形生成程序的速度。 –

3

您可以执行C++编译器,让它生成共享库并将其加载到程序中以在运行时运行C++代码。请注意,详细信息取决于您正在使用的平台,因为Windows和POSIX具有加载共享库的不同机制。

0

的“编译语言的方式”是定义你的语法,构建一个解析器,一个AST(抽象语法树)并解释/编译它。当你这样做时,你基本上是编写你自己的编译器/解释器,这很有趣。如果你想让它轻松工作,你可以看看增强的精神。

+0

感谢您的建议,但不幸的是,我想编译的字符串在运行时才会知道,因为我期望它们来自用户输入。我不认为口译员的表现足够满足我的需求。 –

相关问题