Tujuan Pembelajaran :
1. Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler
2. Mahasiswa memahami konsep pembuatan sebuah Compiler
3. Mahasiswa mengetahui bagaimana sebuah bahasa pemrograman dapat diterjemahkan
oleh mesin.
Metari Pembelajaran
1. Bentuk-bentuk karakter dan kelas Grammar.
2. Ekspresi Regular dan Automata
3. Analisa Leksikal sebagai tahap awal kompilasi
4. Analisa Sintaks, bentuk-bentuk derivasi serta implementasi parsing.
5. Analisa Semantik dan tahapan Sintesa.
6. Penanganan kesalahan kompilasi dan fungsi tabel informasi.
1
Pendahuluan
Arti Kata Teknik Kompilasi
Teknik adalah suatu metode atau cara
Kompilasi suatu proses menggabungkan serta
menterjemahkan sesuatu (source program)
menjadi bentuk lain
Compile: menterjemahkan sebuah program
yang ditulis dalam bahasa pemrograman
tingkat tinggi ke bahasa mesin
Pendahuluan 2
Kenapa Perlu Translator?
Bagi user yang hanya pengguna
mungkin kata-kata translator adalah
membingungkan. Kenapa perlu
translator?
Pertanyaan tsb akan membingungkan
bagi programmer yang membuat
program dengan bahasa mesin
Pendahuluan 3
Latar Belakang
Bahasa mesin adalah bentuk bahasa terendah
pada komputer, kita dapat
berhubungan/komunikasi langsung dengan bagian-
bagian yang ada di dalam komputer seperti bits,
register dan sangat primitif.
Bahasa mesin adalah tidak lebih dari urutan bit-bit
0 dan 1
Instruksi dalam bahasa mesin bisa saja dibentuk
menjadi micro-code, semacam prosedur dalam
bahasa mesin
Pendahuluan 4
Bagaimana dengan orang yang tidak
mengerti bahasa mesin?
Bagi user yang tidak mengerti bahasa mesin
akan mengalami masalah. Hal ini disebabkan
karena mereka harus belajar dahulu bahasa
mesin, dan akan bergabung pada jenis mesin
komputer yang digunakan. Jika jenis
komputer mengalami perubahan maka dapat
dipastikan bahwa user harus mempelajari lagi
bahasa mesin dengan jenis komputer yang
baru.
Pendahuluan 5
Bagaimana dengan orang yang tidak
mengerti bahasa mesin?
Pendahuluan 6
Bagaimana dengan orang yang tidak
mengerti bahasa mesin?
Bahasa
mesin
Bahasa
Assembly
Bahasa
Pemrograman
Bahasa
Tingkat tinggi
Bahasa
Problem Oriented
8
Pendahuluan
Bahasa tingkat tinggi
Bahasa mesin merupakan bentuk
(user oriented) lebih
terendah dari bahasa komputer.
banyak memberikan fungsi
Instruksi direpresentasikan dalam
kontrol program, kalang,
kode numerik.
block, dan prosedur.
Program
Language
9
Pendahuluan
Bahasa Tingkat Tinggi
Bahasa yang lebih dikenal oleh manusia, maksudnya
adalah statement yang digunakan menggunakan
bahasa yang dipakai oleh manusia (Inggris)
Programmudah untuk dikoreksi dan diperbaiki
(debug)
Tidak tergantung pada salah satu jenis mesin
komputer
Bahasa tingkat tinggi biasanya masih membutuhkan
translator
Pendahuluan 10
Bahasa Tingkat Tinggi
Memberikan fasilitas yang lebih banyak,
seperti struktur kontrol program yang
terstruktur, memiliki blok-blok, serta prosedur
dan fungsi-fungsi:
Struktur kontrol seperti:
kondisi (If ...Then...Else),
perulangan (For, While)
struktur blok (begin...End, {...})
Pendahuluan 11
Bahasa Tingkat Tinggi
Oleh karena itu dari bahasa tingkat tinggi ke
dalam bahasa mesin dibutuhkan sesuatu
untuk menterjemahkan agar mesin
(komputer) mengerti apa yang diinginkan
manusia. Menerjemahkan statement bahasa
tingkat tinggi ke dalam bahasa tingkat rendah
dapat dibedakan menjadi dua; melalui
interpreter atau compiler yang fungsinya
sama yaitu menerjemahkan
Pendahuluan 12
2. Translator
Translator melakukan pengubahan source code / source program ke dalam target code / object code
Interpreter
Assembler
Compiler
Source Code adalah bahasa tingkat tinggi. Source Code adalah bahasa Assembly
Object Code adalah bahasa mesin atau assembly Object Code adalah bahasa mesin
Source code dan data diproses tidak bersamaan Contoh, Turbo Assembler
Contoh, PASCAL, C
13
Pendahuluan
Interpreter
Penanganan
Kesalahan
Pengelolaan
Tabel
14
Pendahuluan
Assembler
File
Source Assembler Object Code Lingker Target
Code
• Source Code adalah bahasa Assembler, Object Code adalah bahasa mesin
• Object Code dapat berupa file object (.OBJ), file .EXE, atau file .COM
• Contoh : Turbo Assembler (dari IBM) dan Macro Assembler (dari Microsoft)
15
Pendahuluan
Compiler
Definisi : Kompilator (compiler) adalah sebuah program yang membaca suatu program yang ditulis
Dalam suatu bahasa sumber (source language) dan menterjemahkannya kedalam suatu
bahasa sasaran (target language)
Proses kompilasi dapat digambarkan melalui sebuah blok diagram sebagai berikut :
Pesan-pesan kesalahan
(error messages)
16
Pendahuluan
Blok Diagram
Program Program
Sumber Sasaran
ANALISA SINTESA
Penganalisa
Penganalisa Penganalisa Semantik Pembentuk Pengoptimal
Leksikal Sintaks Pembangkit kode kode
(scanner) (parser) Kode antara
TABEL
SIMBOL
17
Pendahuluan
Keterangan
1. Program Sumber ditulis dalam bahasa sumber, misal Pascal, Assembler, dsb
2. Program Sasaran dapat berupa bahasa pemrograman lain atau bahasa mesin pada
suatu komputer
3. Scanner : Memecah program sumber menjadi besaran leksik/token
4. Parser : Memeriksa kebenaran dan urutan kemunculan token
5. Penganalisa semantik : Melakukan analisa semantik, biasanya dalam realisasi akan
digabungkan Dengan intermediate code generator (bagian yang berfungsi
membangkitkan kode antara)
6. Pembentuk Kode : Membangkitkan kode objek
7. Pengoptimal Kode : Memperkecil hasil dan mempercepat proses
8. Tabel : Menyimpan semua informasi yang berhubungan dengan proses kompilasi
18
Pendahuluan
Library Object
Code
Source Object
Code 1 Compiler 1
Code 1
Source Object
Code 2 Compiler 2
Code 2
Lingker Executable
Source Object
Code n Compiler n
Code n
19
Pendahuluan
Pembuatan Compiler
1. Bahasa Mesin
Tingkat kesulitannya tinggi, bahkan hampir mustahil
dilakukan
sangat tergantung pada mesin
2. Bahasa Assembly
Bahasa Assembly bisa dan biasa digunakan sebagai tahap awal pada proses
pembuatan sebuah kompilator
Hasil dari program mempunyai ukuran yang relatif kecil
Sulit dimengerti karena perintahnya singkat-singkat, butuh usaha yang besar
untuk membuat compiler dengan bahasa ini
20
Pendahuluan
Pembuatan Compiler
5. Bootstrap P1
P2
Pembuatan kompilator secara bertingkat. P0
21
Pendahuluan