一個簡單的計算器的實(shí)現(xiàn)。通過這個來了解編程語言背后是如何工作的。
編程語言
機(jī)器語言
匯編語言
C語言
python語言
由于有了這樣一次次的抽象,現(xiàn)在寫一些程序比以前容易很多了。
py3
如果把這個計算器抽象為一個黑盒的話就是一個輸入 計算 輸出的過程。
具體后面需要做的事情就是 獲取用戶輸入,解析,執(zhí)行,返回結(jié)果。
parse
# 接收用戶輸入
expression = calc_parse(input('calc>>'))
# calc_parse
token = tokenize(input)
expression_token = analyze(token)
# tokenize
spaced = line.replace('(', ' ( ').replace(')', ' ) ').replace(',', ' , ')
將輸入轉(zhuǎn)化為一個規(guī)范的格式。
# analyze
分析這些輸入,構(gòu)造一個表達(dá)式樹。
將操作符 和 操作數(shù)拆出來,這里要注意的一些點(diǎn)就是要考慮好
可能會出現(xiàn)錯誤的情況。
analyze 和 analyze_token 相互調(diào)用來構(gòu)造。
print(calc_eval(expression)) # 4, 6
calc_eval # 遞歸執(zhí)行整個操作
calc_apply # 執(zhí)行一個具體的操作