Tata Bahasa Bebas Konteks
23
Satu-satunya tempat yang tersisa untuk generalisasi pada ruas kiri dari aturan- aturan produksi itu. Tata bahasa frasa-tersruktur phrase-structured grammer
adalah salah satu tata bahasa yang ruas kiri aturan-aturan produksinya itu bisa dibentuk dari suatu untai tak kosong atas N
∪ ∑, yang memuat suatu nonterminal.
Jadi untuk sebuah tata bahasa frasa-terstruktur, koleksi dari aturan-aturan produksi P memenuhi:
P ⊆ N ∪
∑ N N ∪ ∑ × N ∪ ∑ Tata bahasa-tata bahasa frasa tersruktur juga dikenal sebagai tata bahasa-
tata bahasa tipe 0 atau tak dibatasi. Istilah bebas konteks, apabila diterapkan pada tata bahasa-tata bahasa
mengingatkan akan adanya tata bahasa-tata bahasa yang terhadapnya konteks bersifat sensitif. Tata bahasa-tata bahasa konteks sensitif context-sensitive
grammer adalah tata bahasa-tata bahasa frasa terstruktur yang disini dibatasi oleh produksi-produksi
α → β sedemikian sehingga | α | → | β |. Terdapat
sebuah bentuk normal untuk tata bahasa-tata bahasa ini yang setiap produksinya berbentuk
α
1
A α
2
→ α
1
βα
2
dengan β
≠ ε. Produksi-produksi demikian mengizinkan penggantian nonterminal A dengan untai
β hanya bila A terjadi dalam “konteks” dari
α
1
dan α
2.
Tata bahasa-tata bahasa konteks sensitif tidak dapat menurunkan bahasa yang sama banyak dengan tata bahasa-tata bahasa frasa terstruktur, tetapi tata
bahasa-tata bahasa konteks sensitif mengizinkan terjadinya penurunan-penurunan didalam cara yang dapat diduga. Walaupun demikian, perhatikan bahwa karena
| S | = 1 dan karena | ε | = 0, tidaklah mungkin untuk menurunkan untai kosong
24
dalam sebuah tata bahasa konteks sensitif yang benar. Bahasa-bahasa pemrograman sering kali dirancang agar konteks sensitif sebagai sebuah cara
untuk menyederhanakan proses kompilasi. Contoh :
Untuk tata bahasa bebas konteks yang ditentukan oleh S
→ AA A
→ AAA | a | bA | Ab Tata bahasa bebas konteks diatas dapat menurunkan untai b
2
aba
2
ba sebagai berikut:
S = AA = AAAA = bAAAA = bbAAAA = bbaAAA = bbabAAA = bbabaAA = bbabaAbA = bbabaabA =
bbabaaba = b
2
aba
2
ba.
C.2. Penyederhanaan Tata Bahasa Bebas Konteks
Penyederhanaan tata bahasa bebas konteks bertujuan untuk melakukan pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki
kerumitan yang tidak perlu atau aturan produksi yang tidak berarti. Misalkan terdapat tata bahasa bebas konteks dengan simbol awal S :
S → A
A → B
B → C
C → D
D → a | A
Tata bahasa bebas konteks tersebut memiliki kelemahan terlalu panjang jalannya padahal berujung pada S
→ a, produksi D → A juga menyebabkan kerumitan. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
Suatu tata bahasa bebas konteks dapat disederhanakan dengan tiga cara sebagai berikut:
1. Penghilangan produksi useless tidak berguna 2. Penghilangan produksi unit
3. Penghilangan produksi ε.
Selanjutnya akan dibahas satu persatu cara penyederhanaan tata bahasa bebas konteks tersebut.
1. Penghilangan Produksi Useless Produksi useless adalah:
• Produksi yang memuat simbol variabel yang tidak memiliki
penurunan yang akan menghasilkan terminal-terminal seluruhnya maksudnya menuju terminal , 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 berlebihan.
Contoh : 1. Terdapat tata bahasa bebas konteks:
S → aAb | cEB
A → dBE | eeC
B → ff
C → ae
D → h
26
Dari tata bahasa bebas konteks diatas dapat diterangkan bahwa: 1. Aturan produksi S
→ cEB, A → dBE, E tidak memiliki penurunan
2. Aturan produksi B → ff , D → h, redundan
maka dari tata bahasa bebas konteks diatas, produksi yang useless: S
→ cEB A
→ dBE B
→ ff D
→ h Jadi tata bahasa bebas konteks setelah disederhanakan menjadi:
S → aAb
A → eeC
C → ae
2. Terdapat tata bahasa bebas konteks: S
→ aBD B
→ cD | Ab D
→ ef A
→ Ed F
→ dc Dari tata bahasa bebas konteks diatas dapat diterangkan sebagai berikut:
1. Aturan produksi A → Ed, E tidak memiliki penurunan
2. Aturan produksi F → dc, redundan
3. Aturan produksi B → Ab, A tidak memiliki penurunan
27
maka dari tata bahasa bebas konteks tersebut yang useless yaitu: B
→ Ab A
→ Ed F
→ dc Jadi aturan produksi untuk tata bahasa bebas konteks tersebut setelah
disederhanakan menjadi: S
→ aBD B
→ cD D
→ ef Pada prinsipnya setiap kali melakukan penyederhanaan harus diperiksa
lagi aturan produksi yang tersisa, apakah semua produksi yang useless sudah dihilangkan.
2. Penghilangan Produksi Unit Produksi unit adalah produksi dimana ruas kiri dan ruas kanan aturan
produksinya hanya berupa satu simbol variabel, misalkan A → B, C → D.
Keberadaan produksi unit membuat tata bahasa bebas konteks memiliki kerumitan yang tidak perlu atau menambah panjang penurunan. Penyederhanaan ini
dilakukan dengan melakukan penggantian aturan produksi unit. Contoh:
1. Tata bahasa bebas konteks: S
→ Cba | D A
→ bbC B
→ Sc | ddd C
→ eA | f | C D
→ E | SABC E
→ gh PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Penggantian yang dilakukan dari tata bahasa bebas konteks diatas adalah: D
→E menjadi D → gh C
→ C dihapus S
→ D menjadi S → gh | SABC Sehingga aturan produksi setelah penyederhanaan menjadi:
S → Cba | gh | SABC
A → bbC
B → Sc | ddd
C → eA | f
D → gh | SABC
E → gh
2. Tata bahasa bebas konteks: S
→ A S
→ Aa A
→ B B
→ C B
→ b C
→ D C
→ ab D
→ b Penggantian yang dilakukan dari tata bahasa bebas konteks diatas adalah:
1. C → D menjadi C → b
2. B → C menjadi B → b | ab, karena B → b sudah
ada maka cukup dituliskan B → ab
3. A → B menjadi A → ab | b
4. S → A menjadi S → ab | b
sehingga aturan produksi setelah penyederhanaan menjadi: PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
S → ab | b
S →Aa
A → ab | b
B → ab
B → b
C → b
C → ab
D → b
3. Penghilangan Produksi ε.
Produksi ε adalah produksi dalam bentuk α → ε atau bisa dianggap
sebagai produksi kosong empty . Penghilangan produksi ε dilakukan dengan
melakukan penggantian produksi yang memuat variabel yang bisa menuju produksi
ε, atau biasa disebut nullable. Prinsip penggantiannya bisa dilihat kasus berikut:
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
Tetapi bila kasusnya: S
→ bcAd A
→ bd | ε Pada kasus diatas A nullable, tapi A
→ ε bukan satu-satunya produksi dari A, maka hasil penyederhanaannya menjadi:
30
S → bcAd | bcd
A → bd
Contoh: 1. Terdapat tata bahasa bebas konteks:
S → AB
A → abB | aCa | ε
B → bA | BB | ε
C → ε
Variabel yang nullable adalah A, B, C. Dari S → AB maka S juga
nullable, maka dilakukan penggantian: A
→ aCa menjadi A → aa B
→ bA menjadi B → bA | b B
→ BB menjadi B → BB | B A
→ abB menjadi A → abB | ab S
→ AB menjadi S → AB | A | B | ε C
→ ε, B → ε, A → ε dihapus Perlu diperhatikan bahwa untuk penggantian S
→ AB disini tetap mempertahankan produksi S
→ ε, karena S merupakan simbol awal. Ini satu- satunya perkecualian produksi
ε yang dihasilkan oleh simbol awal. Jadi hasil akhir penyederhanaannya menjadi:
S → AB | A | B | ε
A → abB | ab | aa
B → bA | b | BB | B
2. Tata bahasa bebas konteks: S
→ dA | Bd A
→ bc PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
A → ε
B → c
Variabel yang nullable adalah A. A → ε bukan penurunan satu-satunya
dari A terdapat A → bc, maka S → dA diganti menjadi S → dA | d. A → ε
dihapus. Tata bahasa bebas konteks setelah penyederhanaan menjadi:
S → dA | d Bd
A → bc
B → c
Pada prinsipnya ketiga penyederhanaan penghilangan useless, unit dan ε
dilakukan bersama pada suatu tata bahasa bebas konteks, yang nantinya menyiapkan tata bahasa bebas konteks tersebut untuk diubah ke dalam suatu
Bentuk Normal Chomsky . Bentuk Normal Chomsky tidak penulis bahas. Hal yang memerlukan perhatian dari tata bahasa bebas konteks adalah penghilangan suatu
tipe produksi bisa menghasilkan produksi tipe yang lain, hal ini didasari kenyataan bahwa penghilangan produksi
ε bisa menghasilkan produksi unit. Perhatikan juga bahwa penghilangan produksi unit tidak menghasilkan produksi
ε, dan penghilangan produksi useless tidak menghasilkan produksi unit maupun
ε. Maka semua produksi yang tidak diinginkan bisa dihapuskan dengan melakukan
urutan sebagai berikut: •
Menghilangkan produksi ε
• Menghilangkan produksi unit
• Menghilangkan produksi useless
32
Hasil yang diperoleh nanti adalah tata bahasa yang sudah bebas dari ketiga jenis produksi tersebut.
Contoh: 1.
Tata bahasa bebas konteks: S
→ AA | C | bd A
→ Bb | ε B
→ AB | d C
→ de •
Pertama-tama dilakukan penghilangan produksi ε, sehingga aturan
produksinya menjadi : S
→ A | AA | C | bd A
→ Bb B
→ B | AB | d C
→ de •
Selanjutnya penghilangan produksi unit, sehingga aturan produksinya menjadi:
S → Bb | AA | de | bd
A → Bb
B → AB | d
C → de
• Penghilangan produksi useless, maka hasilnya menjadi:
S → Bb | AA | de | bd
A → Bb
B → AB | de
Jadi hasil akhir aturan produksi tidak lagi memiliki produksi ε, produksi unit
maupun produksi useless. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33