GRAMMAR DAN BAHASA
Konsep
Dasar
· Anggota alfabet dinamakan simbol terminal.
· Kalimat adalah deretan hingga simbol-simbol terminal.
· Bahasa adalah himpunan kalimat-kalimat. Anggota bahasa
bisa tak hingga kalimat.
· Simbol-simbol berikut adalah simbol terminal :
ü huruf kecil, misalnya :
a, b, c, 0, 1, ..
ü simbol operator, misalnya : +, -, dan ´
ü simbol tanda baca, misalnya : (, ), dan
;
ü string yang tercetak tebal, misalnya : if, then, dan else.
· Simbol-simbol berikut adalah simbol non terminal /Variabel :
ü huruf besar, misalnya : A, B, C
ü huruf S sebagai simbol
awal
ü string yang tercetak miring, misalnya : expr
· Huruf yunani melambangkan string yang tersusun atas
simbol-simbol terminal atau simbol-simbol non terminal atau campuran keduanya,
misalnya : a, b, dan g.
· Sebuah produksi dilambangkan sebagai a ® b, artinya : dalam sebuah
derivasi dapat dilakukan penggantian simbol a dengan simbol b.
· Derivasi adalah proses pembentukan sebuah kalimat atau
sentensial. Sebuah derivasi dilambangkan sebagai : a Þ b.
· Sentensial adalah string yang tersusun atas
simbol-simbol terminal atau simbol-simbol non terminal atau campuran keduanya.
· Kalimat adalah string yang tersusun atas simbol-simbol
terminal. Kalimat adalah merupakan sentensial, sebaliknya belum tentu..
Grammar :
Grammar G didefinisikan sebagai pasangan 4 tuple : V
, V
, S, dan P, dan dituliskan sebagai G(V
, V
, S, P), dimana :
V
: himpunan simbol-simbol
terminal (alfabet) àkamus
V
: himpunan
simbol-simbol non terminal
SÎV
: simbol awal (atau
simbol start)
P : himpunan produksi
Contoh
:
1. G1
: VT = {I, Love, Miss, You}, V
= {S,A,B,C},
P
= {S ® ABC, A® I, B® Love | Miss,
C® You}
S Þ ABC
Þ IloveYou
L(G1)={IloveYou,
IMissYou}
2. . G2 :
VT = {a}, V
= {S}, P = {S ® aS½a}
S Þ aS
Þ aaS
Þ aaa
L(G2) ={an ½ n ≥ 1}
L(G2)={a, aa, aaa, aaaa,…}
Klasifikasi
Chomsky
Berdasarkan
komposisi bentuk ruas kiri dan ruas kanan produksinya (a ® b), Noam Chomsky
mengklasifikasikan 4 tipe grammar :
1. Grammar tipe ke-0 : Unrestricted Grammar (UG)
Ciri : a, b Î (V
½V
)*, ïaï> 0
2. Grammar tipe ke-1 : Context Sensitive Grammar (CSG)
Ciri : a, b Î (V
½V
) *, 0 < ïaï £ ïbï
3. Grammar tipe ke-2 : Context Free Grammar (CFG)
Ciri : a Î V
, b Î (V
½V
)*
4. Grammar tipe ke-3 : Regular Grammar (RG)
Ciri : a Î V
, b Î {V
, V
V
} atau a Î V
, b Î {V
, V
V
}
Tipe sebuah grammar (atau
bahasa) ditentukan dengan aturan sebagai berikut :
A
language is said to be type-i (i = 0, 1, 2, 3) language if it can be specified
by a type-i grammar but can’t be specified any type-(i+1) grammar.
Contoh Analisa
Penentuan Type Grammar
1. Grammar G
dengan P
= {S ® aB, B ® bB, B ® b}.
Ruas
kiri semua produksinya terdiri dari sebuah V
maka G
kemungkinan tipe CFG
atau RG. Selanjutnya karena semua ruas kanannya terdiri dari sebuah V
atau string V
V
maka G
adalah RG(3).
2. Grammar G
dengan P
= {S ® Ba, B ® Bb, B ® b}.
Ruas
kiri semua produksinya terdiri dari sebuah V
maka G
kemungkinan tipe CFG
atau RG. Selanjutnya karena semua ruas kanannya terdiri dari sebuah V
atau string V
V
maka G
adalah RG(3).
3. Grammar G
dengan P
= {S ® Ba, B ® bB, B ® b}.
Ruas
kiri semua produksinya terdiri dari sebuah V
maka G
kemungkinan tipe CFG
atau RG. Selanjutnya karena ruas kanannya mengandung string V
V
(yaitu bB) dan juga
string V
V
(Ba) maka G
bukan RG, dengan kata
lain G
adalah CFG(2).
4. Grammar G
dengan P
= {S ® aAb, B ® aB}.
Ruas kiri semua produksinya terdiri dari
sebuah V
maka G
kemungkinan tipe CFG
atau RG. Selanjutnya karena ruas kanannya mengandung string yang panjangnya
lebih dari 2 (yaitu aAb) maka G
bukan RG, dengan kata
lain G
adalah CFG.
5. Grammar G
dengan P
= {S ® aA, S ® aB, aAb ® aBCb}.
Ruas
kirinya mengandung string yang panjangnya lebih dari 1 (yaitu aAb) maka G
kemungkinan tipe CSG
atau UG. Selanjutnya karena semua ruas kirinya lebih pendek atau sama dengan
ruas kananya maka G
adalah CSG.
6.
Grammar G
dengan P
= {aS ® ab, SAc ® bc}.
Ruas kirinya mengandung string yang panjangnya
lebih dari 1 maka G
kemungkinan tipe CSG
atau UG. Selanjutnya karena terdapat ruas kirinya yang lebih panjang daripada
ruas kananya (yaitu SAc) maka G
adalah UG.
Derivasi
Kalimat dan Penentuan Bahasa
Tentukan bahasa dari
masing-masing gramar berikut :
1. G
dengan P
= {1. S ® aAa, 2. A ® aAa, 3. A ® b}.
Jawab :
Derivasi kalimat terpendek : Derivasi kalimat umum :
S Þ aAa (1) S Þ aAa (1)
Þ aba (3) Þ aaAaa (2)
¼
Þ a
Aa
(2)
Þ a
ba
(3)
Dari pola kedua kalimat
disimpulkan : L
(G
) = { a
ba
½ n ³ 1}
2. G
dengan
P
= {1. S ® aS, 2. S ® aB, 3. B ® bC, 4. C ® aC, 5. C ® a}.
Jawab :
Derivasi kalimat terpendek : Derivasi kalimat umum :
S Þ aB (2) S Þ aS (1)
Þ abC (3) ¼
Þ aba (5)
Þ a
S (1)
Þ a
B (2)
Þ a
bC (3)
Þ a
baC (4)
¼
Þ a
ba
C (4)
Þ a
ba
(5)
Dari pola kedua kalimat disimpulkan : L
(G
)={a
ba
½n ³1, m³1}
3. G
dengan
P
= {1. S ® aSBC, 2. S ® abC, 3. bB ® bb,
4.
bC ® bc, 5. CB ® BC, 6. cC ® cc}.
Jawab :
Derivasi kalimat
terpendek 1: Derivasi kalimat terpendek 3 :
S Þ abC (2) S Þ aSBC (1)
Þ abc (4)
Þ aaSBCBC (1)
Derivasi kalimat terpendek 2 : Þ aaabCBCBC (2)
S Þ aSBC (1) Þ aaabBCCBC (5)
Þ aabCBC (2)
Þ aaabBCBCC (5)
Þ aabBCC (5) aabcBC (4) Þ aaabBBCCC (5)
Þ aabbCC (3) Þ aaabbBCCC (3)
Þ aabbcC (4)
Þ aaabbbCCC (3)
Þ aabbcc (6)
Þ aaabbbcCC (4)
Þ aaabbbccC (6)
Þ aaabbbccc (6)
Dari
pola ketiga kalimat disimpulkan : L
(G
) = { a
b
c
½ n ³ 1}
Menentukan
Grammar Sebuah Bahasa
1. Tentukan sebuah gramar regular untuk bahasa L
= { a
½ n ³ 1}
Jawab :
P
(L
) = {S ® aS½a}
2. Tentukan sebuah gramar bebas konteks untuk bahasa :
L
: himpunan bilangan
bulat non negatif ganjil
Jawab
:
Langkah
kunci : digit terakhir bilangan harus ganjil.
Vt={0,1,2,..9}
Vn
={S, G,J}
P={SàHT|JT|J ;
TàGT|JT|J; Hà2|4|6|8; Gà0|2|4|6|8;Jà1|3|5|7|9}
P={SàGS|JS|J ; Gà0|2|4|6|8;Jà1|3|5|7|9}
Buat
dua buah himpunan bilangan terpisah : genap (G) dan ganjil (J)
P
(L
) = {S ® J½GS½JS, G ® 0½2½4½6½8, J ® 1½3½5½7½9}
3.
Tentukan sebuah
gramar bebas konteks untuk bahasa :
A.
L
= himpunan semua
identifier yang sah menurut bahasa pemrograman Pascal dengan batasan : terdiri
dari simbol huruf kecil dan angka, panjang identifier boleh lebih dari 8
karakter
Jawab
:
Langkah
kunci : karakter pertama identifier harus huruf.
Buat
dua himpunan bilangan terpisah : huruf (H) dan angka (A)
P
(L
) = {S ® H½HT, T ® AT½HT½H½A,
H ® a½b½c½…, A ® 0½1½2½…}
4.
Tentukan gramar
bebas konteks untuk bahasa
L
(G
) = {a
b
½n,m ³ 1, n ¹ m}
Jawab
:
Langkah kunci : sulit untuk mendefinisikan L
(G
) secara langsung. Jalan keluarnya adalah dengan mengingat
bahwa x ¹ y berarti x > y atau
x < y.
L
= L
È L
, L
={a
b
½n > m ³ 1}, L
= {a
b
½1 £ n < m}.
P
(L
) = {A ® aA½aC, C ® aCb½ab}, Q(L
) = {B ® Bb½Db, D® aDb½ab}
P
(L
) = {S® A½B, A ® aA½aC, C ® aCb½ab, B ® Bb½Db, D® aDb½ab}
5. Tentukan sebuah gramar bebas konteks untuk bahasa :
L
= bilangan bulat non
negatif genap. Jika bilangan tersebut terdiri dari dua digit atau lebih maka
nol tidak boleh muncul sebagai digit pertama.
Jawab :
Langkah kunci : Digit terakhir bilangan harus genap.
Digit pertama tidak boleh nol. Buat tiga himpunan terpisah : bilangan genap
tanpa nol (G), bilangan genap dengan nol (N), serta bilangan ganjil (J).
P
(L
) = {S ® N½GA ½JA, A ® N½NA½JA, G® 2½4½6½8,
N® 0½2½4½6½8, J ® 1½3½5½7½9}
0 komentar:
Posting Komentar