• Tidak ada hasil yang ditemukan

Pemrograman Berorientasi Objek ... - UNIKOM Kuliah Online

N/A
N/A
Protected

Academic year: 2023

Membagikan "Pemrograman Berorientasi Objek ... - UNIKOM Kuliah Online"

Copied!
42
0
0

Teks penuh

(1)

MATERI PERKULIAHAN

TEKNIK KOMPILASI

Ken Kinanti Purnamasari

6

PENANGANAN KESALAHAN, OPTIMASI KODE,

TABEL INFORMASI

(2)

P

ENANGANAN

K

ESALAHAN

(3)

Jenis Penanganan

-

Kesalahan LEKSIKAL - Kesalahan SINTAKS - Kesalahan SEMANTIK

(4)

Kesalahan LEKSIKAL

- Kesalahan mengeja keyword

contoh :

THEN ditulis sebagai TEN

(5)

Kesalahan SINTAKS

- Kesalahan penulisan urutan token

contoh :

Operasi aritmatika yang jumlah tanda kurung-nya kurang / tidak pas.

A := B + ( C *( D + E );

(6)

Kesalahan SEMANTIK

- Kesalahan aturan makna

contoh :

Tipe Data VAR

Siswa : integer;

BEGIN

Siswa := “Budi”;

END;

(7)

Kesalahan SEMANTIK

- Kesalahan aturan makna

contoh :

Variabel belum didefinisikan VAR

A : integer;

BEGIN

B := A + 1;

END;

(8)

Langkah Penanganan

-

Mendeteksi kesalahan - Melaporkan kesalahan - Solusi perbaikan

(9)

Isi Laporan Kesalahan

-

Kode Kesalahan - Pesan Kesalahan

- Nama dan Atribut Identifier - Tipe Data

(10)

Isi Laporan Kesalahan

Contoh :

Error 14 Hitung : unknown identifier

Artinya :

- Kode Kesalahan : 14

- Pesan Kesalahan : unknown identifier - Nama Identifier : Hitung

(11)

Reaksi Kompilator

Tingkatan reaksi kompilator pada kesalahan

:

- Tidak dapat diterima

- Benar, tapi kurang dapat diterima - Dapat diterima

(12)

Reaksi Kompilator

- Reaksi yang tidak dapat diterima

 Compiler crash

 Looping tak berhingga

 Menghasilkan Program Objek yang salah

(13)

Reaksi Kompilator

- Reaksi yang kurang dapat diterima

 Setiap menemukan suatu kesalahan, kompilator melaporkan-nya,

tetapi kemudian berhenti

(harus mengulang proses kompilasi)

(14)

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

(15)

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

(16)

Error Recovery - Mekanisme Ad Hoc

Dilakukan berdasarkan keinginan pembuat kompilator.

(17)

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;

(18)

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

(19)

Error Recovery

- Context Sensitive Recovery

Mengatasi kesalahan semantik.

Contoh : VAR

A : integer;

BEGIN

B := A + 1;

END;

Maka, tipe data B diasumsikan bertipe integer.

(20)

Error Repair

Proses modifikasi program sumber.

(supaya dapat ditranslasi)

Beberapa strategi yang digunakan : - Mekanisme Ad Hoc

- Syntax Directed Repair - Context Sensitive Repair - Spelling Repair

(21)

Error Repair

- Mekanisme Ad Hoc

Dilakukan berdasarkan keinginan pembuat kompilator.

(22)

Error Repair

- Syntax Directed Repair

Menyisipkan simbol terminal yang hilang / menghapus terminal penyebab kesalahan.

Contoh :

WHILE A <= 1 A:= A + 1;

Maka keyword DOakan ditambahkan

(23)

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

(24)

Error Repair - Spelling Repair

Perbaikan kesalahan pengetikan.

WHILLE A>1 DO

Maka, WHILLE akan diganti menjadi WHILE

(25)

O

PTIMASI

K

ODE

(26)

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

(27)

Jenis Optimasi

Optimasi Machine Independent, dibagi 2 :

- Lokal - Global

(28)

Optimasi LOKAL

- Folding

mengganti ekspresi dengan nilai komputasi.

Contoh :

A := 2 + 3 + B Diubah menjadi

A := 5 + B

(29)

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

(30)

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;

(31)

Optimasi LOKAL

- Optimasi Iterasi

 Frequency Reduction

mengeluarkan operasi yang tidak berubah

kondisi dari dalam perulangan

(32)

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;

(33)

Optimasi LOKAL

- Strength Reduction

Penggantian suatu operasi dengan operasi lain yang lebih cepat

dieksekusi.

Contoh :

A := A + 1;

Menjadi : INC(A);

(34)

Optimasi GLOBAL

- Biasanya menggunakan Analisis Flow.

- Analisis ini menggunakan graf untuk menggambarkan berbagai alur yang

memungkinkan untuk eksekusi program

(35)

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

(36)

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

(37)

Optimasi GLOBAL

- Optimasi oleh Programmer

 Variabel yang tidak digunakan

Program Input;

var

a, b : integer;

begin

a := 5;

end;

Variabel b tidak pernah digunakan

(38)

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

(39)

Optimasi GLOBAL

- Optimasi oleh Kompilator

 Efisiensi program

 Penghapusan kode yang tidak digunakan

(40)

T

ABEL

I

NFORMASI

(41)

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

(42)

REFERENSI . . .

Firrar U., Teknik Kompilasi, J&J Learning Yogyakarta, 2001

Alfred v. a. & ullman J.D., Compilers Principles Technique and Tools, Addison Wesley, 1988

Referensi

Dokumen terkait

MATERI PERKULIAHAN AGAMA KRISTEN PROTESTAN Ken Kinanti Purnamasari 0 PERKENALAN & ATURAN PERKULIAHAN... Dosen Ken Kinanti Purnamasari Chat FB / Messenger Ken Kinanti Purnamasari