Нужен интерпретатор формул for.Net [закрыто]

Я ищу интерпретатор формул, который я могу использовать в приложении c#. Он должен иметь возможность интерпретировать строку следующим образом:

max(1+2, 4) * x

нашел написание быстрого интерпретатора формул (codeproject.com) что почти делает то, что мне нужно, но не позволяет использовать функции с несколькими параметрами. Возможно, я мог бы добавить к нему эту функциональность, но мне просто интересно, существует ли что-то подобное.

спасибо

3 ответов


пара, которую я использовал в прошлом без проблем:


вы можете создать очень эффективный интерпретатор, разбирая и заменяя определенные функциональные ключевые слова, такие как max С математика.Макс!--5--> а то динамическое создание и выполнение формулы в C# класс и метод. Таким образом, на самом деле вы будете анализировать и упаковывать формулу и позволять компилятору C# интерпретировать и выполнять ее.

Итак, принимая ваш образец формулы max(1+2, 4) * x превратится в:

public class MyFormula
{
    public double calc(double x)
    {
        return Math.Max(1+2, 4) * x;
    }
}

что вы хотели скомпилируйте на лету, а затем выполните для связанной статьи. Вам все равно нужно проанализировать и передать значение x, конечно.


давным-давно в одном проекте мне пришлось создать какой-бронирование с формулами, и я использовал VsaEngine. Чтобы использовать этот движок, вам нужно добавить ссылку на Microsoft.JScript. Вот пример:

код для использования очень прост, просто замените параметры формулы, такие как:

string formula = "x+y";
formula=  formula.Replace("x","100").Replace("y","200");
string result = CalculateFormula(formula);

и вот основной метод, CalculateFormula:

public string CalculateFormula(string evaluationString)
{ 
      VsaEngine en = VsaEngine.CreateEngine();
      Object result = Eval.JScriptEvaluate(evaluationString, en);
      return result.ToString();
}

С помощью этого вы можете создать свой собственный движок интерпретатора формул.