penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)
-
Upload
kukuh-setiawan -
Category
Software
-
view
374 -
download
24
Transcript of penanganan kesalahan, optimasi kode, tabel informasi (Teknik Kompilasi)
MATERI PERKULIAHAN
TEKNIK KOMPILASI
Ken Kinanti Purnamasari
10
PENANGANAN KESALAHAN, OPTIMASI KODE,
TABEL INFORMASI
PENANGANAN KESALAHAN
Jenis Penanganan
- Kesalahan LEKSIKAL- Kesalahan SINTAKS- Kesalahan SEMANTIK
Kesalahan LEKSIKAL
- Kesalahan mengeja keyword contoh : THEN ditulis sebagai TEN
Kesalahan SINTAKS
- Kesalahan penulisan urutan token contoh : Operasi aritmatika yang jumlah tanda kurung-nya kurang / tidak pas.A := B + ( C *( D + E );
Kesalahan SEMANTIK
- Kesalahan aturan makna contoh : Tipe Data
VARSiswa : integer;
BEGINSiswa := “Budi”;
END;
Kesalahan SEMANTIK
- Kesalahan aturan makna contoh : Variabel belum didefinisikan
VARA : integer;
BEGINB := A + 1;
END;
Langkah Penanganan
- Mendeteksi kesalahan- Melaporkan kesalahan- Solusi perbaikan
Isi Laporan Kesalahan
- Kode Kesalahan- Pesan Kesalahan- Nama dan Atribut Identifier- Tipe Data
Isi Laporan Kesalahan
Contoh :Error 14 Hitung : unknown identifier
Artinya :- Kode Kesalahan : 14- Pesan Kesalahan : unknown identifier- Nama Identifier : Hitung
Reaksi Kompilator
Tingkatan reaksi kompilator pada kesalahan :- Tidak dapat diterima- Benar, tapi kurang dapat diterima- Dapat diterima
Reaksi Kompilator
- Reaksi yang tidak dapat diterima Compiler crash Looping tak berhingga Menghasilkan Program Objek yang salah
Reaksi Kompilator
- Reaksi yang kurang dapat diterima Setiap menemukan suatu kesalahan, kompilator melaporkan-nya, tetapi kemudian berhenti (harus mengulang proses 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
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
Error Recovery
- Mekanisme Ad Hoc Dilakukan berdasarkan keinginan pembuat kompilator.
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;
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
Error Recovery
- Context Sensitive Recovery Mengatasi kesalahan semantik. Contoh :
VARA : integer;
BEGINB := A + 1;
END;
Maka, tipe data B diasumsikan bertipe integer.
Error Repair
Proses modifikasi program sumber.(supaya dapat ditranslasi) Beberapa strategi yang digunakan :- Mekanisme Ad Hoc- Syntax Directed Repair- Context Sensitive Repair- Spelling Repair
Error Repair
- Mekanisme Ad Hoc Dilakukan berdasarkan keinginan pembuat kompilator.
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
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
Error Repair
- Spelling Repair Perbaikan kesalahan pengetikan.WHILLE A>1 DO Maka, WHILLE akan diganti menjadi WHILE
OPTIMASI KODE
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
Jenis Optimasi
Optimasi Machine Independent, dibagi 2 : - Lokal- Global
Optimasi LOKAL
- Folding mengganti ekspresi dengan nilai komputasi. Contoh :
A := 2 + 3 + B
Diubah menjadiA := 5 + B
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
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;
Optimasi LOKAL
- Optimasi Iterasi Frequency Reduction mengeluarkan operasi yang tidak berubah kondisi dari dalam perulangan
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;
Optimasi LOKAL
- Strength ReductionPenggantian suatu operasi dengan operasi lain yang lebih cepat dieksekusi.Contoh :
A := A + 1;
Menjadi :INC(A);
Optimasi GLOBAL
- Biasanya menggunakan Analisis Flow.
- Analisis ini menggunakan graf untuk menggambarkan berbagai alur yang memungkinkan untuk eksekusi program
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
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
Optimasi GLOBAL
- Optimasi oleh Programmer Variabel yang tidak digunakan
Program Input;var
a, b : integer;begin
a := 5;end;
Variabel b tidak pernah digunakan
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
Optimasi GLOBAL
- Optimasi oleh Kompilator Efisiensi program Penghapusan kode yang tidak digunakan
TABEL INFORMASI
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
REFERENSI . . .
Firrar U., Teknik Kompilasi, J&J Learning Yogyakarta, 2001
Alfred v. a. & ullman J.D., Compilers Principles Technique and Tools, Addison Wesley, 1988
TUGAS BESAR
Buatlah MAKALAH dari COMPILER yang dibangun !(source-code input, source-code compiler, .exe compiler, laporan)
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)