設計數學解析器的最明智的方法是什么?我的意思是說一個函數需要一個數學字符串(例如:“ 2 + 3/2 +(2 * 5)”)并返回計算出的值?我確實在VB6時代就寫過一篇文章,但最終導致它腫且不便于攜帶(對此很聰明……)。一般的想法,偽代碼或實代碼表示贊賞。
4 回答

人到中年有點甜
TA貢獻1895條經驗 獲得超7個贊
一個很好的方法將涉及兩個步驟。第一步涉及將表達式從中綴轉換為后綴(例如,通過Dijkstra的shunting yard)表示法。一旦完成,編寫一個postfix評估器就很簡單了。

素胚勾勒不出你
TA貢獻1827條經驗 獲得超9個贊
您有幾種方法。您可以生成動態代碼并執行它以獲取答案,而無需編寫太多代碼。只需在.NET中運行時生成的代碼上執行搜索,周圍就會有很多示例。
或者,您可以創建一個實際的解析器并生成一個小的解析樹,然后將其用于評估表達式。同樣,對于基本表達式而言,這非常簡單。簽出codeplex,因為我相信他們那里有一個數學解析器。或者只是查找包含示例的BNF。任何介紹編譯器概念的網站都將其作為基本示例。
- 4 回答
- 0 關注
- 649 瀏覽
添加回答
舉報
0/150
提交
取消