Produksi dan Aturan Semantik

Slides:



Advertisements
Presentasi serupa
Kuliah 03 – Pengenalan Analisa Sintak
Advertisements

Pengayaan Software/Hardware dan Pengantarmukaan
Pertemuan 2 DASAR PEMROGRAMAN.
Penguraian Bawah-Atas (Bottom-up Parsing)
Pembentukan Kode Intermediate
Chapter 7 Penguraian LR.
Pertemuan 8 STRUKTUR POHON (TREE).
CARA PENANGAN KESALAHAN
Teknik Kompilasi Febuari 2013.
Chapter 20 Pembentukan Kode.
Kuliah11 Evaluasi Definisi Beratribut-S. Evaluasi bottom­up oleh suatu parser pada saat input diurai (proses) Nilai­nilai atribut tersintesa disimpan.
STRUKTUR DATA TREE (POHON)
Interaksi Manusia dan Komputer
Pohon Urai (parse) dan Derivasi
TABEL INFORMASI / SIMBOL
Situasi Saat Program Berjalan (Run-time Environment)
BAB 9 POHON.
Analisis Semantik.
KONSEP dan NOTASI BAHASA
KOMPILASI KOMPILATOR (COMPILER) adalah :
Kuliah 12 Type Checking.
Komponen sebuah Kompilator
Outline Awalnya dikembangkan oleh Borland dan umunya igunakan untuk paket perangkat lunak tingkat lanjut dengan kepustakaan yang lebih banyak dan.
PEMROGRAMAN IMPERATIF
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
T I P E D A T A.
1 Tabel Simbol (Ref : Aho 2.7, 7.6 / k10.ps). 2 Pendahuluan Definisi tabel simbol : Tabel/struktur data yg. digunakan utk. menyimpan informasi yg. berkaitan.
BAB 9 POHON.
Tenia Wahyuningrum pointers Tenia Wahyuningrum
Pengurai Prediktif & Bottom Up Parsing (penguraian bawah atas)
Cara Penanganan Kesalahan
MATERI PERKULIAHAN TEKNIK KOMPILASI
Pengantar Teknik Kompilasi
Pemrograman Terstruktur
Pengantar Struktur Data & TREE
Tipe Data By Serdiwansyah N. A..
Elemen Dasar C Identifier :
TREE STRUCTURE (Struktur Pohon)
Tabel Informasi/ Tabel Simbol
Pohon dan Pohon Biner Anifuddin Azis.
Matematika Diskrit Kode Huffman Heru Nugroho, S.Si., M.T.
TABEL INFORMASI atau TABEL SIMBOL
Diagram Pohon (Tree Diagram)
TIPE DATA Brian Damastu, S.T., M.Kom
Analisa Semantik, Kode Antara,
Struktur Data Tipe data & Struktur Data
Pesan-pesan kesalahan
SEMANTIKS Pertemuan Ke-3.
Analisis leksikal (Scanner)
Pengantar Teknik Kompilasi
Sheila Nurul Huda, S.Kom, M.Cs
Pseudocode – Tipe Data, Variabel, dan Operator
Semantics Analyser Contoh : A := ( A+B) * (C+D)
Analisis Sintaks (Parsing)
STRUKTUR DATA.
ANALISIS LEKSIKAL (Scanner)
Analisa Semantik, Kode Antara,
Matematika Diskrit Semester Ganjil TA Kode Huffman.
Defri Kurniawan, M.Kom Pertemuan I Defri Kurniawan, M.Kom
Proses kompilasi COMPILATOR.
CARA PENANGAN KESALAHAN
Struktur Data.
Struktur Data.
Pengenalan Kompilasi & Klasifikasi Tatabahasa Formal menurut Chomsky
Automata Hingga Deterministik (AHD)
Teknik Optimasi by kustanto
Semantics Analyser by Kustanto
CARA PENANGAN KESALAHAN
Cara Penanganan Kesalahan
Fathiah, S.T.,M.Eng Universitas Ubudiyah Indonesia
Transcript presentasi:

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

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

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

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

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

Produksi dan Aturan Semantik

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

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

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

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

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

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

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

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

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

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

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

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

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