Anda di halaman 1dari 33

TEORI BAHASA

&
OTOMATA
Pohon Penurunan dan Penyederhanaan
Tata Bahasa Bebas Konteks (CFG)
CFG / Tata Bahasa Bebas Konteks

Batasan CFG: ruas kiri hanya boleh satu simbol


variabel.
Contoh :
CFG : B CDeFg
D BcDe
Pada bahasa regular, bagian yang belum
terturunkan selalu berada pada suatu ujung.
Pada CFG bisa terdapat lebih banyak bagian yang
belum terturunkan dan bisa terjadi dimana saja.
CFG menjadi dasar dalam pembentukan suatu
parser / proses analisis sintaksis.
Pohon Penurunan
(Derivation Tree/Parse Tree)
Pohon (tree): suatu grapf terhubung tidak sirkuler yang
memiliki satu simpul (node) yang disebut akar (root) dan
dari situ memiliki lintasan ke setiap simpul.
<sentence>

<subject> <predicate>

<verb phrase>
<noun phrase>

<verb>
<article> <noun phrase> <adverbial phrase>

<noun phrase>
<adj> <noun> <Preposition>

<article> <noun>
Pohon Penurunan
(Derivation Tree/Parse Tree)
Pohon penurunan berguna untuk
menggambarkan bagaimana memperoleh suatu
string (untai) dengan cara menurunkan simbol-
simbol variabel (VN) menjadi simbol-simbol
terminal (VT) sampai tidak ada yang belum
tergantikan.
Pohon Penurunan
(Derivation Tree/Parse Tree)
Pohon penurunan untuk untai : aabbb

S P: S AB
A aA|a
A B
B bB|b

b Simbol awal menjadi root.


a A B
Setiap kali penurunan dipilih
aturan produksi yang
a b B menuju ke solusi.
Simbol yang tidak memiliki
b anak menjadi simbol
terminal.
Pohon Penurunan
(Derivation Tree/Parse Tree)

Proses penurunan / parsing :


Penurunan terkiri / leftmost
derivation : simbol variabel paling
kiri yang diperluas terlebih dulu.

Penurunan terkanan / rightmost


derivation : simbol variabel
terkanan yang diperluas dulu.
Contoh :
S aAS | a
A SbA | ba
Untuk memperoleh untai :aabbaa
Penurunan terkiri : S aAS aSbAS aabAS aabbaS

aabbaa
Penurunan terkanan : S aAS aAa aSbAa aSbbaa

aabbaa
S S

4 2 1
1 S S
a A a A

4
2
S b 3A a S b A3 a

a b a a b a
Leftmost Rightmost
Ambiguitas
Terjadi bila terdapat lebih dari 1 pohon penurunan
yang berbeda untuk memperolah suatu untai.

Contoh :

SA|B
Aa
Ba
Utk untai : a terdapat 2 cara penurunan :
SAa
SBa
Ambiguitas
S SbS | ScS | a
Utk untai : abaca terdapat 2 cara penurunan :
S SbS abS abScS abacS abaca
S ScS SbScS abScS abacS abaca

S s

S b S
S c S

a S c S
S b S
a

a a a a
Ambiguitas
Tidak ada/belum ada algoritma yang dapat
menyelesaikan masalah ambiguitas.
Tetapi ada teknik standar untuk menulis grammar
yang tidak ambigu.
Ambiguitas
(Mengapa perlu diperhatikan)
a aa
E a2 E

E E E E

a E E E E a

a a a a
Ambiguitas
(Mengapa perlu diperhatikan)

E 2 22 E

E E E E

2 E E E E 2

2 2 2 2
Ambiguitas
(Mengapa perlu diperhatikan)
6 8
E E
2 4 4 2
E E E E
2 2 2 2
2 E E E E 2

2 2 2 2
2 22 6 2 22 8
Penyederhanaan CFG
Tujuan:
Untuk melakukan pembatasan sehingga tidak
menghasilkan pohon penurunan yang memiliki kerumitan
yang tidak perlu / aturan produksi yang tidak berarti.

Contoh:
SA
S AB | a
AB
Aa BC
Aturan S AB tidak berarti CD
karena B tidak memiliki Da|A
penurunan.
Memiliki kelemahan yaitu terlalu
panjang jalannya padahal berujung
pada S a, D A juga
menyebabkan kerumitan.
Penyederhanaan CFG
Suatu tata bahasa bebas konteks (CFG) dapat
disederhanakan dengan cara :
1. Penghilangan produksi useless
2. Penghilangan produksi unit
3. Penghilangan produksi
Penghilangan Produksi Useless
Produksi Useless :
Produksi yang memuat simbol variabel yang
tidak memiliki penurunan yang akan
menghasilkan terminal-terminal seluruhnya.
Produksi ini tidak berguna karena bila
diturunkan tidak akan pernah selesai (masih ada
simbol variabel yang tersisa).

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
Simbol A tidak memiliki penurunan yang
menuju terminal, sehingga bisa dihilangkan.
Konsekuensi no 1, aturan produksi S Abd
tidak memiliki penurunan.

Bentuk sederhana :
S aSa | Bde
B BBB | a
Contoh 2
S aB
A bcD | dAC
B e | Ab
C bCb | adF | ab
F cFB
Langkah penyederhaan :
1. A bCD, D tidak memiliki penurunan
2. Konsekuensi no1, A tidak memiliki
penurunan yang menuju terminal
3. B Ab tidak memiliki penurunan
4. F tidak memiliki penurunan yang menuju
terminal
5. C adF tidak memiliki penurunan
Contoh 2
Awal:
S aB
A bcD | dAC
B e | Ab
C bCb | adF | ab
F cFB
Sehingga menjadi :
S aB
Be
C bCb | ab
Penghilangan Produksi Unit

Produksi unit adalah produksi dimana ruas


kiri dan kanan aturan produksi hanya berupa
satu simbol variabel, misalnya : A B, C
D.
Keberadaan produksi unit membuat tata
bahasa memiliki kerumitan yang tidak perlu
atau menambah panjang penurunan.
Penyederhanaan ini dilakukan dengan
melakukan penggantian aturan produksi.
Contoh 1
S Sb Lakukan penggantian berurutan
SC mulai dari aturan produksi yang
paling dekat menuju ke penurunan
CD terminal ( => dibaca menjadi)
C ef
D dd
Lihat yang bisa dikurangi:
Disederhanakan:
C D => C dd S Sb
S C => S dd | ef S dd | ef
D dd C dd
C ef
D dd
Contoh 2
S Cba | D
A bbC
B Sc | ddd
C eA | f | C
D E | SABC
E gh

Penggantian yang dilakukan :


D E => D gh
C C dihapus
S D => S gh | SABC
Contoh 2
Aturan produksi setelah
Awal:
disederhanakan:
S Cba | D
A bbC S Cba | gh | SABC
B Sc | ddd A bbC
C eA | f | C
B Sc | ddd
D E | SABC
E gh C eA | f
D gh | SABC
E gh
Penghilangan Produksi
Penghilangan produksi dilakukan dengan
melakukan penggantian produksi yang
memuat variabel yang bisa menuju produksi .

S bcAd
A

Pada kasus diatas A nullable, serta A


satu-satunya produksi dari A, maka variabel A
bisa ditiadakan, hasil penyederhanaan tata
bahasa bebas konteks menjadi :
S bcd
Penghilangan Produksi
Tetapi bila kasusnya :
S bcAd
A bd |
Pada kasus diatas A nullable, tapi A
bukan satu-satunya produksi dari A, maka
hasil penyederhanaan :
S bcAd | bcd
A bd
Contoh 1
S AB
A abB | aCa |
B bA | BB |
C
Variabel yang nullable A, B, C. Dari S AB,
maka S juga nullable. Lakukan penggantian :
A aCa => A aa
B bA => B bA | b
B BB => B BB | B
A abB => A abB | ab
S AB => S AB | A | B |
C , B , A dihapus
Contoh 1
S AB
A abB | aCa |
B bA | BB |
C
Variabel yang nullable A, B, C. Dari S AB,
maka S juga nullable. Lakukan penggantian :
A aCa => A aa
B bA => B bA | b
B BB => B BB | B
A abB => A abB | ab
S AB => S AB | A | B |
C , B , A dihapus
Contoh 1
Hasil penyederhanaan:
S AB | A | B |
A abB | ab | aa
B bA | b | BB | B

Catatan:
Untuk penggantian S AB tetap pertahankan
produksi S , krn S merupakan simbol awal.
Ini merupakan satu2nya perkecualian produksi
yang tdk dihapus, yaitu produksi yang
dihasilkan oleh simbol awal.
Contoh 2
S ABaC
A BC
Bb|
CD|
Dd
Contoh 2
Variabel yang nullable B, C. Lakukan penggantian :
A BC => A BC | B | C
S ABaC => S ABaC | AaC | BaC | ABa|
aC | Aa | Ba | a

Hasil penyederhanaan :
S ABaC | AaC | BaC | ABa | aC | Aa | Ba | a
A BC | B | C
Bb
CD
Dd
Penyederhanaan CFG
Catatan:
Penghilangan suatu tipe produksi bisa menghasilkan
produksi tipe yang lain. Hal ini didasari bahwa
penghilangan produksi bisa menghasilkan produksi
unit.
Penghilangan produksi unit tidak menghasilkan
produksi . Penghilangan produksi useless tidak
menghasilkan produksi unit ataupun

Penghilangan Penghilangan Penghilangan CFG yang sdh


CFG
Produksi Produksi Unit Produksi Useless disederhanakan
LATIHAN :
1) Diketahui aturan produksi:
S aB | bA
A a | aS | bAA
B b | bS | aBB
Buatlah pohon penurunan untuk untai aaabbabbba

2) Lakukan penghilangan aturan produksi unit, useless, dan


dari tata bahasa bebas konteks berikut :
S a | aA | B | C
A aB |
B Aa
C cCD
D ddd
LATIHAN :
S aAd | aB
Ab|c
B ccd | ddc
Utk memperoleh untai : accd

Buktikan bahwa tata bahasa bebas konteks berikut ambigu :


S aB | bA
A a | aS | bAA
B b | bS | aBB

Untuk memperoleh untai : aabbab

Anda mungkin juga menyukai