Anda di halaman 1dari 52

Teknik Kompilasi II

TEKNIK KOMPILASI

Ernastuti & Sulistyo P

Ernastuti & Sulistyo 1/52


Teknik Kompilasi II

MATERI

Ernastuti & Sulistyo 2/52


Teknik Kompilasi II

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.

Ernastuti & Sulistyo 3/52


Teknik Kompilasi II

1. Bahasa Pemrograman

Bahasa
mesin
Bahasa
Assembly

Bahasa
Pemrograman
Bahasa
Tingkat tinggi

Bahasa
Problem Oriented

Ernastuti & Sulistyo 4/52


Teknik Kompilasi II

Bahasa tingkat tinggi


Bahasa mesin merupakan bentuk (user oriented) lebih banyak
terendah dari bahasa komputer. memberikan fungsi kontrol
Instruksi direpresentasikan dalam program, kalang, block, dan
kode numerik. prosedur.

Program
Language

Bahasa problem oriented


Bahasa Assembly merupakan bentuk sering juga dimasukkan sebagai
simbolik dari bahasa mesin. Kode bahasa tingkat tinggi,
misalnya ADD, MUL, dsb misalnya SQL, Myob, dsb.

Ernastuti & Sulistyo 5/52


Teknik Kompilasi II

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


Translator ƒ Source code dan data diproses bersamaan
ƒ Contoh, BASICA, SPSS, DBASE III

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 Ernastuti & Sulistyo 6/52
Teknik Kompilasi II

Interpreter

Penanganan
Kesalahan

Program Analisa Analisa Intermediate Hasil


Sumber Interpretasi Operasi
Leksikal Sintaks Program

Pengelolaan
Tabel

Ernastuti & Sulistyo 7/52


Teknik Kompilasi II

Assembler

Source File
Assembler Object Code Lingker Target
Code

.ASM .OBJ .EXE / .COM

Proses Sebuah Kompilasi pada


Bahasa Assembler

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

Ernastuti & Sulistyo 8/52


Teknik Kompilasi II

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 :

Program sumber Compiler Bahasa sasaran

Pesan-pesan kesalahan
(error messages)

Proses Kompilasi dikelompokkan kedalam dua kelompok besar :


1. Analisa : Program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (Intermediate
Representation )
2. Sintesa : Membangun program sasaran yang diinginkan dari bentuk antara

Ernastuti & Sulistyo 9/52


Teknik Kompilasi II

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

Bagan pokok proses kompilasi

Ernastuti & Sulistyo 10/52


Teknik Kompilasi II

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

Ernastuti & Sulistyo 11/52


Teknik Kompilasi II

Library Object
Code
Source Object
Code 1 Compiler 1
Code 1
Source Object
Compiler 2
Code 2 Code 2
Lingker Executable

Source Object
Compiler n
Code n Code n

• Pembentukan file Executable berdasar dari beberapa Source Code


• Source Code dapat terdiri dari satu atau lebih behasa pemrograman.

Ernastuti & Sulistyo 12/52


Teknik Kompilasi II

Pembuatan Compiler

Pembuatan kompilator dapat dilakukan dengan :

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

3. Bahasa Tingkat Tinggi lain pada ,mesin yang sama


Proses pembuatan kopilator akan lebih mudah

4. Bahasa tingkat tinggi yang sama pada mesin yang berbeda


Misal, pembuatan kompilator C untuk DOS, berdasar C pada UNIX

5. Bootstrap
Pembuatan kompilator secara bertingkat.

Ernastuti & Sulistyo 13/52


Teknik Kompilasi II

Jenis Translator: ASSEMBLER

Ernastuti & Sulistyo 14/52


Teknik Kompilasi II

Jenis Translator: COMPILER

Ernastuti & Sulistyo 15/52


Teknik Kompilasi II

Jenis Translator: Interpreter

Ernastuti & Sulistyo 16/52


Teknik Kompilasi II

Ernastuti & Sulistyo 17/52


Teknik Kompilasi II

Ernastuti & Sulistyo 18/52


Teknik Kompilasi II

Lexical Analysis

Ernastuti & Sulistyo 19/52


Teknik Kompilasi II

Lexical Analysis

Ernastuti & Sulistyo 20/52


Teknik Kompilasi II

Lexical Analysis

Ernastuti & Sulistyo 21/52


Teknik Kompilasi II

Lexical Analysis

Ernastuti & Sulistyo 22/52


Teknik Kompilasi II

Lexical Analysis

Ernastuti & Sulistyo 23/52


Teknik Kompilasi II

Ernastuti & Sulistyo 24/52


Teknik Kompilasi II

Lexical Analysis

Ernastuti & Sulistyo 25/52


Teknik Kompilasi II

Syntax Analysis

Ernastuti & Sulistyo 26/52


Teknik Kompilasi II

Tugas dari Syntax Analizer adalah:

Ernastuti & Sulistyo 27/52


Teknik Kompilasi II

Statement: (A+B)*(C+D)

Ernastuti & Sulistyo 28/52


Teknik Kompilasi II

Syntax Tree

Ernastuti & Sulistyo 29/52


Teknik Kompilasi II

Penurunan untuk menghasilkan


string aabbb

Ernastuti & Sulistyo 30/52


Teknik Kompilasi II

Ernastuti & Sulistyo 31/52


Teknik Kompilasi II

Parsing atau Proses Penurunan

Ernastuti & Sulistyo 32/52


Teknik Kompilasi II

Ernastuti & Sulistyo 33/52


Teknik Kompilasi II

Metode Parsing

Ernastuti & Sulistyo 34/52


Teknik Kompilasi II

Parsing digolongkan menjadi :

Ernastuti & Sulistyo 35/52


Teknik Kompilasi II

Parsing: BRUTE FORCE

Ernastuti & Sulistyo 36/52


Teknik Kompilasi II

Parsing: BRUTE FORCE

Ernastuti & Sulistyo 37/52


Teknik Kompilasi II

Ernastuti & Sulistyo 38/52


Teknik Kompilasi II

Kelemahan metode BRUTE FORCE

Ernastuti & Sulistyo 39/52


Teknik Kompilasi II

Ernastuti & Sulistyo 40/52


Teknik Kompilasi II

Ernastuti & Sulistyo 41/52


Teknik Kompilasi II

Ernastuti & Sulistyo 42/52


Teknik Kompilasi II

Ernastuti & Sulistyo 43/52


Teknik Kompilasi II

Ernastuti & Sulistyo 44/52


Teknik Kompilasi II

Ernastuti & Sulistyo 45/52


Teknik Kompilasi II

Ernastuti & Sulistyo 46/52


Teknik Kompilasi II

Ernastuti & Sulistyo 47/52


Teknik Kompilasi II

Ernastuti & Sulistyo 48/52


Teknik Kompilasi II

Ernastuti & Sulistyo 49/52


Teknik Kompilasi II

Ernastuti & Sulistyo 50/52


Teknik Kompilasi II

Parsing: RECURSIVE DESCENT PARSER

Ernastuti & Sulistyo 51/52


Teknik Kompilasi II

• Lanjut ke TEKNIK KOMPILASI III. ppt

Ernastuti & Sulistyo 52/52

Anda mungkin juga menyukai