Anda di halaman 1dari 18

Bahasa Context Free

DOSEN : AHMAD APANDI, ST


OBJECTIVE

 Memahami Context Free Grammar


 Memahami Derivasi
 Memahami Pohon Sintaks
CFG

Secara formal, CFG didefinisikan : CFG G = (V,T,P,S) dimana :

V adalah daftar variabel produksi

T adalah daftar simbol atau terminal yang dipakai dalam CFG

P adalah aturan produksi CFG

S adalah variabel start


Bentuk umum produksi CFG adalah :
  ,   VN,   (VNVT)*
CFG

Context Free Grammar (CFG)/ Bahasa Bebas Konteks adalah sebuah tata
bahasa dimana tidak terdapat pembatasan pada hasil produksinya, Contoh Pada
aturan produksi :
α→β
batasannya hanyalah ruas kiri (α) adalah sebuah simbol variabel. Sedangkan
contoh aturan produksi yang termasuk CFG adalah seperti di bawah :
B → CDeFg
D → BcDe
ANALISIS SINTAKS

Penelusuran sebuah kalimat (sentensial) sampai pada simbol


awal grammar. Analisis sintaks dapat dilakukan melalui derivasi
atau parsing. Penelusuran melalui parsing menghasilkan pohon
sintaks.
DERIVASI/PARSING

Parsing dari sebuah kalimat adalah konstruksi atau pembentukan pohon sintaks untuk kalimat

tersebut.

Parsing dapat dilakukan dengan cara :


 Penurunan terkiri (Leftmost derivation) : symbol variabel yang paling kiri diturunkan

(tuntas) dahulu
 Penurunan terkanan (Rightmost derivation) : symbol yang paling kanan diturunkan (tuntas)

dahulu
DERIVASI/PARSING

Contoh : ingin dihasilkan string aabbaa dari


Context free language : S → aAS │ a
A → SbA │ ba

Penurunan kiri Penurunan kanan


S → aAS S → aAS
→ aSbAS → aAa
→ aabAS → aSbAa
→ aabbaS → aSbbaa
→ aabbaa → aabbaa
DERIVASI/PARSING

Contoh :
Diketahui grammar
G = {I  HI HIA, H  abc...z, A  012...9}
dengan I adalah simbol awal.
Berikut ini kedua cara analisa sintaks untuk kalimat x23b.
DERIVASI/PARSING

Contoh :
Diketahui grammar G = {S  SOSA , O  *+, A  012...9}
Kalimat : 2*3+7 mempunyai dua pohon sintaks berikut :

S S
Sebuah kalimat yang mempunyai lebih dari
S O S S O S satu pohon sintaks disebut kalimat ambigu
(ambiguous). Grammar yang menghasilkan
A * S O S S O S + A
paling sedikit sebuah kalimat ambigu disebut
2 A + A A * A 7
grammar ambigu.
3 7 2 3
CNF (Chomsky Normal Form)

Aturan produksi CFG dapat ‘dinormalkan’ dengan pola tersendiri supaya


tidak ambigu dan lebih sederhana, meskipun normalisasi CFG kadang
membuat aturan produksi menjadi lebih banyak dari sebelumnya.
Teknik normalisasi yang digunakan dalam hal ini adalah
CNF (Chomsky Normal Form).
CNF (Chomsky Normal Form)

Contoh desain CNF dari bahasa CFG, semisal CFGberikut:


S -> aA | bB (1)
A-> Baa|ba
B -> bAA|ab

CFG (1) tersebut ekivalen dengan CFG dibawah ini,dimana symbol


terminal memiliki variabel produksi tersendiri:
S -> DA | EB (2)
A -> BDD | ED
B -> EAA | DE
D -> a CNF yang dihasilkan dari CFG (2) diatas ialah:
E -> b S -> DA | EB (3)
A -> BF | ED
B -> EH | DE
F -> DD
H -> AA
D -> a
E -> b
METODE PARSING

Ada 2 metoda parsing : top-down dan bottom-up.


 Parsing top-down :
Parsing dimulai dari simbol awal S sampai kalimat x
 Parsing bottom-up :
Parsing dimulai dari kalimat x sampai simbol awal S
METODE PARSING

Ada 2 kelas metoda parsing top-down :


 kelas metoda dengan backup

Contoh: metoda Brute-Force


 kelas metoda tanpa backup
Contoh: metoda recursive descent.
METODE PARSING

METODE BRUTE FORCE


metoda Brute-Force, adalah kelas metoda parsing yang menggunakan
produksi alternatif, jika ada, ketika hasil penggunaan sebuah
produksi tidak sesuai dengan simbol input. Penggunaan produksi sesuai
dengan nomor urut produksi.
METODE PARSING
LATIHAN

PERHATIKAN GRAMMAR BERIKUT

1. <OPERAND>  <ID> <INTEGER>


2. <ID>  <LETTER><LIST>
3. <LETTER>  xyz
4. <LIST> <LETTER><LIST><DIGIT><LIST>
5. <DIGIT>  0123456789
6. <INTEGER>  <SIGN><DIGIT><DIT>
7. <SIGN>  +-
8. <DIT>  <DIGIT><DIT>  
Lakukan Derivasi/Parsing
untuk memperoleh string
Simbol Start : <OPERAND> y7, -294, 4xy2, x2y, -21x,
xxb, +1230, x123, x-y+2,
x1x2x3x, xxxyyy
LATIHAN

PERHATIKAN GRAMMAR BERIKUT

1. <OPERAND>  <ID> <INTEGER>


2. <ID>  <LETTER><LIST>
3. <LETTER>  xyz
4. <LIST> <LETTER><LIST><DIGIT><LIST>
5. <DIGIT>  0123456789
6. <INTEGER>  <SIGN><DIGIT><DIT>
7. <SIGN>  +-
8. <DIT>  <DIGIT><DIT>  
Lakukan Derivasi/Parsing
untuk memperoleh string
Simbol Start : <OPERAND> y7, -294, 4xy2, x2y, -21x,
xxb, +1230, x123, x-y+2,
x1x2x3x, xxxyyy
LATIHAN

PERHATIKAN GRAMMAR BERIKUT

1. <EKSPRESI>  <EKSPRESI><ASOP><SUKU><SUKU>
2. <SUKU>  <SUKU><MDOP><FAKTOR><FAKTOR>
3. <FAKTOR>(<EKSPRESI>)operand (a-z)
4. <ASOP>  +-
5. <MDOP>    /

Simbol start : <EKSPRESI>

buatlah pohon sintaks dari string:

( ( x – 25 ) / y ) + 3 * z
(a-b) / ((c+d)*e)

Anda mungkin juga menyukai