1 / 19

Diller nasıl yazılmıştır ?

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

locke
Download Presentation

Diller nasıl yazılmıştır ?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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ılarprogramı “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. Bir Derleyicinin Yapısı • Sözcüksel Çözümleme/analiz-Lexical Analysis • Gramer incelemesi veya sözdizimsel analiz- Parsing • Anlamsal analiz-Semantic Analysis • Optimizasyon • Kod üretme-Code Generation İlk üç madde insanların dil anlama yöntemine benzer şekilde anlaşılabilir.

  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. 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. Sözcüksel Analiz Detayları • Sözcüksel analizciprogram 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. 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. This line is a longer sentence article noun verb article adjective noun subject object sentence Cümlenin Diyagramatik Gösterimi

  8. x == y z = 1 z = 2 relation assign assign predicate then-stmt else-stmt if-then-else Programların Sözdizimsel Analizi • Program ifadelerinin sözdizimsel analizide benzer şekilde yapılır • Örneğin: If x == y then z = 1; else z = 2; • Diyagramı:

  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. İ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. 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; } } Programlamada Anlamsal Analiz

  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”):herveJack arasında; bu iki sözcük farklı kişiler olmalı • Jack muhtemelen bir erkek olmalı

  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. Optimizasyon Örnekleri X = Y * 0 ifadesiX = 0 şeklinde yazılabilir NO!

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

More Related