PERTEMUAN 1
PENGANTAR TEKNIK
KOMPILASI
PENDAHULUAN
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.
SILABUS PERKULIAHAN
• Teknik :
• Metode atau Cara
• Kompilasi :
• Proses mengabungkan serta menterjermahkan sesuatu
(source program) menjadi bentuk lain
• Compile :
• To translate a program written in a high-level
programming language into machine language.
Translator : Compiler & Interpreter
Translator :
• Adalah suatu program dimana mengambil input sebuah program
yang ditulis pada satu bahasa program (source language) ke bahasa
lain (The object on target language)
5
Pendahuluan
Kenapa perlu Translator ?
1. Assembler
Source code adalah bahasa assembly, Object code
adalah bahasa mesin
Object
Objectcode
code
*.asm
*.asm Assembler
Assembler *.exe
*.exe/*.com
/*.com
2. Compiler
Source code adalah bahasa tingkat tinggi, object code
adalah bahasa mesin atau bahasa assembly. Source
code dan data diproses berbeda
Data
Data
Source
Source Compile Execution
Execution Hasil
code Compilerr Hasil
code
Object
ObjectCode
Code
3. Interpreter
Interpreter tidak menghasilkan bentuk object code, tetapi
hasil translasinya hanya dalam bentuk internal, dimana
program induk harus selalu ada-berbeda dengan compiler
Source
Sourcecode
code
Translator Hasil
Hasil
Translator
Data
Data
Translator : Compiler & Interpreter
Source OBJECT
Compiler
Program PROGRAM
ERROR
MESSAGES
COMPILER VS INTERPRETER
• Kalau dengan kompiler, maka pembuatan kode yang bisa dijalankan mesin
dilakukan dalam 2 tahap terpisah, yaitu parsing / pembuatan kode objek dan
linking / penggabungan kode objek dengan library. Kalau interpreter tidak ada
proses terpisah.
• Pada kompiler bisa dilakukan optimisasi / peningkatan kwalitas kode yang bisa
dijalankan. Ada yang dioptimasi supaya lebih cepat, ada yang supaya lebih kecil,
ada yang dioptimasi untuk sistem dengan banyak processor. Kalau interpreter
susah / tidak bisa dioptimasikan.
PROSES KOMPILASI DIKELOMPOKKAN KE
DALAM DUA KELOMPOK BESAR :
Bahasa
mesin
Bahasa
Assembly
Bahasa
Pemrograman
Bahasa
Tingkat tinggi
Bahasa
Problem Oriented
14
Pendahuluan
PROGRAM LANGUAGE
Program
Language
15
Pendahuluan
TRANSLATOR
2. Translator
Translator melakukan pengubahan source code / source program kedalam target code / object code
Interpreter
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.
16
Pendahuluan Contoh: PASCAL, C.
INTERPRETER
Penanganan
Kesalahan
Pengelolaan
Tabel
17
Pendahuluan
ASSEMBLER
Assembler
File
Source Assembler Lingker
Object Code 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).
18
Pendahuluan
COMPILER
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)
19
Pendahuluan
BLOK DIAGRAM
Blok Diagram
Program
Program Program
Program
Sumber
Sumber Sasaran
Sasaran
ANALISA SINTESA
Penganalisa
Penganalisa Penganalisa Semantik Pembentuk Pengoptimal
Leksikal Sintaks Pembangkit kode kode
(scanner) (parser) Kode antara
TABEL
TABEL
SIMBOL
SIMBOL
20
Pendahuluan
KETERANGAN
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.
21
Pendahuluan
SOURCE CODE
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
22
Pendahuluan
PEMBUATAN COMPILER
Pembuatan Compiler
1. Bahasa Mesin
Tingkat kesulitannya tinggi, bahkan hampir mustahil dilakukan.
2. Bahasa Assembly
Bahasa Assembly bisa dan biasa digunakan sebagai tahap awal pada proses pembuatan
sebuah kompilator.
5. Bootstrap
Pembuatan kompilator secara bertingkat.
23
Pendahuluan