Anda di halaman 1dari 4

TOP DOWN Parsing Algoritma

Pada metode parsing Top Down terdapat dua metode yang digunakan dalam menentukan penggunaan
produksi, yaitu dengan cara Brute Force di mana metode ini memiliki sistim backup terhadap input
yang kita masukkan dan metode recursive descent yang tidak memiliki sistem backup atau tanpa
backup.

• Metode Brute Force

Parsing yang menggunakan produksi alternatif, jika ada, ketika hasil penggunaan sebuah
produksi tidak sesuai dengan simbol input. Penggunaan produksi sesuai dengan nomor urut produksi.

Contoh:
Sebuah grammar G = {S → aAd|aB, A → b|c, B → ccd|ddc}.
Di sini kita akan menggunakan metode brute force untuk melakukan analisa terhadap kalimat x
= accd.

S S S

A A d a A d

b
Hasil : Hasil : a Hasil : ab
Input : Input : a Input : ac
Sisa : accd Sisa : ccd Sisa : cd
Penjelasan : Gunakan Penjelasan : Hasil = Input. Penjelasan : Hasil ≠ Input.
produksi Gunakan produksi A Backup : Gunakan produksi
S pertama. Masukkan simbol pertama. A
terkiri kalimat sebagai alternatif pertama.
input.

S S S

a A d a A d a B

c c
Hasil : ac Hasil : acd Hasil : a
Input : ac Input : acc Input : a
Sisa : cd Sisa : c Sisa : ccd
Penjelasan : Hasil = Input. Penjelasan : Hasil ≠ Input. Penjelasan : Hasil = Input.
Karakter berikutnya adalah Tidak ada lagi produksi A Gunakan produksi B
simbol terminal, Hasil alternatif, backup : gunakan pertama.
dibandingkan dengan Input. produksi S alternatif pertama.
S S S

a B a B a B

c c d c c d c c d

Hasil : ac Hasil : acc Hasil : accd


Input : ac Input : acc Input : accd
Sisa : cd Sisa : d Sisa :
Penjelasan : Hasil = Input. Penjelasan : Hasil = Input. Penjelasan : Hasil = Input.
Karakter berikutnya adalah Karakter berikutnya adalah SELESAI, SUKSES
simbol terminal, Hasil simbol terminal, Hasil
dibandingkan dengan Input. dibandingkan dengan Input.

Dapat kita lihat bahwa metode brute force akan melakukan analisa terhadap seluruh produksi
untuk melakukan pengecekan terhadap produksi yang tidak sesuai dengan simbol input.

Metode ini akan otomatis kembali ke input state sebelumnya jika hasil yang di dapat tidak
sesuai dengan input yang ada. Metode ini akan terus melakukan pengecekan hasil produksi hingga hasil
yang ada telah sesuai dengan input. Hasil yang di dapatkan ketika a  b dianggap tidak valid karena
input yang ada tidak berupa ab melainkan ac. oleh karena itu proses kembali ke state awal dan mencari
alternatif produksi yang sesuai, dimana produksi yang sesuai ada pada A.

Metoda Brute-Force tidak dapat menggunakan grammar rekursi kiri, yaitu grammar yang
mengandung produksi rekursi kiri (left recursion) : A → A∝. Produksi rekursi kiri akan menyebabkan
parsing mengalami looping tak hingga.

• Metoda Recursive-Descent
- Kelas metoda tanpa backup, termasuk metoda recursive descent, adalah kelas metoda parsing
yang tidak menggunakan produksi alternatif ketika hasil akibat penggunaan sebuah produksi
tidak sesuai dengan simbol input. Jika produksi A mempunyai dua buah ruas kanan atau lebih
maka produksi yang dipilih untuk digunakan adalah produksi dengan simbol pertama ruas
kanannya sama dengan input yang sedang dibaca. Jika tidak ada produksi yang demikian maka
dikatakan bahwa parsing tidak dapat dilakukan.
- Ketentuan produksi yang digunakan metoda recursive descent adalah : Jika terdapat dua atau
lebih produksi dengan ruas kiri yang sama maka karakter pertama dari semua ruas kanan
produksi tersebut tidak boleh sama. Ketentuan ini tidak melarang adanya produksi yang bersifat
rekursi kiri.

Diketahui grammar G = {S → aBA, A → a, B → bd}. Gunakan metoda recursive


descent untuk melakukan analisis sintaks terhadap kalimat x = ac.
S S

a B SELESAI,
Hasil : PARSING GAGAL
Input : Sisa : ab Hasil : a
Penjelasan : Masukkan Input : a Sisa : c
simbol terkiri kalimat Penjelasan : Hasil = Input.
sebagai input. Gunakan produksi B dengan
Gunakan produksi S dengan simbol pertama ruas
simbol pertama ruas kanan = c. Karena produksi
kanan = a demikian maka parsing gagal
dilakukan.

• Kompleksitas waktu
Kompleksitas waktu dari Top-Down membutuhkan waktu yang lama, sehingga membuang
waktu.

• Advantages
1. Bisa melakukan backtracking khususnya pada metode brute force
2. Dimulai dari S-node, sehingga tidak akan pernah akan menghasilkan struktur yang tidak
membentuk S.
3. Dapat menampung ambiguitas dengan memperluas semua alternatif right-hand side dari aturan
tata bahasa.

• Disadvantages
1. Dapat terjadi left recursion, dimana dapat terjadi loop yang tak terhingga.
2. Bisa membentuk tree yang tidak konsisten dengan input.
Bottom-Up parsing

Left to Right
Process yang di lakukan antara lain:

− shift, membaca string berikutnya


− reduce, mengubah string menjadi simbol variable yang dapat menurunkan string tersebut

LR(k)

left to right grammars parsing melakukan pembacaan input dari kiri ke kanan, kemudian proses
melakukan derivasi dengan metode right most derivation. Setelah itu proses akan membaca simbol k
berikutnya.

Contoh parsing:

S → AxB|B
A → yB|z
B→A

konfigurasi state aksi

| zxz $ 1 shift
z| xz $ 6 reduce A → z
| Axz $ 1 shift
A| xz $ 3 shift
Ax | z $ 8 shift
Axz| $ 6 reduce A → z
Ax | A $ 1 shift
AxA | $ 3 reduce B → A
Ax | B $ 1 shift
AxB | $ 4 reduce S → AxB
|S$ 1 shift
S|4 2 accepted