Session 10 Context-free grammar

Slides:



Advertisements
Presentasi serupa
Pertemuan 4 Finite Automata
Advertisements

Teori Bahasa dan Automata
Pertemuan 14 Pengantar ke Mesin Turing
Pertemuan 6 Ekspresi dan Bahasa Regular
Definisi Rekursif Ada kalanya kita mengalami kesulitan untuk mendefinisikan suatu obyek secara eksplisit. Mungkin lebih mudah untuk mendefinisikan obyek.
Pertemuan 12 Bentuk Normal untuk Grammar Bebas Konteks
Pertemuan 9 Sifat-sifat Bahasa Regular
Pengantar Teknik Kompilasi
TEORI BAHASA & OTOMATA (KONSEP & NOTASI BAHASA)
Session 11 Parse Tree, Application of Parse Tree, and Ambiguity
Session 12 Pushdown Automata
Pertemuan 2 Konsep dalam Teori Otomata dan Pembuktian Formal
KONSEP DASAR TEORI BAHASA DAN OTOMATA
Session 5 Finite Automata
Teori Bahasa & OTOMATA.
Pertemuan 3 Finite Automata
Syntax Analyzer (Parser) - Dasar
Session 7 Regular Expression and Language
Bahasa Pemrograman Tingkat Tinggi
Komponen sebuah Kompilator
Pertemuan 3 BAHASA REGULAR
Yenni astuti, S.T., M.Eng Teori Bahasa Yenni astuti, S.T., M.Eng
Analisis Leksikal.
Pertemuan 12 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
BAB X BENTUK NORMAL CHOMSKY.
CONTEXT FREE LANGUAGE Yang akan kita pelajari: Pohon Turunan
Pertemuan 9 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
CONTEXT- FREE LANGUAGE Yenni Astuti Version
Teori Bahasa & OTOMATA.
Pertemuan 8 CONTEXT FREE GRAMMAR (CFG)
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
KONSEP GRAMMAR & HIRARKI CHOMSKY
2. Mesin Turing (Bagian 1) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Kelompok 6 Turing Machine
Teori Bahasa & Otomata (Automata)
Teori-Bahasa-dan-Otomata
TEORI BAHASA DAN AUTOMATA TATA BAHASA LEVEL BAHASA
2. Review Teori Bahasa Formal dan Otomata
2. Mesin Turing (Bagian 1) IF5110 Teori Komputasi Oleh: Rinaldi Munir
TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)
Pertemuan 1 Teori Bahasa dan Automata
By : Lisda Juliana Pangaribuan
Pengantar Teknik Kompilasi
Kuis 1 Tekom MDS 11 September 2015.
Teori-Bahasa-dan-Otomata
GRAMMER ATAU TATA BAHASA
PENGHILANGAN REKURSIF KIRI
Sheila Nurul Huda, S.Kom, M.Cs
Bahasa Context Free.
Teori-Bahasa-dan-Otomata
Pengantar Teknik Kompilasi
TATA BAHASA BEBAS KONTEKS
BAB VIII POHON PENURUNAN.
Pengantar Teknik Kompilasi
Tata Bahasa Kelas Tata Bahasa
Pertemuan 10 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
Pengantar Teknik Kompilasi
Konsep dan Notasi Bahasa
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Pengantar Teknik Kompilasi
Pengenalan Pola secara sintaktis (PPSint)
Tinjauan Instruksional Khusus:Mahasiswa akan dapat menjelaskan cara kerja Deterministic Finite Automata (DFA),Non-Deterministic Finite Automata (NDFA),Non.
Pengantar Teknik Kompilasi
Analisis Sintaksis By: Kustanto, S.T., M.Eng.
Automata Hingga Deterministik (AHD)
Pengantar Teknik Kompilasi
Grammar dan Bahasa Automata
Chomsky Normal Form (CNF) / Bentuk Normal Chomsky (BNC)
Pengantar Teknik Kompilasi
Chomsky Normal Form (CNF) / Bentuk Normal Chomsky (BNC)
Transcript presentasi:

Session 10 Context-free grammar Theory of Language and Automata (KOM208) Credits: 3(3-0)

TIK, Subtopik dan Waktu Penyajian Tinjauan Instruksional Khusus: Mahasiswa akan dapat menjelaskan tata bahasa dan bahasa bebas konteks. Subtopik: Definisi dari tata bahasa bebas konteks Penurunan menggunakan tata bahasa Bahasa dari sebuah tata bahasa Waktu penyajian: 1 x 150 menit

Pendahuluan (1) Grammar merupakan alat untuk menjelaskan dan menganalisis bahasa. Aplikasinya: CFG memiliki peranan penting dalam teknologi kompilator sejak tahun 1960-an. CFG juga telah digunakan untuk menjelaskan format dokumen, menggunakan document-type definition (DTD) yang digunakan dalam komunitas XML (extensible markup language) untuk pertukaran informasi pada web.

Pendahuluan (2) Contoh, misal  = {0,1}. Bahasa Lpal dari polindrom-polindrom pada  didefinisikan secara rekursif sebagai berikut: Basis: , 0, 1 adalah polindrom. Induksi : Jika w adalah sebuah polindrom, begitu juga 0w0 dan 1w1. Tidak ada string lain dalam Lpal selain string yang diperoleh dari basis dan induksi.

Pendahuluan (3) CFG adalah sebuah notasi formal untuk menyatakan definisi rekursif dari bahasa. Sebuah grammar terdiri dari satu atau lebih variabel yang merupakan kelas-kelas dari string yaitu bahasa. Dalam contoh bahasa Lpal, terdapat hanya satu variabel p yang menyatakan himpunan dari polindrom-polindrom yaitu kelas-kelas dari string-string yang membentuk bahasa Lpal. Terdapat aturan-aturan yang menyatakan bagaimana string dalam setiap kelas dikonstruksi. Konstruksi dapat menggunakan simbol-simbol dari alphabet, string yang diketahui ada dalam satu kelas tertentu atau keduanya.

Contoh 1 CFG untuk polindrom adalah P   P  0 P  1 P  0P0 P  1P1

Definisi CFG (1) Komponen-komponen dalam deskripsi gramatikal dari sebuah bahasa adalah sebagai berikut: Himpunan berhingga dari simbol yang membentuk string dari bahasa yang didefinisikan. Alphabet ini dinamakan terminal-terminal atau simbol-simbol terminal. Dalam Contoh 1, simbol terminal adalah 0 dan 1. Himpunan berhingga dari variabel-variabel. Variabel-variabel tersebut dinamakan nonterminal atau kategori syntactic. Setiap variabel menyatakan sebuah bahasa. Dalam Contoh 1, hanya terdapat 1 variabel, yaitu P, yang menyatakan kelas dari polindrom-polindrom pada alphabet {0,1}.

Definisi CFG (2) Salah satu dari variabel-variabel menyatakan bahasa yang sedang didefinisikan. Variabel tersebut dinamakan start symbol. Variabel-variabel lain menyatakan kelas-kelas pembantu dari string-string yang digunakan untuk mendefinisikan bahasa dari start symbol. Dalam Contoh1, hanya terdapat 1 variabel, yaitu P, yang dinamakan start symbol.

Definisi CFG (3) Himpunan berhingga dari produksi-produksi atau aturan-aturan yang menyatakan definisi rekursif dari sebuah bahasa. Setiap produksi terdiri dari: Sebuah variabel yang didefinisikan (secara parsial) oleh produksi. Variabel ini sering kali dinamakan head dari produksi. Simbol produksi  Sebuah string dari nol atau lebih terminal dan variabel. String ini dinamakan body dari produksi, yang menyatakan salah satu cara untuk membentuk string dalam bahasa dari variabel dari head. Terminal-terminal tidak diubah dan setiap variabel dari body disubstitusi dengan string yang diketahui dalam bahasa dari variabel tersebut. Dalam Contoh 1 terdapat 5 produksi.

Komponen CFG Keempat komponen membentuk sebuah CFG atau hanya grammar, notasinya adalah G = (V, T, P, S), dengan V : Himpunan variabel-variabel T : Terminal P : Himpunan produksi S : Start symbol.

Contoh 2 Grammar Gpal untuk polindrom-polindrom dinyatakan oleh Gpal = ({P}, {0,1}, A, P) dengan A adalah himpunan dari 5 produksi seperti dalam Contoh 1

Contoh 3 Sebuah CFG menyatakan ekspresi dalam bahasa pemrograman, dengan ketentuan berikut: Ekspresi dibatasi hanya mengandung operator dan (penjumlahan dan perkalian). Argumen juga dapat berupa identifier yang dibatasi hanya untuk huruf a dan b, dan digit 0 dan 1. Setiap identifier haruslah diawali dengan a atau b dan dapat diikuti oleh string dalam {a, b, 0, 1}*.

Contoh 3 (Lanjutan) Terdapat dua variabel dalam grammar ini yaitu: E menyatakan ekspresi yang juga merupakan start symbol dan merepresentasikan bahasa dari ekspresi yang didefinisikan. I menyatakan identifier.

Contoh 3 (Lanjutan) CFG yang dimaksud memiliki produksi-produksi berikut E  I E  E + E E  E*E E (E) I  a I  b I  Ia I  Ib I  I0 I  I1 Secara formal CFG yang dimaksud adalah G = ({E,I}, T, P, E) dimana T adalah himpunan simbol-simbol {+, *, (, ), a, b, 0, 1} dan P adalah himpunan produksi-produksi.

Notasi untuk produksi Produksi-produksi A1, A2, …, An dapat digantikan dengan notasi A  1| 2,|…| n Dalam Contoh 1, grammar untuk polindrom dapat ditulis sebagai P  | 0 | 1 | 0P0 | 1P1.

Penurunan Menggunakan Sebuah Grammar Produksi-produksi dari sebuah CFG dapat digunakan untuk menyimpulkan bahwa string-string tertentu dalam bahasa dari sebuah variabel. Terdapat 2 pendekatan untuk inferensi tersebut, yaitu Inferensi rekursif, menggunakan aturan dari body ke head Derivation, menggunakan aturan dari head ke body

Langkah-langkah Inferensi rekursif Ambil string-string yang diketahui ada dalam bahasa dari setiap variabel dari body. Rangkai string-string tersebut, dalam urutan yang sesuai, dengan terminal-terminal muncul dalam body. Simpulkan bahwa string yang dihasilkan adalah dalam bahasa dari variabel pada head.

Langkah-langkah derivation Perluas start symbol menggunakan salah satu produksinya (yaitu gunakan salah satu produksi yang memiliki head adalah start symbol). Perluas string yang dihasilkan dengan mengganti salah satu dari variabel dengan body dari salah satu produksi-produksinya, dan seterusnya sampai diperoleh sebuah string yang mengandung terminal-terminal saja. Bahasa dari grammar adalah semua string-string dari terminal-terminal yang dapat diperoleh dengan cara ini.

Contoh 4: Inferensi rekursif Tabel berikut menyatakan proses inferensi menggunakan grammar pada Contoh 3: Baris String yang diperoleh Untuk Bahasa dari Produksi yang digunakan String-string yang digunakan (i) a I 5 - (ii) b 6 (iii) b0 9 (iv) b00 (v) E 1 (vi) (vii) a + b00 2 (v), (vi) (viii) (a + b00) 4 (ix) a*(a + b00) 3 (v), (viii)

Definisi simbol relasi  Anggap G = (V,T,P,S) adalah sebuah CFG. Misalkan A adalah sebuah string dari terminal-terminal dan variabel-variabel dengan A adalah sebuah variabel. Bahwa  dan  adalah string dalam (VT), dan A  V. Misalkan A   adalah sebuah produksi dari G. Maka kita katakan Jika G dimengerti, kita hanya mengatakan A  .

Definisi simbol relasi  (lanjutan) Perhatikan bahwa satu langkah derivation mengganti suatu variabel dalam string dengan body dari salah satu produksinya. Kita dapat memperluas hubungan  untuk menyatakan 0, 1 atau banyak langkah penurunan.

Definisi untuk notasi * Notasi * menyatakan 0 atau banyak langkah dengan definisi sebagai berikut: Basis: Untuk suatu string  dari terminal-terminal dan variabel-variabel kita katakan artinya suatu string menurunkan dirinya sendiri.

Definisi untuk notasi * (lanjutan) Induksi: Jika dan maka Bahwa jika  dapat menjadi  dengan 0 atau lebih langkah, dan satu langkah lagi mengambil  ke , maka  dapat menjadi . Dalam pernyataan lain, notasi berarti bahwa terdapat serangkaian string-string 1,2,..., n, untuk n≥1 sedemikian sehingga  = 1  = n Untuk i = 1, 2, ... , n1, diperoleh i  i +1.

Contoh 5 Tunjukkan bahwa a*(a+b00) adalah dalam bahasa dari variabel E pada Contoh 3. Berikut adalah salah satu penurunan tersebut : E  E*E  I*E  a*E  a*(E)  a*(E+E)  a*(I+E)  a*(a+E)  a*(a+I)  a*(a+I0)  a*(a+I00)  a*(a+b00)

Notasi * Notasi * digunakan untuk menyingkat penurunan. Dari basis bisa diperoleh E * E Penggunaan berulang bagian induksi menghasilkan E * E*E E * I*E dan seterusnya sampai diperoleh E * a*(a+b00)

Leftmost dan Rightmost Derivation Leftmost derivation pada setiap langkah digantikan leftmost variable dengan salah satu dari body-body produksinya. Notasi: lm untuk satu langkah dan *lm untuk banyak langkah. Righmost derivation, rightmost variable diganti oleh salah satu dari body-nya. Notasi: rm untuk satu langkah dan *rm untuk banyak langkah.

Contoh 6 Penurunan dari Contoh 5 merupakan leftmost derivation E lm E*E lmI*E lm a*E lm a*(E) lm a*(E+E) lm a*(I+E) lm a*(a+E) lm a*(a+I) lm a*(a+I0) lm a*(a+I00) lm a*(a+b00) Secara singkat dapat dinyatakan E *lm a*(a+b00).

Contoh 6 (lanjutan) Sedangkan rightmost derivation a*(a+b00): E rm E*E rm E*(E) rm E*(E+E) rm E*(E+I) rm E*(E+I0) rm E*(E+I00) rm E*(E+b00) rm E*(I+b00) rm E*(a+b00) rm I*(a+b00) rm a*(a+b00) Secara singkat dapat dinyatakan E *rm a*(a+b00).

Leftmost atau rightmost derivation Baik menggunakan leftmost atau rightmost derivation: “jika w adalah terminal string dan A adalah variabel maka A * w jika dan hanya jika A *lm w dan A * w jika dan hanya jika A *rm w”.

Bahasa dari Sebuah Grammar Jika G = (V,T,P,S) adalah sebuah CFG, bahasa dari G dinotasikan L(G) adalah himpunan dari string-string terminal yang memiliki penurunan dari start symbol. Bahwa L(G) = {w dalam T* | S * w} Jika sebuah bahasa L adalah bahasa dari CFG, maka L dikatakan CFL (Context Free Language). Sebagai contoh, himpunan dari polindrom-polindrom adalah CFL (Bukti dapat dilihat pada buku rujukan).

Bentuk-Bentuk Sentential Penurunan dari start symbol menghasilkan string-string yang memiliki aturan khusus  dinamakan bentuk-bentuk sentential. Bahwa, jika G = (V,T,P,S) adalah sebuah CFG, maka string  dalam (VT)* sedemikian sehingga s *  adalah bentuk sentential Jika S *lm  maka  adalah bentuk left sentential Jika S *rm  maka  adalah bentuk right sentential Bahasa L(G) adalah bentuk-bentuk sentential yang ada dalam T*; yaitu hanya terdiri dari terminal

Contoh 7 Dari Contoh 3: E*(I+E) adalah sebuah bentuk sentential karena terdapat sebuah penurunan E  E*E  E*(E)  E*(E+E)  E*(I+E) Contoh bentuk left sentential adalah a*E, karena terdapat penurunan berikut E lm E*E lm I*E lm a*E Contoh bentuk right sentential adalah E*(E+E), karena terdapat penuruan berikut E rm E*E rm E*(E) rm E*(E+E)

Daftar Pustaka John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. 2001. Introduction to Automata Theory, Languange, and Computation. Edisi ke-2. Addison-Wesley