About

Rabu, 14 November 2012

TEKNIK KOMPILASI

PENGERTIAN COMPILATOR (COMPILER)

Pengertian Kompilator selalu mengandung dua komponen bahasa yaitu bahasa yang di baca oleh kompilator, disebut bahasa sumber (source language), dan bahasa yang di terjemahkan oleh kompilator disebut sebagai bahasa sasaran (Target Language).

Jadi Kompilator membaca suatu program yang di tulis dari 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 di ketemukany. Proses penerjemahan yang dilakukan oleh kompilator ini di sebut dengan proses kompilasi (compiling) yang secara mudah dapat di gambarkan pada Gambar 1

Berikut ini adalah beberapa proses yang pengembanganya dapat dilakukan sejalan dengan pengembangan suatu kompilator, tetapi penggunaanya bukan untuk penerjemahan dari suatu bahasa dalam bahasa lain, meliputi :

a. Pemformat Teks
Suatu pemformat teks yang mempunyai masukan berupa aliran karakter, dimana sebagian besar    dari karaktear tersebut akan di cetak tetapi bagian lainnya digunakan untuk perintah-perintah pencetakan seprti ganti baris, keterangan gambar, struktur matimatika seperti index.

b. Kompilator Silikon
Pada dasarnya hanya mengolah sinya sinyal logika (0 atau 1). Sedangkan keluarganya adalah suatu rancangan sirkuit yang didefinisikan oleh suatu bahasa tertentu.

c. Interpretur Quary
Aplikasi basis data suatu bahas quary, yang merupakan suatu predikat yang mengandung operator boolean maupun relasi diterjemahkan kedalam suatu proses pencarian suatu record dalam basis data yang memenuhi predikat yang telah diberikan.

MODEL DARI SUATU KOMPILATOR

Tahap analisis terdiri dari tiga buah proses utama yaitu :

1. Analisis Leksikal atau Analisis lenier atau pembacaan sekilas (scanning)
Karakter yang membentuk program sumber yang dibaca dari kiri ke kanan dan di kelompokan dengan token yaitu barisan dari karakter yang dalam dari satu kesatuan mempunyai arti sendiri.

2. Analisis Sintatik atau Analis Hirarki 
Karakter yang disusun dan dikelompokan dalam suatu hirarki yang secara keseluruhan memiliki arti tertentu.

3. Analisis Semantik
Dilakukan pengecekan pada struktur ahkir yang telah diperoleh dan diperiksa kesesuaiannya dengan komponen program yang ada.

Sedangkan pada tahap sintesis paling sedikit dilakukan dua proses utama :

1. Proses Pembentukan Kode (Kode Generator)
Terbentuk  dari bahasa sumber yang berupa suatu pohon sintaks diterjemahkan kedalam suatu bahasa asembli atau bahasa mesin.

2. Proses Optimasi Kode (Kode Optimizer)
Hasil pembentukan kode yang di peroleh kemudian di buat lebih kompak lagi dengan melakukan beberapa teknik optimasi supaya dapat diperoleh program yang lebih efisien.

Dalam contoh analis leksikal ini program sumber hanya berisi 1 perintah saja yaitu perintah dalam bahasa PL/1 :
COBA : IF A B THEN X=Y;

HAL-HAL YANG TERKAIT
 
Suatu kompilator merupakan hasil dari satu atau lebih praprosesor, dan output dari kompilator juga harus memerlukan proses lebih lanjut sebelum dapat dijalankan dalam bentuk bahasa mesin.

PRAPROSESOR

Suatu prosesor menghasilkan input bagi suatu kompilator.

a. Pemrosesan Makro 

Makro yang merupakan kependekan dari suatu bagian dari bagian dari program yang lebih panjang memungkinkan penulis program untuk memperpendek program yang di tulisnya.

b. Pengikutsertakan Berkas
(File Incluision) suatu prosesor memungkinkan diikutsertakan beberapa berkas program yang telah ditulis sebelumya kedalam program yang sedang ditulis. Misalnya pada bahasa C isi dari berkas global.h dapat diikutsertakan dalam program yang sedang ditulis dengan menggunakan perintah #include global.h

c. Prosesor Rasional 
Memberikan kemampuan baru dari suatu bahasa dengan fasilitas pengendalian aliran (flow-of-control) atau struktur data yang lebih baik.

d. Perluasan Bahasa
Memungkinkan suatu bahasa untuk berinteraksi dengan sistem atau bahasa lain.

ASEMBLER

Beberapa kompilator menghasilkan kode dalam bahasa asemli yang kemudian akan di baca oleh asembler untuk proses selanjutnya. Tetapi beberapa kompilator lainya sudah melakukan tugas dan fungsi dari suatu asembler, sehingga kompilator seperti ini akan menghasilkan suatu kode mesin yang masih dapat di alih-letakkan (relocatable machine code), yang kemudian akan di proses oleh suatu editor penghubung (link editor/loader).

EDITOR PENGHUBUNG (LINK EDITOR)

Pada proses loading dilakukan pengambilan kode mesin yang dapat dialih-letakkan diganti kemudian perintah dan data yang diperoleh di letakkan pada memori tempat yang seharusnya editor penghubung memungkinkan terbentuknya satu program dari beberapa berkas yang masing-masing merupakan kode mesin yang dapat dialih letakkan.

DEVISI SINTAKS

Merupakan suatu notasi yang disebut dengan tata bahasa bebas konteks untuk memudahkan tata bahasa saja, untuk menentukan sintaks dari suatu bahasa.

Suatu bahasa secara alamiah menerangkan struktur hirarki dari banyak bentuk bahasa pemrograman. Misalnya perintah if-else dari bahasa C mempunyai bentuk,
IF(ekspresi) perintah else perintah
Secara lengkap suatu tata bahasa bebas konteks dapat mempunyai empat komponen berikut ini :
1.) Himpunan dari token yang dikenal dengan nama simbol token 
2.) Himpunan dari unsur non-terminal
3.) Himpunan dari prodeksi dimana masing-masing produksi terdiri dari unsur non terminal yang disebut bagian kiri dari suatu produksi, tanda panah dan barisan dari token dan bukan terminal yang disebut bagian kanan dari produksi.
4.) Salah satu dari unsur non terminal yang telah ditentukan disebut sebagai simbol awal.

Sumber :
Teknik Kompilasi
Oleh : Sumantri Slamet dan Heru Suhartanto

0 komentar:

Posting Komentar