Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

1 Diller nasıl yazılmıştır? İki ana strateji: –Yorumlayıcılar - Interpreters (eski ve az çalışılmıştır) –Derleyiciler - Compilers (yeni, daha yoğun çalşılmıştır)

Benzer bir sunumlar


... konulu sunumlar: "1 Diller nasıl yazılmıştır? İki ana strateji: –Yorumlayıcılar - Interpreters (eski ve az çalışılmıştır) –Derleyiciler - Compilers (yeni, daha yoğun çalşılmıştır)"— Sunum transkripti:

1 1 Diller nasıl yazılmıştır? İki ana strateji: –Yorumlayıcılar - Interpreters (eski ve az çalışılmıştır) –Derleyiciler - Compilers (yeni, daha yoğun çalşılmıştır) Yorumlayıcılar programı “olduğu gibi” çalıştırır –Önişlem- preprocessing- az veya hiç yoktur Derleyiciler yoğun bir önişleme yapar –Genelde derleyiciler kullanılır

2 2 Bir Derleyicinin Yapısı 1.Sözcüksel Çözümleme/analiz-Lexical Analysis 2.Gramer incelemesi veya sözdizimsel analiz- Parsing 3.Anlamsal analiz-Semantic Analysis 4.Optimizasyon 5.Kod üretme-Code Generation İlk üç madde insanların dil anlama yöntemine benzer şekilde anlaşılabilir.

3 3 Sözcüksel Analiz İlk basamak: sözcükleri tanımak. –Harflerin üzerindeki en küçük dil birimidir Bu bir cümledir. Not –Büyük harf “B” (cümle başı sembolü) –Boşluk “ “ (sözcük ayracı) –Nokta “.” (Cümle sonu sembolü)

4 4 Sözcüksel Analiz Detayları Sözcüksel Analiz çok basit değildir. Örneğin: bub irc üml emi dir Ek olarak programlama dilleri normal dillerden genelde daha şifrelidir: *p->f += -.12345e-5

5 5 Sözcüksel Analiz Detayları Sözcüksel analizci program metnini “sözcüklere” (“words”) sembollere(“tokens”) ayırır if x == y then z = 1; else z = 2; Birimler: if, x, ==, y, then, z, =, 1, ;, else, z, =, 2, ;

6 6 Sözdizimsel analiz Sözcükler anlaşıldıktan sonraki basamakta sıra cümle yapısını anlamaya gelir Sözdizimsel analiz = Cümlenin şekilsel(diyagramatik) gösterimi –Diyagram bir ağaç yapısıdır

7 7 Cümlenin Diyagramatik Gösterimi Thislineisalongersentence verbarticlenounarticleadjectivenoun subjectobject sentence

8 8 Programların Sözdizimsel Analizi Program ifadelerinin sözdizimsel analizi de benzer şekilde yapılır Örneğin: If x == y then z = 1; else z = 2; Diyagramı: if-then-else xyz =1 2== assignrelationassign predicateelse-stmtthen-stmt

9 9 Anlamsal Analiz: Semantic Analysis Cümle yapısı anlaşıldıktan sonra, şimdi “anlamın” ne olduğunu çözmeye çalışabiliriz –Ancak derleyiciler için anlamı çözmek çok zordur Derleyiciler tutarsızlıkları yakalamak için sınırlı bir analiz yaparlar Bazıları ise performansı artırmak için daha fazla analiz yapabilirler

10 10 İngilizce’de Anlamsal Analiz Örnek: Jack said Jerry left his assignment at home. Burada “his” kimin için kullanılmıştır? Jack mi Jerry mi? Daha kötüsü: Jack said Jack left his assignment at home? Bu durumda kaç tane Jack vardır? Hangisi ödevini evde bırakmıştır?

11 11 Programlamada Anlamsal Analiz Programlama dilleri bu tür belirsizlikleri önlemek için katı kurallar tanımlarlar Bu C++ kodunun çıktısı “4” olur; en içteki tanımlama kullanılmıştır { int Jack = 3; { int Jack = 4; cout << Jack; }

12 12 Daha Fazla Anlamsal Analiz Derleyiciler değişken bağlamanın(variable bindings) yanında pek çok anlamsal kontrol de yaparlar Örnek: Jack left her homework at home. Tip uyuşmazlığı(“type mismatch”): her ve Jack arasında; bu iki sözcük farklı kişiler olmalı –Jack muhtemelen bir erkek olmalı

13 13 Optimizasyon İngilizce için tam karşılığı olmamakla birlikte redaksiyona(editing) benzemektedir Programları otomatik olarak değiştirerek –Daha hızlı çalışmasını –Daha az bellek kaplamasını ve –Genel olarak kaynak kullanımında tutumlu davranmayı sağlamaktadır

14 14 Optimizasyon Örnekleri X = Y * 0 ifadesi X = 0 şeklinde yazılabilir NO!

15 15 Kod üretimi (Genelde) assembly kodu üretir –Bu daha sonra assembler(çevirici, toplayıcı) tarafından çalıştırılabilir koda çevrilir Başka bir dile çeviridir –İnsanların yaptığı çeviriyle özdeşleştirilebilir

16 16 Sonuçlar Derleme genelde bu kadar basittir, ama çok gizli tuzaklarla karşılaşılaşmak mümkündür Örnek: Hatalı programlar nasıl ele alınacaktır? Dil dizaynının derleyici üzerinde önemli etkisi vardır –Neyin kolay neyin zor derleneceğini belirler –Dersin teması: dil dizaynı yaparken gözönünde bulundurulması gerekenler

17 17 Günümüzde Derleyiciler Genel olarak bütün derleyiciler bu yapıya uygunluk gösterir FORTRAN’dan bu yana oranlar değişmiştir –Önce: sözcüksel analiz, sözdizimsel analiz daha karmaşıktı ve pahalıydı –Bugün: optimizasyon diğer safhalara göre daha önemlidir; sözcüksel analiz, sözdizimsel analiz daha ucuzdur

18 18 Derleyicilerdeki Yönelimler Optimizasyonu hız için kullanmak çok gerekli değildir. Ancak: –Bilimsel programlarda –İleri işlemcilerde (DSP-Digital Signal Processors, advanced speculative architectures) –Küçük cihazlarda(hız = daha uzun pil ömrü) gerekebilir Kodun güvenilirliğini artırmak için derlemede ele alınan konular: –Bellek güvenliği –Uyumluluk sorunlarını(concurrency errors) tespit etmek...

19 19 Yöenelimler Derleyiciler –Daha çok ihitiyaç duyulmakta ve daha karmaşıklaşmaktadır –Yeni diller ve yeni mimariler arasındaki farklılıklara bağımlı olarak gelişmektedir –Önemle çalışılan ve sağlıklı bir gelişim sergileyen geliştirilen bir alandır


"1 Diller nasıl yazılmıştır? İki ana strateji: –Yorumlayıcılar - Interpreters (eski ve az çalışılmıştır) –Derleyiciler - Compilers (yeni, daha yoğun çalşılmıştır)" indir ppt

Benzer bir sunumlar


Google Reklamları