Download - Model Kompilator
![Page 1: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/1.jpg)
MODEL KOMPILATOR
![Page 2: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/2.jpg)
• Pengembangan kompilator untuk
sebuah bahasa merupakan pekerjaan
yang kompleks
• Kompleksitas kompilator bisa
dikurangi bila perancang bahasa
pemrograman mempertimbangkan
bermacam-macam faktor
perancangan.
![Page 3: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/3.jpg)
TUGAS POKOK KOMPILATOR
• FUNGSI ANALISISFungsi Analisis biasa disebut front-end.Tugasnya melakukan dekomposisi program sumber menjadi bagian-bagian dasarnya.
• FUNGSI SINTESISFungsi sintesis biasa disebut back-end.Tugasnya melakukan pembangkitan dan optimasi program objek.
![Page 4: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/4.jpg)
MODEL KOMPILATOR
![Page 5: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/5.jpg)
SCANNER
Memecah program sumber menjadi besaran leksik/token
PARSER
Memeriksa kebenaran dan urutan kemuncukan token
ANALISIS SEMANTIK
melakukan analisis semantik, biasanya dalam realisasi akan digabungkan
dengan intermediate code generator (bagian yang berfungsi
membangkitkan kode antara).
CODE GENERATOR
membangkitkan kode abjek.
CODE OPTIMIZER
memperkecil hasil dan mempercepat proses.
TABEL SIMBOL
menyimpan semua informasi yang berhubungan dengan proses kompilasi.
![Page 6: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/6.jpg)
Program sumber merupakan deretan simbol-simbol yang bisa berupa huruf, digit, atau simbol tertentu seperti +, -, dan,.
Suatu program sumber memuat konstruksi bahasa yang mendasar seperti nama variabel, label, konstanta, keyword dan operator
![Page 7: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/7.jpg)
Sebagai contoh
Source program berikut merupakan masukan
bagi lexical analyzer atau scanner.
tujuannya untuk memisahkan teks yang masuk
kedalam token seperti konstanta, nama
variabel, keyword (seperti DO, IF dan THEN) dan
Operator.
Pada intinya, Lexical analyzer melakukan analisis
sintaksis level rendah.
![Page 8: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/8.jpg)
Untuk alasan efisiensi, setiap kelas dari token diberikan suatu angka representasi internal yang unik.
NAMA TOKEN NILAI REPRESENTASI
VARIABEL 1
KONSTANTA 2
LABEL 3
OPERATOR PENAMBAHAN 4
DSB…..
![Page 9: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/9.jpg)
Contoh Kasus
PERIKSA : IF A > B THEN X=Y;
TOKEN NILAI
PERIKSA 3
: 26
IF 20
A 1
> 15
B 1
THEN 21
X 1
= 10
Y 1
; 27
Bisa ditranslasikan oleh Lexical Analyzer ke dalam deretan token berikut :
![Page 10: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/10.jpg)
Scanner memberikan token ke Syntax Analyzer
Token-token ini bisa berbentuk pasangan item.
Item Pertama memberikan alamat atau lokasi dari token pada tabel simbol.
Item Kedua adalah representasi internal dari token.
Semua token akan direpresentasikan dengan informasi yang panjangnya tetap, suatu address (atau pointer) dan sebuah integer.
![Page 11: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/11.jpg)
Syntax Analyzer lebih kompleks dari
scanner
Fungsinya adalah untuk menentukan
bagaimana dekomposisinya.
Proses ini dianalogikan dengan
penentuan struktur dari suatu kalimat
dalam bahasa Inggris.
misalkan : kita ingin mengidentifikasikan
klas seperti subject, predikat, verb, noun,
dan adjective.
![Page 12: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/12.jpg)
Dalam analisis sintaksis yang menjadi perhatian kita adalah pengelompokkan token ke dalam kelas sintaksis.seperti : ekspression, statement, dan procedure
Parser memberikan suatu pohon sintaks, yang mana daunnya adalah token dan setiap elemen non-daun merepresentasikan suatu kelas sintaksis.
![Page 13: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/13.jpg)
Contoh
Analisis suatu Statement :
(A+B) * (C+D)
Bisa menghasilkan kelas sintaksis <factor>, <term>, dan <expression>,
Kita lihat pohon sintaks nya
![Page 14: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/14.jpg)
![Page 15: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/15.jpg)
Dari pohon sintaks diatas, semantic analyzer harus menentukan aksi apa yang ditentukan oleh operator aritmatika penjumlahan dan pengurangan
Saat parser mengenali simbol seperti “+” atau “-”, akan memanggil rutin semantik yang menspesifikasikan aksi yang akan dilakukan.
![Page 16: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/16.jpg)
Analisis semantik bisa menghasilkan
intermediate form dari program sumber.
Misalkan untuk ekspresi (A+B)*(C+D), kode
antaranya bisa kuadrupel berikut
( +, A, B, T1) tambahkan A dengan B simpan di T1
(+, C, D, T2) tambahkan C dengan D simpan di T2
(*, T1, T2, T3) tambahkan T1 dengan T2 simpan di T3
![Page 17: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/17.jpg)
Bentuk antara yang digunakan tergantung
bagaimana pemrosesan yang dilakukan
selama tahapan sintesis.
Suatu ekspresi infix bisa saja diubah ke
bentuk antara dalam notasi Posfix.
Notasi Infix (A+B)*(C+D)
Diubah ke Notasi Posfix menjadi
AB+CD+*
![Page 18: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/18.jpg)
Keluaran dari semantic analyzer diberikan
ke code generator.
Pada tahap ini bentuk antara dari program
sumber, biasanya ditranslasikan ke dalam
bahasa assembly atau bahasa mesin.
![Page 19: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/19.jpg)
Contoh kasus kuadrupel
AB+CD+*
Dengan menggunakan bahasa assembly format 1-alamat dapat kita lihat sintaksnya berikut ini
![Page 20: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/20.jpg)
LDA AADD B
STO T1LDA CADD DSTO T2LDA T1MUL T2STO T3
![Page 21: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/21.jpg)
LDA AADD B
STO T1LDA CADD DMUL T1STO T2
![Page 22: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/22.jpg)
Interaksi antara Scanner dan Parser
Scanner menghasilkan suatu token untuk diproses
oleh parser.
Parser akan memanggil scanner bila token berikutnya
diperlukan.
Scanner menghasilan semua token yang berhubungan
dengan source program sebelum meneruskan ke
parser. Pada kasus ini scanner telah memeriksa
keseluruhan source program, disebut sperate pass
![Page 23: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/23.jpg)
Faktor yang mempengaruhi jumlah pass yang akan dilakukan
tergantung pada :
Ketersediaan memori
Ukuran dan kecepatan kompilator
Ukuran dan kecepatan program objek
Fasilitas debugging yang diperlukan
Teknik deteksi dan pemulihan kesalahan yang diinginkan
Jumlah orang dan waktu yang diperlukan untuk
menyelesaikan proyek penulisan kompilator.
![Page 24: Model Kompilator](https://reader035.vdokumen.com/reader035/viewer/2022062319/5571fb4e497959916994812e/html5/thumbnails/24.jpg)
Kesulitan yang sebenarnya pada pengembangan kompilator adalah pada
tahapan analisis semantik, pembangkitan dan optimasi kode.