1 / 49

Konsep dan Notasi Bahasa

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.

ishi
Download Presentation

Konsep dan Notasi Bahasa

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. KonsepdanNotasiBahasa

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

  3. MODEL KOMPILATOR

  4. BeberapaFaktorpentingseseorangmemilihbahasapemrograman: • Sintak • Editor • Dokumentasi • Performa • Library • Fleksibilitas • Komunitas • Popularitas

  5. SINTAKS • Infiks: Notasiumumdalamekspresimatematika, operator diletakkandiantaradua operand(subjekdanobjek). Kelemahannyamembutuhkantandakurungdalammenentukanmanadahuluuntukdikerjakan. • Prefiks:Notasi yang umumbagikomputer, operator didepanoperand.Operatorinidigunakanolehbahasa LIPS. Tidakperlutandakurung, cukupdenganhirarkidari tree operasi yang di parser. • Postfiks: Operator dilakukansetelah operand. Notasiinilebihmudahdiimplementasimenggunakan stack(tumpukan).

  6. Contohnotasi yang ambigu void main() { int *bil1, bil2; int *bil3=&bil2; //’*’ tidakdibenarkan *bil3=&bil2; //benardengan ‘*’ }

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

  8. BENTUK INTERNAL SOURCE PROGRAM • Dalammenterjemahkanbahasapemrogramanmakakompilerakanmembentukrepresentasi internal yang berupa: • BentukKuadruple • Merupakansuatuperintahtigaalamatdanmerupakansuatuhasildalambentukkodesumber yang dihasilkanolehanalisasemantik.

  9. BentukUmum: • <operator>,<operand1>,<operand2>,<result> • dimana: <operand1> dan <operand2> sebagaiargumen. • <result> sebagaitempatpenyimpanansementaradarihasilargumen.

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

  11. Contoh : Ekspresi : (A+B) * (C+D) Bentuk intermediate darikodesumberberbentukkuadrupelseperti ( + , A, B, T1) ( + , C, D, T2) ( * , T1, T2, T3)

  12. Bentuk Triple • dimanatempatpenyimpanansementara • (T1, ..., Tn) digantidengannomortempatpenyimpanan (1, ..., n). • BentukUmum: • <operator>, <operand1>, <operand2>

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

  14. BentukNotasi Polish • Bentuknotasi polish digunakanuntukmemperlihatkanaritmatikatauekspresi yang logisdanpastiberdasarkan order daritiap-tiap operator yang adasehinggaakanmemberikan 3 bentuknotasi: • Notasi Prefix • dimana operator beradadidepan operand. • Contoh: +AB

  15. Notasi Infix • dimana operator beradadiantara operand. • Contoh: Z * W • Notasi Postfix • dimana operator beradadibelakang operand. • Contoh: AB*

  16. Sebuahekspresi Infix dapatdikonversikankebentuk intermediate yang disebutnotasi polish. Sebuahekspresi infix (A+B)*(C+D) dapatdikonversikansehinggaekivalendengan suffix-polish (postfix-polish) AB+CD+*.

  17. Tiap-tiap operand umumnyamenggunakandualokasi: • Akandiberikandalambentuk integer. • Operand merupakankarakter yang berasaldari identifier. Operand initerdiridari: • - namadarivariabel • - namadariprosedur • - namadarifungsi • - variabelsementara

  18. Aturan-aturannotasi polish sebagaiberikut: • Identifier akanberadadalam order yang samapadanotasi infix. • Operator akanmemberikanordernyabiladievaluasi. • Secaraumumdalamsegmen program operator selalusetelah operand.

  19. 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/

  20. Aturan-aturanpenyelesaiandalam STACK: • Jikaditelusuriadalah identifier ataukonstantamakanilainyaakandidorongkedalam stack dandilanjutkandenganmenelusurisimbolberikutnya. • Bentukumum: • (operand) := (identifier) • Jikaditelusurisuatusimbol operator akanditempatkanpada top stack. • Bentukumum: • (operand)::=(operand1)(operand2)(operator)

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

  22. Output daripenganalisissemantikdikirimkepembentukkode (code generator). Padasaatitubentuk intermediate program sumber, biasanyaditerjemahkankedalambahasarakitan (assembly language) ataupunkedalambahasamesin (machine language)

  23. Contoh : Bentukkuadrupeldiatas, dapatmenghasilkanbarisanalamat-tunggal (single address), intruksiakumulator-tunggalbahasarakitan (single-accumulator assembly language) berikut :

  24. LDA A Panggil (LOAD) isi A, masukkankedalamakumulator ADD B Tambahkan (ADD) isi B kedalamAkumulator STO T1 Simpan (STORE) isiakumulator kedalampenyimpanan sementara T1

  25. LDA C Panggil (LOAD) isi C, masukkankedalamakumulator ADD D Tambahkan (ADD) isi D kedalamAkumulator STO T2 Simpan (STORE) isiakumulator kedalampenyimpanan sementara T2

  26. LDA T1 Panggil (LOAD) isi T1, masukkankedlmakumulator MUL T2 Kalikan (MULTIPLY) isi T2 denganisiakumulator STO T3 Simpan (STORE) isiakumulator kedlmpenyimpansementara T3

  27. PengembanganKuadruple

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

  29. PengembanganNotasi Polish • Ekspresi • <var> = <expr> • Notasi Polish • <var><expr> = • Contoh: • A = B * C +D • Notasipolishnya : ABC*D+=

  30. Array • Deklarasi array A  notasipolishnya: A ADEC • Deklarasi array A[L1U1,...,LnUn] • Notasipolishnya: L1U1,...,LnUnA ADEC • Contoh: • Array A[1:7,1:10] • Notasipolishnya: 17110 A ADEC

  31. AturanProduksimerupakanpusatdaritatabahasa, yang menspesifikasikanbagaimanasuatutatabahasamelakukantransformasisuatu string kebentuklainnya. • Melaluiaturanproduksidapatdidefinisikansuatubahasa yang berhubungandengantatabahasatersebut. • Aturanproduksidinyatakandalambentuk :    • Bisadibaca :  menghasilkan , atau  menurunkan 

  32. SIMBOL : • Simbol Terminal biasanyadinyatakandenganhurufkecil • misalnya : ‘a’, ’b’, ’c’ • Simbol Non Terminal/VariabelbiasadinyatakandenganHurufbesar • misalnya : ‘A’, ‘B’, ‘C’

  33. Diagram Keadaan • Diagram keadaan (State Transition Diagram) digunakanuntukmendapatkan token (token adalahsimbol terminal padateoribahasa) yaitumelakukananalisisleksikalterhadap program sumber. • Misalkansuatubahasamemilikihimpunansimbol terminal/token (t_PLUS, t_MIN, t_ID, t_INT).

  34. Contoh : VAR jumlah : integer • VAR dan Integer : Keyword • Jumlah : sebuahnama yang dideklarasikansendiriolehpemrogram • Token t_IDharusdiawalidengankarakterhuruf (A-Z, a-z) danbisadiikuti digit (0-9) atauhuruf • Token t_INTharusdiawali digit danbisadiikutidengan digit. • Blank merupakanbagian program sumber yang diabaikan (dilewati) sepertispasi.

  35. Backus Naur Form • Salahsatucara formal untukmendefinisikansuatubahasa formal atau CFG. BNF memilikibanyakvariasi yang disesuaikankebutuhanpemakai. Salahsatunyagabunganoperasi + dan * dalamEkspresi Regular.

  36. NOTASI BNF Beberapasimbolnotasi BNF (Backus Naur Form/Backus Norm Form) :

  37. DIAGRAM SINTAKS : • Diagram sintaksmerupakanalat bantu dalampembentukan parser/analisissintaksis. • Notasi yang terdapatpada diagram sintaks : • Empatpersegipanjangmelambangkansimbolvariabel/non terminal. • Bulatanmelambangkansimbol terminal.

  38. Diagram Sintaks • Merupakancarauntukmerepresentasikansintakatau token dalambentukgambar. Bentukdarisintak diagram adalahkotakuntukmenampilkanelemen, elipsuntukmenampilkankarakteratauhimpunankarakter, sertapanahuntuk literal.

  39. Literal adalahrangkaiankarakter yang mendefinisikantipe data dasar, ada 3 macam: a. String: dimulaidandiakhirioleh ASCII 39 dan ASCII 34 atau ASCII 96 b. Integer: dimulaikarakter ASCII 45 atau ASCII 43 dandiikutisatuataulebihkarakter digit Digit + - Sintaks Diagram integer Token

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

  41. AturanPenulisan 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"

  42. Extended Backus-Naus Form

  43. AturanPenulisan 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";

  44. SELESAI……

More Related