Jenis-jenis
kesalahan dan slip
1.
Kesalahan Leksikal
Misalnya
kesalahan mengeja keyword,
contoh: then
ditulis ten
2.
Kesalahan Sintaks
Misalnya pada
operasi aritmatika kekurangan jumlah paranthesis
(kurung).
contoh :
A:=X+(B*(C+D)
3. Kesalahan
Semantik
a. Tipe data yang salah, misal tipe data
integer digunakan untuk
variabel string.
Contoh : Var Siswa : Integer
Siswa
:= 'Aka‘ {tipe string}
b. Variabel belum didefinisikan tetapi
digunakan dalam operasi.
Contoh : B := B + 1 {B belum didefinisikan}
Penanganan Kesalahan
Prosedur
penanganan kesalahan terdiri dari :
Mendeteksi
kesalahan
Melaporkan
kesalahan
Tindak lanjut
perbaikan / pemulihan
Pelaporan kesalahan yang dilakukan oleh sebuah kompilator
yang menemukan kesalahan meliputi :
Kode kesalahan
Pesan kesalahan
dalam bahasa natural
Nama dan atribut
identifier
Tipe – tipe yang
terkait bila type checking
Contoh
: Error Message : Error
162 jumlah: unknown identifier
»
Kode
kesalahan = 162
»
Pesan
kesalahan = unknown identifier
»
Nama
identifier = jumlah
Reaksi Kompilator Pada Kesalahan
Pada saat kompilator menemukan
kesalahan terdapat beberapa tingkatan reaksi diantaranya adalah :
a.
Reaksi
yang tidak dapat diterima (tidak melaporkan error)
1.
Kompilator
crash : berhenti atau hang
2.
Looping : kompilator masih berjalan tapi tidak
pernah berakhir karena looping tak berhingga (indefinite/onbounded loop)
3.
Menghasilkan
program objek yang salah : kompilator melanjutkan proses sampai selesai tapi
program objek yang dihasilkan salah. Ini berbahaya bila tidak diketahui
pemrogram, karena baru akan muncul saat program dieksekusi.
b.
Reaksi
yang benar tapi kurang dapat diterima dan kurang bermanfaat. Kompilator
menemukan kesalahan pertama,
melaporkannya, lalu berhenti (halt).
c.
Reaksi
yang dapat diterima
–
Reaksi yang sudah dapat dilakukan, yaitu
kompilator melaporkan kesalahan / error, dan selanjutnya melakukan:
»
Recovery / pemulihan, lalu melanjutkan menemukan kesalahan /
error yang lain bila masih ada.
»
Repair / Perbaikan kesalahan, lalu melanjutkan
proses translasi dan menghasilkan program objek yang valid
–
Reaksi
yang belum dapat dilakukan, yaitu kompilator mengkoreksi kesalahan, lalu
menghasilkan program objek sesuai dengan yang diinginkan pemrogram. Disini
komputernya sudah memiliki kecerdasan untuk mengetahui maksud pemrogram.
Tingkatan respon ini belum dapat diimplementasikan pada kompilator yang ada
dewasa ini.
Pemulihan
Kesalahan
Tujuannya mengembalikan kondisi parser ke kondisi stabil ????
Strategi yang dilakukan error recovery sebagai berikut :
–
Mekanisme Ad Hoc
–
Syntax Directed Recovery
–
Secondary Error Recovery
–
Context Sensitive Recovery
Mekanisme Ad
Hoc
Recovery yang dilakukan tergantung dari
pembuat kompilator sendiri/Spesifik, dan tidak terikat pada suatu aturan
tertentu. Cara ini biasa disebut juga special
purpose error recovery.
Syntax
Directed Recovery
Melakukan recovery berdasarkan syntax
Contoh : ada program
begin
A:=A+1
B:=B+1;
C:=C+1
end;
kompilator akan mengenali sebagai (dalam
notasi BNF)
begin
< statement>?<statement>;<statement>end;
? akan diperlakukan sebagai “;”
Berguna
untuk melokalisir kesalahan / error, caranya :
§ Panic mode
Maju terus dan mengabaikan teks sampai bertemu
delimeter (misal ‘;’)
contoh : IF A := 1
Kondisi := true;
Teks diatas terjadi kesalahan karena
tidak ada instruksi THEN, kompilator akan maju terus sampai bertemu ‘;’
Unit deletion
Menghapus keseluruhan suatu unit sintaktik
(misal: <block>,<exp>,<statement> dan sebagainya), efeknya
sama dengan panic mode tetapi unit deletion memelihara kebenaran
sintaksis dari source program dan mempermudah untuk melakukan error repairing
lebih lanjut.
Context Sensitive Recovery
Berkaitan dengan semantik,misal bila
terdapat variabel yang belum dideklarasikan(undifined variabel) maka diasumsikan tipenya berdasarkan
kemunculannya.
Contoh :
B:=
'nama'
sementara diawal program variabel B
belum dideklarasikan, maka berdasarkan
kemunculannya diasumsikan variabel B bertipe string.
JENIS-JENIS
DARI DOKUMENTASI/HELP
•Tidak pernah
suatu penggantian untuk desain tidak baik, tetapi penting.
•Sistem sederhana
user memanggil dan menggunakannya, berikan nama.
•Hampir sebagian
sistem dengan banyak fitur membutuhkan help/bantuan.
Jenis-jenis
Bantuan:
•Tutorial –
•Review/Referensi yang cepat –
•Manual Referensi (Penjelasan lengkap) -
•Bantuan untuk context-sensitive (spesifikasi tugas)



0 komentar:
Posting Komentar