You are on page 1of 24

1

BAB I
PENDAHULUAN

A. Latar Belakang
Komputer mengikuti sejumlah prosedur sistematis atau algoritma
yang dapat diaplikasikan untuk serangkaian input (string), yang
menyatakan integer dan menghasilkan jawaban setelah sejumlah berhingga
langkah. Teori otomata adalah studi tentang peralatan atau mesin
komputasi abstrak, yang dapat didefinisikan secara matematis. Tahun
1930-an Alan Turing telah mempelajari mesin abstrak yang memiliki
kemampuan seperti komputer sekarang (dalam hal apa yang dihitung).
Mesin abstrak merupakan model teoritis dari perangkat keras atau
perangkat lunak yang digunakan dalam teori otomata.
Teori bahasa merupakan suatu gagasan mendasar dalam komputasi
yang menjadi tools untuk mengenali persoalan. Gagasan dasar tersebut
dimodelkan dengan simbol-simbol yang merepresentasikan juga suatu
fungsi dari komputer digital. Teori bahasa pada awalnya lebih diarahkan
untuk mengenali suatu tata bahasa dan dapat mendefinisikan spesifikasi
formal dari tata bahasa tersebut. Sehingga pada akhirnya dapat
didefinisikan langkah-langkah algoritmik dalam pemrosesan tata bahasa.
Context free grammer (tata bahasa) dan pushdown automata
digunakan dalam spesifikasi bahasa komputer (pemrograman, markup,
kamus data, query, perintah, script, printer). Dalam parser, bagian
kompilator yang memriksa kebenaran sintaks program. Pemahaman
pushdown automata sangat menyederhanakan proses parsing. Proses
parsing yang berlangsung sangat cepat adalah berkat pemahaman
mendalam teknik parsing bebasis pada pengetahuan mengenai context free
grammer.


2

B. Rumusan Masalah
Dalam pembahasan materi mengenai Pohon Penurunan, terdapat beberapa
rumusan masalah. Diantaranya yaitu :
a. Apa yang dimaksud dengan pohon penurunan?
b. Apa saja cakupan bahasan dalam materi pohon penurunan?

C. Tujuan
Terdapat tujuan dalam materi mengenai Pohon Penurunan, yaitu :
a. Mengetahui dan memahami pengertian dari pohon penurunan.
b. Mengetahui dan memahami cakupan bahasan dalam materi pohon
penurunan seperti context free grammar, parsing, dan ambiguitas.

3

BAB II
PEMBAHASAN

A. Pohon Penurunan (Derivation Tree)
Sebuah pohon (tree) adalah suatu graph terhubung tidak sirkuler, yang
memiliki satu simpul (node) / vertex disebut akar (root) dan dari situ memiliki
lintasan ke setiap simpul. Pohon sintaks / pohon penurunan (syntax
tree/derivaton tree/parse tree) berguna untuk menggambarkan bagaimana
memperoleh suatu string (untai) dengan cara menurunkan simbol-simbol
variabel menjadi simbol-simbol terminal. Setiap simbol variabel diturunkan
menjadi terminal, sampai tidak ada yang belum tergantikan.
Derivation tree / Pohon Penurunan, disebut juga derivation (parse)
tree : root dari pohon penurunan adalah simbol awal, sedangkan node (daun)
dari pohon penurunan adalah simbol-simbol non terminal atau terminal dari
tata bahasa tersebut atau kemungkinan symbol .
Pohon urai (pohon penurunan) untuk menampilkan penguraian, dapat
dilakukan dengan membentuk pohon urai (sayangnya, urutan penguraian tidak
terlihat). Contoh pohon urai :


4

Contoh penurunan :
Misalkan diketahui sebuah context free grammar G3 dengan aturan produksi
sebagai berikut :
E E + E
E E - E
E (E)
E V
V x
V z
V y
Bagaimana cara menurunkan string x+(y-z)? Kita bisa membuat pohon
penurunan sebagai berikut :

String x+(y-z) diperoleh dengan cara membaca node daun) dari cabang paling
bawah kiri ke kanan.

5










6

B. Latar Belakang Context Free Grammar (CFG)
Terinspirasi dari bahasa natural manusia, ilmuwan-ilmuwan ilmu
komputer yang mengembangkan bahasa pemrograman turut serta memberikan
grammar (pemrograman) secara formal. Grammar ini diciptakan secara bebas-
konteks dan disebut Context Free Grammar (CFG). Hasilnya, dengan
pendekatan formal ini, kompiler suatu bahasa pemrograman dapat dibuat lebih
mudah dan menghindari ambiguitas ketika parsing bahasa tersebut. Contoh
desain CFG untuk parser, misal : B -> BB | (B) | e untuk mengenali bahasa
dengan hanya tanda kurung {(,)} sebagai terminal-nya. Proses parsing
adalah proses pembacaan string dalam bahasa sesuai CFG tertentu, proses ini
harus mematuhi aturan produksi dalam CFG tersebut.

C. Tata Bahasa Bebas Konteks (Context Free Grammar)
Context Free Grammar (CFG)/ Bahasa Bebas Konteks adalah sebuah tata
bahasa dimana tidak terdapat pembatasan pada hasil produksinya. Context
Free Grammar ( CFG ) merupakan tata bahasa yang mempunyai tujuan sama
seperti halnya tata bahasa regular yaitu merupakan suatu cara untuk
menunjukkan bagaimana menghasilkan suatu untai-untai dalam sebuah
bahasa. Bila pada tata bahasa regular terdapat pembatasan pada ruas kanan atau hasil
produksinya, maka pada tata bahasa bebas konteks / context free grammar,
selanjutnya disebut CFG, tidak terdapat pembatasan hasil produksinya. Pada aturan
produksi :

Batasannya hanyalah ruas kiri () adalah sebuah simbol variabel. Contoh
aturan produksi yang termasuk CFG :


Dimana string dari terminal dan atau nonterminal dapat berisi:
Terminal saja
Nonterminal saja
7

Kombinasi terminal dan nonterminal
Empty string
Harus ada minimal sebuah nonterminal S terletak disebelah kiri. Agar
tidak terjadi kekacauan antara terminal dan nonterminal, maka selalu dipakai
huruf kecil untuk terminal dan huruf kapital untuk nonterminal.
Seperti diketahui, pada saat menurunkan suatu string, symbol-simbol
variable akan mewakili bagian-bagian yang belum yang belum terturunkan
dari string tersebut. Bila pada tata bahasa regular, bagian yang belum
terturunkan tersebut selalu terjadi pada suatu ujung, pada tata bahasa bebas
konteks bisa terdapat lebih banyak bagian yang belum terturunkan itu dan bisa
terjadi dimana saja.
Ketika penurunan itu sudah lengkap, semua bagian yang belum
terturunkan telah diganti oleh string-string (yang mungkin saja kosong) dari
himpunan symbol terminal. Bahasa bebas konteks menjadi dasar dalam
pembentukan suatu parser/proses analisis sintaksis. Bagian sintaks dalam
suatu kompilator kebanyakan didefinisikan dalam tata bahasa bebas konteks.
CFG mempunyai 4 tuple, yaitu G=(V,,R,S), dimana :
V adalah himpunan terbatas dari variable (non terminal).
adalah himpunan terbatas dari terminal. V =
R adalah himpunan terbatas dari rules atau productions (menggambarkan
hubungan antara urutan terbatas variabel dan terminal).
S adalah symbol (variabel) awal digunakan untuk mewakili seluruh
kalimat/ program. S V

D. Parsing
Context Free Grammar ( CFG ) menjadi dasar dalam pembentukan suatu
parser/ proses analisis sintaksis. Bagian sintaks dalam suatu kompilator
kebanyakan di definisikan dalam tata bahasa bebas konteks. Pohon penurunan
8

(derivation tree/parse tree) berguna untuk menggambarkan simbol-simbol
variabel menjadi simbol-simbol terminal setiap simbol variabel akan di
turunkan menjadi terminal sampai tidak ada yang belum tergantikan.
Misal terdapat tata bahasa bebas konteks dengan aturan produksi (simbol
awal S, selanjutnya di dalam bab ini digunakan sebagai simbol awal untuk tata
bahasa bebas konteks adalah S) :
S AB
A aA a
B bB b

Akan kita gambarkan pohon penurunan untuk memperoleh untai : aabbb.

Gambar 1. Pohon Penurunan untuk untai aabbb

Pada pohon tersebut simbol awal akan menjadi akar (root). Setiap kali
penurunan dipilih aturan produksi yang menuju solusi. Simbol-simbol variabel
akan menjadi simpul-simpul yang tidak mempunyai anak yang akan menjadi
9

simbol terminal. Kalau kita baca simbol terminal yang ada pada gambar 1 dari kiri
ke kanan akan diperoleh untai aabbb.
Proses penurunan atau parsing bisa dilakukan dengan cara :
1. Penurunan terkiri (leftmost derivation) yaitu simbol variabel terkiri yang
diperluas terlebih dahulu.
2. Penurunan terkanan (rightmost derivation) yaitu simbol variabel terkanan
yang diperluas terlebih dahulu.
Misalkan terdapat tata bahasa bebas konteks :

S aAS a
A Sba ba

Untuk memperoleh untai aabbaa dari tata bahasa bebas konteks di atas ( bisa
dibaca menurunkan) :
1. Dengan penurunan terkiri: S aAS aSbAS aabAS aabbaS
aabbaa
2. Dengan penurunan terkanan :S aAS aAa aSbAa aSbbaa
aabbaa
Kita lihat pohon penurunannya pada gambar 2. Meskipun proses penurunannya
berbeda tetapi akan tetap memiliki pohon penurunan yang sama.
10


Gambar 2. Pohon Penurunan untuk untai aabbaa

Biasanya persoalan yang diberikan berkaitan dengan pohon penurunan adalah
untuk mencari penurunan yang hasilnya menuju pada suatu untai yang ditentukan.
Dalam hal ini, perlu untuk melakukan percobaan pemilihan aturan produksi yang
bisa menuju ke solusi.

E. Metode Parsing
Metode parsing perlu memperhatikan 3 hal:
a. Waktu Eksekusi
b. Penanganan Kesalahan
c. Penanganan Kode
Parsing digolongkan menjadi:
1. Top-Down
Penelusuran dari root ke leaf atau dari simbol awal ke simbol terminal
metode ini meliputi:
a. Backtrack/backup : Brute Force
Memilih aturan produksi mulai dari kiri
11

Meng-expand simbol non terminal sampai pada simbol
terminal
Bila terjadi kesalahan (string tidak sesuai) maka dilakukan
backtrack
Algoritma ini membuat pohon parsing secara top-down,
yaitu dengan cara mencoba segala kemungkinan untuk
setiap simbol non-terminal
Contoh suatu language dengan aturan produksi sebagai
berikut

S aAd | aB
A b | c
B ccd | ddc

Misal ingin dilakukan parsing untuk string accd


12

Kelemahan dari metode-metode brute-force
Mencoba untuk semua aturan produksi yang ada sehingga menjadi lambat
(waktu eksekusi)
Mengalami kesukaran untuk melakukan pembetulan kesalahan
Memakan banyak memakan memori, dikarenakan membuat backup lokasi
backtrack
Grammar yang memiliki Rekursif Kiri tidak bisa diperiksa, sehingga
harus diubah dulu sehingga tidak rekursif kiri, Karena rekursif kiri akan
mengalami Loop yang terus-menerus
Contoh:
Terdapat grammar/tata bahasa G = (V,T,P,S), dimana V= (E,T,F) .
Simbol NonTerminal (variable).
T= (i,*,/ ,+,-) Simbol Terminal
S=E Simbol Awal / Start simbol
String yang diinginkan adalah i * i
Aturan produksi (P) yang dicobakan adalah :
1. E T | T + E | T E
T F | F * T | F / T
F i
accept (diterima)

2. E T | E+T | E-T
T F | T* F | T / F
F i
accept (diterima)
Meskipun ada rekursif kiri, tetapi tidak diletakkan sebagai aturan yang paling kiri
3. E E+T | E-T | T
T T* F | T / F | F
F i
13

Rekursif kiri, program akan mengalami loop
4. No backtrack : Recursive Descent Parser
a. Parsing dengan Recursive Descent Parser
Salah satu cara untuk meng-aplikasikan bahasa context free
Simbol terminal maupun simbol variabelnya sudah bukan
sebuah karakter
Besaran leksikal sebagai simbol terminalnya, besaran syntax
sebagai simbol variablenya/ non terminalnya
Dengan cara penurunan secara recursif untuk semua variabel
dari awal sampai ketemu terminal
Tidak pernah mengambil token secara mumdur (back tracking)
Beda dengan turing yang selalu maju dan mundur dalam
melakukan parsing
b. Aturan produksi menggunakan Recursive Descent Parser
Semua simbol variabel dijadikan prosedur/fungsi
Jika beretemu simbol terminal pada aturan produksi, maka
panggil prosedurnya
Penelusuran bersifat top down mengikuti sintaks sesuai pola
pada diagram sintaks
Karena memakai prosedur yang rekursif maka dipakai
recursive stacking yang hampir sama dengan metode top down
parsing dengan brute force.
Urutan produksi direalisasikan dengan menggunakan urutan
dari pemanggilan fungsi / prosedur.

14

Fungsi/prosedur ditulis untuk setiap non terminal dari suatu
produksi. Setiap fungsi/prosedur akan melemparkan nilai benar
atau salah bergantung pada apakah fungsi tersebut mengenali
substring yang diterima sebagai ekspansi dari non terminal.
c. Contoh :
Grammar dengan BNF :
<program> ::= t_PROG t_ID t_SEMICOL <block> t_DOT
<block> ::= t_BEGIN <statement> {t_SEMICOL <statement>}
t_END
<statement> ::= t_ID t_ASS <simple exp> |
t_IF <exp> t_THEN <statement>|
t_IF <exp> t_THEN <statement> t_ELSE
<statement>
<exp> ::= <simple_exp> t_EQ <simple exp> |
<simple_exp> t_LT <simple_exp>|
<simple_exp> t_GT <simple_exp>
Dst.

2. Bottom-Up
Metode ini melakukan penelusuran dari leaf ke root. Salah satu contoh
menarik dari parsing bottom-up adalah parsing pada grammar preseden
sederhana (GPS). Prosedur Parsing Grammar Preseden Sederhana :
1. Membuat tabel 3 kolom dengan label : sentensial dan relasi, handel,
dan ruas kiri produksi.
2. Menuliskan kalimat (atau sentensial) yang diselidiki pada baris
pertama kolom pertama.
3. Dengan menggunakan tabel relasi preseden, mencantumkan relasi
preseden antara setiap dua simbol yang bertetangga.
15

4. Menentukan handel dari sentensial tersebut. Handel adalah string yang
dibatasi terakhir dan <> pertama jika dilakukan penelusuran
dari kiri atau yang saling mempunyai relasi <>. Handel tersebut
pastilah merupakan ruas kanan produksi, karena itu tentukan ruas kiri
dari handel tersebut.
5. Mengganti handel dengan ruas kiri produksinya. GOTO 3.
6. Kalimat yang diselidiki adalah benar dapat diderivasi dari simbol awal
jika kolom ruas kiri produksi menghasilkan simbol awal.

Contoh :
Lakukan parsing atas kalimat x = b(aa)b berdasarkan grammar G = {Z

sentensial dan relasi handel ruas kiri produksi
b ( a a ) b a M
b ( M a ) b Ma) L
b ( L b (L M
bMb bMb Z

Prosedur parsing sampai di simbol awal (Z). Maka kalimat b(aa)b
memang dapat diderivasi dari simbol awal Z dengan menggunakan
grammar G.

F. Ambiguitas
Ambiguitas terjadi bila terdapat lebih dari satu pohon penurunan yang
berbeda untuk memperoleh suatu string. Misalkan terdapat tata bahasa sebagai
berikut :
S A | B
A a
B a
16


Untuk memperoleh untai a bisa terdapat dua cara penurunan sebagai berikut:

S => A => a
S => B => a

Contoh ambiguitas lain :
Diketahui grammar G = {S SOS|A , O *|+, A 0|1|2||9} String :
2*3+7 mempunyai dua pohon sintaks berikut :

Gambar 3. String ambigu
Sebuah string yang mempunyai lebih dari satu pohon sintaks disebut string
ambigu (ambiguous). Grammar yang menghasilkan paling sedikit sebuah
string ambigu disebut grammar ambigu.

G. Penyederhanaan Tata Bahasa Bebas Konteks ( CFG )
Penyederhanaan tata bahasa bebas konteks bertujuan untuk melakukan
pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki
kerumitan yang tak perlu atau aturan produksi tak berarti.
Misal :

17

S AB | a
A a

Kelemahanya adalah aturan produksi S AB tidak berarti karena B tidak
memiliki penurunan.
Penyederhanaan tata bahasa bebas konteks dapat di lakukan dengan 3 cara :
1. Penghilangan produksi useless
2. Penghilangan produksi unit
3. Penghilangan produksi

1. Penghilangan Produksi Useless
Definisinya sebagai berikut:
a. Produksi yang memuat simbol variabel yang tidak memiliki penurunan
yang akan menghasilkan terminal-terminal seluruhnya.
b. Produksi yang tidak akan pernah dicapai dengan penurunan apapun
dari simbol awal sehingga produksi itu redundan.
Contoh :
S aSa | Abd | Bde
A Ada
B BBB |a

a. Langkah penyederhanaannya :
Hilangkan aturan yang tidak menuju terminal.
Hapus anggota S yang mengandung simbol himpunan ke terminal
yang tidak berguna
Hilangkan Redundan (Anggota yang tidak ada di S dan
Sebaliknya)

18

b. Maka, hasil penyederhanaanya adalah sbb :

S aSa | Bde
B BBB | a
Contoh lain :

S Aa | B
A ab | D
B b | E
C bb
E aEa

c. Produksi yang useless adalah:

A D
C bb
E aEa
B E

d. Hasil akhir dari penyederhanaanya adalah :

S Aa | B
A ab
B b


19

2. Penghilangan Produksi Unit
Definisinya sebagai berikut:
Produksi unit adalah produksi dimana ruas kiri dan kanan aturan
produksi hanya berupa satu simbol variabel, misalkan :
A B, C D.
Keberadaanya membuat tata bahasa memiliki kerumitan yang tak
perlu, maka bisa dihilangkan.
a. Langkah penyederhanaanya :
Jabarkan masing-masing himpunan.
Sederhanakan ruas kiri dan kanan yang hanya berupa variabel
simbol sama.
Hapus simbol variabel yang tidak berguna / tidak mempunyai
turunan.

Contoh suatu CFG sbb :
S Sb
S C
C D
C ef
D dd


20

b. Jabarkan penurunan masing masing himpunan :

C D => C dd
S C => S dd | ef

c. Maka hasilnya adalah sbb :

S Sb
S dd | ef
C dd
C ef
D dd

D. Penghilangan Produksi Empty ( )
Definisinya sebagai berikut:
Produksi empty adalah produksi kosong, (dengan bentuk )
penghilangan dapat dilakukan dengan penggantian produksi yang memuat
variabel yang menuju ke .
a. Langkah Penyederhanaannya :
Hilangkan simbol yang terdapat empty ( ) dalam himpunan
produksi
Simbol variabel tidak di hapus jika terdapat cabang terminal /
variabel yang saling berhubungan
Buat himpunan dengan simbol yang dihilangkan dan yang
tidak.

Contoh 1 :
S bcAd
A e
21


b. Maka variabel A bisa di hilangkan, sehingga menjadi :

S bcd

Kasus lain :
S bcAd
A bd |

c. Maka hasilnya akan menjadi :

S bcAd | bcd
A bd

Karena A bukan satu-satunya produksi dari A
Contoh 2 :

S Ab | Cd
A d
C

Hasil penyederhanaan sebagai berikut :

S Ab | d
A d


22

Contoh 3 :

S dA | Bd
A bc
A
B c

Hasil penyederhanaan sebagai berikut :

S dA | Bd
A bc
B c

Contoh 4 :
S AaCD
A CD | AB
B b |
C d |
D

Hasil penyederhanaan sebagai berikut :

S AaC | aC |Aa | a
A C | AB | A | B
B b
C d


23

BAB III
PENUTUP

A. Kesimpulan
Pohon sintaks / pohon penurunan (syntax tree / derivaton tree / parse
tree) berguna untuk menggambarkan bagaimana memperoleh suatu
string (untai) dengan cara menurunkan simbol-simbol variabel menjadi
simbol-simbol terminal. Setiap simbol variabel diturunkan menjadi
terminal, sampai tidak ada yang belum tergantikan. Pada pohon
penurunan, cara menampilkan penguraian dapat dilakukan dengan
membentuk pohon urai.
B. Kritik dan Saran
Dalam pembuatan makalah ini kami selaku penyusun masih banyak
kekurangan dalam pengetahuan makalah ini. Maka disini kami sebagai
penyusun mengharapkan kritik dan saran yang sifatnya membangun demi
kesempurnaan makalah ini. Atas kritik dan sarannya kami ucapkan terima
kasih.


24

REFERENSI

[1]https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved
=0CD8QFjAC&url=http%3A%2F%2Felearning.amikom.ac.id%2Findex.php%2F
download%2Fmateri%2F555114-ST110-
9%2F2012%2F05%2F20120515_Teori%2520Bahasa%2520dan%2520Otomata%
2520&ei=hsZpUbHNEcezrAf87YDoAw&usg=AFQjCNGofXsaNvvb1n_wCYiB
LfkQyzTgPA&sig2=QqdAAQiIXOAhhu91sqoLig&bvm=bv.45175338,d.bmk&c
ad=rja
14 April 2013 4.31 AM

[2] http://ekohandoyo.blog.undip.ac.id/2010/01/18/cfg-context-free-grammar/
14 April 2013 4.43 AM

[3] http://elib.unikom.ac.id/download.php?id=14354
14 April 2013 4.50 AM

[4]https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved
=0CDkQFjAB&url=http%3A%2F%2Felib.unikom.ac.id%2Fdownload.php%3Fid
%3D14354&ei=gd1pUaTaCMXZrQfL44HYAQ&usg=AFQjCNHtmZHwyApfJ9
C47DUlxJxoLvcPsA&sig2=C4apkj5QhryI5csLhfaWTw&bvm=bv.45175338,d.b
mk&cad=rja
14 April 2013 4.50 AM

[5]https://docs.google.com/viewer?a=v&q=cache:aOYYNgFjZ10J:www.ilab.gun
adarma.ac.id/modul/NewATA/Modul%2520ATA/Teori%2520Bahasa%2520Oto
mata/M6.pdf+bottom+up+pada+metode+parsing&hl=id&pid=bl&srcid=ADGEE
Sh3DAMVb_6jrMRh5AKLZ2KCBC839ja1gmL_EU2Qn1ns9coHi_vJsg_uBA7l
WlcPpJ_WUHV6bwPPi2qtQuGYj6-Kqx_otRHh-
vEu6xozTuhrOxrr4FZnFXFqXumVBPQ9O0-
5QlXo&sig=AHIEtbQe6oQ53sC1zRLaAnKvg4VuXOuCpQ
14 April 2013 5.12 AM
[6] http://nurmanto.com/metode-metode-parsing/
14 April 2013 5.15 AM

You might also like