• Tidak ada hasil yang ditemukan

03. KOMPILATOR LINTAS TUNGGAL - Teknik Kompilasi.zip

N/A
N/A
Protected

Academic year: 2018

Membagikan "03. KOMPILATOR LINTAS TUNGGAL - Teknik Kompilasi.zip"

Copied!
8
0
0

Teks penuh

(1)

03. KOMPILATOR LINTAS TUNGGAL

¾ Kebanyakan kompilator untuk bahasa yang terstruktur melakukan

beberapa kali pembacaan program sumber untuk :

o dapat melakukan deteksi kesalahan,

o menemukan kembali kesalahan yang diperoleh, o melakukan proses debugging.

¾ Berdasarkan cara pembentukan dan tugas fungsionalnya, suatu

kompilator dapat dikelompokkan ke dalam beberapa klasifikasi, yaitu:

– kompilator lintas tunggal (single pass),

– kompilator lintas jamak (multi pass),

– kompilator muat-dan-jalan (load-and-go) dan lain sebagainya.

¾ Kompilator lintas tunggal (single pass compiler) adalah suatu

kompilator yang dibuat hanya dengan melakukan satu kali pembacaan program sumber (single pass). Kompilator yang demikian tidak dapat melakukan optimasi kode dengan baik ataupun error recovery ataupun

error correction.

¾ Kompilator lintas jamak (multi pass compiler) adalah suatu kompilator

lengkap sedangkan kompilator load and go adalah kompilator yang

diselesaikan secara tuntas setiap diperoleh bagian terkecil dari bahasa sumber.

¾ Walaupun demikian, berbagai ragam kompilator untuk bahasa

pemrograman yang berbeda dan tugas fungsional yang berbeda, pada dasarnya dapat dibuat dengan cara yang hampir sama.

¾ Kompilator lintas tunggal yang paling sederhana merupakan bagian

depan (front end)dari suatu kompilator yang komplit, yaitu terdiri dari : - analisis leksikal,

- penguraian (parser), dan - pembentukan kode antara.

Gambar 3.1. Struktur bagian depan suatu kompilator

(2)

¾ Pada struktur di atas, penerjemah berdasar sintak merupakan kombinasi dari proses analisis sintak dan pembentukan kode antara.

¾ Sebagai contoh kompilator lintas tunggal sederhana adalah kompilator yang digunakan untuk menerjemahkan suatu ekspresi matematika yang ditulis dalam notasi infix menjadi ekspresi matematika dalam notasi

postfix.

¾ Notasi infix adalah notasi dimana operator dari suatu ekspresi terdapat di antara kedua argumen yang ada.

¾ Notasi postfix adalah notasi di mana operator dari suatu ekspresi terdapat di belakang kedua argumen yang ada.

Contoh:

notasi infix : 9-5+2 notasi postfix : 95-2+

¾ Sintaks suatu program dapat ditentukan dengan menggunakan

tatabahasa yang bebas konteks (context-free grammars), tatabahasa ini juga berguna untuk membantu penerjemahan suatu program.

¾ Tatabahasa yang bebas konteks adalah aturan bahasa yang tidak

bergantung pada struktur bahasa pemrograman tertentu.

¾ Teknik kompilasi yang berorientasi pada kaidah tatabahasa dikenal

dengan nama penerjemahan berdasarkan sintaks (syntax-directed translation).

Pengertian Sintaks

¾

S

intaks adalah bagian dari tatabahasa yang mengungkapkan satu

perintah atau pengertian tertentu. Sedangkan tatabahasa adalah aturan yang mengikat dalam struktur susunan suatu bahasa.

¾ Di dalam teknik kompilasi kita kenal empat macam tatabahasa, yaitu:

o tatabahasa umum atau tatabahasa tanpa batasan (type 0 grammars -

unrestricted grammars),

o tatabahasa peka konteks (type 1 grammars - context-sensitive

grammars),

o tatabahasa bebas konteks (type 2 grammars - context-free

grammars),

o tatabahasa regular (type 3 grammars - regular grammars).

(3)

¾ Tatabahasa bebas konteks secara alamiah menerangkan struktur hirarki dari banyak bentuk bahasa pemrograman.

Contoh: perintah if-else

- dalam bahasa Pascal mempunyai bentuk

if ( ekspresi ) then perintah else perintah

- dalam bahasa C mempunyai bentuk

if ( ekspresi ) perintah else perintah

¾ Dalam hal ini suatu perintah adalah merupakan gabungan dari

o kata baku if, o kurung buka, o ekspresi, o kurung tutup, o perintah, o kata baku else

o dan perintah yang lain.

Bila variabel expr = ekspresi, variabel stmt = perintah,

maka struktur aturan tersebut dapat dinyatakan sbb.:

stmtif ( expr ) stmtelse stmt

di mana tanda panah tersebut dibaca sebagai "dapat berbentuk suatu".

Aturan penulisan seperti ini disebut sebagai produksi (production).

¾ Dalam hal ini unsur leksikal seperti kata baku if dan tanda kurung disebut sebagai unsur-unsur terminal, sedangkan token variabel seperti expr dan stmt disebut sebagai unsur-unsur non-terminal.

¾ Secara lengkap suatu tatabahasa bebas konteks dapat mempunyai empat komponen berikut ini:

1. Himpunan dari token yang dikenal dengan nama simbol token. 2. Himpunan dari unsur non-terminal.

3. Himpunan dari produksi.

(Setiap produksi terdiri dari unsur non-terminal di bagian kiri, tanda panah, dan barisan token dan/non-terminal di bagian kanan.)

(4)

¾ Aturan umum dalam menentukan tatabahasa adalah:

1. Tuliskan produksi yang ada dengan dimulai dari produksi yang mengandung simbol awal.

2. Angka-angka, tanda-tanda (operator) seperti <=, dan kata baku seperti while dll. adalah unsur terminal.

3. Nama-nama variabel adalah unsur non-terminal, dan akan dicetak miring.

¾ Produksi-produksi yang mempunyai simbol non-terminal di sebelah kiri yang sama, bagian kanannya dapat dikelompokkan dengan

menggunakan tanda  yang memisahkan pilihan bagian kanan yang

ada.

Tanda  dapat dibaca sebagai "atau".

Contoh:

Ada beberapa produksi sbb.:

listlist + digit listlist - digit listdigit

digit ⇒ 0  1  2  3  4  5  6  7  8  9

produksi-produksi tersebut dapat dikelompokkan menjadi satu produksi yang setara yaitu:

listlist + digitlist - digitdigit

¾ Menurut definisi, maka token dari tatabahasa yang digunakan adalah: + - 0 1 2 3 4 5 6 7 8 9

sedangkan unsur non-terminal adalah yang dicetak miring seperti list

dan digit.

¾ Produksi-produksi tersebut disebut sebagai "produksi untuk unsur non-terminal", karena di bagian kiri produksi adalah unsur non-terminal.

¾ "Barisan token" adalah barisan dari nol atau lebih token. Unsur yang hanya mengandung nol token ditulis sebagai ε, dan disebut dengan nama barisan kosong.

Dari produksi

(5)

menunjukkan bahwa satu angka yang berdiri sendiri juga merupakan list.

Produksi-produksi berikut:

listlist + list listlist - list

menyatakan bahwa list yang diikuti oleh tanda plus atau minus dan diikuti dengan list akan membentuk list baru.

¾ Cara penguraian ekspresi 9-5+2 dapat dilakukan sbb.:

1) 9 adalah list karena 9 adalah suatu angka dari produksi listdigit. 2) 9-5 adalah list karena 9 dan 5 adalah list yang dihubungkan dengan

tanda minus.

3) 9-5+2 adalah list karena 9-5 dan 2 adalah list yang dihubungkan dengan tanda plus.

Dalam pohon urai dapat digambarkan sbb.:

Gambar 3.2. Pohon Urai

Pohon Urai

ƒ

P

ohon urai menggambarkan bagaimana suatu simbol awal dari suatu

tatabahasa menyebabkan timbulnya suatu rangkaian dalam suatu bahasa.

ƒ Sebagai contoh, bila suatu unsur bukan terminal A mempunyai produksi

A →XYZ, maka pohon urai tersebut akan mempunyai suatu nodal

dalam (internal node) yang diberi label A dengan tiga buah anak yang diberi label X, Y dan Z.

Gambar 3.3. Contoh sebuah pohon urai. A

X Z Y

list

list digit list digit

list

(6)

Sifat-sifat pohon urai dari suatu tatabahasa bebas konteks, adalah sbb.:

1. Akar (root) dari pohon urai diberi label simbol awal 2. Setiap daun (leaf) dari pohon urai diberi label token atau ε

3. Setiap nodal dalam dari pohon urai diberi label unsur non-terminal

4. Bila A adalah suatu unsur non-terminal yang merupakan label dari suatu nodal dalam dan X1, X 2, ...X n adalah label anak-anak dari nodal

tersebut dari kiri ke kanan, maka A → X1X2...Xn adalah suatu

produksi.

Tatabahasa yang Berarti Ganda

ƒ

T

atabahasa yang berarti ganda adalah bahwa tatabahasa ini dapat

memberikan lebih dari satu pohon urai.

ƒ Untuk aplikasi kompilasi harus dirancang suatu tatabahasa yang tidak mempunyai lebih dari satu arti, atau harus diciptakan aturan-aturan tatabahasa tambahan untuk menghilangkan kemungkinan timbulnya arti ganda.

Contoh:

Buatlah pohon urai dari ekspresi 9-5+2

Gambar 3.4. Pohon Urai

Kedua pohon urai di atas pada dasarnya berhubungan dengan dua cara pemberian tanda kurung pada ekspresi 9-5+2, yaitu (9-5)+2 dan 9-(5+2), yang masing-masing akan memberikan hasil yang berbeda.

Sifat Asosiatif dari Operator

ƒ

P

ada kebanyakan bahasa pemrograman, keempat operator aritmetik

yaitu penjumlahan, pengurangan, perkalian dan pembagian bersifat asosiatif kiri, yaitu apabila suatu bilangan berada diantara dua tanda

(7)

operator (misal +), maka bilangan tersebut akan menggunakan operator yang ada di sebelah kirinya. Sedangkan operator pemangkatan bersifat asosiatif kanan.

Contoh:

ekspresi 9+5+2 akan sama dengan (9+5)+2

bukan sama dengan 9+(5+2)

ekpresi 9**5**2 akan sama dengan (9**5)**2

bukan sama dengan 9**(5**2)

Urutan Pengutamaan Operator

(Presedensi dari Operator)

ƒ

D

alam aritmetik biasa, operasi perkalian dan pembagian lebih

diutamakan terhadap operasi penjumlahan dan pengurangan, atau perkalian dan pembagian mempunyai presedensi yang lebih tinggi dari pada operasi penjumlahan dan pengurangan.

Pandang ekspresi 9+5.

Ada dua kemungkinan interpretasi dari ekspresi ini, yaitu (9+5) atau 9+(5). Untuk menghindari interpretasi ganda, perlu ditentukan urutan pengutamaan operator-operator yang digunakan.

Contoh:

Ekspresi 9+5*2 akan sama dengan 9+(5*2)

(8)

Pertanyaan Pendalaman Materi

1. Jelaskan apa yang dimaksud kompilator lintas tunggal (single pass compiler). Berikan contohnya.

2. Jelaskan beberapa klasifikasi atau kategori kompilator berdasarkan cara pembentukan dan tugas fungsionalnya.

3. Jelaskan mengapa kompilator untuk bahasa yang terstruktur

melakukan beberapa kali pembacaan program sumber.

4. Jelaskan apa yang dimaksud dengan notasi infix dan notasi postfix. Berikan contoh kedua notasi tersebut.

5. Jelaskan bagian-bagian utama kompilator lintas tunggal.

6. Jelaskan apa yang dimaksud dengan tatabahasa yang berarti ganda

(umbiguity grammar).

7. Jelaskan apa perbedaan antara sintaks dan tatabahasa. Berikan contoh masing-masing.

8. Jelaskan apa yang dimaksud dengan produksi dalam sebuah grammar.

Berikan contohnya.

9. Jelaskan apa yang dimaksud dengan pohon sintaks atau pohon urai.

Referensi

Dokumen terkait

Perusahaan yang memiliki perencanaan finansial yang baik, seringkali menggunakan modal internal dan eksternal dengan tujuan menghasilkan keuntungan yang lebih besar

dasarnya terdapat kemiripan, semuanya bersumber dari nilai-nilai yang dihasilkan budaya suatu daerah yang mana selanjutnya dikembangkan menjadi wujud perupaan dalam

In this research, the researcher found 29 items errors in form of modal auxiliary verb “can” made by the third semester students of English Department of IAIN

Pegawai Negeri adalah setiap warga Negara Republik Indonesia yang telah memenuhi syarat yang ditentukan, diangkat oleh pejabat yang berwenang dan diserahi tugas dalam suatu

Kekurangan vitamin A dapat terjadi pada semua umur akan tetapi kekurangan yang disertai kelain pada mata umumnya terdapat pada anak berusia 6 bulan sampai 4 tahun (Sidarta,

Kekurangan vitamin K dapat menyebabkan pendarahan internal dan pendarahan luar dikarenakan fungsi vitamin K sebagai pembekuan darah tidak berjalan sesuai dengan fungsinya yang akan

Dari hasil pengamatan lapangan, kecepatan arus terbesar terjadi pada musim peralihan, dengan kecepatan maksimal mencapai 0,358 – 0,397 m/dt dengan arah dominan ke tenggara

Tujuan penelitian ini untuk mengetahui (1) pengaruh media pembelajaran E-learning Schoology terhadap hasil belajar siswa kelas X Administrasi Perkantoran SMK Negeri