我正在为财务应用开发计算器程序。 我需要解析和评估如下所述的复杂财务表达式。
表达式是自定义函数和算术表达式的混合体。
我正在使用 NCalc
解决算术表达式。但是,我在解析自定义函数时遇到了问题。
IF((COALESCE(X1,X2)-X3+IF(X4<=0,0,X5))>0, CUSTOM_FUNCTION(X6), X7)
有什么关于最佳方法的建议吗?
我目前正在研究涉及递归调用和堆栈推送/弹出的复杂逻辑。但它不起作用。
最佳答案
这是一个老问题,很久以前就解决了。解决方案是使用解析器生成器,而不是从头开始编写您自己的解析器。有许多可用选项,其中一个比较受欢迎的选项是 ANTLR .
使用像 ANTLR 这样的解析器生成器,您可以使用易于理解的方式描述您的问题 EBNF -like 生产规则。解析器生成器将生成复杂的逻辑,看起来你现在正试图用你选择的语言手写,在你的例子中是 C#。可能您的语言的语法已经以这种格式提供,或者您已经使用这种格式向您的用户和您的开发团队描述该语言。
关于c# - C# 中的自定义表达式解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163289/