Tahapan Proses kompilasi
TAHAPAN KOMPILASI
Tahap-tahap kompiler adalah sebagai berikut :
- SYMBOL TABLE
Struktur data yang berisi record untuk setiap identifier yang berisi field-field/ atribut-atribut dari identifier.
- ERROR HANDLER
Fungsi yang menangani dan melapor- kan setiap error / kesalahan yang ditemukan (pada setiap tahapan)
Dua bagian utama proses kompilasi :
1. Analysis :
- Membagi program ke dalam bagian-bagian kecil
- Membuat “intermediate representation” dari source program
- Proses Analisis terdiri dari 3 fase :
– lexical analyzer
Membaca source program (stream of chars) dari kiri ke kanan dan mengelompokkannya ke dalam token-token (Scanner).
– syntax analyzer
- Menghasilkan struktur hirarki dari token-token. (Parser)
- Biasanya direpresentasikan dalam bentuk parse tree atau syntax tree.
– semantic analyzer
Memeriksa komponen tertentu bagian program secara bersama mengandung suatu arti yang benar.
2. Synthesis :
- Membangun target program dari intermediate representation
- Proses Synthesis terdiri dari 3 fase :
– intermediate code generator
Merepresentasi suatu program dalam coding sebagai mesin abstract dengan memperhatikan sifat berikut :
- mudah menghasilkan
- mudah mentranslasi target program
– code optimizer
Melakukan optimasi/ reduce terhadap code tanpa mengganggu sikuens eksistensi proses sehingga running dapat lebih cepat
– code generator
Menghasilkan target code dari inter-mediate code yang telah dioptimasi.
Contoh Translation :
ALAT BANTU KONSTRUKSI KOMPILER
- Parser Generator
Menghasilkan pohon sintaks oleh Syntax Analyzer (parser) dari input yang berdasarkan context free grammar.
- Scanner Generator
Menghasilkan input stream oleh Lexical Analyzer (scanner) dari spesifikasi input data berdasarkan regular expression.
- Automatic Code Generator
Mengambil kumpulan rules yang akan mendefinisikan penerjemahan setiap operasi dari intermediate language ke dalam machine language dari target machine
- Data Flow Engine
Mengumpulkan informasi tentang bagaimana nilai-nilai ditranslasikan dari suatu bagian program ke bagian lainnya, untuk keperluan “data flow analysis” pada tahap optimasi code.


