Session 11 Parse Tree, Application of Parse Tree, and Ambiguity - PowerPoint PPT Presentation

session 11 parse tree application of parse tree and ambiguity n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Session 11 Parse Tree, Application of Parse Tree, and Ambiguity PowerPoint Presentation
Download Presentation
Session 11 Parse Tree, Application of Parse Tree, and Ambiguity

play fullscreen
1 / 42
Session 11 Parse Tree, Application of Parse Tree, and Ambiguity
285 Views
Download Presentation
leann
Download Presentation

Session 11 Parse Tree, Application of Parse Tree, and Ambiguity

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Session 11Parse Tree, Application of Parse Tree, and Ambiguity Teori Bahasa dan Otomata (KOM208) SKS: 3(3-0)

  2. TIK, Subtopik dan Waktu Penyajian • Tinjauan Instruksional Khusus: • Mahasiswa akan dapat menjelaskan cara kerja dan aplikasi parse tree. • Subtopik: • Pembuatan parse tree • Inferensi dan penurunan • Aplikasi tata bahasa bebas konteks • Ambiguitas dalam tata bahasa dan bahasa • Waktu penyajian: 2 x 150 menit

  3. Parse Tree • Parse tree dikonstruksi sebagai berikut, misal Grammar G = (V,T,P,S). Parse tree untuk G adalah tree dengan kondisi-kondisi berikut: • Setiap node interior diberi label sebuah variabel dalam V. • Setiap daun/leaf diberi label oleh sebuah variabel, sebuah terminal atau . Jika leaf diberi label , maka leaf tersebut haruslah merupakan anak satu-satunya dari parent-nya.

  4. Parse Tree • Jika sebuah node interior diberi label A, dan anak-anaknya diberi label berturut-turut X1, X2,..., Xk dari kiri, maka A  X1, X2,..., Xk adalah produksi dalam P. Satu-satunya perkalian dari para X dapat menjadi  adalah jika perkalian tersebut merupakan label dari satu-satunya anak (child), dan A  adalah produksi dari G.

  5. Contoh 8 • Parse tree berikut menujukkan penurunan I+E dari E. Root diberi label variabel E. • Produksi yang digunakan pada root adalah E  E+E karena terdapat 3 anak dari root yang berturut-turut mempunyai label E, + dan E dari kiri. • Pada anak paling kiri dari root, produksi digunakan, karena terdapat satu anak dari node tersebut, diberi label I.

  6. Contoh 9 • Parse tree berikut adalah parsetree untuk grammar palindrom.

  7. Hasil dari Sebuah ParseTree • Jika leaf-leaf dari parsetreedirangkai dari kiri, akan diperoleh sebuah string, yang dinamakan hasil dari tree. • String-string tersebut diturunkan dari variabel root. • Hal-hal yang harus diperhatikan berkaitan dengan hasil dari sebuah parsetree adalah • Hasil adalah sebuah string terminal. Bahwa, semua leaf diberi label sebuah terminal atau . • Root diberi label oleh startsymbol.

  8. Hasil dari Sebuah ParseTree • Tree dengan ketentuan tsb adalah parsetree yang memiliki hasil adalah string-string dalam bahasa dari grammar tertentu. • Bahasa dari sebuah grammar adalah himpunan dari hasil-hasil dari parsetree yang memiliki startsymbol pada root dan sebuah string terminal sebagai hasil. Parsetree yang menujukkan bahwa a*(a+b00) adalah dalam bahasa dari grammar dalam Contoh 3 (Bab Grammar Bebas Konteks)

  9. Inferensi, Penurunan dan Pohon Penurunan Diberikan sebuah grammar G=(V,T,P,S), penyataan-pernyataan berikut adalah ekuivalen: 1. Prosedur inferensi rekursif menentukan bahwa string terminal w adalah dalam bahasa dari variabel 2. 3. 4. • Terdapat sebuah pohon penurunan dengan root A dan hasil w

  10. Pembuktian Ekuivalensi Parse tree Leftmost derivation Rightmost derivation derivation Recursive inference

  11. Dari Inferensi ke Tree (1) Teorema: Misalkan G=(V,T,P,S) adalah sebuah CFG. Jika prosedur inferensi rekursif menyatakan bahwa string terminal w adalah dalam bahasa dari variabel A, maka terdapat sebuah pohon penurunan dengan root A dan hasil w.

  12. A w Dari Inferensi ke Tree (2) Bukti: induksi pada banyaknya langkah yang digunakan untuk menentukan bahwa w adalah dalam bahasa A. Basis: Produksi Aw. Root: A Hasil: w

  13. A x1 x2 xk … w1 w2 w3 Dari Inferensi ke Tree (3) Induksi: • Misalkan w=w1w2…wk • Misalkan kesimpulan bahwa hasil w ada dalam bahasa A diperoleh setelah n+1 langkah. subtree

  14. Dari Inferensi ke Tree (4) • Jika Xi adalah sebuah terminal, maka wi = Xi; yaitu wi terdiri dari hanya 1 terminal dari produksi. • Subtree: wi • Jika Xi adalah sebuah variabel, maka wi adalah sebuah string yang sebelumnya disimpulkan ada dalam bahasa Xi. • Terdapat beberapa tree dengan root Xi dan hasil wi. • Tree ini ditempelkan ke node untuk Xi • Hasilnya adalah hasil dari subtree dirangkai dari kiri ke kanan, yaitu string w=w1w2…wk.

  15. Dari Tree ke Penurunan (1) • Mengkonstrukai leftmost derivation atau rightmost derivation dari sebuah pohon penurunan. • Penurunan dari string dari sebuah variabel dapat diletakan dalam penurunan lain

  16. Dari Tree ke Penurunan (2) Contoh: • Perhatikan kembali CFG yang merepresentasikan ekspresi dalam bahasa pemrograman dengan operator + dan *. • Terdapat penurunan: EI Ib  ab • Untuk string-string  dan , penurunan berikut benar: E I  Ib  ab

  17. Dari Tree ke Penurunan (3) Contoh: Diketahui penuruan EE+E E+(E) Penuruan ab dari E adalah E+(E) E+(I) E+(Ib) E+(ab)

  18. Dari Tree ke Penurunan (4) Teorema: Misal G=(V,T,P,S) adalah sebuah CFG, dan anggap terdapat sebuah pohon penurunan dengan root yang diberi label variabel A dan dengan hasil w, dimana w adalah dalam T*. Maka terdapat sebuah leftmost derivation dalam grammar.

  19. A w Dari Tree ke Penurunan (5) Bukti: induksi pada ketinggian (height) dari tree. Basis: • Height dari tree = 1; tree dengan root A dan children membaca w dari kiri ke kanan • Karena tree ini adalah parse tree, maka Aw adalah sebuah produksi. • Sehingga leftmost deriavtion berikut terdiri dari satu langkah

  20. A x1 x2 xk … w1 w2 w3 Dari Tree ke Penurunan (6) Induksi: • Jika height dari tree adalah n, n>1. • Tree memiliki root A dan children X1, X2, … Xk dari kiri.

  21. Dari Tree ke Penurunan (7) • Jika Xi adalah sebuah terminal, definisikan wi menjadi string yang terdiri dari Xi. • Jika Xi adalah sebuah variabel, maka Xi adalah root dari subtree dengan sebuah hasil adalah terminal, yang dinamakan wi. • Hipotesis induksi: terdapat leftmost derivarion:

  22. Dari Tree ke Penurunan (8) • Nyatakan w=w1w2…wk. • Konstruksi leftmost derivation dari w adalah sebagai berikut: • Mulai dengan langkah • Untuk setiap i=1, 2, …, k kita tunjukkan bahwa • Ketika i=k, hasil adalah leftmost derivation dari w dari A.

  23. Ambiguitas dalam Grammar • Tidak semua grammar dapat menyatakan struktur yang unik untuk setiap string dalam sebuah bahasa. • Kadang-kadang, grammar dapat dirancang ulang agar dapat memberikan struktur yang unik untuk setiap string dalam sebuah bahasa.

  24. Contoh 10 • CFG untuk ekspresi sederhana: E  I | E + E | E * E | (E) I  a | b | Ia | Ib | I0 | I1 • Produksi-produksi E  E + E, E  E * E ekpresi-ekspresi sederhana dapat di-generate dalam beberapa cara. • Sebagai contoh, bentuk sentential E + E * E memiliki dua penurunan dari E, yaitu: 1. E  E + E  E + E *E 2. E  E * E  E + E *E

  25. Parse treeuntuk E + E * E Gambar a Gambar b

  26. Contoh 10 (lanjutan) • Grammar tsb memberikan dua struktur yang berbeda untuk string atau terminal-terminal yang diturunkan dengan mengganti 3 ekspresi dalam E + E * E dengan identifier. • Contoh: string a + b memiliki beberapa penurunan yang berbeda, yaitu: 1. E  E + E  I + E  a + E  a + I  a + b 2. E  E + E  E + I  I + I  I + b  a + b

  27. Ambiguitas • Ambiguitas disebabkan karena adanya dua atau lebih parsetree, bukan karena banyaknya penurunan. • CFG G = (V, T, P, S) dikatakan ambigu jika terdapat sedikitnya satu string w dalam T* dimana kita dapat menentukan dua parsetree yang berbeda. • Masing-masing parsetree tersebut memiliki root yang diberi label S dan hasil w. • Jika setiap string memiliki paling banyak satu parsetree dalam grammar, maka grammar tersebut dikatakan tidak ambigu (unambiguous).

  28. Contoh 10 (lanjutan) • Parsetree yang menghasilkan string a + a * a Gambar b Gambar a

  29. Menghilangkan Ambiguitas dari Grammar (1) • Penyebab ambiguitas dalam grammar pada Contoh: • Gambar a mengelompokkan operator * sebelum operator +. Sedangkan Gambar b mengelompokkan + di depan *. • Tetapkan hanya struktur dalam Gambar a yang legal dalam grammar yang tidak ambigu.

  30. Menghilangkan Ambiguitas dari Grammar (2) • Urutan operator-operator yang serupa dapat dikelompokkan dari kiri atau dari kanan. • Sebagai contoh, jika para * dalam Gambar diganti oleh para +, maka akan diperoleh dua parsetree yang berbeda untuk string E + E + E. • Walaupun dalam penjumlahan dan perkalian berlaku hukum asosiatif, untuk menghilangkan ambiguitas ditetapkan pengelompokkan dari kiri.

  31. Menghilangkan Ambiguitas dari Grammar (3) • Untuk menghilangkan ambiguitas, diperkenalkan variabel-variabel berikut: • Faktor: sebuah ekspresi yang tidak dapat dipecah dari operator yang berdekatan, a * atau a +. Faktor-faktor berupa: • Identifier • Ekspresi yang diberi tanda kurung. • Term: sebuah ekspresi yang tidak dapat dipisahkan dari operator +. Dalam Contoh 1, term adalah product dari satu atau lebih faktor. • Ekspresi. Dalam Contoh 1, ekspresi adalah penjumlahan satu atau lebih term.

  32. Contoh 11 • Berikut grammar yang tidak ambigu yang me-generate bahasa yang sama dengan bahasa yang di-generate oleh grammar dalam Contoh 10: I  a | b | Ia | Ib | I0 | I1 F  I | (E) T  F | T * F E  T | E + T • Dalam grammar tersebut, F, T dan E berturut-turut menyatakan faktor, term, dan ekspresi.

  33. Contoh 11 (lanjutan) • Grammar tsb memungkinkan hanya satu parsetree untuk string a + a * a, yaitu

  34. LeftmostDerivation dan Ambiguitas • Penurunan dapat tidak unik walaupun grammar tidak ambigu. • Dalam sebuah grammar yang tidak ambigu, leftmostderivation dan rightmostderivation akan unik.

  35. Contoh 12 • Perhatikan parsetree dalam Gambar a dan b pada Contoh 10, yang menghasilkan E + E * E. • Leftmostderivation dari kedua parsetree tersebut: • E (lm) E + E (lm) I + E (lm) a + E (lm) a + E * E (lm) a + I * E (lm) a + a * E (lm) a + a * I (lm) a + a * a • E (lm) E * E (lm) E + E * E (lm) I + E * E (lm) a + E * E (lm) a + I * E (lm) a + a * E (lm) a + a * I (lm) a + a *a

  36. Teorema • Untuk setiap grammar G = (V, T, P, S) dan string w dalam T*, w memiliki dua parsetree yang berbeda jika dan hanya jika w memiliki dua leftmostderivation yang berbeda dari S. Bukti dapat dilihat pada buku rujukan.

  37. Inherent Ambiguity • Sebuah CFL L dikatakan inherently ambiguous jika semuagrammar-grammarnya adalah ambigu. • Jika satu grammar untuk L adalah tidak ambigu, maka L adalah sebuah bahasa yang tidak ambigu. • Bahasa dari ekspresi-ekspresi yang di-generate oleh grammar dalam Contoh 1 adalah bahasa tidak ambigu. • Walaupun grammarnya ambigu, terdapat grammar yang lain untuk bahasa yang sama yang tidak ambigu, yaitu grammar dalam Contoh 11.

  38. Contoh 13 • Perhatikan bahasa berikut: L = {anbncmdm | n  1, m  1}  {anbmcmdn | n  1, m  1} • Bahasa L berisi string-string dalam a+b+c+d+ sedemikian sehingga: • Terdapat sama banyak para a dan para b dan sama banyak para c dan para d, atau • Terdapat sama banyak para a dan para d dan sama banyak para b dan para c.

  39. Contoh 13 (lanjutan) • L adalah sebuah CFL. Grammar untuk L adalah: S  AB | C A  aAb | ab B  cBd | cd C  aCd | aDd D  bDc | bc • Grammar di atas adalah grammar yang ambigu.

  40. Contoh 13 (lanjutan) • String aabbccdd memiliki dua leftmostderivation, yaitu: • S (lm) AB (lm) aAbB (lm) aabbB (lm)aabbcBd (lm) aabbccdd • S (lm) C (lm) aCd (lm)aaDdd (lm) aabDcdd (lm) aabbccdd

  41. Contoh 13 (lanjutan) • Parse tree untuk aabbccdd

  42. Daftar Pustaka • John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.