- Yazar, 500 satır Python koduyla bir C derleyicisi yazma gibi zorlu bir meydan okumayı üstlenmiş
- Derleyici tek geçişli; önce bir sözdizim ağacı kurup ardından bunu makine koduna dönüştüren tipik iki geçişli derleyicilerden farklı olarak, ayrıştırma sırasında kod üretiyor
- Derleyici WebAssembly'yi hedefliyor; bu karar pratiklikten çok meraktan kaynaklanıyor. Register'ların olmaması ve bir stack machine kullanılması gibi WebAssembly'nin kendine özgü zorlukları vurgulanıyor
- 500 satır kısıtı nedeniyle derleyici;
struct, enum, union, önişlemci yönergeleri, kayan nokta ve 8 baytlık türler gibi belirli C özelliklerini desteklemiyor
- Derleyici, c-testsuite içindeki 220 test vakasının 34'ünü geçiyor ve Fibonacci dizisini hesaplayan bir programı başarıyla derleyip çalıştırabiliyor
- Yazı, derleyicinin koduna dair ayrıntılı bir çözümleme sunuyor; C sözdiziminin çeşitli yönlerini nasıl ele aldığını ve WebAssembly ile çalışmanın zorluklarının neler olduğunu açıklıyor
- Derleyicinin karmaşıklığına rağmen, kod kalitesinden ödün verip her şeyi tek geçişte yapınca sonucun şaşırtıcı derecede kısa olabileceğini gösteriyor
- Bu tür tek geçişli derleyicilerin, kısalıkları sayesinde kendi kendini barındıran diller için stage0 olarak çok uygun olabileceği öne sürülüyor
- Kod satırı sayısı, yorumlar, docstring'ler ve boşluklar hariç tutularak
sloccount aracıyla ölçülmüş
1 yorum
Hacker News görüşleri
structderleyicisi ile v7 Unix C derleyicisi dahil diğer küçük C veya C benzeri derleyicilerin kod satırı sayılarına (LOC) değiniyor