Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanKamer Akkas Değiştirilmiş 9 yıl önce
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
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.