计算器的C#表达式树

时间:2011-02-13 01:47:00

标签: c# expression mathematical-expressions

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

我想要包括标准的数学函数,包括trig,logs,exponents等。

2 个答案:

答案 0 :(得分:3)

由于您的数学表达式语言肯定会比C#简单得多,我怀疑尝试重用框架表达式树类来表示您的AST将是过度的,可能会让人感到沮丧;如果你看一下这些课程,你会看到许多与你的小语言完全无关的属性和功能。如果我是你,我会自己动手。

答案 1 :(得分:0)

你可以从这个项目中学习,有很好的教程,但它是如何制作的

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

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

e.Parameters [“Pi2”] =新表达式(“Pi * Pi”);   e.Parameters [“X”] = 10;

e.EvaluateParameter + = delegate(字符串名称,ParameterArgs args)     {       if(name ==“Pi”)       args.Result = 3.14;     };

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

它还处理unicode&许多数据类型原生。如果你想改变语法,它会附带一个鹿茸文件。还有一个支持MEF加载新功能的fork。

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