By KustantoSTMEng 5152013 Pengenalan Kompilasi pertemuan ke 2 1 Pengenalan Kompilasi pertemuan ke 2 2 Pendahuluan Tujuan Pembelajaran Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler ID: 743022
Download Presentation The PPT/PDF document "Pengenalan Kompilasi & Klasifikasi T..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Pengenalan Kompilasi & Klasifikasi Tatabahasa Formal menurut Chomsky
ByKustanto,S.T.,M.Eng
5/15/2013
Pengenalan Kompilasi pertemuan ke 2
1Slide2
Pengenalan Kompilasi pertemuan ke 2
2
Pendahuluan
Tujuan Pembelajaran :
Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler.
Mahasiswa memahami konsep pembuatan sebuah Compiler.
Mahasiswa mengetahui bagaimana sebuah bahasa pemrograman dapat diterjemahkan oleh mesin.Slide3
Pengenalan Kompilasi pertemuan ke 2
3
1. Bahasa Pemrograman
Bahasa
Pemrograman
Bahasa
mesin
Bahasa
Assembly
Bahasa
Tingkat tinggi
Bahasa
Problem OrientedSlide4
Pengenalan Kompilasi pertemuan ke 2
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.
Program
LanguageSlide5
Pengenalan Kompilasi pertemuan ke 2
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.
Contoh: Turbo Assembler.Slide6
Pengenalan Kompilasi pertemuan ke 2
6
Interpreter
Analisa
Leksikal
Analisa
Sintaks
Intermediate
Program
Interpretasi
Pengelolaan
Tabel
Program
Sumber
Penanganan
Kesalahan
Hasil
OperasiSlide7
Pengenalan Kompilasi pertemuan ke 2
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
Object Code
Assembler
File
Target
Lingker
.ASM
.OBJ
.EXE / .COM
Proses Sebuah Kompilasi pada Bahasa AssemblerSlide8
Pengenalan Kompilasi pertemuan ke 2
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 ).
2. Sintesa : Membangun program sasaran yang diinginkan dari bentuk antara.Slide9
Pengenalan Kompilasi pertemuan ke 2
9
Penganalisa
Leksikal
(scanner)
Penganalisa
Sintaks
(parser)
Penganalisa
Semantik
Pembangkit
Kode antara
Pembentuk
kode
Pengoptimal
kode
Program
Sumber
Program
Sasaran
TABEL
SIMBOL
ANALISA
SINTESA
Bagan pokok proses kompilasi
Blok Diagram Slide10
10
Proses kompilasi dikelompokkan menjadi :
Analisa
: program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (
intermediate presentation
)
Sintesa
: membangun program sasaran yang
diinginkan dari bentuk antaraSlide11
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
MOVF id2, R1
ADDF R2, R1
MOVF R1, id1Slide12
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 mesin.Slide13
Pengenalan Kompilasi pertemuan ke 2
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.
KeteranganSlide14
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 (
Turing Machine
), TM
Context Sensitive Grammar
(CSG)/type-1
Context Sensitive
Linear Bounded Automaton
, LBA
Context Free Gammar
(CFG)/type-2
Context Free
Automata Pushdown (
Pushdown Automata
), PDA
Regular Grammar
(RG)/type-3
Regular
Automata Hingga (
Finite Automata
)
Mesin Pengenal bahasa
Kelas
Bahasa
Catatan :
Pengenal bahasa adalah salah satu kemampuan mesin turing.
LBA adalah variasi dari Mesin Turing Nondeterministik.Slide15
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
analisis
sintaksis
.Slide16
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
A →
aA
| a
B →
bB
| bSlide17
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
A →
aA
| a
B →
bB
| bSlide18
Proses
penurunan / parsing :
Penurunan
terkiri
/ leftmost derivation :
simbol
variabel
paling
kiri
yg
diperluas
terlebih
dulu.
Penurunan terkanan / rightmost derivation : simbol
variabel terkanan
yg diperluas
dulu.Slide19
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
a
a
bSlide20
Tugas
:
S →
aB
|
bA
A → a |
aS
|
bAA
B → b |
bS
|
aBB
Utk
untai ‘aaabbabbba
’Slide21
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 → B → a Slide22
S →
SbS
| ScS | a
Utk
untai
: ‘abaca’
terdapat
2
cara
penurunan
:
S →
SbS
→ abS →
abScS → abacS → abacaS →
ScS → SbScS →
abScS → abacS → abaca
S
S
b
S
a
S
c
S
a
a
S
S
c
S
S
b
S
a
a
aSlide23
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
Untuk
memperoleh
untai
: ‘
aabbab
’Slide24
Selesai
Pengenalan Kompilasi pertemuan ke 2
24
5/15/2013