Derleyici Tasarımı - Derleyicinin Aşamaları
Derleme süreci, çeşitli aşamalardan oluşan bir dizidir. Her aşama önceki aşamasından girdi alır, kendi kaynak program temsiline sahiptir ve çıktısını derleyicinin bir sonraki aşamasına besler. Bir derleyicinin aşamalarını anlayalım.
Sözcüksel Analiz
Tarayıcının ilk aşaması bir metin tarayıcı olarak çalışır. Bu aşama, kaynak kodunu bir karakter akışı olarak tarar ve anlamlı sözcük birimlerine dönüştürür. Sözcüksel analizci, bu sözcükleri şu simgeler biçiminde temsil eder:
<token-name, attribute-value>
Sözdizimi Analizi
Sonraki aşamaya sözdizimi analizi denir veya parsing. Sözlük analizi ile üretilen belirteci girdi olarak alır ve bir ayrıştırma ağacı (veya sözdizimi ağacı) oluşturur. Bu aşamada, simge düzenlemeleri kaynak kod dilbilgisine göre kontrol edilir, yani ayrıştırıcı, simgeler tarafından yapılan ifadenin sözdizimsel olarak doğru olup olmadığını kontrol eder.
Anlamsal Analiz
Anlamsal analiz, oluşturulan ayrıştırma ağacının dil kurallarına uyup uymadığını kontrol eder. Örneğin, değerlerin atanması, uyumlu veri türleri arasında ve bir tamsayıya dize eklemedir. Ayrıca, anlamsal çözümleyici, tanımlayıcıları, bunların türlerini ve ifadelerini izler; tanımlayıcıların kullanımdan önce bildirilip bildirilmediği vb. Anlamsal çözümleyici çıktı olarak açıklamalı bir sözdizimi ağacı üretir.
Ara Kod Üretimi
Anlamsal analizden sonra derleyici, hedef makine için kaynak kodunun bir ara kodunu üretir. Bazı soyut makineler için bir programı temsil eder. Üst düzey dil ile makine dili arasındadır. Bu ara kod, hedef makine koduna çevrilmesini kolaylaştıracak şekilde üretilmelidir.
Kod Optimizasyonu
Bir sonraki aşama, ara kodun kod optimizasyonunu yapar. Optimizasyon, gereksiz kod satırlarını ortadan kaldıran ve kaynakları (CPU, bellek) boşa harcamadan program yürütmeyi hızlandırmak için ifadelerin sırasını düzenleyen bir şey olarak kabul edilebilir.
Kod Üretimi
Bu aşamada kod üreteci, ara kodun optimize edilmiş gösterimini alır ve bunu hedef makine diliyle eşler. Kod üreteci, ara kodu (genellikle) yeniden konumlandırılabilir makine kodu dizisine çevirir. Makine kodunun komut dizisi, ara kodun yapacağı gibi görevi yerine getirir.
Sembol Tablosu
Bir derleyicinin tüm aşamaları boyunca tutulan bir veri yapısıdır. Tüm tanımlayıcının adları, türleri ile birlikte burada saklanır. Sembol tablosu, derleyicinin tanımlayıcı kaydı hızlı bir şekilde aramasını ve almasını kolaylaştırır. Sembol tablosu, kapsam yönetimi için de kullanılır.