Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

1 Chapter 7 Penguraian LR. 2 Pendahuluan Komponennya: 1.Input 2.Output 3.Program driver 4.Tabel penguraian (action, goto) Perbedaan dengan penguraian.

Presentasi serupa


Presentasi berjudul: "1 Chapter 7 Penguraian LR. 2 Pendahuluan Komponennya: 1.Input 2.Output 3.Program driver 4.Tabel penguraian (action, goto) Perbedaan dengan penguraian."— Transcript presentasi:

1 1 Chapter 7 Penguraian LR

2 2 Pendahuluan Komponennya: 1.Input 2.Output 3.Program driver 4.Tabel penguraian (action, goto) Perbedaan dengan penguraian bawah-atas (bottom-up) lainnya terletak pada tabel penguraian.

3 3 Pendahuluan (Cont’d) Konfigurasi pengurai LR adalah suatu pasangan yang komponen pertamanya adalah isi stack, komponen keduanya adalah string input: (s o X 1 s 1 X 2 …X m s m, a i a i+1 …a n $)

4 4 Langkah-langkah dalam proses LR Misalkan a i simbol input pertama, s m adalah simbol pada puncak stack. Salah satu berikut, merupakan langkah dalam proses penguraian LR. 1.action[s m, a i ] = shift s, a i dipindahkan ke stack, begitu juga (setelah a i ) s. Hal ini menghasilkan konfigurasi baru: s o X 1 s 1 X 2 s 2 …X m s m a i s, a i+1 …a n 2.action[s m, a i ] = reduksi A  β, maka parser melakukan reduksi dan menghasilkan konfigurasi s o X 1 s 1 …X m-r s m-r A s,a i a i+1 …a n

5 5 Langkah-langkah dalam proses LR (Cont’d) dimana s = goto[s m-r,A] dan r adalah panjang dari string β. Pada awalnya, 2r simbol dipop dari stack (r simbol state dan r simbol grammar). Kemudian A dipush ke stack, lalu s dipush ke stack. β = X m-r+1 … X m Action [s m,, a i ] = accept, proses selesai Action [s m, a i ] = error, terjadi kesalahan, rutin pengendali kesalahan bisa dipanggil.

6 6 Algoritma penguraian LR Input: string input w, tabel penguraian LR yang terdiri dari fungsi action dan goto (berdasarkan grammar G). Output: uraian bawah-atas (bottom-up parsing dari w jika w Є L(G), jika tidak  error. Metoda: pada awalnya, s o ada di puncak stack (s o = state awal) dan w$ merupakan input. Dalam proses parser akan mengeksekusi program berikut.

7 7 Algoritma penguraian LR (Cont’d) ip menunjuk pada simbol pertama w$ repeat forever begin misalkan S adalah state di puncak stack, dan a adalah simbol yang ditunjuk oleh ip if action[s,a] = shift s' then begin push a ke dalam stack, lalu s' ke dalam stack ip menunjuk pada simbol input berikutnya end else if action[s,a] = reduksi A  β then begin pop simbol sebanyak 2*|β| dari stack; misalkan s’ adalah state di puncak stack push A lalu goto[s’,A] ke dalam stack; tampilkan output berupa A  β end else if action[s,a] = accept then return else error() end

8 8 Contoh Algoritma penguraian LR Perhatikan grammar ekspresi aritmetik, dengan operator biner + dan *: 1.E  E+T 2.E  T 3.T  T*F 4.T  F 5.F  (E) 6.F  id

9 9 Tabel penguraiannya : stateactiongoto id+*()$ETF 0s5s4123 1s6acc 2r2s7r2 3r4 4s5 s r6 6s5s493 7s5s4 10 8s6s11 9r1s7r1 10r3 11r5 si = shift state i ke stack rj = reduksi dengan produksi nomo r j Acc = accept Blank = error

10 10 StackInputAksi 10id*id+id$Shift 5 20id5*id+id$reduksi oleh F  id 30F3*id+id$reduksi oleh T  F 40T2*id+id$Shift 7 50T2*7id+id$Shift 5 60T2*7id5+id$reduksi oleh F  Id 70T2*7F10+id$reduksi oleh T  T*F 80T2+id$reduksi oleh E  T 90E1+id$Shift 6 100E1+6id$Shift 5 110E1+6id5$reduksi oleh F  Id 120E1+6F3$reduksi oleh T  F 130E1+6T9$reduksi oleh E  E+T 140E1$accept

11 11 Pembuatan Tabel Penguraian LR 1.Metoda simple LR (SLR), paling mudah dan paling buruk 2.Metoda LR kanonik, paling baik dan paling mahal 3.Metoda Look-Ahead LR (LALR), kemampuan + cost diantara SLR dan LR kanonik

12 12 Untuk membuat tabel ini diperlukan beberapa definisi: 1.item LR(0) atau item saja. 2.closure(I), dimana I adalah himpunan item. 3.goto(I,X), dimana I adalah himpunan item dan X adalah simbol grammar. 4.koleksi kanonik dari item LR(0). Pembuatan Tabel Penguraian LR (Cont’d)

13 13 Pembuatan Tabel Penguraian LR (Cont’d) item LR(0) atau item dari suatu grammar G adalah suatu produksi dari G dengan suatu dot (.) muncul pada sisi kanan produksi itu. Contoh: produksi A  XYZ memberikan empat item: A .XYZ A  X.YZ A  XY.Z A  XYZ.

14 14 Pembuatan Tabel Penguraian LR (Cont’d) Closure(I), dimana I adalah himpunan item untuk G, adalah himpunan item yang dibuat dari I oleh aturan berikut: 1.Setiap item di dalam I, juga anggota closure(I). 2.Jika A  α.Bβ anggota closure(I) dan B  γ adalah suatu produksi, maka tambahkan B . γ ke dalam closure(I).

15 15 Pembuatan Tabel Penguraian LR (Cont’d) begin J := I; repeat for masing-masing item A  α.Bβ di dalam J, dan produksi B  γ dari G sedemikian rupa sehingga B . γ tidak di dalam J do tambahkan B . γ ke dalam J until tidak ada item yang dapat ditambahkan ke J. return J end

16 16 Pembuatan Tabel Penguraian LR (Cont’d) Contoh: Perhatikan grammar G' E'  E E  E+T | T T  T*F | F F  (E) | id

17 17 Pembuatan Tabel Penguraian LR (Cont’d) Jika I adalah himpunan satu item {[E‘.E]}, maka closure(I) memuat item: E' .E E .E+T E .T T .T*F T .F F .(E) F .id

18 18 Pembuatan Tabel Penguraian LR (Cont’d) goto(I,X) adalah closure dari himpunan semua item [A  αX.β ] sedemikisan rupa sehingga A  α.X β ada di dalam I. Contoh: jika I adalah himpunan dua item {[E'  E.], [E  E.+T]} maka goto (I,+) memuat: E  E+.T T .T*F T .F F .(E) F .id

19 19 Pembuatan Tabel Penguraian LR (Cont’d) Algoritma untuk membuat C (koleksi kanonik dari himpunan item LR(0) berdasarkan grammar G'). procedure items(G') begin C := {closure({[S' .S]}; repeat for masing-masing himpunan item I dalam C dan masing-masing simbol grammar X dimana goto(I,X) tidak kosong dan tidak di dalam C do tambahkan goto(I,X) ke dalam C until tidak ada himpunan item yang dapat ditambahkan ke C. end.

20 20 Pembuatan Tabel Penguraian LR (Cont’d) Contoh: untuk grammar E'  E E  E+T | T T  T*F | F F  (E) | id

21 21 Pembuatan Tabel Penguraian LR (Cont’d) koleksi kanoniknya adalah : I 0 : E' .E E .E+T E .T T .T*F T .F F .(E) F .id I 1 =goto(I 0,E): E'  E. E  E.+T I 2 = goto(I 0, T ) : E  T. T  T.*F

22 22 Pembuatan Tabel Penguraian LR (Cont’d) I 3 = goto(I 0, F ) : T  F. I 5 = goto(I 0, id ) : F  id. I 4 = goto(I 0, ( ) : F  (.E) E .E+T E .T T .T*F T .F F .(E) F .id

23 23 Pembuatan Tabel Penguraian LR (Cont’d) I 6 = goto(I 1, +) : E  E+.T T .T*F T .F F .(E) F .id I 7 = goto(I 2, * ) : T  T*.F F .(E) F  id I 8 = goto(I 4, E ) : F  (E.) E  E.+T

24 24 Pembuatan Tabel Penguraian LR (Cont’d) I 9 = goto(I 6, T ) : E  E+T. T  T.*F I 10 = goto(I 7, F ) : T  T*F. I 11 = goto(I 8, ) ) : F  (E).

25 25 Pembuatan Tabel Penguraian LR (Cont’d) Fungsi goto dari himpunan item yang lalu, digambarkan sebagai diagram transisi dari Deterministic Finite Automata (DFA). DFA ini mengenal prefik viabel dari grammarnya. Ada suatu transisi dari A  α.Xβ ke A  α X.β dengan label X, ada juga transisi A  α.Bβ ke B .γ dengan label Є.

26 26 Algoritma pembentukan tabel penguraian SLR Input: grammar G' Output: Fungsi action dan goto untuk tabel penguraian SLR. Metoda: 1.Buat C = {I 0, I 1, …, I n }, yang merupakan koleksi himpunan item LR(0) untuk G'. 2.Buat state i dari I i. Aksi penguraian untuk state i ditentukan sebagai berikut: a)Jika [A  α.a ] anggota I i, dan goto(I i, a) = I j, maka action[i,a] = shift j dimana a harus merupakan terminal.

27 27 Algoritma pembentukan tabel penguraian SLR (Cont’d) b)Jika [A  α.] anggota I i, maka action[i,a] = reduksi A , a anggota FOLLOW(A). A tidak harus = S'. c)Jika [S’  S.] anggota I i, maka action [i,$] = accept. d)Jika terjadi konflik, proses gagal, grammarnya bukan SLR(1). 3.Dengan melihat DFAnya, transisi pada state i dapat ditentukan untuk nonterminal A; Jika goto(I i, A) = I j, maka goto[i,A] = j. 4.Semua entri yang tidak terdenisi oleh (2) dan (3) adalah error. 5.State awal pengurai (parser) adalah state yang dibuat dari himpunan item yang memuat [s' .s]

28 28 Algoritma pembentukan tabel penguraian SLR (Cont’d) Contoh: perhatikan contoh yang lalu dimana C = {I 0, I 1, …, I 11 }. Pada I 0 himpunan itemnya sebagai berikut: E' .E E .E+T E .T T .T*F T .F F .(E) F .id

29 29 Algoritma pembentukan tabel penguraian SLR (Cont’d) item F .(E) mengakibatkan action [0,(] = shift 4, item F .id mengakibatkan action [0,id] = shift 5, item lainnya tak menghasilkan action. I 1 : E'  E. E  E.+T E'  E. mengakibatkan action [1, $] = accept, E  E.+T mengakibatkan action [1, +] = shift 6

30 30 Algoritma pembentukan tabel penguraian SLR (Cont’d) I 2 : E  T. T  T.*F karena FOLLOW(E) = {$, +, )} : E  T. mengakibatkan action [2, $] = action [2, +] = action [2, )] = reduksi oleh E  T. T  T.*F mengakibatkan action [2, *] = shift lalu... LANJUTKAN SENDIRI... !


Download ppt "1 Chapter 7 Penguraian LR. 2 Pendahuluan Komponennya: 1.Input 2.Output 3.Program driver 4.Tabel penguraian (action, goto) Perbedaan dengan penguraian."

Presentasi serupa


Iklan oleh Google