Apa itu Recursive Descent Parsing ??
RDP itu salah satu bentuk parsing yang
masuk dalam Top Down Parsing, dimana kita melakukan parsing secara menurun dari
atas ke bawah. Parsing sendiri itu sebuah proses penentuan apakah sebuah
string dari token dapat dihasilkan oleh sebuah grammar. dalam melakukan
Parsing, kita menggunakan Parsing Tree seperti di bawah ini:
Gambar 1. Contoh bentuk Parsing Tree
Recursive Descent Parser adalah salah satu
cara mengaplikasikan bahasa bebas konteks untuk melakukan analisa sintaksis
suatu source code. Ciri dari recursive descent parser yang menonjol adalah
secara rekursif menurunkan semua variabel dari awal sampai bertemu terminal dan
tidak pernah mengambil token secara mundur (no backtrack).
Berbeda dengan mesin turing yang dapat
maju dan mundur dalam melakukan parsing. Ciri lain dari Recursive Descent
Parser adalah sangat bergantung pada algoritma scan dalam mengambil token.
Syarat grammar yang dapat di-parse dengan RDP adalah :
ü Context
free grammar
ü Tidak
memiliki left recursion
ü Menerapkan aturan alternatif produksi yang terpanjang (bila terdapat dari satu aturan alternatif produksi)
Kelemahan RDP :
Ø Mereka
tidak secepat beberapa metode lain
Ø Sulit
untuk memberikan pesan kesalahan yang baik
Ø Mereka
tidak dapat melakukan parsing yang membutuhkan sembarangan lookaheads
panjang
Kelebihan RDP :
Ø Mereka
sangat sederhana
Ø Mereka
dapat dibangun dari recognizers hanya dengan melakukan beberapa tambahan
pekerjaan-spesifik, membangun pohon parse
Langkah RDP :
- Jika produksi A mempunyai dua buah ruas kanan atau lebih maka produksi yang dipilih untuk digunakan adalah produksi dengan symbol pertama ruas kanannya sama dengan input yang sedang dibaca. Jika tidak ada produksi yang demikian maka dikatakan bahwa parsing tidak dapat dilakukan.
- Jika terdapat dua atau lebih produksi dengan ruas kiri yang sama maka karakter pertama dari semua ruas kanan produksi tidak boleh sama. Ketentuan ini tidak melarang adanya produksi yang bersifat rekursif kiri.
Contoh Soal :
Contoh 1.
Grammar G={S → aB | A, A → a, B → b | d}. Gunakan metode Recursive Descent
Parsing untuk melakukan analisis sintaks terhadap kalimat x = ac!
Contoh 2.
Gunakan metode recursive descent untuk melakukan analisis sintak terhadap x = amsal
Penyelesaiannya :
Maka Parsing Gagal karena S tidak mengandung sal melainkan sol dan tol
Contoh 3.
Grammar G={S → bA | c, A → dSd | e}. Gunakan metode Recursive Descent
Parsing untuk melakukan analisis sintaks terhadap kalimat x = bdcd.
Komentar
Posting Komentar