Anda di halaman 1dari 9

Teknik Kompilasi

Bottom-Up Parsing
(Penguraian Bawah-Atas)

Sekolah Tinggi Teknologi Bandung


Bandung
1
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)
2
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 
adalah suatu produksi A   dan suatu posisi dari  dimana string
bisa ditemukan dan diganti oleh A untuk menghasilkan bentuk
sentensial-kanan sebelumnya dengan cara derivasi right-most
untuk  .
Jadi S  aAw  aB , maka A   merupakan handel dari w.
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  menjadi A dapat dianggap sebagai
“pruning the handle”; menghapus anak dari A dalam proses urai.

3
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

4
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$

5
Penguraian Bawah-Atas (Bottom-
up Parsing) (5)
Lalu nol atau lebih simbol input dipindahkan (shift) ke stack,
sampai suatu handel  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,
6
Penguraian Bawah-Atas
(Bottom-up Parsing) (5)

7
LATIHAN
• S  aB | bA
A  a | aS | bAA
B  b | bS | aBB
• Reduksi ‘aabbaabb’ sehingga menjadi S
• Lengkapi dengan tabel proses reduksinya
• Lengkapi dengan penguraian shift-reduksi
LATIHAN
• Diketahui :
• S  aAS | a
• A  a | aS | bAA
• B  SbA | SS | ba,
• Reduksi ‘aabbaa’ sehingga menjadi S
• Lengkapi dengan tabel proses reduksinya
• Lengkapi dengan penguraian shift-reduksi

Anda mungkin juga menyukai