Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Produksi dan Aturan Semantik1 Chapter 10 Produksi dan Aturan Semantik.

Presentasi serupa


Presentasi berjudul: "Produksi dan Aturan Semantik1 Chapter 10 Produksi dan Aturan Semantik."— Transcript presentasi:

1 Produksi dan Aturan Semantik1 Chapter 10 Produksi dan Aturan Semantik

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

3 Produksi dan Aturan Semantik3 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.

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

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

6 Produksi dan Aturan Semantik6

7 7 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. ProduksiAturan Semantik L.in := T.type T.type := integer T.type := real L.in := L 1.inaddtype(id_entry,L.in) D → TL T → int T → real L → L 1, id L→ id

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

9 Produksi dan Aturan Semantik9 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 (e 1, e 2,..., e k ) 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.

10 Produksi dan Aturan Semantik10 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 (e 1, e 2,..., e k ) pada produksi yang dipakai di n do Untuk i=1 sampai k do buat sisi dari node e k sampai ke node milik b. end do End do

11 Produksi dan Aturan Semantik11

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

13 Produksi dan Aturan Semantik13 Untuk menentukan aturan semantik yang mana yang harus dilakukan terlebih dahulu digunakan pengurutan topologi dari DAGnya. Pengurutan topologi: adalah pengurutan m 1,m 2,…, m k dari node-node dalam graf sedemikian rupa sehingga jika m i →m j adalah suatu sisi dari m i ke m j maka m i muncul sebelum m j. Contoh: DAG di atas dengan node-nodenya, memiliki urutan topologi sebagai berikut : a 4 = real a 5 = a 4 addtype(id 3.entry, a 5 ) a 7 = a 5 addtype(id 2.entry, a 7 ) a 9 = a 7 addtype(id 1.entry, a 9 )

14 Produksi dan Aturan Semantik14 Metode-metode untuk mengevaluasi aturan semantik: 1.Metode Pohon Urai : Urutan evaluasi berdasarkan urutan topologi DAGnya. DAG dibuat berdasarkan pohon urainya. 2.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). 3.Metode Oblivious: Urutan evaluasi ditetapkan tanpa memperhatikan aturan semantiknya. Metode 2 dan 3 tidak memerlukan pohon urai dan DAG → lebih efisien.

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

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

17 Produksi dan Aturan Semantik17

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

19 Produksi dan Aturan Semantik19 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. P 1 := mkleaf(id,a) P 2 := mkleaf(id,a) P 3 := mkleaf(id,b) P 4 := mkleaf(id,c) P 5 := mknode(‘-’,P 3,P 4 ) P 6 := mknode(‘*’,P 2,P 5 ) P 7 := mknode(‘+’,P 1,P 6 ) P 8 := mkleaf(id,b) P 9 := mkleaf(id,c) P 10 := mknode(‘-’,P 8,P 9 ) P 11 := mkleaf(id,d) P 12 := mknode(‘*’,P 10,P 11 ) P 13 := mknode(‘+’,P 7,P 12 )


Download ppt "Produksi dan Aturan Semantik1 Chapter 10 Produksi dan Aturan Semantik."

Presentasi serupa


Iklan oleh Google