【发布时间】:2012-08-31 04:42:34
【问题描述】:
我想将来自用户的表达式作为字符串作为输入,并将其编译为可调用的 c++ 函数。是否有任何工具可以让您轻松做到这一点?
基本上,How do I compile an Expression Tree into a callable method, C#? 似乎与我想做的类似,只是我需要在 c++ 而不是 c# 中执行此操作。
我当然可以使用 lex 和 yacc 制作一种通用的求值器,但我不想每次都解析字符串。基本上这个表达式将在一个关键的内部循环中运行,所以我正在寻找一种在运行时“编译”它的方法。
【问题讨论】:
-
这似乎与 Compile and run C++ code runtime 重复
-
嗯,是的,它是重复的。但是这个问题也没有很好的答案……
-
我会研究 libclang 和 llvm。您应该知道,C# 使这项任务变得异常简单,而在 C++ 中它是劳动密集型的。
-
@owagh 那是因为真的没有一个好的答案。您可以使用重量级解决方案,例如使用外部或嵌入式的实际编译器(例如,LLVM 可用于嵌入式 JIT 编译器),或者您可以实现自己的字节码编译器和评估器(或使用其他人的;Lua 是实现为可嵌入的字节码编译器/评估器。当然它只处理 Lua 语言)。
-
也许this 就是您要找的。 -尼克
标签: c++ compilation runtime expression