我将首先描述问题,然后在图书馆方面描述我目前所看到的问题。
在我的应用程序中,我们有一组始终可用的变量。例如:TOTAL_ITEMS,PRICE,CONTRACTS,ETC(我们大约有15个)。应用程序的客户端希望使用这些变量执行和显示某些计算。到目前为止,我一直在不断地将这些计算添加到应用程序中。这是痛苦的屁股,我想通过创建模板使其更通用,用户可以指定应用程序将解析和计算的一组公式。
以下是一个案例:
total_cost = CONTRACTS*PRICE*TOTAL_ITEMS
因此,希望为用户在模板文件中定义类似的内容:
total_cost = CONTRACTS*PRICE*TOTAL_ITEMS
和一些元日期,就像屏幕上显示它一样。因此,他们将使用屏幕指定公式。该文件将包含许多这种性质的公式。
有人会建议什么对这项任务更好,以及参考,例子,链接?
如果问题不清楚,请告诉我,我会尝试进一步澄清。
谢谢,
萨莎
答案 0 :(得分:0)
答案 1 :(得分:0)
如果你有一个固定数量的变量,调用解析器可能有点过分。虽然精神很酷,但我一直想在项目中使用它。
我可能只是将字符串标记化,按名称键入变量的映射(假设所有变量都是整数):
map<const char*,int*> vars;
vars["CONTRACTS"] = &contracts;
...
然后使用简单的后缀计算器函数来进行实际数学运算。
编辑:
看看MathEval,它似乎完全符合你的要求;设置变量并使用这些变量评估数学函数。我不确定您为什么要在语法分析器级别创建解决方案。您是否有MathEval无法满足的要求?
答案 2 :(得分:0)
我不知道matheval,但是boost :: spirit可以非常有效地为你做到这一点:见there。
如果您正在使用模板元编程,您可能需要查看Boost::Proto,但将需要一些时间才能开始使用它。