Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Produksi dan Aturan Semantik

Presentasi serupa


Presentasi berjudul: "Produksi dan Aturan Semantik"— Transcript presentasi:

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

2 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 Menyimpan informasi pada tabel simbol Menampilkan pesan error dsb. Produksi dan Aturan Semantik

3 Produksi dan Aturan Semantik
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 Produksi dan Aturan Semantik
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 dan Aturan Semantik
Contoh DBS DBS ini disebut juga dengan Definisi beratribut-S karena banyak memakai atribut tersintesa Produksi Aturan Semantik 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 L → En E → E1+T E → T T → T1 * F T → F F → (E) F → digit Belum ada gambarnya! Produksi dan Aturan Semantik

6 Produksi dan Aturan Semantik

7 Produksi dan Aturan Semantik
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 Aturan Semantik L.in := T.type T.type := integer T.type := real L.in := L1.in addtype(id_entry,L.in) addtype(id_entry,L.in) D → TL T → int T → real L → L1 , id L→ id Benar tidak produksi D → TL aturan semantiknya L.in := T.type? Pada aturan produksi L → L1 , id aturan semantiknya L.in := L1.in atau sebaliknya? Di file asli tertulis sebaliknya. Gambar belum ada Produksi dan Aturan Semantik

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

9 Produksi dan Aturan Semantik
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 Produksi dan Aturan Semantik
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 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. Produksi dan Aturan Semantik

11 Produksi dan Aturan Semantik
Belum ada gambarnya! Produksi dan Aturan Semantik

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

13 Produksi dan Aturan Semantik
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 mj maka 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 Produksi dan Aturan Semantik
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 Produksi dan Aturan Semantik
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 dan Aturan Semantik
contoh(*) Produksi Aturan Semantik E.nptr := mknode(‘+’, E1.nptr,T.nptr) E.nptr := mknode(‘-’, E1.nptr,T.nptr) E.nptr := T.nptr T.nptr := E.nptr T.nptr :=mkleaf(id,id.entry) T.nptr :=mkleaf(num,num.val) E → E1 + T E → E1 - T E → T T → (T) T → id T → num Produksi dan Aturan Semantik

17 Produksi dan Aturan Semantik
Belum ada gambarnya! Produksi dan Aturan Semantik

18 Produksi dan Aturan Semantik
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 Produksi dan Aturan Semantik
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


Download ppt "Produksi dan Aturan Semantik"

Presentasi serupa


Iklan oleh Google