Geri

           

Dersin Adı

D. Kodu

Yarıyılı

T + U

Kredisi

AKTS

Derleyici Tasarımı

 

 

3+0

3

4

 

 Ön Koşul Dersler

 

 

 Dersin Dili

Türkçe

Dersin Türü

Seçmeli

Dersin Koordinatörleri

 

Dersi Veren

Dersin Yardımcıları

 

 

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.

 

 

Dersin Öğrenme Çıktıları

 

Derleme süreci aşamaları kavrayabilir. Programlama dili yapıları için sonlu otomata ve gramerler yazabilir. Basit bir programlama dili için a tarayıcı, ayrıştırıcı, ve tip kontrolörü yazabilir. Basit programlama dili yorumlayıcıları geliştirebilir. Basit bir programlama dili için ara kod üretebilir. Yeni programlama dilleri tasarlayabilir ve gerçekleyebilir. Derleyici tekniklerini girdi okuyan ve eylem gerçekleştiren tipik yazılım mühendisliği görevlerine uygulayabilir.

 

Dersin İçeriği

 

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: Hepsini birleştirme.

Haftalar

 Konular

1.                  

Derleyicinin mantıksal tasarımının gelişimi

2.                  

Programlama dilleri

3.                  

Programlama dilleri

4.                  

Çeviriciler

5.                  

Çeviriciler

6.                  

Gramer sınıflandırması

7.                  

Dil tasarımı

8.                  

Sonlu durum özdevinirleri

9.                  

Leksik çözümleyiciler

10.               

Aşağıdan yukarıya ayrıştırma

11.               

Yukarıdan aşağıya ayrıştırma

12.               

Simge tablosu işleme

13.               

Kod üretimi, işlemesi ve optimizasyonu

14.               

Kod üretimi, işlemesi ve optimizasyonu

 

Genel Yeterlilikler

Derleme süreci aşamaları kavrama.

Programlama dili yapıları için sonlu otomata ve gramerler yazabilme.

Basit bir programlama dili için a tarayıcı, ayrıştırıcı ve tip kontrolörü yazabilme.

Basit programlama dili yorumlayıcıları geliştirebilme.

Basit bir programlama dili için ara kod üretebilme.

Yeni programlama dilleri tasarlayabilir ve gerçekleyebilme.

Derleyici tekniklerini girdi okuyan ve eylem gerçekleştiren tipik yazılım mühendisliği görevlerine uygulayabilme. 

 

Kaynaklar

1.      Appel, A. W. , 2002, Modern Compiler Implementation in Java, 2nd ed. , Cambridge University Press, 501 p.

2.      Cooper, K. , Torczon, L. , 2003, Engineering a Compiler, , 1st ed. Morgan Kaufmann, 801 p. Grune, D. , Bal, H. , Jacobs, C. , Langendoen, K. , 2000, Modern Compiler Design, Wiley.

 

Değerlendirme Sistemi

Ara Sınav : % 40

Final         : % 60

Projeler    :

Ödevler    :