• Tidak ada hasil yang ditemukan

Pengertian Kompilator Dan Interpreter

N/A
N/A
Protected

Academic year: 2018

Membagikan "Pengertian Kompilator Dan Interpreter"

Copied!
10
0
0

Teks penuh

(1)

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.

(2)

KONSEP DASAR BELAJAR

Proses Belajar

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 language source program). Bahasa Sumber dapat berupa bahasa

?

Pengetahuan

Proses Berpikir

Proses / Kegiatan Mencari Jawab

(3)

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

(4)

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).

Compiler

(5)

¾ 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 :

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

Analisis Sintesis

Program

(6)

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

(7)

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)

(8)

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).

(9)

(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

(10)

Pertanyaan Pendalaman Materi

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

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

3. Jelaskan tahapan-tahapan yang diperlukan dalam proses kompilasi. Jelaskan pula hasil keluaran dari masing-masing tahapan tersebut.

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

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

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

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

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

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

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

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

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

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

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

Gambar

Gambar 1.4. Komponen utama dan alur proses sebuah kompilator
Gambar 1.5. Pohon Sintaks
Gambar 1.6. Pohon sintaks untuk persamaan dengan bilangan real

Referensi

Dokumen terkait

dimana fungsi utama dari enzim-enzim yang dihasilkan oleh organel tersebut.. berhubungan dengan metabolisme (pembentukan serta penguraian)

Tiga presfektif diatas menunjukkan bahwa kapasitas itu berhubungan dengan output maksimal yang dihasilkan oleh perusahaan, dalam mencapai output maksimal tersebut perusahaan

Komunikasi visual adalah berkomunikasi menggunakan bahasa visual, dimana unsur dasar bahasa visual (yang menjadi kekuatan utama dalam penyampaian pesan) adalah segala sesuatu yang

SISTEM : adalah suatu jaringan kerja dari prosedur-prosedur yang saling berhubungan, berkumpul bersama – sama untuk melakukan suatu kegiatan atau untuk menyelesaikan suatu

Adapun hasil analisis deskriptif yang berhubungan dengan skor Ketepatan service melayang sebelum pelaksanaan eksperimen dapat dilihat pada tabel 4.1, dan

Persamaan yang telah dihasilkan oleh Bernoulli tersebut juga dapat disebut sebagai Hukum Bernoulli, yakni suatu hukum yang dapat digunakan untuk menjelaskan gejala yang

Bila sebuah kelas mengandung suatu inner kelas, maka pada saat kompilasi akan dihasilkan file *.class untuk keduanya (kelas utama dan kelas inner nya)..  File *.class akan

Keluarga merupakan lingkungan pendidikan pendidikan yang pertama dan utama. Disebut sebagai lingkungan atau lembaga pendidikan pertama karena sebelum manusia mengenal