一步一步實(shí)現(xiàn)一個簡單的解釋器

一個簡單的計算器的實(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í)行一個具體的操作

完整代碼地址
博客 https://www.97up.cn/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • GitHub 上有一個 Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣。awesome-p...
    若與閱讀 19,319評論 4 417
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,832評論 6 427
  • 盼望著,盼望著,一年一度的國慶長假快要到了。今年中秋又遇上國慶,八天長假,想想心情就爽歪歪。于是,迫不及待問老公:...
    小淑文閱讀 592評論 0 4
  • EX在我跟胡老師看電影的時候 發(fā)來了現(xiàn)女友意外懷孕的檢查單 讓我抖了一下午 晚上氣不過,找平叔黑了他微信 最近有點(diǎn)...
    木筱茜閱讀 244評論 1 0
  • 1. 剛把《最好的我們》大結(jié)局看完了,唯一的一個感覺是,耿耿的青春才是最好的。 青春應(yīng)該是什么樣子的呢,混蛋過、奔...
    文長長閱讀 22,445評論 249 873

友情鏈接更多精彩內(nèi)容