有谁知道比 NCalc 更新的表达式评估器?最后一个版本是在 2011 年,并且(非常)快速的 Google 搜索几乎没有返回任何我能看到的结果。
5 回答
我知道这是一个迟到的回应,但为了其他人的利益,也许是为了你自己。你看过罗斯林吗?我相信微软现在正在自己使用它。您可以传递简单的 c# 或 vb.net 表达式来评估完整代码。下面的示例显示了一个简单的数学问题。
ScriptEngine roslynEngine = new ScriptEngine();
Roslyn.Scripting.Session session = roslynEngine.CreateSession();
session.AddReference("System.Web");
session.ImportNamespace("System");
session.ImportNamespace("System.Web");
var result = (session.Execute("1 + 1"));
github 上有一个 fork,它是最新的。
目前我不知道质量是否更好。
我完全理解这个答案有多晚,但是我想提出我的解决方案,因为我相信如果有人希望跨多个平台使用表达式,它可以在使用NCalc的公认答案之上添加更多内容。
--更新--
我已经为 C# 创建了一个解析器,并计划在接下来的几个月里为 Java 和 Swift 实现它。这意味着您可以在多平台上评估表达式,而无需针对每个平台进行调整。
虽然 Java 和 Swift 是计划好的,但它从来没有成为一个完全成熟的版本。相反,现在支持.NET Standard
启用对Xamarin
应用程序的支持。
--结束更新--
Expressive 是该工具,可在以下位置获得: GitHub或Nuget。
该站点上有大量文档,但为了防止链接失效,这里有一个如何使用它的示例:
变量支持
var expression = new Expression("1 * [variable]");
var result = expression.Evaluate(new Dictionary<string, object> { ["variable"] = 2);
功能
var expression = new Expression("sum(1,2,3,4)");
var result = expression.Evaluate();
它旨在尽可能地匹配 NCalc,但它增加了对“null”关键字等内容的支持。
这个答案是Expressive answer的副本。我已经复制了它以防链接失效。
我知道这是一个非常晚的回应(晚了 7 年)
有一个仍在开发中的分叉,可在此处获得: https ://github.com/ncalc/ncalc