C#用于计算器的表达树
-
13-11-2019 - |
题
我是一个c#newbie。我想在C#中编写一个计算器应用程序。C#表达树是一个好的方法来寻找它的胆量吗?(即,需要一系列按键的部分并将它们转换为计算器可以在屏幕上进行评估和显示的表达式。。。或图形。)
我想包括标准数学函数,包括trig,logs,指数等。
解决方案
由于您的数学表达式的语言肯定会很大,比C#更简单,我怀疑尝试重用框架表达式树类以代表您的AST将是过度的,并且可能是挫折的配方;如果您查看这些类,您将看到大量的属性和功能与您的小语言完全无关紧要。如果我是你,我会滚动自己。
其他提示
您可以从这个项目中学习,有很好的教程AOBUT它是如何制作的
你见过 http://ncalc.codeplex.com ?
它是可扩展的,快速(例如,它自己的缓存)使您可以通过处理评估功能/评估参数事件来在运行时提供自定义函数和varaibles。它可以解析的示例表达式: 表达式E=新表达式(“圆形(POW(PI,2)+ POW([PI2],2)+ x,2)”);
e.parameters [“pi2”]=新表达式(“pi * pi”); E.Parameters [“x”]= 10;
e.evaluateParameter +=委托(String名称,ParameterArgs Args) { if(name==“pi”) args.result= 3.14; };
debug.assert(117.07== e.evaluate());
它还本身处理Unicode和许多数据类型。如果要更改语法,它会附带antler文件。还有一个fork,支持mef加载新功能。
它还支持逻辑运算符,日期/时间字符串和IF语句。