我正在寻找一个开源库来解析和执行C#中的公式/函数.
我想创建一组从接口派生的对象(即IFormulaEntity),它具有属性/方法/值,并允许用户为这些对象指定公式.
例如,我可能有
public class Employee : IForumulaEntity
{
public double Salary { get; set; }
public void SendMessage(string message)
}
Run Code Online (Sandbox Code Playgroud)
然后允许应用程序用户写一些类似的东西;
Employee person = <get from datasource>
if (person.Salary > 1000)
person.Salary += 1000;
person.SendMessage("Hello");
Run Code Online (Sandbox Code Playgroud)
这"看起来像C#",但它将是一种简化的编程语言.我知道这很有问题.我希望我的用户能够合理(即可以编写自己的Excel公式).
我使用过ANTLR,FSLEX/FSYACC和Managed Babel.所有人都按照你的要求行事,虽然所有人都是免费的,但只有第一个是开源的.
Antlr:http://antlr.org/
FSLEX:http://www.strangelights.com/fsharp/wiki/default.aspx/FSharpWiki/fslex.html
Managed Babel:http://msdn.microsoft.com/en-us/library/bb165963.aspx
查看属于Windows Workflow Foundation的规则引擎功能.
这不是一个人们会想到的地方.但是,作为他们为生成允许Workflow开发人员使用可配置规则和表达式的UI所做的工作的一部分,他们已经想出了一种在自己的应用程序中执行相同操作的方法,即使您没有使用Workflow也是如此一点都不 他们的文档包括在Windows窗体应用程序中托管此功能的示例.