Derleyici, bir dilde (kaynak dil) yazılmış bir programı okuyan ve başka bir dilde (hedef dil), çoğunlukla makine dilinde başka bir eşdeğer programa çeviren bir programdır.
Kaynak dil kodunuzun satır satır tarandığı farklı derleyici aşamaları vardır. Kaynak dil kodunda taranan tüm Anahtar Kelimeleri izleyen bir sembol tablosu vardır.
Faz 1: Lexical Analyzer - kaynak programdaki tüm karakterleri okur ve belirteçlerin mantıksal olarak ayrılmasını sağlar (int, char, float, eğer öyleyse, o zaman, vb.)
Faz 2: Sözdizimi Analizörü - belirteçlerin akışının yapısını analiz eder. Sonek / önek vb. İçeren ifadelerin hiyerarşik ayrıştırılması (a = b + c * d)
Faz 3: Semantik Analizör - Jetonların tip kontrolü (gerçek sayı, float vb.) Ve operatör önceliği vb. Birçok şey.
Faz 4: Ara Kod Üreticisi - a = b + c * de (temp1 = c * d, temp2 = temp1 + b, temp3 = temp2-e)
Faz 5: Kod Optimizasyonu - Çeşitli Analizler (kontrol akışı, veri akışı, dönüşümler)
Ortadan Kaldıran : Artıklık kodu, Sabit yayılım, Kısmi ölü kod, ortak alt ifade, Döngü değişmez kodu
Aşama 6: Kod Üretimi - Kayıtlara değerler koyarak hedef kodun (çoğunlukla Assembly Dili) oluşturulması
Tüm bu aşamalar iyi yazılmış programlardan başka bir şey değildir ve bunun içinde N kusur olabilir.