Let's build a Compiler 2025-ben

Aki foglalkozott valaha is fordítóprogram írásával, az egész biztosan találkozott Crenshaw "Let's build a Compiler" tutorialjával.

Mind a mai napig aktuális és hasznos, még annak ellenére is, hogy Pascal-ban íródott és Motorola Assembly-t generál. Az elvek ugyanis nem változtak semmit. Ennek ellenére valaki úgy gondolta, itt az ideje átültetni modernebb környezetbe ezt a hasznos oktatási segédanyagot, így megszületett a mai kor ízlésének megfelelő,

Pythonban írt, WebAssembly-t generáló átirat

Ajánlom e terület iránt érdeklődőknek, a teljes forrás leírással együtt ebből a repóból letölthető. A lefordított bináris futtatására pedig használható a WA projektem, csak az RTLink táblát kell feltölteni a lefordított program által hívott libes függvényekkel (biztonsági okok miatt ez nem automatikus).

Hozzászólások

Nincsmit!

Arra azért felhívnám a figyelmet, hogy ez egy oktatóanyag, csak egy játéknyelvet képes fordítani. Szóval főként kezdőknek való, egy jó kis gyakorlati implementáció a száraz tananyag mellé.

Ahhoz, hogy ténylegesen használható nyelvet lehessen fordítani, minimum szükséges lenne, hogy a kifejezést átmenetileg cache-elje, hogy azon visszamenőlegesen változtatásokat tudjon eszközölni (pl. típusmódosítás, implicit cast), illetve akár egyszerűbb optimalizációt is (pl. +0, -0, *1, /1 eliminálás vagy regiszterallokáció), és miután az egész kifejezés kiértékelődött, csak azután fordítsa Assembly kimenetté (hogy konkrétan miként történik a cache-lés, az lényegtelen, lehet AST vagy IL is). Ez még mindig csak játéknyelvnek számítana, de ezzel már használhatóvá válna. Mondjuk már ez az egy plusz lépcső is alaposan elbonyolítaná az egészet, így érthető, hogy kimaradt a kezdőknek szóló oktatóanyagból. (Komoly fordítók meg nemcsak az aktuális kifejezést, hanem egész kódblokkokat optimalizálnak.)

De a lényeg, hogy remekül rávilágít arra, miért kell a tokenizáció és a többi, szóval remek kis cucc. Az új repót egyébként nem az eredeti helyett, hanem mellé kell olvasni és próbálgatni.

foglalkozott valaha is fordítóprogram írásával,

igen, BAssPasC / BAPC3 meg a 90es evekben...

 

 az egész biztosan találkozott

hat en nem :(  sajat kutfobol oldottam meg, egesz jol