Anda di halaman 1dari 6

BOTTOM UP PARSING

Operator Procedure Parser

Merupakan proses menafsirkan sebuah operator akan dikerjakan terlebih dahulu


atau dikerjakan setelahnya.

Operator Grammar
Digunakan untuk membandingkan level dari satu operator dengan operator lainnya.
Contoh pada matematika, jika diketahui persamaan a+b/c, maka operator / akan
dikerjakan terlebih dajulu kemudian diikuti dengan operator +.
Disini terlihat maka level operator / lebih tinggi dari +.
Maka untuk menentukan sebuah operator grammar dengan menggunakan sebuah
Operator Precedence Parsing, yaitu :
Tata Bahasa yang memiliki sifat yang produksinya pada sisi kanan tidak memiliki
atau dua nonterminal yang bersebelahan / berturut-turut.
Grammar

yang

termasuk

Operator Grammar yang bukan operator grammar

grammar

E E A E | ( E ) | - E | id

E E + E | E * E | ( E ) | id

A+| -|*|/ |^

Algoritma membuat tabel Operator Precedence Parsing :


1. Buatlah tabel M[Ni,Nj] dimana N adalah operator
2. Bandingkan I dan j :
a. apabila keduanya memiliki input yang sama yaitu berupa string atau $, maka
tidak dapat dibandingkan.
b. Apabila operator yang dibandingkan adalah :
+ dengan + maka berikan tanda >

+ dengan * maka berikan tanda <


+ dengan $ maka berikan tanda >
String dengan + maka berikan tanda >
Dimana string merupakan operator paling tinggi dan $ operator paling rendah
Algoritma bottom up dengan operator precedence :
1. Bentuk kedalam pita stack $
2. Bandingkan input i,j
a. apabila menghasilkan tanda < maka input tersebut di push/ tambahkan
ke dalam stack
b. apabila menghasilkan tanda> maka input tersebut di pop/ mengambil
dari stack
3. kerjakan langkah 2 hingga input berakhir, dan apabila mencapai struktur
teratas / produksi kiri maka proses berhasil/ diterima/ accept

Contoh :
E E + E | E * E | ( E ) | id
Dengan string : id+id*id $
Maka tabel M[Ni,Nj] yang terbentuk :

Hubungan operator pada tabel perbandingan :

Digunakan untuk menentukan urutan level operator paling tinggi dan terendah.
Menggunakan persamaan fungsi.
1. Tentukan dahulu fungsi berdasarkan kolom dan baris
2. Bandingkan dua fungsi, apabila fungsi pertama
kedua, maka fungsi dua menuju fungsi satu.
Contoh :

grafik yang merepresentasikan fungsi precedence :

Digambarkan :
gidf*g*f*g+f$
fidg*f+g+f$

lebih besar dari fungus

sehingga didapat prioritas operator dari tertinggi hingga ke rendah adalah :


id + *
f

2 4 0

g 5 1 3 0
Maka urutan tertinggi untuk * dan + adalah f* bernilai 4 lebih besar dari g+ bernilai 1,
sehingga * operator tertinggi dari +.

LR (0) PARSER
Sebuah produksi disebut LR(0) apabila A yang dipilih dan jika dan adalah dua
symbol string (termasuk empty) dimana = maka A.. (tidak ada acaun
secara eksplisit untuk menentukan string yang didepan lookahead)
Contoh :

Grammar tesebut memiliki 3 produksi yang dipilih dan 8 item :

Transisi dari grammar diatas :

Contoh :

Transisi grammar :

Tabel Action parser dengan string ((a))

Tabel LR(0) parser dengan string ((a))

Anda mungkin juga menyukai