Skom
+ahasa Pemrograman
Pembuatan Compiler
Hirarki Comsky
Aturan Produksi
Diagram state
otasi +2
Diagram Synta3
1ualitas Compiler
+eberapa translator
Struktur Compiler
4e3ical Analysis
Analysis Synta3
Analysis Semantics
(rror Handling
5ptimation
%abel informasi
Teknik 0
6 Metode atau Cara
Kompilasi 0
6 Proses mengabungkan serta menter7ermahkan
sesuatu 8source program9 men7adi bentuk lain
Compile 0
6 %o translate a program written in a high:le;el
programming language into machine
language.
Translator 0
@sability
(fektiCtas pemrograman
Compilability 8mengurangi
kompleksitas,mis0penggunaan
bracket9
Machine independent
Simplicity 0penyederhanaan
komponen bahasa program
5rthogonality 0 kumpulan
primiti;e yang dikombinasikan
dengan berbagai cara dalam
membangun kontrol dan struktur
data dalam bahasa program
Metode pengurutan e;aluasi dalam
ekspresi 0
(3plicit +racketing
5perator binding
+inding adalah asosiasi antara atribut
dan entity atau antara operasi dan
simbol.
+inding time adalah waktu yang
dialokasikan untuk menyatukan
;ariable dengan nilainya.
(mpat aspek dalam struktur
data
Deklarasi data
Alokasi storage
4ingkup ;ariabel
2ormat free
langsung ditampilkan sehingga
mudah bagi user untuk memeriksa
kebenaran program. Contoh pada
F+.
2ormatted
output ditampilkan secara terformat,
seperti di C 0 printf89, delphi=F+ 0
format89
Anda akan menciptakan sebuah
bahasa program, coba sebutkan
urutan proses yang harus
ditentukan/skenario yang dijalani
untuk menghasilkan bahasa
pemrograman impian Anda tersebut
!
!. %entukan apa yang diinginkan.
.. %entukan feature yang mungkin
?. %entukan desain dan sesuaikan dengan
featurenya
G. %entukan rincian, parsing, dan error checking.
H. %uliskan user manual dan help.
#. (;aluasilah, 7ika salah mulai lagi dari langkah ?.
'. ,ika sudah benar, optimisasilah dan u7i segala
kemungkinan.
>. Cobakan kepada pengguna, tunggu reaksinya.
". Perbaiki bug dan mulai ;ersi baru.
%ASS1A2. +ahasa %ASS1A2 ini merupakan subset dari ,a;a. Dapat disusun
suatu program ke byte code yang dapat di7alankan di ,a;a Firtual Machine
8,FM9.
Pada site tersebut 7uga tersedia informasi materi kuliah dengan 4(I, JACC
&ttp:''r(-)cs)uni.sb)de'/martin'CO%!'TK'
Tipe 2 = Conte3t sensiti;e0 Pan7ang string ruas kiri harus lebih kecil
atau sama dengan ruas kanan
Ab De2
CD e2
Tipe 3 = Conte3t free grammar0 )uas kiri haruslah tepat satu simbol
;ariable
+ CDe2g
D +cDe
Kop!L P N : N Q
Kop.L 9 N < N =
KdigitL /N!NO.N"
+egin
A 0Q !S
+ 0Q A P .
(D
Algoritma compiler
Mentransformasikan ke token:token
Menangani kesalahan
Conto" 12
ada urutan karakter yang disebut dengan statement
.a"ren"eit 23 32 , celcius 4 1.50
Ma)a a)an diter6ema")an )edalam to)en-to)en seperti diba7a" ini
identi.ier .ahrenheit
operator 9!
integer &)
operator penjumlahan C
Identi.ier celcius
operator perkalian D
real E .loat ".*
Leical Anal!sis " Contoh #
Leical Anal!sis " Contoh #
Misalnya nilai " untuk 2ariabel, ) untuk konstanta, & untuk label
dan ' untuk operator, dst
Contoh instruksi 9
8ondisi &
2 )G
I9 )#
A "
: "5
( "
$/E# )"
C "
* "
1 )(
oken-token ini sebagai inputan untuk syntax Analyser , token-token
ini bisa berbentuk pasangan item. ,imana Item pertama menunjukkan alamat
atau lokasi dari token pada tabel simbol. Item kedua adalah representasi
internal dari token. Semua token direpresentasikan dengan in.ormasi yang
panjangnya tetap ;konstan<, suatu alamat ;address atau pointer< dan sebuah
integer ;bilangan bulat<
Misalnya0 S A+
A aA N a
+ b+ N +
Penurunan untuk menhasilkan string
aabbb
Parsing atau Proses
Parsing atau Proses
Penurunan
Penurunan
:arsing dapat dilakukan dengan cara 9
&aktu (ksekusi
Penanganan 1esalahan
Penanganan 1ode
!arsin1 di1olon1kan men7adi0
Top-Down
Penelusuran dari root ke lea" atau dari simbol awal ke simbol
terminal
metode ini meliputi0
Bottom-Up
Metode ini melakukan penelusuran dari lea" ke root
Meskipun ada rekursif kiri, tetapi tidak diletakkan sebagai aturan yang
paling kiri
4. ( (P% N (:% N %
% %< 2 N % = 2 N 2
2 i
)ekursif kiri, program akan mengalami loop
Brute %orce $ Aturan
Brute %orce $ Aturan
produksi
produksi
$turan :roduksi yang rekursi. memiliki ruas kanan ;hasil produksi< yang
memuat simbol 2ariabel pada ruas kiri
Sebua" produ)si dalam bentu)
$ $ merupakan produksi rekursi. kanan
! berupa kumpulan simbol 2ariabel dan
terminal
contoh9 S d S
% ad %
bentu) produ)si ang re)ursi. )iri
$ $ merupakan produksi rekursi. >iri
contoh9
S S d
% % ad
Produksi yang rekursif kanan akan menyebabkan
penurunan tumbuh kekanan, Sedangkan produksi yang
rekursif kiri akan menyebabkan penurunan tumbuh ke
kiri.
Conto&: Conte3t free *rammar dengan aturan produksi
sebagai berikut0
Dalam +anyak penerapan tata:bahasa, rekursif kiri tidak
diinginkan, @ntuk menghindari penurunan kiri yang looping, perlu
dihilangkan sifat rekursif, dengan langkah:langkah sebagai berikut0
:ergantian dilakukan untuk setiap aturan produksi dengan simbol ruas kiri
yang sama, bisa muncul 2ariabel J", J) dst, sesuai dengan 2ariabel yang
menghasilkan rekurisi. kiri
Conto"2 ata %ahasa ConteHt .ree
S Sab I aSc I dd I .. I Sbd
Metode ini digunakan untuk aturan produksi yang memiliki alternatif yang
sedikit
Parsing dengan Recursive Descent Parser
Dengan cara penurunan secara recursif untuk semua ;ariabel dari awal
sampai ketemu terminal
+eda dengan turing yang selalu ma7u dan mundur dalam melakukan parsing
Memeriksa tipe
Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement -
statement yang ada, Misalnya bila terdapat suatu operasi, diperiksa tipe
operand nya
Conto&n+a6
+ila ada operasi antara dua operand maka tipe operand pertama
harus bisa dioperasikan dengan operand yang kedua
$nalisa Semantic sering 7uga digabungkan dengan intermediate
code yang akan menghasilkan output intermediate code.
9ntermediate code ini nantinya akan digunakan pada proses
kompilasi berikutnya 8pada bagian back end compilation9
Misalnya
@$FBAG@CFDA dan diter7emahkan
kedalam bentuk Yuadruple0
!. P, A, +, %!
.. P , C, D, %.
?. <, %!, %., %?
Dapat ditranslasikan kedalam bahasa
assembly dengan accumulator tunggal0
4DA A 8 isi A ke dalam accumulator9
ADD + 8isi accumulator di7umlahan dengan +9
S%5 %! 8 Simpan isi Accumulator ke %!9
4DA C
ADD D
S%5 %.
4DA %!
M@4 %.
S%5 %?
hasil dari code generator akan diterima oleh code optimation ,
Misalnya untuk kode assembly diatas dioptimasikan men7adi0
4DA A
ADD +
S%5 %!
4DA C
ADD D
M@4 %!
S%5 %.
Per&alanan sebuah intruksi
Per&alanan sebuah intruksi
Source
Program
A 3 B , A
Analisis
!e)si)al
Analisis
Sinta)sis
Code Generator
dan Analisis
semati)s
$abel
Simbol
$o)en-to)en
Id123Id2,Id1
!*A A
A** B
S$O A
=assign:
Id1 23 =E?pr:
Id2 , Id1
1esalahan Program
Penanganan 1esalahan
(rror )eco;ery
(rror repair
1esalahan Program
dapat berupa
1esalahan leksikal
1esalahan Sintaks
1esalahan Semantics
Kesala&an !ro1ram dapat berupa
1esalahan leksikal
1esalahan Sintaks
1esalahan Semantics
1esalahan Semantics
Mendeteksi kesalahan
Melaporkan kesalahan
8ode kesalahan
)eco;ery 0 Pemulihan
)epair 0 Perbaikan
Panic &ode
Pada kondisi diatas THE5 tidak ada, compiler melan7utkan sampai ketemu
delimiter 8S9
Unit Deetion
Mekanisme Ad Hoc
%ergantung pada sipembuat compiler
contoh EHI?E A K !
$ 0Q $ Q !S
Contoh lain
Procedure $ncrement S
begin
3 0Q I P !
endS
endS
Dependensi Optimasi
Optimasi ?okal
Optimasi #lobal
Dependensi ,ptimasi
bertu7uan untuk menghasilkan kode program yang berukuran lebih kecil dan
lebih cepat
Machine Dependent 5ptimiTer
Machine $ndependent 5ptimiTer 85ptimasi lokal dan 5ptimasi global9
Optimasi ?okal : adala& optimasi +an1 dilakukan &an+a pada
suatu blok dari source codeH den1an cara:
-oding
men1anti konstata atau ekpresi +an1 bisa die,aluasi pada saat
compie time den1an nilai komputasin+a) %isaln+a:
$ :7 3 F 4 F B bisa di1anti den1an $:7 I F B
I dapat men1antikan ekspresi 3 F 4
Redundant-)u$expression "imination
&asiln+a di1unakan la1i dari pada dilakukan computasi ulan1H conto&:
$:7 B F C
D :7 J F B F C
Contoh 9
9OR I 23 1 to 2 *O
ACID 23 E1
dapat dioptimasikan menjadi
AC1D 23 E1
AC2D 23 E1
Strength )eduction
6 Penggantian suatu operasi dengan operasi lain yang lebih cepat
dieksekusi
6 misalnya0 pada komputer operasi perkalian memerlukan waktu
eksekusi lebih banyak dari pada operasi pen7umlahan
6 contoh lain
A0Q A P !
6 dapat digantikan dengan
$C8A9
Optimasi 1lobal biasan+a dilakukan den1an suatu 1rap& terara&
+an1 menunjukkan jalur +an1 mun1kin selama eksekusi pro1ram
ada dua ke1unaan +aitu ba1i pro1rammer dan compiler itu sendiri
Ba1i !ro1rammer
6 Unreac.a$e/dead code: Kode +an1 tidak perna& dieksekusi
6 misaln+a :
D :7 I6
IC D 7 K THE5
$ :7 $ F 2
Instruksi
$ :7 $ F 2 tidak perna& dikerjakan
6 Unused parameter 0 parameter yang tidak pernah
digunakan dalam procedure
Misalnya 0
procedure pen7umlahan8a,b,c S $nteger9S
;ar 3 0 integerS
begin
3 0Q a P bS
end
Parameter c tidak pernah digunakan sehingga
tidak perlu diikut sertakan
Bagi 2ompier
6 Meningkatkan eCsiensi eksekusi program
6 Menghilangkan useless code=kode yang tidak terpakai
;ar A, +, C, D, (, $, ,, I, J 0 integerS
begin
+ 0Q HS
A 0Q !/ : + = G < ? P .S
C 0Q A P +S
J 0Q !/S
D 0Q A P + M (S
for $ 0Q ! to >H do
begin
I 0Q I P !S
+ 0Q + M IS
J 0Q 'S
end
&hile JK H do
( 0Q ( M +S
end
Dua fungsi penting %abel $nformasi
ama identiCer
%ipe identiCer
2ield link
Ada beberapa 7enis %abel $nformasi
Ta$e $ok0 mencatat ;aribel:;ariabel yang ada pada blok yang sama
ama $dentiCer
,enis dari identiCerS seperti Prosedur, fungsi, tipe ;ariabel dan konstanta
le;el dari identiCer 8depth of block9S hal ini menyangkut letak identiCer
dalam program, konsepnya sama dengan pembentukan tree, misalnya
main program le;el /
@ntuk identi0er, pencatatan dapat berupa sepertiS
(lemen siTe
Ta$e Bok
Dipergunakan untuk menyimpan informasi
blok:blok yang ada pada tabel utama.
+erisikan Celd
no urut blok
last ;ariabel
last parameter
Tabel In%ormasi " Block
Tabel In%ormasi " Block
Contoh
:rogram $
Kar % 9 IntegerF
:rocedure L ;J9char<F
Kar C 9 IntegerF
begin
....
+ntu) (lo) A (lo) (
last 2ariable ! ) '
Kariable si4e ! ) ;dianggap int ) byte< )
0ast parameter ! # ;tanpa parameter< &
parameter si4e ! # " ;char butuh
" byte<
Ta$e Rea Ta$e Rea
Dipergunakan untuk menyimpan nilai dari suatu identiCer yang
bertipe real 8pecahan9. (lemen:elemen dari tabel ini adalah
sebagai berikutS
5 urut elemen
ilai real suatu ;ariabel real yang mengacu ke indeks tabel ini
Pemikirannya disini setiap tipe yang memiliki oleh suatu bahasa
akan memiliki tabelnya sendiri
Ta$e )tring
Dipergunakan untuk menyimpan informasi string yang terdapat
pada program sumber. (lemen:elemen yang terdapat dalam
tabel ini adalah0
6
no @rut elemen
6
1arakter:karakter yang merupakan konstanta
Ta$e Dispa#
menyimpan informasi:informasi mengenai blok:blok yang lagi
aktif. (lemen:elemen yang terdapat dalam tabel ini adalah0
6
o @rut tabel
6
+lok yang aktif
Pengisian tabel display dilakukan dengan konsep stack