Anda di halaman 1dari 13

1.

BAHASA YANG BEBAS KONTEKS

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

Context Free Grammar ( CFG ) adalah tata bahasa yang mempunyai tujuan sama seperti halnya tata bahasa regular yaitu merupakan suatu cara untuk menunjukkan bagaimana menghasilkan suatu untai-untai dalam sebuah bahasa.

Latar Belakang Context Free Grammar ( CFG )


Terinspirasi dari bahasa natural manusia, ilmuwan-ilmuwan ilmu komputer yang mengembangkan bahasa pemrograman turut serta memberikan grammar (pemrograman) secara formal. Grammar ini diciptakan secara bebas-konteks dan disebut Context Free Grammar (CFG). 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 string dalam bahasa sesuai CFG tertentu, proses ini harus mematuhi aturan produksi dalam CFG tersebut

Parsing
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 simbol-simbol 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 :

Context Free Grammar (CFG) - Parse Tree 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

Contoh Lain: 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 string x23b.

Derivasi dan Parsing

Ambiguitas
Ambiguitas terjadi bila terdapat lebih dari satu pohon penurunan yang berbeda untuk memperoleh suatu string. Misalkan terdapat tata bahasa sebagai berikut :

SA|B Aa Ba

Untuk memperoleh untai a bisa terdapat dua cara penurunan sebagai berikut :

S => A => a S => B => a

Contoh ambiguitas lain: Diketahui grammar G = {S SOS|A , O *|+, A 0|1|2||9} String : 2*3+7 mempunyai dua pohon sintaks berikut :

Sebuah string yang mempunyai lebih dari satu pohon sintaks disebut string ambigu (ambiguous). Grammar yang menghasilkan paling sedikit sebuah string ambigu disebut grammar ambigu.

2. BENTUK NORMAL CHOMSKY Bentuk normal Chomsky / Chomsky Normal Form (CNF) merupakan salah satu bentuk normal yang sangat berguna untuk Context Free Grammar (CFG) . Bentuk normal Chomsky dapat dibuat dari sebuah tata bahasa bebas konteks yang telah mengalami penyederhanaan yaitu penghilangan produksi useless, unit, dan . Dengan kata lain, suatu tata bahasa bebas konteks dapat dibuat menjadi bentuk normal Chomsky dengan syarat tata bahasa bebas kontesk tersebut: Tidak memiliki produksi useless Tidak memiliki produksi unit Tidak memiliki produksi Bentuk normal Chomsky (Chomsky Normal Form, CNF) adalah Context Free Grammar (CFG) dengan setiap produksinya berbentuk : A BC atau A a. Transformasi CFG ke CNF Transformasi CFG ke CNF adalah transformasi berikut :

Transformasi CFG ke CNF Aturan produksi dalam bentuk normal Chomsky ruas kanannya tepat berupa sebuah terminal atau dua variabel. Misalkan: A BC Ab Ba C BA | d Pembentukan Bentuk Normal Chomsky Langkah-langkah pembentukan bentuk normal Chomsky secara umum sebagai berikut: Biarkan aturan produksi yang sudah dalam bentuk normal Chomsky Lakukan penggantian aturan produksi yang ruas kanannya memuat simbol terminal dan panjang ruas kanan > 1 Lakukan penggantian aturan produksi yang ruas kanannya memuat > 2 simbol variabel Penggantian-penggantian tersebut bisa dilakukan berkali-kali sampai akhirnya semua aturan produksi dalam bentuk normal Chomsky Selama dilakukan penggantian, kemungkinan kita akan memperoleh aturan-aturan produksi baru, dan juga memunculkan simbol-simbol variabel baru Bisa dilihat tahapan-tahapan tersebut pada gambar berikut:

Langkah-langkah pembentukan bentuk normal Chomsky Contoh, Context Free Grammar ( kita anggap CFG pada bab ini sudah mengalami Penyederhanaan CFG ): S bA | aB A bAA | aS | a B aBB | bS | b Aturan produksi yang sudah dalam bentuk normal Chomsky: Aa Bb Dilakukan penggantian aturan produksi yang belum bentuk normal Chomsky (=> bisa dibaca berubah menjadi): S bA => S P1A S aB => S P2B A bAA =>A P1AA => A P1P3 A aS => A P2S B aBB => B P2BB => B P2P4 B bS => B P1S Terbentuk aturan produksi dan simbol variabel baru: P1 b P2 a P3 AA P4 BB Hasil akhir aturan produksi dalam bentuk normal Chomsky : Aa Bb S P1A S P2B A P1P3 A P2S

B P2P4 B P1S P1 b P2 a P3 AA P4 BB P1 = P, P2 =Q, P3 =R, P4 =T, sehingga aturan produksinya menjadi: S PA S QB A PR A QS Aa B QT B PS Bb Pb Qa R AA T BB Contoh Lain: Tata bahasa bebas konteks: S aB | CA A a | bc B BC | Ab C aB | b Aturan produksi yang sudah dalam bentuk normal Chomsky : S CA Aa B BC Cb Penggantian aturan produksi yang belum dalam bentuk normal Chomsky: S aB => S P1B A bc => A P2P3 B Ab => B A P2 C aB => C P1B Terbentuk aturan produksi dan simbol variabel baru: P1 a P2 b P3 c Hasil akhir aturan produksi dalam bentuk normal Chomsky : S CA Aa

B BC Cb S P1B S P2P3 B A P2 C P1B P1 a P2 b P3 c Misalkan P1 = D, P2 = E, P3 =F, maka aturan produksinya menjadi: S CA Aa B BC Cb S DB S EF B AE C DB Da E b F c Contoh Transformasi CFG ke CFN lainya: CFG: S aAB | ch | CD A dbE | eEC B ff | DD C ADB | aS Di E jD Aturan produksi yang sudah dalam bentuk normal Chomsky : S CD B DD Di Penggantian aturan produksi: S aAB => S P1P2 S ch => S P3P4 A dbE => A P5P6 A eEC => A P8P9 B ff => B P10P10 C ADB => C AP11 C aS => C P1S E jD => E P12D

Terbentuk aturan produksi baru: P1 a P2 AB P3 c P4 h P5 d P6 P7E P7 b P8 e P9 EC P10 f P11 DB P12 j Hasil akhir dalam bentuk normal Chomsky: S CD B DD Di S P1P2 S P3P4 A P5P6 A P8P9 B P10P10 C AP11 C P1S E P12D P1 a P2 AB P3 c P4 h P5 d P6 P7E P7 b P8 e P9 EC P10 f P11 DB P12 j

3. NOTASI BNF

4. DIAGRAM SINTAKS

Misalnya : 1) T F*T | F/T | F Diagram sintaksnya adalah sebagai berikut :

2) <expression> <term> <factor> <variable> <constant> <digit>

::= ::= ::= ::= ::= ::=

<term> | <expression> "+" <term> <factor> | <term> "*" <factor> <constant> | <variable> | "(" <expression> ")" "x" | "y" | "z" <digit> | <digit> <constant> "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"

DIAGRAM SINTAS :

Anda mungkin juga menyukai