Örnekle Derleyicinin Aşamaları: Derleme Süreci ve Adımları

Derleyici Tasarımının Aşamaları Nelerdir?

derleyici çeşitli aşamalarda çalışır, her aşama kaynak programı bir temsilden diğerine dönüştürür. Her aşama bir önceki aşamadan girdi alır ve çıktısını derleyicinin bir sonraki aşamasına besler.
Bir derleyicide 6 aşama vardır. Bu aşamaların her biri, üst düzey dili makine koduna dönüştürmeye yardımcı olur. Bir derleyicinin aşamaları şunlardır:

  1. Sözcüksel analiz
  2. Sözdizimi analizi
  3. Anlamsal çözümleme
  4. Orta seviye kod üreteci
  5. Kod iyileştirici
  6. Kod üreteci
Derleyicinin Aşamaları
Derleyicinin Aşamaları

Tüm bu aşamalar, kaynak kodunu tokenlere bölerek, ayrıştırma ağaçları oluşturarak ve kaynak kodunu farklı aşamalarla optimize ederek dönüştürür.

Aşama 1: Sözcüksel Analiz

Sözcüksel Analiz, derleyicinin kaynak kodunu taradığı ilk aşamadır. Bu işlem soldan sağa, karakter karakter gerçekleştirilebilir ve bu karakterler jetonlar halinde gruplandırılabilir.
Burada kaynak programdan gelen karakter akışı, belirteçler tanımlanarak anlamlı diziler halinde gruplandırılır. İlgili biletlerin sembol tablosuna girişini yapar ve o tokenı bir sonraki aşamaya geçirir.
Bu aşamanın temel işlevleri şunlardır:

  • Kaynak kodundaki sözcük birimlerini tanımlama
  • Sözcük birimlerini sabitler, ayrılmış sözcükler gibi sınıflara ayırın ve bunları farklı tablolara girin. Kaynak programdaki yorumları yoksayacaktır
  • Dilin bir parçası olmayan belirteci tanımlayın

Örnek E-posta:
x = y + 10

Jeton

X tanımlayıcı
= Atama operatörü
Y tanımlayıcı
+ Toplama operatörü
10 Numara

Aşama 2: Sözdizimi Analizi

Sözdizimi analizi tamamen koddaki yapıyı keşfetmeyle ilgilidir. Bir metnin beklenen formata uyup uymadığını belirler. Bu aşamanın temel amacı programcının yazdığı kaynak kodun doğru olup olmadığından emin olmaktır.
Sözdizimi analizi, ayrıştırma ağacının belirteçler yardımıyla oluşturularak belirli programlama diline dayalı kurallara dayanmaktadır. Aynı zamanda kaynak dilin yapısını ve dilin gramerini veya sözdizimini de belirler.
Bu aşamada gerçekleştirilen görevlerin listesi aşağıda verilmiştir:

  • Sözcüksel analizciden belirteçler alın
  • İfadenin sözdizimsel olarak doğru olup olmadığını kontrol eder
  • Tüm sözdizimi hatalarını bildirin
  • Ayrıştırma ağacı olarak bilinen hiyerarşik bir yapı oluşturun

Örnek E-posta

Herhangi bir tanımlayıcı/numara bir ifadedir
Eğer x bir tanımlayıcı ve y+10 bir ifade ise, x= y+10 bir ifadedir.
Aşağıdaki örnek için ayrıştırma ağacını göz önünde bulundurun

(a+b)*c

Sözdizimi Analizi Örneği

Ayrıştırma Ağacında

  • İç düğüm: operatör dosyasıyla kayıt ve çocuklar için iki dosya
  • Yaprak: 2/daha fazla alana sahip kayıtlar; biri jeton ve jetonla ilgili diğer bilgiler için
  • Programın bileşenlerinin anlamlı bir şekilde birbirine uyduğundan emin olun
  • Tür bilgilerini toplar ve tür uyumluluğunu kontrol eder
  • İşlenenlere kaynak dil tarafından izin verildiğini kontrol eder

Aşama 3: Anlamsal Analiz

Anlamsal analiz, kodun anlamsal tutarlılığını kontrol eder. Verilen kaynak kodunun anlamsal olarak tutarlı olduğunu doğrulamak için önceki aşamanın sözdizimi ağacını sembol tablosuyla birlikte kullanır. Ayrıca kodun uygun bir anlam taşıyıp taşımadığını da kontrol eder.
Anlamsal Analizör, Tür uyuşmazlıklarını, uyumsuz işlenenleri, uygunsuz argümanlarla çağrılan bir işlevi, bildirilmemiş bir değişkeni vb. kontrol edecektir.
Anlamsal analiz aşamasının işlevleri şunlardır:

  • Toplanan tür bilgilerini saklamanıza ve bunu sembol tablosuna veya sözdizimi ağacına kaydetmenize yardımcı olur
  • Tip kontrolü yapmanızı sağlar
  • İstenilen işlemi karşılayan kesin tip düzeltme kurallarının olmadığı tip uyuşmazlığı durumunda anlamsal bir hata gösterilir.
  • Tip bilgilerini toplar ve tip uyumluluğunu kontrol eder
  • Kaynak dilin işlenenlere izin verip vermediğini kontrol eder

Örnek E-posta

float x = 20.2;
float y = x*30;

Yukarıdaki kodda anlamsal çözümleyici, çarpma işleminden önce 30 tamsayısını kayan nokta 30.0 olarak yazacaktır.

Aşama 4: Ara Kod Oluşturma

Anlamsal analiz aşaması bittiğinde derleyici, hedef makine için ara kod üretir. Bazı soyut makineler için bir programı temsil eder.
Ara kod, üst düzey dil ile makine düzeyi dil arasındadır. Bu ara kodun, hedef makine koduna çevrilmesini kolaylaştıracak şekilde oluşturulması gerekir.
Ara Kod oluşturmadaki işlevler:

  • Kaynak programın anlamsal temsilinden oluşturulmalıdır.
  • Çeviri işlemi sırasında hesaplanan değerleri tutar
  • Ara kodu hedef dile çevirmenize yardımcı olur
  • Kaynak dilin öncelik sırasını korumanıza olanak tanır
  • Talimatın doğru sayıda işlenenini tutar

Örnek E-posta

Örneğin,

total = count + rate * 5

Adres kodu yönteminin yardımıyla ara kod:

 
t1 := int_to_float(5) 
t2 := rate * t1 
t3 := count + t2
total := t3

Aşama 5: Kod Optimizasyonu

Bir sonraki aşama kod optimizasyonu veya Ara koddur. Bu aşama, gereksiz kod satırını ortadan kaldırır ve kaynakları israf etmeden programın yürütülmesini hızlandırmak için ifadelerin sırasını düzenler. Bu aşamanın temel amacı, daha hızlı çalışan ve daha az yer kaplayan bir kod oluşturmak için ara kodu geliştirmektir.
Bu aşamanın temel işlevleri şunlardır:

  • Yürütme ve derleme hızı arasında bir denge kurmanıza yardımcı olur
  • Hedef programın çalışma süresini iyileştirir
  • Halen ara gösterimde olan kolaylaştırılmış kod üretir
  • Ulaşılamayan kodu kaldırma ve kullanılmayan değişkenlerden kurtulma
  • Döngüden değiştirilmeyen ifadelerin kaldırılması

Örnek:
Aşağıdaki kodu göz önünde bulundurun

a = intofloat(10)
b = c * a
d = e + b
f = d

Olabilir

b =c * 10.0
f = e+b

Aşama 6: Kod Oluşturma

Kod oluşturma, derleyicinin son ve son aşamasıdır. Kod optimizasyon aşamalarından girdi alır ve sonuç olarak sayfa kodunu veya nesne kodunu üretir. Bu aşamanın amacı depolamayı tahsis etmek ve yeri değiştirilebilen makine kodu oluşturmaktır.
Ayrıca değişken için bellek konumlarını da ayırır. Ara koddaki talimatlar makine talimatlarına dönüştürülür. Bu aşama, optimize veya ara kodun hedef dile aktarılmasını kapsar.
Hedef dil makine kodudur. Bu nedenle tüm hafıza konumları ve kayıtları da bu aşamada seçilir ve tahsis edilir. Bu aşamada oluşturulan kod, girdileri almak ve beklenen çıktıları üretmek için yürütülür.

Örnek E-posta

a = b + 60.0
Muhtemelen kayıtlara çevrilecektir.

MOVF a, R1
MULF #60.0, R2
ADDF R1, R2

Sembol Tablosu Yönetimi

Bir sembol tablosu, tanımlayıcının özniteliklerine ilişkin alanları içeren her tanımlayıcı için bir kayıt içerir. Bu bileşen, derleyicinin tanımlayıcı kaydı aramasını ve hızlı bir şekilde almasını kolaylaştırır. Sembol tablosu aynı zamanda kapsam yönetimi konusunda da size yardımcı olur. Sembol tablosu ve hata işleyicisi tüm aşamalarla etkileşime girer ve buna uygun olarak sembol tablosu güncellemesi yapılır.

Hata İşleme Rutini

Derleyici tasarım sürecinde hata aşağıda belirtilen aşamaların tümünde meydana gelebilir:

  • Sözcük analizörü: Yanlış yazılan belirteçler
  • Sözdizimi analizörü: Eksik parantez
  • Orta düzey kod üreteci: Bir operatör için uyumsuz işlenenler
  • Kod Optimize Edici: İfadeye ulaşılamadığında
  • Kod Generator: Bellek dolduğunda veya uygun kayıtlar ayrılmadığında
  • Sembol tabloları: Bildirilen birden fazla tanımlayıcı hatası

En yaygın hatalar, taramada geçersiz karakter dizisi, türde geçersiz belirteç dizileri, kapsam hatası ve anlamsal analizde ayrıştırmadır.
Hatayla yukarıdaki aşamaların herhangi birinde karşılaşılabilir. Hataları bulduktan sonra, derleme sürecine devam etmek için hatalarla ilgilenme aşaması gerekir. Bu hataların, derleme işlemini gerçekleştirmek için hatayı işleyen hata işleyicisine bildirilmesi gerekir. Genellikle hatalar mesaj şeklinde bildirilir.

ÖZET

  • Derleyici çeşitli aşamalarda çalışır, her aşama kaynak programı bir gösterimden diğerine dönüştürür
  • Altı aşama derleyici tasarımı 1) Sözcüksel analiz 2) Sözdizimi analizi 3) Anlamsal analiz 4) Ara kod üreteci 5) Kod iyileştirici 6) Kod Generator
  • Sözcüksel Analiz, derleyicinin kaynak kodunu taradığı ilk aşamadır
  • Sözdizimi analizi tamamen metindeki yapıyı keşfetmeyle ilgilidir
  • Anlamsal analiz, kodun anlamsal tutarlılığını kontrol eder
  • Anlamsal analiz aşaması bittiğinde derleyicide hedef makine için ara kod oluşturun
  • Kod optimizasyon aşaması gereksiz kod satırını ortadan kaldırır ve ifadelerin sırasını düzenler
  • Kod oluşturma aşaması, kod optimizasyon aşamasından girdiler alır ve sonuç olarak sayfa kodunu veya nesne kodunu üretir.
  • Bir sembol tablosu, tanımlayıcının özniteliklerine ilişkin alanları içeren her tanımlayıcı için bir kayıt içerir
  • Hata işleme rutini birçok aşamada hatayı ve raporları ele alır

Günlük Guru99 Bülteni

Gününüze, şu anda elinize ulaşan en son ve en önemli yapay zeka haberleriyle başlayın.