Tahapan Kompilasi

Halo teman, saat ini saya akan membahas mengenai tahapan kompilasi di blog ini. Sebelum masuk ke dalam tahap – tahapnya, akan lebih baik kalau kita mengerti sekilas mengenai apa itu teknik kompilasi. Oke langung saja saya mulai ya.

PENGERTIAN KOMPILASI

Teknik Kompilasi merupakan sebuah teknik pembacaan suatu program yang ditulis dalam bahasa asing, yang kemudian diubah menjadi bahasa lain, atau yang disebut bahasa sasaran.

Proses Kompilasi dapat digambarkan sebagai berikut :

Proses Kompilasi

Secara garis besar, proses kompilasi ini dibagi menjadi 2, yaitu :

  • Analisis : Membagi program ke bagian – bagian yang lebih kecil dan membuat intermediate representation dari source program
  • Sintesis : Membangun target program dari intermediate representation.

TAHAPAN KOMPILASI

Tahapan Kompilasi

Symbol Table

Stuktur data yang berisi record untuk setiap identifier yang berisi atribut – atribut dari identifier.

Error Handler

Fungsi yang digunakan untuk menangani setiap error / kesalahan yang ada pada tiap tahapnya.

Lexical Analysis

Membaca program dari kiri ke kanan dan mengelompokkannya kedalam token -token. Dalam analisa leksikal ini, program sumber dibaca karakter per karakter, Karakter kemudian dikelompokkan menjadi suatu kesatuan kelompok karakter (token) yang ditentukkan dalam bahasa sumber. Kelompok karakter yang membentuk suatu token disebut lexeme. Setiap token akan disimpan ke dalam suatu tabel simbol. Karakter yang tidak mengikuti pola akan dilaporkan sebagai token yang tidak dikenal.

Aspek penting dalam pembuatan analisis leksikal adalah :

  • Mengenal token – token bahasa
  • Mengenali token – token bahasa dari program sumber

Analisis leksikal adalah komponen kompilasi independen yang berkomunikasi dengan parser antarmuka yang baik dan sederhana, sehingga pemeliharaan analisis leksikal menjadi lebih mudah. Karena perubahan – perubahan dalam analisis leksikal tidak berdampak ke semua kompiler.

Tugas – tugas analisis leksikal :

  • Konversi program sumber menjadi barisan token
  • Menangani kerumitan sistem masukkan dan keluaran

Sebagai contoh :

pola token identifier A adalah huruf(huruf|angka)*, maka

lexeme ab2c -> token

lexeme 2abc -> tidak dikenal

Syntax Analysis

Menghasilkan stuktur hierarki dari token – token, direpresentasikan dalam bentuk parse tree dan syntax tree. Memeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan dalam bahasa sumber. Token yang tidak mengikuti aturan yang benar akan dianggap sebagai kesalahan sintax (syntax error). Deretan token yang sesuai dengan syntax yang ada dianggap sebagai pohon parsing atau parse tree.

Di dalam analisis sintax ini, stuktur program yang lebih besar diidentifikasi (statement, deklarasi, ekspresi, dan lainnya)

Semantic Analysis

Memeriksa komponen tertentu dalam program secara bersamaan memiliki arti yang benar. Memeriksa token sesuai dengan batasan – batasan yang ada, misalnya batasan – batasan seperti berikut :

  • Panjang maksimum token identifier adalah 8 karakter.
  • Panjang maksimum ekspresi tunggal adalah 80 karakter.
  • Operasi matematika harus melibatkan operan – operan yang bertipe sama.

Analisis semantik menghasilkan suatu kode objek yang dapat dieksekusi ke dalam bahasa yang sederhana.

Intermediate Code Generation

Merepresentasikan program ke dalam mesin abstrak dengan sifat mudah menghasilkan dan mudah mentraslasi target program. Membangkitkan intermediate code berdasarkan pohon parsing.  Pohon parse kemudian diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah berdasarkan syntax. Hasil penerjemah ini berupa perintah tiga alamat yang merupakan representasi program untuk suatu mesin abstrak.

Code Optimization

Melakukan optimisasi terhadap code tanpa mengganggu urutan proses sehingga running dapat lebih cepat.

Code Generation

Menghasilkan target code dari intermediate code yang telah dioptimisasi

Sekian mengenai tahapan kompilasi, sampai jumpa di post berikutnya 🙂

Respond to this post