Penguraian BawahAtas Bottomup Parsing Bentuk umumnya penguraian shiftreduksi
Penguraian Bawah-Atas (Bottom-up Parsing) Bentuk umumnya ® penguraian shift-reduksi (shift-reduce parsing). Yang mudah diimplementasikan ® penguraian presedensi operator (operator precedence parsing). Bentuk yang lebih umum ® penguraian LR. Penguraian shift-reduksi bertujuan membentuk suatu pohon urai (parse tree) untuk suatu string input, dimulai dari daun (bawah) lalu ke akarnya (atas). Proses ini dapat dianggap sebagai reduksi string w menjadi simbol awal suatu grammar. Contoh : S ® a. ABc A ® Abc | b B®d abbcdc dapat direduksi menjadi S dengan langkah-langkah : abbcdc a. Abcdc (pakai A ® b, ganti yang paling kiri) a. Adc (pakai A ® Abc, ganti A) a. ABc (pakai B ® d) S 1
Penguraian Bawah-Atas (Bottomup Parsing) (2) Right most derivasinya adalah langkah kebalikan proses tadi : S Þ a. ABc Þ a. Adc Þ a. Abcdc Þ abbcdc Pada pereduksian, untuk memilih mana yang harus diganti harus memakai handel. Handel dari suatu bentuk sentensial-kanan g adalah suatu produksi A ® dan suatu posisi dari g dimana string b bisa ditemukan diganti oleh A untuk menghasilkan bentuk sentensial-kanan sebelumnya dengan cara derivasi right-most untuk g. Jadi S ® a. Aw ® a. B , maka A ® merupakan handel dari abw. A ® b adalah handel dari abbcdc A ® Abc adalah handel dari a. Abcdc Kadang-kadang sisi kanan dari handel tersebut yang lebih sering disebut handel. Reduksi b menjadi A dapat dianggap sebagai “pruning the handle”; menghapus anak dari A dalam proses urai. 2
Penguraian Bawah-Atas (Bottom-up Parsing) (3) Contoh lagi : (1) E ® E + E (2) E ® E * E (3) E ® ( E ) (4) E ® id Salah satu derivasi right-most untuk id 1 + id 2 * id 3 adalah : EÞE+E*E Þ E + E * id 3 Þ E + id 2 * id 3 Þ id 1 + id 2 * id 3 3
Penguraian Bawah-Atas (Bottom-up Parsing) (4) Proses reduksinya : Struktur data/implementasi pengurian shift-reduksi adalah dengan memakai stack untuk menyimpan simbol grammar. Dipakai juga suatu buffer untuk menyimpan string w yang akan diurai. $ sebagai tanda dasar stack dan akhir input. Pada awalnya : stack $ input w$ 4
Penguraian Bawah-Atas (Bottomup Parsing) (5) Lalu nol atau lebih simbol input dipindahkan (shift) ke stack, sampai suatu handel b berada di puncak stack. Handel lalu direduksi. Proses diulang sampai ditemukan error atau berhasil. stack $S input $ Aksi-aksi dalam pengurian shift-reduksi : 1. Shift, simbol input berikutnya dipindahkan ke puncak stack. 2. Reduksi, parser tahu handel ada di puncak, lalu handel direduksi 3. Accept, proses selesai, tak ada error. 4. Error, error ditemukan. 5. Contoh : id 1 + id 2 * id 3, 5
Penguraian Bawah-Atas (Bottom-up Parsing) (5) 6
- Slides: 6