MATERI PERKULIAHAN TEKNIK KOMPILASI PENANGANAN KESALAHAN OPTIMASI KODE

  • Slides: 42
Download presentation
MATERI PERKULIAHAN TEKNIK KOMPILASI PENANGANAN KESALAHAN, OPTIMASI KODE, TABEL INFORMASI 6 Ken Kinanti Purnamasari

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

PENANGANAN KESALAHAN

PENANGANAN KESALAHAN

Jenis Penanganan - Kesalahan LEKSIKAL - Kesalahan SINTAKS - Kesalahan SEMANTIK

Jenis Penanganan - Kesalahan LEKSIKAL - Kesalahan SINTAKS - Kesalahan SEMANTIK

Kesalahan LEKSIKAL - Kesalahan mengeja keyword contoh : THEN ditulis sebagai TEN

Kesalahan LEKSIKAL - Kesalahan mengeja keyword contoh : THEN ditulis sebagai TEN

Kesalahan SINTAKS - Kesalahan penulisan urutan token contoh : Operasi aritmatika yang jumlah tanda

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 VAR Siswa :

Kesalahan SEMANTIK - Kesalahan aturan makna contoh : § Tipe Data VAR Siswa : integer; BEGIN Siswa : = “Budi”; END;

Kesalahan SEMANTIK - Kesalahan aturan makna contoh : § Variabel belum didefinisikan VAR A

Kesalahan SEMANTIK - Kesalahan aturan makna contoh : § Variabel belum didefinisikan VAR A : integer; BEGIN B : = A + 1; END;

Langkah Penanganan - Mendeteksi kesalahan - Melaporkan kesalahan - Solusi perbaikan

Langkah Penanganan - Mendeteksi kesalahan - Melaporkan kesalahan - Solusi perbaikan

Isi Laporan Kesalahan - Kode Kesalahan - Pesan Kesalahan - Nama dan Atribut Identifier

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

Isi Laporan Kesalahan Contoh : Error 14 Hitung : unknown identifier Artinya : -

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,

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

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

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, kemudian menemukan error

Reaksi Kompilator - Reaksi yang dapat diterima § Recovery/Memulihkan suatu kesalahan, kemudian menemukan error lainnya jika ada § Repair/Memperbaiki kesalahan, kemudian melanjutkan proses translasi dan menghasilkan program objek yang benar

Error Recovery Mengembalikan compiler ke kondisi stabil (supaya dapat melanjutkan proses) Beberapa strategi yang

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 - Mekanisme Ad Hoc Dilakukan berdasarkan keinginan pembuat kompilator.

Error Recovery - Syntax Directed Recovery Dilakukan berdasarkan sintaks. Contoh : begin A: =

Error Recovery - Syntax Directed Recovery Dilakukan berdasarkan sintaks. Contoh : begin A: = A + 1 B : = 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

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

Error Recovery - Context Sensitive Recovery Mengatasi kesalahan semantik. Contoh : VAR A :

Error Recovery - Context Sensitive Recovery Mengatasi kesalahan semantik. Contoh : VAR A : integer; BEGIN B : = A + 1; END; Maka, tipe data B diasumsikan bertipe integer.

Error Repair Proses modifikasi program sumber. (supaya dapat ditranslasi) Beberapa strategi yang digunakan :

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 - Mekanisme Ad Hoc Dilakukan berdasarkan keinginan pembuat kompilator.

Error Repair - Syntax Directed Repair Menyisipkan simbol terminal yang hilang / menghapus terminal

Error Repair - Syntax Directed Repair Menyisipkan simbol terminal yang hilang / menghapus terminal penyebab kesalahan. Contoh : WHILE A <= 1 A: = A + 1; Maka keyword ”DO” akan ditambahkan

Error Repair - Context Sensitive Repair Memperbaiki kesalahan semantik. § Tipe Data VAR A

Error Repair - Context Sensitive Repair Memperbaiki kesalahan semantik. § Tipe Data VAR A : integer; BEGIN B : = 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

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

OPTIMASI KODE

OPTIMASI KODE

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

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 Machine Independent, dibagi 2 : - Lokal - Global

Jenis Optimasi Machine Independent, dibagi 2 : - Lokal - Global

Optimasi LOKAL - Folding mengganti ekspresi dengan nilai komputasi. Contoh : A : =

Optimasi LOKAL - Folding mengganti ekspresi dengan nilai komputasi. Contoh : A : = 2 + 3 + B Diubah menjadi A : = 5 + B

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

Optimasi LOKAL - Redundant-Subexpression Elimination memakai hasil komputasi yang sudah ada. Contoh : A : = B + C X : = 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

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

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

Optimasi LOKAL Contoh : FOR I: =1 TO 10 DO BEGIN X : =

Optimasi LOKAL Contoh : FOR I: =1 TO 10 DO BEGIN X : = 5; B : = B + X; END; Menjadi : X : = 5; FOR I: =1 TO 10 DO BEGIN B : = B + X; END;

Optimasi LOKAL - Strength Reduction Penggantian suatu operasi dengan operasi lain yang lebih cepat

Optimasi LOKAL - Strength Reduction Penggantian 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

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 :

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,

Optimasi GLOBAL - Optimasi oleh Programmer § Parameter yang tidak digunakan Procedure Hitung(a, b, c: integer); var X : integer begin X : = a + b; end; Parameter C tidak pernah digunakan

Optimasi GLOBAL - Optimasi oleh Programmer § Variabel yang tidak digunakan Program Input; var

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

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

Optimasi GLOBAL - Optimasi oleh Kompilator § Efisiensi program § Penghapusan kode yang tidak digunakan

TABEL INFORMASI

TABEL INFORMASI

Jenis Tabel Informasi Ø Tabel Identifier list identifier dalam program Ø Tabel Array list

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.

REFERENSI. . . Firrar U. , Teknik Kompilasi, J&J Learning Yogyakarta, 2001 Alfred v. a. & ullman J. D. , Compilers Principles Technique and Tools, Addison Wesley, 1988