Derleyici Kuramı (Compiler Theory)



Benzer belgeler
ENF-106 C Programlama Dili Ders İçeriği. Grafik fonksiyonları C Programlama Dili Ders Notları Dr. Oğuz ÜSTÜN

C/C++ DERS KONULARI. Kaynaklar 1. C Programlama dili, Kemal Yarcı 2. C/C++, Gürcan Banger 3. C ve Siz, Fatih Ekici

BM312 Ders Notları

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 1

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Biçimsel Diller ve Otomata Teorisi. Final Sınavı Soruları A KİTAPÇIĞI

İşletim Sisteminin Katmanları

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI YÜZEY DOLDURMA TEKNİKLERİ

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Biçimsel Diller ve Otomata Teorisi. Final Sınavı Örnek Soruları A0 KİTAPÇIĞI

SİRKÜLER. 1.5-Adi ortaklığın malları, ortaklığın iştirak halinde mülkiyet konusu varlıklarıdır.

Tasarım Raporu. Grup İsmi. Yasemin ÇALIK, Fatih KAÇAK. Kısa Özet

ÖĞRENME FAALĠYETĠ GELĠġMĠġ ÖZELLĠKLER

SAYI BASAMAKLARI. çözüm

13 Kasım İlgili Modül/ler : Satın Alma ve Teklif Yönetimi. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

DİKKAT! SORU KİTAPÇIĞINIZIN TÜRÜNÜ "A" OLARAK CEVAP KÂĞIDINA İŞARETLEMEYİ UNUTMAYINIZ. SAYISAL BÖLÜM SAYISAL-2 TESTİ

Genel bilgiler Windows gezgini Kes Kopyala Yapıştır komutları. 4 Bilinen Dosya Uzantıları

VEZNE PROGRAMINDA POSTA ÜCRETİ İLE İLGİLİ YAPILAN DÜZENLEMELER (Vezne Sürüm: )

Analiz aşaması sıralayıcı olurusa proje yapımında daha kolay ilerlemek mümkün olacaktır.

Evrak Ekle. Kurum İçi Giden Evrak Ekleme. Kırmızı renker; doldurulması zorunlu alanları ifade etmektedir. İleri Geri tarihli işlem yapılamamaktadır.

Temel Bilgisayar Programlama

Bölüm 3. Sentaks ve semantik tarifi ISBN

B02.8 Bölüm Değerlendirmeleri ve Özet

BÖLÜM 7 BİLGİSAYAR UYGULAMALARI - 1

DENEY 2: PROTOBOARD TANITIMI VE DEVRE KURMA

Formal Diller Ve Otomat Teorisi

Veri Toplama Yöntemleri. Prof.Dr.Besti Üstün

Bilgisayar Uygulamaları PSİ105

ÇÖKELME SERTLEŞTİRMESİ (YAŞLANDIRMA) DENEYİ

Akademik Personel ve Lisansüstü Eğitimi Giriş Sınavı. ALES / Đlkbahar / Sayısal II / 22 Nisan Matematik Soruları ve Çözümleri

YAPILARDA DERZLER VE SIZDIRMAZLIK MALZEMELERİ

ANKARA EMEKLİLİK A.Ş GELİR AMAÇLI ULUSLARARASI BORÇLANMA ARAÇLARI EMEKLİLİK YATIRIM FONU ÜÇÜNCÜ 3 AYLIK RAPOR

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Başbakanlık (Hazine Müsteşarlığı) tan:

MikroÖdeme Servis Dökümanı

GÜZEL KONUŞMA VE DİKSİYON DERSİ

SÜRE BİLİŞİM TEKNOLOJİLERİ ÜNİTE 1: : BİLGİ VE TEKNOLOJİ DERS SAATİ: 7

ANALOG LABORATUARI İÇİN BAZI GEREKLİ BİLGİLER

ABKR ABK 1036 GALVANİZ SİLO ISI KONTROLÖRÜ KULLANMA KILAVUZU

MAKÜ YAZ OKULU YARDIM DOKÜMANI 1. Yaz Okulu Ön Hazırlık İşlemleri (Yaz Dönemi Oidb tarafından aktifleştirildikten sonra) Son aktif ders kodlarının

Mühendislikte Deneysel Metodlar I Dersi Deney Föyü

VEGAWINA VERSION

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 3

4. Numaralandırdığımız her boru parçasının üzerine taşıdıkları ısı yükleri yazılır.

Yedi Karat Kullanım Klavuzu. Yedi Karat nedir? Neden Karat?

BİR SAYININ ÖZÜ VE DÖRT İŞLEM

CMK 135 inci maddesindeki amir hükme rağmen, Mahkemenizce, sanığın telekomünikasyon yoluyla iletişiminin tespitine karar verildiği görülmüştür.

Yandaki resimlerde Excel Pazartesi den başlayarak günleri otomatik olarak doldurmuştur.

ETKİLEŞİMLİ TAHTA KORUMA SİSTEMİ KURULUM

BİLGİ TEKNOLOJİLERİ VE İLETİŞİM KURULU KARARI

İçinde x, y, z gibi değişkenler geçen önermelere açık önerme denir.

OPERATÖRLER BÖLÜM Giriş Aritmetik Operatörler

SÜREÇ YÖNETİMİ VE SÜREÇ İYİLEŞTİRME H.Ömer Gülseren > ogulseren@gmail.com

BULUŞ BİLDİRİM FORMU / APARAT

KALİTE HER ZAMAN PAHALI DEĞİLDİR. Dünyanın 4. Büyük fabrikası teknolojinin önünde

BAĞLAMDAN BAĞIMSIZ (CONTEXT-FREE) GRAMERLER (CFG) VE DİLLER (CFL)

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

SOFTFİNANS UYGULAMASINDA YENİ YILA GEÇİŞ İŞLEMLERİ

Afyon Kocatepe Üniversitesi Yabancı Dil Hazırlık Sınıfı Eğitim-Öğretim

Uzem Eğitmen Girişi. Şekil 1. Sisteme girdikten sonra Şekil 2 deki ekran karşımıza çıkacak. Bu ekrandaki adımları kısaca tanıyalım.

VER TABANI VE STANDART DOSYA PLANI KURULUM KLAVUZU

M i m e d ö ğ r e n c i p r o j e l e r i y a r ı ş m a s ı soru ve cevapları

GİYİM ÜRETİM TEKNOLOJİSİ ÇOCUK DIŞ GİYSİLERİ DİKİMİ (CEKET- MONT- MANTO) MODÜLER PROGRAMI (YETERLİĞE DAYALI)

O N E T OUC H B A C K U P 3 P O R T S U S B 2. 0 H U B


Autobiographie - Istanbul - Orhan Pamuk

2008 YILI MERKEZİ YÖNETİM BÜTÇESİ ÖN DEĞERLENDİRME NOTU

1.3. NİTEL ARAŞTIRMA YÖNTEMLERİ GİRİŞ NİTEL ARAŞTIRMALARDA GEÇERLİK VE GÜVENİRLİK SORUNLARI... 2

TS7200 PLATFORMU ÜZERİNDE SERİ PORT-ETHERNET DÖNÜŞTÜRÜCÜ UYGULAMASI

ANKARA EMEKLİLİK A.Ş GELİR AMAÇLI ULUSLARARASI BORÇLANMA ARAÇLARI EMEKLİLİK YATIRIM FONU 3 AYLIK RAPOR

AIMCO AIMCO. Kullanım Kılavuzu. Mayıs 2016

7. SINIF MATEMATİK TESTİ A. 1. Yandaki eşkenar dörtgensel bölge şeklindeki uçurtma I, II, III ve IV nolu

GEBZE TEKNİK ÜNİVERSİTESİ MİMARLIK FAKÜLTESİ MİMARLIK BÖLÜMÜ

ALPHA ALTIN RAPORU ÖZET 10 Kasım 2015

Bilgisayar Destekli Çizim I (MMR 205) Ders Detayları

Özet şeklinde bilgiler

Kolayca bağlanın %100. Acti 9: Daha fazla verimlilik. Acti 9 haberleşme sistemi, size ve müşterilerinize tam kontrol olanağını sağlar

BAĞLAMDAN BAĞIMSIZ VE BAĞLAMDAN BAĞIMSIZ OLMAYAN DİLLER (CONTEXT-FREE AND NON-CONTEXT-FREE LANGUAGES)

EĞİTİM BİLİMİNE GİRİŞ 1. Ders- Eğitimin Temel Kavramları. Yrd. Doç. Dr. Melike YİĞİT KOYUNKAYA

: 3218 Sayılı Serbest Bölgeler Kanunu Genel Tebliği (Seri No: 1) nde Değişiklik Yapılmasına Dair Tebliğ (Seri No: 3) yayımlandı.

BQ360 Modbus Dijital Giriş 24 Kanal. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

Dosya sistemi (File system), dosyaların hard disk üzerinde nasıl yerleşeceğini ayarlayan bir sistemdir. Diğer bir tanıma göre dosya sistemi, bir

2 Gemi Kiralama ve Demuraj-Dispeç Hesapları

KolayOfis Başlangıç Rehberi Kısa Mesaj Yönetimi

Şekil 1. Sistem Açılış Sayfası

Globalleşen dünyada ticaretin sınır ötesi bir hal alması, uluslararası boyut kazanması; mevcut kanunun tüm kuruluşları kapsamaması; AB ve diğer

Topoloji değişik ağ teknolojilerinin yapısını ve çalışma şekillerini anlamada başlangıç noktasıdır.

in Kullanımı tamamlamış gerçekleştirmiş

5. ÜNİTE KUMANDA DEVRE ŞEMALARI ÇİZİMİ

Milli Gelir Büyümesinin Perde Arkası

Döküm. Prof. Dr. Akgün ALSARAN

Reynolds Sayısı ve Akış Rejimleri

İSTANBUL TEKNİK ÜNİVERSİTESİ MİMARLIK FAKÜLTESİ, MİMARLIK BÖLÜMÜ YARI ZAMANLI ÖĞRETİM ÜYELERİ BİLGİ KİTAPÇIĞI

ULAKBİM Danışma Hizmetlerinde Yeni Uygulamalar: Makale İstek Sistemi ve WOS Atıf İndeksleri Yayın Sayıları Tarama Robotu

Kredi ve Diğer Finansman Sözleşmelerinde Tüketicinin Korunması

MİKRO İKTİSAT ÇALIŞMA SORULARI-10 TAM REKABET PİYASASI


ÖZEL LABORATUAR DENEY FÖYÜ

BİLGİ BELGE MERKEZİ VE YAYIN HİZMETLERİ

Bilgisayar Programlama. 1.Hafta

AN-500 FLASH POINT (Full Digital Tam Otomatik) (Kapalı Tip Alevlenme Noktası Tayin Cıhazı tanıtımı)

Transkript:

Derleyici Kuramı (Compiler Theory) Yrd. Doç. Dr. Şadi Evren ŞEKER Bu sunum, İstanbul Üniversitesi, Bilgisayar Mühendisliği, BMG dersi kapsamında hazırlanmıştır ve kavramlara genel bir giriş yapmayı hedefler.

Konular Temel Tanımlar ve Derleyici aşamaları Durum geçiş diyagramı ve örnek makine kodu üretilmesi Düzenli ifadeler (Regular Expressions) Sonlu Durum Makineleri (Finite State Machines ) İçerikten bağımsız gramer (Context Free Grammer, CFG)

Dil Seviyeleri Makine dilleri (İşletim sistemi ve Donanım bağımlı koddur) Düşük Seviyeli Diller (Assembly) Orta Seviyeli Diller (C) Yüksek Seviyeli Diller (JAVA, C#, Pascal, Fortran)

Derleyici Nedir? Bir dilden diğer bir dile çevirim yapan programlara verilir. Genel olarak çevirim, yüksek seviyeli bir dilden makine diline yapılmaktadır. Ayrıca Diller arası çevirim için kaynaktan kaynaya derleyici (source to source compiler) ve farklı ortamlara kod üreten derleyiciye çarpraz derleyici (cross compiler) isimleri verilir.

Derleyicinin çalışma aşamaları Analiz aşaması Yazım analizi (syntax analysis) Anlambilimsel analiz (Syntactic analysis) Kod Üretimi (Code Generation) Çalışma Zamanı (Run-Time) Geçişler sırasında veri yapılarının kullanımı

Geçişlerine Göre Derleyiciler Tek Geçişli Derleyiciler (One Pass Compilers) Çok Geçişli Derleyiciler (Multi Pass Compilers) İki Geçişli Derleyicisler (Two Pass Compilers)

Yorumlayıcılar (Interpreters) Tek geçişli çalışma ve bütün aşamaların her satır için işlenmesi Örnekler: Phyton, Perl, PHP

Yorumlaryıcı ve Derleyici arasındaki farklar Derleyiciler, programın analizi ve işlenmesi için daha fazla zaman gerektirirlerken yorumlayıcılar daha az analiz ile programı çalıştırırlar. Derleyiciler için sonuç, genelde makine bağımlı bir kod iken yorumlayıcılar için genelde orta seviye bir koddur. Derleyicilerin çıktısı, doğrudan işletim sistemi üzerinde çalışırken, yorumlayıcıların çıktısı genelde çalışmak için ilave bir programa ihtiyaç duyar. Derleyici çıktıları genelde hızlı çalışırken, yorumlayıcı çıktıları daha yavaş çalışır.

Örnek Derleyici Tasarımı Aşağıda anlatılan makineyi tasarlayıp makine kodu üretelim. Kullanıcı, makineye bozuk para atacak Kahve veya çay seçeneklerinden birisini seçecek Seçime uygun olarak bir ürün kullanıcıya verilecek.

Makinemizin Durum Geçiş Diyagramı (State Transition Diagram) K Kv B P Ç Çv B: Başlangıç Durumu P: Para atılmış Durum K: Kahve seçimi Ç: Çay Seçimi Kv: Kahve Verme Çv: Çay Verme

Makine Kodunun Çıkarılması Kodlarımız: Para atılması eylemi Seçim yapılması eylemi Ürün verilmesi eylemi Parametrelerimiz Seçim eylemi Kahve Çay Ürün verilmesi eylemi Kahve Çay Entropi: 3 farklı eylem bulunmakta 2'lik tabanda 2 hane kullanılacaktır. 2 farklı parametre bulunmakta 2'lik tabanda tek hane yeterlidir.

Durum Geçiş Diyagramında Makine Kodlarının Gösterimi 010 K 100 Kv B P 00 011 101 Ç Çv Örnek çalışma: para atılıp kahve alınması: 00010100 Eylemler Para atılması 00 Seçim 01 Ürün Verilmesi 10 Parametreler Kahve 0 Çay 1

Örnek Derleyici Çevirimi Kaynak Kod : 10. bekle(para Atılmasını); 20. bekle(düğmeye basılmasını) 30. şayet(kahveye basıldıysa) 40. kahve ver 50. 10. satıra dön 50. şayet (çaya basıldıysa) 70. çay ver 80. 10. satıra dön Yeni komutlar geldiği için entropi artar: Eski komutlar: 000 Para Atılması 001 Düğmeye basılması 010 Ürün verilmesi Yeni komutlar: 011 Şayet 100 Bekle 101 Git Derleyici Temsili Makine Kodu: 1. 100 000 2. 100 001 3. 011 001 000 4. 010 000 5. 101 001 6. 011 001 001 7. 010 001 8. 101 001

Dizilerin Kodlanması Hafıza (RAM) tek boyutludur. Birden fazla boyutlu dizilerin kodlanması. Örnek 2 boyutlu diziler (matrix) 1 2 3 4 5 6 Kolon bazlı Satır bazlı 1 2 3 4 5 6 1 4 2 5 3 6

Düzenli (Resmi) Diller (Regular Expressions) * (boş küme) kümenin boş olduğunu gösterir ve sembolü ile gösterilir * (boş kelime) ε, {ε} kümesi şeklinde gösterilir * (değişmez (literal) harf (charachter) ) dil kümesi Σ için {a} kümesi a harfini içerir.

Düzenli İfadelerde İşlemler * ( üleştirme (concatenation) ) RS gösterimi { αβ α, R için ve β, S için} kümesi şeklinde ifade edilir. Örneğin { ab, c } { d, ef } = { abd, abef, cd, cef }. * ( alternation (değişim veya seçim) ) R S gösteirmi R S lerin birleşim kümesini ifade eder. * (Kleene star) R* şeklinde ifade edilir ve R kümesindeki bütün concatenation (üleştirme) ihtimallerinin oluşturduğu kümeye denilir. Bu kümeye ε dahildir. Örneğin, { ab, c }* = {ε, ab, c, abab, abc, cab, cc, ababab, }.

Düzenli İfade Örnekleri * a b* -> {ε, a, b, bb, bbb, } * (a b)* gösterimi, a ve b sembollerinden oluşabilecek bütün kelimeleri ifade eder. * b*(ab*)* yukarıdaki örnek ile aynı sonucu verir * ab*(c ε) gösterimi, a kelimesi ile başlayan, ve sıfır veya istenilen miktarda b içeren son olarak da ister c ister ε ile biten kelimeleri ifade eder. * (aa ab(bb)*ba)*(b ab(bb)*a)(a(bb)*a (b a(bb)*ba)(aa ab(bb)*ba)*(b ab(bb)*a))*

Sonlu Durum Makineleri (Finite State Machines)

Kapı otomatına açma / kapama düğmesi eklenirse

Belirlilik (Determinism) DFA (deterministic finite automata) NFA (non-deterministic finite automata)

DFA NFA Çevirimi 0 0 1 1 q1 q0 q0 {q0,q1} {qo,q1} {q0,q1} {q0,q1,q2} {q0,q1,q2} {q0,q1,q2} {q0,q1,q2} 0,1 q0 1 1 0,1 1 q2 0 0 1,0 1 1 A B C 0 1 A A B B B C C C C

İçerikten Bağımsız Diller (Context Free Languages) sonlular (terminals) devamlılar (nonterminals), bağlantılar (relation) başlangıç sembolu (starting symbol) o G = ( V,, R, S) Bu gösterimdeki grammer (G), V devamlıları, sonluları, R bağlantıları, S ise başlangıç sembolünü göstermektedir.

CFG Örnek Örneğin S -> asb ab şeklinde tanımlanan bir dilde: G= ( {S}, {a,b}, {S -> asb ab}, S )

BNF (Backus Normal Form) <dil>::=<işlem> <işlem> ::= <işlem> + <terim> <işlem> <terim> <terim> <terim> ::= <terim> * <unsur> <terim> / <unsur> <unsur> <unsur> ::= sayı ( <işlem> ) <sayı> ::= 1 2 3 9 0

Parçalama Ağacı (Parse Tree) BNF: 4+8*(2-3)