Compiler adalah program yang menerjemahkan kode sumber untuk program lain dari bahasa pemrograman menjadi kode yang dapat dieksekusi.
Kode sumber biasanya dalam bahasa pemrograman tingkat tinggi (misalnya Pascal, C, C ++, Java, Perl, C #, dll.). Kode yang dapat dieksekusi dapat berupa urutan instruksi mesin yang dapat dieksekusi oleh CPU secara langsung, atau mungkin merupakan representasi perantara yang ditafsirkan oleh mesin virtual (misalnya kode byte Java).
Singkatnya, kompiler mengubah program dari format yang bisa dibaca manusia menjadi format yang bisa dibaca mesin.
Mengenai cara kerja kompiler, itu memang rumit. Ada buku-buku dan kursus universitas tentang masalah ini. Saya akan mencoba untuk menguraikan secara singkat tahapan utama dari proses, tetapi ini akan menjadi gambaran yang sangat sepintas lalu.
- Lexing - memecah teks program menjadi "token". Token adalah "kata" dari bahasa pemrograman, seperti pengidentifikasi (kata kunci, nama variabel, nama fungsi, dll.) Atau operator (=, *, &, dll.).
- Parsing - mengonversi urutan token menjadi pohon parse, yang merupakan struktur data yang mewakili berbagai konstruksi bahasa: deklarasi tipe, deklarasi variabel, definisi fungsi, loop, conditional, ekspresi, dll.
- Optimasi - mengevaluasi ekspresi konstan, mengoptimalkan variabel yang tidak digunakan atau kode yang tidak dapat dijangkau, membuka gulungan jika memungkinkan, dll.
- Terjemahkan pohon parse ke dalam instruksi mesin (atau kode byte JVM).
Sekali lagi, saya menekankan bahwa ini adalah deskripsi yang sangat singkat. Kompiler modern sangat cerdas, dan akibatnya sangat rumit.