SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
TUGAS MANDIRI
TEKNIK KOMPILASI
Soal :
Silahkan anda menganalisa Model Kompilator VB.Net dan Model Kompilator di bawah ini
Bagan Pokok Proses Kompilasi
Presentasi Ernastuti & Sulistyo (Universitas Gunadarma)
Termasuk :
1. Penanganan Kesalahan
2. Error recovery
3. Error Repair
Definisi Compiler
1. Kompilator (Inggris: compiler) adalah sebuah program komputer yang berguna untuk
menerjemahkan program komputer yang ditulis dalam bahasa pemrograman tertentu menjadi
program yang ditulis dalam bahasa pemrograman lain. 1
2. Compiler adalah suatu program yang melakukan proses translasi dari HLL ke dalam bahasa
mesin di komputer. Disamping program translasi, compiler juga mempunyai beberapa fungsi
penting, seperti diagnostik, contohnya kemampuan pendeteksian error/kesalahan.
Pelannggaran spesifikasi HLL akan terdeteksi dan dilaporkan kepada programmer oleh
compiler agar segera diperbaiki hingga mempermudah pembentukan machine language
equivalent.2
3. “…interpret sequences of particular instructions, but not program texts. Therefore, the
program text must be translated into a suitable instruction sequence before it can be
processed by a computer. This translation can be automated, which implies that it can be
formulated as a program itself…” 3
Dari kedua definisi di atas dapat disimpulkan bahwa Compiler adalah sebuah perangkat lunak komputer
yang digunakan sebagai alat bantu dalam melakukan proses penterjemahan intruksi dan kode secara
otomatis ke dalam bahasa mesin (assembler) tertentu sebagai perantara dan juga memiliki fungsi sebagai
alat deteksi kesalahan dan memperbaiki hingga mempermudah pembentukan machine language
equivalent.
Gambar 1 – Proses Penterjemahan
1
http://id.wikipedia.org/wiki/Kompilator
2
Bahan Ajar, karmila.staff.gunadarma.ac.id/
3
Niklaus Wirth, Compiler Construction, ISBN 0-201-40353-6, Addison-Wesley, 1996
Dari penjelasan di atas terlihat bahwa tugas dari Compiler adalah :
 Melakukan translasi dari HLL program sebagai input (source program) ke dalam
equivalent machine language program.
 Menghasilkan pesan hasil diagnostik kepada programmer bila terjadi penyimpangan
spesifikasi HLL(source language).
Arsitektur kompilator modern biasanya bukan lagi merupakan program tunggal namun merupakan
rangkaian komunikasi antar program dengan tugas spesifik masing-masing.
1. Compilator itu sendiri, yang menerima kode sumber dan menghasilkan bahasa tingkat rendah
(assembly)
2. Assembler, yang menerima keluaran kompilator dan menghasilkan berkas objek dalam bahasa mesin
3. Linker, yang menerima berkas objek keluaran assembler untuk kemudian digabungkan dengan
pustaka-pustaka yang diperlukan dan menghasilkan program yang dapat dieksekusi (executable)
Proses Pokok Model Kompilator
Dalam ilmu komputer, kode sumber (Inggris: source code) atau kode program adalah suatu
rangkaian pernyataan atau deklarasi yang ditulis dalam bahasa pemrograman komputer yang
terbaca manusia. Kode sumber yang menyusun suatu program biasanya disimpan dalam satu
atau lebih berkas teks, dan dapat pula ditampilkan dalam bentuk cuplikan kode (code snippet)
yang dicetak pada buku atau media lainnya. Kode sumber sebelum dikonversikan menjadi
bentuk berkas yang dapat dieksekusi komputer harus melalui proses kompilasi terlebih dahulu.
Konversi ini bisa dilakukan oleh suatu kompilator, atau langsung dari bentuk terbaca manusia
dengan bantuan interpreter.4
Gambar 2 - Bagan Pokok Proses Kompilasi
Presentasi Ernastuti & Sulistyo (Universitas Gunadarma)
4
http://id.wikipedia.org/wiki/Kode_sumber
Tahap Analysis
Analisa Leksikal (Scanner) merupakan antarmuka antara kode program sumber dan analisa
sintaktik (Parser). Scanner melakukan pemeriksaan karakter per karakter pada teks masukan,
memecah sumber program menjadi bagian-bagian disebut Token.5
Dua aspek penting pembuatan Analisa Leksikal adalah :
 Menentukan token-token bahasa.
 Mengenali token-token bahasa dari program sumber.
Tugas – tugas analisa leksikal antara lain :
a. Melakukan pembacaan kode sumber dengan merunut karakter demi karakter.
b. Mengenali besaran leksik (identifier, keywords, dan konstanta).
c. Mentransformasi menjadi sebuah token dan menentukan jenis tokennya.
d. Mengirimkan token.
e. Membuang atau mengabaikan white-space dan komentar dalam program.
f. Menangani kesalahan.
g. Menangani tabel simbol.
Proses Analisa Sintaks (Parsing) dilakukan terhadap descriptor dari analisa leksikal untuk
menentukan struktur sintaks dari input statement. Proses tersebut dikenal dengan nama
“Parsing”. Output dari Parsing adalah representasi dari struktur sintaks suatu statement. Analisa
semantik memanfaatkan pohon sintaks yang dihasilkan pada proses parsing (analisa sintaks).
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 :
• Apakah variabel yang ada telah didefinisikan sebelumnya,
• Apakah variable-variabel tersebut tipenya sama,
• Apakah operan yang akan dioperasikan tersebut ada nilainya dan seterusnya.
Untuk dapat menjalankan fungsi tersebut dengan baik, semantic analyzer seringkali
menggunakan tabel simbol. Pemeriksaan bisa dilakukan pada tabel identifier, tabel display dan
tabel blok, misal pada field link. Pengecekan yang dilakukan oleh analisis semantik adalah :
1. Memeriksa keberlakuan nama – nama meliputi pemeriksaan :
 Duplikasi, pengecekan apakah sebuah nama terjadi pendefinisian lebih dari dua kali.
Pengecekan dilakukan pada bagian pengelola blok.
 Terdefinisi, pengecekan apakah sebuah nama yang dipakai pada tubuh program sudah
terdefinisi atau belum. Pengecekan dilakukan pada semua tempat kecuali blok.
2. Memeriksa tipe
Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement – statement yang ada.
Misal : Bila ada operasi antara dua operan, maka tipe operan pertama harus bisa dioperasikan
dengan operan kedua.
5
Iwan Binanto, 2005, Konsep Bahasa Pemrograman : Penerbit Andi dari Rizki Pramudiningtyas,
http://rizkistitek.blogspot.com/2012/03/tahap-analisa-fase-analysis.html
Kode Antara (Intermediate Code) merupakan hasil dari tahapan analisis, yang dibuat oleh
kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi. Kegunaan dari Kode
Antara/intermediate code :
 Untuk memperkecil usaha dalam membangun kompilator dari sejumlah bahasa ke sejumlah
mesin
 Proses optimasi lebih mudah (dibandingkan pada program sumber atau kode assembly dan
kode mesin).
 Bisa melihat program internal yang gampang dimengerti.
Tahap Sintesa
Tahapan akhir suatu tranlasi terfokus pada pembangunan program yang executable dari output
yang dihasilkan oleh semantic analyzer6
. Tahap ini melibatkan penghasil kode (code generation)
jika dibutuhkan dan melibatkan juga optimisasi pada program yang sudah dihasilkan. Jika
subprogram ditranslasikan secara terpisah atau jika pustaka subprogram digunakan maka tahapan
final linking dan loading dibutuhkan untuk menghasilkan suatu program lengkap yang siap
dieksekusi.
a. Pembentukan/Pembangkitan Kode
Dalam tahap ini bentuk antara dari bahasa sumber yang berupa suatu pohon sintaks
diterjemahkan ke dalam suatu bahasa assembli atau bahasa mesin. Tahap ini membangkitkan
kode antara (intermediate code) berdasarkan pohon parsing. Pohon parsing selanjutnya
diterjemahkan oleh suatu penerjemah, misalnya penerjemah berdasarkan sintaks (syntax-
directed translator). Hasil penerjemahan ini biasanya merupaka perintah tiga alamat (three-
address code) yang merupakan representasi program untuk suatu mesin abstrak. Bahasa
mesin yang dihasilkan adalah bahasa assembli yang merupakan suatu perintah 1 alamat, 1
akumulator. Perintah tiga alamat bisa berbentuk quadruples (op, arg1, arg2, result), triples
(op, arg1, arg2). Ekspresi dengan satu argumen dinyatakan dengan menetapkan arg2 dengan –
(strip, dash).
b. Optimalisasi Kode
Hasil pembentukan kode yang diperoleh kemudian dibuat lebih kompak lagi dengan
melakukan beberapa teknik optimasi supaya dapat diperoleh program yang lebih efisien.
Dalam hal ini dilakukan beberapa hal seperti pendeteksian suatu ekspresi yang sering terjadi,
sehingga pengulangan tidak perlu terjadi dan lain sebagainya. Pada tahap ini melakukan
optimasi (peghematan space dan waktu komputasi) jika mungkin terhadap kode antara.
Semantic analyzer biasanya menghasilkan suatu output program executable yang sudah
ditranslasi yang berbentuk intermediate code, yang kadangkala merupakan kode yang buruk
atau tidak efisien.
6
Bahan Ajar, octa_bl.staff.gunadarma.ac.id/
c. Penghasil Kode
Setelah program yang ditranslasi dan representasi internalnya dioptimalisasi maka harus
dibentuk sebagai statemen bahasa assembly, kode mesin, atau program objek yang lainnya
yang menjadi output dari translasi. Kode output ini mungkin dapat langsung dieksekusi, atau
membutuhkan langkah translasi berikutnya, yaitu Linking dan Loading.
d. Linking dan Loading
Tahapan akhir yang bersifat opsional adalah menggabungkan potongan-potongan kode yang
dihasilkan dari translasi terpisah suatu subprogram ke dalam suatu program final executable
yang utuh. Hal ini dapat terjadi karena potongan-potongan kode tersebut mempunyai loader
tables yang dihasilkan oleh translator. Loader tables inilah yang digunakan oleh linking loader
untuk menggabungkan potongan-potongan kode tersebut di memori sehingga menghasilkan
program final executable yang siap untuk dieksekusi.
Pada tahap Analys dan Sintesa seluruh sumber input dan output berada pada Table, dimana
fungsi Table itu sendiri adalah untuk menyimpan semua informasi yang berhubungan dengan
proses kompilasi.
Program Sasaran dapat berupa bahasa pemrograman lain atau bahasa mesin pada suatu
computer.
Kompilator dalam VB.Net
Informasi dalam berkas ditentukan oleh pembuatnya7
. Ada banyak beragam jenis informasi yang
dapat disimpan dalam berkas. Hal ini disebabkan oleh struktur tertentu yang dimiliki oleh berkas,
sesuai dengan jenisnya masing-masing. Contohnya :
• Text file; yaitu urutan karakter yang disusun ke dalam baris-baris
• Source file; yaitu urutan subroutine dan fungsi yang nantinya akan dideklarasikan
• Object file; merupakan urutan byte yang diatur ke dalam blok-blok yang dikenali oleh linker
dari system
• Executable file; adalah rangkaian code section yang dapat dibawa loader ke dalam memori
dan dieksekusi
Compiler dan Assemblers membuat file objek yang berisi kode biner dan data yang
dihasilkan untuk file sumber. Linker menggabungkan beberapa file menjadi satu objek, loader
mengambil objek file dan memasukannya ke dalam memori. (Dalam lingkungan pemrograman
terpadu, kompiler, perakit, dan linker dijalankan secara implisit ketika pengguna akan membuat
program.
Dalam pemrograman komputer, Runtime Library adalah Application Programming
Interface yang digunakan oleh compiler untuk memanggil beberapa pola dari sistem runtime.
Sistem runtime mengimplementasikan model pelaksanaan dan pola yang mendasar dari bahasa
pemrograman. Runtime Library dapat mengimplementasikan sebagian dari pola sistem runtime,
tetapi jika panggilan membaca kode baru tersedia yang dibalut dalam informasi pake dan
7
Bahan Ajar, saefudin.staff.jak-stik.ac.id/
mengirimkannya ke sistem runtime. Namun, terkadang Runtime Library dimaksudkan untuk
menyertakan kode dari sistem runtime itu sendiri, meskipun banyak kode yang tidak dapat
terhubung secara langsung melalui library.
Gambar 3 - Model Kompilator dalam VB.Net8
Linker adalah suatu program yang menterjemahkan program objek (bereksention OBJ) ke
bentuk program eksekusi (berekstension EXE atau COM). Sedangkan untuk membuat file object
ke bentuk file yang dapat dieksekusi (berekstension .COM atau .EXE) bisa anda gunakan file
TLINK.EXE.
Gambar 4 – Visual Basic Compiled and Run9
8
http://www.webopedia.com/FIG/COMPILE.gif
Pada Gambar 4 menunjukkan bagaimana sebuah program Visual Basic dikompilasi dan
dijalankan. Untuk memulai, Anda menggunakan Visual Studio untuk membuat sebuah proyek,
yang terdiri dari file sumber yang berisi pernyataan (statement). Sebuah proyek pemrograman
juga dalam Visual Basic dapat berisi jenis file lainnya, seperti suara, gambar atau teks file.
Setelah Anda memasukkan kode Visual Basic untuk sebuah proyek, Compiler Visual Basic
dalam Visual Studio akan membangun atau mengkompilasi kode sumber Visual Basic ke dalam
Microsoft Intermediate Language.
Intermediate Language disimpan pada disk dalam sebuah file yang disebut assembly.
Selain Intermediate Language, dalam assembly sudah termasuk referensi kelas yang dibutuhkan
oleh aplikasi. Assembly dapat dijalankan pada setiap PC yang telah memiliki Common
Language Runtime. Ketika assembly dijalankan, Common Language Runtime mengubah
Intermediate Language ke kode asli yang dapat dijalankan oleh sistem operasi Windows.
Standar Operasi
1. Programmer menggunakan Visual Studio untuk membuat proyek yang mencakup Visual
Basic file source. Dalam beberapa kasus, proyek juga akan berisi jenis file lainnya, seperti
gambar grafis atau file suara.
2. Compiler Visual Basic menerjemahkan Visual Basic source code proyek ke dalam Microsoft
Intermediate Language. Bahasa ini disimpan pada disk dalam sebuah assembly yang juga
berisi referensi kelas yang dibutuhkan. Assembly adalah file executable yang memiliki exe.
Atau ekstensi dll.
3. Assembly ini dijalankan oleh Common Language Runtime NET. Framework. The Common
Language Runtime mengelola semua aspek bagaimana perakitan dijalankan, termasuk
mengubah Intermediate Language ke kode asli yang dapat dijalankan oleh sistem operasi,
pengelolaan memori untuk assembly, dan keamanannya.
Error Handling
Error Handling atau yang biasa disebut dengan penanganan kesalahan, terdiri atas beberapa
mekanisme, yaitu :
Jenis Kesalahan Contoh Kesalahan Langkah Penyelesaian
Kesalahan leksikal Kesalahan dalam mengetik Mendeteksi kesalahan
Melaporkan kesalahan
Tindak lanjut perbaikan
Kesalahan Sintaks Kesalahan dalam menuliskan
symbol operasi aritmatika
Kesalahan Semantics Tipe data yang salah
Variable belum didefinisikan
9
http://centurion2.com/VBHomework/VB1/vb1.php
Reaksi Compiler Pada kesalahan
Ada beberapa reaksi compiler menangani kesalahan :
Reaksi-reaksi yang tidak dapat
diterima
 Compilator crash: Berhenti atau hang
 Looping : compilator tidak bisa berhenti
(infinite/onbounded loop)
 Menghasilkan Obyek program yang salah : berbahaya,
bisa diketahui/muncul setelah program dieksekusi
Reaksi yang benar, tapi kurang
dapat diterima dan kurang
bermanfaat
 Compilator menemukan kesalahan pertama,
melaporkannya, lalu berhenti (halt)
 Pemrogram membuang waktu untuk melakukan
pengulangan compilasi untuk setiap kali terdapat
sebuah error
Reaksi yang sudah dapat dilakukan  Compilator melaporkan Error dan melakukan Recovery
atau Repair
Reaksi yang belum dapat dilakukan  Compiler mengkoreksi kesalahan
 Menghasilkan obyek program sesuai yang diinginkan
pemrogram
 Compiler memiliki kemampuan untuk mengetahui
maksud dari pemrogram
 Belum diimplementasikan pada program (sekarang ini)
Error Recovery
Bertujuan mengembalikan parser ke kondisi stabil agar supaya dapat melanjutkan proses parsing
ke posisi selanjutnya.
Mekanisme Ad Hoc Recovery yang dilakukan tergantung dari si pembuat
compiler
Tidak terikat pada suatu aturan tertentu
Syntax directed Recovery Menyisipkan atau membuang symbol terminal yang
dianggap menyebabkan error
Secod Error Recovery Melokalisir kesalahan
Context Sensitive Recovery Biasanya berkaitan dengan semantic
Error Repair
Memperbaiki kesalahan dan membuat source program valid dengan memodifikasi.
Mekanisme Ad Hoc Tergantung si pembut compiler
Syntax Directed Repair Menyisipkan atau membuang symbol terminal yang
dianggap menyebabkan error
Context Sensitive Repair Biasanya berkaitan dengan semantic
Bila kesalahan identifier, maka compilator akan
memperbaiki kesalahan dengan membuat identifier baru.
Tm   teknik kompilasi juni 2013

Mais conteúdo relacionado

Mais procurados

Bahasa pemograman
Bahasa pemogramanBahasa pemograman
Bahasa pemograman
ankg44
 
Modul dasar pemrograman
Modul dasar pemrogramanModul dasar pemrograman
Modul dasar pemrograman
lidyanamaria
 
1. pendahuluan kompilasi
1. pendahuluan kompilasi1. pendahuluan kompilasi
1. pendahuluan kompilasi
yuster92
 
Bahan ajar-dasar-pemrograman
Bahan ajar-dasar-pemrogramanBahan ajar-dasar-pemrograman
Bahan ajar-dasar-pemrograman
Andri Yanto
 
Pertemuan 3 pemrograman dasar
Pertemuan 3 pemrograman dasarPertemuan 3 pemrograman dasar
Pertemuan 3 pemrograman dasar
Disma Ariyanti W
 

Mais procurados (18)

Bahasa pemograman
Bahasa pemogramanBahasa pemograman
Bahasa pemograman
 
Teknik kompilasi
Teknik kompilasiTeknik kompilasi
Teknik kompilasi
 
Teknik kompilasi
Teknik kompilasiTeknik kompilasi
Teknik kompilasi
 
Pengantar algoritma dan pemrograman
Pengantar algoritma dan pemrogramanPengantar algoritma dan pemrograman
Pengantar algoritma dan pemrograman
 
flowchart
flowchartflowchart
flowchart
 
Modul dasar pemrograman
Modul dasar pemrogramanModul dasar pemrograman
Modul dasar pemrograman
 
1. pendahuluan kompilasi
1. pendahuluan kompilasi1. pendahuluan kompilasi
1. pendahuluan kompilasi
 
Pertemuan_2
Pertemuan_2Pertemuan_2
Pertemuan_2
 
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compilerModul 2 teknik pemrograman mengenal bahasa c dan compiler
Modul 2 teknik pemrograman mengenal bahasa c dan compiler
 
Bab 1
Bab 1 Bab 1
Bab 1
 
Bahan ajar-dasar-pemrograman
Bahan ajar-dasar-pemrogramanBahan ajar-dasar-pemrograman
Bahan ajar-dasar-pemrograman
 
Pertemuan 3 pemrograman dasar
Pertemuan 3 pemrograman dasarPertemuan 3 pemrograman dasar
Pertemuan 3 pemrograman dasar
 
technik kompilasi
technik kompilasitechnik kompilasi
technik kompilasi
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
Bab i
Bab iBab i
Bab i
 
Laporan praktikum 1 pendahuluan
Laporan praktikum 1 pendahuluanLaporan praktikum 1 pendahuluan
Laporan praktikum 1 pendahuluan
 
Pemrograman dasar
Pemrograman dasarPemrograman dasar
Pemrograman dasar
 
Daskom 4
Daskom 4Daskom 4
Daskom 4
 

Semelhante a Tm teknik kompilasi juni 2013

Algoritma dan pemrograman
Algoritma dan pemrogramanAlgoritma dan pemrograman
Algoritma dan pemrograman
Mastur Cell
 
01 komponen dasar komputer (1)
01 komponen dasar komputer (1)01 komponen dasar komputer (1)
01 komponen dasar komputer (1)
adi yusuf
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
Fisma Ananda
 

Semelhante a Tm teknik kompilasi juni 2013 (20)

Teknik kompilasi
Teknik kompilasiTeknik kompilasi
Teknik kompilasi
 
Perkuliahan 01 Teknik kompilasi
Perkuliahan 01 Teknik kompilasiPerkuliahan 01 Teknik kompilasi
Perkuliahan 01 Teknik kompilasi
 
materi 1 & 2.pptx
materi 1 & 2.pptxmateri 1 & 2.pptx
materi 1 & 2.pptx
 
Algoritma dan pemrograman
Algoritma dan pemrogramanAlgoritma dan pemrograman
Algoritma dan pemrograman
 
Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer Unm tki1-kb3-ppt1-alur logika pemrograman komputer
Unm tki1-kb3-ppt1-alur logika pemrograman komputer
 
Sekilas tentang c
Sekilas tentang cSekilas tentang c
Sekilas tentang c
 
Tekom part 1
Tekom part 1Tekom part 1
Tekom part 1
 
01 komponen dasar komputer (1)
01 komponen dasar komputer (1)01 komponen dasar komputer (1)
01 komponen dasar komputer (1)
 
1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritma1.adp dasar-dasar algoritma
1.adp dasar-dasar algoritma
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
1 adp dasar-dasar pemrograman
1   adp dasar-dasar pemrograman1   adp dasar-dasar pemrograman
1 adp dasar-dasar pemrograman
 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
 
Bab II
Bab IIBab II
Bab II
 
Kegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchartKegiatan belajar 1 flowchart
Kegiatan belajar 1 flowchart
 
1 ADP Algoritma
1   ADP Algoritma1   ADP Algoritma
1 ADP Algoritma
 
Tahap pemrograman
Tahap pemrogramanTahap pemrograman
Tahap pemrograman
 
Tahap pemrograman
Tahap pemrogramanTahap pemrograman
Tahap pemrograman
 
Bahasa pemograman
Bahasa pemogramanBahasa pemograman
Bahasa pemograman
 
Tahap pemrograman
Tahap pemrogramanTahap pemrograman
Tahap pemrograman
 

Mais de Ratzman III

Tugas Wajib Tutorial I - EKSI4202 - Hukum Pajak
Tugas Wajib Tutorial I  -  EKSI4202 - Hukum PajakTugas Wajib Tutorial I  -  EKSI4202 - Hukum Pajak
Tugas Wajib Tutorial I - EKSI4202 - Hukum Pajak
Ratzman III
 
Bab 3 - Kalkulus Relasional
Bab 3 -  Kalkulus RelasionalBab 3 -  Kalkulus Relasional
Bab 3 - Kalkulus Relasional
Ratzman III
 
Bab 2 Aljabar Relasional
Bab 2   Aljabar RelasionalBab 2   Aljabar Relasional
Bab 2 Aljabar Relasional
Ratzman III
 
Bab 1 RDBMS Review
Bab 1   RDBMS ReviewBab 1   RDBMS Review
Bab 1 RDBMS Review
Ratzman III
 
Kisi kisi basis data uts
Kisi kisi basis data utsKisi kisi basis data uts
Kisi kisi basis data uts
Ratzman III
 
Kisi kisi basis data uts
Kisi kisi basis data utsKisi kisi basis data uts
Kisi kisi basis data uts
Ratzman III
 
Modul my sql tutorial part 6
Modul my sql tutorial part 6Modul my sql tutorial part 6
Modul my sql tutorial part 6
Ratzman III
 
Modul my sql tutorial part 5
Modul my sql tutorial part 5Modul my sql tutorial part 5
Modul my sql tutorial part 5
Ratzman III
 

Mais de Ratzman III (20)

Tugas Tutorial EKSI4202 Hukum Pajak
Tugas Tutorial EKSI4202 Hukum PajakTugas Tutorial EKSI4202 Hukum Pajak
Tugas Tutorial EKSI4202 Hukum Pajak
 
Tugas Wajib Tutorial I - EKSI4202 - Hukum Pajak
Tugas Wajib Tutorial I  -  EKSI4202 - Hukum PajakTugas Wajib Tutorial I  -  EKSI4202 - Hukum Pajak
Tugas Wajib Tutorial I - EKSI4202 - Hukum Pajak
 
Review Artikel Tinjauan Pustaka
Review Artikel Tinjauan PustakaReview Artikel Tinjauan Pustaka
Review Artikel Tinjauan Pustaka
 
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya Ilmiah
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya IlmiahMICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya Ilmiah
MICRO TEACHING IDIK4013-Memanfaatkan Pustaka dalam Penulisan Karya Ilmiah
 
Format laporan Tutor Universitas Terbuka 2014
Format laporan Tutor Universitas Terbuka 2014Format laporan Tutor Universitas Terbuka 2014
Format laporan Tutor Universitas Terbuka 2014
 
Arduino Ch3 : Tilt Sensing Servo Motor Controller
Arduino Ch3 : Tilt Sensing Servo Motor Controller Arduino Ch3 : Tilt Sensing Servo Motor Controller
Arduino Ch3 : Tilt Sensing Servo Motor Controller
 
Arduino - Ch 2: Sunrise-Sunset Light Switch
Arduino - Ch 2: Sunrise-Sunset Light SwitchArduino - Ch 2: Sunrise-Sunset Light Switch
Arduino - Ch 2: Sunrise-Sunset Light Switch
 
Arduino - CH 1: The Trick Switch
Arduino - CH 1: The Trick SwitchArduino - CH 1: The Trick Switch
Arduino - CH 1: The Trick Switch
 
Bab 3 - Kalkulus Relasional
Bab 3 -  Kalkulus RelasionalBab 3 -  Kalkulus Relasional
Bab 3 - Kalkulus Relasional
 
Bab 2 Aljabar Relasional
Bab 2   Aljabar RelasionalBab 2   Aljabar Relasional
Bab 2 Aljabar Relasional
 
Bab 1 RDBMS Review
Bab 1   RDBMS ReviewBab 1   RDBMS Review
Bab 1 RDBMS Review
 
Kisi kisi basis data uts
Kisi kisi basis data utsKisi kisi basis data uts
Kisi kisi basis data uts
 
Kisi kisi basis data uts
Kisi kisi basis data utsKisi kisi basis data uts
Kisi kisi basis data uts
 
Modul my sql tutorial part 6
Modul my sql tutorial part 6Modul my sql tutorial part 6
Modul my sql tutorial part 6
 
Nilai lab 01pt3
Nilai lab 01pt3Nilai lab 01pt3
Nilai lab 01pt3
 
Format sap
Format sapFormat sap
Format sap
 
Tugas i
Tugas iTugas i
Tugas i
 
Modul my sql tutorial part 5
Modul my sql tutorial part 5Modul my sql tutorial part 5
Modul my sql tutorial part 5
 
1088
10881088
1088
 
1152
11521152
1152
 

Tm teknik kompilasi juni 2013

  • 1. TUGAS MANDIRI TEKNIK KOMPILASI Soal : Silahkan anda menganalisa Model Kompilator VB.Net dan Model Kompilator di bawah ini Bagan Pokok Proses Kompilasi Presentasi Ernastuti & Sulistyo (Universitas Gunadarma) Termasuk : 1. Penanganan Kesalahan 2. Error recovery 3. Error Repair
  • 2. Definisi Compiler 1. Kompilator (Inggris: compiler) adalah sebuah program komputer yang berguna untuk menerjemahkan program komputer yang ditulis dalam bahasa pemrograman tertentu menjadi program yang ditulis dalam bahasa pemrograman lain. 1 2. Compiler adalah suatu program yang melakukan proses translasi dari HLL ke dalam bahasa mesin di komputer. Disamping program translasi, compiler juga mempunyai beberapa fungsi penting, seperti diagnostik, contohnya kemampuan pendeteksian error/kesalahan. Pelannggaran spesifikasi HLL akan terdeteksi dan dilaporkan kepada programmer oleh compiler agar segera diperbaiki hingga mempermudah pembentukan machine language equivalent.2 3. “…interpret sequences of particular instructions, but not program texts. Therefore, the program text must be translated into a suitable instruction sequence before it can be processed by a computer. This translation can be automated, which implies that it can be formulated as a program itself…” 3 Dari kedua definisi di atas dapat disimpulkan bahwa Compiler adalah sebuah perangkat lunak komputer yang digunakan sebagai alat bantu dalam melakukan proses penterjemahan intruksi dan kode secara otomatis ke dalam bahasa mesin (assembler) tertentu sebagai perantara dan juga memiliki fungsi sebagai alat deteksi kesalahan dan memperbaiki hingga mempermudah pembentukan machine language equivalent. Gambar 1 – Proses Penterjemahan 1 http://id.wikipedia.org/wiki/Kompilator 2 Bahan Ajar, karmila.staff.gunadarma.ac.id/ 3 Niklaus Wirth, Compiler Construction, ISBN 0-201-40353-6, Addison-Wesley, 1996
  • 3. Dari penjelasan di atas terlihat bahwa tugas dari Compiler adalah :  Melakukan translasi dari HLL program sebagai input (source program) ke dalam equivalent machine language program.  Menghasilkan pesan hasil diagnostik kepada programmer bila terjadi penyimpangan spesifikasi HLL(source language). Arsitektur kompilator modern biasanya bukan lagi merupakan program tunggal namun merupakan rangkaian komunikasi antar program dengan tugas spesifik masing-masing. 1. Compilator itu sendiri, yang menerima kode sumber dan menghasilkan bahasa tingkat rendah (assembly) 2. Assembler, yang menerima keluaran kompilator dan menghasilkan berkas objek dalam bahasa mesin 3. Linker, yang menerima berkas objek keluaran assembler untuk kemudian digabungkan dengan pustaka-pustaka yang diperlukan dan menghasilkan program yang dapat dieksekusi (executable) Proses Pokok Model Kompilator Dalam ilmu komputer, kode sumber (Inggris: source code) atau kode program adalah suatu rangkaian pernyataan atau deklarasi yang ditulis dalam bahasa pemrograman komputer yang terbaca manusia. Kode sumber yang menyusun suatu program biasanya disimpan dalam satu atau lebih berkas teks, dan dapat pula ditampilkan dalam bentuk cuplikan kode (code snippet) yang dicetak pada buku atau media lainnya. Kode sumber sebelum dikonversikan menjadi bentuk berkas yang dapat dieksekusi komputer harus melalui proses kompilasi terlebih dahulu. Konversi ini bisa dilakukan oleh suatu kompilator, atau langsung dari bentuk terbaca manusia dengan bantuan interpreter.4 Gambar 2 - Bagan Pokok Proses Kompilasi Presentasi Ernastuti & Sulistyo (Universitas Gunadarma) 4 http://id.wikipedia.org/wiki/Kode_sumber
  • 4. Tahap Analysis Analisa Leksikal (Scanner) merupakan antarmuka antara kode program sumber dan analisa sintaktik (Parser). Scanner melakukan pemeriksaan karakter per karakter pada teks masukan, memecah sumber program menjadi bagian-bagian disebut Token.5 Dua aspek penting pembuatan Analisa Leksikal adalah :  Menentukan token-token bahasa.  Mengenali token-token bahasa dari program sumber. Tugas – tugas analisa leksikal antara lain : a. Melakukan pembacaan kode sumber dengan merunut karakter demi karakter. b. Mengenali besaran leksik (identifier, keywords, dan konstanta). c. Mentransformasi menjadi sebuah token dan menentukan jenis tokennya. d. Mengirimkan token. e. Membuang atau mengabaikan white-space dan komentar dalam program. f. Menangani kesalahan. g. Menangani tabel simbol. Proses Analisa Sintaks (Parsing) dilakukan terhadap descriptor dari analisa leksikal untuk menentukan struktur sintaks dari input statement. Proses tersebut dikenal dengan nama “Parsing”. Output dari Parsing adalah representasi dari struktur sintaks suatu statement. Analisa semantik memanfaatkan pohon sintaks yang dihasilkan pada proses parsing (analisa sintaks). 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 : • Apakah variabel yang ada telah didefinisikan sebelumnya, • Apakah variable-variabel tersebut tipenya sama, • Apakah operan yang akan dioperasikan tersebut ada nilainya dan seterusnya. Untuk dapat menjalankan fungsi tersebut dengan baik, semantic analyzer seringkali menggunakan tabel simbol. Pemeriksaan bisa dilakukan pada tabel identifier, tabel display dan tabel blok, misal pada field link. Pengecekan yang dilakukan oleh analisis semantik adalah : 1. Memeriksa keberlakuan nama – nama meliputi pemeriksaan :  Duplikasi, pengecekan apakah sebuah nama terjadi pendefinisian lebih dari dua kali. Pengecekan dilakukan pada bagian pengelola blok.  Terdefinisi, pengecekan apakah sebuah nama yang dipakai pada tubuh program sudah terdefinisi atau belum. Pengecekan dilakukan pada semua tempat kecuali blok. 2. Memeriksa tipe Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement – statement yang ada. Misal : Bila ada operasi antara dua operan, maka tipe operan pertama harus bisa dioperasikan dengan operan kedua. 5 Iwan Binanto, 2005, Konsep Bahasa Pemrograman : Penerbit Andi dari Rizki Pramudiningtyas, http://rizkistitek.blogspot.com/2012/03/tahap-analisa-fase-analysis.html
  • 5. Kode Antara (Intermediate Code) merupakan hasil dari tahapan analisis, yang dibuat oleh kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi. Kegunaan dari Kode Antara/intermediate code :  Untuk memperkecil usaha dalam membangun kompilator dari sejumlah bahasa ke sejumlah mesin  Proses optimasi lebih mudah (dibandingkan pada program sumber atau kode assembly dan kode mesin).  Bisa melihat program internal yang gampang dimengerti. Tahap Sintesa Tahapan akhir suatu tranlasi terfokus pada pembangunan program yang executable dari output yang dihasilkan oleh semantic analyzer6 . Tahap ini melibatkan penghasil kode (code generation) jika dibutuhkan dan melibatkan juga optimisasi pada program yang sudah dihasilkan. Jika subprogram ditranslasikan secara terpisah atau jika pustaka subprogram digunakan maka tahapan final linking dan loading dibutuhkan untuk menghasilkan suatu program lengkap yang siap dieksekusi. a. Pembentukan/Pembangkitan Kode Dalam tahap ini bentuk antara dari bahasa sumber yang berupa suatu pohon sintaks diterjemahkan ke dalam suatu bahasa assembli atau bahasa mesin. Tahap ini membangkitkan kode antara (intermediate code) berdasarkan pohon parsing. Pohon parsing selanjutnya diterjemahkan oleh suatu penerjemah, misalnya penerjemah berdasarkan sintaks (syntax- directed translator). Hasil penerjemahan ini biasanya merupaka perintah tiga alamat (three- address code) yang merupakan representasi program untuk suatu mesin abstrak. Bahasa mesin yang dihasilkan adalah bahasa assembli yang merupakan suatu perintah 1 alamat, 1 akumulator. Perintah tiga alamat bisa berbentuk quadruples (op, arg1, arg2, result), triples (op, arg1, arg2). Ekspresi dengan satu argumen dinyatakan dengan menetapkan arg2 dengan – (strip, dash). b. Optimalisasi Kode Hasil pembentukan kode yang diperoleh kemudian dibuat lebih kompak lagi dengan melakukan beberapa teknik optimasi supaya dapat diperoleh program yang lebih efisien. Dalam hal ini dilakukan beberapa hal seperti pendeteksian suatu ekspresi yang sering terjadi, sehingga pengulangan tidak perlu terjadi dan lain sebagainya. Pada tahap ini melakukan optimasi (peghematan space dan waktu komputasi) jika mungkin terhadap kode antara. Semantic analyzer biasanya menghasilkan suatu output program executable yang sudah ditranslasi yang berbentuk intermediate code, yang kadangkala merupakan kode yang buruk atau tidak efisien. 6 Bahan Ajar, octa_bl.staff.gunadarma.ac.id/
  • 6. c. Penghasil Kode Setelah program yang ditranslasi dan representasi internalnya dioptimalisasi maka harus dibentuk sebagai statemen bahasa assembly, kode mesin, atau program objek yang lainnya yang menjadi output dari translasi. Kode output ini mungkin dapat langsung dieksekusi, atau membutuhkan langkah translasi berikutnya, yaitu Linking dan Loading. d. Linking dan Loading Tahapan akhir yang bersifat opsional adalah menggabungkan potongan-potongan kode yang dihasilkan dari translasi terpisah suatu subprogram ke dalam suatu program final executable yang utuh. Hal ini dapat terjadi karena potongan-potongan kode tersebut mempunyai loader tables yang dihasilkan oleh translator. Loader tables inilah yang digunakan oleh linking loader untuk menggabungkan potongan-potongan kode tersebut di memori sehingga menghasilkan program final executable yang siap untuk dieksekusi. Pada tahap Analys dan Sintesa seluruh sumber input dan output berada pada Table, dimana fungsi Table itu sendiri adalah untuk menyimpan semua informasi yang berhubungan dengan proses kompilasi. Program Sasaran dapat berupa bahasa pemrograman lain atau bahasa mesin pada suatu computer. Kompilator dalam VB.Net Informasi dalam berkas ditentukan oleh pembuatnya7 . Ada banyak beragam jenis informasi yang dapat disimpan dalam berkas. Hal ini disebabkan oleh struktur tertentu yang dimiliki oleh berkas, sesuai dengan jenisnya masing-masing. Contohnya : • Text file; yaitu urutan karakter yang disusun ke dalam baris-baris • Source file; yaitu urutan subroutine dan fungsi yang nantinya akan dideklarasikan • Object file; merupakan urutan byte yang diatur ke dalam blok-blok yang dikenali oleh linker dari system • Executable file; adalah rangkaian code section yang dapat dibawa loader ke dalam memori dan dieksekusi Compiler dan Assemblers membuat file objek yang berisi kode biner dan data yang dihasilkan untuk file sumber. Linker menggabungkan beberapa file menjadi satu objek, loader mengambil objek file dan memasukannya ke dalam memori. (Dalam lingkungan pemrograman terpadu, kompiler, perakit, dan linker dijalankan secara implisit ketika pengguna akan membuat program. Dalam pemrograman komputer, Runtime Library adalah Application Programming Interface yang digunakan oleh compiler untuk memanggil beberapa pola dari sistem runtime. Sistem runtime mengimplementasikan model pelaksanaan dan pola yang mendasar dari bahasa pemrograman. Runtime Library dapat mengimplementasikan sebagian dari pola sistem runtime, tetapi jika panggilan membaca kode baru tersedia yang dibalut dalam informasi pake dan 7 Bahan Ajar, saefudin.staff.jak-stik.ac.id/
  • 7. mengirimkannya ke sistem runtime. Namun, terkadang Runtime Library dimaksudkan untuk menyertakan kode dari sistem runtime itu sendiri, meskipun banyak kode yang tidak dapat terhubung secara langsung melalui library. Gambar 3 - Model Kompilator dalam VB.Net8 Linker adalah suatu program yang menterjemahkan program objek (bereksention OBJ) ke bentuk program eksekusi (berekstension EXE atau COM). Sedangkan untuk membuat file object ke bentuk file yang dapat dieksekusi (berekstension .COM atau .EXE) bisa anda gunakan file TLINK.EXE. Gambar 4 – Visual Basic Compiled and Run9 8 http://www.webopedia.com/FIG/COMPILE.gif
  • 8. Pada Gambar 4 menunjukkan bagaimana sebuah program Visual Basic dikompilasi dan dijalankan. Untuk memulai, Anda menggunakan Visual Studio untuk membuat sebuah proyek, yang terdiri dari file sumber yang berisi pernyataan (statement). Sebuah proyek pemrograman juga dalam Visual Basic dapat berisi jenis file lainnya, seperti suara, gambar atau teks file. Setelah Anda memasukkan kode Visual Basic untuk sebuah proyek, Compiler Visual Basic dalam Visual Studio akan membangun atau mengkompilasi kode sumber Visual Basic ke dalam Microsoft Intermediate Language. Intermediate Language disimpan pada disk dalam sebuah file yang disebut assembly. Selain Intermediate Language, dalam assembly sudah termasuk referensi kelas yang dibutuhkan oleh aplikasi. Assembly dapat dijalankan pada setiap PC yang telah memiliki Common Language Runtime. Ketika assembly dijalankan, Common Language Runtime mengubah Intermediate Language ke kode asli yang dapat dijalankan oleh sistem operasi Windows. Standar Operasi 1. Programmer menggunakan Visual Studio untuk membuat proyek yang mencakup Visual Basic file source. Dalam beberapa kasus, proyek juga akan berisi jenis file lainnya, seperti gambar grafis atau file suara. 2. Compiler Visual Basic menerjemahkan Visual Basic source code proyek ke dalam Microsoft Intermediate Language. Bahasa ini disimpan pada disk dalam sebuah assembly yang juga berisi referensi kelas yang dibutuhkan. Assembly adalah file executable yang memiliki exe. Atau ekstensi dll. 3. Assembly ini dijalankan oleh Common Language Runtime NET. Framework. The Common Language Runtime mengelola semua aspek bagaimana perakitan dijalankan, termasuk mengubah Intermediate Language ke kode asli yang dapat dijalankan oleh sistem operasi, pengelolaan memori untuk assembly, dan keamanannya. Error Handling Error Handling atau yang biasa disebut dengan penanganan kesalahan, terdiri atas beberapa mekanisme, yaitu : Jenis Kesalahan Contoh Kesalahan Langkah Penyelesaian Kesalahan leksikal Kesalahan dalam mengetik Mendeteksi kesalahan Melaporkan kesalahan Tindak lanjut perbaikan Kesalahan Sintaks Kesalahan dalam menuliskan symbol operasi aritmatika Kesalahan Semantics Tipe data yang salah Variable belum didefinisikan 9 http://centurion2.com/VBHomework/VB1/vb1.php
  • 9. Reaksi Compiler Pada kesalahan Ada beberapa reaksi compiler menangani kesalahan : Reaksi-reaksi yang tidak dapat diterima  Compilator crash: Berhenti atau hang  Looping : compilator tidak bisa berhenti (infinite/onbounded loop)  Menghasilkan Obyek program yang salah : berbahaya, bisa diketahui/muncul setelah program dieksekusi Reaksi yang benar, tapi kurang dapat diterima dan kurang bermanfaat  Compilator menemukan kesalahan pertama, melaporkannya, lalu berhenti (halt)  Pemrogram membuang waktu untuk melakukan pengulangan compilasi untuk setiap kali terdapat sebuah error Reaksi yang sudah dapat dilakukan  Compilator melaporkan Error dan melakukan Recovery atau Repair Reaksi yang belum dapat dilakukan  Compiler mengkoreksi kesalahan  Menghasilkan obyek program sesuai yang diinginkan pemrogram  Compiler memiliki kemampuan untuk mengetahui maksud dari pemrogram  Belum diimplementasikan pada program (sekarang ini) Error Recovery Bertujuan mengembalikan parser ke kondisi stabil agar supaya dapat melanjutkan proses parsing ke posisi selanjutnya. Mekanisme Ad Hoc Recovery yang dilakukan tergantung dari si pembuat compiler Tidak terikat pada suatu aturan tertentu Syntax directed Recovery Menyisipkan atau membuang symbol terminal yang dianggap menyebabkan error Secod Error Recovery Melokalisir kesalahan Context Sensitive Recovery Biasanya berkaitan dengan semantic Error Repair Memperbaiki kesalahan dan membuat source program valid dengan memodifikasi. Mekanisme Ad Hoc Tergantung si pembut compiler Syntax Directed Repair Menyisipkan atau membuang symbol terminal yang dianggap menyebabkan error Context Sensitive Repair Biasanya berkaitan dengan semantic Bila kesalahan identifier, maka compilator akan memperbaiki kesalahan dengan membuat identifier baru.