Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

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

Presentasi serupa


Presentasi berjudul: "Session 11 Parse Tree, Application of Parse Tree, and Ambiguity"— Transcript presentasi:

1 Session 11 Parse 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 parse tree untuk grammar palindrom.

7 Hasil dari Sebuah Parse Tree
Jika leaf-leaf dari parse tree dirangkai 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 parse tree adalah Hasil adalah sebuah string terminal. Bahwa, semua leaf diberi label sebuah terminal atau . Root diberi label oleh start symbol.

8 Hasil dari Sebuah Parse Tree
Tree dengan ketentuan tsb adalah parse tree yang memiliki hasil adalah string-string dalam bahasa dari grammar tertentu. Bahasa dari sebuah grammar adalah himpunan dari hasil-hasil dari parse tree yang memiliki start symbol pada root dan sebuah string terminal sebagai hasil. Parse tree 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 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 A w

13 Dari Inferensi ke Tree (3)
Induksi: Misalkan w=w1w2…wk Misalkan kesimpulan bahwa hasil w ada dalam bahasa A diperoleh setelah n+1 langkah. A w2 w1 w3 x1 x2 xk 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 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. A w Sehingga leftmost deriavtion berikut terdiri dari satu langkah

20 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. A w2 w1 w3 x1 x2 xk

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 tree untuk 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 parse tree, 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 parse tree yang berbeda. Masing-masing parse tree tersebut memiliki root yang diberi label S dan hasil w. Jika setiap string memiliki paling banyak satu parse tree dalam grammar, maka grammar tersebut dikatakan tidak ambigu (unambiguous).

28 Contoh 10 (lanjutan) Gambar b Gambar a
Parse tree 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 parse tree 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 parse tree untuk string a + a * a, yaitu

34 Leftmost Derivation dan Ambiguitas
Penurunan dapat tidak unik walaupun grammar tidak ambigu. Dalam sebuah grammar yang tidak ambigu, leftmost derivation dan rightmost derivation akan unik.

35 Contoh 12 Perhatikan parse tree dalam Gambar a dan b pada Contoh 10, yang menghasilkan E + E * E. Leftmost derivation dari kedua parse tree 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 parse tree yang berbeda jika dan hanya jika w memiliki dua leftmost derivation yang berbeda dari S. Bukti dapat dilihat pada buku rujukan.

37 Inherent Ambiguity Sebuah CFL L dikatakan inherently ambiguous jika semua grammar-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 leftmost derivation, 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 Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley.


Download ppt "Session 11 Parse Tree, Application of Parse Tree, and Ambiguity"

Presentasi serupa


Iklan oleh Google