Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Konsep dan Notasi Bahasa. Pokok Bahasan 1.Pengantar Kompilasi 2.Perancangan Bahasa Pemrograman 3.Konsep dan Notasi Bahasa 4.Analisis Leksikal 5.Analisis.

Presentasi serupa


Presentasi berjudul: "Konsep dan Notasi Bahasa. Pokok Bahasan 1.Pengantar Kompilasi 2.Perancangan Bahasa Pemrograman 3.Konsep dan Notasi Bahasa 4.Analisis Leksikal 5.Analisis."— Transcript presentasi:

1 Konsep dan Notasi Bahasa

2 Pokok Bahasan 1.Pengantar Kompilasi 2.Perancangan Bahasa Pemrograman 3.Konsep dan Notasi Bahasa 4.Analisis Leksikal 5.Analisis Sintaksis 6.Analisis Semantik 7.Kode Antara 8.Pembangkitan Kode 9.Penanganan Kesalahan 10.Teknik Optimasi 11.Tabel Informasi

3 MODEL KOMPILATOR

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

5 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).

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

7 Contoh notasi yang ambigu If(data != newd) if(data >newd) if(right) insert(newd,right); else if(data

8 Contoh notasi yang ambigu Int x =y/z/w; Str =‘1’ +’2’; Str1 = 1 + 2; for(x=1;x<=5;x++) nilai++; cout<<“Kompilasi”;

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

10 Bentuk Umum:,,, dimana: dan sebagai argumen. sebagai tempat penyimpanan sementara dari hasil argumen.

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

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

13 2.Bentuk Triple dimana tempat penyimpanan sementara (T1,..., Tn) diganti dengan nomor tempat penyimpanan (1,..., n). Bentuk Umum:,,

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

15 3.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

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

17 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+*.

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

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

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

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

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

23

24 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)

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

26 LDA APanggil (LOAD) isi A, masukkan ke dalam akumulator ADD BTambahkan (ADD) isi B ke dalam Akumulator STO T1Simpan (STORE) isi akumulator ke dalam penyimpanan sementara T1

27 LDA CPanggil (LOAD) isi C, masukkan ke dalam akumulator ADD DTambahkan (ADD) isi D ke dalam Akumulator STO T2Simpan (STORE) isi akumulator ke dalam penyimpanan sementara T2

28 LDA T1Panggil (LOAD) isi T1, masukkan ke dlm akumulator MUL T2Kalikan (MULTIPLY) isi T2 dengan isi akumulator STO T3Simpan (STORE) isi akumulator ke dlm penyimpan sementara T3

29 Pengembangan Kuadruple NoOperatorOperandMaksud 1BRibercabang ke kuadruple i 2BZ (Branch if Zero) i,P bercabang ke kuadruple i jika P=0 BPbercabang ke kuadruple i jika P>0 BMbercabang ke kuadruple i jika P<0 BMZbercabang ke kuadruple i jika P≤0

30 3BGbercabang ke kuadruple i jika P1>P2 BLi,P1,P2bercabang ke kuadruple i jika P1

31 6=P1,,P3simpan nilai P1 pada P3 7CVRI (Convertion Real to Integer) P1,,P3konversi nilai real menjadi integer simpan pada P3 8CVIR (Convertion Integer to Real) P1,,P3konversi nilai integer menjadi real simpan pada P3 9BLOCK-awal block 10BLOCKEND-akhir block 11BOUNDS (range/batasan nilai) P1,P2P1 dan P2 menjabarkan batas bawah dan atas suatu array 12ADECP1Deklarasi array P1

32 Contoh 1 kuadraple: i=11. BLOCK j=02. =,1,,i while (i<=10)3. =,0,,j begin4. <=,i,10,T1 j=j+15. BP,,T1 i=i+16. +,j,1,T2 end ;7. =T2,,j 8. +,i,1,T3 9. =T3,,i 10. BLOCKEND

33 Pengembangan Notasi Polish 1.Ekspresi = Notasi Polish = Contoh: A = B * C +D Notasi polishnya : ABC*D+=

34 2.Array Deklarasi array A  notasi polishnya: A ADEC Deklarasi array A[L 1 U 1,...,L n U n ] Notasi polishnya: L 1 U 1,...,L n U n A ADEC Contoh: Array A[1:7,1:10] Notasi polishnya: A ADEC

35 REVIEW

36 Bahasa adalah kumpulan kalimat. Kalimat adalah rangkaian kata. Kata adalah unit terkecil komponen bahasa yang tidak bisa dipisah- pisahkan lagi. Kalimat-kalimat : 1.‘Seekor kucing memakan seekor tikus.’ ; 2.‘Budi menendang sebuah bola.’ atau 1.‘A cat eats a mouse’ ; 2.‘Budi kick a ball.’ atau 1.‘if a2 < 9.0 then b2 := a2+a3;’ ; 2.‘for i := start to finish do A[i] := B[i]*sin(i*pi/16.0).’ Note: Dalam bahasa pemrograman kalimat lebih dikenal sebagai ekspresi sedangkan kata sebagai token. 36 REVIEW

37 1.Spesifikasi leksikal, misalnya setiap kata harus tersusun atas huruf mati dan huruf hidup yang disusun bergantian, atau setiap token harus dimulai dengan huruf dan selanjutnya boleh diikuti oleh huruf atau angka, 2.Spesifikasi sintaks, misalnya setiap kalimat mengikuti pola subyek-predikat-obyek atau ekspresi for_do mengikuti pola for-identifier-:=-identifier-to-identifier-do-ekspresi. 37 REVIEW

38 3.Aturan-aturan semantik, misalnya kata yang mendahului kata kerja haruslah kata benda yang menggambarkan sesuatu yang hidup dan berkaki, atau operasi perkalian hanya bisa dilakukan antara dua operand dengan tipe yang sama. 38 REVIEW

39 Dalam spesifikasi leksikal umumnya digunakan grammar regular (GR) dalam bentuk ekspresi regular (ER). Contoh pola token identifier ditentukan oleh grammar regular berikut : I  aA  bA ...  zA  a  b ...  z, A  aA  bA ...  zA  0A  1A ...  9A  a  b ...  z  0  1 ...  9 yang ekuivalen dengan ekspresi regular berikut : I = (a  b ...  z)( a  b ...  z  0  1 ...  9)* = huruf(huruf  angka)*

40 Bottom-up Parsing Membentuk sebuah Token melalui simbol yaitu : Repeat: -Identifikasi- urutan tereduksi: non-terminal tidak dibangun tetapi semua anak yang telah dibangun. -Reduksi - membangun non-terminal dan memperbarui stack Until (melakukan reduksi sampai simbol start)

41 41 Bottom-up Parsing 1 + (2) + (3) E + (E) + (3) + E  E + (E) E  i E 12+3 E E + (3) E () () E + (E) E E E E + (2) + (3)

42 BahasaMesin OtomataBatasan Aturan Produksi Regular/Tipe 3Finite 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 TuringTidak ada batasan

43  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 

44 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’

45 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).

46 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.

47 Dalam spesifikasi sintaks biasanya digunakan context free grammar (CFG). Sebagai contoh ekspresi if-then E adalah : E  if L then L  IOA I = huruf(huruf  angka)* O   = A  0  1 ...  9

48 Scanner Scanner diimplementasikan dengan Automata Hingga Deterministik (AHD/FSA). Siklus transformasi : GR  ER  AHN  AHD  GR. Contoh: scanner (yaitu AHD) untuk mengenali identifier adalah : 1 2 huruf Huruf/angka

49 Membaca program sumber a1a2a3……………an Program Sumber Penunjuk Karakter type Text_Pos = record {posisi penunjuk karakter} Row_Numb : word; {baris ke-, bisa ribuan baris/program_sumber} Char_Numb : byte; {karakter ke-, maksimum 255 karakter/baris} end; var Now_Pos : Text_Pos; {posisi sekarang} Line : string; {baris yang sedang diproses} End_of_line : byte; {posisi akhir baris yang sedang diproses}

50 procedure Next_Character(var Ft : text); {baca karakter berikut pada program_sumber} begin with Now_Pos do {coba tebak, apa itu perintah with... do ?} begin if Char_Numb = End_of_line then begin List_Line; {menampilkan kembali baris yang telah dibaca, beserta errornya} Next_Line(Ft); {membaca baris berikutnya} Row_Numb := Row_Numb + 1; Char_Numb := 1; end else Char_Numb := Char_Numb + 1; character := Line[Char_Numb]; end;

51 procedure List_Line; begin write{Now_Pos.Row_Numb : 3, ‘ ‘); writeln(Line); List_Error; {menampilkan kesalahan-kesalahan yang terjadi pada suatu baris} End; procedure Next_Line(Ft : text); begin readln(Ft, Line); End_of_line := length(Line) + 1: Line := Line + #32; {karakter spasi} end;

52 Aturan Translasi Contoh aturan translasi (translation rule) untuk beberapa ekspresi regular (ER) atau token. token Aturan translasitokenAturan translasi.{Current_Token(1,1)}= {Current_Token(15,1)},{Current_Token(2,1)}<> {Current_Token(15,2)} ;{Current_Token(3,1)}< {Current_Token(15,3)} :{Current_Token(4,1)}<= {Current_Token(15,4)} :={Current_Token(12,1)}> {Current_Token(15,5)} +{Current_Token(13,1)}>= {Current_Token(15,6)} -{Current_Token(13,2)}identifier {Current_Token(27,Id)} *{Current_Token(14,1)}(+  -  )angka {Current_Token(28,IN)} /{Current_Token(14,2)}(+  -  )angka.angka {Current_Token(29,RN)}

53 Current_Token(tipe,nilai) adalah procedure yang memberikan spesifikasi kepada sebuah token yang baru saja ditemukan. Argumen tipe adalah kelompok token. Argumen nilai merupakan nilai dari token tersebut. Tipe = 0 ditetapkan bagi token yang tidak dikenal.

54 DFA dari ER dan Tabel Transisi

55

56 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.

57 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

58  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.

59 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.

60 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

61 Contoh Diagram Sintaks If-statment Condition Then if statemen t Else if else statemen t End-if ; Else-if Condition Then statemen t

62

63 Aturan Penulisan BNF ::= | "+" ::= | "*" ::= | | "(" ")" ::= "x" | "y" | "z" ::= | ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

64 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";

65 SELESAI……


Download ppt "Konsep dan Notasi Bahasa. Pokok Bahasan 1.Pengantar Kompilasi 2.Perancangan Bahasa Pemrograman 3.Konsep dan Notasi Bahasa 4.Analisis Leksikal 5.Analisis."

Presentasi serupa


Iklan oleh Google