2011-02-13 98 views
1

我是C#的新手。我想用C#编写一个计算器应用程序。 C#表达式树会是一个很好的方式去寻找它的胆量吗? (也就是说,需要一系列按键并将它们转换成计算器可以评估并在屏幕上显示的表达式的部分......或图形)计算器的C#表达式树

我想包括标准的数学函数,包括trig,日志,指数等。

回答

3

由于数学表达式的语言肯定会比C#更简单,我怀疑试图重用框架表达式树类来表示AST将会是过度的,可能是沮丧的秘诀;如果你看看这些类,你会看到很多与你的小语言完全无关的属性和功能。如果我是你,我会推出自己的产品。

0

您也许能够从这个项目的学习,也有很好的教程aobut它是怎么做的

你见过http://ncalc.codeplex.com

它的可扩展性,快速(如拥有自己的高速缓存),使您能够提供自定义功能和通过处理EvaluateFunction/EvaluateParameter事件在运行时varaibles。它可以解析的示例表达式: 表达式e =新的表达式(“Round(Pow(Pi,2)+ Pow([Pi2],2)+ X,2)”);

e.Parameters [“Pi2”] = new Expression(“Pi * Pi”); e.Parameters [“X”] = 10;

e.EvaluateParameter + =委托(字符串名称,ParameterArgs参数) { 如果(名称== “PI”) args.Result = 3.14; };

Debug.Assert的(117.07 == e.Evaluate());

它还处理Unicode &许多数据本身类型。如果您想更改语法,它会附带一个鹿角文件。还有一个支持MEF加载新功能的分支。

它还支持逻辑运算符,日期/时间的字符串,如果语句。