Best and shortest way to evaluate mathematical expressions
.net, c#, evaluation, expression
Solution
Further to Thomas's answer, it's actually possible to access the (deprecated) JScript libraries directly from C#, which means you can use the equivalent of JScript's `eval` function.
using Microsoft.JScript; // needs a reference to Microsoft.JScript.dll
using Microsoft.JScript.Vsa; // needs a reference to Microsoft.Vsa.dll
// ...
string expr = "7 + (5 * 4)";
Console.WriteLine(JScriptEval(expr)); // displays 27
// ...
public static double JScriptEval(string expr)
{
// error checking etc removed for brevity
return double.Parse(Eval.JScriptEvaluate(expr, _engine).ToString());
}
private static readonly VsaEngine _engine = VsaEngine.CreateEngine();
Problem
There are many algorithms to evaluate expressions, for example: - By Recursive Descent - Shunting-yard algorithm - Reverse Polish notation Is there any way to evaluate any mathematical expression using C# .net reflection or other modern .net technology?