Search for Knowledge
“A mistake is a signal that it is time to learn something new, something you didn’t know before.”

Kompilasi

KOMPILASI

KOMPILATOR (COMPILER) adalah :

– Sebuah program yang membaca suatu program yang ditulis dalam suatu bahasa sumber (source language) dan menerjemahkannya ke dalam suatu bahasa sasaran (target language).

– Proses Kompilasi dapat digambarkan melalui sebuah kotak hitam (black box) berikut :

Proses kompilsi dikelompokkan menjadi :
– Analisa : program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate presentation).
– Sintesa : membangun program sasaran yang diinginkan dari bentuk antara

Fase Fase Proses Sebuah Kompilasi

Hal-hal yang dilakukan oleh setiap fase pada proses kompilasi terhadap program sumber :

*Penganalisa Leksikal:
– Membaca program sumber, karakter demi karakter.
– Sederetan karakter dikelompokkan menjadi satu kesatuan, mengacu pada pola kesatuan kelompok karakter (token) yang ditentukan dalam bahasa sumber.
– Kelompok karakter yang membentuk sebuah token dinamakan lexeme untuk token tersebut .
– Setiap token yang dihasilkan disimpan di dalam tabel simbol.
– Sederetan karakter yang tidak mengikuti pola token akan dilaporkan sebagai token tak dikenal (unidentified token).

* Penganalisa Sintaks :
– Memeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan dalam bahasa sumber.
– Sederetah token yang tidak mengikuti aturan sintaks akan dilaporkan sebagai kesalahan sintaks (Syntax error).
– Secara logika deretan token yang bersesuaian dengan sintaks tertentu dinyatakan sebagai pohon parsing (parse tree).

* Penganalisa Semantik :
– memeriksa token dan ekspresi dari batasan-batasan yang ditetapkan.

Batasan-batasan tersebut misalnya:
– Panjang maksimum token identifier adalah 8 karakter
– Panjang maksimum ekspresi tunggal adalah karakter
– Nilai bilangan bulat adalah -32768 s/d 32767
– Operasi aritmatika harus melibatkan operan-operan yang bertipe sama.

* Pembangkit kode antara :
– Membangkitkan kode antara (intermediate code) berdasarkan pohon parsing.
– Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah berdasarkan sintaks (syntax directed translator).
– Hasil penerjemahan ini biasanya merupakan perintah tiga alamat (tree address code) yang merupakan representasi program untuk suatu mesin abstrak.
– Perintah tiga alamat bisa berbentuk :
– Quadruples (op, arg1, arg2, result), triples (op, arg1, arg2).
– Ekspresi dengan satu argumen dinyatakan dengan menetapkan agr2 dengan – (strip, dash)

– Triples notation
<operator> <operand> <operand>
Contoh :  A:= D*C+B/E
1. *, D, C
2. /, B, E
3. +, 1, 2
4. :=, A, 3

– Quadrples notation
<operator> <operand> <operand> <result>
1. *, D, C, t1
2. /, B, E, t2
3. +, t1, t2, A

 * Pengoptimal Kode
 – Melakukan optimasi (penghematan space dan waktu komputasi), jika mungkin, terhadap kode antara.

* Pembagkit kode
-Membangkitkan kode dalam bahasa target tertentu (misalnya bahasa mesin).

Keterangan :

– Id adalah token untuk identifier. Tiga lexeme untuk token ini adalah position, initial, dan rate.
– Penganalisa semantik secara logika membangkitkan pohon parse.
– Penganalisa semantik mendeteksi mismatch type. Perbaikan dilakukan dengan memanggil procedure inttoreal yang mengkonversi integer ke real.
– Quadruples dari : temp2 := id3 * temp1 adalah (*, id3, temp1, temp2), id := temp 3 adalah (assign, temp3, -, id1), temp1 := inttoreal(60) adalah (inttoreal,60,-,temp1).
– Pembangkit kode dalam contoh ini menghasilkan kode dalam bahasa mesin.