Mengapa harus belajar Teknik Kompilasi ?

TEKNIK KOMPILASI

  1. A.   Tujuan Mempelajari Teknik Kompilasi
–          Mengetahui penerapan konsep ilmu komputer pada prilaku komputer yaitu algoritma, arsitektur komputer, struktur data maupun penerapan teori bahasa dan automata
–          Compiler adalah merupakan konstruksi inti dari ilmu komputer.
  1. B.   Arti Kata Tenik Kompilasi
    1. Teknik adalah metode atau cara
    2. Kompilasi adalah proses menggabungkan serta menterjemahkan sesuatu (source program) menjadi bentuk lain.
    3. Compile is to translate a program written in a high-level programming language into machine language.
  1. C.   Translator : Compiler dan Interpreter
Translator adalah program dimana mengambil input sebuah program yang ditulis pada bahasa program (source language) ke bahasa lain ( the object on target language).
Jika source language adalah high level language, seperti cobol, pascal, fotran dan object language adalah low-level language atau mesin language. Maka translator seperti ini disebut COMPILER.
Translator : Compiler dan Interpreter
Ada beberapa Translator :
  1. Assambler
Source code adalah bahasa assembly, object code adalah bahasa mesin.
  1. Compiler
Source code adalah bahasa tingkat tinggi, object code adalah bahasa mesin atau bahasa assembly, source code dan data diproses berbeda.
  1. Interpreter
Interpreter tidak menghasilkan bentuk object code, tetapi hasil translasinya hanya dalam bentuk internal, dimana program induk harus ada berbeda dengan compiler.
  1. Kenapa Pelru Translator ?
–       Dengan bahasa mesin adalah bahasa bentuk bahasa terendah komputer, berhubungan langsung dengan bagian-bagian komputer seperti bits, register dan sangat primitive.
–       Jawaban diatas pertanyaan ini akan membingingkan nagi programer yang membuat program dengan bahasa mesin.
–       Bahasa mesin adalah tidak lebih dari urutan 0 dan 1.
–       Intruksi dalam bahasa mesin bisa saja dibentuk menjadi micro-code, semacam prosedur dalam bahasa mesin.
–       Bagaimana dengan orang tidak mengerti bahasa mesin.
  1. Bahasa Tingkat Tinggi (Pemrograman)
–       Bahasa yang lebih dikenal oleh manusia maksudnya adalah statement yang digunakan menggunakan bahasa yang dipakai oelh manusia.
–       Memberikan fasilitas yang lebih banyak, seperti struktur kontrol program yang tersetruktur, blak-blak serta prosedur dan fungsi-fungsi.
–       Program mudah untuk dikoreksi (debug).
–       Tidak tergantung pada salah satu mesin.
–       Kontrol struktur
  1. D.   Pembuatan Compiler
    1. Bahasa Mesin
–       Sangat sukar dan sangat sedikit kemungkinannya untuk membuat compiler dengan bahasa ini, karena manusia susah mempelajari bahasa mesin.
–       Sangat tergantung pada mesin.
–       Bahasa mesin kemungkinan digunakan pada saat pembuatan Assembler.
  1. Assembly
–       Hasil dari program mempunyai ukuran yang relatif kecil.
–       Sulit dimengerti karena statement/perintahnya singkat-singkat, butuh usaha yang besar untuk membuat.
–       Fasilitas yang dimiliki terbatas.
  1. Bahasa Tingkat Tinggi (high level language)
–       Lebih mudah dipelajari.
–       Fasilitas yang dimiliki lebih baik (banyak).
–       Memiliki ukuran yang relatif besar, misal membuat compiler pascal dengan menggunakan bahasa C.
–       Untuk mesin yang berada perlu dikembangkan tahapan-tahapan tambahan.
–       Misal membuat compiler C pada Dos berdasarkan compiler C pada Unix.
  1. BootStap
–       Untuk membangun sesuatu yang besar, dibangun/dibuat dulu bagian intinya (niklaus wirth – saat membuat pascal compiler).
P0 dibuat dengan assembly, P1 dibuat dari P0 dan P2 dibuat dari P1, jadi compiler untuk bahasa P dapat dibuat tidak harus dengan menggunakan assembly secara keseluruhan.
  1. E.   Kualitas dari Compiler
–          Waktu yang dibutuhkan untuk kompilasi tergantung dari algoritma compiler dan pembuat (compilator) Compiler itu sendiri.
–          Kualitas dari object program yang dihasilkan dari ukuran yang dihasilkan.
–          Fasilitas-fasilitas integrasi yang lainnya yaitu IDE (Integrated Development Environment)
  1. F.   Struktur Compiler
Keterangan
–          Lexical Analyzer scanner, syntax dan intermediate code merupakan fungsi analisis dalam compiler, yang bertugas mendekomposisi program sumber menjadi bagian-bagian kecil.
–          Code generation dan code optimization adalah merupakan fungsi synthesis yang berfungsi melakukan  pembangkitan/pembuatan dan optimasi program (object program).
–          Scanner adalah mengelompokan program asal/sumber menjadi token.
–          Parser (mengurai) bertugas memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh scanner.
Lexical Analysis (scanner) Berhubungan dengan bahasa
–          Mengidentifikasi semua besaran yang membuat suatu bahasa.
–          Mentrasformasikan ke token-token.
–          Menentukan jenis dari token-token.
–          Menangani kesalahan.
–          Menangani tabel simbol.
–          Scanner, didesign untuk mengenali –  keyboard, operator, indentifiter.
–          Token : separates characters of the source language into group that logically belong together.
–          Misalnya : konstanta, nama variable ataupun operator dan delimiter.
Lexical Analysis (Besaran Leksikal)
–          Identifiar dapat berupa keyboard atau nama kunci, seperti IF, ELSE, BEGIN, END, INTEGER, INT, FLOAT.
–          Konstanta : besaran yang berupa bilangan bulat, bilangan pecahan, boolean, karakter, string dan sebagainya.
–          Delimiter berguna sebagai pemisah/pembatas, seperti kurung-buka, kurung-tutup, titik, koma, titik-dua, titik-koma, white space.
  1. G.   Error Handling
    1. Kesalahan Program
    2. Kesalahan Leksikal
–       Kesalahan dalam mengetik/mengeja
–       Misal THEN dituliskan dengan TEN atau THN
  1. Kesalahan Sintaks
–       Misalnya dalam operasi aritmatika dengan tanda kurung yang jumlahnya kurang, contoh A:= X + (B+D).
  1. Kesalahan Semantics
–       Tipe data yang salah
–       Variable belum didefinisikan
  1. Penanganan Kesalahan
Langkah-langkah penangan kesalahan :
–       Mendeteksi kesalahan
–       Melaporkan kesalahan
–       Tindak lanjut perbaikan
Misal : compiler menemukan kesalahan yang bisa meliputi :
–       Kode kesalahan
–       Pesan kesalahan dalam bahasa alami
–       Nama dan atribut identifier
–       Contoh : error 162 jumlah : unknow identifier
  1. Reaksi Terhadap Kesalahan
Ada beberapa reaksi yang dilakukan oleh  compiler :
  1. Reaksi-reaksi yang tidak dapat diterima
–       Compiler crash : berhenti atau hang
–       Looding : compiler tidak bisa berhenti
–       Menghasilkan obyek program yang salah : berbahaya bisa diketahui/muncul setelah program dieksekusi.
  1. Reaksi-reaksi yang dapat diterima
–       Reaksi yang sudah dapat dilakukan : compiler melaporkan error seperti, recovery (pemulihan), repair (perbaikan).
–       Reaksi yang belum dapat dilakukan : compiler mengoreksi kesalahan, menghasilkan obyek program sesuai yang diinginkan program, compiler memiliki kemampuan untuk mengetahui maksud dari pemrograman, belum diimplementasikan pada program.
  1. Reaksi yang benar, tapi kurang dapat diterima dan kurang bermanfaat
–       Compiler menemukan kesalahan pertama melaporkannya lalu berhenti.
–       Pemrogram membuang waktu untuk melakukan pengulangan compiler untuk setiap kali terdapt sebuah error.
  1. Error Recovery
Bertujuan mengembalikan parser ke kondisi stabil agar supaya dapat melanjutkan proses persaign ke posisi selanjutnya.
  1. Mekanisme Ad Hoc
–       Recovery yang dilakukan tergantung dari isi pembuat compiler
–       Tidak terliat pada suatu aturan tertentu
–       Disebut juga dengan istilah perpose error recovery
  1. Syntax Directed Recovery
  2. Second error recovery
  3. Contaxt sensitive recovery
  4. Error Repair
Memperbaiki kesalahan dan membuat source program valid (memodifikasi)
–       Mekanisme Ad Hoc : tergantung pada sipembuat compiler
–       Syntax directed repair.



Komentar

Postingan populer dari blog ini

Tugas Teknik Kompilasi