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
Sa
4
4. RE = a + b
Sa|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
SAB
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 :
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.
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  {AA 
(T  OLDV)*}
end
6. v’ := NEWV
end
14
Useless Symbols
Menghilangkan Useless Symbol :
Contoh :
Grammar :
1. S  ABa
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  ABCA
Aa
B  BCAB
C  aBb
16
<< CLOSING>>
17