Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

1 Chapter 8 Tabel Penguraian LR Kanonik & LALR. 2 Definisi item diperluas sehingga mempunyai dua komponen. Jadi, item mempunyai bentuk [A  . , a],

Presentasi serupa


Presentasi berjudul: "1 Chapter 8 Tabel Penguraian LR Kanonik & LALR. 2 Definisi item diperluas sehingga mempunyai dua komponen. Jadi, item mempunyai bentuk [A  . , a],"— Transcript presentasi:

1 1 Chapter 8 Tabel Penguraian LR Kanonik & LALR

2 2 Definisi item diperluas sehingga mempunyai dua komponen. Jadi, item mempunyai bentuk [A  . , a], dimana: A   suatu produksi a adalah terminal atau $ item ini disebut item LR(1). Angka 1 menyatakan panjang komponen ke dua, disebut lookahead suatu item. Item [A  . , a] dikatakan valid untuk prefik viabel  jika ada derivasi S  A   dimana: 1.  =  2.a adalah simbol pertama dari , atau  adalah  dan a adalah $.

3 3 Contoh : S  BB B  aB | b karena ada derivasi S aaBab  aaaBab maka item [B  a.B, a] adalah valid untuk prefik viabel  = aaa, dimana  = aa, A = B,  = ab,  = a, dan  = B.

4 4 Algoritma Pembentukan himpunan-himpunan item LR(1) Input :grammar G’ Output : himpunan-himpunan LR(1), dimana anggotanya valid untuk satu atau lebih prefik viabel dari G’. Metoda :gunakan prosedur items(G’) berikut.

5 5 function closure(I) begin repeat for masing-masing item [A  . B , a] di dalam I, masing-masing produksi B   di dalam G’, dan masing-masing terminal b di dalam FIRST(  a) sedemikian rupa sehingga [B . , b] tidak di dalam I do tambahkan [B . , b] ke I until tidak ada item yang dapat ditambahkan ke I. return end;

6 6 function goto(I,X); begin misalkan J himpunan item [A   X. , a] sedemikian rupa sehingga [A  . X , a] di I return closure(J). end

7 7 procedure items(G’); begin C := {closure ({s’ .s})}; repeat for masing-masing himpunan item I di C dan masing-masing simbol grammar X sedemikian rupa sehingga goto(I,X) tidak kosong dan tidak di C do tambahkan goto(I,X) ke C until tidak ada himpunan item, yang dapat ditambahkan ke C end

8 8 mulai dengan closure {[S’ .S, $]}, dengan menyamakan [S’ .S, $] dengan [A  . B , a] (pada prosedur closure), kita peroleh A = S’,  = , B = S,  = , dan a = $. Tambahkan [B . , b] ke closure untuk masing- masing produksi B   dan terminal b anggota FIRST(  a). Dalam hal ini B   adalah S  CC, karena  = , dan a = $ maka FIRST(  a) = FIRST($), dan b = $. Jadi, [S .CC, $] anggota closure. [C . , b], b di FIRST(C$) FIRST(C$) = FIRST(C) = {c,d} Jadi, [C .cC, c], [C .cC, d], [C .d, c], [C .d, d] anggota closure Contoh: S’  S S  CC C  cC | d

9 9 I 0 : S’ .S, $ S .CC, $ C .cC, c/d C .d, c/d I 1 : goto(I 0, X), untuk X = S S’  S., $ I 2 : goto(I 0, X), untuk X = C closure {[S  C.C, $]}, FIRST($)={$} C . cC, $ C . d, $

10 10 I 3 : goto(I 0, X), untuk X = c closure {[C  c.C, c/d]}, FIRST(c)={c}, FIRST(d)={d} C  c.C, c/d C .cC, c/d C .d, c/d I 4 : goto(I 0, X), untuk X = d closure {[C  d., c/d]} C  d., c/d I 5 : goto(I 2, C) S  CC., $

11 11 I 6 :goto(I 2, c) C  c.C, $ C .cC, $ C .d, $ I 7 : goto(I 2, d) C  d.,$ I 8 : goto(I 3, C) C  cC., cd goto(I 3, c) = I 3 goto(I 3, d) = I 4 I 9 : goto(I 6, C) C  cC., $

12 12 Algoritma Pembentukan tabel penguraian LR kanonik Input : G’ Output : fungsi action dan goto dari tabel penguraian LR kanonik

13 13 1.Buat C = {I 0, I 1,..., I n }, koleksi dari himpunan LR(1) 2.Perhatikan state I i, aksi untuk state i ditentukan sbb: a)Jika [A  .a , b] di dalam I i dan goto [I i, a] = I j. Jadi action [i,a] = shift j dimana a adalah terminal. b)Jika [A  ., a] di I i, A  S’. Jadi, action [i,a] = reduksi oleh A  . c)Jika [S’  S., $] di I i, maka [i, $] = accept. Jika ada konflik  gagal. 3.goto untuk state i ditentukan sbb: Jika goto [I i, A] = I j, maka goto [i,A] = j, dimana A non Terminal 4.entri yang tak terdefinisi adalah error. 5.state awal adalah state yang dibuat dari himpunan yang mengandung [S’ .S, $]

14 14 Contoh: S’  S S  CC C  cC | d maka tabel penguraian LR kanoniknya adalah sebagai berikut: STATEactiongoto cd$SC 0s3s412 1acc 2s6s75 3s3s48 4r3 5r1 6s6s79 7r3 8r2 9

15 15 Diagram transisi

16 16 Algoritma Pembentukan tabel penguraian LALR Input:G’ Output: action dan goto dari G’

17 17 Metoda: 1.Bentuk C = {I 0, I 1,..., I n }, koleksi himpunan item LR(1). 2.Untuk masing-masing core (himpunan komponen pertama dari suatu item) pada himpunan item LR(1), cari semua himpunan yang mempunyai core tersebut, dan ganti dengan unionnya. 3.Misalkan C’ = {J 0, J 1,..., J n } adalah hasil proses (2), action pada state i dibentuk dari J i dengan memakai algoritma yang lalu. Jika ada konflik, proses gagal. 4.Tabel goto dibuat sbb: Jika J adalah union dari satu atau lebih himpunan item LR(1) (J = I 1  I 2, ...,  I m ), maka core dari goto (I 1,X), goto (I 2, X),..., goto (I k, X) adalah sama sebab I 1, I 2,..., I k punya core yang sama. Misalkan K adalah union dari semua himpunan item LR(1) yang corenya sama dengan core dari goto (I 1, X), maka goto (J,X) = K.

18 18 Contoh: grammar yang lalu dengan himpunan item LR(1)nya. Perhatikan item LR(1) [A  . , a]. Himpunan item LR(1) yang komponen pertamanya sama. Contoh: I 4 C  d., c/d I 7 C  d., $ I 47 = I 4  I 7 = {C  d., c/d/$} I 36 = I 3  I 6 C  c.C, c/d/$ C .cC, c/d/$ C .d, c/d/$ I 89 = I 8  I 9 C  cC., c/d/$

19 19 Pada gambar (*) goto(I 3, C) = I 8, sedang I 8 merupakan bagian dari I 89 Jadi, goto(I 3, C) = I 89 goto(I 6, C) = I 9 goto(I 6, C) = I 89 goto(I 2, C) = I 36 STATEactiongoto cD$SC 0s36s4712 1acc 2s36s475 36s36s r3 5r1 89r2


Download ppt "1 Chapter 8 Tabel Penguraian LR Kanonik & LALR. 2 Definisi item diperluas sehingga mempunyai dua komponen. Jadi, item mempunyai bentuk [A  . , a],"

Presentasi serupa


Iklan oleh Google