6

有谁知道比 NCalc 更新的表达式评估器?最后一个版本是在 2011 年,并且(非常)快速的 Google 搜索几乎没有返回任何我能看到的结果。

4

5 回答 5

11

我知道这是一个迟到的回应,但为了其他人的利益,也许是为了你自己。你看过罗斯林吗?我相信微软现在正在自己使用它。您可以传递简单的 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"));
于 2014-04-02T07:35:03.990 回答
5

github 上有一个 fork,是最新的。

目前我不知道质量是否更好。

于 2018-03-07T15:00:24.863 回答
2

我完全理解这个答案有多晚,但是我想提出我的解决方案,因为我相信如果有人希望跨多个平台使用表达式,它可以在使用NCalc的公认答案之上添加更多内容。

--更新--

我已经为 C# 创建了一个解析器,并计划在接下来的几个月里为 Java 和 Swift 实现它。这意味着您可以在多平台上评估表达式,而无需针对每个平台进行调整。

虽然 Java 和 Swift 是计划好的,但它从来没有成为一个完全成熟的版本。相反,现在支持.NET Standard启用对Xamarin应用程序的支持。

--结束更新--

Expressive 是该工具,可在以下位置获得: GitHubNuget

该站点上有大量文档,但为了防止链接失效,这里有一个如何使用它的示例:

变量支持

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的副本。我已经复制了它以防链接失效。

于 2016-12-09T13:11:35.303 回答
0

我知道这是一个非常晚的回应(晚了 7 年)

有一个仍在开发中的分叉,可在此处获得: https ://github.com/ncalc/ncalc

于 2020-11-22T11:57:04.120 回答
0

聚会迟到了,但这里有一个定期更新,还读到它优于 NCalc:

https://www.nuget.org/packages/Jace/

希望能帮助到你。

于 2020-04-13T20:59:39.527 回答