Pengenalan Kompilasi &
Klasifikasi Tatabahasa Formal
menurut Chomsky
By
Kustanto,S.T.,M.Eng
Pengenalan
Kompilasi pertemuan 2
Pendahuluan
Tujuan Pembelajaran :
1. Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler. 2. Mahasiswa memahami konsep pembuatan sebuah Compiler.
Pengenalan
Kompilasi pertemuan 3
1. Bahasa Pemrograman
Bahasa Pemrograman
Bahasa mesin
Bahasa Assembly
Bahasa Tingkat tinggi
Pengenalan
Kompilasi pertemuan 4
Bahasa mesin merupakan bentuk terendah dari bahasa komputer. Instruksi direpresentasikan dalam
kode numerik.
Bahasa Assembly merupakan bentuk simbolik dari bahasa mesin. Kode
misalnya ADD, MUL, dsb
Bahasa tingkat tinggi
(user oriented) lebih banyak memberikan fungsi
kontrol program, block, dan prosedur.
Bahasa problem oriented sering juga dimasukkan sebagai
bahasa tingkat tinggi, misalnya SQL, Myob, dsb.
Pengenalan
Kompilasi pertemuan 5
2. Translator
Translator melakukan pengubahan source code / source program kedalam target code / object code
Interpreter dan Compiler termasuk dalam kategori translator.
Translator
Interpreter
Compiler
Tidak membangkitkan object code.
Source code dan data diproses bersamaan.
Contoh: BASICA, SPSS, DBASE III.
Source Code adalah bahasa tingkat tinggi.
Object Code adalah bahasa mesin atau assembly.
Source code dan data diproses tidak bersamaan.
Contoh: PASCAL, C.
Assembler
Source Code adalah bahasa Assembly
Object Code adalah bahasa mesin.
Pengenalan
Kompilasi pertemuan 6
Interpreter
Analisa Leksikal
Analisa Sintaks
Intermediate
Program Interpretasi
Pengelolaan Tabel Program
Sumber
Penanganan Kesalahan
Pengenalan
Kompilasi pertemuan 7
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).
Source
Code Assembler Object Code
File Target Lingker
.ASM .OBJ .EXE / .COM
Pengenalan
Kompilasi pertemuan 8
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 :
Program sumber 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 ).
Pengenalan
Kompilasi pertemuan 9
Penganalisa Leksikal (scanner) Penganalisa Sintaks (parser) Penganalisa Semantik Pembangkit Kode antara Pembentuk kode Pengoptimal kode Program Sumber Program
Sumber ProgramSasaran
Program Sasaran TABEL SIMBOL TABEL SIMBOL ANALISA SINTESA
10
Proses kompilasi dikelompokkan menjadi :
Analisa
: program sumber dipecah-pecah dan
dibentuk menjadi bentuk antara
(
intermediate presentation
)
Sintesa
: membangun program sasaran yang
11
Contoh skema penerjemaham suatu ekspresi dalam
bahasa sumber, yaitu : position := initial + rate * 60
penganalisa semantik
Pembangkit kode
pengoptimal kode
position := initial + rate * 60
penganalisa sintaks
(parser)
penganalisa leksikal (scanner)
Id1 : = id2 + id3 * 60
id3 + : =
id1
id2 *
60 + : = id1 id3 id2 * intoreal 60 pembangkit kode antara
temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2
id1 := temp3
temp1 := id3 * 60.0 id1 := id2 + temp1
MOVF id3. R2 MULF #60.0, R2
12
Keterangan:
id adalah token untuk
identifier
. Tiga
lexeme
untuk token ini adalah
position, initial, dan rate.
Penganalisa semantik secara logika membangkitkan pohon parse.
Penganalisa semantik mendeteksi
mismatch type.
Perbaikan dilakukan
dengan memanggil
procedure
inttoreal yang mengkonversi integer ke
real.
Quadruples dari :
temp2 := id3 * temp1
adalah
(*,id3,temp1,temp2),
id := temp 3
adalah
(assign,temp3,-,id1), temp1:=inttoreal(60)
adalah
(intoreal,60,-,temp1).
Pembangkit kode dalam contoh ini menghasilkan kode dalam bahasa
Pengenalan
Kompilasi pertemuan 13
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.
Konsep dan notasi bahasa 14 Unrestricted Cotext Sensitive Kontext free regular
Hirarki
Chomsky
Type Grammar Kelas Bahasa Mesin Pengenal Bahasa
Unrestricted Grammar
(UG)/type-0 Unrestricted Mesin Turing (TM Turing Machine),
Context Sensitive Grammar
(CSG)/type-1 Context Sensitive Linear Bounded Automaton, LBA Context Free Gammar
(CFG)/type-2 Context Free Automata Pushdown (Automata), PDA Pushdown
Regular Grammar (RG)/type-3 Regular Automata Hingga (Finite Automata)
Mesin Pengenal bahasa
Kelas
Bahasa
Catatan :
CFG / Tata Bahasa Bebas Konteks
Pada tata bahasa bebas konteks tidak terdapat pembatasan hasil produksinya.
Batasan ruas kiri adalah sebuah simbol variabel.
Contoh :
CFG : B → CDeFg D → BcDe
Pada bhs regular, bagian yg belum terturunkan tsb selalu terjadi pd suatu ujung.
Pada bhs bebas konteks/CFG bisa terdapat lebih banyak bagian yg belum
terturunkan itu, dan bisa terjadi dimana saja.
Bhs bebas konteks menjadi dasar dlm pembentukan suatu parser / proses
Tree : suatu graph terhubung tidak sirkuler, yg memiliki satu simpul
(node) / vertex disebut akar (root) dan situ memiliki lintasan setiap simpul.
Pohon penurunan berguna untuk menggambarkan bagaimana
memperoleh suatu string (untai) dgn cara menurunkan simbol2 variabel mjd simbol2 terminal sampai tdk ada yg belum tergantikan.
Misal : Bhs bebas konteks S → AB
Digambar pohon penurunan utk untai : ‘aabbb’ S
A B
b A
a B
a b B
b
Simbol awal menjadi root.
Setiap kali penurunan dipilih
aturan produksi yg menuju ke solusi.
Bhs bebas konteks S → AB
Proses penurunan / parsing :
Penurunan terkiri / leftmost derivation :
simbol variabel paling kiri yg diperluas
terlebih dulu.
Penurunan terkanan / rightmost
CONTOH :
S → aAS | a A → SbA | ba
Untuk memperoleh untai :’aabbaa’
Penurunan terkiri : S → aAS → aSbAS → aabAS → aabbaS → aabbaa
Penurunan terkanan : S → aAS → aAa → aSbAa → aSbbaa → aabbaa
S
a A S
S b A a
Tugas :
S → aB | bA
A → a | aS | bAA B → b | bS | aBB
AMBIGUITAS
Terjadi bila terdapat lebih dari 1 pohon penurunan yg berbeda utk memperolah suatu untai.
Contoh :
S → A | B A → a B → a
Utk untai : ‘a’ terdapat 2 cara penurunan : S → A → a
S → SbS | ScS | a
Utk untai : ‘abaca’ terdapat 2 cara penurunan : S → SbS → abS → abScS → abacS → abaca S → ScS → SbScS → abScS → abacS → abaca
S
S b S
a S c S
a a
S
S c S
S b S
a a
Tugas :
S → aAd | aB A → b | c B → ccd | ddc
Utk memperoleh untai : ‘accd’
Buktikan bahwa tata bahasa bebas konteks berikut ambigu : S → aB | bA
A → a | aS | bAA B → b | bS | aBB
Selesai
Pengenalan Kompilasi pertemuan
ke 2 24