Anda di halaman 1dari 6

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  aABc
A  Abc | b
Bd
abbcdc dapat direduksi menjadi S dengan langkah-langkah :
abbcdc
aAbcdc (pakai A  b, ganti yang paling kiri)
aAdc (pakai A  Abc, ganti A)
aABc (pakai B  d)
1
S
Penguraian Bawah-Atas (Bottom-
up Parsing) (2)
Right most derivasinya adalah langkah kebalikan proses tadi :
S  aABc  aAdc  aAbcdc abbcdc
Pada pereduksian, untuk memilih mana yang harus diganti harus
memakai handel. Handel dari suatu bentuk sentensial-kanan g
adalah suatu produksi A  b dan suatu posisi dari g dimana string
bbisa ditemukan dan diganti oleh A untuk menghasilkan bentuk
sentensial-kanan sebelumnya dengan cara derivasi right-most
untuk g .
Jadi S  aAw  aB , maka A  b merupakan handel dari abw.
A  b adalah handel dari abbcdc
A  Abc adalah handel dari aAbcdc
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 id1 + id2 * id3 adalah :
EE+E
E+E*E
 E + E * id3
 E + id2 * id3
 id1 + id2 * id3

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 (Bottom-
up 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 input
$S $
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.
Contoh : id1 + id2 * id3,
5
Penguraian Bawah-Atas
(Bottom-up Parsing) (5)