Welcome to Tshunhue Documents’s documentation!¶
Indices and tables¶
Tshunhue 是什麼呢?¶
Tshunhue(河洛語:春花)是一個 Lisp 系的玩具程式語言。主要的特徵有:
不可變物件。
閉包作為第一類物件。
靜態型別。
和型別 (Sum Type) 和積型別 (Product Type)。
其他¶
垃圾回收¶
先不實現垃圾回收。若是要實現垃圾回收,可以用引用記數。做一個這樣的表格:
記憶體位址 |
引用次數 |
0x12345 …… |
1 …… |
以下有一個範例:
(Type IntPair (IntPair Int Int))
(def IntPair a (IntPair x y))
; 這個時候我們可以呼叫引用計數增加函數 inc_ref_count()
; inc_ref_count(&a);
; inc_ref_count(&x);
; inc_ref_count(&y);
...程式碼
; x 活著的程式碼區段結束時,呼叫引用記數減少函數 dec_ref_count()
; dec_ref_count(&a);
; dec_ref_count(&a[0]); // &x
; dec_ref_count(&a[1]); // &y
實做方式¶
用 Python3 將原始碼轉成 AST,以 s-expression 表示。再進行型別推測後,進行閉包轉換,不進行 CPS 變換,利用 llvmlite 生成 LLVM IR。
需要的東西:
llvmlite
python3