数学表达式解析器

可能重复:
.NET中是否有字符串数学计算器?

我需要实现数学表达式解析器。 它必须评估以下表达式:

  • 基本运算符(+, – ,*,/,%[模运算符])
  • 优先操作如2 *(4-1)
  • sin,cos,tan,cotan,log(base,number)函数
  • 允许像罪一样的成分(cos(log(2,32)))
  • 电源操作如2 ^ 5

首先,我想使用JScript eval函数。 但这不是不安全的,也不是电力运营商。 中学我在互联网上搜索了一些图书馆。 但事实certificate,我不能使用它们。 所以问题如下:JScript eval函数调用的安全性如何,是否有任何标准的.net工具可用于我的任务? 如果没有,哪种算法最好? 截至目前,我正在尝试构建表达式树,然后编译它以获得结果。

你可以尝试NCalc

 Dictionary dict = new Dictionary() { {"a",1} , {"b",4} }; NCalc.Expression exp = new NCalc.Expression("a + b / 2 * myfunc(3.14)"); exp.EvaluateFunction += (s, e) => { var d = (double)e.Parameters[0].Evaluate(); e.Result = Math.Cos(d); }; exp.EvaluateParameter += (s, e) => { e.Result = dict[s]; }; var result = exp.Evaluate(); 

或者jep.net – 免责声明:我是作者。