KOMPILER
Kompiler mengacu pada program komputer yang digunakan untuk menerjemahkan kode komputer yang ditulis dalam satu bahasa pemrograman (disebut bahasa sumber) ke bahasa pemrograman lain (disebut bahasa target). Istilah kompiler terutama diterapkan untuk program yang menerjemahkan kode sumber dari bahasa pemrograman tingkat tinggi ke bahasa pemrograman tingkat rendah. Misalnya kode mesin, kode objek atau bahasa assembly untuk membuat program yang dapat dieksekusi.
Penting untuk dicatat bahwa ada banyak jenis kompiler yang berbeda. Apabila program yang dikompilasi dapat dijalankan pada komputer yang sistem operasi atau CPU-nya berbeda dengan yang dijalankan compiler, maka compiler tersebut disebut sebagai cross-compiler. Sebaliknya, kompiler bootstrap ditulis dalam bahasa yang ingin dikompilasi. Decompiler adalah program yang digunakan untuk menerjemahkan bahasa tingkat rendah ke bahasa tingkat tinggi. Sebuah program yang digunakan untuk menerjemahkan antara bahasa tingkat tinggi disebut sebagai kompiler sumber-ke-sumber. Itu juga bisa disebut sebagai transpiler. Sebuah program yang bertanggung jawab untuk menerjemahkan bentuk ekspresi tanpa perubahan bahasa dikenal sebagai penulis ulang bahasa. Istilah kompiler-kompiler mengacu pada alat yang digunakan untuk membuat parser yang bertanggung jawab untuk melakukan analisis sintaksis.
Beberapa operasi yang dilakukan oleh kompiler meliputi: pra-pemrosesan, penguraian, analisis semantik (terjemahan terarah sintaksis), analisis leksikal, pembuatan kode, optimalisasi kode, dan konversi program masukan menjadi representasi perantara. Kompiler bertanggung jawab untuk mengimplementasikan operasi ini dalam fase berbeda yang mendorong transformasi yang benar dan desain input sumber yang efisien untuk mencapai output target. Kesalahan program yang disebabkan oleh perilaku kompiler yang salah bisa sangat sulit dilacak dan diatasi. Oleh karena itu, pelaksana kompiler menginvestasikan upaya yang signifikan untuk memastikan kebenaran kompiler.
Penting untuk dicatat bahwa kompiler bukanlah satu-satunya penerjemah yang digunakan untuk mengubah program sumber. Perangkat lunak komputer yang bertanggung jawab untuk mengubah dan kemudian melaksanakan operasi yang ditunjukkan disebut sebagai juru bahasa. Proses penerjemahan mempengaruhi desain bahasa komputer yang mengarah pada preferensi interpretasi atau kompilasi. Dalam prakteknya, implementasi interpreter untuk compiler dan bahasa yang dikompilasi dapat diimplementasikan untuk bahasa yang diinterpretasikan.
Perhatikan bahwa saat menggunakan kompiler, proses dua langkah digunakan untuk menjalankan program,
RANTAI ALAT KOMPILASI
Untuk program yang berukuran besar, kompiler merupakan bagian dari rantai alat multi langkah,
(praprosesor)- (kompiler)- (assembler)- (linker)- (loader).
STRUKTUR KOPILER
Kompiler modern terdiri dari dua bagian utama. Masing-masing bagian ini sering dibagi lagi. Dua bagian utama ini adalah ujung depan dan ujung belakang.
Front end bertanggung jawab untuk menganalisis program sumber, membangun representasi perantara dari program dan menentukan bagian-bagian penyusunnya. Umumnya, front end tidak bergantung pada bahasa target.
Sebaliknya, back end bertanggung jawab untuk mensintesis program target dari representasi perantara yang dihasilkan oleh front end. Umumnya, back end dikatakan independen dari bahasa sumber.