TEKNIK KOMPILASI
(Tahap Intermediate Code Generator)
WIDY ASTUTI
14-650-033
NOVIANTI RUSMADI
14-650-022
IRVAN S.K
14-650-031
KELAS : A
KATA PENGANTAR
Syukur alhamdulillah, segala puja dan puji hanya milik allah. Syukur
alhamdulillah atas rahmat dan hidayahnya sehingga kami dapat menyelesaikan
makalah ini dengan tema TEKNIK KOMPILASI semoga allah melimpahkan
solawat serta salam kepada nabi muhammad saw seluruh keluarga dan para
sahabat amin.
Makalah ini banyak kekurangan dan ke tidak sempurnaan baik dari segi
pembahasan, bahasa, maupun literatur yang di gunakan. Oleh karena itu besar
harapan kami mendapatkan kritikan dan masukan yang sifatnya membangun
sehingga kami dapat memperbaiki semua kekurangan pada pembuatan makalah
berikutnya, akhir kata dari kami sangat berharap makalah ini dapat menjadi
sumbangan kecil yang dapat meperkaya wawasan para pembaca amin..
DAFTAR ISI
HALAMAN JUDUL...............................................................................
KATA PENGANTAR ............................................................................
DAFTAR ISI...........................................................................................
2.
3.
BAB 1
PENDAHULUAN
A. Latar Belakang
Teknik Kompilasi merupakan teknik untuk melakukan pembacaan suatu
source program yang ditulis dalam bahasa sumber, misalnya Pascal, kemudian
diterjemahkan ke dalam suatu bahasa lain yang disebut bahasa sasaran atau
bentuk yang dapat dieksekusi secara langsung dari sistem operasi yang tersedia
dalam suatu komputer. Teknik tersebut diimplementasikan dalam suatu perangkat
lunak (software) yang disebut Compiler.
Istilah Compiler muncul karena dulu ada program yang menggunakan
subrutin-subrutin atau pustaka-pustaka untuk keperluan yang sangat khusus yang
dikumpulkan menjadi satu sehingga diistilahkan compiled.
Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN
yang pada saat itu dikembangkan dengan memakan sejumlah tenaga ahli yang
setara dengan pekerjaan yang dilakukan oleh 18 orang. Dengan adanya program
bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta
pendefinisian struktur bahasa yang cermat, maka suatu kompilator untuk bahasa
yang terstruktur seperti PASCAL atau C dapat dikembangkan.
Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2
bagian utama yaitu bagian analisis dan bagian sintesis.
B. Tujuan Penulisan
Tujuan dalam penulisan makalah ini adalah untuk mengetahui tentang
tahap Intermidate Code Generator.
C. Rumusan Masalah
1. Sejarah singkat teknik kompilasi
2. Pengertian teknik kompilasi
3. Intermediate Code Generator
BAB 11
PEMBAHASAN
A. Sejarah Kompilasi
Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu
pada saat mulai ditemukannya komputer pada awal 1950-an. Sejak waktu
tersebut teknik dan cara pembentukan suatu kompilator telah berkembang dengan
sangat pesat dan pembentukkan suatu kompilator dapat dilakukan makin mudah.
Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah
dapat diperoleh sehingga pembentukan suatu kompilator dapat dilakukan dengan
cepat.
Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN
yang pada saat itu dikembangkan dengan memakan sejumlah tenaga ahli yang
setara dengan pekerjaan yang dilakukan oleh 18 orang. Dengan adanya program
bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta
pendefinisian struktur bahasa yang cermat, maka suatu kompilator untuk bahasa
yang terstruktur seperti PASCAL atau C dapat dikembangkan.
Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2
bagian utama yaitu bagian analisis dan bagian sintesis. Tahap analisis program
yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam beberapa bagian
yang kemudian akan dipresentasikan ke dalam suatu bentuk antara dari program
sumber.
Operasi-operasi yang dilakukan oleh program sumber ditentukan dan dicatat
dalam suatu struktur pohon (tree) yang disebut dengan nama pohon sintaks (sintax
tree) Dalam hal ini setiap nodal pada tree tersebut menyatakan suatu operasi,
sedangkan anak dari nodal (titik) tersebut memberikan argumen yang diperlukan
yang
dilakukan
oleh
kompilator
ini
disebut
proseskompilasi (compiling).
Bila
dipandang
sepintas
lalu,
maka
akan
timbul
beranekaragam
2.
ditentukan dalam bahasa sumber. Sederetan token yang tidak mengikuti aturan
sintaks akan dilaporkan sebagai kesalahan sintaks (sintax error). Secara logika
deretan token yang bersesuaian dengan sintaks tertentu akan dinyatakan sebagai
pohon parsing (parse tree).
b.
c.
d.
dari
tahap
sintesis
yaitu
intermediate
code
generator,yaitu
dari
intermediate
code
generator
tergantung
bagaimana
Contoh 1:
Diketahui :
1. kalimat x : 9 5 + 2
2. grammar Q = {E . E + T.E T.T, T . 0.1.3..9}
3. syntax-directed definition :
Produksi Aturan Semantik
E . E 1 + T E := E 1 .t T.t +
E . E 1 T E := E 1 .t T.t -
E . T E := T.t
E . 0 E := 0
E . 1 E := 1
E . 9 E := 9
catatan :
1. Lambang menyatakan concatenation.
2. Mengingat catatan 1, aturan semantik kedua produksi pertama adalah
concate dua operan diikuti sebuah operator.
Langkah-langkah translasi
1. Pembentukan parse tree
2. Pembentukan annonated parse tree :
E E = 95-2+
E + T E.t = 95- + T.t = 2
E T 2 E.t = 9 T.t = 5 2
T 5 T.t = 9 5
99
Translation Scheme
Translation scheme adalah grammar context free dimana sebuah frase
yang disebut semantic actions disertakan di sisi kanan setiap produksinya.
Semantic actions ini adalah sebuah nilai sebagai hasil evaluasi atribut pada sebuah
node. Dalam translation schemes, frase yang menyatakan action diapit dengan
T
E . 9 {print(9)} T
5{print(5)}
9 print(9)}
+ {print(+)}
Syntax Tree
Parse tree seringkali disebut sebagai concrete syntax tree. Parse tree tidak
efisien karena mengandung informasi yang berlebihan; sebagai gantinya, kalimat
dinyatakan sebagai abstract syntax tree atau sering disingkat sebagai syntax tree
saja. Dalam syntax tree setiap operator maupun keyword tidak muncul sebagai
leaf.
contoh :
syntax tree untuk kalimat x : 9 5 + 2 dan y : if B then S 1 else S 2 :
+ if-then-else
2
BS1S2
95
Membentuk Syntax Tree Sebuah Ekspresi
Pada pasal ini akan dibentuk sebuah syntax tree dimana setiap node-nya
dinyatakan sebagai data record. Setiap record paling tidak mengandung sebuah
label yang dapat berupa identifier, konstanta, atau operator. Proses pembentukan
ini memerlukan tiga buah function berikut :
1. mknode(op, left, right) : membentuk node operator dengan label op dan
dua field lainnya berupa pointer ke anak kiri dan anak kanan.
2. mkleaf(id, entry) : membentuk node identifier dengan label id dan sebuah
field berupa pointer ke symbol table. Pelacakan identifier pada symbol
table.
3. mkleaf(num, val) : membentuk node konstanta dengan label id dan sebuah
field yang mengandung nilai bilangan.
Contoh:
Diberikan ekspresi : a 4 + c, dengan a dan c adalah identifier.Syntax tree
akan dibentuk secara bottom-up. Berikut ini adalah algoritma pembentukan syntax
tree untuk ekspresi yang diinginkan beserta bentuk syntax tree yang
dihasilkannya:
(1) p1 := mkleaf(id, entrya); dimana :
(2) p2 := mkleaf(num, 4); -p1, p2, p3, p4, p5 : pointer ke node
Op arg1 arg2
uminus c t1
uminus c
* b t1 t2
* b (0)
uminus c t3
uminus c
* b t3 t4
(3) * b (2)
+ t2 t4 t5
+ (1) (3)
:= t5 a
:= a (4)
BAB 111
PENUTUP
A. Kesimpulan
Representasi kode antara biasanya berbentuk perintah tiga alamat (threeaddress code), baik berbentuk quadruples ataupun triples.Jika kita ingin
mengambil sedikit contoh tentang cara kerja intermediate maka kita bisa melihat
bagaimana intermediate bekerja dalam mengcompile sebuah bahasa pemrograman
yang sederhana,dimana Tahap-tahap compiler yang dianalisa meliputi tahap
scanner, parser, constrainer dan tahap code generator. Scanner mengambil
karakter-karakter input dan mengelompokkannya menjadi token-token.Parser
pada compiler ini merupakan program-driven parser yang mewujudkan grammar
dalam bentuk algoritma, bersifat top-down dan termasuk recursive-descent parser
untuk grammar LL(1). Constrainer memeriksa aturan pendeklarasian variabel,
sedangkan tahap intermediate code generator menghasilkan bentuk positifinya
yang memudahkan proses pembentukan kode output pada tahap code generator.
Bentuk
dari
intermediate
code
generator
tergantung
bagaimana
B. Saran
Kiranya makalah ini masih jauh dari kata sempurna. Penulis mohon maaf atas
kesalahan dalam penulisan ataupun bila ada kata yang menyinggung.
DAFTAR PUSTAKA
http://dmanty.blogspot.co.id/2011/07/makalah-teknik-kompilasi.html
http://semutuyet.blogspot.co.id/2012/11/makalah-tehnik-kompilasi.html
http://www.tutorialspoint.com/compiler_design/compiler_design_intermediate_code_
generations.htm
http://belajar-program.ueuo.com
http://wikipedia.com
http://nusinau.com