Compiler adalah suatu program yang dapat membaca suatu Bahasa pemrograman (source language) dan kemudian diterjemahkan ke dalam Bahasa pemrograman lain (target language).

Phase Analysis :

  • Lexical Analyzer
    Pada Compiler, lexical analyzer biasa disebut juga sebagai scanner. Lexical analyzer adalah tahapan pertama yang dilakukan pada compiler. Proses yang dilakukan pada tahapan ini adalah membaca program sumber karakter per karakter. Satu atau lebih (deretan) karakter karakter ini dikelompokkan menjadi suatu kesatuan mengikuti pola kesatuan kelompok karakter (token) yang ditentukan dalam bahasa sumber dan disimpan dalam table simbol, sedangkan karakter yang tidak mengikuti pola akan dilaporkan sebagai token tak dikenal.
  • Syntax Analyzer
    Setelah tahapan lexical analyzer selesai berikutnya adalah tahapan syntax analyzer atau biasa juga disebut Parser. Pada tahapan ini token yang didapatkan dari hasil lexical analysis  diurutkan atau disusun lalu dikelompokkan ke dalam suatu struktur tertentu secara spesifik.
  • Semantic Analyzer
    Setelah tahapan syntax analyzer selesai berikutnya adalah tahapan semantic analyzer. Tahapan semantic analyzer merupakan tahapan yang penting karena merupakan pusar dari tahapan kompilasi, dan juga merupakan jembatan antara fase analysis dan fase synthesis pada compiler. Pada tahapan ini program sumber akan diperiksa untuk mencari kemungkinan kesalahan semantic dengan cara memanfaatkan struktur hirarkikal yang dihasil dari tahapan syntax analyzer. Pada tahapan ini akan dihasilkan suatu kode yang executable pada kompilasi yang sederhana lalu dimanipulasi dengan berbagai optimization dari translator sampai nanti benar-benar executable dihasilkan.

Phase Synthesis :

  • Intermediate Code Generator
    Intermediate code generator merupakan tahapan awal dari phase synthesis. Proses yang dilakukan pada tahapan ini me-generate atau membangkitkan suatu code berdasarkan parsing tree, lalu selanjutnya diterjemahkan ke dalam bentuk three address code, quadruples atau triples.
  • Code Optimizer
    Setelah melakukan tahapan intermediate code generator berikutnya yang dilakukan adalah tahapan code optimizer. Adapun yang dilakukan pada tahapan ini adalah mengoptimisasi code sehingga menjadi code yang executable. Tahapan ini dilakukan untuk mempercepat waktu eksekusi dari suatu program dengan cara menghilangkan redudansi pada code.
  • Code Generator
    Tahapan code generator ini merupakan tahapan terakhir pada proses kompilasi. Pada tahapan ini akan dilakukan penentuan register untuk masing-masing variable lalu instruksi-instruksi dalam bentuk antara akan diterjemahkan ke dalam Bahasa mesin, dan akhirnya akan menghasilkan relocatable machine code atau assembly code.
  • Symbol Table Manager
    Symbol Table adalah sebuah struktur data dengan record-record untuk setiap identifier dengan field-field untuk setiap atribut dari identifier tersebut.
  • Error Handler
    Error handler merupakan bagian dari compiler untuk menangani dan melaporkan jika ditemukan suatu error.