Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Chapter 8 Tabel Penguraian LR Kanonik & LALR.

Presentasi serupa


Presentasi berjudul: "Chapter 8 Tabel Penguraian LR Kanonik & LALR."— Transcript presentasi:

1 Chapter 8 Tabel Penguraian LR Kanonik & LALR

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:  =  a adalah simbol pertama dari , atau  adalah  dan a adalah $.

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 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 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 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 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 Contoh: S’  S S  CC C  cC | d 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

9 I0: S’  .S, $ S  .CC, $ C  .cC, c/d C  .d, c/d I1: goto(I0, X), untuk X = S S’  S., $ I2: goto(I0, X), untuk X = C closure {[S  C.C, $]}, FIRST($)={$} C  . cC, $ C  . d, $

10 I3: goto(I0, 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 I4: goto(I0, X), untuk X = d closure {[C  d., c/d]} C  d., c/d I5: goto(I2, C) S  CC., $

11 I6: goto(I2, c) C  c.C, $ C  .cC, $ C  .d, $ I7: goto(I2, d) C  d.,$ I8: goto(I3, C) C  cC., cd goto(I3, c) = I3 goto(I3, d) = I4 I9: goto(I6, C) C  cC., $

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

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

14 maka tabel penguraian LR kanoniknya adalah sebagai berikut:
STATE action goto c d $ S C s3 s4 1 2 acc s6 s7 5 3 8 4 r3 r1 6 9 7 r2 Contoh: S’  S S  CC C  cC | d maka tabel penguraian LR kanoniknya adalah sebagai berikut:

15 Diagram transisi

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

17 Metoda: Bentuk C = {I0, I1, ..., In}, koleksi himpunan item LR(1). 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. Misalkan C’ = {J0, J1, ..., Jn} adalah hasil proses (2), action pada state i dibentuk dari Ji dengan memakai algoritma yang lalu. Jika ada konflik, proses gagal. Tabel goto dibuat sbb: Jika J adalah union dari satu atau lebih himpunan item LR(1) (J = I1  I2, ...,  Im), maka core dari goto (I1,X), goto (I2, X), ..., goto (Ik, X) adalah sama sebab I1, I2, ..., Ik punya core yang sama. Misalkan K adalah union dari semua himpunan item LR(1) yang corenya sama dengan core dari goto (I1, X), maka goto (J,X) = K.

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: I4 C  d., c/d I7 C  d., $ I47 = I4  I7 = {C  d., c/d/$} I36 = I3  I6 C  c.C, c/d/$ C  .cC, c/d/$ C  .d, c/d/$ I89 = I8  I9 C  cC., c/d/$

19 goto(I3, C) = I8, sedang I8 merupakan bagian dari I89
Pada gambar (*) goto(I3, C) = I8, sedang I8 merupakan bagian dari I89 Jadi, goto(I3, C) = I89 goto(I6, C) = I9 goto(I6, C) = I89 goto(I2, C) = I36 STATE action goto c D $ S C s36 s47 1 2 acc 5 36 89 47 r3 r1 r2


Download ppt "Chapter 8 Tabel Penguraian LR Kanonik & LALR."

Presentasi serupa


Iklan oleh Google