Anda di halaman 1dari 23

Fauzi Adi Rafrastara

 Pohon Penurunan
 Tata Bahasa Bebas Konteks
 Parsing
 Ambiguitas
 Penyederhanaan Tata Bahasa Konteks
S  Pohon atau Tree merupakan suatu graf
terhubung yang tidak sirkuler.
A B
 Sebuah Pohon memiliki sebuah simpul
a A b B (node) atau vertex yang disebut akar
(root), dan dari root tersebut memiliki
a b B lintasan ke setiap simpul.
b  Pohon Penurunan (Parse Tree) = Pohon
Sintaks (Syntax Tree) = Pohon Derivasi
(Derivation Tree)
 Digunakan untuk memvisualkan cara memperoleh suatu untai (string) dengan
cara menurunkan simbol-simbol variabel menjadi simbol-simbol terminal.
 Setiap simbol variabel diturunkan menjadi terminal, sampai tidak ada yang
belum tergantikan.
 Tata Bahasa Bebas Konteks = Context Free Grammar (CFG)
 Suatu tata bahasa yang tidak memiliki pembatasan pada hasil
produksinya. Contoh:
ab
Simbol  dibaca ‘menurunkan’
 Batasannya hanyalah ruas kirinya saja (a), yang disebut simbol
variabel.
 Contoh aturan produksi yang termasuk CFG:
B  cDeFG
D  BcDe
Proses penurunan atau parsing
bisa dilakukan dengan cara:
S  Penurunan terkiri (left-most
A B derivation)
Simbol variabel terkiri yang
a A b B
dikerjakan/diperluas terlebih dahulu
a b B  Penurunan terkanan (right-most
b derivation)
Simbol variabel terkanan yang
dikerjakan/diperluas terlebih dahulu
S

a A S
Contoh:
Terdapat CFG: S b A a

S  aAS | a a b a
A  SbA | ba
Untuk memperoleh string ‘aabbaa’, dapat dilakukan dengan cara:
1. Dengan penurunan terkiri (left-most derivation)
S  aAS  aSbAS  aabAS  aabbaS  aabbaa
2. Dengan penurunan terkanan (right-most derivation)
S  aAS  aAa  aSbAa  aSbbaa  aabbaa
Terjadi bila terdapat lebih dari satu pohon penurunan yang
berbeda untuk memperolah suatu string.
Contoh, terdapat CFG:
S  SbS | ScS | a
Untuk memperoleh string ‘abaca’, dapat diperoleh dengan
menggunakan 2 pohon penurunan.
CFG : S  SbS | ScS | a
String : abaca
Cara pertama: Cara kedua:
S  SbS  SbScS  SbSca S  ScS  SbScS  abScS
 Sbaca  abaca  abacS  abaca

S S

S b S S c S

a S c S S b S a

a a a a
Melakukan pembatasan sehingga tidak Contoh 2:
menghasilkan pohon poenurunan SA
dengan kerumitan yang tidak perlu AB
atau aturan produksi yang tidak BC
berarti. CD
Da|A
Contoh 1:
S  AB | a Rumit! Karena,
Aa  Memiliki jalur yang terlalu panjang,
padahal ujungnya adalah S  a.
 Produksi D  A juga menyebabkan
Aturan produksi S  AB tidak berarti
kerumitan.
karena B tidak memiliki penurunan.
Penghilangan Produksi Useless
 Produksi yang memuat simbol
Cara Penyederhanaan: variabel yang tidak memiliki
1. Penghilangan produksi penurunan yang akan
useless (tidak berguna) menghasilkan terminal-
2. Penghilangan produksi unit terminal seluruhnya.
3. Penghilangan produksi ɛ  Produksi yang tidak akan
pernah dicapai dengan
penurunan apapun dari simbol
awal, sehingga produksi itu
redundan (berlebih).
Contoh 1:
S  aSa | Abd | Bde
A  Ada
B  BBB | a Penyederhanaan menjadi:
Maka: S  aSa | Bde
 Simbol variabel A tidak memiliki
B  BBB | a
penurunan yang menuju
terminal, sehingga bisa
dihilangkan.
 Konsekuensi no 1, aturan
produksi S  Abd tidak
memiliki penurunan.
Contoh 2:  Aturan produksi C  bb, penurunan dari
simbol S, dengan jalan manapun tidak akan
S  Aa | B pernah mencapai C.
A  ab | D  Simbol variabel E tidak memiliki aturan
Bb|E produksi yang menuju terminal.
C  bb  Konsekuensi no (3) aturan produksi B 
E, simbol variabel E tidak memiliki
D  aEa penurunan.
Maka:
 Aturan produksi A  D, simbol Produksi useless: Penyederhanaan menjadi:
variabel D tidak memiliki penurunan. AD S  Aa | B
 Aturan produksi C  bb, C  bb A  ab
penurunan dari simbol S, dengan D  aEa Bb
jalan manapun tidak akan pernah BE
mencapai C.
Latihan:
Hilangkan produksi useless pada CFG berikut,
dan tentukan hasil penyederhanannya Jawab:
1. S  aAb | cEB 1. Hasil penyederhanaannya:
A  dBE | eeC
S  aAb
Bff
C  ae A  eeC
Dh C  ae
2. Hasil penyederhanaannya:
2. S  aB
A bcD | dAC S  aB
B  e | Ab Be
C  bCb | adF | ab
F  cFB
 Produksi Unit adalah produksi dimana ruas kiri dan kanan aturan
produksi hanya berupa satu simbol variabel, misal: A  B, C  D.
 Kondisi tersebut membuat tata bahasa memiliki kerumitan yang tidak
perlu.
 Penyederhanaan dilakukan dengan melakukan penggantian aturan
produksi unit.
Contoh 1: Solusi 1
CFG: S  A Penggantian yang dilakukan:
S  Aa S  A => S  ab | b
AB A  B => A  ab | b
BC B  C => B  b | ab, S  ab | b
Bb karena B  b sudah S  Aa
CD A  ab | b
ada, cukup ditulis B  ab
C  ab B  ab Bb
Db Cb
C  D => C  b
Sederhanakan dengan C  ab
menghilangkan produksi unitnya!
Hasil penyederhanaannya: Db
Solusi 2
Contoh 2:
Penggantian yang dilakukan:
CFG: S  Cba | D
D  E => D  gh
A  bbC C  C, dihapus
B  Sc | ddd D  E => D  gh
C  eAn | f | C S  D => S  gh | SABC,
D  E | SABC Hasil penyederhanaannya:
S  Cba | gh | SABC
E  gh
A  bbc
Sederhanakan dengan B  Sc | ddd
menghilangkan produksi unitnya! C  eA | f
D  gh | SABC
E  gh
Latihan: Solusi:
Penggantian yang dilakukan:
CFG: S  Sb S  C => S  dd | ef
SC C  D => C  dd
CD
C  ef
Hasil penyederhanaan:
D  dd S  Sb
Sederhanakan dengan menghilangkan S  dd | ef
produksi unitnya! C  dd | ef
D  dd
Produksi Ɛ (nullable) adalah Prinsip penggantiannya bisa dilihat
produksi kosong yang simbolkan kasus berikut:
dengan: S  bcAd
ΑƐ AƐ
Penghilangan produksi Ɛ dilakukan Pada kasus tersebut, A
menghasilkan nilai kosong, dan
dengan melakukan penggantian kosong merupakan satu-satunya
produksi yang memuat variabel hasil produksi dari A.
yang bisa menuju produksi Ɛ, atau Dengan demikian, maka bisa
biasa disebut nullable. dituliskan:
S  bcd
Contoh kasus 1:
Apabila kasusnya adalah: S  Ab | Cd
S  bcAd Ad
A  bd | Ɛ CƐ
Pada kasus tersebut, karena Ɛ Perhatikan C  Ɛ.
bukan satu-satunya produksi A, Karena Ɛ adalah satu-satunya
maka hasil penyederhanaannya: produksi dari C, maka S  Cd
diganti dengan S d.
S  bcAd
Hasilnya:
A  bd
S  Ab | d
Ad
Contoh kasus 3:
Contoh kasus 2:
S  AaCD
S  dA | Bd A  CD | AB
A  bc Bb|Ɛ
AƐ Cd|Ɛ
Bc DƐ
Hasil penyederhanaan: Hasil penyederhanaan:
S  dA | d | Bd S  AaC | aC | Aa | a
A  bc A  C | AB | A | B
Bc Bb
Cd
Penghilangan
Penghilangan Penghilangan Simplified
CFG Produksi
Produksi Ɛ Produksi Unit CFG
Useless

Urutan:
1. Hilangkan produksi Ɛ
2. Hilangkan produksi unit
3. Hilangkan produksi useless
(2) Hasil penghilangan produksi unit:
Contoh kasus 1: S  AA | de | bd
S  AA | C | bd A  Bb
B  AB | d
A  Bb | Ɛ
C  de
B  AB | d Penghilangan produksi unit bisa
C  de memunculkan produksi useless
(1) Hasil penghilangan produksi Ɛ: (3) Hasil penghilangan produksi useless:
S  AA | de | bd
S  AA | C | bd
A  Bb
A  Bb B  AB | d
B  B | AB | d Hasilnya, CFG yang telah disederhanakan
C  de telah terbebas dari produksi null,
produksi unit dan produksi useless.
Fauzi Adi Rafrastara

Anda mungkin juga menyukai