Yıl: 2024, Dönem: Güz
Ders Kitabı / Malzemesi / Önerilen Kaynaklar
Cooper, K., Torczon, L. 2003; Engineering a Compiler, 1st ed., Morgan Kaufmann, 801 p.
Appel, A. W., 2002; Modern Compiler Implementation in Java, 2nd ed., Cambridge University Press, 501 p.
Dersin İçeriği
Kelime Analizi: Kelime token'ları, düzenli ifadeler, sonlu durum makineleri ve kelime çözümleyici üreticilerin kullanımı.
Ayrıştırma Yöntemleri: Bağlamdan bağımsız gramerler, öngörücü (top-down) ve LR (bottom-up) ayrıştırma teknikleri, ayrıştırıcı üreteçleri.
Soyut Sözdizim Ağaçları: Anlamsal eylemler, soyut sözdizim ağacı (AST) oluşturma, ziyaretçi tasarımı kullanımı.
Anlamsal Analiz: Sembol tabloları oluşturma ve tür (tip) denetimi süreçleri.
Aktivasyon Kayıtları: Yığın çatıları ve MiniJava derleyicisi bağlamında fonksiyon çağrılarının yönetimi.
Arakod Üretimi: Ara gösterimler, ağaç temelli dönüşümler ve bildirim işleme.
Temel Bloklar ve Kontrol Akışı: Temel blokların oluşturulması, kontrol akış grafiklerinin çıkarılması, koşullu dallanmaların analizi.
Emir (Talimat) Seçimi: Komut seçimi algoritmaları, CISC mimarisiyle ilgili yaklaşımlar ve MiniJava için uygulamalar.
Canlılık Analizi: Veri akışı denklemlerinin çözümü ve MiniJava derleyicisinde canlılık analizinin uygulanması.
Yazmaç (Register) Tahsisi: Grafik renklendirme yöntemi ile yazmaç atama, sadeleştirme, ergitme ve önrenkli düğümler üzerinden tahsis stratejileri.
Kod Üretimi: Derleyici bileşenlerinin tümleşik bir yapıda birleştirilmesi ve son hedef koda dönüştürülmesi.
Dersin Amacı
Kelime analizi, aşağıya ve yukarıya doğru ayrıştırma, soyut sözdizim ağaçlarının oluşturulması, tür denetimi, arakod üretimi, temel blok yapıları ve hedef kod üretimi gibi derleyici tasarım sürecine ait temel aşamaları öğretmektir. Ayrıca, bu aşamaların Java programlama dili kullanılarak JavaCC ve JTB gibi derleyici oluşturma araçlarıyla nasıl uygulanabileceği hakkında bilgi ve beceri kazandırılması hedeflenmektedir.