Model Kompilator

24
MODEL KOMPILATOR

Transcript of Model Kompilator

Page 1: Model Kompilator

MODEL KOMPILATOR

Page 2: Model Kompilator

• 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

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

MODEL KOMPILATOR

Page 5: Model Kompilator

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

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

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

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

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

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

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

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

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
Page 15: Model Kompilator

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

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

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

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

Contoh kasus kuadrupel

AB+CD+*

Dengan menggunakan bahasa assembly format 1-alamat dapat kita lihat sintaksnya berikut ini

Page 20: Model Kompilator

LDA AADD B

STO T1LDA CADD DSTO T2LDA T1MUL T2STO T3

Page 21: Model Kompilator

LDA AADD B

STO T1LDA CADD DMUL T1STO T2

Page 22: Model Kompilator

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

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

Kesulitan yang sebenarnya pada pengembangan kompilator adalah pada

tahapan analisis semantik, pembangkitan dan optimasi kode.