Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Chapter 6 Shift dan Reduksi
2
Chapter 6: Shift dan Reduksi
Kelebihan pemakaian stack pada penguraian shift-reduksi: HANDEL selalu muncul pada puncak stack, tak pernah di tengah. Mengapa? Perhatikan dua bentuk yang mungkin dari dua langkah derivasi right most:
3
Chapter 6: Shift dan Reduksi
Kasus (1) Misalkan parser berada pada konfigurasi: Status input $αβγ yz$ γ direduksi menjadi B untuk mencapai : $αβB yz$
4
Chapter 6: Shift dan Reduksi
Karena B non terminal paling kanan pada αβΒyz, maka sisi kanan handel dari αβΒyz tidak akan berada di tengah stack. Kemudian y dipindahkan (shift) ke stack : stack input $αβBy z$ dimana βBy adalah handel dan dapat direduksi menjadi A.
5
Chapter 6: Shift dan Reduksi
Kasus 2: Misalkan parser berada dalam konfigurasi : stack input $αγ xyz$ disini γ merupakan handel dan berada di puncak stack. Setelah γ direduksi menjadi B dan xy dipindahkan ke stack: $αBxy z$ disini y berada di puncak stack dan merupakan handel yang akan direduksi menjadi A.
6
Chapter 6: Shift dan Reduksi
Contoh : Konflik dalam penguraian shift reduksi : 1. Konflik shift/reduksi, tidak dapat menentukan apakah harus melakukan shift atau reduksi. 2. Konflik antara reduksi, ada beberapa reduksi, tetapi tidak tahu mana yang harus dipilih.
7
Chapter 6: Shift dan Reduksi
Terjadi pada grammar yang bukan LR(k) (ambiguous LR(k)) Contoh : stmt → IF expr THEN stmt | if expr THEN stmt ELSE stmt other Misalkan parsernya berada pada konfigurasi: stack input IF expr THEN stmt ELSE … $ dalam hal ini tidak diketahui, apakah dilakukan shift atau reduksi.
8
Chapter 6: Shift dan Reduksi
Masalah lain (konflik antara reduksi / produksi mana yang akan dipakai): Contoh: (1) stmt → ID(parameter_list) (2) stmt → expr := expr (3) parameter_list → parameter_list, parameter (4) parameter_list → parameter (5) parameter → ID (6) expr → ID(expr_list) expr → ID (8) expr_list → expr_list, expr (9) expr_list → expr
9
Chapter 6: Shift dan Reduksi
Statement A(i; j) dalam penguraian akan muncul sebagai barisan token id(id; id). Salah satu situasi terjadi setelah 3 token dipindahkan ke stack stack input …id(id ,id)… id berada dipuncak (handel), harus direduksi dengan produksi yang mana? Yang benar adalah pilih (5) jika A suatu prosedur, dan (7) jika A array.
10
Chapter 6: Shift dan Reduksi
Bagaimana caranya? Ubah id pada (1) menjadi procid, dan lihat informasi tambahan pada tabel simbol untuk menentukan apakah suatu id adalah prosedur/array. Dengan cara ini, jika A(i; j) adalah prosedur maka stack input ...procid(id ,id... jika array ... id(id ,id)...
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.