|
BIL4023 | Derleyici Tasarımı | 3+0+0 | AKTS:4 | Yıl / Yarıyıl | Güz Dönemi | Ders Duzeyi | Lisans | Yazılım Şekli | Seçmeli | Bölümü | BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ | Ön Koşul | Yok | Eğitim Sistemi | Yüz yüze | Dersin Süresi | 14 hafta - haftada 3 saat teorik | Öğretim Üyesi | Doç. Dr. Hüseyin PEHLİVAN | Diğer Öğretim Üyesi | Yok | Öğretim Dili | Türkçe | Staj | Yok | | Dersin Amacı: | Kelimesel analiz, aşağıya ve yukarıya doğru ayrıştırma, soyut sözdizim ağaçları, tip denetimi, arakod dönüşümü, temel bloklar ve kod üretimi gibi çeşitli derleme süreci aşamalarını anlatmayı ve bu derleme aşamalarının Java programlama dilinde kaynak kod üretebilen JavaCC ve JTB gibi derleyici-derleyici araçları ile nasıl gerçeklenebildiğini öğretmektir. |
Öğrenim Kazanımları | PÖKK | ÖY | Bu dersi başarı ile tamamlayan öğrenciler : | | | ÖK - 1 : | derleme süreci aşamalarını kavrayabilir. | 2,3,4,12 | 1,3 | ÖK - 2 : | programlama dili yapıları için sonlu otomata ve gramerler yazabilir. | 2,3,4,12 | 1,3 | ÖK - 3 : | basit bir programlama dili için tarayıcı, ayrıştırıcı ve tip kontrolörü yazabilir. | 2,3,4,12 | 3 | ÖK - 4 : | basit programlama dili yorumlayıcıları geliştirebilir. | 2,3,4,12 | 3 | ÖK - 5 : | basit bir programlama dili için ara kod üretebilir. | 2,3,4,12 | 1,3 | ÖK - 6 : | yeni programlama dilleri tasarlayabilir ve gerçekleyebilir. | 2,3,4,12 | 1,3 | ÖK - 7 : | derleyici tekniklerini girdi okuyan ve eylem gerçekleştiren tipik yazılım mühendisliği görevlerine uygulayabilir. | 2,3,4,12 | 1,3 | PÖKK :Program öğrenim kazanımlarına katkı, ÖY : Ölçme ve değerlendirme yöntemi (1: Yazılı Sınav, 2: Sözlü Sınav, 3: Ev Ödevi, 4: Laboratuvar Çalışması/Sınavı, 5: Seminer / Sunum, 6: Dönem Ödevi / Proje),ÖK : Öğrenim Kazanımı | |
Kelimesel analiz: Kelimesel token'lar, düzenli ifadeler, sonlu otomata, kelimesel çözümleyici üreticileri. Ayrıştırma: Bağlamla ilintisiz gramerler, öngörücü ayrıştırma, LR ayrıştırma, ayrıştırıcı üreteçleri. Soyut sözdizimi: Anlambilimsel eylemler, soyut ayrıştırma ağaçları, ziyaretçiler. Anlambilimsel analiz: Sembol tabloları, tip denetimi. Aktivasyon kayıtları: Yığın çatıları, MiniJava derleyicisinde çatılar. Arakoda dönüşüm: Arakod gösterim ağaçları, ağaçlara dönüşüm, bildirim. Temel bloklar ve icra yolları: Doğal ağaçlar, koşullu dallanma çıkarımı. Emir seçimi: Emir seçim algoritmaları, CISC makineleri, MiniJava derleyicisi için emir seçimi. Canlılık analizi: Veri akış denklemlerinin çözümü, MiniJava derleyicisinde canlılık. Kaydedici tahsisi: Sadeleştirme ile renklendirme, ergitme, önrenkli düğümler, graf renklendirme, ağaçlar için kaydedici tahsisi. Kod üretimi: Bütün modülleri birleştirme. |
|
Haftalık Detaylı Ders Planı | Hafta | Detaylı İçerik | Önerilen Kaynak | Hafta 1 | Çeviricilere Giriş | | Hafta 2 | Kelimesel Analiz | | Hafta 3 | Sözdizim Analizi (Ayrıştırma) | | Hafta 4 | Soyut Sözdizimi | | Hafta 5 | Anlambilimsel Analiz | | Hafta 6 | Aktivasyon Kayıtları | | Hafta 7 | Ara Kod Dönüşümü | | Hafta 8 | Temel Bloklar ve İcra Yolları | | Hafta 9 | Arasınav | | Hafta 10 | Emir Seçimi | | Hafta 11 | Canlılık Analizi | | Hafta 12 | Kaydedici Tahsisi | | Hafta 13 | Kod Üretimi | | Hafta 14 | Veri Akış Analizi | | Hafta 15 | Döngü Optimizasyonu | | Hafta 16 | Dönem sonu sınavı | | |
1 | Appel, A. W., 2002; Modern Compiler Implementation in Java, 2nd ed., Cambridge University Press, 501 p. | | |
1 | Cooper, K., Torczon, L. 2003; Engineering a Compiler, 1st ed., Morgan Kaufmann, 801 p. | | 2 | Grune, D., Bal, H., Jacobs, C., Langendoen, K. 2000; Modern Compiler Design, Wiley, 736 p. | | |
Ölçme Yöntemi | Yöntem | Hafta | Tarih | Süre (Saat) | Katkı (%) | Arasınav | 9 | 26/11/2023 | 2 | 50 | Dönem sonu sınavı | 16 | 24/01/2024 | 2 | 50 | |
Öğrenci Çalışma Yükü | İşlem adı | Haftalık süre (saat) | Hafta sayısı | Dönem toplamı | Yüz yüze eğitim | 3 | 14 | 42 | Sınıf dışı çalışma | 1 | 14 | 14 | Arasınav için hazırlık | 6 | 1 | 6 | Arasınav | 2 | 1 | 2 | Dönem sonu sınavı için hazırlık | 8 | 1 | 8 | Dönem sonu sınavı | 2 | 1 | 2 | Toplam Çalışma Yükü | | | 74 |
|