2016-06-12 49 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

感謝您的建議,但不幸的是,我想編譯的字符串在運行時纔會知道,因爲我期望它們來自用戶輸入。我不認爲口譯員的表現足夠滿足我的需求。 –

相關問題