2012-12-16 47 views
4

我有一個C++程序,它創建大量存儲在標準C++容器中的數據。我希望能夠從我的二進制程序中啓動一個C++解釋器,並打開一個REPL會話來處理這些數據。最好,我想使用現代C++ 11語法。這可行嗎?在Visual Studio環境中開發是否可行?嵌入式C++解釋器,用於編譯程序中的數據操作

我聽說過Ch,但它似乎只實現了C++ 98語法的一小部分。

我聽說過Cling,但如果我的記憶爲我服務,Cling的頂級開發人員之一在Google TechTalks 2012中回答了這個問題。這是否準確?

回答

1

在您的shell提示下還有另一個REPL。它是用普通的C++樣板和調用編譯器來裝飾代碼片段的bash腳本。它有一些額外的庫,使它像AWK一樣工作,並處理範圍/ FP表達式。不確定是否易於嵌入。 Link。我知道很快它會內置處理大內存表(類似db)。從文檔的例子:

// Classic pipe. Alogorithms are from std:: 
scc 'vector<int>{3,1,2,3} | sort | unique | reverse' 
{3, 2, 1} 

// Assign 42 to 2..5 
scc 'vint V=range(0,9); range(V/2, V/5) = 42; V' 
{0, 1, 42, 42, 42, 5, 6, 7, 8, 9} 

// Find (brute force algorithm) maximum of `cos(x)` in interval: `8 < x < 9`: 
scc 'range(8, 9, 0.01) * cos || max' 
-0.1455 

// Integrate sin(x) from 0 to pi 
scc 'auto d=0.001; (range(0,pi,d) * sin || add) * d' 
2 
+0

有趣,但它似乎只是一個簡單的C++表達式計算器。我沒有看到嵌入選項和與編譯程序中的數據交互的能力。 –

1

雖然不是一個翻譯,從RuntimeCompiledC++Console可能會適合您的需要(可能需要一點點努力得到的更好的REPL編輯工作),特別是因爲它使用內置的編譯器系統,你將能夠獲得C++ 11(儘管在Windows上,我建議通過MSVC強制它到GCC/Clang以獲得更好的C++ 11支持)。

作爲額外的好處,它運行得比解釋代碼快得多。

+0

這是一個有趣的方法,但需要使用IDE進行REPL會話 - 不是一個表演停止者。主要的不便是需要通過系統表進行儀表。很少有文檔可用,因此很難評估RuntimeCompiledCPlusPlus的適用性。 –

+0

順便說一句,這讓我意識到,在Visual Studio中的編輯和繼續模式可能是我的問題的粗略解決方案。謝謝! –