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 (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 problem oriented sering juga dimasukkan sebagai bahasa tingkat tinggi, misalnya SQL, Myob, dsb.
Bahasa Assembly merupakan bentuk simbolik dari bahasa mesin. Kode misalnya ADD, MUL, 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 Sumber
Analisa Leksikal
Analisa Sintaks
Intermediate Program
Interpretasi
Hasil Operasi
Pengelolaan Tabel Ernastuti & Sulistyo
7/52
Teknik Kompilasi II
Assembler
Source Code .ASM
Assembler
Object Code
Lingker
.OBJ
File Target
.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 Sumber Sumber
Program Program Sasaran Sasaran
ANALISA Penganalisa Leksikal (scanner)
Penganalisa Sintaks (parser)
SINTESA Penganalisa Semantik Pembangkit Kode antara
Pembentuk kode
Pengoptimal kode
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 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.
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