SINTAKS Pertemuan Ke2 Bahasa mesin adalah bentuk terendah

SINTAKS Pertemuan Ke-2

Bahasa mesin adalah bentuk terendah pada komputer. Interpreter adalah perangkat lunak yang mampu eksekusi code program dan menterjemahkannya ke dalam bahasa mesin. Interpreter menterjemahkan code program secara baris per baris. Compiler adalah perangkat lunak yang mampu menterjemahkannya ke dalam bahasa mesin. Compiler menterjemahkan code program secara keseluruhan. SINTAKS Sintaks merupakan kumpulan aturan yang mendefinisikan suatu bentuk bahasa. Sintaks mendefinisikan bagaimana suatu kata dikombinasikan menjadi suatu statement yang benar sehingga dapat disusun suatu program yang dapat berjalan dengan benar. Sintaks dari bahasa pemrograman didefinisikan dengan dua kumpulan aturan, yaitu : Aturan Lexical /Lexical Analysis (Scanner)

KONSEP DAN NOTASI BAHASA Grammar (Tata Bahasa) dalam bahasa pemrograman merupakan kumpulan aturan (disebut Production) yang menentukan urutan karakter (Lexical Token). Empat unsur pembentuk grammar adalah Terminal, Non Terminal, Produksi dan Simbol Start. Bahasa adalah himpunan hingga ataupun tak hingga dari kalimat atau kumpulan kalimat. Kalimat adalah deretan hingga simbol-simbol terminal. Alfabe t adalah kumpulan dari objek-objek yang disebut dengan simbol atau token. Contoh : ∑ 1 = {a, b, c, . . , z} ∑ 2 = {α, β, γ, δ} Simbol-simbol Terminal : Huruf kecil awal alfabet, misalkan a, b, c Simbol operator, misalkan +, - dan x Simbol tanda baca, misalkan (, ) dan ; String yang tercetak tebal misalkan if, then dan else Simbol-simbol Non Terminal Huruf besar awal alfabet misalkan A, B, C

Aturan Produksi : Aturan produksi dnyatakan dalam bentuk α → β, α menghasilkan atau menurunkan β α symbol-symbol untuk ruas kiri, β symbol-symbol untuk ruas kanan Symbol-symbol dapat berupa terminal dan non terminal dimana non terminal dapat diturunkan menjadi symbol yang lainnya Umumnya symbol terminal disymbolkan dengan huruf kecil (a, b, c, dsb), sedangkan untuk symbol non terminal disymbolkan dengan huruf besar (A, B, C, dsb) Contoh aturan produksi : T → a, T menghasilkan a E → T │ T + E, E menghasilkan T atau E menghasilkan T + E Tahun 1956 -1959 Noam Chomsky melakukan penggolongan tingkatan dalam bahasa yaitu menjadi 4 class yang disebut dengan Hierarchy Chomsky. Tahun 1959 Backus memperkenalkan notasi formal baru untuk sintaks bahasa yang lebih spesifik.

o Gambar Hierarchy Chomsky Keterangan Gambar : Tipe 0 / Unrestricted : tidak ada batasan pada aturan produksi Abc → De Tipe 1 / Context sensitive : panjang string ruas kiri harus < (lebih kecil) atau = (sama dengan) ruas kanan Ab → De. F CD → e. F Tipe 2 / Context Free Grammar : ruas kiri haruslah tepat satu symbol variabel, yaitu simbol non terminal B → CDe. Fg D → Bc. De Tipe 3 / Regular : ruas kiri harus tepat satu simbol variable dan ruas kanan hanya memiliki maksimal satu symbol non terminal dan diletakkan paling kanan sendiri A → efg. H

Sebuah grammar didefinisikan dengan 4 tupel : G = (VN, VT, S, Q) dimana VT dan VN : himpunan symbol terminal dan symbol non terminal S : suatu elemen tertentu dari VN, yang disebut symbol start Q : subhimpunan hingga yang tidak kurang dari relasi(VTυVN)* atau secara umum sebuah elemen (α, β) dari Q ditulis sebagai α → β dan disebut produksi. Dari 4 tingkatan bahasa maka kita akan membahas tentang Context Free Grammar (CFG) sangat penting didalam penggambaran dan penterjemahan bahasa pemrograman. Derifasi : proses pembentukan kalimat di grammar Grammar Context Free merupakan pembentuk bahasa Context Free Contoh : L (G 3) = {Anban │ n > = 1} Dimana : G 3 = ({S, C}, {a, b}, S, Q), dengan Q adalah produksi S → a. Ca C → b Derifasi untuk a 3 ba 3 atau aaabaaa, adalah : S → a. Ca → aa. Caa → aaa. Caaa → aaabaaa

NOTASI BNF (BACKUS NOUR FORM) Ialah sebuah metalanguage yang dikembangkan oleh Johan Backus & Peter Nour. . BNF diperluas menjadi EBNF (Extended Backus Nour Form). Simbol BNF & EBNF : : : = identik dengan symbol → │ sama dengan atau < > pengapit symbol non terminal { } pengulangan dari 0 sampai n kali/pengapit simbol terminal [ ] Optional Contoh : Aturan Produksi sebagai berikut : E → T │ T + E │ T – E T → a Notasi BNF : E : : = <T> │ <T> + <E> │ <T> - <E> T : : = a

Contoh BNF/EBNF: Contoh 1 : Aturan Produksi S = sentence, V = verb, O = object, A = article, Sp= subject phrase, N = noun, Vp = verb phrase, Np = noun phrase S → Sp. Vp Vp → VO Np → AN Sp → AN O → Np Kalimat : The cat ate a mouse

Contoh 2 : Aturan Produksi : Kata : <program> → <Stat_list> → ; <stat> B: = A+2 <expression> → Untai Begin <stat_list> End. <stat>│ <stat>; <stat_list> → Begin A: = 1 <var> : =<expression> <term> │ <term><op 1><expression> End. | <term><op 2><expression> → <factor> │<factor><op 2><term>| <term> <factor><op 1><term> <factor> → <var> │ <constant> <var> → A│ B │. . │Z <op 1> → +│ - │= <op 2> → ^│ * │/ <constant> → <real_number> │ <integer_part> <real_number> → <integer_part> │ <fraction>

Contoh 3 : Aturan Produksi : <program> → <statement> → <assigment> → <identifier> = <expression> → <identifier>│<number>|<expression><operator> <expression> <operator> → +│ - │= |^│ * │/|<|> <identifier> → <letter>|<id> → <letter>| <digit> <number> → <digit> → 0 │ 1 │. . │ 9 <letter> → A│ B │. . │Z Untai Kata : A= B+1

ATURAN LEXICAL /LEXICAL ANALYSIS (SCANNER) Tugas-tugas Aturan Lexical atau Lexical Analysis secara detil adalah : Mengidentifikasi semua besaran yang membangun suatu bahasa Mentransformasikan ke token-token (symbol terminal) Menentukan jenis dari token-token Menangani kesalahan Menangani tabel symbol Scanner di desain untuk mengenali keyword, operator, identifier Besaran Lexical : (tergantung program) Identifier dapat berupa keyword seperti if, else, begin. . end (pada Pascal) , integer (Pascal), int float (pada C) Konstanta : besaran yang berupa bilangan bulat (integer), bilangan pecahan(float / real), Boolean (true/false), string, dll Operator : operator aritmatika (+, -, *, /), operator logika(< = >) Delimiter : berguna bagi pemisah atau pembatas, seperti kurung buka, kurung tutup, titik, koma, titik dua, titik koma, white_space White_space : pemisah yang diabaikan oleh program, seperti :

Contoh : Statement : Fahrenheit : = 32 + celcius * 1. 8 Maka akan diterjemahkan ke dalam token-token sebagai berikut : Identifier → Fahrenheit Operator → : = Integer → 32 Operator penjumlahan → + Identifier → celcius Operator perkalian → * Real / float → 1. 8 Contoh 2: Statement : Jumlah A = A + B GOTO KERJA

ATURAN SINTAKSIS /SYNTAX ANALYZER (PARSER) Bertugas memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh Lexical Analysis. Proses pendeteksian (pengenalan token) disebut dengan parsing, maka syntax analyzer sering disebut dengan parser. PARSING (PROSES PENURUNAN) Parsing dari sebuah kalimat adalah konstruksi atau pembentukan pohon sintaks untuk kalimat tersebut. Parsing dapat dilakukan dengan cara : Penurunan terkiri (Leftmost derivation) : symbol variabel yang paling kiri diturunkan (tuntas) dahulu Penurunan terkanan (Rightmost derivation) : symbol yang paling kanan diturunkan (tuntas) dahulu

Contoh : ingin dihasilkan string aabbaa dari Context free language : S → a. AS │ a A → Sb. A │ ba Penurunan kiri S → a. AS → a. Sb. AS → aabba. S Penurunan kanan S → a. AS → a. Aa → a. Sbbaa → aabbaa Parsing digolongkan menjadi : Top Down Penelusuran dari root ke leaf atau dari symbol awal ke symbol terminal. Metode ini meliputi : Backtrack / back up : Brute Force Memilih produksi mulai dari kiri Menurunkan symbol non terminal sampai pada symbol terminal

Bila terjadi kesalahan (string tidak sesuai) maka dilakukan backtrack Algoritma ini membuat pohon parsing secara top-down, yaitu dengan cara mencoba segala kemungkinan untuk setiap non terminal Back Up : pengulangan suatu produksi dengan alternatif produksi yang lain, bila produksi yang digunakan tidak sesuai dengan symbol input. Contoh : Grammar : S → a. Ad S → a. B A → b A → c B → ccd B → ddc S, A dan B adalah symbol non terminal dengan S adalah symbol start. Sementara itu a, b, c dan d adalah symbol terminal

Latihan : Membentuk pohon sintaks bagi untai accd dengan menggunakan metode Brute Force.

Bottom Up Teknik Bottom Up adalah dengan memulai pada daun dan bergerak ke atas menuju akar dimulai dengan diberikannya sebuah untai, kemudian kita mencoba untuk mencapai symbol start Grammar. Latihan Diberikan sebuah grammar yang menyajikan operasi aritmatika sederhana meliputi penambahan(+), pengurangan(-), perkalian(*), dan pembagian (/) Symbol diartikan sebagai suatu nama variabel atau identifier : VN = { C, T, F}, VT = (i, *, /, +, -, (, )}, S = E Dengan produksi : F → i T → T / F T → F E → E + T F → (E) E → T T → T * F E → E – T Berikan derifasi untuk ekspresi sebagai berikut : a. i + i, b. i – i / i, c. i * (i + i) d. i * i + i

TERIMA KASIH
- Slides: 18