Senin, 15 Oktober 2012

KOMPILER

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.
Bahasa yang digunakan untuk membuat compiler beragam,misalnya bahasa mesin, assembly, bahasa tingkat tinggi (high level language), bootstrap. Compiler biasa digunakan untuk program komputer yang menerjemahkan program yang ditulis dalam bahasa tingkat-tinggi semacam bahasa Pascal, C++, BASIC, FORTRAN, Visual-Basic, Visual C#, Java, xBase, atau COBOL.

Struktur dalam membuat kompiler,ialah:
*      Lexical Analysis berhubungan dengan bahasa, sering disebut scanner. Bertugas sebelum syntax analyzer dan intermedite code dilakukan, dimana lexical analysis untuk mendekomposis program sumber menjadi bagian-bagian kecil.
*      Syntax analyzer, bertugas untuk memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh lexical analysis. Proses pendeteksiannya disebut dengan parsing, maka syntax analyzer disebut juga parser
*      Semantic analyzer proses ini adalah proses kelanjutan dari proses kompilasi sebelumnya, yaitu lexical analysis (scanner) dan syntax analyzer(parser). Parser hanya akan mengenali simbol-simbol '=', '+' dan '*', tetapi 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.
*      Intermediate code, untuk memperkecil usaha dalam membuat compilator dari sejumlah bahasa ke sejumlah mesin. Intermediate code lebih mudah dipahami daripada  kode assembly dan kode mesin, tetapi membutuhkan waktu lama karena melakukan 2 kali transisi
*      Code Optimization, bertujuan untuk mengoptimalkan code, terdiri dari:
-          Dependensi Optimasi, bertujuan untuk menghasilkan kode program yang berukuran lebih kecil dan cepat.
-          Optimasi Lokal, adalah optimasi yang dilakukan hanya pada suatu blok dari source code.
-          Optimasi Global, biasanya dilakukan dengan suatu graph terarah yang menunjukkan jalur yang mungkin selama ekskusi program.
*      Code generation, untuk membangkitkan kode target dalam bahasa target yang ekivalen dengan bahasa sumber
*      Tabel management,memiliki dua fungsi penting yaitu : (1) membantu pemeriksaan kebenaran semantik dari program sumber, (2) membantu dan mempermudah dalam pembuatan intermediate code dan proses pembangkitan kode. Ada beberapa jenis tabel informasi:
1.      Tabel identifier, berfungsi menampung semua identifier yang terdapat dalam program.
2.      Tabel Array, berfungsi menampung informasi tambahan untuk sebuah array.
3.      Tabel blok, mencatat variabel-variabel yang ada pada blok yang sama.
4.      Tabel Real, menyimpan elemen tabel bernilai real.
5.      Tabel string,menyimpan informasi string.
6.      Tabel display, mencatat blok yang aktif.
*   Error handling, dalam penulisan kode program kadang terjadi kesalahan logika atas program.       Kesalahan program dapat berupa :
1.      Kesalahan Leksikal karena kesalahan dalam mengetik/mengeja.
2.     Kesalahan Sintaks ,misalnya dalam operasi aritematika dengan tanda kurung yang jumlahnya kurang.
             3.     Kesalahan Semantic karena tipe data yang salah atau variabel yang belum didefinisikan 

Untuk memperbaiki kesalahan dan membuat source code valid,dapat dilakukan:
-        Mekanisme Ad Hoc, recovery yang dilakukan tergantung pada si pembuat compiler dan tidak terikat pada suatu aturan tertentu
-          Syntax directed repair, menyisipkan atau membuang simbol terminal yang dianggap hilang atau yang menyebabkan error

Tidak ada komentar:

Posting Komentar