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 : |