我需要实现数学表达式解析器。它必须评估以下表达式:
首先我想使用JScript
eval函数。但它不是不安全的,也不是电力运营商。中学我在互联网上搜索了一些图书馆。但事实证明,我不能使用它们。所以问题如下:JScript eval函数调用的安全性如何,是否有任何标准的.net工具可用于我的任务?如果不是,哪种算法最好?截至目前,我正在尝试构建表达式树,然后对其进行编译以获得结果。
答案 0 :(得分:1)
您可以尝试NCalc
Dictionary<string, int> dict = new Dictionary<string, int>() {
{"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();
答案 1 :(得分:0)
或者jep.net - 免责声明:我是作者。