download

Matakuliah
Tahun
: T0162/Teori Bahasa dan Automata
: 2009
Pertemuan 8
CONTEXT FREE GRAMMAR
(CFG)
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
CONTEXT FREE GRAMMAR (CFG)
• Mendefinisikan programming language
• Formalitas konsep Parsing
• Mendefinisikan ekspresi aritmatik
Komponen CFG :
• Simbol Non-terminal / variabel
• Simbol Terminal (alphabet language)
4
CONTEXT FREE GRAMMAR (CFG)
• Production : aturan yang diperbolehkan
untuk melakukan substitusi variable
• Simbol Production : 
• Context Free Grammar : setiap variabel
dapat disubstitusi sesuai dengan
produksinya, tidak tergantung pada posisi/
konteksnya.
• Satu simbol variabel sebagai start.
5
CFG
Definisi formal CFG :
G = (V, T, P, S)
dimana :
V
:
himpunan variabel
T
:
himpunan terminal
V  T =  (disjoint)
P
:
himpunan produksi : A  
A
:
variabel
 ( V  T )
S
:
start symbol
6
CONTEXT FREE GRAMMAR (CFG)
Contoh Production :
1. <kalimat>
2. <subjek>
3. <predikat>
4. <objek>
5. <kata benda>
6. <kata kerja>
< ….. >

 <subjek> <predikat>
 <kata benda>
 <kata kerja> <objek>
 <kata benda>
 anjing nasi orang
 makan memukul
: variabel
: pilihan
7
CONTEXT FREE GRAMMAR (CFG)
Aplikasi produksi di atas melalui proses
“derivasi” secara berulang akan
menghasilkan suatu kalimat yang utuh,
misalnya :
“orang makan nasi”,
“anjing makan anjing”,
“anjing memukul orang”
Kalimat yang salah:
“makan nasi orang”
8
Derivasi
• Derivasi : Proses penurunan produksi dari atas
ke bawah (head to body)
• Simbol Derivasi : 
• Left Most Derivation (LMD): derivasi dilakukan
pada variable yang paling kiri.
• Right Most Derivation (RMD): derivasi dilakukan
pada variabel yang paling kanan.
9
CONTEXT FREE GRAMMAR (CFG)
Contoh Derivasi “anjing makan anjing” :
<kalimat>  <subjek> <predikat>
 <subjek> <kata kerja> <objek>
 <subjek> <kata kerja> <kata
benda>
 <subjek> <kata kerja> anjing
 <subjek> makan anjing
 <kata benda> makan anjing
 anjing makan anjing
10
CONTEXT FREE GRAMMAR (CFG)
CFG untuk penulisan ekspresi aritmatik.
Produksi untuk ekspressi aritmatik :
EE+E
EE*E
E  (E)
Ea|b|c|d
11
CONTEXT FREE GRAMMAR (CFG)
Menurunkan ekspresi aritmatika : “(a+b)*c”
E  E  E  (E)  E  (E + E)  E
 (a + E)  E  (a + b)  E
 (a + b)  c
• Notasi Derivasi berulang kali :
m
 : Derivasi m kali secara berturutan
G
dalam grammar G
* : Derivasi 0 atau lebih kali secara berturutan
G
dalam grammar G
12
Misalkan :
1, 2, …, m string dalam (V  T)*, m  1
1  2, 2  3, …, m  m+1
maka :
m
* 
1  m+1 atau 1 
m+1
* : refleksive, transitive closure dari 

13
CONTEXT FREE GRAMMAR (CFG)
Konvensi penggunaan simbol :
1. A, B, C, D, E dan S : variabel
2. Huruf kecil dan digit : terminal
3. X, Y, Z : terminal atau variabel
4. Huruf kecil : u, v, w, x, y, dan z : string
variabel
5. Huruf kecil : , ,  : sentential form (VT)*
Jika A  1, A  2, …, A  n, ditulis
A  1  2 … k
14
Derivation Tree
Derivation Tree :
Penggambaran Derivasi dalam bentuk
tree
A  XYZ
Tree :
A
X
Y
Z
15
Parse Tree
• Parse Tree untuk : - (id + id)
E
E
(
E
)
E
+
E
id
id
16
Language untuk CFG
Definisi :
• Language untuk CFG G :
* w}
L (G) = { w  w  T* dan S 
dimana :
w  T* : terminal
S * w : diturunkan dari S.
L adalah “Context Free Language” jika
terdapat CFG G, sehingga L = L(G).
17
Language untuk CFG
Contoh CFG :
G = (V, T, P, S)
dimana V = {S}
T = {a, b}
P = {S  aSb, S  ab }
Derivasi grammar:
S  aSb  aaSbb … anbn
Maka :
L(G) = { anbn  n  1}
18
<< CLOSING>>
19