1) Tahapan Kompilasi
Compiler/ kompilasi adalah suatu program yang dapat membaca suatu Bahasa pemrograman (source language) dan kemudian diterjemahkan ke dalam Bahasa pemrograman lain (target language). Didalam teknik kompilasi ada beberapa tahapan yang menjadi standar dalam menerjemahkan kode dari bahasa pemrograman menjadi bahasa mesin.
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.
Contoh Pseudocode.
1. Contoh Pseudocode untuk menginput tiga buah bilangan
Disini kita akan membuat pseudocode dengan menginput 3 bilangan dan menentukan bilangan terbesar, terkecil, dan rata-ratanya. berikut bentuk algoritma dalam Pseudocode:
If (A>B ; A>C) then Print “A paling besar” If (B>A ; B>C) then Print “B paling besar” Else Print “C terkecil” End if
- Jumlah = A + B + C
rata-rata = Jumlah / 3
Output rata-rata
2. Contoh Pseudocode untuk mengubah satuan waktu
Disini kita akan mengubah waktu (detik, menit, dan jam) dimana dari detik ke stuan jam, dan ke satuan menit. untuk membuat Algoritma Pseudocode kita bisa memasukkan detik, menit = 60 detik, jam = 3600 detik, tampilkan menit, dan tampilkan jam.
Penulisan Pseudocode sebagai berikut:
Read detik M = 60 s H = 3600 s Output M Output H
3. Contoh Pseudocode untuk menentukan bilangan ganjil dan genap
Sebelum kita membuat tulisan pseudocode, hal yang harus dilakukan adalah menginput sebuah bilangan, bagi bilangan yang tadi dimasukkan dengan angka dua, jika bilangannya menghasilkan sisa pembagian nol maka itu adalah genap, sedangkan jika bilangan tidak menghasilkan sisa pembagian 0 maka itu adalan bilangan ganjil.
berikut penulisan Pseudocode dalam menentukan bilangan genap dan ganjil:
Read Bilangan If bil mod 2 = 0 then, “Output Genap” Else “Output Ganjil” End if
4. Contoh Pseudocode menghitung bilangan prima dan bukan
Kita tahu bahawa bilangan prima adalah bilangan yang habis dibagi satu dan bilangan yang angkanya lebih besar dari 28 tidak memiliki kelipatan.
Deklarasi Ulang,Jumb,Sisa,Bilangan : Interger Hasil : String Deskripsisi Read (Bilangan) For (ulang = 1 to ulang <=bil.step1) sisa if (sisa=0) THEN jumB <-jumB+1 Else jumb2) THEN Hasil <-(“Bukan bil prima”) Else Hasil <-(“Bilangan Prima”) Write (Hasil)
5. Contoh Pseudocode untuk menampilkan 4 menu
Empat menu ter diri dari: Persegi empat, Lingkaran, dan Balok, untuk penulisan pseudocode sebagai berikut:
Deskripsi WRITE (MENU) WRITE (1.PERSEGI EMPAT) WRITE (2.LINGKARAN) WRITE (3.BALOK) WRITE (4.KE
6. Contoh Pseudocode untuk menampilkan 4 menu
Empat menu ter diri dari: Persegi empat, Lingkaran, dan Balok, untuk penulisan pseudocode sebagai berikut:
Deskripsi WRITE (MENU) WRITE (1.PERSEGI EMPAT) WRITE (2.LINGKARAN) WRITE (3.BALOK) WRITE (4.KE