290 likes | 1.01k Views
Pertemuan 9 Ambiguous Grammar. Matakuliah : T0162/Teori Bahasa dan Automata Tahun : 2009. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : << TIK-99 >> << TIK-99>>. Outline Materi. Materi 1 Materi 2 Materi 3 Materi 4 Materi 5. CFG (lanjutan).
E N D
Pertemuan 9Ambiguous Grammar Matakuliah : T0162/Teori Bahasa dan Automata Tahun : 2009
Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • << TIK-99 >> • << TIK-99>>
Outline Materi • Materi 1 • Materi 2 • Materi 3 • Materi 4 • Materi 5
CFG (lanjutan) Semua Regular Language dapatdidefinisikandengan CFG, tetapitidakberlakukebalikannya. Konversidari RE ke CFG: • RE = S 2. RE = (Produksidari S tidakdapatmenghasilkan string terminal). 2. RE = a S a
4. RE = a + b S a | b 5. RE = a.b S ab 6. RE = a* S aS |
Contoh: Buatlah CFG untuk language dengan RE = (ab+ba)*(abb)* Jawab: Produksi CFG S A B A CA | C ab | ba B DB | D abb Jadi CFG G = {V,T,P,S} dengan V = {S,A,B,C,D} T = {a,b} P : ada disamping
Ambiguous Grammar.. Ambiguous Grammar : Terdapat string dalam T* yang mempunyai lebih dari satu LMD atau lebih dari satu RMD atau lebih dari satu Parse Tree. Jika setiap string dalam L(G) mempunyai paling banyak satu parse tree, maka G disebut unambiguous.
Ambiguous Grammar Contoh : parse tree untuk a+a*a T1 T2 E E E E * E E + + E E a a E * E a a a a
Ambiguous Grammar Ada ambigous grammar (tidak semua) yang dapat diubah menjadi unambiguous grammar. Untuk CFG ekspresi aritmetika dapat diubah menjadi unambigous grammar : E T | E + T T F | T * F F I | (E) I a | b | c • Belum ada algoritma untuk mengubah dari ambiguous menjadi unambiguous grammar.
Ambiguous Grammar • Suatu CFL L disebut inherently ambiguous jika semua CFG untuk L adalah ambiguous grammar. Contoh: L = Mempunyai CFG: S AB | C A aAb | ab B cBd | cd C aCd | aDd D bDc | bc
Useless Symbols Useful / Useless Symbol : Simbol X disebut “Useful” apabila ada suatu derivasi X useless simbol apabila : 1. X tidak bisa menurunkan terminal, atau 2. X tidak bisa diturunkan dari S
Useless Symbols Lemma : Untuk suatu L(G) , dapat ditemukan CFG yang equivalen G = (V, T, P, S) dimana untuk setiap A dalam V terdapat suatu string w T* dimana Himpunan variabel V yang dapat menurunkan string Terminal dapat dicari dengan algoritma berikut :
Begin 1. OLDV : 2. NEWV : = {A A w untuk w T*} 3. While OLDV NEWV do begin 4. OLDV := NEWV; 5. NEWV := OLDV {AA a untuk a (T OLDV)*} end 6. v’ := NEWV end
Useless Symbols Menghilangkan Useless Symbol : Contoh : Grammar : 1. S ABa 2. A a B dalam (1) useless sehingga produksi di atas menjadi : 1’. S a 2’. A a
A dalam 2’ tidak bisa diakses dari S, grammar di atas menjadi : G’ = ({S}, {a}, {S a}, S) Latihan : Cari ekuivalen CFG tanpa “Useless Symbol” untuk grammar berikut : S ABCA A a B BCAB C aBb