KOMPILATOR (COMPILER)
Pengertian kompilator selalu mengandung dua komponen bahasa yaitu bahasa yang dibaca oleh kompilator, disebut bahasa sumber (source language), dan bahasa yang diterjemahkan oleh kompilator disebut sebagai bahasa sasaran (target language).
Jadi kompilator membaca suatu program yang ditulis ke dalam bahasa sumber dan menerjemahkan bahasa sumber tadi ke dalam suatu bahasa lain yang disebut dengan nama bahasa sasaran. Dalam melakukan proses penerjemahan tersebut, sudah barang tentu kompilator akan melaporkan adanya keanehan-keanehan atau kesalahan yang mungkin ditemukanBila dipandang sepintas lalu maka akan dapat timbul beraneka ragam kompilator yang dapat dibuat. Seperti telah diketahui umum, ada banyak sekali bahasa yang dapat menjadi sumber bahasa seperti bahasa FORTRAN, PASCAL, C dan juga bahasa-bahasa lain yang sifat dan pemakaiannya agak spesifik atau khusus, seperti bahasa untuk program DBASE, SPSS dan lain sebagainya. Hal yang sama juga terjadi pada bahasa sasaran yang akan dituju. Bahasa sasaran dapat berupa bahasa sumber lain seperti C, FORTRAN dan sebagainya, atau bahasa mesin (machine language) yang digunakan oleh suatu prosesor mikro atau suatu komputer besar maupun komputer super. Karena itu suatu paket kompilator yang tertentu sudah pasti hanya dapat digunakan untuk menerjemahkan suatu bahasa sumber yang tertentu dan menerjemahkannya ke dalam bahasa sasaran yang tertentu juga.
Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu pada saat mulai diketemukannya komputer pada awal tahun 1950-an. Sejak waktu tersebut teknik dan cara pembentukan suatu kompilator telah berkembang dengan sangat pesat dan pembentukan kompilator dapat dilakukan makin mudah. Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah dapat diperoleh sehingga pembentukan suatu kompilator dapat dilakukan dengan cepat. Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN.
Walaupun secara tradisional suatu kompilator dikaitkan denga suatu proses penerjemahan suatu bahasa sumber ke dalam suatu bahasa asembler atau bahasa mesin dari suatu komputer, tetapi ada beberapa proses lain yang secara langsung tidak terkait oleh kerja suatu kompilator, tetapi pengembangannya dapat dilakukan seperti pengembangan suatu kompilator. Berikut ini adalah beberapa proses yang pengembangannya dapat dilakukan sejalan dengan pengembangan suatu kompilator, tetapi penggunaannya bukan untuk penerjemahan dari suatu bahasa ke dalam bahasa lain:
a. Pemformatan teks
Suatu pemforamt teks mempunyai masukan berupa aliran karakter, dimana sebagian besar dari karakter tersebut akan dicetak, tetapi bagian lainnya digunakan untuk perintah perintah cetakan seperti ganti bari, keterangan gambar, struktur matematika seperti index dan lain sebagainya.
b. Kompilator silikon
Kompilator ini pada dasarnya hanya mengolah sinyal logika (0 atau 1) atau kelompok sinyal dari suatu sirkuit, sedangkan keluarannya adalah suatu rancangan sirkuit yang didefinisikan oleh suatu bahasa tertentu.
c. Interpreter query
Dalam aplikasi basis data suatu bahasa query, yang merupakan suatu predikat yang mengandung operator boolean maupun relasi, diterjemahkan ke dalam suatu proses pencarian suatu record dalam basis data yang memenuhi predikat yang telah diberikan.
FASE-FASE KOMPILASI
Translator dikelompokkan secara kasar menurut jumlah pelewatan yang sudah dijalani seluruh program sumber. Compiler yang standar biasanya menggunakan dua pelewatan diseluruh program sumber. Analisis pelewatan yang pertama adalah menyusun kembali suatu program ke dalam komponen-komponen pokok dan mendapatkan suatu informasi dari program, misalnya penggunaan nama program. Pelewatan yang kedua biasanya menghasilkan suatu program objek dari informasi yang sudah dikumpulkan tersebut.
Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam dua bagian utama yaitu bagian analisis dan bagian sintesis. Pada tahap analisis, program yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam beberapa bagian yang kemudian akan direpresentasikan ke dalam suatu bentuk antara (intermediate presentation) dari program sumber. Kemudian pada tahap sintetis program sasaran dibentuk berdasarkan representasi antara yang dihasilkan pada tahap analisis. Kedua tahap ini pada umumnya tidak dapat secara jelas dipisahkan, karena adanya keterkaitan yang sangat erat antar kedua tahap tersebut.
Secara umum proses dalam tahap analisis terdiri dari tiga bagian utama yaitu proses analisis leksikal, proses analisis sintaktik dan proses analisis semantik, sedangkan untuk tahap sintesis terdiri dari dua bagian utama yaitu proses yang menghasilkan kode (code generator) dan proses optimasi kode (code optimizer), sebelum program sasaran dapat dihasilkan. Dalam melakukan hal ini setiap bagian utama akan berhubungan dan berkomunikasi dengan suatu berkas tabel yang disebut tabel simbol (symbol table) yaitu suatu tabel yang berisi semua simbol yang digunakan dalam program sumberJika kecepatan kompilasi merupakan hal yang penting maka strategi satu pelewatan (one-pass) dapat digunakan. Pada strategi ini, selagi program dianalisa, segera konversikan juga ke dalam kode objek. Contohnya adalah bahasa Pascal. Jika kecepatan kompilasi tidak terlalu penting maka dapat menggunakan tiga pelewatan (three-pass) atau lebih. Pelewatan yang pertama menganalisa program sumber, pelewatan yang kedua menulis kembali program sumber ke dalam bentuk yang lebih efisien dengan menggunakan suatu algoritma optimisasi yang sudah dikenal, dan pelewatan yang ketiga akan menghasilkan suatu kode objek.
Dengan semakin berkembangnya teknologi, baik itu teknologi hardware maupun software, teknologi compiler pun juga berkembang, sehingga hubungan antar jumlah pelewatan dan kecepatan compiler menjadi tidak jelas lagi. Hal yang penting untuk dikembangkan adalah kompleksitas bahasa, bukan jumlah pelewatan yang dibutuhkan untuk menganalisa suatu program sumber
Tidak ada komentar:
Posting Komentar