Нужен интерпретатор формул 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();
}
С помощью этого вы можете создать свой собственный движок интерпретатора формул.