Session 11 Parse Tree, Application of Parse Tree, and Ambiguity

Slides:



Advertisements
Presentasi serupa
STRUKTUR DATA (10) tree manipulation
Advertisements

Pertemuan 4 Finite Automata
Teori Bahasa dan Automata
Pertemuan 14 Pengantar ke Mesin Turing
JULIAN ADINATA PAUL JHONATAN UKEU PUTRI ROMLI MAULANA
Kuliah 03 – Pengenalan Analisa Sintak
Pertemuan 6 Ekspresi dan Bahasa Regular
Session 10 Context-free grammar
Matematika Diskrit Suryadi MT Tree.
Teori Bahasa dan Automata
Pertemuan 8 STRUKTUR POHON (TREE).
Pertemuan 12 Bentuk Normal untuk Grammar Bebas Konteks
Pertemuan 9 Sifat-sifat Bahasa Regular
STRUKTUR DATA TREE (POHON)
Induksi Matematika.
7 POHON BINER BAB Definisi Pohon dan Pohon Biner
Pengantar Teknik Kompilasi
Penyederhanaan Bahasa Bebas Context
PENGHILANGAN REKURSIF KIRI
Session 12 Pushdown Automata
Pertemuan 2 Konsep dalam Teori Otomata dan Pembuktian Formal
Pohon Urai (parse) dan Derivasi
KONSEP DASAR TEORI BAHASA DAN OTOMATA
Session 5 Finite Automata
TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)
Pertemuan 3 Finite Automata
Syntax Analyzer (Parser) - Dasar
Session 7 Regular Expression and Language
Pohon penurunan dan Penyederhanaan Tata Bahasa Bebas Konteks
8. Pohon m-ary Pohon berakar yang setiap simpul cabangnya mempunyai paling banyak n buah anak disebut pohon m-ary. Jika m = 2 maka pohon disebut pohon.
Bahasa Pemrograman Tingkat Tinggi
Komponen sebuah Kompilator
Analisis Leksikal.
Pertemuan 12 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
STRUKTUR DATA tree manipulation
CONTEXT FREE LANGUAGE Yang akan kita pelajari: Pohon Turunan
9. POHON PENURUNAN.
Pengurai Prediktif & Bottom Up Parsing (penguraian bawah atas)
Pertemuan 9 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
Komponen sebuah Kompilator
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Teori-Bahasa-dan-Otomata
TREE STRUCTURE (Struktur Pohon)
PohonBiner Rachmansyah, S.Kom..
TEORI BAHASA DAN OTOMATA
Diagram Pohon (Tree Diagram)
TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)
Bahasa Type 2 (CONTEXT FREE GRAMMAR)
Pengantar Teknik Kompilasi
Teori-Bahasa-dan-Otomata
PENYEDERHANAAN TATA BAHASA BEBAS KONTEKS.
PENGHILANGAN REKURSIF KIRI
Sheila Nurul Huda, S.Kom, M.Cs
Bahasa Context Free.
Teori-Bahasa-dan-Otomata
TATA BAHASA BEBAS KONTEKS
ALGORITMA & PEMROGRAMAN 1C
BAB VIII POHON PENURUNAN.
Penyederhanaan Tata Bahasa Bebas Konteks
Penyederhanaan Tata Bahasa Bebas Konteks
Pengantar Teknik Kompilasi
Pertemuan 10 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
TEORI BAHASA & AUTOMATA
POHON Pohon (Tree) merupakan graph terhubung tidak berarah dan tidak mengandung circuit. Contoh: (Bukan) (Bukan) (Bukan)
2. Mesin Turing (Bagian 2) IF5110 Teori Komputasi Oleh: Rinaldi Munir
Pengenalan Kompilasi & Klasifikasi Tatabahasa Formal menurut Chomsky
Analisis Sintaksis By: Kustanto, S.T., M.Eng.
Automata Hingga Deterministik (AHD)
Chomsky Normal Form (CNF) / Bentuk Normal Chomsky (BNC)
Chomsky Normal Form (CNF) / Bentuk Normal Chomsky (BNC)
Transcript presentasi:

Session 11 Parse Tree, Application of Parse Tree, and Ambiguity Teori Bahasa dan Otomata (KOM208) SKS: 3(3-0)

TIK, Subtopik dan Waktu Penyajian Tinjauan Instruksional Khusus: Mahasiswa akan dapat menjelaskan cara kerja dan aplikasi parse tree. Subtopik: Pembuatan parse tree Inferensi dan penurunan Aplikasi tata bahasa bebas konteks Ambiguitas dalam tata bahasa dan bahasa Waktu penyajian: 2 x 150 menit

Parse Tree Parse tree dikonstruksi sebagai berikut, misal Grammar G = (V,T,P,S). Parse tree untuk G adalah tree dengan kondisi-kondisi berikut: Setiap node interior diberi label sebuah variabel dalam V. Setiap daun/leaf diberi label oleh sebuah variabel, sebuah terminal atau . Jika leaf diberi label , maka leaf tersebut haruslah merupakan anak satu-satunya dari parent-nya.

Parse Tree Jika sebuah node interior diberi label A, dan anak-anaknya diberi label berturut-turut X1, X2,..., Xk dari kiri, maka A  X1, X2,..., Xk adalah produksi dalam P. Satu-satunya perkalian dari para X dapat menjadi  adalah jika perkalian tersebut merupakan label dari satu-satunya anak (child), dan A   adalah produksi dari G.

Contoh 8 Parse tree berikut menujukkan penurunan I+E dari E. Root diberi label variabel E. Produksi yang digunakan pada root adalah E  E+E karena terdapat 3 anak dari root yang berturut-turut mempunyai label E, + dan E dari kiri. Pada anak paling kiri dari root, produksi digunakan, karena terdapat satu anak dari node tersebut, diberi label I.

Contoh 9 Parse tree berikut adalah parse tree untuk grammar palindrom.

Hasil dari Sebuah Parse Tree Jika leaf-leaf dari parse tree dirangkai dari kiri, akan diperoleh sebuah string, yang dinamakan hasil dari tree. String-string tersebut diturunkan dari variabel root. Hal-hal yang harus diperhatikan berkaitan dengan hasil dari sebuah parse tree adalah Hasil adalah sebuah string terminal. Bahwa, semua leaf diberi label sebuah terminal atau . Root diberi label oleh start symbol.

Hasil dari Sebuah Parse Tree Tree dengan ketentuan tsb adalah parse tree yang memiliki hasil adalah string-string dalam bahasa dari grammar tertentu. Bahasa dari sebuah grammar adalah himpunan dari hasil-hasil dari parse tree yang memiliki start symbol pada root dan sebuah string terminal sebagai hasil. Parse tree yang menujukkan bahwa a*(a+b00) adalah dalam bahasa dari grammar dalam Contoh 3 (Bab Grammar Bebas Konteks)

Inferensi, Penurunan dan Pohon Penurunan Diberikan sebuah grammar G=(V,T,P,S), penyataan-pernyataan berikut adalah ekuivalen: 1. Prosedur inferensi rekursif menentukan bahwa string terminal w adalah dalam bahasa dari variabel 2. 3. 4. Terdapat sebuah pohon penurunan dengan root A dan hasil w

Pembuktian Ekuivalensi Parse tree Leftmost derivation Rightmost derivation derivation Recursive inference

Dari Inferensi ke Tree (1) Teorema: Misalkan G=(V,T,P,S) adalah sebuah CFG. Jika prosedur inferensi rekursif menyatakan bahwa string terminal w adalah dalam bahasa dari variabel A, maka terdapat sebuah pohon penurunan dengan root A dan hasil w.

Dari Inferensi ke Tree (2) Bukti: induksi pada banyaknya langkah yang digunakan untuk menentukan bahwa w adalah dalam bahasa A. Basis: Produksi Aw. Root: A Hasil: w A w

Dari Inferensi ke Tree (3) Induksi: Misalkan w=w1w2…wk Misalkan kesimpulan bahwa hasil w ada dalam bahasa A diperoleh setelah n+1 langkah. A w2 w1 w3 x1 x2 xk … subtree

Dari Inferensi ke Tree (4) Jika Xi adalah sebuah terminal, maka wi = Xi; yaitu wi terdiri dari hanya 1 terminal dari produksi. Subtree: wi Jika Xi adalah sebuah variabel, maka wi adalah sebuah string yang sebelumnya disimpulkan ada dalam bahasa Xi. Terdapat beberapa tree dengan root Xi dan hasil wi. Tree ini ditempelkan ke node untuk Xi Hasilnya adalah hasil dari subtree dirangkai dari kiri ke kanan, yaitu string w=w1w2…wk.

Dari Tree ke Penurunan (1) Mengkonstrukai leftmost derivation atau rightmost derivation dari sebuah pohon penurunan. Penurunan dari string dari sebuah variabel dapat diletakan dalam penurunan lain

Dari Tree ke Penurunan (2) Contoh: Perhatikan kembali CFG yang merepresentasikan ekspresi dalam bahasa pemrograman dengan operator + dan *. Terdapat penurunan: EI Ib  ab Untuk string-string  dan , penurunan berikut benar: E  I  Ib  ab

Dari Tree ke Penurunan (3) Contoh: Diketahui penuruan EE+E E+(E) Penuruan ab dari E adalah E+(E) E+(I) E+(Ib) E+(ab)

Dari Tree ke Penurunan (4) Teorema: Misal G=(V,T,P,S) adalah sebuah CFG, dan anggap terdapat sebuah pohon penurunan dengan root yang diberi label variabel A dan dengan hasil w, dimana w adalah dalam T*. Maka terdapat sebuah leftmost derivation dalam grammar.

Dari Tree ke Penurunan (5) Bukti: induksi pada ketinggian (height) dari tree. Basis: Height dari tree = 1; tree dengan root A dan children membaca w dari kiri ke kanan Karena tree ini adalah parse tree, maka Aw adalah sebuah produksi. A w Sehingga leftmost deriavtion berikut terdiri dari satu langkah

Dari Tree ke Penurunan (6) Induksi: Jika height dari tree adalah n, n>1. Tree memiliki root A dan children X1, X2, … Xk dari kiri. A w2 w1 w3 x1 x2 xk …

Dari Tree ke Penurunan (7) Jika Xi adalah sebuah terminal, definisikan wi menjadi string yang terdiri dari Xi. Jika Xi adalah sebuah variabel, maka Xi adalah root dari subtree dengan sebuah hasil adalah terminal, yang dinamakan wi. Hipotesis induksi: terdapat leftmost derivarion:

Dari Tree ke Penurunan (8) Nyatakan w=w1w2…wk. Konstruksi leftmost derivation dari w adalah sebagai berikut: Mulai dengan langkah Untuk setiap i=1, 2, …, k kita tunjukkan bahwa Ketika i=k, hasil adalah leftmost derivation dari w dari A.

Ambiguitas dalam Grammar Tidak semua grammar dapat menyatakan struktur yang unik untuk setiap string dalam sebuah bahasa. Kadang-kadang, grammar dapat dirancang ulang agar dapat memberikan struktur yang unik untuk setiap string dalam sebuah bahasa.

Contoh 10 CFG untuk ekspresi sederhana: E  I | E + E | E * E | (E) I  a | b | Ia | Ib | I0 | I1 Produksi-produksi E  E + E, E  E * E ekpresi-ekspresi sederhana dapat di-generate dalam beberapa cara. Sebagai contoh, bentuk sentential E + E * E memiliki dua penurunan dari E, yaitu: 1. E  E + E  E + E *E 2. E  E * E  E + E *E

Parse tree untuk E + E * E Gambar a Gambar b

Contoh 10 (lanjutan) Grammar tsb memberikan dua struktur yang berbeda untuk string atau terminal-terminal yang diturunkan dengan mengganti 3 ekspresi dalam E + E * E dengan identifier. Contoh: string a + b memiliki beberapa penurunan yang berbeda, yaitu: 1. E  E + E  I + E  a + E  a + I  a + b 2. E  E + E  E + I  I + I  I + b  a + b

Ambiguitas Ambiguitas disebabkan karena adanya dua atau lebih parse tree, bukan karena banyaknya penurunan. CFG G = (V, T, P, S) dikatakan ambigu jika terdapat sedikitnya satu string w dalam T* dimana kita dapat menentukan dua parse tree yang berbeda. Masing-masing parse tree tersebut memiliki root yang diberi label S dan hasil w. Jika setiap string memiliki paling banyak satu parse tree dalam grammar, maka grammar tersebut dikatakan tidak ambigu (unambiguous).

Contoh 10 (lanjutan) Gambar b Gambar a Parse tree yang menghasilkan string a + a * a Gambar b Gambar a

Menghilangkan Ambiguitas dari Grammar (1) Penyebab ambiguitas dalam grammar pada Contoh: Gambar a mengelompokkan operator * sebelum operator +. Sedangkan Gambar b mengelompokkan + di depan *. Tetapkan hanya struktur dalam Gambar a yang legal dalam grammar yang tidak ambigu.

Menghilangkan Ambiguitas dari Grammar (2) Urutan operator-operator yang serupa dapat dikelompokkan dari kiri atau dari kanan. Sebagai contoh, jika para * dalam Gambar diganti oleh para +, maka akan diperoleh dua parse tree yang berbeda untuk string E + E + E. Walaupun dalam penjumlahan dan perkalian berlaku hukum asosiatif, untuk menghilangkan ambiguitas ditetapkan pengelompokkan dari kiri.

Menghilangkan Ambiguitas dari Grammar (3) Untuk menghilangkan ambiguitas, diperkenalkan variabel-variabel berikut: Faktor: sebuah ekspresi yang tidak dapat dipecah dari operator yang berdekatan, a * atau a +. Faktor-faktor berupa: Identifier Ekspresi yang diberi tanda kurung. Term: sebuah ekspresi yang tidak dapat dipisahkan dari operator +. Dalam Contoh 1, term adalah product dari satu atau lebih faktor. Ekspresi. Dalam Contoh 1, ekspresi adalah penjumlahan satu atau lebih term.

Contoh 11 Berikut grammar yang tidak ambigu yang me-generate bahasa yang sama dengan bahasa yang di-generate oleh grammar dalam Contoh 10: I  a | b | Ia | Ib | I0 | I1 F  I | (E) T  F | T * F E  T | E + T Dalam grammar tersebut, F, T dan E berturut-turut menyatakan faktor, term, dan ekspresi.

Contoh 11 (lanjutan) Grammar tsb memungkinkan hanya satu parse tree untuk string a + a * a, yaitu

Leftmost Derivation dan Ambiguitas Penurunan dapat tidak unik walaupun grammar tidak ambigu. Dalam sebuah grammar yang tidak ambigu, leftmost derivation dan rightmost derivation akan unik.

Contoh 12 Perhatikan parse tree dalam Gambar a dan b pada Contoh 10, yang menghasilkan E + E * E. Leftmost derivation dari kedua parse tree tersebut: E (lm) E + E (lm) I + E (lm) a + E (lm) a + E * E (lm) a + I * E (lm) a + a * E (lm) a + a * I (lm) a + a * a E (lm) E * E (lm) E + E * E (lm) I + E * E (lm) a + E * E (lm) a + I * E (lm) a + a * E (lm) a + a * I (lm) a + a *a

Teorema Untuk setiap grammar G = (V, T, P, S) dan string w dalam T*, w memiliki dua parse tree yang berbeda jika dan hanya jika w memiliki dua leftmost derivation yang berbeda dari S. Bukti dapat dilihat pada buku rujukan.

Inherent Ambiguity Sebuah CFL L dikatakan inherently ambiguous jika semua grammar-grammarnya adalah ambigu. Jika satu grammar untuk L adalah tidak ambigu, maka L adalah sebuah bahasa yang tidak ambigu. Bahasa dari ekspresi-ekspresi yang di-generate oleh grammar dalam Contoh 1 adalah bahasa tidak ambigu. Walaupun grammarnya ambigu, terdapat grammar yang lain untuk bahasa yang sama yang tidak ambigu, yaitu grammar dalam Contoh 11.

Contoh 13 Perhatikan bahasa berikut: L = {anbncmdm | n  1, m  1}  {anbmcmdn | n  1, m  1} Bahasa L berisi string-string dalam a+b+c+d+ sedemikian sehingga: Terdapat sama banyak para a dan para b dan sama banyak para c dan para d, atau Terdapat sama banyak para a dan para d dan sama banyak para b dan para c.

Contoh 13 (lanjutan) L adalah sebuah CFL. Grammar untuk L adalah: S  AB | C A  aAb | ab B  cBd | cd C  aCd | aDd D  bDc | bc Grammar di atas adalah grammar yang ambigu.

Contoh 13 (lanjutan) String aabbccdd memiliki dua leftmost derivation, yaitu: S (lm) AB (lm) aAbB (lm) aabbB (lm) aabbcBd (lm) aabbccdd S (lm) C (lm) aCd (lm) aaDdd (lm) aabDcdd (lm) aabbccdd

Contoh 13 (lanjutan) Parse tree untuk aabbccdd

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