LN Sederhana CFG
LN Sederhana CFG
Lecture Notes
Pendahuluan
Context Free Grammar (CFG) terdiri atas sejumlah production yang berbentuk A
dengan berupa sejumlah simbol terminal dan non-terminal. Selain contex-free grammar
terdapat jenis grammar lain yang disebut context-sensitive grammar (CSG). Perbedaannya
dengan CFG adalah pada bentuk production. Bagian head production (simbol di kiri tanda
panah) CFG selalu berupa satu simbol non terminal. Bagian head production CSG boleh
terdiri atas sejumlah simbol.
Production berikut milik sebuah CFG
1. P 0P0
2. P 1P1
3. P 0
4. P 1
5. P
Derivasi yang dapat dibentuk diantaranya
P 1P1 10P01 101P101 101101
sentential form 1P1 diturunkan dari sentential form P berdasarkan production 2.
sentential form 10P01 diturunkan dari sentential form 1P1 berdasarkan production 1.
Production berikut milik sebuah CSG
1. P 0P0
2. 0P 01P1
3. P 0
4. P 1
5. P
Derivasi yang dapat dibentuk diantaranya
P 0P0 01P10 01110
Production nomor 2, 0P 01P1, menyatakan simbol P boleh diderivasi dengan 1P1 hanya
jika P berada di dalam konteks tertentu yaitu di sebelah kiri P terdapat simbol 0. Jadi P tidak
free diderivasi menjadi 1P1, maksudnya tidak bisa membentuk derivasi P 1P1 11P11
1111
Sepaham dengan namanya, production pada CFG mempunyai susunan body (simbolsimbol di kanan tanda panah) yang bebas, tidak ada ketentuan tentang jenis dan jumlah
simbol pembentuk body suatu production. Terlalu bebasnya bentuk production CFG akan
merepotkan implementasi.
Eliminasi Useless Production
Apakah semua production suatu CFG memang berguna (usefull) ? Simbol X pada grammar
G = (V,T, P, S) disebut berguna jika terdapat derivasi S
X
w dengan w terdiri atas
simbol terminal. Dua persyaratan harus dipenuhi X untuk dianggap berguna:
w
1. generating, yaitu X
maksudnya X dapat menghasilkan minimum satu buah string
2. reachable, yaitu S
X
Maksudnya dimulai dari start symbol harus bisa dihasilkan derivasi yang mengandung X
Uji reachable
S Aa A reachable dari S
SB
B reachable dari S
Tidak terdapat derivasi S C sehingga C tidak reachable dari S
Dengan demikian production yang usefull adalah
1. S Aa
2. S B
3. A ab
4. B b
Eliminasi -Production
Di dalam CFG mungkin terdapat -production, production berbentuk A . Production ini
bermanfaat untuk membentuk empty string atau untuk mengakhiri suatu pengulangan.
Production di bawah ini
1. P 0P0
2. P 1P1
3. P 0
4. P 1
5. P
menggunakan P untuk membentuk empty string (P ) dan mengakhiri pengulangan
pada P 0P0 00.
Jika sebuah language L mempunyai grammar CFG maka L {} mempunyai CFG yang
tidak mengandung -production.
Menghilang -production pada CFG diawali dengan mendeteksi variabel yang nullable.
Sebuah simbol non terminal atau variabel A disebut nullable jika A
. Apabila A muncul
pada body production misalnya B CAD maka production ini diubah menjadi dua versi,
satu dengan A dan yang lain tanpa A.
Hilangkan -production di bawah ini
1. S aAb
2. A aAb
3. A
Contoh string yang dihasilkan dari production di atas:
1) S aAb ab
production 1, 3
2) S aAb aaAbb aabb
production 1, 2, 3
3) S aAb aaAbb aaaAbbb aaabbb production 1, 2, 2, 3
Dengan menggunakan production 3 diperoleh A , artinya A nullable
Apakah S nullable ? S aAb ab, artinya S tidak nullable
Pada production S aAb terdapat sebuah simbol nullable yaitu A,
Bentuk dua production:
S aAb
S ab
Pada production A aAb terdapat sebuah simbol nullable yaitu A,
Bentuk dua production:
A aAb
A ab
Hasil:
1. S aAb
2. S ab
3. A aAb
4. A ab
Contoh string yang dihasilkan dari keempat production tersebut:
1) S ab
production 2
2) S aAb aabb
production 1, 4
3) S aAb aaAbb aaabbb production 1, 3, 4
Hilangkan -production di bawah ini
1. S ABaC
2. A BC
3. B b |
4. C D |
5. D d
Contoh string yang dihasilkan dari production di atas:
1) S ABaC BCBaC CBaC BaC aC a production 1, 2, 3b, 4b, 3b, 4b
2) S ABaC BCBaC bCBaC
production 1, 2, 3a
bDBaC bdBaC bdaC bda
production 4a, 5, 3b, 4b
Dengan menggunakan production 3 diperoleh B , artinya B nullable
Dengan menggunakan production 4 diperoleh C , artinya C nullable
Dengan menggunakan production 2 diperoleh A BC
Karena B dan C nullable maka A juga nullable
D dan S tidak nullable
Production S ABaC mengandung 3 simbol nullable maka akan terbentuk 23
production:
S ABaC | BaC | AaC | ABa | aC | Ba | Aa | a
Production A BC mengandung 2 simbol nullable, akan terbentuk 22 production:
A BC | B | C
Salah lagi mana? A , tidak digunakan
Hasil:
1. S ABaC
2. S BaC
3. S AaC
4. S ABa
5. S aC
6. S Ba
7. S Aa
8. S a
9. A BC
10. A B
11. A C
12. B b
13. C D
14. D d
Hasil:
1. E E + T | T * F | ( E ) | a | b
2. T T * F | ( E ) | a | b
3. F ( E ) | a | b
4. I a | b
String b * (a + b) diperoleh dari derivasi:
E T * F b * F b * (E) b * (E + T)
b * (a + T) b * (a + b)
Referensi
Hopcroft, E. John, Rajeev Motwani, Jeffrey D. Ullman, (2001), Introduction to Automata
Theory, Languages, and Computation, 2nd edition, Addison-Wesley
Linz, P., (1990), An Introduction to Formal Languages and Automata, D.C. Heath and
Co.
Martin, J. C. (1991), Introduction to Languages and the Theory of Computation,
McGraw-Hill