BAHASA SUMBER DEFINISI bahasa sumber Bahasa adalah kumpulan

BAHASA SUMBER

DEFINISI “bahasa sumber” • Bahasa adalah kumpulan kalimat. Kalimat adalah rangkaian kata. Kata adalah unit terkecil komponen bahasa yang tidak bisa dipisah-pisahkan lagi. • Kalimat-kalimat : ‘Seekor kucing memakan seekor tikus. ’ dan ‘Budi menendang sebuah bola. ’ adalah dua contoh kalimat lengkap Bahasa Indonesia. ‘A cat eats a mouse’ dan ‘Budi kick a ball. ’ adalah dua contoh kalimat lengkap Bahasa Inggeris. ‘if a 2 < 9. 0 then b 2 : = a 2+a 3; ’ dan ‘for i : = start to finish do A[i] : = B[i]*sin(i*pi/16. 0). ’ adalah dua contoh kalimat lengkap dalam Bahasa Pemrograman Pascal. • Dalam bahasa pemrograman kalimat lebih dikenal sebagai ekspresi sedangkan kata sebagai token

Bahasa Tingkat Tinggi (Pemrograman ) • Bahasa yang lebih dikenal oleh manusia, maksudnya adalah statement yang digunakan menggunakan bahasa yang dipakai oleh manusia (inggris), • Bahasa pemrograman didefinisikan dengan menentukan bentuk programnya (sintak) dan arti programnya (semantik) • Memberikan fasilitas yang lebih banyak, seperti struktur kontrol program yang terstruktur, blok-blok serta prosedur dan fungsi-fungsi • Progam mudah untuk di koreksi (debug) • Tidak tergantung pada salah satu mesin • Kontrol struktur seperti : kondisi (if. . Then. . Else ), perulangan (For, while ), Struktur blok (begin. . End {. . } )

Tingkatan Bahasa Pemrograman

Sumber perancangan bahasa • Konstruksi yang diturunkan dari bahasa alami, karena bahasa alami dapat digunakan sebagai panduan untuk perancangan sintaks • Matematika, misal untuk perancangan operasi aritmatika • Bahasa pemrograman yang sudah ada.

Tujuan perancangan bhs program Komunikasi dengan manusia Pencegahan deteksi kesalahan Usability Efektifitas pemrograman Compilability (mengurangi kompleksitas, mis: penggunaan bracket) • Efisiensi dengan meminimalisir ketidakcocokan antara hardware dengan bahasa • • •

Tujuan perancangan bhs program(2) • Machine independent • Simplicity : penyederhanaan komponen bahasa program • Orthogonality : kumpulan primitive yang dikombinasikan dengan berbagai cara dalam membangun kontrol dan struktur data dalam bahasa program

Struktur Ekspresi Metode pengurutan evaluasi dalam ekspresi : • Explicit Bracketing • Operator binding Binding adalah asosiasi antara atribut dan entity atau antara operasi dan simbol. Binding time adalah waktu yang dialokasikan untuk menyatukan variable dengan nilainya.

Struktur Data Empat aspek dalam struktur data • Deklarasi data • Tipe data yang tersedia • Alokasi storage • Lingkup variabel

Struktur I/O • Format free langsung ditampilkan sehingga mudah bagi user untuk memeriksa kebenaran program. Contoh pada VB. • Formatted output ditampilkan secara terformat, seperti di C : printf(), delphi/VB : format()

ANDAIKAN. . . Anda akan menciptakan sebuah bahasa program, coba sebutkan urutan proses yang harus ditentukan/skenario yang dijalani untuk menghasilkan bahasa pemrograman impian Anda tersebut !

SKENARIO PERANCANGAN 1. 2. 3. 4. 5. 6. 7. Tentukan apa yang diinginkan. Tentukan feature yang mungkin Tentukan desain dan sesuaikan dengan featurenya Tentukan rincian, parsing, dan error checking. Tuliskan user manual dan help. Evaluasilah, jika salah mulai lagi dari langkah 3. Jika sudah benar, optimisasilah dan uji segala kemungkinan. 8. Cobakan kepada pengguna, tunggu reaksinya. 9. Perbaiki bug dan mulai versi baru.

Tools Bantu Compiler • Free Compiler Construction Tools http: //www. thefreecountry. com/developercity/compiler. html • TASSKAF. Bahasa TASSKAF ini merupakan subset dari Java. Dapat disusun suatu program ke byte code yang dapat dijalankan di Java Virtual Machine (JVM). Pada site tersebut juga tersedia informasi materi kuliah dengan LEX, YACC http: //rw 4. cs. uni-sb. de/~martin/COMP/TK/ • GENTLE. Gentle ini merupakan perangkat bantu (toolkit) modern untuk menulis compiler dan mengimplemntasikannya pada bahasa tertentu. Perangkat bantu ini mendukung semua proses translasi, dari definisi tree sintaks abstrak, pater matching, smart traversal dan lain sebagainya. Toolkit ini telah digunakan secara luas di riest dan industri. http: //www. first. gmd. de/gentle/ • ELI. Merupakan suatu lingkungan pemrograman yang memungkinkan membuat suatu implementasi bahasa pemrograman secara lengkap dari suatu sepsifikasi. Perangkat bantu ini menangani struktural analisis, analisis nama, type, value dlsb dan akan menghasilkan kode C. http: //www. cs. colorado. edu/~eliuser/

ANTLR, ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages Made by : Terrence Parr <almost by himself> For 15 Years 15 TH ?

IDE SISTEM PEMBELAJARAN CERDAS What’s a Surprise? Topic Skripsi with Compiler technique

• Tabel Informasi

Tabel Informasi Dua fungsi penting Tabel Informasi l Untuk membantu pemeriksaan kebenaran semantik dari program sumber l Untuk membantu dan mempermudah dalam pembuatan intermediate code dan proses pembuatan kode-kode (pembangkitan kode)

Tabel Informasi Secara umum, sebuah tabel simbol bisa memiliki elemen-elemen tabel sebagai berikut, meskipun tidak semuanya dipergunakan oleh semua compiler l No. urut identifier: menentukan nomor urut pada tabel simbol l Nama identifier

Tabel Informasi - Kegunaan l Tipe identifier l Object time address l Dimensi dari identifier yang bersangkutan l Nomor baris variabel yang dideklarasikan l Nomor baris variabel yang direferensikan l Field link

Tabel Informasi - Implementasi Ada beberapa jenis Tabel Informasi l Tabel identifier; berfungsi menampung semua identifier yang terdapat dalam program l Tabel Array: berfungsi menampung informasi tambahan untuk sebuah array l Tabel blok: mencatat varibel-variabel yang ada pada blok yang sama l Tabel Real: Menyimpan elemen tabel bernilai real l Tabel string: menyimpan informasi string l Tabel display: mencatat blok yang aktif

Tabel Informasi - Identifier Tabel Identifier memiliki; l No Urut identifier dalam tabel l Nama Identifier l Jenis dari identifier; seperti Prosedur, fungsi, tipe variabel dan konstanta l Tipe dari identifier yang bersangkutan; seperti Integer (bilangan bulat), Char, boolean , array, record, file l level dari identifier (depth of block); hal ini menyangkut letak identifier dalam program, konsepnya sama dengan pembentukan tree, misalnya main program level 0

Tabel Informasi - Identifier Untuk identifier, pencatatan dapat berupa seperti; l Alamat relatif/address dari identifier untuk implementasi l Informasi referensi dari identifier terntentu ke alamat tabel identifier yang lainnya l link; menghubung antar identifier l Normal: digunakan pada pemanggilan parameter, untuk membedakan parameter by value dan by reference l Contoh (dalam pascal)

Program A; Var B : Integer; Procedure X (Z: char) var C : Integer begin. . dst Tabel identifier akan mencatat semua identifier; 0 1 2 3 4 A B X Z C Tabel Informasi Identifier
![Tab. Id: Array [0. . tabmax] of record nama : String; link : integer; Tab. Id: Array [0. . tabmax] of record nama : String; link : integer;](http://slidetodoc.com/presentation_image_h2/d469136301b72f358841b809c96ead5b/image-24.jpg)
Tab. Id: Array [0. . tabmax] of record nama : String; link : integer; Obj : object; Tabel Informasi - contoh Tipe : Types; ref : Integer; normal : Boolean; Level : 0. . Maxlevel; address : Integer; End Dimana objek =(konstant, variabel, prosedur, fungsi) Types = (notipe, int, reals, booleans, chars, arrays, record

Tabel Informasi - Array Tabel Array dipergunakan untuk menyimpan informasi suatu identifier yang bertipe array, tabel ini memilik field: l No. Urut suatu array dalam tabel l Tipe dari indeks array yang bersangkutan l Tipe element array l Referensi dari elemen array l Index batas dan bawah array l Jumlah elemen array l Ukuran total array (total = atas - bawah + 1) x elemen size l Elemen size

Tabel Informasi - Block Tabel Blok Dipergunakan untuk menyimpan informasi blok-blok yang ada pada tabel utama. Berisikan field l no urut blok l batas awal blok l batas akhir blok l ukuran parameter/parameter size l ukuran variabel/ variabel size l last variabel l last parameter

Tabel Informasi - Block Contoh Program A Var B : Integer; Procedure X (Z: char); Var C : Integer; begin. . Untuk Blok A Blok B last variable =2 4 Variable size = 2 (dianggap int 2 byte) 2 Last parameter = 0 (tanpa parameter) 3 parameter size = 0 1 (char butuh 1 byte)

Tabel Informasi - Implementasi Tabel Real Dipergunakan untuk menyimpan nilai dari suatu identifier yang bertipe real (pecahan). Elemen-elemen dari tabel ini adalah sebagai berikut; • NO urut elemen • Nilai real suatu variabel real yang mengacu ke indeks tabel ini Pemikirannya disini setiap tipe yang memiliki oleh suatu bahasa akan memiliki tabelnya sendiri

Tabel Informasi - Implementasi Tabel String Dipergunakan untuk menyimpan informasi string yang terdapat pada program sumber. Elemen-elemen yang terdapat dalam tabel ini adalah: – no Urut elemen – Karakter-karakter yang merupakan konstanta

Tabel Informasi - Implementasi Tabel Display menyimpan informasi-informasi mengenai blok-blok yang lagi aktif. Elemenelemen yang terdapat dalam tabel ini adalah: – No Urut tabel – Blok yang aktif Pengisian tabel display dilakukan dengan konsep stack

• Intermediate Code

Intermediate Code • Memperkecil usaha dalam membuat compilator dari sejumlah bahasa ke sejumlah mesin • Lebih Machine Independent, hasil dari intermediate code dapat digunakan lagi pada mesin lainnya • Proses Optimasi lebih mudah. Lebih mudah dilakukan pada intermediate code dari pada program sumber (source program) atau pada kode assembly dan kode mesin • Intermediate code ini lebih mudah dipahami dari pada kode assembly atau kode mesin • Kerugiannya adalah melakukan 2 kali transisi, maka dibutuhkan waktu yang relatif lama

Intermediate Code Ada dua macam intermediate code yaitu Notasi Postfix dan N-Tuple Notasi POSTFIX <Operand> < Operator> Misalnya : ( a +b ) * ( c+d ) maka Notasi postfixnya ab+ cd+ * Semua instruksi kontrol program yang ada diubah menjadi notasi postfix, misalnya IF <expr> THEN <stmt 1> ELSE <stmt 2>

POSTFIX Diubah ke postfix menjadi ; <expr> <label 1> BZ <stmt 1> <label 2> BR < stmt 2> BZ : Branch if zero (salah) BR: melompat tanpa harus ada kondisi yang ditest Contoh : IF a > b THEN c : = d ELSE c : = e

POSTFIX Contoh : IF a > b THEN c : = d ELSE c : = e Dalam bentuk Postfix 11 12 13 14 15 16 17 18 a b > 22 BZ c d : = 19 20 21 22 23 24 25 25 BR c e : = bila expresi (a>b) salah, maa loncat ke instruksi 22, Bila expresi (a>b) benar tidak ada loncatan, instruksi berlanjut ke 16 -18 lalu loncat ke 25

POSTFIX Contoh: WHILE <expr> DO <stmt> Diubah ke postfix menjadi ; <expr> <label 1> BZ <stmt> <label 2> BR Instruksi : a: = 1 WHILE a < 5 DO a : = a + 1 Dalam bentuk Postfix 10 11 12 13 14 15 16 17 a 1 : = a 5 < 25 BZ 18 a 19 a 20 1 21 + 22 : = 23 13 24 BR 25

TRIPLES NOTATION Notasi pada triple dengan format <operator> <operand> Contoh: A : = D * C + B / E Jika dibuat intermidiate code triple: 1. * , D, C 2. /, B, E 3. +, (1), (2) 4. : =, A, (3) Perlu diperhatikan presedensi (hirarki) dari operator, operator perkalian dan pembagian mendapatkan prioritas lebih dahulu dari oada penjumlahan dan pengurangan

TRIPLES NOTATION Contoh lain: IF X > Y THEN X : = a - b ELSE X : = a + b Intermidiate code triple: 1. >, X, Y 2. BZ, (1), (6) 3. -, a, b 4. : =, X, (3) 5. BR, , (8) 6. +, a, b 7. : =, X, (6) bila kondisi 1 loncat ke lokasi 6

TRIPLES NOTATION Kelemahan dari notasi triple adalah sulit pada saat melakukan optimasi, maka dikembangkan Indirect triples yang memiliki dua list; list instruksi dan list eksekusi. List Instruksi berisikan notasi triple, sedangkan list eksekusi mengatur eksekusinya; contoh A : = B + C * D / E F : = C * D List Instruksi 1. *, C, D 2. /, (1), E 3. +, B, (2) 4. : =, A , (3) 5. : =, F, (1) List Eksekusi 1. 1 2. 2 3. 3 4. 4 5. 1 6. 5

Quardruples Notation Format dari quardruples adalah <operator> <operand> <result> Result atau hasil adalah temporary variable yang dapat ditempatkan pada memory atau register. Problemnya adalah bagaimana mengelola temporary variable seminimal mungkin Contoh: A : = D * C + B / E Jika dibuat intermidiate codenya : 1. * , D, C, T 1 2. / , B, E, T 2 3. +, T 1, T 2, A

Quardruples Notation • Hasil dari tahapan anlisis diterima oleh code generator (pembangkit kode) • Intermediate code ditansfromasikan kedalam bahasa assembly atau mesin • Misalnya (A+B)*(C+D) dan diterjemahkan kedalam bentuk quadruple: 1. +, A, B, T 1 2. + , C, D, T 2 3. *, T 1, T 2, T 3 Dapat ditranslasikan kedalam bahasa assembly dengan accumulator tunggal:

Selesai
- Slides: 42