Top Banner

of 6

Derleyicinin Tarihi

Aug 07, 2018

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/20/2019 Derleyicinin Tarihi

    1/13

    Derleyicinin Tarihi

    Üzerinde assembly dili ile program yazılabilen ilk bilgisayarlar 1950’lerde üretildiler. Ancak assembly ile hızlı kod yazımı ve büyük pro elerin geli!tirilmesi "ok #z#n zaman alıyord#.

    195$’te %ohn &ack#s ilk yor#mlayıcıyı üretti ancak b# assembly kod#ndan daha yava!"alı!ıyord#. 195'’da &ack#s ve arkada!ları( )*+,+A- dilinin ilk derleyicisini üretti inde isehız sor#n# a!ılmı! old#.

    Derleyici

    /n genel tanımı ile bir derleyici (compiler)( belli bir dille yazılmı! program metnini giri!olarak alan ve metnin anlamını bozmadan ba!ka bir dildeki program metinine d nü!türen bir programdır. süre" "eviri (translation) olarak adlandırılır. &ütün derleyiciler bir giri!

    dilinden (kaynak kod) sadece bir "ıkı! diline (hedef dil) "eviri ger"ekle!tirir. radakikaynak kod dili ile yazılmı! bil dil olabilir. 2ede3 dil ise 4enti#m i!lemci serisi i"in makinekod# olabilir.

    &ir derleyici elde etmek i"in derleyicinin kaynak kod#ndan meydana gelen ve derleyici i"in"alı!tırılabilir kodlar üreten ba!ka bir derleyici k#llanılır.

    ekil61 otomatik "eviri paradigmasına

    7ünümüzdeki derleyiciler otomatik "eviri paradigmasına #yg#n olarak geli!tirilirler. sebeple iki ana bile!enden ol#!#rlar8 aynak dil metninin analizini ger"ekle!tiren derleyicinin par"ası n6#" :3ront6end; olarak adlandırılırken hede3 dil sentezinin yapıldı ı arka6#" :back6

    end; olarak adlandırılır.

  • 8/20/2019 Derleyicinin Tarihi

    2/13

    ekil6<

    Yorumlama

    / er ekil6or#mlama kar!ıla!ılan i3adenin her de3asında tekrar bütün dil yapısı i"inden b#l#n#p analizedilmesi gerekti inden dolayı derlemeden "ok daha yava!tır. n#nla birlikte e er bir hataylakar!ıla!ılırsa daha kaynak program üzerinde "alı!ılıyor ol#nmasından dolayı hatanın yerikolayca tespit edilebilir. da program geli!tirme de "ok büyük bir yardım sa lar.

  • 8/20/2019 Derleyicinin Tarihi

    3/13

    ekil6$ =erleme ve >or#mlama ?üre"leri

    Derlemede;

    4rogram süreci nemlidir ?on#"lanan ara 3orm dü!ük seviyelidir :makine kod#;

    >or#mlama mekanizması donanım i!lemcisidir.4rogram @yg#laması kıyasla hızlıdır

    Yorumlamada;

    4rogram #yg#laması minim#md#r ?on#"lanan ara 3orm yüksek seviyelidir >or#mlama mekanizması programdır 4rogram #yg#laması kıyasla yava!tır.

    İyi ir derleyicinin !zellikleri

    yi bir derleyicinin en nemli zelli i do r# kod üretebilmesidir. &ir derleyicinin dilinzelliklerine tamamen #yması da nemlidir.

    =erleme hızı da bir kon#d#r 3akat "ok nemli de ildir. ü"ük programların hızlı makineler üzerinde birka" saniyede derlenebilirler. =aha büyük programlama pro eleri genellikle alt programlarda organize edilirler :modüller( kütüphane yordamları vb.;. b#nlar derleyici birimleri olarak adlandırılırlar. derleme birimlerinden her biri ayrı ayrı derlenebilir.

  • 8/20/2019 Derleyicinin Tarihi

    4/13

    =erleyici büyüklü ü hemen hi" nemli bir kon# de ildir. gün bir"ok bilgisayarda bellek problemi yokt#r.

    &ir derleyicinin k#llanıcı dost# olması hata raporlama kalitesi ile l"ülebilir. 2atanın nedeninii"eren a"ık bir mesa k#llanıcıya s#n#lmalıdır. 7er"ekten iyi bir hata tanımlaması vermek genelde zor ya da imkBnsızdır.

    2ızın ve üretilen kod#n zelli inin nemi tamamen derleyicinin amacına ba lıdır.

    "asit "ir Derleyici Yapısı

    &asit bir derleyici en az bir s zcük analizi :leCical;( bir s zdizimi analizi :syntaC; ve bir i"erik

    y netimi :conteCt handler; blo #ndan ol#!#r. süre" n6#" :3ront6end; olarak adlandırılır.

    &ir programlama dilinin tercüme edilmesinin birka" mantıksal evresi vardır. evreler e!zamanlı ve ardı!ık zamanlı olarak "alı!abilirler.

    ekil6D &asit bir derleyici yapısı

    #e$ical %naliz EscannerF da denir. =erlemenin ilk evresidir ve tek ba!ına metin i"erisindeanlamı olmayan karakterleri mantıksal olarak gr#p yapar. Grne in HI’( H2’( HJ’( HK’ ve H/’har3lerinin EI2JK/F kelimesini ol#!t#rabilece i a"ıktır.

  • 8/20/2019 Derleyicinin Tarihi

    5/13

    &ynta$ %naliz &ütün programı analiz eder ve leCical analiz de yapılanın bir üst evresiniger"ekle!tirir. evrede scanner’ın ol#!t#rd# # kü"ük gr#pları :token; daha büyük gr#plarad nü!türür. Lesela i3adeler( d ngüler( altprogramlar gibi... nlar ana programı ol#!t#r#r.

    rnekte ayrı!tırma i!lemini kolayla!tırmak i"in H:H ve H;’ sembolleri k#llanılmı!tır.*perat r olarak da sadece HM’ ve HN’ operat rleri k#llanılmı!tır. radaki yapı $( :5NO; ve:

  • 8/20/2019 Derleyicinin Tarihi

    6/13

    "asit "ir Derleyici ' & zc k %nalizi

    &ir leCical analiz aracı !# ü" !eyi yapabilmelidirR

    1. &ütün bo!l#kları ve a"ıklamaları temizlemeli(

  • 8/20/2019 Derleyicinin Tarihi

    7/13

    "asit "ir Derleyici ' &ynta$ %nalizi

    >apısal programlamada ortaya "ıkan iki temel g rev vardırR

    7irdiyi anlamlı alt par"alara ayırmak

    alt par"alar arasındaki ili!kiyi ortaya koymak(

    ? zdizimi analizindeki hede3 elimizdeki tokenlerden ol#!an listenin dilin s zdizimine #yg#nol#p olmadı ını belirlemektir. Ayrıca ? zdizimi analizin g revi bir A?,’nin giri!iniyapılandırmaktır. A!a ıdaki gramer yapısı iki basit &oolean ok#ma yordamı ile ok#nabilir.

  • 8/20/2019 Derleyicinin Tarihi

    8/13

    4arseQoperator :;TTTTTTTTTT.operator i"in

    4arseQeCpression :;TTTTTTTTT.eCpression i"in

    2er iki yordamda a!a ıdaki kod satırlarında g sterilmi!tir ve ayrı!tırıcının sürücüsü4arseQeCpression:; i"in ba!langı" "a rısını i"erir.

  • 8/20/2019 Derleyicinin Tarihi

    9/13

  • 8/20/2019 Derleyicinin Tarihi

    10/13

    2er bir yordam anlamsal yapıyı ok#maya "alı!ır. i!lemi ger"ekle!tirirken !# y ntemleri#yg#lar8 - i"in yordam sıradaki -’nin alternati3lerini ok#maya "alı!ır. 2er bir alternati3 A i"inon#n ilk elemanı A1’i ok#maya "alı!ır. / er A1 b#l#n#rsa yordam A’nın do r# se"enek old# #n# ve sonra di er A’nın elemanlarının varlı ının gerektirece ini dü!ünür.

    / er yordam b# y ntemle anlamsal yapıyı ok#yabilirse bir "ıkı! parametresi olarak A?,’ye#yg#n gelen bir i!aret"i sa lar :"ıkı! de erinin saklanması i"in;. / er yordam -’nin her hangi bir alternati3inin ilk üyesini b#lamazsa hi"bir giri! alamaz ve bir "ıkı! parametresi üretemez:ret#rn 0;.

  • 8/20/2019 Derleyicinin Tarihi

    11/13

    yakla!ım recursive descent parsin+- olarak adlandırılır. Uünkü 3onksiyonlar ayrı!tırmaa acını k#rmak i"in a!a ıya do r# tekrarlanıyor. y ntem old#k"a zayı3 bir ayrı!tırmay ntemidir.

    ,eoride( 3arklı anlamsal yapıların A?,’leri i"in 3arklı dü üm tiplerine sahip olabilmemizera men onların sını3larda gr#plandırılması ve b# sını3ların her biri i"in yalnızca bir dü üm tipi

    olması daha #yg#nd#r. ayrı!tırma a a"ları arasındaki 3arklardan biridir.

    Uok daha zelde( bizim rne imizde bir i3adedeki bütün dü ümler EeCpressionF tipindedir ve b# tipteki dü ümlerin ayrımı i"in her bir dü üm bir EtypeF zelli i alır :H=’ digit( H4’ parantez;. EtypeF bize dü ümlerin geri kalanındaki alanların nasıl yor#mlanaca ını s yler.&a!ka bir yor#mlama Ekod üreteciF ya da Eyor#mlayıcıF i"in gereklidir.

    =ü üm tipi EeCpressionF’ın tanımlanması ile ba!lık dosyası :header 3ile; !ekildeg sterilmi!tir.

  • 8/20/2019 Derleyicinin Tarihi

    12/13

  • 8/20/2019 Derleyicinin Tarihi

    13/13

    odeQgenQeCpression :; yordamı parametresinin niteli ini :type ; on#n bir digit dü ümü müyoksa bir parantez i3adesi dü ümü mü old# #n# kontrol eder. 2er iki d#r#mda da yı ının enüstüne olası de eri koymak i"in kod üretmek zor#ndadır. / er giri! dü ümü bir digit dü ümseyordam de eri direk olarak dü ümden elde eder ve yı ının üzerine eklemek i"in kod# üretir.&ir 4@?2 kom#t# üretir. ,am tersi giri! dü ümü bir parantez i3adesi dü ümüyse yordam

    ncelikle le3t ve right i!levleri i"in kod üretecektir ve daha sonra A== ya da L@K,kom#tlarını üretecektir.

    7iri! olarak :