Pada tahap pertama ini setiap baris code akan dipecah kedalam token-token. Token-token ini dihasilkan dengan cara membuang komentar, menyeragamkan semua huruf besar menjadi huruf kecil, membuang whitespace karakter, membuat listing, dan berkomunikasi dengan Symbol Table. Analisis ini lebih mudah diimplementasikan pada Finite State Machine. Pada mesin ini akan digambarkan proses-proses dan aturan yang menyatakan kemungkinan yang dapat terjadi dalam menyelesaikan proses tersebut.
- Analisis Sintaks:
Sintaks adalah aturan atau susunan dalam mebentuk kalimat. Penganalisa sintaks dalam hal ini sering disebut sebagai Parser. Setiap bahasa memiliki sintaks dan grammarnya sendiri. Contoh: pada BASIC untuk memberikan nilai pada varibel digunakan operand =, sedangkan dalam PASCAL menggunakan operand :=. Misal: BASIC à a=9, PASCAL à a:=9
- Analisis Semantik
Analisis semantik adalah analisis arti dari sebuah kalimat bahasa pemrograman. Misal: a=b+c. Dalam analisis semantic, kalimat tersebut memiliki arti, a memiliki nilai hasil penjumlahan nilai b dan c. Parser hanya mengenali simbol-simbol ‘=’,’+’, namun tidak mengetahui makna simbol-simbol tersebut. Untuk memahaminya maka, compailer akan memanggil routine semantic. Routine ini akan memeriksa definisi, tipe, dan nilai variabel menggunakan table symbol.
- Intermediate Code Generator
Intermediate code lebih machine independent dan dapat digunakan kembal pada mesin lainnya. Intermediate code ini juga lebih mudah dipahami dan memudahkan proses optimasi. Terdapat 2 macam intermediate code, yaitu Notasi postfix dan N-tuple.
- Code Optimizer
Melakukan optimasi dengan penghematan space dan waktu kompilasi. Terdapat dua jenis optimasi, yaitu optimasi local dan optimasi global. Optimasi local adalah optimasi yang dilakukan hanya pada suatu blok pada source code. Optimasi local dapat dilakukan dengan folding, redundant subexpression elimination, optimasi dalam sebuah iterasi, dan strength reduction. Optimasi global dilakukan dengan suatu graph terarah yang menunjukkan jalur yang mungkin selama eksekusi program
- Code Generator
Membuat code dalam bahasa target tertentu (misalnya bahasa mesin).
- Symbol Table Manager
Symbol Table adalah struktur data yang digunakan compiler untuk melacak arti semantic suatu variabel. Implementasinya dengan menggunakan unorder list, order linear list, binary search tree, hash table.
- Error Handler
Bagian dari compiler yang menangani error dan memberikan laporan tentang error yang ada.