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
Yorum Gönder