Phase Analysis
Lexical Analyzer
Syntax Analyzer
Semantic Analyzer
Phase Synthesis
Code Optimizer
Code Generator
1. Lexical Analyzer
Lexical analyzer merupakan tahapan awal yang dilakukan di compiler. Biasa suka disebut juga
sebagai scanner.
Proses utama yang dilakukan dalam Lexical Analyzer adalah : mengubah suatu baris kalimat
input menjadi ‘token’ lalu mengelompokkan ke dalam urutan ( lexemes ) , penghilangan
whitespace , konversi konstanta numerik menjadi tipe data yang spesifik / tertentu
Barisan token tersebut merupakan kumpulan string yang memiliki jenis pola tertentu dgn
bentuk <token-name , attribute-value> . Lalu selanjutnya , token tersebut akan dikirimkan ke
tahapan selanjutnya , yaitu Syntax Analysis
2. Syntax Analyzer
Syntax analyzer biasa disebut juga analisis parser karena proses yang dilakukan dalam
tahapan ini adalah hasil dari lexical analysis (token) akan disusun serta dikelompokkan dalam
suatu struktur tertentu yang memiliki definisi secara spesifik.
Dari struktur tersebut , program yang dibangun dari struktur tersebut dapat diidentifikasi ( di
dalamnya terdapat variable-variable yang dibutuhkan seperti statement , expression , dll ).
3. Semantic Analyzer
Tahapan ini adalah pusat dari tahapan kompilasi karena dari struktur syntaktik dari proses-
proses sebelumnya diproses dan struktur objek executable sudah mulai dibentuk.
Tahapan ini menjadi jembatan antara analysis dan synthesis dari suatu kompilasi.
Hasil akhir dari tahapan ini adalah suatu kode yang executable dalam kompilasi yang
sederhana yang kemudian dimanipulasi dengan berbagai optimization dari translator
sebelum akhirnya benar-benar executable dihasilkan.
Phase Synthesis
Proses untuk me-generate code berdasarkan parsing tree (sesuai dengan rumus / syntax yang
berhubungan ).
Hasil dari proses ini adalah suatu perintah yang merupakan 3-address-
code ataupun quadruples.
5. Code Optimizer
Proses untuk mengoptimisasi code yang telah mengalami proses-proses sebelum akhirnya
dibentuk suatu code executable.
Dalam tahapan ini , salah satunya yaitu dilakukan proses pengurangan redundancy dalam
code sehingga lebih efficient dan effective.
6. Code Generator
Proses untuk membuat code yang dikenal oleh bahasa mesin yang merupakan suatu bahasa
assembler.
Biasanya , code tersebut terdiri dari suatu perintah dengan address dan akumulator yang
masing-masing terdiri dari 1 komponen.