kumpulan Tanya Jawab

By TheclubLado

RANGKUMAN PERTANYAAN

KELOMPOK I (BLACK WORM)

“Analisis Leksikal”

Pertanyaan-Pertanyaan

  1. kenapa analisis leksikal harus dideskripsikan.?... (Gunawan)

jawab:

Karena proses analisi leksikal merupakan tahapan pertama dari proses kompilasi yang membaca setiap string yang dimasukkan dan mengeompokkannya ke dalam token-token, sehingga nantinya akan dapat dibaca oleh parser (analisis sintaks).

  1. jelaskan tentang token.?...(Achamad Fauzi Karim)

Token merupakan sekumpulan kecil string (lexeme) yang diasosiasikan dengan entitas tunggal. Contohnya: Indentifier, keyword, dll.

  1. perbedaan dan keunggulan tahapan kecil dan tetap pada analisis leksikal.?..(Muh. Affandi)
  2. Bagaimana Program dapat mengenali apakah source kode yang dimasukkan berupa keyword, identifier dll. (Ita Fitriati)

Itu diketahui berdasarkan tabel simbol yang ada sebagai contoh simbol operan + ,-, * dll (sumbangsi dari saharuddin.p)

KELOMPOK II (ERROR)

“Semantik”

Pertanyaan-Pertanyaan

  1. dalam penganalisaan semantik, sampai dimana batasan penganalisaan semantic.? (Andi Taufiq)

Jawab

Sebenarnya dalam penganalisaan semantic berupa pengecekan tipe, jadi analisis semantic itu hanya sebagai pengecekan kode

  1. jelaskan perbedaan DBS dengan Translasi.?..(Nur Fadilah)

jawab

DBS dan translasi sebenarnya cara pengerjaannya sama, Cuma tergantung pada sintaxnya:

Contoh DBS

Produk aksi

a®b+c a:=b+c

contoh translasi

expr®{print(“a”)}

  1. Mis:

Var

x : string;

x:=’ +’ ;`

print (x);

End;

End;

Pertanyaannya adalah apakah tanda ‘+’ diatas itu termasuk expr atau Term.?...(Lutfi Budi)

Jawab

Tanda “+” yang terdapat pada program di atas tidak termasuk expr atau term tetapi bisa dikatakan sebagai simbol

Kesimpulan :

Analisis simantik itu hanya menganalisis sebuah program source program atau source kode

KELOMPOK III (ASCII ’06)

“Error Handler (Penanganan kesalahan)”

Pertanyaan-Pertanyaan

  1. kenapa pada saat terjadi error, compiller tidak memperbaiki listing program secara otomatis dalam hal ini eror covery.?...(Lutfi Budi)

Jawab

Karena computer sudah mempunyai kecerdasan tersendiri untuk mengetahui maksud program dan juga mempunyai program tertentu untuk menolak secara otomatis listing yang salah.

  1. reaksi yang sudah dapat dilakukan terdapat dua yaitu recovery dan refair. Perbedaanya apa ?... (Saharuddin p)

Jawab

Recovery yaitu menyelesaikan suatu masalah secara global

Revair yaitu perbaikannya tidak secara menyeluruh tetapi dia secara perbaris

  1. reaksi yang benar tapi kurang dapat diterima dan kurang bermanfaat, apa maksudnya dan contohnya.?... (Gunawan Bakti)

jawab

maksudnya adalah apabila kompilator menemukan kesalahan pertama, melaporkannya,lalu berhenti(halt) dan melaporkan hanya satu untuk setiap kali kompilasi.

Contoh

System..out.println(“Sri”)

System..out.println(“Dini”)

System..out.println(“Dila”)

Kesimpulan :

a. sebuah compiler yang baik harus dapat mengani eror seperti:

- Lexical eror : penting, dapat dengan mudah diperbaiki

- Syntax error : paling penting, bisa diperbaiki

- Static simantik error : sulit dideteksi pada setiap compiler time, diperlukan runtime chek

b. cara kerja error handler /langkah-langkah

- mendeteksi kesalahan

- melaporkan letak kesalahan pada source program

- memperbaiki kesalahan

c. tujuan error handling

- melaporkan kesalahan dengan cepat

- memulihkan dengan cepat

- mengurangi overhad pada penggunaan waktu

KELOMPOK IV (REFRESH) “Teknik Optimazer”

Pertanyaan-Pertanyaan

  1. jika A:=2+3+b menjadi A:= b+3+b apakah dapat diganti atau dioptimasi. ?..............(Ahmad Fauzi Karim)

Jawab

A:= b +3+b bisa diganti atau di optimasi karena A:=b+3+b menjadi dua buah variabel yang sama yaitu variabel b, hasilnya adalah A:=2b+3 inilah hasil optimasinya

  1. program bagaimana yang dimaksud berukuran lebih kecil dan besar serta lebih cepat.?....(Zainuddin)

Jawab

Program yang dimaksud adalah program yang dapat dioptimasi atau di efisinkan. Contoh A:=2+3+b dioptimasi menjadi lebih kecil dan cepat. Hasilnya adalah A:=5+b

  1. bagaimana proses-proses intruksi pada optimasi contoh For i= 1 to 2 do.?..(Ita Fitriati)

jawab

For I= 1 to 2 do

proses optimasi

For I := 1 to 2 do

Hasilnya→ I=0 → hasil optimasi

I [0]:=0;

I [1]:=0;

-

-

-

I [5]:=0;

 

TEKNIK OPTIMASI

By TheclubLado

1. TEKNIK OPTIMASI (Kelompok IV Refresh)

Optimasi merupakan langkah efesiensi dari kode program dari berukuran kecil menjadi kecil sehingga eksekusinya nanti akan lebih cepat. Berdasarkan ketergantungannya pada mesin, optimasi dibagi menjadi :

1. Machine Dependent Optimizer

Kode dioptimasi sehingga lebih efisien pada mesin tertentu. Optimasi ini memerlukan informasi mengenai Feature yang ada pada mesin tujuan dan mengambil keuntungan darinya untuk menghasilkan kode yang lebih pendek atau dieksekusi lebih cepat.

2. Machine Independent Optimizer

Strategi optimasi yang bisa diaplikasikan tanpa tergantung pada mesin tujuan tempat kode yang dihasilkan akan dieksekusi nantinya.

OPTIMASI LOKAL

Optimasi lokal adalah optimasi yang dilakukan hanya pada suatu blok dari source code, cara-caranya sebagai berikut :

1. Folding

Mengganti konstanta atau ekspresi yang bisa dievaluasi pada saat compile time dengan nilai komputasinya. Misalkan instruksi :

A:=2+3+B Bisa diganti menjadi A:=5+B

Di sini 5 menggantikan ekspresi 2+3

2. Redundant-Subexpression Elimination

Sebuah ekspresi yang sudah pernah dikomputasi, digunakan lagi hasilnya, ketimbang melakukan komputasi ulang. Misalkan terdapat urutan instruksi :

A:=B+C

X:=Y+B+C

Kemunculan kedua dari B+C yang redundan bisa diatasi dengan memanfaatkan hasil komputasinya yang sudah ada pada instruksi sebelumnya. Perhatikan, hal ini bisa dilakukan dengan catatan belum ada perubahan pada variabel yang berkaitan.

3. Optimasi dalam sebuah iterasi

· Loop Unrolling : menggatikan suatu loop dengan menulis statement dalam loop beberapa kali. Hal ini didasari pemikiran, sebuah iterasi pada implementasi level rendah akan memerlukan operasi sebagai berikut :

Ø Inisialisasi/pemberian nilai awal pada variabel loop. Dilakukan sekali pada saat permulaan eksekusi loop.

Ø Pengetesan, apakah variabel loop telah mencapai kondisi terminasi.

Ø Adjustment yaitu penambahan atau pengurangan nilai pada variabel loop dengan jumlah tertentu.

Ø Operasi yang terjadi pada tubuh perulangan (loop body)

 

PENANGANAN KESALAHAN

By TheclubLado

1. PENANGANAN KESALAHAN (Kelompok III ASCII 06)

Dalam hal ini mencakup

a. Kesalahan program

Kesalahan program dapat berupa kesalahan :

v Kesalahan Leksikal contoh : Case ditulis casi

v Kesalahan sintaks contoh hsl := A+B*C yang seharusnya hsl = A+(B*C)

v Kesalahan semantik

Kesalahan disini biasanya dilihat dari penulisan Tipe data Integer yang dipublikasikan disourcenya menjadi String

b. Penanganan kesalahan

v Mendeteksi kesalahan

v Melaporkan Kesalahan

v Tidak Lanjut penanganan kesalahan

c. Reaksi kompiler pada kesalahan

v Reaksi yang tidak dapat diterimah contoh kompilator crash, menghasilkan program objek yang salah

v Reaksi yang dapat diterima yakni melacak kesalahan dan melakukan penanganan sehingga mendapatkan hasil program yang diiginkan oleh pemrogram

d. Error Recovery

Pemulihan kesalahan bertujjuan untuk mengembalikan parser ke kekondisi stabil (supaya dapat melakukan proses parsing selanjutnya sehingga semua error dapt terbaca).

e. Error Repair

Error repair/ perbaiakn kesalahan bertujuan untuk memodifikasi (mengubah) source program dari kesalahan dan membuatnya valid agar dapat melanjutkan proses pembuatan program akhir.

 

ANALISA SEMANTIK

By TheclubLado

1. ANALISA SEMANTIK (Kelompok II Error)

Analisa semantik berperan dalam memeriksa kesalahan yang bersifat semantic. Salah satu peranannya analisa semantic yang penting adalah pemeriksaan tipe variable. Contohnya operator * hanya digunakan untuk operan dengan tipe integer ataupun real. Sedangkan operator and, or, digunakan untuk operand dengan tipe boolean.

Penganalisaan semantik dapat dilakukan dengan dua bentuk notasi yaitu : DBS(Defenisi Berdasarkan Sintaks) dan Skema Translasi.

DBS merupakan tata bahasa dengan himpunan aturan semantic yang akan menentukan struktur sintaks dari suatu masukan, sedangkan Skema Translasi adalah suatu tata bahasa bebas konteks dengan penyisipan suatu bagian program, yang disebut aksi semantik, pada sisi kanan produksi.

Fungsi dari analisa semantik adalah untuk menentukan makna dari serangkaian instruksi yang terdapat dalam program sumber. Untuk mengetahui makna, maka rutin analisa semantik akan memeriksa :

a. Apakah variabel yang ada telah didefenisikan didefenisikan sebelumnya

b. Apakah variabel-variabel tersebut tipenya sama

c. Apakah operan yang akan dioperasikan tersebut ada nilainya dan seterusnya.

Pengecekan yang dilakukan oleh analisa semantik adalah:

Ø Memeriksa pemberlakuan nama-nama yang meliputi Duplikasi (pengecekan apakah sebuah nama terjadi duplikasi) dan Terdefenisi (Pengecekan apakah sebuah nama yang dipakai pada tubuh program sudah terdefenisi atau belum)

Ø Memeriksa tipe disini dilakukan pemeriksaan misal dalam penjumlahan

A+ B = C disini diperiksa apakah A,B dan C bertipe number atau tidak.

Setelah pengecakan dilakukan dan proses analisa semantik akan beraksi maka dibutuhkan tabel simbol. Tabel simbol digunakan untuk pembuatan dan implementasi dari analisa semantik Tabel simbol berfungsi untuk :

v Menyimpan inforamasi tentang :

· Nama variabel dan tipe datanya

· Informasi detail untuk record dan array

· Nama prosedur dan fungsi yang ada

· Jumlah, nama, tipe data dan parameter fungsi/prosedur

· Nama label

· Konstanta dan String

v Membantu memeriksa kebenaran semantic dari source code

v Membantu mempermudah dalam pembuatan intermediate code dan code

generation.

 

Analisa Leksikal

By TheclubLado

1. ANALISA LEKSIKAL (kelompok I Black Worm)

Analisis Leksikal/Analisis Linier/Pembacaan Sekilas (Scanner)

Analisis Leksikal merupakan antarmuka antara kode program sumber dan analisis sintaktik (parser). Scanner melakukan pemeriksaan karakter per karakter pada teks masukan, memecah sumber program menjadi bagian-bagian disebut Token.

Analisis Leksikal mengerjakan pengelompokkan urutan-urutan karakter ke dalam komponen pokok: identifier, delimeter, simbol-simbol operator, angka, keyword, noise word, blank, komentar, dan seterusnya menghasilkan suatu Token Leksikal yang akan digunakan pada Analisis Sintaktik.

Dua aspek penting pembuatan Analisis Leksikal adalah:

- Menentukan token-token bahasa.

- Mengenali token-token bahasa dari program sumber.

Analisis Leksikal harus mengirim token ke parser. Untuk mengirim token, scanner harus mengisolasi barisan karakter pada teks sumber yang merupakan 1 token valid. Scanner juga menyingkirkan informasi seperti komentar, blank, batas-batas baris dan lain-lain yang tidak penting (tidak mempunyai arti) bagi parsing dan Code Generator.

Tugas-tugas Analisis leksikal

1. Konversi Program Sumber Menjadi Barisan Token

Mengubah program sumber yang dipandang sebagai barisan byte/karakter menjadi token

2. Menangani Kerumitan Sistem Masukkan/Keluaran

Tahap Pelaksanaan Analisis Leksikal

v Pada single one pass

Terjadi interaksi antara scanner dan parser. Scanner dipanggil saat parser memerlukan token berikutnya. Pendekatan ini lebih baik karena bentuk internal program sumber yang lengkap tidak perlu dibangun dan disimpan di memori sebelum parsing dimulai

v Pada separate pass

Scanner memproses secara terpisah, dilakukan sebelum parsing. Hasil scanner disimpan dalam file. Dari file tersebut, parsing melakukan kegiatannya.

Keunggulan cara ini adalah ukurannya kecil dan tetap. Parser sangat lebih efisien bekerja dengan nilai integer yang mempresentasikan simbol daripada string nyata dengan panjang variabel.

Implementasi Analisis Leksikal

1. Pengenalan Token

- Scanner harus dapat mengenali token

- Terlebih dahulu dideskripsikan token-token yang harus dikenali

2. Pendeskripsian Token

- Menggunakan reguler grammar. Menspesifikasikan aturan-aturan ken-token

dengan kelemahan reguler grammar menspesifikasikan token berbentuk

pembangkit, sedang scanner perlu bentuk pengenalan.

-Menggunakan ekspresi grammar. Menspesifikasikan token-token dengan

ekspresi reguler.

- Model matematis yang dapat memodelkan pengenalan adalah finite-state

acceptor (FSA) atau finite automata.

3. Implementasi Analisis Leksikal sebagai Finite Automata

Pada pemodelan analisis leksikal sebagai pengenal yang menerapkan finite automata, analisis leksikal tidak cuma hanya melakukan penarikan YA atau TIDAK. Dengan demikian selain pengenal, maka analisis leksikal juga melakukan aksi-aksi tambahan yang diasosiasikan dengan string yangsedang diolah.

4. Penanganan Kesalahan di Analisis Leksikal

Hanya sedikit kesalahan yang diidentifikasi di analisis leksikal secara mandiri karena analisis leksikal benar-benar merupakan pandangan sangat lokal terhadap program sumber.

Bila ditemui situasi dimana analisis leksikal tidak mampu melanjutkan proses karena tidak ada pola token yang cocok, maka terdapat beragam alternatif pemulihan. yaitu:

- "Panic mode" dengan menghapus karakter-karakter berikutnya sampai analisis leksikal menemukan token yang terdefinisi bagus

- Menyisipkan karakter yang hilang

- Mengganti karakter yang salah dengan karakter yang benar

- Mentransposisikan 2 karakter yang bersebelahan.

Input Buffering

Perancangan analisis leksikal seharusnya dapat membuat buffering masukkan yang membantu mempercepat proses pembacaan dari file serta mempunyai fleksibelitas yang tinggi agar analisis leksikal tidak bergantung platform sehingga mempunyai portabilitas yang tinggi.

 

LADO silambat loading

By TheclubLado

Kesan di kelompok Lado

Kami meupakan The Club LADO’ (Lhambat Loading), yah bisa dibilang kami bagai computer dengan kapasitas Pentium 2, namun meski gitu kami juga yakin kalau kami juga punya sesuatu yang dapat dibanggakan. Dalam artian diluar pengetahuan orang lain.

Ini merupakan suatu ajang belajar bersama dengan menampilkan hasil presentasi dari tugas-tugas yang kami kumpulkan., LADO’sendiri beranggotakan sebagai berikut:

  1. Sahar
  2. Takdir
  3. Naja
  4. Diana
  5. Ajai

Saat ini kami hanya posting materi teknik kompilasi yakni analisa leksikal, analisa semantik, penanganan kesalahan dan optimasi yah mudah-mudahan bermanfaat gitu.

Dalam kelompok Lado’ ini kami mendapat kesan yang sangat membuat kami terpojokkan, tugas-tugas kuliah yang amat sangat banyak membuat kami terlambat menyusun materi, disaat penyusunan materi ternyata ada saran dari dosen, yakni merangkum materi. Dan kami malah tertarik dengan saran itu. Dengan kesempatan 6 hari kami akan menyusun materi tetapi apa boleh dikata teman kami terkena musibah, dan kami hanya dapat kesempatan menyusun sehari sebelum hari H-Nya. Itupun dengan waktu 2 jam karena kami hanya meminjam print yang harus dikembalikan sore harinya. Dan disaat kami menyampaikan materi, saran dan kritik bermunculan baik dari teman-teman maupun dari dosen. Wah muka ini terasa amat sangat panas dan malu karena loading kami yang lambat dan tak mampu menguasai forum. Boooring beberapa kali terdengar dalam ruangan. Namun kami berpikir bahwa materi teknik kompilasi ini memang membuat kita ngatuk. Dosen yang pengalamannya sangat jauh lebih tinggi dari kami, juga terbukti tidak mampu membuat semua teman menyukai materi ini apa laaaagi kamiiii yang jelas tak punya pengalaman seperti bapak dosen…… sorry Bro kami tak mampu menguasai forum selaknya kalian semua baik dari kelompok Black Worm, ERROR, ASCII 06 dan Refresh. By Lado’ si lado betul