是否有解析字符串以创建C#func的工具?

use*_*653 3 c# string parsing function string-parsing

我需要知道是否有任何库允许我,给定一个表示数学函数的字符串,比如说x^2+x+1,(不关心字符串格式,任何对我有用的)会生成一个C#func这将代表所述功能.

Chr*_*air 9

已经使用FLEE(快速轻量级表达评估器)一段时间了,它一直很好用.他们有一个版本,可以维护Silverlight的大部分功能.它旨在完全满足您的要求和更多.

http://flee.codeplex.com/

Flee是.NET框架的表达式解析器和评估器.它允许您在运行时计算字符串表达式的值,例如sqrt(a ^ 2 + b ^ 2).它使用自定义编译器,强类型表达式语言和轻量级codegen将表达式直接编译为IL.这意味着表达式评估非常快速有效.

根据您的评论评估示例x^2+x+1(用记事本编写):

public Func<double, double> CreateExpressionForX(string expression)
{

    ExpressionContext context = new ExpressionContext();
    // Define some variables
    context.Variables["x"] = 0.0d;

    // Use the variables in the expression
    IDynamicExpression e = context.CompileDynamic(expression);


    Func<double, double> expressionEvaluator = (double input) =>
    {
        content.Variables["x"] = input;
        var result = (double)e.Evaluate();
        return result;
    }

    return expressionEvaluator;
}



Func<double, double> expression = CreateExpressionForX("x^2 + x + 1");

double result1 = expression(1); //3
double result2 = expression(20.5); //441.75
double result3 = expression(-10.5); //121.75

Func<double, double> expression2 = CreateExpressionForX("3 * x + 10");

double result4 = expression2(1); //13
double result5 = expression2(20.5); //71.5
double result6 = expression2(-10.5); //-21.5
Run Code Online (Sandbox Code Playgroud)