Pengertian Kompilator Dan Interpreter

1. PENDAHULUAN Tujuan Instruksional Umum

  Agar mahasiswa dapat memahami konsep dasar teknik kompilasi, meliputi fungsi, komponen, tahapan proses dan mekanisme kerja serta cara perancangan suatu compiler sederhana.

  Daftar Pustaka

  1. Pat Terry, “Compilers and Compiler Generator, an introduction with C++”, Rhodes University, Grahamstown, 1996.

  2. Dick Grune and Ceriel Jacobs, “Parsing Techniques, a Practical Guide”, Ellis Horwood Limited, Chichester, England, 1998.

  3. Aho, Sethi & Ullman, "Compilers Principles, Technique and Tools", Addison Wesley, 1993.

  4. John C. Martin, “Introduction to Languages and The Theory of Computation”, McGraw-Hill Book Co, 1997.

  5. Trembley S., "Compiler Writing", McGraw Hill, New York, 1994.

  6. John C. Martin, “Introduction to Languages and The Theory of Computation”, McGraw-Hill Book Co, 1997.

  7. Slamet, Sumantri dkk., "Teknik Kompilasi", PT. Elex Media Komputindo, Jakarta, 1993.

  8. Firrar Utdirartatmo, “Teknik Kompilasi”, Graha Ilmu, 2005.

  9. Sukamdi, "Merekayasa Interpreter", PT. Elex Media Komputindo, Jakarta, 1995.

  10. D. Suryadi, HS., “Pengantar Automata Bahasa Formal dan Kompilasi”, Penerbit Gunadarma, Jakarta, 1995.

  11. Dean Kelly, “Otomata dan Bahasa-bahasa Formal”, Prenhallindo, 1999.

  12. Firrar Utdirartatmo, “Teori Bahasa dan Otomata”, J & J Learning, 2001.

  13. Bambang Hariyanto, “Teori Bahasa, Otomata, dan Komputasi serta Terapannya”, Penerbit Informatika, 2004.

  14. Eko Sediyono, “Teknik Kompilasi Teori dan Praktik”, Penerbit Andi, 2005.

KONSEP DASAR BELAJAR

  Proses Belajar

  Proses Proses / Kegiatan Berpikir Mencari Jawab

  Pengetahuan Ilmu

  ? Beberapa pertanyaan:

  1. Teknik Kompilasi itu apa?

  2. Apa manfaat belajar Teknik Kompilasi? 3. ?????????

  Pengertian Kompilator Dan Interpreter

  Beberapa feature (ciri-ciri) compiler dan Interpreter: ¾ Kompilator (compiler) dan interpreter merupakan satu keluarga perangkat lunak yang termasuk dalam kategori translator atau program penerjemah. ¾ Interpreter didefinisikan sebagai sebuah program yang digunakan untuk menerjemahkan, mengeksekusi, dan memberikan hasil dari pengerjaan/eksekusi instruksi-instruksi masukannya. ¾ Kompilator (compiler) didefinisikan sebagai sebuah program yang membaca suatu program yang ditulis dalam suatu bahasa sumber

  (source language) dan menerjemahkannya ke dalam suatu bahasa sasaran (target language).

  ƒ Dalam hal ini, sebuah kompilator akan menghasilkan program atau kode sasaran yang biasanya berupa file eksekusi (file.EXE). ¾ Interpreter maupun Compiler, keduanya menerima masukan berupa program komputer dalam suatu bahasa pemrograman tingkat tinggi. ¾ Kompilator selalu mengandung dua komponen bahasa yaitu:

  ƒ bahasa yang dibaca oleh kompilator, disebut bahasa sumber (source source program). Bahasa Sumber dapat berupa bahasa

  language

  FORTRAN, PASCAL, C dan juga bahasa-bahasa lainnya yang sifat dan pemakaiannya agak spesifik atau khusus, seperti bahasa untuk program DBASE, SPSS dll. ƒ bahasa hasil terjemahan oleh kompilator yang disebut sebagai bahasa sasaran (target language target program). Bahasa

  Sasaran dapat berupa bahasa sumber lain seperti C, FORTRAN dan lain sebagainya atau Bahasa Mesin (Machine Language). ¾ Ada dua perbedaan yang mendasar antara interpreter dan kompilator, perbedaan diantara keduanya terletak pada proses dan hasil kerja masing-masing. ¾ Perbedaan proses antara kompilator dan interpreter ditunjukkan pada Gambar 1.1 dan Gambar 1.2.

  Kesalahan-kesalahan yang ditemukan selama proses kompilasi dilaporkan oleh bagian penanganan kesalahan (error handler) dalam bentuk pesan- pesan kesalahan (error messages). Secara garis besar proses kompilasi dari suatu kompilator dapat digambarkan sebagai berikut:

  Program sumber Kompilator

  Program sasaran Komputer pelaksana

  Hasil Data

  Proses Kompilasi Proses Eksekusi

Gambar 1.1. Proses Kompilasi dan Eksekusi

  Error messages

  Program sumber

  Interpreter Hasil

  Data

Gambar 1.2. Proses Interpretasi Source Target

  Program Program

  

Compiler

  (Program dengan (Program dengan bahasa sumber) bahasa sasaran)

  

Error messages

Gambar 1.3. Proses kompilasi sebuah kompilator

  Tahapan Kompilasi

Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke

  dalam dua tahapan utama yaitu: ¾ tahapan analisis, dan ¾ tahapan sintesis. o Pada tahapan analisis, program yang ditulis dalam bahasa sumber dipecah-pecah dan dibagi ke dalam beberapa bagian yang kemudian akan direpresentasikan ke dalam suatu "bentuk representasi antara" (intermediate representation) dari program sumber. o Pada tahapan sintesis, dilakukan pembangunan program sasaran yang diinginkan dari bentuk representasi antara

  Operasi-operasi yang dilakukan oleh program sumber ditentukan dan dicatat dalam suatu struktur pohon (tree) yang disebut dengan nama pohon sintaks (sintax tree). Dalam hal ini setiap nodal pada pohon sintaks tersebut menyatakan suatu operasi, sedangkan anak dari nodal (titik) tersebut memberikan argumen yang diperlukan Sedangkan pada tahapan sintesis, program sasaran dibentuk berdasarkan "representasi antara" yang dihasilkan pada tahapan analisis.

  Secara lebih rinci tahapan dalam proses kompilasi dapat diuraikan sebagai berikut: ¾ Analisis : - analisis leksikal (lexical analysis)

  • analisis sintaktik (syntax analysis)
  • analisis semantic (semantic analysis)

  (Dalam tahapan ini program sumber dibagi dan dipecah- pecah menjadi deretan token, dikelompokkan berdasarkan aturan sintaks, dan diperiksa berdasarkan "arti", dan selanjutnya direpresentasikan dalam bentuk representasi

  antara atau program antara).

  ¾ Sintesis : - pembentukan kode tengah (intermediate code generator)

  • optimasi kode (code optimization)
  • pembentukan kode akhir (final code generator) (Dalam tahapan ini program sasaran dibentuk berdasarkan representasi antara yang dihasilkan pada tahapan analisis, dan dilakukan optimalisasi kode dalam program sasaran.)

  Sebelum Bahasa sasaran dapat dihasilkan, dalam melakukan proses kompilasi ini tiap bagian utama kompilator akan berhubungan dan berkomunikasi dengan suatu berkas tabel yang disebut tabel simbol (symbol table) yaitu suatu tabel yang berisi semua simbol yang digunakan dalam bahasa sumber.

  Komponen-komponen utama dan alur proses dalam tahapan kompilasi dapat digambarkan pada Gambar 1.4 sebagai berikut :

  Program Penanganan kesalahan sumber

  (Error handler) Sintesis Analisis Penganalisis

  Pengoptimal Pembangkit kode Pembangkit Leksikal kode akhir kode antara (Scanner)

  (Intermediate (Code (Final code optimizer) generator) code generator)

  Penganalisis Sintaks (Parser) Penganalisis

  Pengelola tabel Program Semantik simbol sasaran

Gambar 1.4. Komponen utama dan alur proses sebuah kompilator

  Berikut ini hal-hal yang dilakukan oleh setiap fase pada proses kompilasi terhadap program sumber.

  Sebagai contoh, pernyataan pemberian nilai (assignment statement) berikut;

  position := initial + rate * 60

  Secara singkat proses kompilasi dapat dijelaskan sbb.:

1. Penganalisa leksikal (Lexical Analysis) :

  Tahap lexical analysis adalah tahap pembacaan program sumber, karakter demi karakter. Sederetan (satu atau lebih) karakter dikelompokkan menjadi satu kesatuan mengacu kepada pola kesatuan kelompok karakter (token) yang ditentukan dalam bahasa sumber.

  Kelompok karakter yang membentuk sebuah token dinamakan lexeme untuk token tersebut. Setiap token yang dihasilkan disimpan di dalam tabel simbol. Sederetan karakter yang tidak mengikuti pola token akan dilaporkan sebagai token tak dikenal (unidentified token). Contoh : Misalnya pola token untuk identifier I adalah :

  I = huruf(huruf|angka)* Jadi: Lexeme ab2c dikenali sebagai token sementara lexeme 2abc atau abC tidak dikenal.

  Pengelompokkan pernyataan tersebut menjadi token-token sebagai berikut :

  1. Token identifier position

  2. Token simbol assignment :=

  3. Token identifier initial

  4. Token tanda plus +

  5. Token identifier rate

  6. Token tanda perkalian *

  7. Token konstanta angka 60 Ketika identifier pada program sumber ditemukan lexical analyzer, identifier dimasukkan ke tabel simbol. position := initial + rate * 60 diubah menjadi id1 := id2 + id3 * 60

  2. Penganalisa sintaks (Sintax Analysis) : Tahap sintax analysis adalah tahap pemeriksaan kesesuaian pola

  deretan token dengan aturan sintaks yang ditentukan dalam bahasa sumber.

  Sederetan token yang tidak mengikuti aturan sintaks akan dilaporkan sebagai kesalahan sintaks (sintax error). Secara logika deretan token yang bersesuaian dengan sintaks tertentu akan dinyatakan sebagai pohon parsing (parse tree). Parsing atau bentuk pohon sintaks dari pernyataan tersebut di atas adalah:

Gambar 1.5. Pohon Sintaks

  3. Penganalisa semantik (Semantic Analysis) Tahap semantic analysis adalah tahap pemeriksaan kebenaran arti program sumber, mengumpulkan informasi tipe bagi tahap berikutnya.

  Tahap ini menggunakan pohon sintaks dari tahap syntax analysis untuk identifikasi operator dan operand suatu ekspresi dan kalimat. Komponen penting analisis semantik adalah pemeriksaan tipe, memeriksa operator yang harus mempunyai operand yang diijinkan oleh spesifikasi bahasa sumber. Pemeriksaan token dan ekspresi didasarkan pada batasan-batasan yang ditetapkan. Batasan-batasan tersebut misalnya :

  a. panjang maksimum token identifier adalah 8 karakter,

  b. panjang maksimum ekspresi tunggal adalah 80 karakter,

  c. nilai bilangan bulat adalah -32768 s/d 32767,

  d. operasi aritmatika harus melibatkan operan-operan yang bertipe sama. Karena misal adanya pernyataan deklarasi di awal : var position, initial, rate : real; Maka konstanta 60 dikonversi menjadi real dengan fungsi inttoreal(60) menjadi konstanta bilangan real

Gambar 1.6. Pohon sintaks untuk persamaan dengan bilangan real

4. Pembangkit kode antara (Intermediate Code Generator) :

  Tahap intermediate code generator adalah tahap representasi perantara antara bentuk bahasa tingkat tinggi dengan bahasa mesin. Pada tahap ini dibangkitkan kode antara (intermediate code) berdasarkan pohon parsing (parse tree). Pohon parsing selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah berdasarkan sintak (syntax-directed translator). Hasil penerjemahan ini biasanya merupakan perintah tiga alamat

  (three-address code) yang merupakan representasi program untuk suatu

  mesin abstrak. Perintah tiga alamat bisa berbentuk quadruples (op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresi dengan satu

  argumen dinyatakan dengan menetapkan arg2 dengan - (strip, dash). Karena pada level berikutnya masih akan dilakukan optimasi, maka perlu dibuat representasi yang memudahkan optimasi, yang bukan merupakan bahasa mesin. temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3

  5. Pengoptimal kode (Code Optimization) Tahap code optimization adalah proses identifikasi dan membuang operasi-operasi yang tidak perlu dari intermediate code generation untuk penyederhanaan sehingga nantinya kode mesin hasil menjadi lebih cepat. Code Optimization juga dimaksudkan untuk penghematan

  space dan waktu komputasi.

  Kode-kode tersebut dioptimasi menjadi : Temp1 := id3 * 60.0 Id1 := id1 + temp1

  6. Pembangkit kode (Code Generator) : Tahap akhir kompilator adalah pembangkitan kode target/objek dan biasanya kode mesin atau assembly yang dapat direlokasi.

  Pembangkitan kode sangat bergantung pada mesin yang dipakai, misal : MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1

  Pertanyaan Pendalaman Materi

  9. Apa yang dimaksudkan dengan Token, Pola dan Lexeme. Jelaskan dengan memberikan contoh.

  14. Sebutkan tanggapan apa saja yang terjadi pada bagian penanganan kesalahan (error handler) ketika menemukan kesalahan (error) selama proses kompilasi.

  Sebutkan tanggapan-tanggapan yang terjadi bila proses kompilasi mendapati kesalahan.

  13. Salah satu tugas "error handler" adalah memberikan tanggapan (melakukan tindakan) bila proses kompilasi mendapati kesalahan.

  12. Sebutkan tugas-tugas dari bagian penanganan kesalahan (error handler) dalam satu proses kompilasi.

  11. Sebutkan beberapa bentuk kode antara (intermediate code) dalam proses kompilasi.

  Berikan contoh.

  10. Sebutkan apa yang dimaksud dengan notasi infix maupun postfix.

  8. Sebutkan fungsi/kegunaan utama dari penganalisis leksikal, dan jelaskan interaksinya dengan bagian lain dalam kompilator.

  1. Jelaskan apa yang dimaksud dengan proses kompilasi. Berikan contoh peristiwa sehari-hari yang memiliki mekanisme yang hampir sama dengan mekanisme kompilasi.

  7. Sebutkan informasi-informasi apa saja yang perlu disimpan dalam tabel simbol.

  6. Jelaskan prinsip-prinsip utama dalam optimasi kode (code optimation).

  5. Sebutkan beberapa bentuk kode antara (intermediate code) dalam proses kompilasi.

  4. Jelaskan fungsi/kegunaan dan hasil keluaran dari masing-masing tahapan tersebut.

  Jelaskan pula hasil keluaran dari masing-masing tahapan tersebut.

  3. Jelaskan tahapan-tahapan yang diperlukan dalam proses kompilasi.

  2. Jelaskan apa beda kompilator dan interpreter. Berikan contoh masing- masing.

  15. Jelaskan fungsi / tugas bagian pengelolaan tabel simbol.

Dokumen yang terkait

BAB IV PEMAPARAN DATA A. Pakaian Perspektif Ekonomi Syariah 1. Pengertian Pakaian - Wakaf pakaian perspektif ekonomi syariah - Digital Library IAIN Palangka Raya

0 0 31

BAB II TELAAH PUSTAKA A. Penelitian Terdahulu - Hukum Merokok Dan Jual Beli Rokok Perspektif Ulama Kota Palangka Raya - Digital Library IAIN Palangka Raya

0 0 35

B. Pendekatan Penelitian - Hukum Merokok Dan Jual Beli Rokok Perspektif Ulama Kota Palangka Raya - Digital Library IAIN Palangka Raya

0 0 7

Hukum Merokok Dan Jual Beli Rokok Perspektif Ulama Kota Palangka Raya - Digital Library IAIN Palangka Raya

0 0 51

1. Pengertian Manajemen - Manajemen pembiayaan pendidikan yang bersumber dari masyarakat/orang tua (studi pada MTs Darul Ulum Palangka Raya) - Digital Library IAIN Palangka Raya

0 0 23

Kebijakan Kepemimpinan Kepala Sekolah Terhadap Peningkatan Kompetensi Pedagogik Dan Kompetensi Kepribadian Guru Pada Sdn 6 Bukit Tunggal Palangka Raya - Digital Library IAIN Palangka Raya

0 0 159

BAB II TINJAUAN PUSTAKA A. Deskripsi Konseptual Fokus dan Sub Fokus Penelitian 1. Pendidikan Inklusif a. Pengertian Pendidikan Inkusif - Manajemen layanan peserta didik inklusif di SMAN 4 Palangka Raya - Digital Library IAIN Palangka Raya

0 0 31

BAB II TINJAUAN PUSTAKA A. Deskripsi Konseptual Fokus dan Subfokus Penelitian 1. Konsep Bimbingan a. Pengertian Bimbingan - Manajemen kolaboratif guru bidang studi dan guru bimbingan konseling dalam rangka meningkatkan mutu pendidikan siswa pada SMA Muham

0 2 29

BAB II KETENTUAN-KETENTUAN PERKAWINAN DAN BEBERAPA TEORI PENETAPAN HUKUM ISLAM A. Beberapa Aturan dalam Hukum Perkawinan Islam 1. Akad Nikah a. Pengertian Akad Nikah - Pemikiran Hukum Ulama Banjar terhadap Perkawinan Islam di Kalimantan Selatan - Digital

0 0 74

Diajukan Untuk Melengkapi Dan Memenuhi Persyaratan Memperoleh Gelar Sarjana Ekonomi Syariah

0 1 118