1 / 19

Chapter 10

Chapter 10. Produksi dan Aturan Semantik. Dinotasikan oleh: Definisi Berdasarkan sintak Skema Translasi Notasi ini dipakai untuk: Pemeriksaan semantik, seperti tipe Pembentukan kode intermediate Dengan mengevaluasi aturan semantik: Pembentukan kode

dillian
Download Presentation

Chapter 10

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 10 Produksi dan Aturan Semantik Produksi dan Aturan Semantik

  2. Dinotasikan oleh: • Definisi Berdasarkan sintak • Skema Translasi Notasi ini dipakai untuk: • Pemeriksaan semantik, seperti tipe • Pembentukan kode intermediate Dengan mengevaluasi aturan semantik: • Pembentukan kode • Menyimpan informasi pada tabel simbol • Menampilkan pesan error • dsb. Produksi dan Aturan Semantik

  3. Definisi Berdasarkan Sintak (DBS) : Bentuk umum dari tata-bahasa bebas kontek dimana masing-masing simbol tata-bahasa mempunyai himpunan atribut (dipartisi menjadi himpunan atribut tersintesa dan atribut terwaris/terinheritasi). Atribut dapat merepresentasikan: string, bilangan, tipe, lokasi memori, dsb. Atribut tersintesa (bottom-up): Atribut yang nilainya dihitung dari nilai atribut anak (children) node-nya. Atribut terwaris (top-down) : Atribut yang nilainya dihitung dari nilai atribut parent atau saudara sekandung (sibling) nodenya. Produksi dan Aturan Semantik

  4. Bentuk Definisi Berdasarkan Sintak: Setiap produksi A→α mempunyai aturan semantik dalam bentuk : b := f (e1, e2, ... , ek) dimana f adalah fungsi dan salah satu dari 2 hal berikut: • b adalah atribut tersintesa dari A, dan e1, e2, ... , ek adalah atribut kepunyaan simbol tata-bahasa pada sisi kanan produksi. • b adalah atribut terwaris dari satu simbol tata-bahasa pada sisi kanan produksi, dan e1, e2, ... , ek adalah atribut kepunyaan A atau kepunyaan simbol-simbol tata-bahasa pada sisi kanan produksi. Pada dua kasus di atas, b dikatakan “tergantung” pada atribut e1, e2, ... , ek Produksi dan Aturan Semantik

  5. Produksi Aturan Semantik L → En E → E1+T E → T T → T1 * F T → F F → (E) F → digit print(E.val) E.val := E1.val + T.val E.val := T.val T.val := T1.val * F.val T.val := F.val F.val := E.val F.val := digit.lexval Contoh DBS DBS ini disebut juga dengan Definisi beratribut-S karena banyak memakai atribut tersintesa Produksi dan Aturan Semantik

  6. Produksi dan Aturan Semantik

  7. Produksi Aturan Semantik D → TL T → int T → real L → L1 , id L→ id L.in := T.type T.type := integer T.type := real L.in := L1.in addtype(id_entry,L.in) addtype(id_entry,L.in) Contoh DBS yang memakai atribut terwaris : T punya atribut tersintesa type, yang nilainya ditentukan oleh keyword pada deklarasi. Aturan semantik L.in = T.type untuk D → TL, memberikan type pada atribut terwaris L.in. Produksi dan Aturan Semantik

  8. Pohon urai untuk real id1, id2, id3 Produksi dan Aturan Semantik

  9. Graph ketergantungan (berarah): Dipakai untuk melukiskan ketergantungan antara atribut-atribut. Jika suatu atribut b tergantung pada atribut e, maka aturan semantik untuk b tidak bisa dilakukan sebelum aksi semantik untuk e selesai dilakukan. Pembentukannya: • tulis masing-masing aturan semantik dalam bentuk b := f (e1, e2, ... , ek) • buatkan atribut dummy b untuk aturan semantik yang mempunyai pemanggilan prosedur • jika atribut b tergantung pada atribut e maka buat suatu sisi dari e ke b. Produksi dan Aturan Semantik

  10. Secara umum Untuk masing-masing node n pada pohon urai do Untuk masing-masing atribut a dari simbol tata-bahasa pada n do Buat suatu node untuk a end do End do Untuk masing-masing node n pada pohon urai do Untuk masing-masing aturan semantik b := f (e1, e2, ... , ek) pada produksi yang dipakai di n do Untuk i=1 sampai k do buat sisi dari node ek sampai ke node milik b. end do end do End do Produksi dan Aturan Semantik

  11. Produksi dan Aturan Semantik

  12. Node dummy 6,8,10 adalah untuk pemanggilan addtype(id.entry, L.in) Produksi dan Aturan Semantik

  13. Untuk menentukan aturan semantik yang mana yang harus dilakukan terlebih dahulu digunakan pengurutan topologi dari DAGnya. Pengurutan topologi: adalah pengurutan m1,m2,…, mk dari node-node dalam graf sedemikian rupa sehingga jika mi→mj adalah suatu sisi dari mi ke mjmaka mi muncul sebelum mj. Contoh: DAG di atas dengan node-nodenya, memiliki urutan topologi sebagai berikut : a4 = real a5 = a4 addtype(id3.entry, a5) a7 = a5 addtype(id2.entry, a7) a9 = a7 addtype(id1.entry, a9) Produksi dan Aturan Semantik

  14. Metode-metode untuk mengevaluasi aturan semantik: • Metode Pohon Urai : Urutan evaluasi berdasarkan urutan topologi DAGnya. DAG dibuat berdasarkan pohon urainya. • Metode berdasarkan aturan (rule-based) : Aturan semantik dianalisa pada saat pembuatan compiler. Untuk masing-masing produksi. urutan pengevaluasian atribut sudah ditentukan dalam pembentukan compiler (yang dipakai di kelas). • Metode Oblivious: Urutan evaluasi ditetapkan tanpa memperhatikan aturan semantiknya. Metode 2 dan 3 tidak memerlukan pohon urai dan DAG → lebih efisien. Produksi dan Aturan Semantik

  15. Pembentukan Pohon Sintak dengan DBS (untuk ekspresi) Node dapat diimplementasikan sebagai record dengan beberapa field. Fungsi-fungsi yang dipakai (menghasilkan pointer ke node) : • mknode(op, left, right) : membentuk node operator dengan label op, dan dua field memuat pointer ke left dan right. • mkleaf(id, entry) : membentuk node identifier dengan label id dan field yang memuat entry, suatu pointer menunjuk ke tabel simbol. • mkleaf(num, val) : membentuk node untuk bilangan dengan label num dan field yang memuat val (= nilai dari bilangan itu) . Produksi dan Aturan Semantik

  16. Produksi Aturan Semantik E → E1 + T E → E1 - T E → T T → (T) T → id T → num E.nptr := mknode(‘+’, E1.nptr,T.nptr) E.nptr := mknode(‘-’, E1.nptr,T.nptr) E.nptr := T.nptr T.nptr := E.nptrT.nptr :=mkleaf(id,id.entry) T.nptr :=mkleaf(num,num.val) contoh(*) Produksi dan Aturan Semantik

  17. Produksi dan Aturan Semantik

  18. DAG untuk ekspresi • Untuk mendeteksi sub ekspresi yang sama dalam suatu ekspresi. • node untuk sub ekspresi yang sama mempunyai lebih dari satu parent. Contoh: a + a * (b – c) + (b- c)*d Daun a mempunyai dua parent karena ada a dan a*(b-c). Subekspresi b - c juga mempunyai dua parent. Produksi dan Aturan Semantik

  19. Pembuatannya hampir sama dengan contoh (*), hanya pada saat akan membuat node harus diperiksa dulu apakah sudah ada, jika ada maka tidak perlu dibuat node yang baru. P1 := mkleaf(id,a) P2 := mkleaf(id,a) P3 := mkleaf(id,b) P4 := mkleaf(id,c) P5 := mknode(‘-’,P3,P4) P6 := mknode(‘*’,P2,P5) P7 := mknode(‘+’,P1,P6) P8 := mkleaf(id,b) P9 := mkleaf(id,c) P10 := mknode(‘-’,P8,P9) P11 := mkleaf(id,d) P12 := mknode(‘*’,P10,P11) P13 := mknode(‘+’,P7,P12) Produksi dan Aturan Semantik

More Related