Open
Description
I create here an issue to follow and document (first for myself but for who is interested) the evolution of the work to version 2.0
The goal is to deeply refactor ExpressionEvaluator to internally build a syntaxic tree with different kinds of tokens.
The evaluation will be executed in 2 phases.
- Parse the expression string and build the syntaxic tree.
- Execute the syntaxic tree.
This will allow a lot of stuffs that are not possible with the current "on the fly" way of evaluating things.
It should allow to :
- Cache expressions to speed up evaluations when executed multiple times.
- Managing better the evaluation flow.
- To correct ConditionalAnd with variables #56 (Conditional and and Conditional always execute their right part) without breaking operators precedence
- To correct Sum of decimal fail #65 (Problem to select the good method when multiple method with same name defined that take lambda as arguments)
- Validate more things before executing and prevent partial executions
- Make better self explained exceptions.
Risks and drawdowns
- I'm not sure yet that all existing functionalities can work with this new way of doing things.
- Will take time
- A lot of tests exists to ensure that what is working now will still working after but there are not exaustive. So there is a high risk of breaking things. More tests are needed.
- As the structure will change, the way that some of the existing functionalities works will change. It means that the corresponding documentation will need to be rewrite.
I will also decide how to split things between version 1 and 2.
- Fork, Branch or continue in the same repo and same release flow
- How to manage documentation differences.
- Split code in multiple files, keep it in one for easy copy or make a precompile merge or something like this.