Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

dokumen-dokumen yang mirip
BAB VI CARA PENANGANAN KESALAHAN

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

Kesalahan Program dapat berupa

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK

Perjalanan sebuah intruksi

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom

BAB VII PENANGANAN KESALAHAN dan HELP-DOCUMENTATION

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16

ALGORITMA PEMROGRAMAN 1C SINTAKS

TEKNIK KOMPILASI. Firrar Utdirartatmo

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

Teknik Optimasi. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Kuliah Online : TEKKOM [2013/VI]

Aplikasi Rekursif dalam Analisis Sintaks Program

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

ALGORITMA PEMROGRAMAN 1C SEMANTIKS

BAB II SINTAKS 2.1. SINTAKS

Bab III Semantik. Konsep Semantik Bahasa Pemrograman (Semantik Analisis)

SEMANTIK. Int vector[10];

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

SMA SANTO PAULUS PONTIANAK

BAB II ANALISA LEKSIKAL (SCANNER)

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa.

UNIVERSITAS GUNADARMA

Teknik optimasi. Teknik optimasi kode program Tujuan: menghasilkan kode program yang berukuran lebih kecil dan lebih cepat pada saat dieksekusi.

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

Fase-fase proses sebuah kompilasi

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

BAB 1 PENDAHULUAN KOMPILASI. Pendahuluan

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

TUGAS MATA KULIAH TEKNIK KOMPILASI

21/11/2016. Pohon Sintaks. Syntax?? Proses Penurunan. Analisis Syntax (Parser) Metode Parsing ANALISIS SINTAKS TEKNIK KOMPILASI

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI

TEKNIK KOMPILASI Konsep & Notasi Bahasa

Parsing. A -> a as baa B -> b bs abb

TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Komentar Program. Komentar program dapat diletakkan dimanapun di dalam program. pembatas (* dan *).

MODUL VII STORED PROCEDURE

Algoritma Pemrograman

KONSEP DASAR BAHASA PASCAL

Pendahuluan. Tujuan Pembelajaran :

SUMBER BELAJAR PENUNJANG PLPG

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

LANGUAGES AND TRANSLATOR

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.

STRUKTUR PROGRAM. Secara ringkas, struktur suatu program Pascal dapat terdiri dari : 1.Judul Program 2.Blog Program a.

Dasar Komputer & Pemrograman 2A

Teknik Kompilasi. Notasi Bahasa

@copyright by Emy PENGANTAR ALGORITMA & PROGRAM & PROGRAM PENGERTIAN ALGORITMA NOTASI UNTUK ALGORITMA

MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR. Dosen Pengampu: Utami Dewi Widianti,S.Kom

PHP (HYPERTEXT PREPROCESSOR)

TEKNIK OPTIMASI. Dependensi Optimasi. Optimasi Lokal. Menghasilkan kode program dengan ukuran yang lebih kecil, sehingga lebih cepat eksekusinya.

dengan menyebutkan judul prosedurnya. dalam bentuk prosedur-prosedur. diperlukan.

BAB II DASAR TEORI. 2.1 Kompilator

PERKEMBANGAN PASCAL. Pascal adalah bahasa tingkat tinggi ( high level language) yang orientasinya pada segala tujuan

Struktur Kontrol. Contoh, Akan tercetak x is 100 jika nilai yang disimpan pada variable x adalah 100:

STRUKTUR BAHASA PEMROGRAMAN

Algoritma Pemrograman

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Algoritma Pemrograman

Pendahuluan. Kuliah online : Tekkom [2013/VI]

ilmu bahasa pemrograman ilmu c++ Copyright izie ilmu c++

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

3.1. Definisi Syntax Syntax suatu bahasa pemrograman adalah satu himpunan

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs

Modul 1 Dasar Dasar Bahasa Pemrograman C

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

JavaScript. Pemrograman Web 1. Genap

Tahapan Membuat Program

Algoritma Pemrograman 2B (Pemrograman C++)

PROSES PENJUALAN BUKU

PEMROGRAMAN WEB 08 JavaScript Dasar

STMIK AMIKOM YOGYAKARTA. Kusnawi, S.Kom, M.Eng

BAB V ANALISA SEMANTIK

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

PENGANTAR TEKNIK KOMPILASI

Keyword,Tipe data & Variabel. Keywords pada c Tipedata Variabel Konstanta

Konstruksi Dasar Algoritma

Web Site :

P - 7 Bab 5 : PHP : Hypertext Prepocessor

TEORI KONSEP PEMPROGRAMAN 3.1

SOAL DAN JAWABAN UTS PEMROGRAMAN DASAR KELAS X

Modul 1 Pengantar Bahasa Pascal

OPERATOR DAN STATEMEN I/O

Selection, Looping, Branching

Contoh soal Struktur Program Pascal (Seleksi tingkat propinsi TOKI 2004)

Struktur Data II. Bekerja Dengan Form.

Transkripsi:

Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Sebuah kompilator akan sering menemui program yang mengandung kesalahan. Oleh karena itu, kompilator harus memiliki strategi yang dapat dilakukan untuk menangani kesalahan-kesalahan tersebut.

1. KESALAHAN LEKSIKAL : Yaitu kesalahan dalam mengeja keyword Contoh : THEN ditulis sebagai TEN / THN

2. KESALAHAN SINTAKS : Yaitu kesalahan dalam penulisan sintaks, misalnya pada operasi aritmatika dengan jumlah parenthesis (kurung) yang tidak pas. Contoh : A : = X + (B*(C+D)

3. KESALAHAN SEMANTIK : Kesalahan dalam penentuan tipe data Kesalahan karena belum mendefinisikan variabel Contoh : VAR siswa : integer siswa := yanuar Contoh : B := B + 1; Variabel B belum didefinisikan

Langkah-langkah 1. Mendeteksi kesalahan 2. Melaporkan kesalahan 3. Tindak lanjut pemulihan/perbaikan

Sebuah kompilator yang menemukan kesalahan akan melakukan pelaporan, yang biasanya meliputi : 1. Kode kesalahan 2. Pesan kesalahan dalam bahasa manual 3. Nama & atribut identifier 4. Tipe-tipe yang terkait dengan type checking Misal : Error 162 Jumlah : unknown identifier Artinya : kode kesalahan = 162, pesan kesalahan = unknown identifier, nama identifier = jumlah

Reaksi-reaksi yang tidak dapat diterima 1. Kompilator crash : berhenti atau hang 2. Looping : kompilator masih berjalan, tapi tidak pernah berhenti karena looping yang tak berhingga. 3. Menghasilkan program objek yang salah : kompilator melanjutkan proses sampai selesai tapi program objek yang dihasilkan salah ketika saat dieksekusi.

Reaksi yang benar, tetapi kurang dapat diterima dan kurang bermanfaat 1. Kompilator menemukan kesalahan pertama, melaporkannya, lalu berhenti (halt). 2. Kompilator hanya mampu mendeteksi dan melaporkan kesalahan satu kali kompilasi. 3. Pemrogram akan membuang waktu untuk melakukan pengulangan kompilasi setiap kali terdapat error.

Reaksi-reaksi yang dapat diterima 1. Reaksi yang sudah dapat dilakukan, yaitu kompilator melaporkan error, selanjutnya melakukan recovery dan repair. 2. Reaksi yang belum dapat dilakukan, yaitu kompilator mengoreksi kesalahan lalu menghasilkan program objek sesuai dengan yang diinginkan pemrogram.

Bertujuan untuk mengembalikan parser ke kondisi stabil agar dapat melanjutkan proses parsing ke posisi selanjutnya. Strategi error recovery : 1. Mecanisme Ad Hoc 2. Syntax directed recovery 3. Secondary Error Recovery 4. Context sensitive recovery.

1. MEKANISME AD HOC Recovery yang dilakukan tergantung dari pembuat kompilator itu sendiri. Tidak terikat pada suatu aturan tertentu. Disebut juga dengan istilah special purpose error recovery.

2. SYNTAX DIRECTED RECOVERY Melakukan recovery berdasarkan syntax. Misalnya : 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 ;

3.SECONDARY ERROR RECOVERY Berguna untuk melokalisir error, caranya : Panic mode Maju terus dan mengabaikan teks sampai bertemu delimiter (misal ; ). Contoh : IF A = 1 kondisi := true Pada contoh di atas, kesalahan karena tidak ada instruksi THEN, kompilator akan terus maju sampai bertemu dengan titik koma. Unit deletion Menghapus keseluruhan suatu unit sintaktik, (misal : <block>, <exp>, <statement> dsb). Efeknya mirip dengan panic mode tetapi unit deletion memelihara kebenaran syntax dari source program dan mempermudah untuk melakukan error repairing lebih lanjut.

4. CONTEXT SENSITIVE RECOVERY Berkaitan dengan semantics, missal bila terdapat variabel yang belum dideklarasikan, maka diasumsikan tipenya berdasarkan kemunculannya. Contoh B := nama B belum dideklarasikan, maka B diasumsikan sebagai string.

Bertujuan untuk memodifikasi source program dari kesalahan dan membuatnya valid Mekanisme error repair: 1. Mecanisme Ad Hoc 2. Syntax directed repair 3. Context sensitive recovery. 4. Spelling repair

1. MEKANISME AD HOC Repair yang dilakukan tergantung dari pembuat kompilator itu sendiri.

2. SYNTAX DIRECTED REPAIR Menyisipkan symbol terminal yang dianggap hilang atau membuang terminal penyebab kesalahan. Contoh : WHILE A < 1 I := I + 1 Contoh lain : Procedure increment; begin X := X + 1; end; end;

3. CONTEXT SENSITIVE REPAIR Perbaikan dilakukan pada kesalahan Tipe Identifier, Diatasi dengan membangkitkan identifier dummy, misalnya : VAR A : string begin A := 0; end; Kompilator akan memperbaiki kesalahan dengan membangkitkan identifier baru, misalnya B yang bertipe integer. Tipe konstanta, diatasi dengan membangkitkan konstanta baru dengan tipe yang tepat

4. SPELLING REPAIR Memperbaiki kesalahan pengetikan pada identifier. Misal : WHILLE A=1 DO identifier yang salah tersebut akan diperbaiki menjadi WHILE