Chapter 8 Tabel Penguraian LR Kanonik & LALR.

Slides:



Advertisements
Presentasi serupa
Teori Bahasa dan Automata
Advertisements

Teori Bahasa dan Automata
Pertemuan 4 Finite Automata
11. BENTUK NORMAL CHOMSKY.
Yenni Astuti Version Week-6NFA ke DFA Mengapa NFA ke DFA? NFA lebih mudah dimengerti dan didesain, dibanding DFA. Namun dalam prakteknya, DFA lebih.
Chapter 6 Shift dan Reduksi.
Penguraian Bawah-Atas (Bottom-up Parsing)
Chapter 7 Penguraian LR.
SUATU FINITE STATE AUTOMATA
Session 12 Pushdown Automata
Himpunan: suatu kumpulan dari obyek-obyek.
Ekivalensi -move pada Non Deterministik FSO ke Deterministik FSO
Pohon Urai (parse) dan Derivasi
14. PUSH DOWN AUTOMATA.
Teori Bahasa & OTOMATA.
Function(2).
Komponen sebuah Kompilator
Pertemuan 3 BAHASA REGULAR
BAB V EKSPRESI REGULER 1. Penerapan Ekspresi Reguler
7. ATURAN PRODUKSI.
Pertemuan 12 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
By Tenia Wahyuningrum, MT
Algoritma dan Struktur Data
BAB II SANDI BINER 2.1 Sandi 8421
Ekspresi Reguler.
BAB III EKIVALENSI DFA KE NFA
NON DETERMINISTIC FINITE AUTOMATA DENGAN ε - MOVE
14. PUSH-DOWN AUTOMATA.
Kuliah 22 Optimisasi Kode.
Pertemuan Pengembangan Algoritma
Pengurai Prediktif & Bottom Up Parsing (penguraian bawah atas)
STRUKTUR PERULANGAN BAG 2 ( STRUKTUR WHILE DO & REPEAT UNTIL )
4. NFA DENGAN -MOVE.
Algoritma Konsep Dasar Bahasa PASCAL
BENTUK NORMAL CHOMSKY Teori Bahasa dan Otomata CHAPTER 6
Non Deterministic Finite Automata dengan є – Move
Teori Bahasa dan Automata
ALGORITMA PEMROGRAMAN 2A
Dasar-Dasar Pemrograman
Algoritma.
OTOMATA DAN TEORI BAHASA 1
TEORI BAHASA DAN OTOMATA
Pemilihan / Pencabangan
ATURAN PRODUKSI TATA BAHASA REGULER
OTOMATA DAN TEORI BAHASA 2
Pertemuan 6 KONVERSI NFA MENJADI DFA Lanjutan..
PEMROGRAMAN PASCAL ELEMEN PEMROGRAMAN PASCAL.
Finite State Automata ♦ model matematika yang dapat menerima input dan mengeluarkan output ♦ Memiliki state yang berhingga banyaknya dan dapat berpindah.
Pengantar Teknik Kompilasi
Analisis leksikal ( SCANNER )
Pengulangan.
MATERI PERKULIAHAN TEKNIK KOMPILASI
NFA dengan ε-move.
Pertemuan 10 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
STRUKTUR PERULANGAN.
Pengulangan.
MATERI PERKULIAHAN TEKNIK KOMPILASI
Konsep dan Notasi Bahasa
Teori Bahasa dan Automata
Oleh: Abdul Haris Heryani
Matematika Diskrit TIF (4 sks) 3/9/ /5/2010.
Pertemuan4.
Dasar-Dasar Pemrograman
Pengulangan. Pengulangan (Looping) 1. Pengulangan for 2. Pengulangan while 3. Pengulangan repeat … until.
Chapter 5-2 : Perulangan (Repeatition)
Pengulangan Repeat – Until (lanjutan)
Automata Hingga Deterministik (AHD)
1 Algoritma dan Pemrograman STRUKTUR PERULANGAN. 2 JENIS-JENIS PERULANGAN 1.FOR-TO-DO / FOR-DOWNTO-DO 2.WHILE-DO 3.REPEAT-UNTIL.
Chapter 5 : Perulangan (Repeatition)
Otomata & Teori Bahasa Finite State Automata: - Non Deterministic Finite Automata dengan -move - Penggabungan dan Konkatenasi FSA.
Transcript presentasi:

Chapter 8 Tabel Penguraian LR Kanonik & LALR

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 $.

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.

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.

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;

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

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

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

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, $

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., $

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., $

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

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, $]

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:

Diagram transisi

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

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.

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/$

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