Konsep dan Notasi Bahasa

Slides:



Advertisements
Presentasi serupa
Pemrograman Dasar Struktur kendali percabangan
Advertisements

 public static void main(String[] args) {  int bil1=3;  do {  System.out.print(bil1+",");  bil1=bil1+4;  }  while(bil1
Dasar Pemrograman Komputer
Pengayaan Software/Hardware dan Pengantarmukaan
STRUKTUR DATA array stack dan queue
Pointer.
CARA PENANGAN KESALAHAN
Teknik Kompilasi Febuari 2013.
PEMROGRAMAN KOMPUTER 2 4 SKS 2 TEORI DAN 2 PRAKTEK NANDANG HERMANTO. S.Kom.
BAB 6 APLIKASI STACK Tujuan Instruksional Umum:
Interaksi Manusia dan Komputer
STRUKTUR KONTROL PENYELEKSIAN KONDISI.
STRUKTUR DATA PERTEMUAN 5
Pemrograman Terstruktur
OPERATOR Timur Dali Purwanto.
Pengantar Teknik Kompilasi
TEKNIK KOMPILASI.
PEMROGRAMAN KOMPUTER 2 4 SKS 2 TEORI DAN 2 PRAKTEK
STACK (TUMPUKAN).
Konsep Pemrograman Function.
STRUKTUR DATA (4) Array Stack(Tumpukkan) dan Queue (Antrian)
PEMROGRAMAN SISTEM PERNYATAAN DASAR PILIHAN Pertemuan V
Analisis Semantik.
Binary Tree Rangga Juniansyah.
Nested If = if bersarang = if bertingkat Operator logika
KOMPILASI KOMPILATOR (COMPILER) adalah :
STACK.
Konsep dan Notasi Bahasa
Flow Control & Looping Pertemuan 4 Pemrograman Berbasis Obyek Oleh Tita Karlita.
Bahasa Pemrograman Tingkat Tinggi
POINTER (VAR.PENUNJUK)
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
Pengantar Teknik Kompilasi
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus.
Pengantar Teknik Kompilasi
Pengantar Struktur Data Pertemuan 1 Season 1
Sapta Candra Miarsa,S.T.,M.T.
PENGANTAR TEKNIK KOMPILASI
Teknik Kompilasi “Translator”
Cara Penanganan Kesalahan
STRUKTUR DATA : STACK Sri marini.st.
Analisa Semantik, Kode Antara,
Analisis semantik, kode antara dan pembangkitan kode
Pesan-pesan kesalahan
SEMANTIKS Pertemuan Ke-3.
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
Semantics Analyser Contoh : A := ( A+B) * (C+D)
kode antara dan pembangkit kode
Analisis Sintaks (Parsing)
Analisa Semantik, Kode Antara,
kode antara dan pembangkit kode
Teknik Kompilasi “Translator”
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
STACK HARJANTO SUTEDJO.
TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI)
Pemograman Berorientasi Object Sistem Informasi Semster III
Proses kompilasi COMPILATOR.
CARA PENANGAN KESALAHAN
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
Teknik Kompilasi Abdul Wahid, ST, M.Kom
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
Semantics Analyser by Kustanto
CARA PENANGAN KESALAHAN
ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE
Fathiah, S.T.,M.Eng Universitas Ubudiyah Indonesia
Transcript presentasi:

Konsep dan Notasi Bahasa

Pokok Bahasan Pengantar Kompilasi Perancangan Bahasa Pemrograman Konsep dan Notasi Bahasa Analisis Leksikal Analisis Sintaksis Analisis Semantik Kode Antara Pembangkitan Kode Penanganan Kesalahan Teknik Optimasi Tabel Informasi

MODEL KOMPILATOR

Beberapa Faktor penting seseorang memilih bahasa pemrograman: Sintak Editor Dokumentasi Performa Library Fleksibilitas Komunitas Popularitas

SINTAKS Infiks: Notasi umum dalam ekspresi matematika, operator diletakkan diantara dua operand(subjek dan objek). Kelemahannya membutuhkan tanda kurung dalam menentukan mana dahulu untuk dikerjakan. Prefiks:Notasi yang umum bagi komputer, operator didepan operand.Operator ini digunakan oleh bahasa LIPS. Tidak perlu tanda kurung, cukup dengan hirarki dari tree operasi yang di parser. Postfiks: Operator di lakukan setelah operand. Notasi ini lebih mudah diimplementasi menggunakan stack(tumpukan).

Contoh notasi yang ambigu void main() { int *bil1, bil2; int *bil3=&bil2; //’*’ tidak dibenarkan *bil3=&bil2; //benar dengan ‘*’ }

Contoh notasi yang ambigu If(data != newd) if(data >newd) if(right) insert(newd,right); else if(data<newd) //milik if sebelumnya if(left) insert(newd,left); Else if(data=newd) insert(newd,mid);//milik if pertama

BENTUK INTERNAL SOURCE PROGRAM Dalam menterjemahkan bahasa pemrograman maka kompiler akan membentuk representasi internal yang berupa: Bentuk Kuadruple Merupakan suatu perintah tiga alamat dan merupakan suatu hasil dalam bentuk kode sumber yang dihasilkan oleh analisa semantik.

dimana: <operand1> dan <operand2> sebagai argumen. Bentuk Umum: <operator>,<operand1>,<operand2>,<result> dimana: <operand1> dan <operand2> sebagai argumen. <result> sebagai tempat penyimpanan sementara dari hasil argumen.

Contoh: A * B + C * D (A-B) / (C-D) maka: maka: *, A, B, T1 -, A, B, T1 *, C, D, T2 -, C, D, T2 +, T1, T2, T3 /, T1, T2, T3

Contoh : Ekspresi : (A+B) Contoh : Ekspresi : (A+B) * (C+D) Bentuk intermediate dari kode sumber berbentuk kuadrupel seperti ( + , A, B, T1) ( + , C, D, T2) ( * , T1, T2, T3)

Bentuk Triple dimana tempat penyimpanan sementara (T1, ..., Tn) diganti dengan nomor tempat penyimpanan (1, ..., n). Bentuk Umum: <operator>, <operand1>, <operand2>

Contoh: A + B * C (A*B) ^ (C-D) maka: maka: (1), *, B, C (1), *, A , B (2), +,A, (1) (2), -, C, D (3), ^, (1), (2)

Bentuk Notasi Polish Bentuk notasi polish digunakan untuk memperlihatkan aritmatik atau ekspresi yang logis dan pasti berdasarkan order dari tiap-tiap operator yang ada sehingga akan memberikan 3 bentuk notasi: Notasi Prefix dimana operator berada di depan operand. Contoh: +AB

Notasi Infix dimana operator berada di antara operand. Contoh: Z * W Notasi Postfix dimana operator berada di belakang operand. Contoh: AB*

Sebuah ekspresi Infix dapat dikonversikan ke bentuk intermediate yang disebut notasi polish. Sebuah ekspresi infix (A+B)*(C+D) dapat dikonversikan sehingga ekivalen dengan suffix-polish (postfix-polish) AB+CD+*.

Tiap-tiap operand umumnya menggunakan dua lokasi: Akan diberikan dalam bentuk integer. Operand merupakan karakter yang berasal dari identifier. Operand ini terdiri dari: - nama dari variabel - nama dari prosedur - nama dari fungsi - variabel sementara

Aturan-aturan notasi polish sebagai berikut: Identifier akan berada dalam order yang sama pada notasi infix. Operator akan memberikan ordernya bila dievaluasi. Secara umum dalam segmen program operator selalu setelah operand.

Contoh: (A+B) * (C-D) maka: A + B = AB+  P C - D = CD-  Q P * Q = PQ*  AB+CD-* (A*B) / C A * B = AB*  P P / C = PC/  AB*C/

Aturan-aturan penyelesaian dalam STACK: Jika ditelusuri adalah identifier atau konstanta maka nilainya akan didorong ke dalam stack dan dilanjutkan dengan menelusuri simbol berikutnya. Bentuk umum: (operand) := (identifier) Jika ditelusuri suatu simbol operator akan ditempatkan pada top stack. (operand)::=(operand1)(operand2)(operator)

Nilai asterik diganti dengan hasil dari proses sebagai temporari sehingga menghasilkan proses LIFO.

Output dari penganalisis semantik dikirim ke pembentuk kode (code generator). Pada saat itu bentuk intermediate program sumber, biasanya diterjemahkan ke dalam bahasa rakitan (assembly language) ataupun ke dalam bahasa mesin (machine language)

Contoh : Bentuk kuadrupel diatas, dapat menghasilkan barisan alamat-tunggal (single address), intruksi akumulator-tunggal bahasa rakitan (single-accumulator assembly language) berikut :

LDA A Panggil (LOAD) isi A, masukkan ke dalam akumulator ADD B Tambahkan (ADD) isi B ke dalam Akumulator STO T1 Simpan (STORE) isi akumulator ke dalam penyimpanan sementara T1

LDA C Panggil (LOAD) isi C, masukkan ke dalam akumulator ADD D Tambahkan (ADD) isi D ke dalam Akumulator STO T2 Simpan (STORE) isi akumulator ke dalam penyimpanan sementara T2

LDA T1 Panggil (LOAD) isi T1, masukkan ke dlm akumulator MUL T2 Kalikan (MULTIPLY) isi T2 dengan isi akumulator STO T3 Simpan (STORE) isi akumulator ke dlm penyimpan sementara T3

Pengembangan Kuadruple No Operator Operand Maksud 1 BR i bercabang ke kuadruple i 2 BZ i,P bercabang ke kuadruple i jika P=0 BP bercabang ke kuadruple i jika P>0 BM bercabang ke kuadruple i jika P<0 BMZ bercabang ke kuadruple i jika P≤0

3 BG bercabang ke kuadruple i jika P1>P2 BL i,P1,P2 bercabang ke kuadruple i jika P1<P2 BE bercabang ke kuadruple i jika P1=P2 4 BRL P bercabang ke kuadruple yang ditunjuk oleh nilai P dalam tabel simbol 5 +,-,*, / P1,P2,P3 operand P1 dan operand P2 disimpan hasilnya pada operand P3

6 = P1,,P3 simpan nilai P1 pada P3 7 CVRI konversi nilai real menjadi integer simpan pada P3 8 CVIR konversi nilai integer menjadi real simpan pada P3 9 BLOCK - awal block 10 BLOCKEND akhir block 11 BOUNDS P1,P2 P1 dan P2 menjabarkan batas bawah dan atas suatu array 12 ADEC P1 Deklarasi array P1

Contoh 1: i=1 1. BLOCK j=0 2. =,1,,i while i<=10 3. =,0,,j j=j+1 4. <=,i,10,T1 i=i+1 5. BP,,T1 end 6. +,j,1,T2 7. =T2,,j 8. +,i,1,T3 9. =T3,,i 10. BLOCKEND

Pengembangan Notasi Polish Ekspresi <var> = <expr> Notasi Polish <var><expr> = Contoh: A = B * C +D Notasi polishnya : ABC*D+=

Array Deklarasi array A  notasi polishnya: A ADEC Deklarasi array A[L1U1,...,LnUn] Notasi polishnya: L1U1,...,LnUn A ADEC Contoh: Array A[1:7,1:10] Notasi polishnya: 17110 A ADEC

Batasan Aturan Produksi Bahasa Mesin Otomata Batasan Aturan Produksi Regular/Tipe 3 Finite State Automata (FSA) meliputi Deterministic Finite Automata (DFA) & Non Deterministic Finite Automata (NFA)  Adalah sebuah simbol variabel.  Maksimal memiliki sebuah simbol variabel yang bila ada terletak di posisi paling kanan. Bebas Konteks / Tipe 2 Push Down Automata (PDA)  berupa sebuah simbol variabel. Context Sensitive / Tipe 1 Linier Bounded Automata    ≤    Unrestricted / Phase Structure / Natural Language / Tipe 0 Mesin Turing Tidak ada batasan

Aturan Produksi merupakan pusat dari tata bahasa, yang menspesifikasikan bagaimana suatu tata bahasa melakukan transformasi suatu string ke bentuk lainnya. Melalui aturan produksi dapat didefinisikan suatu bahasa yang berhubungan dengan tata bahasa tersebut. Aturan produksi dinyatakan dalam bentuk :    Bisa dibaca :  menghasilkan , atau  menurunkan 

SIMBOL : Simbol Terminal biasanya dinyatakan dengan huruf kecil misalnya : ‘a’, ’b’, ’c’ Simbol Non Terminal/Variabel biasa dinyatakan dengan Huruf besar misalnya : ‘A’, ‘B’, ‘C’

Diagram Keadaan Diagram keadaan (State Transition Diagram) digunakan untuk mendapatkan token (token adalah simbol terminal pada teori bahasa) yaitu melakukan analisis leksikal terhadap program sumber. Misalkan suatu bahasa memiliki himpunan simbol terminal/token (t_PLUS, t_MIN, t_ID, t_INT).

Contoh : VAR jumlah : integer VAR dan Integer : Keyword Jumlah : sebuah nama yang dideklarasikan sendiri oleh pemrogram Token t_ID harus diawali dengan karakter huruf (A-Z, a-z) dan bisa diikuti digit (0-9) atau huruf Token t_INT harus diawali digit dan bisa diikuti dengan digit. Blank merupakan bagian program sumber yang diabaikan (dilewati) seperti spasi.

Backus Naur Form Salah satu cara formal untuk mendefinisikan suatu bahasa formal atau CFG. BNF memiliki banyak variasi yang disesuaikan kebutuhan pemakai. Salah satunya gabungan operasi + dan * dalam Ekspresi Regular.

NOTASI BNF Beberapa simbol notasi BNF (Backus Naur Form/Backus Norm Form) : ::= Identik dengan simbol  pada aturan produksi  Sama dengan simbol serupa pada aturan produksi <> Mengapit simbol variabel/non terminal { } Pengulangan 0 sampai n kali

Notasi yang terdapat pada diagram sintaks : Diagram sintaks merupakan alat bantu dalam pembentukan parser/analisis sintaksis. Notasi yang terdapat pada diagram sintaks : Empat persegi panjang melambangkan simbol variabel/non terminal. Bulatan melambangkan simbol terminal.

Diagram Sintaks Merupakan cara untuk merepresentasikan sintak atau token dalam bentuk gambar. Bentuk dari sintak diagram adalah kotak untuk menampilkan elemen, elips untuk menampilkan karakter atau himpunan karakter, serta panah untuk literal.

Literal adalah rangkaian karakter yang mendefinisikan tipe data dasar, ada 3 macam: a. String: dimulai dan diakhiri oleh ASCII 39 dan ASCII 34 atau ASCII 96 b. Integer: dimulai karakter ASCII 45 atau ASCII 43 dan diikuti satu atau lebih karakter digit + Digit - Sintaks Diagram integer Token

Contoh Diagram Sintaks If-statment if Condition Then statement End-if ; Else if else statement Condition Else-if Then statement

Aturan Penulisan BNF <expression> ::= <term> | <expression> "+" <term> <term> ::= <factor> | <term> "*" <factor> <factor> ::= <constant> | <variable> | "(" <expression> ")" <variable> ::= "x" | "y" | "z" <constant> ::= <digit> | <digit> <constant> <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

Extended Backus-Naus Form

Aturan Penulisan EBNF expression = term , {"+" , term}; term = factor , {"*" , factor}; f actor = constant | variable | "(" , expression , ")"; variable = "x" | "y" | "z"; constant = digit , {digit}; digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";

SELESAI……