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
grammar
E E A E | ( E ) | - E | id
E E + E | E * E | ( E ) | id
A+| -|*|/ |^
Contoh :
E E + E | E * E | ( E ) | id
Dengan string : id+id*id $
Maka tabel M[Ni,Nj] yang terbentuk :
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 :
Digambarkan :
gidf*g*f*g+f$
fidg*f+g+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 :
Contoh :
Transisi grammar :