4

我有一个 C++ 程序,它创建了大量存储在标准 C++ 容器中的数据。我希望能够从我的二进制程序中启动一个 C++ 解释器并打开一个 REPL 会话来操作该数据。最好,我想使用现代 C++11 语法。可行吗?在 Visual Studio 环境下开发是否可行?

我听说过 Ch,但它似乎只实现了 C++ 98 语法的一小部分。

我听说过 Cling,但如果我没记错的话,Cling 的一位顶级开发人员在 2012 年的 Google TechTalks 中对这个问题做出了否定的回答。准确吗?

4

2 回答 2

1

虽然不是解释器,但RuntimeCompiledC++控制台可能会满足您的需求(可能需要一些努力才能成为更好的 REPL 编辑器),特别是因为它使用系统内置编译器,您将能够获得 C++ 11(尽管在 Windows 上我建议将其强制为 GCC/Clang 而不是 MSVC 以获得更好的 C++11 支持)。

作为一个额外的好处,它会比解释代码运行得快很多。

于 2012-12-16T10:02:26.023 回答
1

在您的 shell 提示符下还有另一个 REPL。它是 bash 脚本,它使用通常的 C++ 样板和调用编译器来装饰代码片段。它有一些额外的库使其像 AWK 一样工作并处理范围/FP 表达式。不确定是否易于嵌入。链接。我知道它很快就会内置处理大内存表(类似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
于 2012-12-16T08:42:37.560 回答