Teori Bahasa Dan Automata - Tata Bahasa Bebas Konteks (Pohon Penurunan)
Assalamualaikum Wr. Wb.
Contoh
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.
POHON PENURUNAN
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
PARSING
Sebuah pohon (tree) adalah suatu
graph terhubung tidak sirkuler, yang memiliki satu simpul (node)/vertex yang
disebut akar (root) dan dari situ memiliki lintasan ke setiap simpul. Gambar
dibawah ini memberikan contoh sebuah tree yang menguraikan kalimat dalam bahasa
inggris.
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 (derivation tree/parse tree) berguna untuk
menggambarkan bagaimana memperoleh suatu string (untai) dengan cara menurunkan
simbol-simbol variabel menjadi simbol–simbol terminal. Setiap simbol variabel
akan diturunkan menjadi terminal, sampai tidak ada yang belum tergantikan.
Proses Parsing merupakan tahapan
analisis sintaksis yang berguna untuk memeriksa urutan kemunculan token. Di
dalam mengimplementasikan sebuah metode parsing ke dalam program perlu
diperhatikan tiga hal sebagai berikut:
- Rentang Waktu eksekusi
- Penanganan Kesalahan
- Penanganan Kode
Misalnya terdapat tata bahasa
bebas konteks dengan aturan produksi (simbol awal S, selanjutnya di dalam bab
ini digunakan sebagai simbol awal untuk tata bahasa konteks adalah S):
S à AB
A à aA | a
B à bB | b
Akan kita gambarkan pohon
penurunan untuk memeperoleh untai: ‘aabbb’. Pada pohon
tersebut simbol awal akan menjad akar (root). Setiap kali penurunan dipilih
aturan produksi yang menuju ke solusi. Simbol – simbol variabel akan menjadi
simpul - simpul yang mempunyai anak.
Simpul-simpul yang tidak mempunyai anak akan menjadi simbol terminal. Kalau
kita baca simbol terminal yang ada (pada gambar) dari kiri ke kanan akan
diperoleh untai ‘aabbb’.
Gambar 1 |
Proses
penurunan atau parsing bila dilakukan dengan cara sebagai berikut:
- Penurunan terkiri (leftmost derivation): simbol variabel terkiri yang diperluas terlebih dulu.
- Penurunan terkanan (rightmost derivation): simbol variabel terkanan yang diperluas terlebih dahulu.
Contoh
Terdapat tata bahasa bebas
konteks:
S à aAS | a
A à SbA | ba
Untuk
memperoleh untai ‘aabbaa’ dari tata bahasa bebas kontkeks diatas (tanda ‘=>’ bisa
dibaca ‘menurunkan’):
- Dengan penuruna terkiri : S => aAS => aSbAS =>aabAS => aabbaS => aabbaa
- Dengan penurunan terkanan : S => aAS => aAa => aSbAa => aSbaa => aabbaa
Kita dapat melihat pohon
penurunannya (pada gambar) meskipun proses penurunannya berbeda, namun akan
tetap memiliki pohon penurunan yang sama.
Gambar 2 |
Contoh
Biasanya persolaan yang diberikan
berkaitan dengan pohon penurunan adalah untuk mencari penurunan yang hasilnya
menuju kepada suatu untai yang ditentukan. Daalm hal ini, perlu untuk melakukan
percobaan pemilihan aturan produksi yang bisa menuju ke solusi. Misalkan sebuah
tata bahasa bebas konteks memiliki aturan produksi sebagai berikut :
S à B | bA
A à a | aS | bAA
B à b | bS | aBB
Pohon penurunan untuk memperoleh
‘aaabbabbba’ bisa dilihat pada gambar 3
Gambar 3 |
AMBIGUITAS
Ambiguitas/kedwiartian terjadi
bila terdapat lebih dari satu pohon penurunan yang berbeda untuk memperoleh
suatu untai.
Misalkan
terdapat tata bahasa bebas konteks:
S à A|B
A à a
B à a
Untuk memperoleh untai ‘a’ bisa
terdapat dua cara penurunan berikut ini:
S => A => a
S => B => a
Contoh lain, terdapat tata bahasa
bebas konteks:
S à SbS | ScS | a
Kita bisa menurunkan untai
‘abaca’ dalam dua cara berikut ini:
S => SbS => SbScS =>
SbSca => Sbaca => abaca
S => ScS => SbScS =>
abScS => abacS => abaca.
Pohon penurunannya bisa dilihat
pada gambar:
Gambar 4 (a-b-a-c-a) |
Gambar 5 (a-b-a-c-a) |
Tambahan
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
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 6 |
Gambar 7 |
String ambigu Sebuah string yang
mempunyai lebih dari satu pohon sintaks disebut string ambigu (ambiguous).
Grammar yang menghasilkan paling sedikit sebuah string ambigu disebutgrammar
ambigu.
Kita bisa mlihat bahwa untuk
untai yang sama (‘abaca’) dapat dibuat pohon penurunan yang berbeda, maka dapat
dikatakan tata bahasa bebas konteks tersebut ambigu. Jadi, untuk menunjukkan
bahwa suatu tata bahasa bebas konteks ambigu, bisa dilakukan dengan menemukan
untai yang memungkinan pembentukan lebih dari satu pohon penurunan. Ambiguitas
dapat menimbulkan masalah pada bahasa – bahasa tertentu, baik bahasa alami
maupun pada bahasa pemograman. Bila suatu struktur bahasa memiliki lebih dari
suatu dekomposisi (penurunan), dan susunannya akan menentukan art, maka artinya
menjadi ambigu
KESIMPULAN
Tata bahasa bebas konteks adalah
suatu cara yang menunjukkan bagaimana menghasilkan untai–untai dalam sebuah
bahasa, dan tidak terdapat pembatasan pada hasil produksinya.
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.
Pohon penurunan (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. Proses penurunan atau parsing bisa
dilakukan dengan cara:
- Penurunan terkiri (leftmost derivation) yaitu simbol variabel terkiri yang diperluas terlebih dahulu.
- Penurunan terkanan (rightmost derivation) yaitu simbol variabel terkanan yang diperluas terlebih dahulu.
Ambiguitas terjadi bila terdapat
lebih dari satu pohon penurunan yang berbeda untuk memperoleh suatu string.
Sebuah string yang mempunyai lebih dari satu pohon sintaks disebut string
ambigu (ambiguous). Grammar yang menghasilkan paling sedikit sebuah string
ambigu disebut grammar ambigu.
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