Skip to content

High-Performance C# Logical Expression Parser and Evaluator. MicroExpressionEvaluator is a blazing-fast, lightweight .NET library for parsing and evaluating complex nested logical expressions. Designed for real-time applications.

License

Notifications You must be signed in to change notification settings

webermania/MicroExpressionEvaluator

Repository files navigation

MicroExpressionEvaluator

High-Performance C# Logical Expression Parser and Evaluator

MicroExpressionEvaluator is a blazing-fast, lightweight .NET library for parsing and evaluating complex nested logical expressions in C#. Designed for real-time applications, it delivers unparalleled performance with minimal CPU usage, making it perfect for dynamic rule evaluation in financial modeling, gaming logic, automation systems, and more.


Table of Contents


Features

  • Blazing Fast Performance: Executes complex logical expressions with minimal CPU overhead.
  • Multi-Type Support: Handles decimal, bool, and string data types.
  • Comprehensive Operator Support: Includes logical (||, &&, !) and comparison (==, !=, <, >, <=, >=) operators.
  • Nested and Grouped Expressions: Efficiently evaluates expressions with multiple nesting levels and logical groupings.
  • Secure and Lightweight: No reliance on regular expressions or scripting engines, reducing security risks and external dependencies.

Why MicroExpressionEvaluator?

MicroExpressionEvaluator significantly outperforms traditional methods:

  • Up to 100x Faster Than Regular Expressions: Avoids the overhead of regex-based parsing.
  • Up to 1000x Faster Than Scripting Engines: Eliminates latency from external scripting engines like Roslyn or NLua.
  • Optimized for Real-Time Applications: Ideal for scenarios requiring instantaneous logic evaluation without compromising accuracy.

Usage

Using MicroExpressionEvaluator is straightforward. Pass your logical expression as a string to the Evaluate method:

using MicroExpressionEvaluator;

bool result = MicroEx.Evaluate("your_logical_expression");

Example

bool result = MicroEx.Evaluate("false != true && !(-0.2 <= 0.1 || \"a\" == \"b\")");
// result will be true

Examples

Valid Expressions

Expression Output
7 > -7 true
true == true != false true
(true || true) && false false
!true == !(true || false) true
("text123" == "text123") && (7.00000 < 7.00001) true
10000000000.00000000000 < 10000000000.00000000001 true
(false != true) && ((true || false) || (true == false)) true
(false || (true == (false || (true == (false || true))))) true

Invalid Expressions

Invalid expressions throw descriptive exceptions:

Expression Exception Message
(true Invalid input! ')' expected.
-7 && 7 Invalid input! Operator '&&' can only be applied to operands of type 'bool'.
"text123" == true Invalid input! Operator '==' can only be applied to operands of type 'string' or 'bool'.

Real-World Applications

  • Financial Modeling: Real-time evaluation of complex financial conditions and business rules.
  • Game Development: Efficient processing of game logic and AI decision-making.
  • Automation Systems: Dynamic decision-making in automated workflows and processes.
  • System Monitoring: Rapid validation and enforcement of system configurations and policies.

Performance Comparison

Compared to other tools like NCalc, Jint, NLua, and Roslyn, MicroExpressionEvaluator offers:

  • Superior Speed: Outperforms in execution time, making it ideal for performance-critical applications.
  • Enhanced Security: Reduces risks by not relying on external scripting engines or regular expressions.
  • Lightweight Footprint: Minimal dependencies ensure easy integration and deployment.

Roadmap

Upcoming enhancements:

  • Mathematical Operations: Support for arithmetic operators (+, -, *, /, ^, %).
  • Extended Data Types: Enhanced handling of various numeric types and collections.
  • Custom Functions and Variables: Ability to define custom functions and variables within expressions.

Contributing

We welcome contributions! If you have ideas, suggestions, or encounter any issues, please open an issue or submit a pull request.


We appreciate your feedback and hope MicroExpressionEvaluator becomes an invaluable tool in your projects!

About

High-Performance C# Logical Expression Parser and Evaluator. MicroExpressionEvaluator is a blazing-fast, lightweight .NET library for parsing and evaluating complex nested logical expressions. Designed for real-time applications.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages