17 Mar
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 :
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
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