Implementasi ulang tutorial Ghuloum dalam Python mengurangi jumlah kode menjadi sekitar 300 baris dibandingkan versi C.
Proses lambda lifting memerlukan pelacakan variabel yang bound, variabel yang free dalam setiap lambda, dan daftar kode yang dihasilkan secara rekursif.
Kelas LambdaConverter mengonversi ekspresi dengan parameter bound dan free untuk mengenali variabel free dan built-in.
Pada setiap lambda, parameter diikat, variabel free dicatat, kemudian dihasilkan bentuk code dan closure dengan label unik.
Untuk form let, semua binding dievaluasi menggunakan environment awal, lalu body dievaluasi setelah menambahkan nama binding ke bound.
Panggilan fungsi membedakan operator built-in sehingga bentuk funcall hanya dihasilkan untuk fungsi non-primitive.
Kompilasi closure meliputi alokasi di heap, penyimpanan pointer ke code, pengisian sel freevar, penandaan pointer, dan penyesuaian heap pointer.
Kompilasi funcall mencakup evaluasi argumen, penyimpanan pointer closure lama, setup closure baru, penyesuaian stack, dan panggilan melalui pointer closure.
Unit test ditulis untuk berbagai kasus, memastikan pelacakan bound/free dan keluaran code serta closure sesuai spesifikasi.
Get notified when new stories are published for "Berita Peretas 🇮🇩 Bahasa Indonesia"