Download - Materi Kuliah Teknik Kompilas
8/17/2019 Materi Kuliah Teknik Kompilas
http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 1/110
TEKNIK KOMPILASI
8/17/2019 Materi Kuliah Teknik Kompilas
http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 2/110
KONSEPdan NOTASI
BAHASA
8/17/2019 Materi Kuliah Teknik Kompilas
http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 3/110
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
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
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 .
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 .
8/17/2019 Materi Kuliah Teknik Kompilas
http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 8/110
Conto lain : FSA
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
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
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
→
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
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
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
8/17/2019 Materi Kuliah Teknik Kompilas
http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 15/110
Contoh
"egin . !B" . ? 0
=N
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
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
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
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
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
;
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'
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
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
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'
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
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
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.
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'
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
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
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/
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
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
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
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
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
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
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
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
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'
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
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
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.
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
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
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
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&'
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
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
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)
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--.
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-
8/17/2019 Materi Kuliah Teknik Kompilas
http://slidepdf.com/reader/full/materi-kuliah-teknik-kompilas 53/110
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
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
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
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
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 '
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
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;
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
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%
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
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
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
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
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 +
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 +
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
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 +
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
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
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
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
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
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
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
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
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 -
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#
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
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 "
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
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 -
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
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
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 -
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 -
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 -
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