What is ExpressionEval ?
ExpressionEval is an Expression Evaluator back-end component. It allows you to evaluate arbitrary string expressions sush as: logical (Or, And, Not, Xor), comparison (=, <>, <=, <, >, >=) or calculation (+, -, *, /) in an application. Variables and functions can also be used in expressions. The component is configurable: double decimal separator, string tag,… This component is a library provided in .NET Standard 2.0 and in .NET Framework 4.5.
The component is open-source with full functionnalities.
The code source is here: https://github.com/Pierlam/ExpressionEval
- Input expression as a simple string,
- The expression can be simple or complex,
- Can have nested expression, one or more,
- Comparison operator possible: Or, And, Xor, Not,
- Comparison operator can be defined in english (Or, And, Xor, Not) or in french (Ou, Et, Oux, Non),
- Logical operator possible: =, <>, >, <, >=, <=,
- Calculation operator managed: +, -, * /,
- Value type managed: string, int, double, bool,
- Predefined boolean value can be used: true/False (in english) vrai/faux (in french),
- You can use variable, one or more,
- You can use function call, with parameters or not,
- Wrong expression error management.
Here is a basic general sample which demonstrate how to use the component.
1/ you provide your expression to the component as a simple string, for example:
(a=b) and (c>12)
2/ The ExpressionEval component parse the expression.
3/ you have to define and set all used variables present in the expression, for example:
a:=12 b:=12 c:=15
4/ Then the component can evaluate the expression and return the result: true.
So the corresponding source code is :
// Using clauses using Pierlam.ExpressionEval; // Create the component ExpressionEval evaluator = new ExpressionEval(); // 1-Create the expression to use string expr= "(a=b) and (c>12)"; // 2-Parse, Decode the expression evaluator.Parse(expr); // 3-Create variable and provide values evaluator.DefineVarInt("a", 12); evaluator.DefineVarInt("b", 12); evaluator.DefineVarInt("c", 15); // 4-Execute the expression ExecResult execResult= evaluator.Exec(); // Get the result and display it: Console.WriteLine("Execution Result: " + execResult.ResultBool);
After execution, the console output displays:
Execution Result: true
Because the evaluation of the expression: (12=12) and (15>12) return true.
To use ExpressionEval in your application, get the component from nuget (the nuget link is below).
Get the component
The last available version is: 0.8.
The library is provided in two targets: .NET Standard 2.0 and .NET 4.5
You can get the packet from nuget here: nuget.org/packages/Pierlam.ExpressionEval
See the documentation of the component :here.
Some code samples are available on github: https://github.com/Pierlam/ExpressionEvalSamples
This github repository contains a Visual Studio solution within several examples.