Kompilator (Inggris: compiler) adalah sebuah program komputer yang berguna untuk
menerjemahkan program komputer yang ditulis dalam bahasa pemrograman tertentu
menjadi program yang ditulis dalam bahasa pemrograman lain. Kompilator melakukan
proses kompilasi dengan cara menganalisis kode sumber secara keseluruhan, sehingga
waktu yang dibutuhkan untuk melakukan kompilasi lebih lama, namun hasilnya lebih cepat
dalam proses eksekusi daripada program yang dibuat dengan menggunakan teknik
interpretasi dengan interpreter.
Compiler berbeda dengan interpreter, jika ada kesalahan pada proses input kode tidak
akan bisa dilanjtkan proses penerjemahannya, dan akan muncul error messages yang
harus segera diperbaiki jika ada kesalahan.
Istilah kompilator biasa digunakan untuk program komputer yang menerjemahkan program
yang ditulis dalam bahasa tingkat-tinggi (semacam bahasa Pascal, C++, BASIC,
FORTRAN, Visual C#, Java) menjadi bahasa mesin, biasanya dengan bahasa Assembly
(assembler) sebagai perantara.
3. Struktur Compiler
Bagian-bagian Compiler:
a. Lexical Analiysis (scanner), Lexical Analysis sering disebut Scanner bertugas untuk
mendekomposisi program sumber menjadi bagian-bagian kecil. Tugasnya secara detail
adalah mengindentifikasi semua besaran yang membangun suatu bahasa;
mentransformasikan, dan menentukan jenis token; menangani kesalahan dan tabel simbol.
Contoh besaran Leksikal :
1. Identifier, dapat berupa keyword atau nama kunci, seperti IF.. ELSE, BEGIN..END
(pada Pascal), INTEGER (pascal), INT,FLOAT (bahasa C).
2. Konstanta, terdiri dari besaran yang merupakan bilangan bulat (integer), bilangan
pecahan (float/Real), boolean (true/false), karakter, string, dan sebagainya.
3. Operator, terdiri dari operator aritematika ( + – * /), operator logika ( < = > ).
5. White Space, pemisah yang diabaikan oleh program seperti : enter, spasi, ganti baris,
akhir file.
c. Semantics Analyser, proses ini adalah proses kelanjutan dari proses kompilasi
sebelumnya, yaitu analisa leksikal (scanning) dan analisa sintaks (parsing). Parser hanya
akan mengenali simbol-simbol ‘=’, ‘+’ dan ‘*’, parser tidak mengetahui makna dari simbol-
simbol tersebut, untuk mengenali simbol-simbol tersebut Compiler menggunakan Analysis
Semantics. Pemeriksaan biasa dilakukan pada tabel indentifier, tabel display, dan
tabel block.
2. Optimasi Lokal, adalah optimasi yang dilakukan hanya pada suatu blok dari source
code.
3. Optimasi Global, biasanya dilakukan dengan suatu graph terarah yang menunjukkan
jalur yang mungkin selama ekskusi programa.
1. Tabel identifier, berfungsi menampung semua identifier yang terdapat dalam program.
3. Tabel blok, mencatat variabel-variabel yang ada pada blok yang sama.
4. Tabel Real, menyimpan elemen tabel bernilai real.
g. Error Handling, yaitu kesalahan program dalam proses penerjemahan pada Compiler.
Kesalahan program dapat berupa :
3. Kesalahan Semantic karena tipe data yang salah atau variabel yang belum
didefinisikan.
4. Konsep Pascal
Pascal adalah bahasa tingkat tinggi yang orientasinya pada segala tujuan, dirancang oleh
Prof. Niklaus Wirth dari Technical University di Zurich, Switzerland. Nama pascal diambil
sebagai penghargaan terhadap Blaise Pascal, ahli matematik dan philosophi terkenal abad
17 dari Perancis.
1. Judul program
2. Blok program
1. Deklarasi Konstanta, diawali dengan kata cadangan Const diikuti oleh kumpulan
identifier yang diberi suatu nilai konstanta. Data konstanta nilainya sudah ditentukan dan
pasti, tidak dapat dirubah didalam program
2. Deklarasi Variabel, Variabel adalah identifier yang berisi data yang dapat diubah-ubah
nilainya didalam program. Menggunakan kata cadangan Var sebagai judul didalam bagian
deklarasi variable dan diikuti oleh satu atau lebih identifier yang dipisahkan koma, diikuti
dengan titik dua dan tipe dari datanya diakhiri dengan titik koma.
3. Deklarasi Tipe, Pascal menyediakan beberapa macam tipe data, yaitu :
4. Deklarasi Label, Jika program menggunakan statement Goto untuk meloncat ke suatu
statement yang tertentu, maka dibutuhkan suatu label pada statement yang dituju dan label
tersebut harus di deklarasikan terlebih dahulu pada bagian deklarasi. Menggunakan kata
cadangan Label diikuti oleh kumpulan identifier label dengan dipisahkan oleh koma dan
diakhiri dengan titik koma.
5. Deklarasi Prosedur, Prosedur merupakan bagian yang terpisah dari program dan
dapat diaktifkan dimanapun didalam program. Prosedur dibuat sendiri bilamana program
akan dibagi-bagi menjadi beberapa blok-blok modul. Prosedur dibuat didalam program
dengan cara mendeklarasikannya dibagian deklarasi prosedur. Menggunakan kata
cadangan Procedure.
6. Deklarasi Fungsi, Fungsi juga merupakan bagian program yang terpisah mirip dengan
prosedur, tetapi ada beberapa perbedaannya. Kata cadangan yang digunakan Function.