Materi Kuliah Teknik Kompilas

110
TEKNIK KOMPILASI

Transcript of Materi Kuliah Teknik Kompilas

Page 1: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 1/110

TEKNIK KOMPILASI

Page 2: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 2/110

KONSEPdan NOTASI

BAHASA

Page 3: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 3/110

Page 4: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 4/110

Konsep dan Notasi bahasaTata bahasa %grammar' adalah sekumpulan dari

himpunan (ariabel-(ariabel, simbol-simbol

terminal, simbol non-terminal, simbol a al yang

dibatasi oleh aturan-aturan produksi turan produksi adalah pusat dari tata bahasa

yang menspesi#ikasikan bagaimana suatu tata

bahasa melakukan trans#ormasi suatu string ke

bentuk lainnya

Page 5: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 5/110

Konsep dan Notasi bahasa

*ynta$ . suatu aturan yang memberitahu apakah

sesuatu kalimat %string' adalah (alid dalam

program atau tidak*emantic . suatu aturan-aturan yang

memberikan arti kepada program

Page 6: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 6/110

Review Mesin Automata Misal : FSA

/isal . da mesin penjual permen yang/emuat aturan0 sbb .1arga Permen 2p)05/esin tsb dpt menerima koin2p)5 %n',

2p)!& %d'2p)05 %3' tombol utk mengeluarkan

permen)

Kemungkinan0 yang

Terjadi diperlihatkan gambar .

Page 7: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 7/110

Review Mesin Automata Misal : FSA +* *tate iagram nya adalah .

Page 8: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 8/110

Conto lain : FSA

Page 9: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 9/110

Penggolongan homsky Bahasa Mesin Automata Aturan Produksi

Konsep dan Notasi bahasa

Page 10: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 10/110

Kete!an"an menyatakan simbol 7 simbol yang berada diruas kiri aturan produksi menyatakan simbol 7 simbol yang berada diruas kanan aturan produksi

*imbol-simbol terdiri dari simbol terminal dannon terminal8(ariabel %masih bisa diturunkanlagi'

*imbol terminal biasanya dinyatakan denganhuru# kecil, sementara non terminal denganhuru# besar

Page 11: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 11/110

Aturan ProduksiTipe O 8 nrestricted. Tidak da batasan pada aturan produksi

bc → eTipe 1 8 onte$t sensiti(e. Panjang string ruas kiri harus lebih kecil atau samadengan ruas kanan

b → e+→ e+

Tipe 2 8 onte$t #ree grammar. 2uas kiri haruslah tepat satu simbol (ariable" → e+g

→ "c e

Tipe 3 8 2egular. 2uas kanan hanya memiliki maksimal ! simbol non terminal

dan diletakkan paling kanan sendiri → e → e#g → e#g1

Page 12: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 12/110

Atu!an #!odu$si %an" tida$le"al &&&

*imbol E tidak boleh beradapada ruas kirimisal E bd

turan produksi yang ruaskirinya hanya memuat simbolterminal sajamisal . a bd atau ab bd

Page 13: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 13/110

Hirarki Comsky

RegularRegular

Context free

Context Sensitive

Unrestricted

Page 14: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 14/110

Contoh Tata BahasaSederhana

:program; BEGIN :*tatement-list; END

:*tatement-list; :statement; < :statement; ; :statement-list;:statement; :(ar; : :e$pression;:=$pression; :term; < :term;:op!; :e$pression;

:term; :#actor; < :#actor; :op0; :term;:#actor; :(ar; < :constant;

:(ar; A<B< >)< !:op!; ? < - < :op0; " < @ < 8:constant; :realAnumber; < :integerApart;

:realAnumber; :integerApart; ) :#raction;:integerApart; :digit; < :integerApart; : digit;:#raction; :digit; < :digit; :#raction;:digit; &<!<>)<9

Page 15: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 15/110

Contoh

"egin . !B" . ? 0

=N

Page 16: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 16/110

Diagram State

igunakan untuk mendapatkan token,

mempermudah melakukan analisis le$ical

Token adalah simbol termina# dari teori

bahasa dan automata

Page 17: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 17/110

$

ID

INT

P%&$

MIN&$

'

(

huru)

Di*it

+uru), Di*it

Di*itB#ank

Contoh : suatu tata bahasa memiliki himpunan simbolterminal/token berikut (ID, PLUS, MINUS, dan INTtoken ID untuk karakter huruf a-z, 0-9, token INT untuk digit, tokenPLUS untuk Penjumlahan dan token MINUS untuk Pengurangan

Page 18: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 18/110

Notasi BNF (Backus-NourForm) turan Produksi bisa dinyatakan dengan notasi "N+

"N+ menggunakan abstraksi untuk struktur synta$:: sama identik dengan simbol →

- sama dengan atau

. / pengapit simbol non terminal

0 Pengulangan dari & sampai n kali

/isalkan aturan produksi sbb.

= → T < T?= < T-=

T → aNotasi "N+nya adalah

= .. :T; < :T; ? :=; < :T; - :=;

T .. a

Page 19: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 19/110

Diagram S nta!

lat bantu %tools' dalam pembuatan parser8 analisis sintaksis

/enggunakan simbol persegi panjang untuk non terminal

Cingkaran untuk simbol terminal

/isalnya

= → T < T?= < T-= T

'

(

E

Page 20: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 20/110

"N+. :"lock; .. "=DEN :statement; F *=/E GC :statement;H

=N

BEGIN $tatement END

;

Page 21: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 21/110

Kua"itas dari

Compi"er Iaktu yang dibutuhkan untuk kompilasiB

tergantung dari

lgoritma compiler

Pembuat %compilator' ompiler itu sendiri

Kualitas dari obyek program yang dihasilkan

kuran yang dihasilkan

+asilitas-#asilitas Entegrasi yang lainnya

E = %integrated e(elopment =n(ironment'

Page 22: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 22/110

Struktur C#$P%&'

Object codeObject code

ErrorHandling

Table management

Page 23: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 23/110

Keterangan

Ce$ical nalyJer scanner, *ynta$ nalyJer, dan Entermediate odemerupakan #ungsi nalisis dalam compiler, yang bertugas

mendekomposisi program sumber menjadi bagian-bagian kecil

ode generation dan ode optimiJation adalah merupakan #ungsi

synthesis yang ber#ungsi melakukan pembangkitan 8 pembuatan dan

optimasi program %object program'

*canner adalah mengelompok-an program asal8sumber menjadi token

Parser %mengurai' bertugas memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh scanner

Page 24: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 24/110

&e!ica" Ana" sis (scanner) -berhubungan dengan bahasa

/engidenti#ikasikan semua besaran yang membuat suatu bahasa

/entrans#ormasikan ke token-token

/enentukan jenis dari token-token

/enangani kesalahan

/enangani tabel simbol

*canner, didesign untuk mengenali - key ord, operator, identi#ier

Token . separates characters o# the source language into group that logically

belong together

/isalnya . konstanta, nama (ariabel ataupun operator dan delimiter %atau sering

disebut menjadi besaran le$ical'

Page 25: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 25/110

&e!ica" Ana" sis ( Besaranleksikal )Edenti#ier dapat berupa key ord atau nama kunci, seperti

E+))=C*=, "=DEN))=N %pada Pascal', ENT=D=2 %pascal',ENT, +CG T %"hs 'Konstanta . "esaran yang berupa bilangan bulat %integer',bilangan pecahan %#loat82eal', boolean %true8#alse',karakter, string dan sebagainya

GperatorB Gperator arithmatika % ? - @ 8 ', operator logika % : ; 'elimiterB "erguna sebagai pemisah8pembatas, seperti

kurung-buka, kurung -tutup, titik, koma, titik-dua, titik-koma,hite-space

Ihite *pace. pemisah yang diabaikan oleh program,seperti enter, spasi, ganti baris, akhir #ile

Page 26: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 26/110

&e!ica" Ana" sis - Contohontoh 1:

ada urutan karakter yang disebut dengan statement

)ahrenheit : 32 ' e# ius 4 156,

Maka akan diter7emahkan keda#am token(token seperti di8a9ah ini

identi#ier → #ahrenheitoperator → .integer → 0operator penjumlahan → ?Edenti#ier → celciusoperator perkalian → @real 8 #loat → !)L

Page 27: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 27/110

&e!ica" Ana" sis - Contoh

*etiap bentuk dari token di representasi sebagai angka dalambentuk internal, dan angkanya adalah unik

Misalnya nilai ! untuk (ariabel, 0 untuk konstanta, untuk labeldan 4 untuk operator, dst

ontoh instruksi . Kondisi : IF A > B THEN C = D B

/aka scanner akan mentrans#ormasikan kedalam token-token,sbb.

Page 28: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 28/110

Le'i(al Anal%sis ) Conto *

ondisi: 06I 0&A !/ !5

B ! T+EN 0! ! D ! ; 0M

Token-token ini sebagai inputan untuk syntax Analyser , token-token ini

bisa berbentuk pasangan item) imana Etem pertama menunjukkan alamat atau

lokasi dari token pada tabel simbol) Etem kedua adalah representasi internal daritoken) *emua token direpresentasikan dengan in#ormasi yang panjangnya tetap

%konstan', suatu alamat %address atau pointer' dan sebuah integer %bilangan

bulat'

Page 29: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 29/110

S nta! Ana" *er

Pengelompokan token-token kedalam class synta$%bentuk synta$', seperti procedure, *tatement dane$pression

Drammar . sekumpulan aturan-aturan, untukmende#inisikan bahasa sumber

Drammar dipakai oleh synta$ analyser untuk menentukan

struktur dari program sumber

Proses pen-deteksian-nya %pengenalan token' disebutdengan parsing

Page 30: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 30/110

S nta! Ana" *er

/aka *ynta$ analyser sering disebut denganparser

Pohon sintaks yang dihasilkan digunakan untuksemantics analyser yang bertugas untukmenentukan maksudO dari program sumber)

/isalnya operator penjumlahan makasemantics analyser akan mengambil aksi apayang harus dilakukan

Page 31: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 31/110

ContohTerdapat statement . < A ' B = 4 < ' D =

kan menghasilkan bentuk sintaksis..)a tor/, .term/ > .e?pression/

Page 32: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 32/110

S nta! tree

Pohon sintaks8 Pohon penurunan

%synta$ tree8 parse tree' beguna untuk

menggambarkan bagaimana

memperoleh suatu string dengan cara

menurunkan simbol-simbol (ariablemenjadi simbol-simbol terminal)

/isalnya. * → " → a < a

" → b" < "

Penurunan untuk menhasilkan string aabbb

P i g t P

Page 33: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 33/110

Parsing atau ProsesPenurunanParsing dapat dilakukan dengan cara .

Penurunan terkiri % leftmost derivation ' . simbol (ariable

yang paling kiri diturunkan %tuntas' dahulu

Penurunan terkanan % rightmost derivation '. (ariable

yang paling kanan diturunkan %tuntas' dahulu

/isalkan terdapat ingin dihasilkan string aabbaa dari

conte$t #ree language. * → a * < a,

→ *b < ba

Page 34: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 34/110

Parsing atau ProsesPenurunan

Penurunan kiri .* ; a *

; a *b *; a ab *; a aabba *; aabbaa

Penurunan kanan .

* ; a *

; a a

; a *b a

; a *bba a

; aabbaa

Page 35: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 35/110

Parsing

Misa#n@a: * -; a" < b -; a < a* <b" -; b < b* < a""

Penurunan untuk string aaabbabbaalam hal ini perlu untuk melakukan percobaan

pemilihan aturan produksi yang bisamendapatkan solusi

Page 36: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 36/110

$etode ParsingPerlu memperhatikan hal.

Iaktu =ksekusiPenanganan KesalahanPenanganan Kode

Parsin* di*o#on*kan menjadi.

Top-DownPenelusuran dari root ke leaf atau dari simbol a al ke simbol terminalmetode ini meliputi.

Backtrack/backup : Brute ForceNo backtrack : Recursive Descent arser

Bottom-Up

/etode ini melakukan penelusuran dari leaf ke root

Page 37: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 37/110

Parsing+ Brute ,orce/emilih aturan produksi mulai dari kiri

/eng-e$pand simbol non terminal sampai pada simbol terminal

"ila terjadi kesalahan %string tidak sesuai' maka dilakukan backtrack

lgoritma ini membuat pohon parsing secara top-do n, yaitu dengan cara

mencoba segala kemungkinan untuk setiap simbol non-terminal

ontoh suatu language dengan aturan produksi sebagai berikut

* → a d < a"

→ b < c" → ccd < ddc

/isal ingin dilakukan parsing untuk string accdO

Page 38: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 38/110

Parsing+ Brute ,orce%i' * %ii' * %iii'*

a d a d

b

Terjadi kegagalan %iii', dilakukan back track

%i(' * %(' * %(i' *

a d a " a "

c c c d

Terjadi kegagalan lagi %i(', dilakukan back-track

Page 39: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 39/110

Parsing+ Brute ,orce

e#emahan dari metode-metode brute!force

/encoba untuk semua aturan produksi yang ada sehingga menjadi

lambat % aktu eksekusi'

/engalami kesukaran untuk melakukan pembetulan kesalahan/emakan banyak memakan memori, dikarenakan membuat backup

lokasi backtrack

Drammar yang memiliki 2 ekursif "iri tidak bisa diperiksa, sehingga harusdiubah dulu sehingga tidak rekursi# kiri, Karena rekursi# kiri akan

mengalami Loop yang terus-menerus

Page 40: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 40/110

Brute ,orce + ContohTerdapat grammar8tata bahasa D % ,T,P,*', dimana

%Q=R,RTR,R+R' *imbol NonTerminal %(ariable'T %QiR,R@R,R8R ,R?R,R-R' *imbol Terminal

* R=R *imbol al 8 *tart simbol

*tring yang diinginkan adalah i i aturan produksi %P' yang dicobakan adalah

!) = → T < T ? = < T - =

T → + < + @ T < + 8 T

+ → i

accept %diterima'

Page 41: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 41/110

Brute ,orce + Contoh

2) = → T < =?T < =-T

T → + < T@ + < T 8 +

+ → i

accept %diterima'

/eskipun ada rekursi# kiri, tetapi tidak diletakkan sebagai aturan yang paling kiri

3) = → =?T < =-T < T

T → T@ + < T 8 + < +

+ → i

2ekursi# kiri, program akan mengalami loop

Brute orce + Aturan

Page 42: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 42/110

Brute ,orce + Aturanproduksi turan Produksi yang rekursi# memiliki ruas kanan %hasil produksi' yangmemuat simbol (ariabel pada ruas kiri

$e8uah produksi da#am 8entuk → β merupakan produksi rekursi# kanan

β berupa kumpulan simbol (ariabel dan terminal

contoh. * → d *

" → ad "8entuk produksi @an* rekursi) kiri

→ β merupakan produksi rekursi# Kiri

contoh.

* → * d" → " ad

Page 43: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 43/110

Aturan produksi + Brute,orce

Produksi yang rekursi# kanan akan menyebabkan penurunantumbuh kekanan, *edangkan produksi yang rekursi# kiri akanmenyebabkan penurunan tumbuh ke kiri)

ontoh: onte$t #ree Drammar dengan aturan produksisebagai berikut.

Page 44: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 44/110

Aturan produksi + Brute ,orce

alam "anyak penerapan tata-bahasa, !"#$!si% #i!i tidak diinginkan,

ntuk menghindari penurunan kiri yang looping, perlu dihilangkan si#at

rekursi#, dengan langkah-langkah sebagai berikut.

Pisahkan turan produksi yang rekursi# kiri dan yang tidakB misalnya turan produksi yang rekursi) kiri

→ α ! < α 0 < ))) < α n turan produksi yang tida# rekursi) kiri

→ β! < β0 < ))) <βn

Page 45: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 45/110

Aturan produksi + Brute ,orce

lakukan per-ganti-an aturan produksi yang rekursi# kiri, sebagai

berikut.!) → β! S < β0 S < ))) <βn S0 S → α ! < α 0 < ))) <α n

S → α ! S < α0 S < ))) <α n S

Aturan produksi + Brute

Page 46: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 46/110

Aturan produksi + Brute,orce Pergantian dilakukan untuk setiap aturan produksi dengan simbol ruas kiri

yang sama, bisa muncul (ariabel S!, S0 dst, sesuai dengan (ariabel yang

menghasilkan rekurisi# kiri

ontoh: Tata "ahasa onte$t #ree

* → *ab < a*c < dd < ## < *bd

Pisahkan aturan produksi yang rekursi# kiri

$ → $a8 - $8d

2uas Kiri untuk *. α ! ab , α 0 bd

turan Produksi yang tidak rekursi# kiri * → a*c < dd < ##

dari situ didapat untuk 2uas Kiri untuk *. β! a*c, β0 dd, β ##

Aturan produksi + Brute

Page 47: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 47/110

Aturan produksi + Brute,orce Cangkah berikutnya adalah penggantian yang rekursi# kiri

* → *ab < *bd, dapat digantikan dengan

!) * → a*c &' < dd&' < ## &'

0( S! → ab < bd

) S! → ab &' < bd&'

1asil akhir yang didapat setelah menghilangkan rekursi# kiri adalah

sebagai "erikut.

* → a*c < dd < ##

* → a*c &' < dd&' < ## &'

S! → ab < bd

S! → ab &' < bd&'

Page 48: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 48/110

Aturan produksi +Brute ,orce

Kalau pun tidak mungkin menghilangkan rekursi# kiri dalam penyusunan

aturan produksi maka produksi rekursi# kiri diletakkan pada bagian belakang

atau terkanan, hal ini untuk menghindari looping pada a al p!os"s pa!sin)

/etode ini jarang digunakan, karena semua kemungkinan harus ditelusuri,

sehingga butuh aktu yang cukup lama serta memerlukan memori yang

besar untuk penyimpanan stack %backup lokasi backtrack'

/etode ini digunakan untuk aturan produksi yang memiliki alternati# yang

sedikit

Page 49: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 49/110

Parsing+ ecursi eDescent Parser Parsing dengan *"+$!si," D"s+"nt a!s"!

*alah satu cara untuk meng-aplikasikan bahasa conte$t #ree

*imbol terminal maupun simbol (ariabelnya sudah bukan sebuah karakter

"esaran leksikal sebagai simbol terminalnya, besaran synta$ sebagai simbol

(ariablenya 8non terminalnya

engan cara penurunan secara recursi# untuk semua (ariabel dari a al sampai ketemu

terminal

Tidak pernah mengambil token secara mumdur %back tracking'

"eda dengan turing yang selalu maju dan mundur dalam melakukan parsing

Page 50: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 50/110

Atu!an P!odu$si mema$aiRe(u!si+ ,es(ent :

*emua simbol (ariabel dijadikan prosedur8#ungsiika ketemu simbol terminal pada aturan produksi ,

maka panggil prosedurnyaPenelusuran bersi#at top do n mengikuti sintakssesuai pola pada diagram sintaks+ungsi8prosedur ditulis untuk setiap non terminal

dari suatu produksi) *etiap #ungsi8prosedur akanmelemparkan nilai benar atau salah bergantungpada apakah #ungsi tersebut mengenali substringyang diterima sebagai ekspansi dari non terminal)

Page 51: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 51/110

Conto :Grammar dengan BNF :<program> ::= t_PROG t_ID t_SEMICOL <b o!"> t_DO#<b o!"> ::= t_BEGIN <$tatement> %t_SEMICOL <$tatement>&

t_END<$tatement> ::= t_ID t_'SS <$(mp e e)p> *

t_IF <e)p> t_#+EN <$tatement>* t_IF <e)p> t_#+EN <$tatement> t_ELSE

<$tatement><e)p> ::= <$(mp e_e)p> t_E, <$(mp e e)p> *

<$(mp e_e)p> t_L# <$(mp e_e)p>* <$(mp e_e)p> t_G# <$(mp e_e)p>D$t--.

Page 52: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 52/110

Pen""alan #!o"!am untu$"!amma! ts-

Page 53: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 53/110

Page 54: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 54/110

Semantics Ana" ser

Proses ini merupakan proses kelanjutan dari proses kompilasi

sebelumnya, yaitu analisa leksikal %scanning' dan analisa sintaks

%parsing'

"agian terakhir dari tahapan analisis adalah analisis semantik/eman#aatkan pohon sintaks yang dihasilkan dari parsing

Proses analisa sintak dan analisa semantik merupakan dua

proses yang sangat erat kaitannya, dan sulit untuk dipisahkan

Page 55: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 55/110

Semantics Ana" ser ontoh . . % ?"' @ % ? '

arser hanya akan mengenali simbol-simbol . ,

?O, dan @O, parser tidak mengetahui makna dari

simbol-simbol tersebut

ntuk mengenali makna dari simbol-simbol

tersebut, ompiler memanggil routin semantics

Page 56: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 56/110

Semantics Ana" ser

ntuk mengetahui makna, maka routin ini akan memeriksa.

pakah (ariabel yang ada telah dide#inisikan sebelumnya

pakah (ariabel-(ariabel tersebut tipenya sama

pakah operand yang akan dioperasikan tersebut ada nilainya,dan seterusnya

/enggunakan tabel simbol

Pemeriksaan bisa dilakukan pada tabel identifier , tabel display ,

dan tabel block

Page 57: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 57/110

Semantics Ana" ser Pengecekan yang dilakukan dapat berupa.

/emeriksa penggunaan nama-nama %keberlakuannya'

Dup#ikasi pakah sebuah nama terjadi pende#inisian lebih dari dua kali) Pengecekan dilakukanpada bagian pengelolaan block

Terde)inisi pakah nama yang dipakai pada program sudah terde#inisi atau belum) Pengecekandilakukan pada semua tempat kecuali block

/emeriksa tipe

/elakukan pemeriksaan terhadap kesesuaian tipe dalam statement ! statement

yang ada, /isalnya bila terdapat suatu operasi, diperiksa tipe operand nya

Page 58: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 58/110

Semantics Ana" ser ontohn@a;

e$presi yang mengikut I berarti tipenya boolean, akan diperiksa tipe

identifier dan tipe ekspresinya

"ila ada operasi antara dua operand maka tipe operand pertama harus

bisa dioperasikan dengan operand yang kedua

Ana#isa $emanti sering juga digabungkan dengan intermediate code yang

akan menghasilkan output intermediate code )

#ntermediate code ini nantinya akan digunakan pada proses kompilasi

berikutnya %pada bagian back end compilation '

Page 59: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 59/110

%ntermediate Code/emperkecil usaha dalam membuat compilator dari sejumlah bahasa ke

sejumlah mesinCebih $achine #ndependent , hasil dari intermediate code dapat digunakan

lagi pada mesin lainnya

Proses Gptimasi lebih mudah) Cebih mudah dilakukan pada intermediate

code dari pada program sumber %source program' atau pada kodeassembly dan kode mesin

Entermediate code ini lebih mudah dipahami dari pada kode assembly atau

kode mesin

Kerugiannya adalah melakukan 0 kali transisi, maka dibutuhkan aktu yang

relati# lama

Page 60: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 60/110

%ntermediate Code

da dua macam intermediate code yaitu Notasi ost%i. dan N-T$pl"

Notasi PO$T I

:Gperand; :Gperand; : Gperator;

/isalnya . % a ?b ' @ % c?d '

maka Notasi post#i$nya

ab? cd? @

*emua instruksi kontrol program yang ada diubah menjadi notasi post#i$, misalnyaI :e$pr; T+EN :stmt!; E%$E :stmt0;

Page 61: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 61/110

P#STF%.

iubah ke post#i$ menjadi B

:e$pr; :label!; B! :stmt!; :label0; B : stmt0;

"S . "ranch i# Jero %salah'"2. melompat tanpa harus ada kondisi yang ditest

ontoh . I a ; b T+EN c . d E%$E c . e

Page 62: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 62/110

P#STF%.

ontoh . I a ; b T+EN c . d E%$E c . e

alam bentuk Post#i$!! a !9

!0 b 0& 05! ; 0! "2!4 00 00 c!5 "S 0 e!6 c 04 .

!M d 05!L .

bila e$presi %a;b' salah, maa loncat ke instruksi 00, "ila e$presi %a;b'benar tidak ada loncatan, instruksi berlanjut ke !6-!L lalu loncat ke 05

P#STF%

Page 63: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 63/110

P#STF%.ontoh.

C+I%E :e$pr; DO :stmt;

iubah ke post#i$ menjadi B :e$pr; :label!; B! :stmt; :label0; B

Enstruksi . a. !I1EC= a : 5 G a . a ? !

alam bentuk Post#i$!& a !L a!! ! !9 a!0 . 0& !! a 0! ?!4 5 00 .!5 : 0 !!6 05 04 "2!M "S 05

T %P&'S N#TAT%#N

Page 64: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 64/110

T %P&'S N#TAT%#NNotasi pada triple dengan #ormat

.operator/ .operand/ .operand/

ontoh.

. @ ? " 8 =

ika dibuat intermidiate code triple.

!) @ , ,

0) 8, ", =

) ?, %!', %0'

4) . , , % '

Perlu diperhatikan presedensi %hirarki' dari operator, operator perkaliandan pembagian mendapatkan prioritas lebih dahulu dari oadapenjumlahan dan pengurangan

T %P&'S N#TAT%#N

Page 65: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 65/110

T %P&'S N#TAT%#Nontoh lain.

I U ; V T+EN

U . a - bE%$E

U . a ? b

Entermidiate code triple.

!) ;, U, V0) "S, %!', %6' bila kondisi ! loncat ke lokasi 6

) -, a, b

4) . , U, % '

5) "2, , %L'

6) ?, a, b

M) . , U, %6'

T %P&'S N#TAT%#N

Page 66: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 66/110

T %P&'S N#TAT%#NKelemahan dari notasi t!ipl" adalah sulit pada saat melakukan

optimasi, maka dikembangkan Indi!"+t t!ipl"s yang memiliki

dua listB list instruksi dan list eksekusi) Cist Enstruksi berisikan

notasi triple, sedangkan list eksekusi mengatur eksekusinyaB

contohA : B ' 4 D E

: 4 D

List Inst!$#si List E#s"#$si

!) @, , !) !0) 8, %!', = 0) 0

) ?, ", %0' ) 4) . , , % ' 4) 45) . , +, %!' 5) !

6) 5

Page 67: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 67/110

/uardrup"es Notation+ormat dari 3uardruples adalah

.operator/ .operand/ .operand/ .resu#t/

2esult atau hasil adalah temporary variable yang dapat ditempatkan pada memory

atau register ) Problemnya adalah bagaimana mengelola temporary (ariable

seminimal mungkin

ontoh .

. @ ? " 8 =

ika dibuat intermidiate codenya .!) @ , , , T!

0) 8 , ", =, T0

) ?, T!, T0,

Page 68: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 68/110

/uardrup"es Notation1asil dari tahapan anlisis diterima oleh code

generator %pembangkit kode'Entermediate code ditans#romasikan kedalam

bahasa assembly atau mesin

/isalnya

<A'B=4< 'D= dan diterjemahkan kedalam

bentuk 3uadruple.!) ?, , ", T!0) ? , , , T0

) @, T!, T0, Tapat ditranslasikan kedalam bahasa assembly

dengan accumulator tunggal.

C d 0 t

Page 69: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 69/110

Code 0enerator C % isi ke dalam accumulator'

" %isi accumulator dijumlahan dengan "'*TG T! % *impan isi ccumulator ke T!'

C

*TG T0C T!/ C T0*TG T

hasil dari code generator akan diterima oleh code optimation , /isalnyauntuk kode assembly diatas dioptimasikan menjadi.

C "*TG T!

C / C T!*TG T0

Page 70: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 70/110

Per1a"anan sebuah intruksi

$our e

Pro*ram ' Ana#isis

%eksika#Ana#isis

$intaksis

ode Generator dan Ana#isis

sematiks

Ta8e#

$im8o#

Token(token

Id1: Id2'Id1

%DA AADD $TO

.assi*n/

Id1 : .E?pr/

Id2 ' Id1

' 2 d"i

Page 71: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 71/110

'rror 2and"ing

Kesalahan Program

Penanganan Kesalahan

2eaksi ompiler Pada kesalahan

=rror 2eco(ery

=rror repair

K " h P g

Page 72: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 72/110

Kesa"ahan Program

Kesalahan Program dapat

berupa

Kesalahan #eksika#Kesalahan $intaks

Kesalahan *emantics

' 2 d"i g K " h

Page 73: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 73/110

'rror 2and"ing - Kesa"ahanProgramesa#ahan Pro*ram dapat 8erupa

Kesalahan #eksika#Kesalahan dalam mengetik8mengeja

/isal T+EN dituliskan dengan TEN atau T+N

Kesalahan $intaksmisalnya dalam operasi aritmatika dengan tanda kurung yang

jumlahnya kurang, contoh

. U ? %" @ % ? '

Kesalahan *emantics

'rror 2and"ing Kesa"ahan

Page 74: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 74/110

'rror 2and"ing - Kesa"ahanProgram

Kesalahan $emanti s

%ipe data yang salahontoh . int cB

c !)5 @ &)ML

&ariable belum didefinisikan/isal . " . " ? !tetapi b belum dide#inisikan

'rror 2and"ing Penanganan

Page 75: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 75/110

'rror 2and"ing - PenangananKesa"ahanCangkah-langkah.

/endeteksi kesalahan

/elaporkan kesalahan

Tindak lanjut perbaikan

'rror 2and"ing Penanganan

Page 76: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 76/110

'rror 2and"ing - PenangananKesa"ahan

/isal. compiler menemukan kesalahan, yang bisa meliputi

"ode kesalahan

esan "esalahan dalam bahasa alami

Nama dan atribut identifier contoh . error !60 umlah. nkno identi#ier

apat diartikan. Kode kesalahan !60, pesan kesalahan

unkno'n identifier , nama identifier jumlah

Page 77: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 77/110

'rror 2and"ing - eaksi

terhadap Kesa"ahanAda Be8erapa reaksi @an* di#akukan o#eh ompi#er

*"a#si-!"a#si yan) tida# dapat dit"!ima

*"a#si yan) /"na!0 tapi #$!an) dapat dit"!ima dan #$!an)

/"!man%aat

'rror 2and"ing eaksi

Page 78: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 78/110

rror 2and ing - eaksiterhadap Kesa"ahan

da "eberapa reaksi yang dilakukan oleh compiler

*"a#si-!"a#si yan) tida# dapat dit"!ima

(ompilator crash . "erhenti atau hang

)ooping : compilator tidak bisa berhenti %in#inite8onbounded loop'

/enghasilkan Gbyek program yang salah . berbahaya, bisa

diketahui8muncul setelah program dieksekusi

'rror 2and"ing eaksi

Page 79: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 79/110

rror 2and ing - eaksiterhadap Kesa"ahan

da "eberapa reaksi yang dilakukan oleh compiler

*"a#si yan) /"na!0 tapi #$!an) dapat dit"!ima dan #$!an)

/"!man%aat

ompilator menemukan kesalahan pertama, melaporkannya, lalu berhenti

%halt'

Pemrogram membuang aktu untuk melakukan pengulangan compilasi

untuk setiap kali terdapat sebuah error

'rror 2and"ing - eaksi

Page 80: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 80/110

rror 2and ing - eaksiterhadap Kesa"ahan

eaksi(reaksi @an* dapat diterima

2eaksi yang sudah dapat dilakukan B (ompilator melaporkan =rror

2eco(ery . Pemulihan

2epair . Perbaikan

2eaksi yang belum dapat dilakukan

ompiler mengkoreksi kesalahan

/enghasilkan obyek program sesuai yang diinginkan pemrogram

ompiler memiliki kemampuan untuk mengetahuiO maksud dari pemrogram"elum diimplementasikan pada program %sekarang ini'

'rror 2and"ing 'rror

Page 81: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 81/110

rror 2and ing - rroreco er

"ertujuan mengembalikan parser ke kondisi stabil agar supaya dapat

melanjutkan proses parsing ke posisi selanjutnya)

M"#anism" Ad Ho+

2eco(ery yang dilakukan tergantung dari si pembuat compiler

Tidak terikat pada suatu aturan tertentuisebut juga dengan istilah purpose error recovery

1ynta. di!"+t"d *"+o,"!y misal begin

. ? ! B" . " ? !B

. ? ! end B

'rror 2and"ing 'rror

Page 82: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 82/110

rror 2and ing - rroreco er

Pada contoh diatas, compiler akan mengenali sebagai %dalam Notasi "N+'begin *statement+ 2 0 statement+ , *statement+ end,

- Akan diperlakukan sebagai . 3

$e ond Error e oFer@ . untuk melokalisir kesalahanani+ Mod"

/aju terus sampai ketemu delimiter ontoh . E+ ! Kondisi . trueB

Pada kondisi diatas T+EN tidak ada, compiler melanjutkan sampai ketemu delimiter%B'

Unit D"l"tion/enghapus keseluruhan suatu unit sintaksik %misalnya . :block;, :e$p;,:statement; dan sebagainya/empermudah untuk melakukan error repairing

'rror 2and"ing 'rror

Page 83: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 83/110

rror 2and ing - rroreco er

onte?t $ensitiFe e oFer@

"erkaitan dengan semantics

contoh . " . "udi CuhurO

Pada a al program (ariabel " belum dideklarasikan, makaberdasarkan permunculannya maka diasumsikan (ariabel "

bertipe string

'rror 2and"ing 'rror repair

Page 84: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 84/110

rror 2and ing - rror repair

/emperbaiki kesalahan dan membuat source program

(alid %memodi#ikasi'

/ekanisme d 1oc

Tergantung pada sipembuat compiler

*ynta$ directed 2epair

/enyisipkan 8 membuang simbol terminal yang

dianggap hilang atau yang menyebabkan error

contoh C+I%E : ! E . E !B

compiler akan menyisipkan DO

'rror 2and"ing - 'rror repair

Page 85: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 85/110

rror 2and ing - rror repair

ontoh lainProcedure Encrement B

begin $ . U ? ! endB endB

Kelebihan simbol end , yang menyebabkan

kesalahan, maka compiler akan membuangnya

'rror 2and"ing - 'rror repair

Page 86: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 86/110

rror 2and ing - rror repair onte?t $ensitiFe epair

Tipe identi#ier. membuat identifier dummy (ar . *tringbegin . &Bend

maka compilator akan memperbaiki kesalahan dengan membuat identifier baru ,misalnya " bertipe integer

*pelling 2epair. memperbaiki kesalahan pengetikan pada identi#ier, misalnya. C+I%%E ! Gidenti#ier yang salah tersebut diperbaiki menjadi C+I%E

Teknik #ptimasi

Page 87: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 87/110

Teknik #ptimasi

Dependensi Optimasi

Optimasi %oka#

Optimasi G#o8a#

D"p"nd"nsi 4ptimasi bertujuan untuk menghasilkan kode program yang berukuran lebih kecil dan lebih cepat

/achine ependent GptimiJer

/achine Endependent GptimiJer %Gptimasi lokal dan Gptimasi global'

Teknik #ptimasi +

Page 88: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 88/110

Teknik #ptimasi +#ptimasi &oka"Optimasi %oka# : ada#ah optimasi @an* di#akukan han@a pada suatu 8#ok dari

sour e ode, den*an ara:

Foldin) men*anti konstata atau ekpresi @an* 8isa dieFa#uasi pada saat +ompil" tim" den*an

ni#ai komputasin@a5 Misa#n@a:A : 2 ' 3 ' B 8isa di*anti den*an A: ' B

dapat men*antikan ekspresi 2 ' 3

*"d$ndant-1$/".p!"ssion Eliminationhasi#n@a di*unakan #a*i dari pada di#akukan omputasi u#an*, ontoh:A: B '

: ' B '

Teknik #ptimasi +

Page 89: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 89/110

Teknik #ptimasi +#ptimasi &oka"

Optimasi da#am se8uah Iterasi

Loop Un!!ollin) :Men*anti suatu loop den*an menu#is statement

@an* ada da#am #oop ditu#is 8e8erapa ka#i

arena se8uah iterasi pada imp#emnetasi ke #eFe# rendah,

memer#ukan :Inisia#isasi ni#ai a9a#, pada #oop di#akukan seka#i pada saat permu#aan

eksekusi #oop

Pen*e(test(an, apakah Faria8e# #oop te#ah men apai kondisi terminasi

Ad7ustment @aitu: penam8ahan atau pen*uran*an ni#ai pada Faria8e#

#oop den*an 7um#ah tertentu

Operasi @an* ter7adi pada tu8uh peru#an*an <#oop 8od@=

Teknik #ptimasi + #ptimasi

Page 90: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 90/110

ontoh .O I : 1 to 2 DO

AHI : J;

dapat dioptimasikan menjadiAH1 : J;AH2 : J;

+re3uency 2eduction. Pemindahan statement ke tempat yang lebih jarang dieksekusi, contoh

+G2 E. ! to !& G :

"=DEN +G2 E. ! to !& G : "=DEN . ? ! . ? !=N . =N .

Teknik #ptimasi + #ptimasi&oka"

Teknik #ptimasi +

Page 91: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 91/110

Teknik #ptimasi +#ptimasi &oka"

*trength 2eduction

Penggantian suatu operasi dengan operasi lain yang lebih cepat

dieksekusi

misalnya. pada komputer operasi perkalian memerlukan aktu eksekusi

lebih banyak dari pada operasi penjumlahancontoh lain

. ? !

dapat digantikan dengan

EN % '

Teknik #ptimasi + #ptimasi

Page 92: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 92/110

Teknik #ptimasi #ptimasi0&oba"Optimasi *#o8a# 8iasan@a di#akukan den*an suatu *raph terarah

@an* menun7ukkan 7a#ur @an* mun*kin se#ama eksekusi

pro*ram

ada dua ke*unaan @aitu 8a*i pro*rammer dan ompi#er itu sendiri

Ba*i Pro*rammer Un!"a+5a/l"6d"ad +od" : ode @an* tidak pernah dieksekusi

misa#n@a : : ;

I J T+ENA : A ' 1

InstruksiA : A ' 1 tidak pernah diker7akan

Teknik #ptimasi + #ptimasi

Page 93: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 93/110

Teknik #ptimasi #ptimasi0&oba"Un$s"d pa!am"t"! . parameter yang tidak pernah

digunakan dalam procedure/isalnya .

procedure penjumlahan%a,b,c B Enteger'B

(ar $ . integerBbegin

$ . a ? bBend

Parameter tidak pernah digunakan sehingga tidak perludiikut sertakan

Teknik #ptimasi + #ptimasi

Page 94: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 94/110

Teknik #ptimasi #ptimasi0&oba"

Uns$s"d 7a!ia/"l : (ariabel yang yang tidakpernah dipergunakan

Program pendekB(ar a, b. integer begin

a . 5B

endB

" tidak pernah digunakan

T k ik # ti i + # ti i

Page 95: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 95/110

Teknik #ptimasi + #ptimasi0&oba"7a!ia/"l : (ariabel yang dipakai tanpa nilai a al) ontoh

Program alB(ar a, b. integer begin

a . 5 a . a ? bBendB(ariabel b digunakan tetapi tidak memiliki harga a al

Ba)i Compil"! /eningkatkan e#isiensi eksekusi program/enghilangkan useless code8kode yang tidak terpakai

( " E U V i t B

Page 96: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 96/110

(ar , ", , , =, E, , U, V . integerBbegin

" . 5B . !& - " 8 4 @ ? 0B . ? "B V . !&B . ? " 7 =B

#or E . ! to L5 dobegin

U . U ? !B" . " 7 UBV . MB

endIhile V: 5 do

= . = 7 "Bend

Tabe" %n ormasi

Page 97: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 97/110

Tabe %n,ormasiua #ungsi penting Tabel En#ormasi

ntuk membantu pemeriksaan kebenaran semantik

dari program sumber

ntuk membantu dan mempermudah dalam

pembuatan intermediate code dan proses pembuatan

kode-kode %pembangkitan kode'

T b " % i

Page 98: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 98/110

Tabe" %n,ormasi

*ecara umum, sebuah tabel simbol bisa memilikielemen-elemen tabel sebagai berikut, meskipun

tidak semuanya dipergunakan oleh semua

compiler

No)urut identi#ier. menentukan nomor urut pada

tabel simbol

Nama identi#ier

Tabe" %n,ormasi - Kegunaan

Page 99: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 99/110

, g

Tipe identi#ier Gbject time address

imensi dari identi#ier yang

bersangkutan

Nomor baris (ariabel yang

dideklarasikan

Nomor baris (ariabel yang

dire#erensikan

+ield link

Tabe" %n,ormasi -

Page 100: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 100/110

Tabe %n,ormasi %mp"ementasi

da beberapa jenis Tabel En#ormasi

Ta/"l id"nti%i"! B ber#ungsi menampung semua identi#ier yang terdapat dalam

program

Ta/"l A!!ay: ber#ungsi menampung in#ormasi tambahan untuk sebuah array

Ta/"l /lo# . mencatat (aribel-(ariabel yang ada pada blok yang sama

Ta/"l *"al . /enyimpan elemen tabel bernilai real

Ta/"l st!in) . menyimpan in#ormasi string

Ta/"l display . mencatat blok yang akti#

Page 101: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 101/110

Tabe" %n,ormasi - %denti3er

%abel #dentifier memilikiBNo rut identi#ier dalam tabel

Nama Edenti#ier

enis dari identi#ierB seperti Prosedur, #ungsi, tipe (ariabel dan konstanta

Tipe dari identi#ier yang bersangkutanB seperti Enteger %bilangan bulat', har,

boolean , array, record, #ile

le(el dari identi#ier %depth o# block'B hal ini menyangkut letak identi#ier dalamprogram, konsepnya sama dengan pembentukan tree , misalnya main program

le(el &

Tabe" %n,ormasi - %denti3er

Page 102: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 102/110

,

ntuk identi)ier , pencatatan dapat berupa sepertiB lamat relatif/address dari identi#ier untuk implementasi

En#ormasi re#erensi dari identi#ier terntentu ke alamat tabel identi#ier yang

lainnya

link, menghubung antar identi#ier Normal. digunakan pada pemanggilan parameter, untuk membedakan

parameter by (alue dan by re#erence

ontoh %dalam pascal'

T b "

Page 103: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 103/110

Tabe"%n,ormasi -%denti3er

Program Bar " . EntegerB

Procedure U %S. char'

(ar . Enteger begin ))))dst

Tabel identi#ier akan mencatat semua identi#ierB

& ! "0 U

S

4

T b "TabEd. rray W&))tabma$X o# record

Page 104: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 104/110

Tabe"

%n,ormasi -contoh

TabEd. rray W&))tabma$X o# recordnama . *tringBlink . integerBGbj . objectB

Tipe . TypesB re# . EntegerB normal . "ooleanB Ce(el . &)) /a$le(elB address . EntegerB=nd

Dimanaobjek %konstant, (ariabel, prosedur, #ungsi'Types %notipe, int, reals, booleans, chars, arrays, record

Tabe" %n ormasi -

Page 105: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 105/110

Tabe %n,ormasi - Arra Ta/"l A!!ay

dipergunakan untuk menyimpan in#ormasi suatu identi#ier yang bertipe array,tabel ini memilik #ield.

No) rut suatu array dalam tabel

Tipe dari indeks array yang bersangkutan

Tipe element array2e#erensi dari elemen array

Ende$ batas atas dan ba ah array

umlah elemen array

kuran total array %total atas - ba ah ? !' $ elemen siJe=lemen siJe

Tabe" %n ormasi

Page 106: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 106/110

Tabe %n,ormasi -B"ock Ta/"l Blo#

ipergunakan untuk menyimpan in#ormasi blok-

blok yang ada pada tabel utama) "erisikan

#ield

no urut blok

batas a al blok

batas akhir blok

ukuran parameter8parameter siJe

ukuran (ariabel8 (ariabel siJe

last (ariabel

last parameter

T b " % i B" k

Page 107: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 107/110

Tabe" %n,ormasi - B"ock Conto5

Program ar " . EntegerB

Procedure U %S.char'B ar . EntegerB begin

))))&ntuk B#ok A B#ok B

last (ariable 0 4

ariable siJe 0 %dianggap int 0 byte' 0

Cast parameter & %tanpa parameter'parameter siJe & ! %char butuh

! byte'

Tabe" %n,ormasi -

Page 108: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 108/110

,%mp"ementasiTa/"l *"al

ipergunakan untuk menyimpan nilai dari suatu identi#ier yang bertipe real

%pecahan') =lemen-elemen dari tabel ini adalah sebagai berikutB

NG urut elemen

Nilai real suatu (ariabel real yang mengacu ke indeks tabel ini

Pemikirannya disini setiap tipe yang memiliki oleh suatu bahasa akanmemiliki tabelnya sendiri

Tabe" %n,ormasi -

Page 109: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 109/110

,%mp"ementasiTa/"l 1t!in)

ipergunakan untuk menyimpan in#ormasi string yang terdapat pada

program sumber) =lemen-elemen yang terdapat dalam tabel ini adalah.

no rut elemen

Karakter-karakter yang merupakan konstanta

Tabe" %n,ormasi -

Page 110: Materi Kuliah Teknik Kompilas

8/17/2019 Materi Kuliah Teknik Kompilas

http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 110/110

,%mp"ementasiTa/"l Display menyimpan in#ormasi-in#ormasi mengenai blok-blok yang lagi akti#)

=lemen-elemen yang terdapat dalam tabel ini adalah.

No rut tabel

"lok yang akti#

Pengisian tabel display dilakukan dengan konsep stack