我的網誌清單

2013年7月11日 星期四

如何用程式解析寫一個四則運算?

如何用程式 寫一個 類似    4+5*6+4+(4*5)
去解析這樣的東西呢?

這個就需要一點巧思 , 其實我也有去參考一些文件及 看一些書才了解的

會想寫這個東西是因為,之前這個東西寫過好幾次,但寫過之後,又要再回想,然後好像腦袋沒有很顥像的畫面,想想乾脆把他寫出文章,之後記憶也比較深刻



首先需要幾個東西

1.取得解析字串
2.取得解析字串類型
   類型有
       運算式字符    "+-*/()="
       數字    0~9  還有小數點

目前就這二個類型

首先流程是

  A.  先開始解析字串  取得 是什麼類型 ,然後如果是數字 一開始也得到一組數字

  B.
                 進入  + - 的運算 , 然後進入這個函式的一開時
                 再進入   *  /  的函式   , 然後一樣進入 * / 的函式的一開始

                 再進入 判斷  開頭是否有   + 或 - 的運算式 , 比如 -5 * 4
                 
                 然後再判斷是否有   "(" 開頭      , 如果有 再進入 判斷  +- 的函式
               
                 然後  +- 跟 */ 再進入判斷運算時 還要再往下一個運算走一次

           
也就是 比如

     4+5*3

    一開始我們  取得 4
    然後進入  +- 判斷 再進入*/  再進入判斷開頭是否有+-  然後再進入 判斷是否有  (

  然後 接下來我們取得  +
 
   然後再回到    判斷是否有  (   , 回到   開頭是否有 +-  回到  */  但沒有
  再回到 +- 有  , 這時   我們存下運算子 + ,   再取得運算式 ,  然後 我們又再一次進入  判斷是否有 */

  然後 又再跑一次   剛剛的流程   , 重複 最後運算 , 得到結果


         

2 則留言:

  1. 可以參考一下我寫的幾篇文章 parser的技術
    http://good-ed.blogspot.tw/2012/11/parser.html

    回覆刪除