Teknik Kompilasi “Translator” Dosen : Ahmad Apandi, ST Tujuan Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler. Mahasiswa memahami konsep pembuatan sebuah Compiler. Mahasiswa mengetahui bagaimana sebuah bahasa pemrograman dapat diterjemahkan oleh mesin. ARTI KATA TEKNIK KOMPILASI • Teknik : – • Metode atau Cara Kompilasi : – Proses menggabungkan serta menterjermahkan sesuatu (source program) menjadi bentuk lain • Compile : – To translate a program written in a high-level programming language into machine language. Bahasa Pemrograman Bahasa mesin Bahasa Assembly Bahasa Pemrograman Bahasa Tingkat tinggi Bahasa Problem Oriented Bahasa Pemrograman Bahasa mesin merupakan bentuk terendah dari bahasa komputer. Instruksi direpresentasikan dalam kode numerik. Bahasa tingkat tinggi (user oriented) lebih banyak memberikan fungsi kontrol program, kalang, block, dan prosedur. Program Language Bahasa Assembly merupakan bentuk simbolik dari bahasa mesin. Kode misalnya ADD, MUL, dsb Bahasa problem oriented sering juga dimasukkan sebagai bahasa tingkat tinggi, misalnya SQL, Myob, dsb. Translator Translator melakukan pengubahan source code / source program kedalam target code / object code Interpreter dan Compiler termasuk dalam kategori translator. Interpreter Tidak membangkitkan object code. Source code dan data diproses bersamaan. Translator Contoh: BASICA, SPSS, DBASE III. Assembler Compiler Source Code adalah bahasa tingkat tinggi. Object Code adalah bahasa mesin atau assembly. Source Code adalah bahasa Assembly Object Code adalah bahasa mesin. Contoh: Turbo Assembler. Mengapa perlu Translator ? Bahasa mesin adalah bahasa bentuk bahasa terendah komputer, berhubungan langsung dengan bagian bagian komputer seperti bits, register & sangat primitive Jawaban atas pertanyaan ini akan membingungkan bagi programmer yang membuat program dengan bahasa mesin. Bahasa mesin adalah tidak lebih dari urutan 0 dan 1 Bagaimana dengan orang tidak mengerti bahasa mesin Compiler & Interpreter Jika sebuah Translator menerjemahkan bahasa pemrograman tingkat tinggi menjadi bahasa rakitan atau bahasa mesin, ini disebut COMPILER. Contoh : ADA, ALGOL, BASIC, COBOL, FORTRAN, PL/I, C/C++ Jika sebuah Translator menerjemahkan bahasa pemrograman tingkat tinggi menjadi intermediate kode yang akan langsung di jalankan, ini disebut INTERPRETER. Contoh : APL, ASP, CYBOL, LISP, Smalltalk, PHP dan Perl Perbedaan Compiler & Interpreter Jika hendak menjalankan program hasil kompilasi dapat dilakukan tanpa butuh kode sumber. Sedangkan interpreter butuh kode sumber. Pada compiler terdapat 2 tahap, yaitu parsing ( pembuatan kode objek ) dan linking ( penggabungan kode objek dengan library ) . Sedangkan interpreter tidak ada proses terpisah. Pada kompiler bisa dilakukan optimisasi / peningkatan kualitas kode yang bisa dijalankan. Sedangkan interpreter susah atau bahkan tidak bisa dioptimasikan. Compiler & Interpreter Proses Kompilasi Proses Kompilasi dikelompokkan kedalam dua kelompok besar : – Analisa : Program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (Intermediate Representation ). – Sintesa : Membangun program sasaran yang diinginkan dari bentuk antara. Blok Diagram Proses Kompilasi Program Sumber Program Sasaran ANALISA Penganalisa Leksikal (scanner) Penganalisa Sintaks (parser) Penganalisa Semantik Pembangkit Kode antara TABEL SIMBOL Bagan pokok proses kompilasi SINTESA Pembentuk kode Pengoptimal kode Keterangan Program Sumber ditulis dalam bahasa sumber, misal Pascal, Assembler, dsb. Program Sasaran dapat berupa bahasa pemrograman lain atau bahasa mesin pada suatu komputer. Scanner : Memecah program sumber menjadi besaran leksik/token. Penganalisa semantik : Melakukan analisa semantik, biasanya dalam realisasi akan digabungkan Dengan intermediate code generator (bagian yang berfungsi membangkitkan kode antara). Pembentuk Kode : Membangkitkan kode objek Pengoptimal Kode : Memperkecil hasil dan mempercepat proses. Tabel : Menyimpan semua informasi yang berhubungan dengan proses kompilasi.