I am working on a calculator program for a finance application. I need to parse and evaluate complex financial expressions like mentioned below.
The expression is a mix of custom functions and arithmetic expressions.
I am using NCalc
to resolve the Arithmetic expressions. However, I am having trouble in resolving the Custom Functions.
IF((COALESCE(X1,X2)-X3+IF(X4<=0,0,X5))>0, CUSTOM_FUNCTION(X6), X7)
Any suggestion on best approach?
I am currently working on a complex logic Involving Recursive calls and Stack Push/Pop. But it is not working.
This is an old problem that was solved a long time ago. The solution is to use a parser generator, not to write your own parser from scratch. There are many options available, one of the more popular ones being ANTLR.
Using a parser generator like ANTLR you can describe your problem using easy-to-understand EBNF-like production rules. The parser generator will generate the complicated logic it seems you are now trying to write by hand, in the language of your choosing, in your case C#. Probably the grammar of your language is already available in this format or you have used this format to describe the language to your users and in your development team.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With