從 6 個開源專案學習編譯器的原理和開發

這是開源報報訂閱者的 Bonus 服務,小編每天整理開源報報發現許多開源工具是相輔相成的,所以接下來會將這些開源工具整理成一篇主題報導,可以更方便一起搭配使用這些開源工具來增加生產力。

策展摘要說明

想要學習編譯器的原理與實務開發?雖然目前已經有很多開源的編譯器可以參考實作,但是都太龐大了,小編整理了這些開源專案的編譯器都很小,其中有一位開發者還寫了一系列的文章記錄了他的學習編譯器過程。

🌳 主題報導的內容會隨著發現新的開源專案持續更新,想要追蹤這篇主題報導的變更紀錄,可到這篇 po 文按讚追蹤

✍ 更多以主題方式整理出相關的開源專案 – 開源報報主題報導

可能是有史以來最小的編譯器

這是一個極其簡化的範例,包含了所有用易讀的 JavaScript 編寫的現代編譯器的主要部分。

通過閱讀指導程式碼將有助你您瞭解大多數編譯器是如何從頭到尾運作的。

這個編譯器主要是把一些類似 lisp 的函式呼叫編譯成一些類似 C 的函式呼叫。

編譯器學習資源集錦

編譯器、直譯器和 Runtimes 的一系列精彩學習資源包含 – 學習材料、工具、框架、平台、技術和原始碼專案。 這份名單偏重於教學。

使用 C 語言開發的一個小型的編譯器

用於具有 LL (2)特色的語言,包括 Lexer、 Parser、類似asm 的程式碼產生器和 VM。 足夠複雜,讓你瞭解“真實”的東西是如何運作的,而不僅僅是一個玩具的範例

這個編譯器具備目前當下許多編譯器的典型模組

  • Lexer ( Lexer.h )
  • Parser ( Parser.h )
  • 類似組合語言的產生器 ( generator.h )
  • Symbol Table ( symbol_table.h )
  • Abstract syntax tree ( ast.h )

一個編譯器開發日誌

如果你想學習如何開發一個編譯器 ( compiler ) ,這位開發者分享他的開發日誌

使用 C 語言實作垃圾收集器

這位開發者最初是要開發 LIST 語言編譯器而需要這個垃圾收集器

有些大型的軟體公司的面試會考這種比較底層功能背後原理,理解系統運作的原理對 Debug 程式很有幫助

使用單一檔案大小的程式碼來實現一個程式語言編譯器研究

程式語言是非常了不起的工作。 它們把我們的文字、數字和符號轉換成使機器運轉的位元。

在實現一種程式語言時,很容易不知所措。 GCC 有數百萬行長。

這對於學習如何實現程式語言來說太複雜了。 幸運的是,一些聰明的人已經將程式語言中最有趣的部分提煉成了一種平易近人的本質。 這裡指的是適用於單一原始碼檔案的程式語言的實現。

這些單一檔案實現很少是完整的,幾乎不複雜或有效的。 但是它們是自成一體的、簡潔的和清晰的。 他們讓發現程式語言為何如此神奇變得有趣。

開源報報服務訂閱網址

相關線上課程

 歡迎使用 App / Email | Telegram 訂閱 網站更新

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: