penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

44
MATERI PERKULIAHAN TEKNIK KOMPILASI Ken Kinanti Purnamasari 10 PENANGANAN KESALAHAN, OPTIMASI KODE, TABEL INFORMASI

Transcript of penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Page 1: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

MATERI PERKULIAHAN

TEKNIK KOMPILASI

Ken Kinanti Purnamasari

10

PENANGANAN KESALAHAN, OPTIMASI KODE,

TABEL INFORMASI

Page 2: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

PENANGANAN KESALAHAN

Page 3: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Jenis Penanganan

- Kesalahan LEKSIKAL- Kesalahan SINTAKS- Kesalahan SEMANTIK

Page 4: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Kesalahan LEKSIKAL

- Kesalahan mengeja keyword contoh : THEN ditulis sebagai TEN

Page 5: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Kesalahan SINTAKS

- Kesalahan penulisan urutan token contoh : Operasi aritmatika yang jumlah tanda kurung-nya kurang / tidak pas.A := B + ( C *( D + E );

Page 6: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Kesalahan SEMANTIK

- Kesalahan aturan makna contoh : Tipe Data

VARSiswa : integer;

BEGINSiswa := “Budi”;

END;

Page 7: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Kesalahan SEMANTIK

- Kesalahan aturan makna contoh : Variabel belum didefinisikan

VARA : integer;

BEGINB := A + 1;

END;

Page 8: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Langkah Penanganan

- Mendeteksi kesalahan- Melaporkan kesalahan- Solusi perbaikan

Page 9: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Isi Laporan Kesalahan

- Kode Kesalahan- Pesan Kesalahan- Nama dan Atribut Identifier- Tipe Data

Page 10: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Isi Laporan Kesalahan

Contoh :Error 14 Hitung : unknown identifier

Artinya :- Kode Kesalahan : 14- Pesan Kesalahan : unknown identifier- Nama Identifier : Hitung

Page 11: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Reaksi Kompilator

Tingkatan reaksi kompilator pada kesalahan :- Tidak dapat diterima- Benar, tapi kurang dapat diterima- Dapat diterima

Page 12: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Reaksi Kompilator

- Reaksi yang tidak dapat diterima Compiler crash Looping tak berhingga Menghasilkan Program Objek yang salah

Page 13: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Reaksi Kompilator

- Reaksi yang kurang dapat diterima Setiap menemukan suatu kesalahan, kompilator melaporkan-nya, tetapi kemudian berhenti (harus mengulang proses kompilasi)

Page 14: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Reaksi Kompilator

- Reaksi yang dapat diterima Recovery/Memulihkan suatu kesalahan (men-stabilkan), kemudian menemukan error lainnya Repair/Memperbaiki kesalahan (memodifikasi source-code) dan membuatnya valid

Page 15: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Recovery

Mengembalikan compiler ke kondisi stabil (supaya dapat melanjutkan proses)Beberapa strategi yang digunakan : - Mekanisme Ad Hoc- Syntax Directed Recovery- Secondary Error Recovery- Context Sensitive Recovery

Page 16: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Recovery

- Mekanisme Ad Hoc Dilakukan berdasarkan keinginan pembuat kompilator.

Page 17: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Recovery

- Syntax Directed Recovery Dilakukan berdasarkan sintaks. Contoh :

beginA:= A + 1B := B – 1;C := B – A;end;

Dikenali sebagai begin <stmt> ? <stmt> ; <stmt>; end;

Page 18: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Recovery

- Secondary Error Recovery Dilakukan untuk melokalisasi error. Terdapat 2 jenis, yaitu : Panic Modemaju terus sampai bertemu delimiter (misalnya “;”) Unit Deletionmenghapus keseluruhan unit sintaktik

Page 19: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Recovery

- Context Sensitive Recovery Mengatasi kesalahan semantik. Contoh :

VARA : integer;

BEGINB := A + 1;

END;

Maka, tipe data B diasumsikan bertipe integer.

Page 20: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Repair

Proses modifikasi program sumber.(supaya dapat ditranslasi) Beberapa strategi yang digunakan :- Mekanisme Ad Hoc- Syntax Directed Repair- Context Sensitive Repair- Spelling Repair

Page 21: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Repair

- Mekanisme Ad Hoc Dilakukan berdasarkan keinginan pembuat kompilator.

Page 22: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Repair

- Syntax Directed Repair Menyisipkan simbol terminal yang hilang / menghapus terminal penyebab kesalahan. Contoh :

WHILE A <= 1A:= A + 1;

Maka keyword ”DO” akan ditambahkan

Page 23: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Repair

- Context Sensitive Repair Memperbaiki kesalahan semantik. Tipe Data

VARA : integer;

BEGINB := A + 1;

END;

Maka, dibuat definisi variabel baru B yang bertipe integer

Page 24: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Error Repair

- Spelling Repair Perbaikan kesalahan pengetikan.WHILLE A>1 DO Maka, WHILLE akan diganti menjadi WHILE

Page 25: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

OPTIMASI KODE

Page 26: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Jenis Optimasi

Menghasilkan program yang lebih efisien. (ukuran lebih kecil, eksekusi lebih cepat)

Berdasarkan ketergantungan pada mesin : - Machine Dependent tergantung mesin- Machine Independent tidak tergantung mesin

Page 27: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Jenis Optimasi

Optimasi Machine Independent, dibagi 2 : - Lokal- Global

Page 28: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi LOKAL

- Folding mengganti ekspresi dengan nilai komputasi. Contoh :

A := 2 + 3 + B

Diubah menjadiA := 5 + B

Page 29: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi LOKAL

- Redundant-Subexpression Elimination memakai hasil komputasi yang sudah ada. Contoh :

A := B + CX := Y + B + C

Bila belum ada perubahan nilai variabel, baris terakhir dapat diubah menjadi :

X := Y + A

Page 30: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi LOKAL

- Optimasi Iterasi Loop Unrolling

Mengganti perintah perulangan, dengan menulis perintah beberapa kali.

Contoh :FOR i:=1 TO 2 DO

B[i] := 0;Menjadi :

B[1] := 0;B[2] := 0;

Page 31: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi LOKAL

- Optimasi Iterasi Frequency Reduction mengeluarkan operasi yang tidak berubah kondisi dari dalam perulangan

Page 32: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi LOKAL

Contoh :FOR I:=1 TO 10 DOBEGIN

X := 5;B := B + X;

END;

Menjadi :X := 5;FOR I:=1 TO 10 DOBEGIN

B := B + X;END;

Page 33: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi LOKAL

- Strength ReductionPenggantian suatu operasi dengan operasi lain yang lebih cepat dieksekusi.Contoh :

A := A + 1;

Menjadi :INC(A);

Page 34: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi GLOBAL

- Biasanya menggunakan Analisis Flow.

- Analisis ini menggunakan graf untuk menggambarkan berbagai alur yang memungkinkan untuk eksekusi program

Page 35: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi GLOBAL

- Optimasi oleh Programmer Bagian kode yang tidak digunakan

Contoh :

X := 5;IF X=0 THEN

A := A + 1;

Kode A := A + 1 tidak pernah digunakan

Page 36: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi GLOBAL

- Optimasi oleh Programmer Parameter yang tidak digunakan

Procedure Hitung(a,b,c:integer);var

X : integerbegin

X := a + b;end;

Parameter C tidak pernah digunakan

Page 37: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi GLOBAL

- Optimasi oleh Programmer Variabel yang tidak digunakan

Program Input;var

a, b : integer;begin

a := 5;end;

Variabel b tidak pernah digunakan

Page 38: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi GLOBAL

- Optimasi oleh Programmer Variabel tanpa nilai awal

Program Tes;var

a, b : integer;begin

a := 5;a := a + b;

end;

Variabel b belum diberikan nilai awal

Page 39: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Optimasi GLOBAL

- Optimasi oleh Kompilator Efisiensi program Penghapusan kode yang tidak digunakan

Page 40: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

TABEL INFORMASI

Page 41: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Jenis Tabel Informasi

Tabel Identifier list identifier dalam program Tabel Array list info tambahan untuk array Tabel Blok list variabel pada blok yang sama Tabel Real list elemen tabel bernilai real Tabel String list informasi string Tabel display list blok yang aktif

Page 42: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

REFERENSI . . .

Firrar U., Teknik Kompilasi, J&J Learning Yogyakarta, 2001

Alfred v. a. & ullman J.D., Compilers Principles Technique and Tools, Addison Wesley, 1988

Page 43: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

TUGAS BESAR

Buatlah MAKALAH dari COMPILER yang dibangun !(source-code input, source-code compiler, .exe compiler, laporan)

Page 44: penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)

Format Laporan : > MASUKAN> ANALISIS LEKSIKAL (Deskripsi & Contoh)> ANALISIS SINTAKSIS (Deskripsi & Contoh)> ANALISIS SEMANTIK (Deskripsi & Contoh)> PENANGANAN KESALAHAN (Deskripsi & Contoh)> PEMBANGKITAN KODE (Deskripsi & Contoh)> OPTIMASI KODE (Deskripsi & Contoh)> KELUARAN (Contoh Input Kode & Keluarannya)> KESIMPULAN (Kekurangan & Kelebihan dari Compiler)> Lampiran : USER MANUAL (Cara Penggunaan Compiler)