Parse Tree
Contoh: Grammar sederhana untuk expression:
GE=(T,N,S,R),
di mana T={i,+,-,*,/,(,)},
N={E}
S=E
R = { E->E+E,
E->E-E,
E->E*E,
E->E/E,
E->(E),
E->i };
Cara penulisan grammar tersebut adalah cara penulisan yang lengkap menurut Chomsky,untuk selanjutnya hanya dituliskan bagian produksinya saja.
Dengan menggunakan grammar di atas, dianalisis ekspresi:
(a+b)/(a-b)
dari penganalisis leksikal diperoleh ekspresi yang berbentuk token (i + i)/(i-i).
Kita mengenal ekspresi di atas adalah pembagian, dengan pembilang (i+i) dan penyebut (i+i). Oleh karena itu produksi yang cocok adalah E ->E/E.
Perhatikan gambar 1 bahwa sisi kiri menjadi induk dan bagian kanan menjadi anak pari parse-tree.
Selanjutnya, pada gambar 2 karena pembilang dan penyebut adalah ekspresi bertanda kurung maka produksi untuk E adalah E-> (E).
Ekspresi E yang ada di dalam kurung pertama adalah penjumlahan (gambar 3), maka kita menggunakan produksi E->E+E dan E yang kedua adalah pengurangan digunakan produksi E->E-E, dan E yang terakhir menghasilkan i sehingga digunakan produksi E->i.
Parse Tree dan Penurunannya |
Parse tree di atas dapat dinyatakan dalam bentuk turunan (derivation) dengan notasi α1 => α2 sebagai berikut:
L(G) = { w | S => w } - Bahasa (Language) dengan grammar G adalah himpunan semua string terminal yang dapat diturunkan dari S menggunakan aturan G. Penurunan seperti diatas dapat dilakukan dengan penurunan kanan atau penurunan kiri.
Ambiguous Grammar
Perhatikan ekspresi i+i*i. Ekspresi tersebut mengandung 2 macam arti, yaitu:
Ambiguous Grammar |
Selanjutnya : Chomsky Hierarchy