BAHASA CONTEXT BEBAS

KELOPOK #3
Nama Ketua Kelompok
Petrus Kayun
Nama Anggota Kelompok
Ramadan P. Pello
Ridho A. Poy
Sadam
Saferius M. Wake

Context Free
Grammar
Contex Free Grammar diperkenalkan oleh Chomsky (1956)
sebagai bagian dari pembelajaran bahasa alami. CFG / Bahasa
Bebas Konteks adalah suatu metode rekursif yang paling
sederhana untuk menspesifikan aturan-aturan dalam menyusun
string dari bahasanya. CFG dapat pula menspesifikasikan bahasabahasa non reguler tertentu, misalnya aturan tingkat dari bahasa
pemerograman serta dari bahasa formal lainnya

Terinspirasi dari bahasa natural manusia, ilmuwanilmuwan ilmu komputer yang mengembangkan
bahasa pemrograman turut serta memberikan tata
bahasa (pemrograman) secara formal. Tata bahasa

ini diciptakan secara bebas-konteks dan disebut
CFG (Context Free Grammar). Hasilnya, dengan
pendekatan formal ini, kompiler suatu bahasa
pemrograman dapat dibuat lebih mudah dan
menghindari ambiguitas ketika parsing bahasa
tersebut. Contoh desain CFG untuk parser, misal : B
-> BB | (B) | e untuk mengenali bahasa dengan
hanya tanda kurung {‘(’,’)’} sebagai terminal-nya.
Proses parsing adalah proses pembacaan untai
dalam bahasa sesuai CFG tertentu, proses ini harus
mematuhi aturan produksi dalam CFG tersebut.

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 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 makalah ini adalah CNF
(Chomsky Normal Form).

Setelah terbentuk CFG yang telah dinormalkan
secara CNF, dalam implementasi parsing, terdapat
algoritma yang berguna untuk menentukan
apakah suatu untai ‘valid’, atau dapat diciptakan
dari aturan-aturan CFG yang ada. Salah satu
algoritma yang dapat dipakai adalah Algoritma
Cocke-Younger-Kasami
(CYK).
Algoritma
ini
menyelesaikan masalah analisa kembali sebuah
sub-untai yang sama karena seharusnya analisa
sub-untain dependen terhadap parsing sub-untai
yang diparsing setelahnya. Dengan Program
Dinamis, independensi yang


diinginkan dapat dicapai ketika parsing.
Algoritma CYK termasuk dalam bidang
Program Dinamis karena algoritma ini
membangun tabel status dua dimensi ketika
parsing
dimana
penentuan
parsing
elanjutnya diturunkan atau dihasilkan dari
parsing sebelumnya, hingga akhir untai.
Selain untuk mengetahui validitas untai
dalam suatu CFG, algoritma CYK yang
dimodifikasi dapat dipergunakan pula untuk
membangun pohon parsing

Komponen Contex Free Grammar
Contex Free Grammar memiliki 4 komponen :
1.Sekumpilan token yang di kenal sebagai terminal
2. Sekumpulan nol terminal.

3. Sekumpulan produksi dimana setiap produksi
memiliki nol terminal disebut sebagai bagian kiri
dari produksi, sebuah panah dan seurutan token
dan non terminal  atau seurutan token atau non
terminal yang disebut sebagai bagian kanan dari
produksi.
4. Pemilihan dari salah satu non terminal sebagai
simbol awal.


Simbol CFG (Contex Free Grammar)
Dalam
Contex
Free
Grammar
perlu
diketahui beberapa istilah berikut yang
berhubungan dengan grammar untuk bisa
membedakan satu symbol dan lainnya:
a.       Simbol berikut adalah terminal :

 Huruf kecil, awal dari abjad seperti a, b, c
 Simbol operator seperti  – dll.
 Angka 0,1. . . . . . .9
 Kata tercetak tebal seperti id atau if

b. Simbol beriktu adalah non terminal :
 Huruf besar, awal dari abjad seperti A, B, C
 Huruf S yang ada biasanya sebagai symbol
awal.
c. Huruf besar akhir adalah abjad seperti X, Y
Z mempresentasikan simbol grammar yaitu
terminal atau non terminal

d. Huruf kecil akhir dalam abjad, biasanya u, v,…z
mempresentasikan sekumpulan terminal.
e. Huruf yunani kecil, seperti α β sebagai contoh,
mempresentasikan sekumpulan umum symbol
grammar. Pada umunya produksi dapat ditulis
menjadi A α, menyatakan bahwa pada produksi
itu ada sebuah non terminal a pada sisi bagian

kiri dan sebuah string dari symbol grammar α
pada sisi bagian kanan.
f.  Apabila tidak ada pernyataan lain, maka bagian
kiri dari produksi merupakan symbol awal.

Contoh
Jika CFG  pada polindrom {a,b} dapat di
definisikan sebagai contoh sebelumnya,
maka CFG untuk bahasa komplemennya
(non polindrom) dapat di defenisikan
dengan aturan sebagai berikut :
 S à aSa|bSb|D
 Dà aAb|bAa
 AàA|aA|bA








Suatu contex free grammar CFG adalah G = (V,Σ,S,P)
dimana :
●  V dan  Σ adalah himpunan disjoin, V disebut himpunan
nonterminal, Σ disebut himpunan terminal
● P himpunan berhingga aturan produksi berbentuk A à α
dengan A € V dan α €
V dan α € (V- Σ)*
Aturan- aturan produksi dari satu variabel yang sama
menjadi alternatif string yang berbeda dapat dipersingkat
penulisannya dalam suatu ekspresi aturan produksi
dengan setiap alternatif dipisahkan oleh garis tegak ‘|’.
Misalnya Aà α,Aà β, Aàγ, dapat ditulis menjadi A à α| β| γ.
Notasi : =>G’ dan =>G ’

Notasi untuk menyatakan “operasi penurunan” dari
satu string menjadi string yang lain menjadi aturan
produksi.
Jika satu string α= α1 Aα2 diturunkan menjadi string
β= α1 αα 2 dalam satu langkah yang mengikuti

suatu aturan produksi Aà γ dari gambar G maka
penurunan itu dinyatakan dengan notasi αà G β
Kita mengatakan bahwa β diturunkan dari α dan
sebaliknya α diturunkan menjadi β. Apabila sudah
jelas berdasar grammar mana penurunan itu
dilakukan, maka kadang-kadang notasi tersebut
disederhanakan cukup dengan ‘=>’.

Bentuk umun dari notasi ‘=>G’ di atas
adalah ‘=>*G’ yang berarti penurunan
dilakukan dalam nol langkah atau lebih.
 Jika menurut grammar G terjadi serangkaian
penurunan
Α=> α1 =>α2 =>… β
Maka penulisannya dapat disingkat menjadi
α =>* β

Context Free Grammar ( CFG ) menjadi dasar
dalam pembentukan suatu parser/proses
analisis sintaksis. Bagian sintaks dalam suatu

kompilator kebanyakan di definisikan dalam
tata bahasa bebas konteks. Pohon
penurunan ( derivation tree/parse tree)
berguna untuk menggambarkan simbolsimbol variabel menjadi simbol-simbol
terminal setiap simbol variabel akan di
turunkan menjadi terminal sampai tidak ada
yang belum tergantikan.

Contoh, terdapat CFG dengan aturan
produksi sebagai berikut dengan simbol
awal S :
 S → AB
 A → aA | a
 B → bB | b
Maka jika ingin dicari gambar pohon
penurunan dengan string : ‘aabbb’ hasilnya
adalah seperti di bawah :

Proses penurunan / parsing bisa dilakukan
dengan cara sebagai berikut :

Penurunan terkiri (leftmost derivation):
simbol variabel terkiri yang di perluas
terlebih dahulu.
Penurunan terkanan ( rightmost derivation )
: simbol variabel terkanan yang diperluas
terlebih dahulu.

Misal : Grammar sbb :
 S → aAS | a
 A → SbA | ba
Untuk memperoleh string ‘aabbaa’ dari
grammar  diatas dilakukan dengan cara :
 Penurunan terkiri: S => aAS => aSbAS =>
aabAS => aabbaS => aabbaa
 Penurunan terkanan : S => aAS => aAa =>
aSbAa => aAbbaa => aabbaa