t. kompilasi - error handling.ppt

16
Error Handling Error Handling Kesalahan Program Penanganan Kesalahan Reaksi Compiler Pada kesalahan Error Recovery Error repair

Upload: ingin-tau

Post on 25-Sep-2015

453 views

Category:

Documents


40 download

TRANSCRIPT

  • Error HandlingKesalahan ProgramPenanganan KesalahanReaksi Compiler Pada kesalahanError RecoveryError repair

  • Kesalahan ProgramKesalahan Program dapat berupaKesalahan leksikalKesalahan Sintaks Kesalahan Semantics

  • Error Handling - Kesalahan ProgramKesalahan Program dapat berupaKesalahan leksikalKesalahan dalam mengetik/mengeja Misal THEN dituliskan dengan TEN atau THN

    Kesalahan Sintaksmisalnya dalam operasi aritmatika dengan tanda kurung yang jumlahnya kurang, contohA:= X + (B * (C+D) kurang tanda )

    Kesalahan Semantics

  • Error Handling - Kesalahan ProgramKesalahan SemanticsTipe data yang salahContoh : int c; seharusnya Real c = 1.5 * 0.78Variable belum didefinisikanMisal : B := B + 1tetapi b belum didefinisikan

  • Error Handling - Penanganan KesalahanLangkah-langkah:Mendeteksi kesalahanMelaporkan kesalahanTindak lanjut perbaikan

  • Error Handling - Penanganan KesalahanMisal: compiler menemukan kesalahan, yang bisa meliputiKode kesalahanPesan Kesalahan dalam bahasa alamiNama dan atribut identifiercontoh : error 162 Jumlah: Unknow identifierDapat diartikan: Kode kesalahan =162, pesan kesalahan = unknown identifier, nama identifier = jumlah

  • Error Handling - Reaksi terhadap KesalahanAda Beberapa reaksi yang dilakukan oleh compiler

    Reaksi-reaksi yang tidak dapat diterima

    Reaksi yang benar, tapi kurang dapat diterima dan kurang bermanfaat

  • Error Handling - Reaksi terhadap KesalahanAda Beberapa reaksi yang dilakukan oleh compiler

    Reaksi-reaksi yang tidak dapat diterimaCompilator crash: Berhenti atau hangLooping : compilator tidak bisa berhenti (infinite/onbounded loop)Menghasilkan Obyek program yang salah : berbahaya, bisa diketahui/muncul setelah program dieksekusi

  • Error Handling - Reaksi terhadap KesalahanAda Beberapa reaksi yang dilakukan oleh compilerReaksi yang benar, tapi kurang dapat diterima dan kurang bermanfaatCompilator menemukan kesalahan pertama, melaporkannya, lalu berhenti (halt)Pemrogram membuang waktu untuk melakukan pengulangan compilasi untuk setiap kali terdapat sebuah error

  • Error Handling - Reaksi terhadap KesalahanReaksi-reaksi yang dapat diterimaReaksi yang sudah dapat dilakukan ; Compilator melaporkan ErrorRecovery : PemulihanRepair : Perbaikan

    Reaksi yang belum dapat dilakukanCompiler mengkoreksi kesalahanMenghasilkan obyek program sesuai yang diinginkan pemrogramCompiler memiliki kemampuan untuk mengetahui maksud dari pemrogramBelum diimplementasikan pada program (sekarang ini)

  • Error Handling - Error RecoveryBertujuan mengembalikan parser ke kondisi stabil agar supaya dapat melanjutkan proses parsing ke posisi selanjutnya. Mekanisme Ad HocRecovery yang dilakukan tergantung dari si pembuat compilerTidak terikat pada suatu aturan tertentuDisebut juga dengan istilah purpose error recovery.

  • Error Handling - Error Recovery

    Second Error Recovery : untuk melokalisir kesalahanPanic ModeMaju terus sampai ketemu delimiterContoh : IF A = 1 Kondisi := true;Pada kondisi diatas THEN tidak ada, compiler melanjutkan sampai ketemu delimiter (;)

    Unit DeletionMenghapus keseluruhan suatu unit sintaksik (misalnya : , , dan sebagainyaMempermudah untuk melakukan error repairing

  • Error Handling - Error RecoveryContext Sensitive RecoveryBerkaitan dengan semanticscontoh : B := Budi LuhurPada awal program variabel B belum dideklarasikan, maka berdasarkan permunculannya maka diasumsikan variabel B bertipe string

  • Error Handling - Error repairMemperbaiki kesalahan dan membuat source program valid (memodifikasi)

    Mekanisme Ad HocTergantung pada sipembuat compilerSyntax directed RepairMenyisipkan / membuang simbol terminal yang dianggap hilang atau yang menyebabkan errorcontoh WHILE A < 1 I := I = 1;compiler akan menyisipkan DO

  • Error Handling - Error repairContoh lain Procedure Increment ; begin x := X + 1 end; end;

    Kelebihan simbol end, yang menyebabkan kesalahan, maka compiler akan membuangnya

  • Error Handling - Error repairContext Sensitive RepairTipe identifier: membuat identifier dummyvar A : Stringbegin A := 0;endmaka compilator akan memperbaiki kesalahan dengan membuat identifier baru , misalnya B bertipe integer

    Spelling Repair: memperbaiki kesalahan pengetikan pada identifier, misalnya: WHILLE A = 1 DOidentifier yang salah tersebut diperbaiki menjadi WHILE