一個(gè)簡(jiǎn)單的計(jì)算器的實(shí)現(xiàn)棵红。通過這個(gè)來了解編程語言背后是如何工作的兼贡。
編程語言
機(jī)器語言
匯編語言
C語言
python語言
由于有了這樣一次次的抽象夕春,現(xiàn)在寫一些程序比以前容易很多了投慈。
py3
如果把這個(gè)計(jì)算器抽象為一個(gè)黑盒的話就是一個(gè)輸入 計(jì)算 輸出的過程惶我。
具體后面需要做的事情就是 獲取用戶輸入妈倔,解析,執(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)化為一個(gè)規(guī)范的格式。
# analyze
分析這些輸入听怕,構(gòu)造一個(gè)表達(dá)式樹捧挺。
將操作符 和 操作數(shù)拆出來,這里要注意的一些點(diǎn)就是要考慮好
可能會(huì)出現(xiàn)錯(cuò)誤的情況尿瞭。
analyze 和 analyze_token 相互調(diào)用來構(gòu)造闽烙。
print(calc_eval(expression)) # 4, 6
calc_eval # 遞歸執(zhí)行整個(gè)操作
calc_apply # 執(zhí)行一個(gè)具體的操作