1樓:
從表示式 eval 做起。先找乙個演算法把前端實現出來,用遞迴下降或排程場都好。然後遍歷 AST,計算表示式的值,並且支援代入變數。
然後有兩條一般的路徑:
1. 實現控制流,做成指令碼語言;
2. 實現同像,做成 Lisp 方言;
其實直譯器(和不帶靜態分析的編譯器)沒什麼門檻,程式設計剛入門的小孩就能做了。只要你硬著頭皮往下寫,會查資料就好。
2樓:Xi Yang
你可以試試用逆波蘭式裸奔:
1 2 add # 1+2的結果放入棧頂
3 4 mul # 3x4的結果放入棧頂
div # 棧頂兩個值相除,即3 / 12,結果放入棧頂print # 列印棧頂的值
比較容易和runtime的邏輯直接對應。
詳情參見PostScript,超爽的。
3樓:開源醬
寫 Lisp 直譯器的話倒是很容易
你需要下面幾樣東西:
Read - 包括 Reader,Tokenizer, Parser,etc.
Eval - 主要就是實現 Eval
Print 和 Loop 太 trivial 了就不說了然後你就有了乙個 Lisp 的 REPL
把 Reader 的輸入從 stdin 改成從檔案輸入你就有乙個直譯器了
4樓:遇水架橋
題主可以看看這篇文章:
用C語言寫直譯器(一)——我們的目標
作者用 C 語言寫了乙個類似 BASIC 語言的直譯器,講得很詳細,很適合學習。
我也參考這篇文章,自己寫了乙個直譯器:
創造一門程式語言,寫乙個直譯器
這是我寫的,修改了一些部分。
這兩個都不是編譯型的。
積體電路IC設計,學習哪乙個指令碼語言比較好?(Perl Python Shell)?
Spunky GG 其實真要從乙個專案角度來講,不可能是一種語言解決掉專案的整個flow,在後端角度,一般來講,最頂層的flow一般是Makefile,具體呼叫到EDA環境中,主流是tcl語言,會用來寫一些小flow解決問題。STA環境,PV等一般是Makefile呼叫cshell指令碼或tcl。另...
想自己做乙個nas,硬體搭配有推薦嗎?
貝銳蒲公英異地組網 自己做乙個NAS需要考慮的就是操作難度 易用性 成本及時間問題,所以將老電腦改造成NAS,採用Windows10系統 虛擬機器黑群暉是乙個價效比較高的方案。閒置電腦變NAS教程 搭建黑群暉 無公網IP實現遠端訪問如果不想要黑群輝系統,建議還可以試試開源免費的FreeNAS 求推薦...
自己從軍了,女朋友說讓我和軍隊做乙個選擇。我該怎麼辦?
Dreamer 看你自己,我有個同學,當時和我一起去當兵的時候說是和女朋友分手了,但是後面又在一起了,當兵的機會可能一生只有一次,考慮清楚吧 長安山人 當然是選擇軍隊了。從大的說,男兒志在四方,保家衛國,義不容辭,豈能因為兒女情長一事無成?從小的說,你已經從軍了,你難道能退出來嗎?軍隊是你說來就來說...