是否有将C ++表达式转换为MathML或类似语言的库?

时间:2019-03-27 00:32:20

标签: c++

我的程序中有很多计算。现在,我想将这些计算转换为可以作为报告和文档(PDF)一部分的公式。我想100%确定报告与实际代码匹配。我不想做的就是自己解析代码。

在概念验证中,我创建了同时包含表达式的值和字符串的类。

Expression a("a", 7);
Expression b("b", 3);
Expression c("c");
c = a * b;
std::cout << c.formula() << std::endl; // would print "c = a * b"

我不想处理所有情况,例如if,循环……我自己。那么,有没有一个图书馆可以做到这一点?

1 个答案:

答案 0 :(得分:1)

大多数表示公式的方法并不具有每种C ++控制流结构的简洁表示。此外,C ++“数学”与抽象数学方程式不同。 C ++默认整数数学是有界的,浮点数学不是实数,等等。

最好从C ++代码中完全删除数学。有一些计算平台可以将其数学形式的表示形式作为其功能集的一部分。

这也取决于您正在执行的数学类型。如果要进行抽象代数,则可能会使用与进行数字运算模拟不同的程序或引擎。

如果您不想使用第三方程序,在您遇到的情况下,我会写自己的领域特定语言,然后解析它或使用表达式模板来构建它,然后在其中使用表达式树两种方式(一种用于计算,另一种用于显示)。我的方法可能与您所描述的有所不同,但这可能是我的抽象数学偏见所表现出来的。

除非我要进行大量计算(例如,数以千计的方程式),否则其可靠性可能会比仅记录公式低。