2

我需要在我的 C/C++ 程序中嵌入一些东西来解释 x*log(x) 或 sin(x) 之类的公式。我想要一些小而简单的东西,否则我可以嵌入 Python、Ch、Scheme 或你的名字。但我需要的只是简单的公式。我没有运气在网上搜索过。虽然我不需要它,但性能(例如,使用简单的 JIT)将是一个奖励。

4

5 回答 5

5

使用逆波兰表示法。有几种算法:
1. 解析方程并转换为中缀符号(这很容易,您只需识别符号链)
2. 使用 Dijkstra 的 shunting-yard 算法将中缀转换为 RPN。
3.使用DFS计算表达式

我敢肯定网上有很多实现。几年前我什至写了自己的(没有功能特性)。

于 2010-07-26T09:16:07.100 回答
4

处理这类事情的一种优秀的可移植语言是 JavaScript。有多种实现可供选择,对于 C 和 C++,至少有:

另一个易于嵌入的选择可能是Lua。使用已经存在的东西肯定比重新发明表达式解析器更容易。

于 2010-07-26T09:07:29.963 回答
4

Lua - 是迄今为止最简单的嵌入和使用,并且有一个非常小且非常快速的 JIT 版本:http: //luajit.org/

于 2010-07-26T09:21:48.687 回答
0

编写自己的简单堆栈机来计算这些公式怎么样?

于 2010-07-26T10:58:43.160 回答
0

FFmpeg 有一个非常不错的,你应该去看看。

于 2010-07-26T10:41:11.130 回答