SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.



dokumen-dokumen yang mirip
ALGORITMA PEMROGRAMAN 1C SEMANTIKS

Bab III Semantik. Konsep Semantik Bahasa Pemrograman (Semantik Analisis)

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa.

SEMANTIK. Int vector[10];

ALGORITMA PEMROGRAMAN 1C PRAGMATIK

Fase-fase proses sebuah kompilasi

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

Aplikasi Rekursif dalam Analisis Sintaks Program

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI

Parsing. A -> a as baa B -> b bs abb

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

LANGUAGES AND TRANSLATOR

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK

TEKNIK KOMPILASI. Alamat untuk tugas: Informasi: DADANG MULYANA. dadang mulyana 2013

Perjalanan sebuah intruksi

ALGORITMA PEMROGRAMAN 1C SINTAKS

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

BAB V ANALISA SEMANTIK

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

BAHASA PEMROGRAMAN. Merupakan prosedur/tata cara penulisan program.

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I

Pendahuluan. Tujuan Pembelajaran :

BAB II STACK Atau TUMPUKAN

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

PENGANTAR TEKNIK KOMPILASI

MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR. Dosen Pengampu: Utami Dewi Widianti,S.Kom

TEORI BAHASA DAN AUTOMATA

TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI

Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Kesalahan Program Penanganan Kesalahan Reaksi Compiler Pada kesalahan Error Recovery Error repair

Tujuan. Pengenalan. Pengenalan Pemrograman Komputer. Komponen Dasar pada Komputer : Hardware. Komponen Dasar pada Komputer : Hardware

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

TUGAS MATA KULIAH TEKNIK KOMPILASI

Algoritma dan Struktur Data

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

BAHASA SUMBER. DEFINISI bahasa sumber

Kesalahan Program dapat berupa

UNIVERSITAS GUNADARMA

BAB III METODE PENELITIAN / PERANCANGAN SISTEM. perancangan dan pembuatan program ini meliputi : dengan konversi notasi infix, prefix, dan postfix.

Compiler & Interpreter

ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

BAB II STACK (TUMPUKAN)

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

BAB XI Manipulasi Binary Tree

DASAR KOMPUTER. Assembly Language

TEKNIK KOMPILASI. Firrar Utdirartatmo

Tujuan perancangan bhs program

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

Gambar 1. Blok Utama Komputer

Preliminary Test Axioo Class Program

IMPLEMENTASI PERANGKAT LUNAK

ALGORITMA PEMROGRAMAN 1C PENDAHULUAN KONSEP BAHASA PEMROGRAMAN

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

BAB VI CARA PENANGANAN KESALAHAN

Tahap pengembangan program

Analisis Perbandingan Algoritma Rekursif dan Non-Rekursif secara DFS (Depth First Search) dengan Memanfaatkan Graf

COMPILER Aspek Kompilasi

BAB I KONSEP DASAR PEMROGRAMAN

Teknik Kompiler 8. oleh: antonius rachmat c, s.kom

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

Web Site :

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

Fungsi Bahasa pemrograman adalah sebagai media untuk menyusun dan memahami serta sebagai alat komunikasi antara pemrogram dengan computer.

Pendahuluan. Kuliah online : Tekkom [2013/VI]

SATUAN ACARA PERKULIAHAN STMIK UBUDIYAH INDONESIA SEMESTER GENAP TAHUN AKADEMIK 2013/2014

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

disebut ternary operator. Di dalam suatu operasi dapat terdapat banyak operator. Urutan eksekusi dari operatoroperator

Algoritma dan Struktur Data STACK

UJIAN AKHIR SEMESTER GANJIL 2005/2006 ALGORITMA & STRUKTUR DATA / CS2014

BAB II PROSES REKURSI DAN ITERASI

Preliminary Test Axioo Class Program

Teknik Informatika, Fakultas Teknik, Universitas Brawijaya,

21/11/2016. Pohon Sintaks. Syntax?? Proses Penurunan. Analisis Syntax (Parser) Metode Parsing ANALISIS SINTAKS TEKNIK KOMPILASI

Kuliah Online : TEKKOM [2013/VI]

Preliminary Test Axioo Class Program

BAB II DASAR TEORI. 2.1 Kompilator

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Penerapan BFS dan DFS dalam Garbage Collection

STRUKTUR PROGRAM. Secara ringkas, struktur suatu program Pascal dapat terdiri dari : 1.Judul Program 2.Blog Program a.

Kualitas bahasa pemrograman: Ekspresivitas : secara jelas menggambarkan algoritma yang dibuat oleh programmer

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

STRUKTUR DATA Pertemuan 4

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16

Konsep Dasar Pemrograman

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 ASSEMBLER. Jurusan Sistem Komputer-S1 Universitas Gunadarma

BAB I PENDAHULUAN 1.1 Latar Belakang

Transkripsi:

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa. Semantik mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut. Semantik suatu bahasa membutuhkan semacam ekpresi untuk mengirimkan suatu nilai kebenaran (TRUE, FALSE, NOT atau nilai INTEGER). Dalam banyak kasus, program hanya dapat dieksekusi jika benar serta mengikuti aturan syntax dan semantic. Semantic suatu bahasa pemrograman mempunyai banyak potensial, beberapa diantaranya adalah: 1. Standarisasi bahasa pemrograman Banyak usaha yang dilakukan untuk menstandarisasi bahasa pemrograman seperti COBOL, PASCAL, FORTRAN,dsb untuk lebih memudahkan programmer menggunakannya. 2. Referensi untuk user Programmer membutuhkan suatu dokumentasi yang pasti supaya user dapat mengoperasikan program yang dibuat dengan baik 3. Pembuktian dari program yang benar Secara matematis, program tidak mungkin bekerja dan berjalan jika tidak ada semantic 4. Referensi untuk implementor Semantis akan mencegah suatu gaya bahasa yang tidak kompatibel yang diwujudkan dalam suatu implementasi berbeda walaupun dengan bahasa yang sama 5. Implementasi otomatis Suatu tool dapat secara otomatis membuat translasi bahasa yang melebihi parsing. Hal ini dapat dilakukan jika semantic sudah dirumuskan. 6. Pemahaman yang lebih baik dari desain bahasa Jika suatu rumusan semantic sulit untuk dideskripsikan secara formal maka rumusan semantic tersebut juga akan sulit digunakan oleh programmer. Dua alasan mengapa perlu memahami suatu desain bahasa pemrograman dengan lebih baik yaitu : Algoritma Pemrograman 1C 1

1. Memahami dengan lebih baik suatu desain bahasa pemrograman berarti membantu menguasai dan menggunakan bahasa tersebut. 2. Memahami dengan lebih baik suatu desain bahasa pemrograman secara detail membantu programmer untuk memperbaiki proses pengembangan program menjadi lebih baik. Teknik Semantic : 1. Operational Semantic Pendekatan ini mendefenisikan suatu mesin buatan (abstrak) dengan instruksi-instruksi primitive, tidak perlu realistic, tetapi dengan cukup sederhana supaya tidak muncul kesalahpahaman. Deskripsi semantic dari bahasa pemrograman menetukan suatu translasi ke kode. semantik operasional menceritakan bagaimana perhitungan yang dilakukan dengan mendefinisikan bagaimana mensimulasikan pelaksanaan program. 2. Detonational Semantic menggambarkan apa yang diproses dengan objek matematika. Pendefinisian denotasi sebuah bahasa terdiri dari tiga bagian: sintaks abstrak dari bahasa itu, aljabar semantik yang menggambarkan model komputasi dan fungsi nilai Pada pendekatan ini diberikan suatu fungsi yang memetakan programprogram komputer yang ditunjukkan ke dalam bentuk nilai-nilai abstrak secara matematika (angka, nilai kebenaran, fungsi matematika, dsb) 3. Axiomatic Semantic Aksiomatik semantik bahasa pemrograman mendefinisikan sebuah teori matematika program yang ditulis dalam bahasa. Pada pendekatan ini dedefenisikan suatu tindakan program yang dibangun dengan properti logika yang menyimpan status computer sebelum dan sesudah dieksekusi. Rumus semantik terbagi jadi 3: {P} c {Q} Di mana c adalah struktur kendali dalam bhs pemrograman, P dan Q adalah pernyataan sehubungan dengan properti dari objek program (seringkali variabel). P adalah prekondisi dan Q adalah poskondisi. Arti dari {P} c {Q} Adalah jika c dilaksanakan di mana P sudah dipenuhi dan c sudah selesai, maka c diselesaikan pada saat pernyataan Q dipenuhi Algoritma Pemrograman 1C 2

Program to compute S = sumi=1 na[i] S,I := 0,0 while I < n do S,I := S+A[I+1],I+1 end 4. Algebraic Semantic Semantik Aljabar menggambarkan arti sebuah program dengan definisi aljabar. Pada pendekatan ini dipertimbangkan suatu objek komputasi yang menjadi syarat-syarat dalam aljabar multi stored. Program mengimplementasikan fungsi yang dapat diwujudkan dengan suatu persamaan di antara syarat-syarat tersebut. Defenisi aljabar dari integer Stack Domains: Nat (the natural numbers Stack ( of natural numbers) Bool (boolean values) Functions: newstack: () -> Stack push : (Nat, Stack) -> Stack pop: Stack -> Stack top: Stack -> Nat empty : Stack -> Bool Axioms: or pop(push(n,s)) = S top(push(n,s)) = N empty(push(n,s)) = false empty(newstack()) = true Errors: pop(newstack()) Defining Equations: newstack() = [] push(n,s) = [N S] pop([n S]) = S top([n S]) = N 5. Translation Semantic Menterjemahkan sebuah program ke bahasa lain, biasanya bahasa mesin Seperti dalam pengambilan keputusan secara alamiah dengan logika, program diberi suatu arti dari aturan yang diturunkan yang menggambarkan penilaian gagasan suatu bahasa. Proses analisa sintaks dan analisa semantic merupakan 2 proses yang sangat erat kaitannya sulit untuk dipisahkan. A:=(A+B)*(C+D) Algoritma Pemrograman 1C 3

Parser hanya akan mengenali symbol-simbol :=, +, *, parser tidak mengetahui makna dari symbol-simbol tersebut. Untuk mengenali makna dari simbol-simbol tersebut maka compiler memanggil routin semantics. Untuk mengetahui makna, maka routin ini akan memeriksa : Apakah variabel yang ada telah didefenisikan terlebih dahulu Apakah variabel-variabel tersebut tipenya sama Apakah operand yang akan dioperasikan tersebut ada nilainy, dst Menggunakan table symbol Pemeriksaan bisa dilakukan pada table identifier, table display dsb Pengecekkan yang dilakukan dapat berupa : Memeriksa penggunaan nama-nama (keberlakuannya) Duplikasi Apakah sebuah nama terjadi pendefenisian lebih dari 2 kali. Pengecekkan dilakuak pada bagian pengelolaan block. Terdefenisi Apakah nama yang dipakai pada program sudah terdefenisi atau belum. Pengecekkan dilakukan pada semua tempat kecuali block. Memeriksa tipe Melakuakan pemeriksaan terhadap kesesuaian tipe dalam statemenstaemen yang ada. Misalnya bila terdapat suatu operasi, diperiksa tipe operandnya. Ekspresi yang mengikuti if berarti tipenya Boolean, akan diperiksa tipe identifier dan tipe ekspresinya Bila ada operasi antara 2 operand maka tipe operand yang pertama harus bisa dioperasikan dengan operand yang kedua Analisa Semantic sering juga digunakan dengan intermediate code yang akan menghasilkan intermedia code SYNTAX DIRECTED TRANSLATOR Kode antara (intermediate code) adalah sebuah representasi yang disiapkan untuk mesin abstrak tertentu. Dua sifat yang harus dipenuhi oleh kode antara adalah : 1. Dapat dihasilkan dengan mudah 2. Mudah ditranslasikan menjadi program sasaran (target program) Representasi kode antara biasanya berbentuk tiga alamat (three address code), baik berbentuk quadruples atau triples. Algoritma Pemrograman 1C 4

Kode antara (intermediate code) dibentuk dari sebuah kalimat X dalam bahasa context free. Kalimat ini adalah keluaran dari parser. Kalimat ini tentu saja dapat dinyatakan dalam represntasi pohon parsing (parse tree). Syntax directed translation adalah suatu urutan proses yang mentranslasikan parse tree menjadi kode antara. Tahap pertama dari pembentukkan kode antara adalah evaluasi atribut setiap tokn adalah semua informasi yang disimpan di dalam table symbol. Evaluasi dari parse tree. Pandang sebuah node n yang ditandai sebuah token x pada parse tree. Kita tuliskan x.a untuk menyatakan atribut a untuk token x pada node n tersebut. Nilai x.a pada node n tersebut dievaluasi dengan menggunakan aturan semantic untuk atribut a. Aturan semantic ini ditetapkan untuk setiap produksi dimana x adalah ruas kiri produksi sebuah parse tree yang menyertakan nilai-nilai atribut pada setiap nodenya dinamakan nonated parse tree. Kumpulan aturan yang menetapkan aturan-aturan semantic untuk setiap tahap produksinyadinamakan syntax directed definition. Untuk jelasnya berikut ini adalah sebuah syntax directed translation yang mentranslasikan ekspresi infix menjadi ekspresi postfix. Ekspresi infix ini dapat dipandang sebagai sebuah kalimat yang dihasilkan oleh parser. Diketahui : 1. Kalimat X: 9-5+2 2. Grammar Q = {E E+T E T I, T 0 1 2... 9} 3. Syntax directed definition PRAGMATIG Pragmatic sebuah bahasa pemrograman berhubungan dengan : Kemudahan Implementasi Efisiensi dari suatu Aplikasi Metodologi Pemrograman contoh : Pemanfaatan dan Alokasi memori yang tepat Kecepatan pemrosesan Pada bhs.prog JAVA atau C++ Pragmatik adl aspek praktis tentang bagaimana membangun dan memakai fitur-fitur dari sebuah bahasa pemrogramang untuk mencapai tujuan. Algoritma Pemrograman 1C 5

1. Heap & Pointer Variabel heap adalah variabel yang bisa diciptakan dan dihapus kapan saja. Heap variabel tidak memiliki nama dan bisa diakses dengan pointer. Heap adalah sebuah blok memori di mana di dalamnya ada potongan-potongan informasi itu dialokasi dan dikosongkan dengan cara tertentu Jangka waktu hidup heap itu dimulai dari saat dia dibuat hingga dia tidak diakses lagi. Kadang ada sebuah operasi deallocator yang memaksa penghapusan sebuah variabel heap. Ketika sebuah variabel heap dihapus dia sebenarnya masih ada dalam memori tapi tidak bisa diakses, sehingga menjadi garbage Jika seorang programmer bisa men-dealokasi variabel, akan terjadi masalah. Pointer yang mengarah ke variabel heap yang sudah terhapus, maka variabel ini menjadi dangling reference Garbage dan dangling reference menjadi sumber kesulitan bagi programmer Solusi I: Batasi penggunaannya sehingga reference ke variabel lokal tidak diakses untuk waktu yang lama Solusi II: dengan menggunakan reference count Solusi III: garbage collection 2. Coroutines Memisahkan simulation language dengan problem Menyediakan struktur kontrol yang lebih natural dari pada subprogram pada umumnya Coroutines dapat diangggap sebagai subprogram yang tidak dibutuhkan untuk menghentikan, kemudian memanggil program dan melaksanakan dari titik dimana eksekusi dihentikan. Tapi coroutines tidak boleh rekursif. Algoritma Pemrograman 1C 6

3. Safety Pemeriksaan penulisan nama variabel (konsistensi) Pendeklarasian yang tepat Menentukan apakah jenis variabel yang dimaksud sesuai dengan penggunaan variabel. Fasilitas pengecekan yang mengurangi redundansi Compiler cek setiap penggunaan dari setiap entitas agar tidak berulang. Algoritma Pemrograman 1C 7