2011-02-13 54 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加載新功能的分支。

它還支持邏輯運算符,日期/時間的字符串,如果語句。