Pertemuan 9 Ambiguous Grammar Matakuliah : T0162/Teori Bahasa dan Automata
Download
Report
Transcript Pertemuan 9 Ambiguous Grammar Matakuliah : T0162/Teori Bahasa dan Automata
Matakuliah
Tahun
: T0162/Teori Bahasa dan Automata
: 2009
Pertemuan 9
Ambiguous Grammar
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• << TIK-99 >>
• << TIK-99>>
2
Outline Materi
•
•
•
•
•
Materi 1
Materi 2
Materi 3
Materi 4
Materi 5
3
CFG (lanjutan)
Semua Regular Language dapat didefinisikan
dengan CFG, tetapi tidak berlaku kebalikannya.
Konversi dari RE ke CFG:
1. RE =
S
2. RE =
(Produksi dari S tidak dapat
menghasilkan string terminal).
2. RE = a
Sa
4
4. RE = a + b
Sa|b
5. RE = a.b
S ab
6. RE = a*
S aS |
5
• Contoh: Buatlah CFG untuk language dengan
RE = (ab+ba)*(abb)*
Jawab:
Produksi CFG
SAB
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
6
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.
7
Ambiguous Grammar
Contoh : parse tree untuk a+a*a
T1
T2
E
E
E
a
+
E
a
E
E
*
E + E
E
a
a
*
E
a
a
8
Ambiguous Grammar
Ada ambigous grammar (tidak semua) yang dapat
diubah menjadi unambiguous grammar.
Untuk CFG ekspresi aritmetika dapat diubah
menjadi unambigous grammar :
ET|E+T
TF|T*F
F I | (E)
I a|b|c
• Belum ada algoritma untuk mengubah dari
ambiguous menjadi unambiguous grammar.
9
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
10
• Parse tree untuk string ‘aabbccdd’ :
11
Useless Symbols
Useful / Useless Symbol :
Simbol X disebut “Useful” apabila ada suatu
*
*
derivasi
S
w
w T*
, V T *
X useless simbol apabila :
1. X tidak bisa menurunkan terminal, atau
2. X tidak bisa diturunkan dari S
12
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
A
w
Himpunan variabel V yang dapat menurunkan
string Terminal dapat dicari dengan algoritma
berikut :
13
Begin
1. OLDV :
2. NEWV : = {A A
w untuk w T*}
3. While OLDV NEWV do
begin
4. OLDV := NEWV;
a untuk a
5. NEWV := OLDV {AA
(T OLDV)*}
end
6. v’ := NEWV
end
14
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
15
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
Aa
B BCAB
C aBb
16
<< CLOSING>>
17