Teori Bahasa Dan Automata - Tata Bahasa Bebas Konteks (Latihan Parsing)
Assalamualaikum Wr. Wb.
Pada postingan ini saya akan membagikan sebuah materi penyederhanaan tata bahasa bebas konteks. Tujuan saya membuat postingan ini adalah untuk memenuhi Tugas Materi 6 pada Mata Perkuliahan TEORI BAHASA DAN AUTOMATA.
Pada postingan sebelumnya, saya membagikan materi tentang pohon penurunan. Kali ini saya akan mencoba membahas soal latihannya
Pada simpul kiri (S => A):
A => AAA
S => bA (agar mendapat string b sebagai awal sehingga didapat {b})
Sehingga jika dibaca dari kiri ke kanan ataupun dari kanan ke kiri, maka susunan string akan sesuai dengan susunan “bbaaaabb”.
Pada postingan sebelumnya, saya membagikan materi tentang pohon penurunan. Kali ini saya akan mencoba membahas soal latihannya
Soal Latihan 1 Parsing/Parse Tree
S → AA
A → AAA | a | bA | Ab
Buatlah pohon penurunan dari
himpunan produksi diatas untuk membangkitkan string dengan susunan
"bbabaaba".
Jawab
Diketahui:
S mempunyai satu buah derivasi, yaitu AA
S mempunyai satu buah derivasi, yaitu AA
A mempunyai empat buah derivasi,
yaitu AAA, a, Ba, Ab
Kita harus memilih simpul mana yang
harus diselesaikan terlebih dahulu, bisa dimulai dari kiri atau dari kanan tapi
harus memilih derivasi yang tepat dengan string pembangkit yang diinginkan
Jika simpul sudah merupakan
variabel terminal, maka simpul tersebut sudah tidak dapat dilakukan
derivasi/penurunan lagi
Langkah pengerjaan:
Pohon Penurunan 1.1 |
Pada simpul kiri (S => A):
A => AAA
S => bA (agar mendapat string b sebagai awal sehingga didapat {b})
A => bA (agar mendapat string b sebagai lanjutannya sehingga didapat
{bb})
A => a (agar mendapat string a sebagai lanjutannya sehingga didapat
{bba})
A => bA (agar mendapat string b sebagai lanjutannya sehingga didapat
{bbab})
A => a (agar mendapat string a sebagai lanjutannya sehingga didapat
{bbaba})
A => a (agar mendapat string a sebagai lanjutannya sehingga didapat
{bbabaa})
Pada simpul kanan (S => A):
A => bA (agar mendapat string b sebagai lanjutannya maka kita dapat
{bbabaab})
A => a (agar mendapat string a sebagai lanjutannya maka kita dapat
{bbabaaba})
Pohon Penurunan untuk susunan
string "bbabaaba":
Pohon Penurunan 1.2 |
Pohon penurunan ini menggunakan leftmost derivation (simbol variabel
terkiri yang diperluas terlebih dulu)
Sehingga jika dibaca dari kiri ke
kanan, maka susunan string akan sesuai dengan susunan “bbabaaba”.
Soal Latihan 2 Parsing/Parse Tree
S → AB
A → Aa | bB
B → a | Sb
Buatlah pohon penurunan dari
himpunan produksi diatas untuk membangkitkan string dengan susunan
"baabaab".
Jawab
Diketahui:
S mempunyai satu buah derivasi, yaitu AB
S mempunyai satu buah derivasi, yaitu AB
A mempunyai dua buah derivasi,
yaitu Aa dan bB
B mempunyai dua buah derivasi,
yaitu a dan Sb
Kita harus memilih simpul mana yang
harus diselesaikan terlebih dahulu, bisa dimulai dari kiri atau dari kanan tapi
harus memilih derivasi yang tepat dengan string pembangkit yang diinginkan
Jika simpul sudah merupakan
variabel terminal, maka simpul tersebut sudah tidak dapat dilakukan
derivasi/penurunan lagi
Langkah pengerjaan:
Pohon Penurunan 2.1 |
Pada simpul kiri (S => A):
A => Aa (maka didapatkan string a)
A => Ab (agar mendapat string b sebagai awal sehingga didapat {b})
B => a (agar mendapat string a sebagai lanjutan sehingga didapat
{baa})
Pada simpul kanan (S => B):
B => Sb (maka didapatkan string b sebagai akhir sehingga susunannya
menjadi {baa__b})
S => AB
A => bB (agar mendapat string b sebagai lanjutannya maka susunannya
menjadi {baab__b})
B => a (agar mendapat string a sebagai lanjutannya maka susunannya
menjadi {baaba__b})
B => a (agar mendapat string a sebagai lanjutannya maka susunannya
menjadi {baabaab})
Pohon Penurunan untuk susunan
string "baabaab":
Pohon Penurunan 2.2 |
Sehingga jika dibaca dari kiri ke
kanan, maka susunan string akan sesuai dengan susunan “baabaab”.
Soal Latihan 3 Parsing/Parse Tree
S → Ba | Ab
A → Sa | Aab | a
B → Sb | Bba | b
Buatlah pohon penurunan dari himpunan
produksi diatas untuk membangkitkan string dengan susunan "bbaaaabb".
Jawab
Diketahui:
S mempunyai dua buah derivasi, yaitu Ba dan Ab
S mempunyai dua buah derivasi, yaitu Ba dan Ab
A mempunyai tiga buah derivasi,
yaitu Sa, Aab dan a
B mempunyai tiga buah derivasi,
yaitu Sb, Bba dan b
Kita harus memilih simpul mana yang
harus diselesaikan terlebih dahulu, bisa dimulai dari kiri atau dari kanan tapi
harus memilih derivasi yang tepat dengan string pembangkit yang diinginkan
Jika simpul sudah merupakan
variabel terminal, maka simpul tersebut sudah tidak dapat dilakukan
derivasi/penurunan lagi
Langkah pengerjaan:
Pohon Penurunan 3.1 |
Pada simpul kanan (S => b):
S => b (maka didapatkan string b sebagai akhir sehingga susunannya
menjadi {_____b})
Pada simpul kiri (S => A):
A => Aab (maka didapatkan string {___abb})
A => Sa (maka didapat string {___aabb})
S => Ba (maka didapat string {___aaabb})
B => Bba (maka didapat string {___baaaabb})
B => b (agar mendapatkan string b sebagai string paling kiri sehingga
didapat {bbaaaabb})
Pohon Penurunan untuk susunan
string "bbaaaabb":
Pohon Penurunan 3.2 |
Sehingga jika dibaca dari kiri ke kanan ataupun dari kanan ke kiri, maka susunan string akan sesuai dengan susunan “bbaaaabb”.
Soal Latihan 1 Ambiguitas
S → AB | C
A → aAb | ab
B → cBd | cd
C → aCd | aDd
D → bDc | bc
Buatlah pohon penurunan dari
himpunan produksi diatas untuk membangkitkan string dengan susunan
"aabbccdd".
Jawab:
CFG dikatakan ambigu apabila
terdapat penurunan yang dapat dikerjakan dengan dua cara sekaligus, lebih dari
satu leftmost derivation dan/atau lebih dari satu rightmost derivation.
Pohon Penurunan
"aabbccdd" (1)
Pohon Penurunan 4.1 |
Sehingga jika dibaca dari kiri ke
kanan, maka susunan string akan sesuai dengan susunan “aabbccdd”
Pohon Penurunan
"aabbccdd" (2)
Pohon Penurunan 4.2 |
Sehingga jika dibaca dari kiri ke
kanan, maka susunan string akan sesuai dengan susunan “aabbccdd”.
Dari kedua pohon penurunan di atas dapat
dilihat bahwa untuk sususan string yang sama ("aabbccdd") dapat
dibuat pohon penurunan yang berbeda, maka dapat dikatakan bahwa tata bahasa
bebas konteks tersebut ambigu.
Video Pembahasan:
Video juga bisa ditonton di Youtube
Sekian materi yang saya posting di blog ini. Mohon maaf apabila ada kekurangan dan kesalahan dalam penulisan. Semoga dapat bermanfaat bagi kita semua
Terima Kasih
Wassalamualaikum Wr. Wb.
-----------------------------------------------------------------------------------------------------------------------------------------------
DAFTAR PUSTAKA
- Materi Persentasi "Materi 6 Tata Bahasa Bebas Konteks (Pohon Penurunan)" Dosen pengampu Teori Bahasa Automata: Garno, M.Kom. Fakultas Ilmu Komputer Universitas Singaperbangsa Karawang
- Materi Persentasi "Materi 6 Tata Bahasa Bebas Konteks Latihan Parsing" Dosen pengampu Teori Bahasa Automata: Garno, M.Kom. Fakultas Ilmu Komputer Universitas Singaperbangsa Karawang
- Media online: https://www.academia.edu/37758551/Pohon_Penurunan
- Media online: http://mshang.ca/syntree/ (digunakan untuk membuat pohon penurunan)
Komentar
Posting Komentar