Derleyici, başka bir programın kaynak kodunu bir programlama dilinden yürütülebilir koda çeviren bir programdır.
Kaynak kodu genellikle üst düzey bir programlama dilinde (ör. Pascal, C, C ++, Java, Perl, C #, vb.). Yürütülebilir kod, CPU tarafından doğrudan yürütülebilen bir makine talimatları dizisi olabilir veya sanal bir makine (örneğin Java bayt kodu) tarafından yorumlanan bir ara temsil olabilir.
Kısacası, bir derleyici bir programı insan tarafından okunabilir bir formattan makine tarafından okunabilir bir formata dönüştürür.
Bir derleyicinin nasıl çalıştığına gelince, bu gerçekten karmaşıktır. Konuyla ilgili kitaplar ve üniversite dersleri bulunmaktadır. Sürecin ana aşamalarını kısaca özetlemeye çalışacağım, ancak bu çok iyi bir genel bakış olacak.
- Lexing - program metnini "belirteçlere" ayırın. Belirteçler, programlama dilinin tanımlayıcıları (anahtar sözcükler, değişken adları, işlev adları vb.) Veya işleçler (=, *, & vb.) Gibi "sözcükleridir".
- Ayrıştırma - belirteç dizisini çeşitli dil yapılarını temsil eden bir veri yapısı olan ayrıştırma ağacına dönüştürür: tür bildirimleri, değişken bildirimleri, işlev tanımları, döngüler, koşullu ifadeler, ifadeler vb.
- Optimizasyon - sabit ifadeleri değerlendirin, kullanılmayan değişkenleri veya erişilemeyen kodu optimize edin, mümkünse döngüleri açın vb.
- Ayrıştırma ağacını makine talimatlarına (veya JVM bayt koduna) çevirin.
Yine, bunun çok kısa bir açıklama olduğunu vurguluyorum. Modern derleyiciler çok akıllı ve sonuç olarak çok karmaşıktır.