Minggu, 12 Desember 2010

Single One Pass

Suatu kompilator dapat dibuat hanya dengan melakukan 1 kali pembacaan program sumber.

Tetapi kompilator yang demikian biasanya tidak dapat melakukan optimasi kode dengan baik.

Namun demikian kebanyakan kompilator untuk bahasa yang terstruktur melakukan beberapa kali pembacaan untuk :
- dapat melakukan deteksi kesalahan
- menemukan kembali kesalahan yang telah diperoleh
- melakukan proses debugging

Rancangan kompilator ini dimaksudkan untuk menerjemahkan suatu ekspresi matematika yang ditulis dalam notasi infix menjadi notasi yang ditulis dalam notasi postfix.

Penekanan yang diberikan hanya pada bagian depan dari proses kompilasi yang dilakukan yaitu:
- Analisis Leksikal
- Penguraian (parser)
- Pembentukan Kode Antara

Suatu penerjemahan berdasarkan sintaks merupakan kombinasi dari proses Analisis Leksikal dan Pembentuk Kode Antara

- operator

- label

- simbol tanda -> tanda kurung, koma, titik koma.

Suatu Praposesor menghasilkan suatu input bagi suatu kompilator. Hal ini mungkin dilakukan oleh suatu kompilator antara lain:

- Pemroses Makro
Makro yang merupakan kependekan dari suatu bagian program yang lebih panjang memungkinkan penulis program untuk memperpendek program yang ditulisnya.
Dalam hal ini perlu dilakukan dua hal

a. Mendefinisikan makro yang digunakan.
Parameter yang didefinisikan pada makro disebut dengan parameter formal

b. Melakukan pemanggilan makro yang mungkin juga mengandung beberapa parameter.
Sedangkan parameter yang digunakan untuk memanggil makro disebut dengan paramater aktual

- Pengikutsertaan berkas (File Inclusion)
Suatu Praprosesor memungkinkan diikutsertakannya beberapa berkas program yang telah ditulis sebelumnya ke dalam program yang sedang ditulis.
Biasanya berkas program yang ditulis sebelumnya merupakan segmen program yang sekali digunakan, banyak manfaatnya dan sering terjadi sudah merupakan bagian dari sistem bahasa yang digunakan
Misalnya pada bahasa C, isi dari berkas global.h dapat diikutsertakan dalam program yang sedang ditulis dengan menggunakan perintah #include global.h

- Praposesor Rasional
Praprosesor ini memberikan kemampuan baru dari suatu bahasa dengan fasilitas pengendalian aliran (flow-of-control) atau struktur data yang lebih baik.
Misalnya dengan menambahkan kemampuan perintah while, if-then-else pada bahasa yang pada mulanya tidak mempunyai fasilitas tersebut.
Hal ini biasanya dilakukan dengan menggunakan makro yang sudah ada dalam bahasa tersebut.

- Perluasan Bahasa
Praprosesor ini memungkinkan suatu bahasa untuk berinteraksi dengan sistem atau bahasa lainnya.
Misalnya pada bahasa C yang ditambahkan kemampuannya untk dapat mengakses data dalam suatu database.
Untuk itu praprosesor memungkinkan menggunakan tanda ## yang menyatakan bahwa bagian ini bukan merupakan bagian dari bahasa C, tetapi berhubungan dengan sistem suatu paket database lain yang sudah baku.
Dengan demikian bagian ini akan diterjemahkan kedalam pemanggilan procedure untukmelakukan akses database.

Tidak ada komentar: