我想自己用C C 做乙個指令碼語言直譯器,但是不知道需要什麼知識?

時間 2021-06-04 20:08:53

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 看你自己,我有個同學,當時和我一起去當兵的時候說是和女朋友分手了,但是後面又在一起了,當兵的機會可能一生只有一次,考慮清楚吧 長安山人 當然是選擇軍隊了。從大的說,男兒志在四方,保家衛國,義不容辭,豈能因為兒女情長一事無成?從小的說,你已經從軍了,你難道能退出來嗎?軍隊是你說來就來說...