Derleyici geliştirmek için tipik olarak bir “ön yüz”, “orta katman” ve “arka yüz”ten oluşan bir mimari ve bunların içindeki alt bileşenler gerekir. geeksforgeeks
Ön yüz (Front‑end) bileşenleri
- Lexical analyzer (lexer / scanner): Kaynak kodu karakter karakter okuyup anahtar kelime, tanımlayıcı, sayı, operatör gibi token’lara dönüştürür. geeksforgeeks
- Syntax analyzer (parser): Token dizisinin gramer kurallarına uyup uymadığını kontrol eder ve parse tree veya AST (Abstract Syntax Tree) üretir. geeksforgeeks
- Semantic analyzer: AST üzerinde tip kontrolü, kapsam (scope) kontrolü, bildirilmemiş değişkenler, uygun dönüş tipleri gibi anlamsal kontroller yapar ve sembol tablosunu kullanır. ai-futureschool
- Symbol table: Değişken, fonksiyon, sınıf vb. tanımları ve bunların tip, kapsam gibi bilgilerini tutan merkezi veri yapısıdır. geeksforgeeks
Orta katman (Middle‑end) bileşenleri
- Intermediate Representation (IR) üreticisi: AST’yi üç adresli kod veya benzeri makine-bağımsız ara temsile çevirir. geeksforgeeks
- Optimizasyon geçişleri: IR üzerinde ölü kod elimini, ortak alt ifade yok etme, döngü iyileştirmeleri gibi performans ve bazen boyut odaklı optimizasyonlar yapar. geeksforgeeks
Arka yüz (Back‑end) bileşenleri
- Code generator: IR’yi hedef makine dili veya bytecode’a dönüştürür; talimat seçimi, adresleme kipleri ve kod sıralamasını belirler. meegle
- Register allocator ve düşük seviye optimizasyonlar: Sanal register’ları fiziksel register’lara eşler, gereksiz hafıza erişimlerini azaltır ve mimariye özgü ince optimizasyonlar uygular. geeksforgeeks
- Assembler / linker entegrasyonu: Üretilen makine kodunu çalıştırılabilir dosyaya dönüştürmek için assembler ve bağlayıcı ile etkileşime girer veya bunların görevini üstlenir. en.wikipedia
Destek bileşenleri
- Hata raporlama ve toparlanma: Her aşamada sözdizimsel ve anlamsal hataları konum bilgisiyle rapor eden ve mümkünse derlemeye devam edebilen altyapı. geeksforgeeks
- Build/test altyapısı: Derleyicinin kendisi için birim testleri, regresyon testleri ve örnek programlar üzerinde otomatik test çalıştıran sistemler. dev