codingseb / ExpressionEvaluator

A Simple Math and Pseudo C# Expression Evaluator in One C# File. Can also execute small C# like scripts
MIT License
591 stars 99 forks source link

Is it possible to find which variables were modified during expression evaluation? #165

Open mercurial-moon opened 2 weeks ago

mercurial-moon commented 2 weeks ago

Hi,

For an expression like a = b * c we know that a would be modified after evaluating the expression. Is there a mechanism in ExpressionEvaluator which tells us that a will/could be modified after evaluating the expression.

ExpressionEvaluator has a PreEvaluateVariable event but that is fired for all variables in the expression, i`m looking to find the variables on the left hand side of the expression.

This could be done in string processing but was hoping if there is a better way where I could have the expression engine to tell me.

codingseb commented 2 weeks ago

Hi @mercurial-moon. Thanks for your issue.

For now there is no event for variable assignation equivalent to PreEvaluateVariable or EvaluateVariable. As I do not have so much time to continue developping ExpressionEvaluator I don't know when I could add this.

But for your case, there is maybe an alternative way by inheritance.

using CodingSeb.ExpressionEvaluator;

public class YourEvaluator : ExpressionEvaluator
{
    protected override void AssignVariable(string varName, object value)
    {
        // Do What you want here for pre assignation 

        // Here we redo what ExpressionEvaluator would do
        base.AssignVariable(varName,value)

      // Do What you want here for postassignation 
}

I hope it helps