2010-02-22 46 views
2

我即將開始開發一個應用程序的子組件,用C++對象的操作數來評估數學函數。這將通過用戶界面訪問,以提供拖放操作,反饋適當的類型,然後是執行按鈕。解析自定義類型的數學函數

我對使用flex和bison非常感興趣,因爲它曾經在這裏和更遠的地方看過方程解析等。我不確定的是,如果在嘗試使用自定義C++類型進行解析時,flex/bison是否合適?顯然,正常的解析是與文本,這是非常不同的想法,因此也想看看人們的想法,看看我是否試圖把一個方形釘在圓孔。

您認爲如何?

編輯

有信息的人在下面提供的鏈接了一些非常好的來源。 Boost.Spirit是一款看起來很有前途但尚未提及的遊戲。我正在看看雖然今天早些時候的例子,並且在boost/libs/spirit/examples目錄中有一些基於計算器的例子,如果你有提升下載和感興趣的話。他們的主頁是here

+0

如果您試圖解析描述數學函數的文本,將它們轉換爲使用自定義C++類型的一些表示,那麼這正是flex/bison設計的目的。但是你說你正在做的事情不涉及文本,所以我不確定解析是在哪裏進行的。 – 2010-02-22 19:47:19

+0

感謝您的評論。 UI將包含一些文本,因爲用戶可以輸入類型的「方程」,類似於Excel函數對話框。這是對該輸入的解析,以及對我認爲flex/bison可能有用的真正C++對象的後續轉換/操作。 – acju 2010-02-22 20:58:47

回答

0

當然聽起來像我方釘在一個圓形的孔(除非我嚴重誤解的問題):

的Flex將創建一個狀態機來標記流,你的情況 - 內容已標記化

野牛聽起來有點更相關,因爲它可以處理操作符的優先級,但與它相結合對於相對較小的好處來說將是一大痛苦。

+0

感謝您的回答。我認爲你理解這個問題沒關係,但這不是恰當的工具組合(可惜!)。 – acju 2010-02-22 21:05:34

2

請結算muparser

+0

非常有趣的鏈接,謝謝你。今天我要看看這個。 – acju 2010-02-23 14:04:05

1

Flex和野牛是解析算術表達式,方程和類似的工具。

下面是幾個例子:

+0

謝謝,我看到了頂級鏈接,但沒有看到模板版本。我會把它列入可能的列表。 – acju 2010-02-23 14:08:15

+0

不客氣! :)請投贊成有用的答案,並可能選擇最有幫助的(如果有的話)作爲接受的答案。 – 2010-02-24 16:55:50