Pages

Subscribe Twitter

Jumat, 29 Oktober 2010

GRAMMAR CONTEXT-FREE DAN PARSING



GRAMMAR CONTEXT-FREE DAN PARSING

Bentuk umum produksi CFG adalah : a ® b, a Î V, b Î (V½V)*

Analisis sintaks adalah penelusuran sebuah kalimat (atau sentensial) sampai pada simbol awal grammar. Analisis sintaks dapat dilakukan melalui derivasi atau parsing. Penelusuran melalui parsing menghasilkan pohon sintaks.


Contoh 1 :

Diketahui grammar G = {I ® H½I H½IA, H ® a½b½c½...½z, A ® 0½1½2½...½9}

dengan I adalah simbol awal. Berikut ini kedua cara analisa sintaks untuk kalimat x23b.

cara 1 (derivasi) cara 2 (parsing)

I Þ IH I

Þ IAH

Þ IAAH I H

Þ HAAH

Þ xAAH I A b

Þ x2AH

Þ x23H I A 3

Þ x23b

H 2




x

Sebuah kalimat dapat saja mempunyai lebih dari satu pohon.


Contoh 2 :

Diketahui grammar G = {S ® SOS½A , O ® *½+, A ® 0½1½2½...½9}

Kalimat : 2*3+7 mempunyai dua pohon sintaks berikut :

S S









S O S S O S


A * S O S S O S + A













2 A + A A * A 7




3 7 2 3

Sebuah kalimat yang mempunyai lebih dari satu pohon sintaks disebut kalimat ambigu (ambiguous). Grammar yang menghasilkan paling sedikit sebuah kalimat ambigu disebut grammar ambigu.








5.1. Metoda Parsing

Ada 2 metoda parsing : top-down dan bottom-up.

Parsing top-down : Diberikan kalimat x sebagai input. Parsing dimulai dari simbol awal S sampai kalimat x nyata (atau tidak nyata jika kalimat x memang tidak bisa diturunkan dari S) dari pembacaan semua leaf dari pohon parsing jika dibaca dari kiri ke kanan.

Parsing bottom-up : Diberikan kalimat x sebagai input. Parsing dimulai dari kalimat x yang nyata dari pembacaan semua leaf pohon parsing dari kiri ke kanan sampai tiba di simbol awal S (atau tidak sampai di S jika kalimat x memang tidak bisa diturunkan dari S)


Parsing Top-down

Ada 2 kelas metoda parsing top-down, yaitu kelas metoda dengan backup dan kelas metoda tanpa backup. Contoh metoda kelas dengan backup adalah metoda Brute-Force, sedangkan contoh metoda kelas tanpa backup adalah metoda recursive descent.


Metoda Brute-Force

Kelas metoda dengan backup, termasuk metoda Brute-Force, adalah kelas metoda parsing yang menggunakan produksi alternatif, jika ada, ketika hasil penggunaan sebuah produksi tidak sesuai dengan simbol input. Penggunaan produksi sesuai dengan nomor urut produksi.

Contoh 3 :

Diberikan grammar G = {S ® aAd½aB, A ® b½c, B ® ccd½ddc}. Gunakan metoda Brute-Force untuk melakukan analisis sintaks terhadap kalimat x = accd.

S




Hasil :

Input : Sisa : accd

Penjelasan : Gunakan produk-si S pertama. Masukkan sim-bol terkiri kalimat sebagai input.


S



a A d


Hasil : a

Input : a Sisa : ccd

Penjelasan : Hasil = Input. Gunakan produksi A pertama.


S


a A d


b

Hasil : ab

Input : ac Sisa : cd

Penjelasan : Hasil ¹ Input. Backup : Gunakan produksi A alternatif pertama.

S


a A d


c

Hasil : ac

Input : ac Sisa : cd

Penjelasan : Hasil = Input. Karakter berikutnya adalah simbol terminal, Hasil dibandingkan dengan Input.


S


a A d


c

Hasil : acd

Input : acc Sisa : c

Penjelasan : Hasil ¹ Input. Tidak ada lagi produksi A alternatif, backup : gunakan produksi S alternatif pertama.


S



a B


Hasil : a

Input : a Sisa : ccd

Penjelasan : Hasil = Input. Gunakan produksi B pertama.



S


a B


c c d

Hasil : ac

Input : ac Sisa : cd

Penjelasan : Hasil = Input.

Karakter berikutnya adalah simbol terminal, Hasil dibandingkan dengan Input.


S


a B


c c d

Hasil : acc

Input : acc Sisa : d

Penjelasan : Hasil = Input.

Karakter berikutnya adalah simbol terminal, Hasil dibandingkan dengan Input.


S


a B


c c d


Hasil : accd

Input : accd Sisa :

Penjelasan : Hasil = Input.


SELESAI, SUKSES

Metoda Brute-Force tidak dapat menggunakan grammar rekursi kiri, yaitu grammar yang mengandung produksi rekursi kiri (left recursion) : A ® Aµ. Produksi rekursi kiri akan menyebabkan parsing mengalami looping tak hingga.


Contoh 4 :

Diberikan grammar G = {S ® aAc, A ® Ab½e}. Gunakan metoda Brute-Force untuk melakukan analisis sintaks terhadap kalimat x = ac.

S





Hasil :

Input : Sisa : ac

Penjelasan : Masukkan simbol terkiri kalimat sebagai input. Gunakan produksi S pertama.


S



a A c


Hasil : a

Input : a Sisa : c

Penjelasan : Hasil = Input. Gunakan produksi A pertama.


S


a A c


A b


Hasil : a

Input : a Sisa : c

Penjelasan : Hasil = Input. Gunakan produksi A pertama.

S


a A c


A b


A b




Hasil : a

Input : a Sisa : c

Penjelasan : Hasil = Input. Gunakan produksi A pertama.


S


a A


A b


A b


A b


Hasil : a

Input : a Sisa : c

Penjelasan : Hasil = Input. Gunakan produksi A pertama.










dan seterusnya...... (looping)

Agar tidak menghasilkan looping tak hingga, grammar rekursi kiri harus ditransformasi. Untuk contoh di atas transformasi berarti merubah produksi A ® Ab menjadi A ® bA.





Metoda Recursive-Descent

· Kelas metoda tanpa backup, termasuk metoda recursive descent, adalah kelas metoda parsing yang tidak menggunakan produksi alternatif ketika hasil akibat penggunaan sebuah produksi tidak sesuai dengan simbol input. Jika produksi A mempunyai dua buah ruas kanan atau lebih maka produksi yang dipilih untuk digunakan adalah produksi dengan simbol pertama ruas kanannya sama dengan input yang sedang dibaca. Jika tidak ada produksi yang demikian maka dikatakan bahwa parsing tidak dapat dilakukan.

· Ketentuan produksi yang digunakan metoda recursive descent adalah : Jika terdapat dua atau lebih produksi dengan ruas kiri yang sama maka karakter pertama dari semua ruas kanan produksi tersebut tidak boleh sama. Ketentuan ini tidak melarang adanya produksi yang bersifat rekursi kiri.



Contoh 5 :

Diketahui grammar G = {S ® aB½A, A ® a, B ® b½d}. Gunakan metoda recursive descent untuk melakukan analisis sintaks terhadap kalimat x = ac.

S




Hasil :

Input : Sisa : ab

Penjelasan : Masukkan simbol terkiri kalimat sebagai input. Gunakan produksi S dengan simbol pertama ruas kanan = a


S


a B

Hasil : a

Input : a Sisa : c

Penjelasan : Hasil = Input. Gunakan produksi B dengan simbol pertama ruas kanan = c. Karena produksi demikian maka parsing gagal dilakukan.






SELESAI,


PARSING GAGAL


Parsing Bottom-Up

Salah satu contoh menarik dari parsing bottom-up adalah parsing pada grammar preseden sederhana (GPS). Sebelum sampai ke parsing tersebut, akan dikemukakan beberapa pengertian dasar serta relasi yang ada pada GPS.


Pengertian Dasar

· Jika a dan x keduanya diderivasi dari simbol awal grammar tertentu, maka a disebut sentensial jika a Î (V½ V)*, dan x disebut kalimat jika x Î (V)*

· Misalkan a = Qb Q adalah sentensial dan A Î V :

- b adalah frase dari sentensial a jika : S Þ ¼ Þ QA Q dan AÞ ¼ Þ b

- b adalah simple frase dari sentensial a jika : S Þ ¼ Þ QA Q dan AÞ b

- Simple frase terkiri dinamakan handel

- frase, simple frase, dan handel adalah string dengan panjang 0 atau lebih..

Contoh 6 :

(1) I Þ I H Hb adalah sentensial dan b adalah simple frase

Þ H H (dibandingkan dengan Qb Q maka Q= H, b = b, dan Q = e)

Þ H b Perhatikan : simple frase (b) adalah yang terakhir diturunkan

(2) I Þ I H Hb adalah sentensial dan H adalah simple frase

Þ I b (dibandingkan dengan Qb Q maka Q= e, b = H, dan Q = b)

Þ H b Perhatikan : simple frase (H) adalah yang terakhir diturunkan

Sentensial Hb mempunyai dua simple frase (b dan H), sedangkan handelnya adalah H.


Relasi Preseden dan Grammar Preseden Sederhana

· Relasi preseden adalah relasi antara 2 simbol grammar (baik V maupun V) dimana paling tidak salah satu simbol tersebut adalah komponen handel.

· Misalkan S dan R adalah 2 simbol. Ada 3 relasi preseden yang : ¬, «, dan ®

U U U











¼¼¼¼¼ R S ¼¼R S¼¼ R S¼¼¼¼¼

ê handel ê ê handel ê ê handel ê

Relasi : R ® S Relasi : R « S Relasi : R ¬ S

Perhatikan : komponen handel selalu ‘menunjuk’ yang simbol lainnya.

Contoh 7 :

Diketahui grammar dengan G = {Z ® bMb, M ® (L êa, L ® Ma)}. Dari 3 sentensial : bab, b(Lb, b(Ma)b, tentukan handel dan relasi yang ada.

bab b(Lb b(Ma)b

Z Z Z













b M b b M b b M b


a ( L ( L

Handel : a Handel : (L

Relasi : b ¬ a, a ® b Relasi : b ¬ (, (« L, M a )

L ® b Handel : Ma)

Relasi : (¬M, M « a,

a «), ) ® b

· Secara umum : jika A ® aBc adalah sebuah produksi maka :

- aBc adalah handel dari sentensial yang mengandung string “aBc”

- relasi preseden antara a, B, dan c adalah : a « B, B « c

· Dengan memperhatikan ruas kanan produksi yang ada serta berbagai sentensial yang dapat diderivasi dari Z maka semua relasi preseden tercantum dalam tabel berikut :




Z


b


M


L


a


(


)

Z





















b








«





¬


¬



M





«








«






L





®








®






a





®








®


¬


«

(








¬


«


¬


¬



)





®















Grammar G disebut grammar preseden sederhana jika :

1. paling banyak terdapat satu relasi antara setiap dua simbolnya

2. tidak terdapat dua produksi produksi dengan ruas kanan yang sama


Parsing Grammar Preseden Sederhana

Prosedur parsing :

1. Buat tabel 3 kolom dengan label : sentensial dan relasi, handel, dan ruas kiri produksi.

2. Tuliskan kalimat (atau sentensial) yang diselidiki pada baris pertama kolom pertama.

3. Dengan menggunakan tabel relasi preseden cantumkan relasi preseden antara setiap dua simbol yang bertetangga.

4. Tentukan handel dari sentensial tersebut. Handel adalah string yang dibatasi “¬“ terakhir dan “® “ pertama jika dilakukan penelusuran dari kiri atau yang saling mempunyai relasi “«“. Handel tersebut pastilah merupakan ruas kanan produksi, karena itu tentukan ruas kiri dari handel tersebut.

5. Ganti handel dengan ruas kiri produksinya. GOTO 3.

6. Kalimat yang diselidiki adalah benar dapat diderivasi dari simbol awal jika kolom “ruas kiri produksi” menghasilkan simbol awal.

Contoh 8 :

Lakukan parsing atas kalimat x = b(aa)b berdasarkan grammar G di atas.

sentensial dan relasi


handel


ruas kiri produksi

b ¬ (¬ a ® a «)® b


a


M

b ¬ (¬ M « a «)® b


Ma)


L

b ¬ (« L® b


(L


M

b « M « b


bMb


Z

Prosedur parsing sampai di simbol awal (Z). Maka kalimat “b(aa)b” memang dapat diderivasi dari simbol awal Z dengan menggunakan grammar G.


SUMBER : DOC.PERKULIAHAN SEMESTER 1 (lupa darimana)

Free Template Blogger collection template Hot Deals SEO

0 komentar:

Posting Komentar