Derleyici Tasarımı

DERLEYİCİ TASARIMI
Derleme Süreci
Linux çekirdeğinin geliştirme süreci tamamen gönüllü eforlara dayanmaktadır. Bu sebeple ticari dünyanın aksine sıkı tanımlanmış yol haritaları veya her X ayda bir çıkartılması beklenen sürüm hedefleri bulunmaz. Bunun yerine teknik olarak izlenecek rehberler tariflenmiş olup bu çerçevede proje her türden katkıya sürekli açık durumdadır. Elbette bazı önemli geliştirmelerin geniş bir geliştirici kitlesiyle tartışılması, belli başlı kararlar alınması ve bazen bu kararlar neticesinde hatırı sayılır oranda yapısal değişikliklere gidildiği de olmaktadır.

Regular İfadeler
Düzenli ifadeler, bütün modern programlama dillerinin parçasıdır. Bütün programlama dillerinde bu ifadeler aynı söz dizimine sahiptir. Düzenli ifadeler bir katarın kısa yoldan ve esnek bir biçimde belirlenmesini sağlar. Düzenli ifadeler ile bu katara bir kalıp atanır ve bu kalıbın da program içindeki bu katarın bütün eşlenik ifadelerine geri dönmesi sağlanır. Böylece program içinde arama yapma veya yer değiştirme gibi olaylar kolayca yerine getirilebilir.

Lexical Analiz
Lexical analiz, karakter dizisini, token dizisine çevirme işlemine denir. Token dediğimiz şey ise, bir veya daha fazla karakterden oluşan ve grup olarak önem taşıyan karakter dizisi demek. Bu analizi yapan kodlara lexer denir. Çoğu zaman, lexer’ ların oluşturduğu token dizisi, parser tarafından işlenir. Bunlar bir dil oluşturmak ve bu dili analiz etmek için kullanılır.
Lexical analiz için, çeşitli yöntemler kullanılabilir.
  • Düzenli İfadeler: Düzenli ifadeler, bu tip işler için kullanılabilir. Düzenli ifadeler çok gelişmiş araçlardır. Ancak, bunlar lexer için biraz fazla kaçabilir. Ayrıca, yazılan kurallara bağlı olarak, çok yavaş çalışabilirler.
  • Lexer ve Parser oluşturucu araçlar: Örneğin, lex/yacc, flex/bison, ply gibi araçlar, lexer ve parser oluşturmak için kullanılabilir. Ancak duyduğuma göre, bunlar çok genel amaçlı araçlar olduğu için, en ufak iş için bile, gereğinden fazla kod oluşturuyorlarmış. Ayrıca, yavaş çalıştıklarını da duymuştum.
  • Lexer yazmak: lexer yazmak çok zor iş değil. Kendi kullanım alanınızla tam entegre olur ve gereğinden fazla kod üretmez. Ayrıca, lexer' ın çalışma yapısı üzerinde tam hakimiyet sahibi olursunuz.
Syntax Analiz
Söz dizimsel analiz, sözdizimini (syntax) veya cümleyi oluşturan morfolojik öğelerin hiyerarşik kurallara uyumunu karşılaştırarak ölçümlemektir. Böylece söz dizimin anlamlı olup olmadığının ölçülebilmesi için düzenleyici bir süreç gerçekleşmiş olur. Bu safhaya ihtiyaç duymayan doğal diller olsa bile birçok doğal dil bu işlemi zorunlu kılar. Söz dizimsel analiz için birçok çözüm düşünülmüş olsa da en çok tercih edilen çözüm şekilleri: Dilin söz dizimsel yapısının gramer adı verilen tanımlayıcı şeklinde gösterilmesi Dilin tanımlanmış grameri temelinde onun genel yapısının oluşturulmasıdır.

Kod Optimizasyonu
FrontPage ile hazırlamış olduğunuz sayfalar Internet Explorer içerisinden kusursuz olarak görüntülenebilirler. Ancak aynı sayfaların diğer web tarayıcılarında (Netscape gibi) düzgün görüntüleneceğinin bir garantisi yoktur. Bu yüzden, profesyonel amaçlı site hazırlayan kişiler için FrontPage yeterince kullanışlı olmayabilir. En azından FrontPage ile hazırlanan bir sayfanın kodlarının HTML dilini bilen bir kişi tarafından düzenlenmesi gerekebilir. Hatta bu sayede dosyanın boyutunu küçültmek ve internet tarayıcısı içerisinde görüntülenme hızını artırmak bile mümkün olabilir.

Dinamik Bellek Yönetimi
Bir C programı içerisinde, dizilerin boyutu ve kaç elemanlı olduğu program başında belirtilirse, derleyici o dizi için gereken bellek alanını (bölgesini) program sonlanıncaya kadar saklı tutar ve bu alan başka bir amaç için kullanılamaz. Bu türden diziler statik dizi olarak isimlendirilir. Statik dizinin boyutu programın çalışması esnasında değiştirilemez. Fakat programın çalışırken bir dizinin boyutu ve eleman sayısı bazı yöntemler kullanılarak değiştirilebilir. Bu tür dizilere dinamik dizi denir. Dinamik diziler için gereken bellek bölgesi, derleyici tarafından işletim sisteminden istenir, kullanılır ve daha sonra istenirse bu bölge boşaltılır. 


Yorumlar

Bu blogdaki popüler yayınlar

VLSI Devre Tasarımı

Yapay Sinir Ağlarına Giriş

İnsan Bilgisayar Etkileşimi