我是 C# 新手。我想用 C# 编写一个计算器应用程序。C# 表达式树会是一个很好的方法吗?(也就是说,需要一系列按键并将它们转换为计算器可以评估并显示在屏幕上的表达式......或图形。)
我想要包括标准数学函数,包括三角函数、日志、指数等。
我是 C# 新手。我想用 C# 编写一个计算器应用程序。C# 表达式树会是一个很好的方法吗?(也就是说,需要一系列按键并将它们转换为计算器可以评估并显示在屏幕上的表达式......或图形。)
我想要包括标准数学函数,包括三角函数、日志、指数等。
由于您的数学表达式语言肯定会比 C# 简单得多,因此我怀疑尝试重用框架表达式树类来表示您的 AST 将是矫枉过正,并且可能会导致挫败感;如果您查看这些类,您会看到许多与您的小语言完全无关的属性和功能。如果我是你,我会自己动手。
你也许可以从这个项目中学习,有很好的教程,但它是如何制作的
你看过http://ncalc.codeplex.com吗?
它是可扩展的、快速的(例如有自己的缓存),使您能够通过处理 EvaluateFunction/EvaluateParameter 事件在运行时提供自定义函数和变量。它可以解析的示例表达式: Expression e = new Expression("Round(Pow(Pi, 2) + Pow([Pi2], 2) + X, 2)");
e.Parameters["Pi2"] = new Expression("Pi * Pi"); e.Parameters["X"] = 10;
e.EvaluateParameter += delegate(string name, ParameterArgs args) { if (name == "Pi") args.Result = 3.14; };
Debug.Assert(117.07 == e.Evaluate());
它还原生处理 unicode 和许多数据类型。如果您想更改语法,它会附带一个 antler 文件。还有一个 fork 支持 MEF 加载新功能。
它还支持逻辑运算符、日期/时间字符串和 if 语句。