1 / 42

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

Session 11 Parse Tree, Application of Parse Tree, and Ambiguity. Teori Bahasa dan Otomata ( KOM208 ) SKS: 3(3-0). TIK, Subtopik dan Waktu Penyajian. Tinjauan Instruksional Khusus : Mahasiswa akan dapat menjelaskan cara kerja dan aplikasi parse tree . Subtopik : Pembuatan parse tree

leann
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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.

More Related