Transcript Slide 1

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.
Pendahuluan
1
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 bitbit 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?

Oleh karena itu manusia berusaha dan
menciptakan suatu bahasa yang dapat
dimengerti baik oleh manusia maupun
oleh komputer. Bahasa yang demikian
ini sering disebut dengan bahasa
tingkat tinggi.
Pendahuluan
6
Bagaimana dengan orang yang tidak
mengerti bahasa mesin?

Untuk era sekarang user tidak lagi
banyak dipusingkan mengenai
penterjema karena kemudahankemudahan yang diberikan oleh bahasa
tingkat tinggi sekarang sangatlah
memudahkan dan lebih fleksibel dalam
bekerja pada mesin-mesin komputer
yang berbeda.
Pendahuluan
7
1. Bahasa Pemrograman
Bahasa
mesin
Bahasa
Assembly
Bahasa
Pemrograman
Bahasa
Tingkat tinggi
Bahasa
Problem Oriented
Pendahuluan
8
Bahasa tingkat tinggi
(user oriented) lebih
banyak memberikan fungsi
kontrol program, kalang,
block, dan prosedur.
Bahasa mesin merupakan bentuk
terendah dari bahasa komputer.
Instruksi direpresentasikan dalam
kode numerik.
Program
Language
Bahasa Assembly merupakan bentuk
simbolik dari bahasa mesin. Kode
misalnya ADD, MUL, dsb
Pendahuluan
Bahasa problem oriented
sering juga dimasukkan sebagai
bahasa tingkat tinggi,
misalnya SQL, Myob, dsb.
9
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 dan Compiler termasuk dalam kategori translator.
Interpreter
 Tidak membangkitkan object code
Translator
 Source code dan data diproses bersamaan
 Contoh, BASICA, SPSS, DBASE III
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
Pendahuluan
Assembler
13
Interpreter
Penanganan
Kesalahan
Program
Sumber
Analisa
Leksikal
Analisa
Sintaks
Intermediate
Program
Interpretasi
Hasil
Operasi
Pengelolaan
Tabel
Pendahuluan
14
Assembler
Source
Code
.ASM
Assembler
Object Code
File
Target
Lingker
.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)
Pendahuluan
15
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
Pendahuluan
16
Blok Diagram
Program
Sumber
Program
Sasaran
ANALISA
Penganalisa
Leksikal
(scanner)
Penganalisa
Sintaks
(parser)
SINTESA
Penganalisa
Semantik
Pembangkit
Kode antara
Pembentuk
kode
Pengoptimal
kode
TABEL
SIMBOL
Bagan pokok proses kompilasi
Pendahuluan
17
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
Pendahuluan
18
Library Object
Code
Source
Code 1
Compiler 1
Object
Code 1
Source
Code 2
Compiler 2
Object
Code 2
Source
Code n
Compiler n
Lingker
Executable
Object
Code n
• Pembentukan file Executable berdasar dari beberapa Source Code
• Source Code dapat terdiri dari satu atau lebih behasa pemrograman.
Pendahuluan
19
Pembuatan Compiler
Pembuatan kompilator dapat dilakukan dengan :
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
Pendahuluan
20
Pembuatan Compiler
Pembuatan kompilator dapat dilakukan dengan :
3. Bahasa Tingkat Tinggi lain pada ,mesin yang sama
Proses pembuatan kopilator akan lebih mudah
Fasilitas yang dimiliki lebih baik (banyak)
Memiliki ukuran yang relatif besar, misal membuat compiler
pascal dengan menggunakan bahasa C
Untuk mesin yang berbeda perlu dikembangkan tahapantahapan tambahan. Misal membuat compiler C pada Dos
berdasarkan compiler C pada unix
P1
5. Bootstrap
Pembuatan kompilator secara bertingkat.
Pendahuluan
P2
P0
21