Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

1 Chapter 4 Pohon Urai (parse) dan Derivasi. 2 Pohon urai dapat dianggap sebagai representasi grafik untuk suatu derivasi yang menyaring pilihan urutan.

Presentasi serupa


Presentasi berjudul: "1 Chapter 4 Pohon Urai (parse) dan Derivasi. 2 Pohon urai dapat dianggap sebagai representasi grafik untuk suatu derivasi yang menyaring pilihan urutan."— Transcript presentasi:

1 1 Chapter 4 Pohon Urai (parse) dan Derivasi

2 2 Pohon urai dapat dianggap sebagai representasi grafik untuk suatu derivasi yang menyaring pilihan urutan penggantian non terminal.

3 3 Hubungan derivasi dan pohon urai,dimana adalah non terminal A. Untuk masing­masing, buat pohon urai dengan hasil (induksi pada i). Untuk i = 1, = A merupakan node tunggal A. Misal sudah terbentuk pohon urai yang hasilnya ( adalah terminal atau nonterminal). Misalkan diderivasi dari dengan mengganti (nonterminal) dengan

4 4 Hubungan derivasi dan pohon urai Jadi, pada langkah ke i: dengan memakai Jadi: Jika r=0 maka label untuk anak dari adalah Contoh, derivasi:

5 5 Hubungan derivasi dan pohon urai Tata­bahasa mempunyai dua derivasi leftmost yang berbeda untuk input

6 6 Hubungan derivasi dan pohon urai Jadi, mempunyai 2 pohon urai Jadi, grammarnya ambiguous

7 7 Menghilangkan Ambiguity Contoh: stmt →IF expr THEN stmt | IF expr THEN stmt ELSE stmt | OTHER OTHER = statement lainnya Tata­bahasa tersebut ambiguous karena string berikut: IF E 1 THEN IF E 2 THEN S 1 ELSE S 2 mempunyai dua pohon urai

8 8 Menghilangkan Ambiguity IF E 1 THEN IF E 2 THEN S 1 ELSE S 2

9 9 Menghilangkan Ambiguity Supaya tidak ambiguous: –Pasangkan masing­masing ELSE dengan THEN yang terdekat dan belum terpasang oleh ELSE lainnya. –stmt bisa stmt terpasang atau tidak.

10 10 Menghilangkan Ambiguity stmt → stmt_terpasang | stmt_tak_terpasang stmt terpasang → IF expr THEN stmt_terpasang ELSE stmt terpasang | other stmt_tak_terpasang → if expr THEN stmt | IF expr THEN stmt_terpasang ELSE stmt_tak_terpasang

11 11 Penghilangan Ambiguity 1.Dengan Penghapusan rekursi kiri 2.Dengan Faktorisasi kiri Tata­bahasa dikatakan rekursi kiri jika nonterminal A dapat menghasilkan Aα. Contoh: E → E+T | T T → T * F | F F → (E) | id

12 12 Penghilangan Ambiguity Hilangkan rekursi kiri immediate (produksi dalam bentuk A → Aα) pada E dan T, maka diperoleh:

13 13 Penghilangan Ambiguity Secara umum: Berapapun banyaknya A­produksi, kelompokkan A­ produksi seperti: dimana tidak dimulai dengan A. Lalu ganti A­produksi dengan: Penghilangan rekursi kiri imediat belum tentu menghilangkan rekursi kiri. Contoh: S → Aa | b A → Ac | Sd | є S adalah rekursi kiri karena

14 14 Algoritma penghilangan rekursi kiri Input: Gramar G yang tidak mengandung cycle dan ε ­produksi Output: Tata­bahasa yang ekivalen tidak mengandung rekursi kiri Metoda: Pakai algoritma berikut: 1. Susun non terminal dengan urutan A 1, A 2, …, A n 2. for i:=1 to n do for j:=1 to i­1 do begin ubah setiap produksi dalam bentuk A i → A j γ dengan produksi, dimana A i → δ 1 | … | δ k merupakan A j ­produksi terbaru. Lalu, hilangkan rekursif kiri imediat diantara A j ­produksi end

15 15 Algoritma penghilangan rekursi kiri Contoh: S → Aa | b A → Ac | Sd | ε S mengandung ε, tetapi tidak menimbulkan masalah. Urutkan nonterminal S, A. S tidak ada rekursi kiri imediat → untuk i=1 tak ada proses Untuk i=2, gunakan S­produksi pada A → Sd untuk memperoleh : A → Ac | Aad | bd | ε Hilangkan rekursi kiri imediate pada A­produksi. Jadi: S → Aa | b A → bdA’ | A’ A' → cA’ | adA’ | ε

16 16 Faktorisasi kiri : Suatu transformasi grammar yang berguna untuk menghasilkan suatu grammar yang cocok untuk penguraian prediktif. Ide: Pada saat tidak jelas mana diantara dua produksi yang akan dipakai untuk menggantikan suatu non­terminal A, A­produksi dapat ditulis kembali untuk menunda pemilihan sampai diperoleh input yang cukup. Secara umum, jika A → αβ 1 | αλβ 2 pilihan segera tidak dapat ditentukan, maka: A → α A’ A’ → β 1 | λβ 2 Caranya?

17 17 Algoritma Faktorisasi Kiri Input: Tata­bahasa G Output: Tata­bahasa yang sudah terfaktorisasi kiri dan ekivalen dengan G metoda: nonterminal A, cari awalan (prefik) yang terpanjang dan sama dengan awalan pada dua atau lebih pilihan untuk A. Jika γ bukan string kosong, maka ganti semua A produksi A → αβ 1 | αβ 2 |... | αβ n | γ (dimana γ mewakili semua pilihan yang tidak dimulai dengan α ) dengan: A → αA’ | γ A’ → β 1 | β 2 | … | β n A' merupakan non­terminal yang baru. Ulangi proses ini sampai tidak ada dua pilihan yang mempunyai awalan yang sama.

18 18 Algoritma Faktorisasi Kiri Contoh: S → iEtS | iEtSeS | a E → b Diubah menjadi: S → iEtSS' | a S' → eS | ε E → b

19 19 Bahasa dan Bebas Kontek (Language and Context Free) L 2 = { a n b m c n d m | n >= 1 dan m >= 1} menggambarkan persoalan pemeriksaan jumlah parameter dalam deklarasi dan jumlah argumen dalam pemanggilan prosedur. a n, b m merepresentasikan parameter list dua prosedur yang mempunyai n,m parameter. c n, d m merepresentasikan parameter list pemanggilan kedua prosedur itu. Dalam hal ini a dan c lalu b dan d harus sama banyaknya Tapi bahasa ini tidak Context Free (bebas kontek), krn tak bisa dibuatkan grammarnya.

20 20 Bahasa dan Bebas Kontek (Language and Context Free) Tetapi: L 1 ' = {wcw R | w ada di dalam (a|b)*}, dimana w R adalah kebalikan w adalah bebas kontek karena ada grammar : S → aSa | bSb | c L 2 ' = { a n b m c m d n | n >= 1 dan m >= 1} bebas kontek karena ada grammar: S → aSd | aAd A → bAc | bc

21 21 Kelas Parsing (Penguraian): Top Down & Bottom UP Top­down Parsing –Mencari derivasi paling kiri (leftmost) dari suatu string input. –Pembentukan pohon urai berdasarkan string input. Pengurai Prediktif (Predictive Parsing) (atas­ bawah on­backtracking) Contoh: backtracking S → cAd A → ab | a Input w = cad

22 22 Pengurai Prediktif Butuh satu input (token) untuk menentukan pilihan produksi 1. Berdasarkan diagram transisi -- Hilangkan rekursi kiri -- Faktorisasi kiri -- nonterminal A (a) Buat state awal dan akhir (b) produksi A → X 1 X 2 … X n, buat path dari state awal ke state akhir dengan sisi (edge) X 1 X 2 … X n Cara di atas berhasil kalau tidak ada non­determinisme (ada lebih dari satu transisi dari suatu state, dengan input sama).

23 23 Pengurai Prediktif Contoh: diagram transisi E → TE’ E’ → +TE’ | ε T → FT’ T’ → *FT’ | ε F → (E) | id

24 24 Pengurai Prediktif Simplified transition diagram:

25 25 Pengurai Prediktif Simplified transition diagram for arithmetic expression:

26 26 Pengurai Prediktif 2. Berdasarkan stack (prediktif yang non­rekursif) Persoalan pada setiap langkah: menentukan produksi mana yang akan dipakai untuk suatu nonterminal.

27 27 Pengurai Prediktif Tabel M adalah M[A,a], A adalah nonterminal, a adalah terminal atau simbol $ (akhir buffer). Program dikendalikan oleh 3 aksi, dengan memperhatikan simbol X pada puncak stack (a) Jika X = a = $, pengurai berhenti dan selesai (b) Jika X = a ≠ $, pengurai mempop X keluar dari stack dan memajukan pointer input ke simbol berikutnya (c) Jika X adalah nonterminal, akan dilihat entri M[X,a]. Entri akan berupa X­produksi grammar (Contoh M[X,a] = {X → uvw}, maka X akan diganti dengan wvu, dengan u di puncak stack), produksi X → uvw dicetak sebagai output).

28 28 Pengurai Prediktif Algoritma : Prediktif non­rekursif Input: w, dan tabel pengurai M untuk G Output: jika w L(G), output berupa derivasi left­most dari w, kalau tidak → error. Metoda: ip pada simbol pertama di w$ repeat Misalkan X merupakan puncak dari simbol stack dan a simbol yang ditunjuk oleh ip if X adalah terminal atau $ then if X = a then pop X, majukan ip else error

29 29 Pengurai Prediktif else /*X nonterminal*/ if M[X,a] = X → Y 1... Y k then begin pop X dari stack push Y k,..., Y 1, Y 1 di puncak tampilkan produksi X → Y 1... Y k end else error until X = $

30 30 Moves made by predictive parser on input id+id*id


Download ppt "1 Chapter 4 Pohon Urai (parse) dan Derivasi. 2 Pohon urai dapat dianggap sebagai representasi grafik untuk suatu derivasi yang menyaring pilihan urutan."

Presentasi serupa


Iklan oleh Google