TEKNIK KOMPILASI
PENANGANAN KESALAHAN,
OPTIMASI KODE,
TABEL INFORMASI
10
- Kesalahan LEKSIKAL
- Kesalahan SINTAKS
- Kesalahan SEMANTIK
Kesalahan LEKSIKAL
- Mendeteksi kesalahan
- Melaporkan kesalahan
- Solusi perbaikan
> ISI LAPORAN KESALAHAN
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
Reaksi Kompilator
- Mekanisme Ad Hoc
Dilakukan berdasarkan keinginan pembuat
kompilator.
Error Recovery
Contoh :
begin
A:= A + 1
B := B – 1;
C := B – A;
end;
Dikenali sebagai
begin <stmt> ? <stmt> ; <stmt>; end;
Error Recovery
Unit Deletion
menghapus keseluruhan unit sintaktik
Error Recovery
Contoh :
VAR
A : integer;
BEGIN
B := A + 1;
END;
- Mekanisme Ad Hoc
Dilakukan berdasarkan keinginan pembuat
kompilator.
Error Repair
Contoh :
WHILE A <= 1
A:= A + 1;
Tipe Data
VAR
A : integer;
BEGIN
B := A + 1;
END;
- Spelling Repair
Perbaikan kesalahan pengetikan.
WHILLE A>1 DO
Maka, WHILLE akan diganti menjadi WHILE
OPTIMASI KODE
Jenis Optimasi
- 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 := 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 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 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 dieksekusi.
Contoh :
A := A + 1;
Menjadi :
INC(A);
Optimasi GLOBAL
X := 5;
IF X=0 THEN
A := A + 1;
Efisiensi program
Penghapusan kode yang tidak digunakan
TABEL INFORMASI
Jenis Tabel Informasi
Buatlah MAKALAH
dari COMPILER yang dibangun !
(source-code input, source-code
compiler, .exe compiler, laporan)