一
從字符串中提取 Token 的步驟是順序讀取字符铸敏,判斷字符類型,然后把 Token 的類型和值存入 Token 列表。
輸入字符串處理
提取offset位置處的一個字符
如果沒有后續(xù)字符則返回None
取字符的位置向后移動一位
定義字符節(jié)點
整數(shù)類型的Token
從字符串中讀取字符直到字符不是整數(shù)
如果讀取的內(nèi)容不為空則返回整數(shù),否則返回None
操作(+,-)類型的Token
讀取一個字符悼泌,然后返回這個字符,如果字符不是+-夹界,則返回None
二
從 Token 列表中順序讀取 Token馆里,根據(jù) Token 的類型生成表達(dá)式樹,表達(dá)式樹的葉子節(jié)點為整數(shù)可柿,其余節(jié)點為操作符鸠踪。
從 Token 列表生成表達(dá)式二叉樹
取出 tokens[0],該 Token 類型為整數(shù)
從第二個 Token 開始循環(huán)取出
相鄰兩個 Token 的類型一樣則為錯誤
如果 Token 為操作符趾痘,則保存為操作符節(jié)點慢哈,把前一個整數(shù) Token 作為左子節(jié)點
如果 Token 為整數(shù),則將該 Token 保存為右節(jié)點
三
獲取輸入字符串
從輸入字符串獲得Token列表
從Token列表生成表達(dá)式樹
遍歷計算表達(dá)式樹并輸出結(jié)果