SINTAKSIS Algoritma Pemrograman 1 C Bahasa Mesin Bentuk
SINTAKSIS Algoritma & Pemrograman 1 C
Bahasa Mesin Bentuk terendah pada komputer Berhubungan langsung dengan bagian – bagian yang ada di dalam komputer seperti bit, register, dan sangat primitif Berbentuk urutan bit-bit 0 dan 1
Penterjemah Compiler Interpreter
Sintaks Kumpulan aturan yang mendefinisikan suatu bentuk bahasa 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) Aturan sintaksis/ syntax analyzer (parser)
Konsep dan Notasi Bahasa Alfabet: Himpunan hingga yang tidak kosong (hampa) dari simbol. Simbol anggota dari alfabet dinamakan huruf atau karakter atau token. Contoh ∑ 1 = {a, b, c, . . , z} ∑ 2 = {α, β, γ, δ} Alfabet pada basic : 26 huruf besar, 26 huruf kecil, 10 angka, dan simbol khusus seperti : ‘(‘, ‘)’, ‘+’, dll Bahasa : Himpunan hinga ataupun tak hingga dari kalimat atau kumpulan kalimat Tata bahasa atau grammar: Sekumpulan dari
Konsep dan Notasi Bahasa Contoh : S = sentence, v = verb, o = object, A = article, s = subject phrase, N = noun, vp = verb phrase, Np = noun phrase S → Sp. Vp Vp → Vo Sp → AN o → Np Np → AN Kalimat : The cat ate a mouse
Hirarki 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
Aturan Produksi Aturan produksi dinyatakan dalam bentuk α → β, α menghasilkan atau menurunkan β α symbol-symbol untuk ruas kiri, β symbol untuk ruas kanan Symbol-symbol dapat berupa terminal dan non terminal dimana non terminal dapat diturunkan menjadi symbol yang lainnya Umumnya symbol terminal disimbolkan dengan huruf kecil (a, b, c, dsb), sedangkan untuk symbol non terminal disimbolkan dengan huruf besar (A, B, C, dsb)
4 Tupel Grammar 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
Context Free Grammar (CFG) Contect Free Grammar (CFG) sangat penting di dalam penggambaran dan penterjemahan bahasa pemrograman. Derifasi : proses pembentukan kalimat di grammar Grammar Context Free merupakan pembentuk bahasa Context Free Contoh : L (G 3) = {A ba │ n > = 1} n n Dimana : G 3 = ({S, C}, {a, b}, S, Q), dengan Q adalah produksi S → a. Ca
Backus – Nour Form (BNF) Aturan produksi dapat dinyatakan dengan notasi BNF menggunakan abstraksi untuk struktur sintaks : : = identik dengan symbol → │ sama dengan atau <> pengapit symbol non terminal { } pengulangan dari 0 sampai n kali Contoh :
Fase Proses Kompilasi
Aturan Lexical atau Lexical Analysis (Scanner) Berhubungan dengan bahasa, sering disebut dengan scanner, bertugas sebelum proses syntax Analyzer dan Intermediate Code dilakukan dimana tugas Lexical Analysis ini mendekomposisi program sumber menjadi bagian-bagian kecil. Tugas-tugas Aturan Lexical atau Lexical Analysis secara detil adalah : mengidentifikasi semua besaran yang membangun suatu bahasa mentransformasikan ke token-token (symbol terminal dari teori bahasa automata)
Aturan Lexical atau Lexical Analysis (Scanner) Contoh: 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
Aturan Lexical atau Lexical Analysis (Scanner) Program sumber merupakan input dari penganalis leksikal ala scanner. Analisis leksikal mempunyai tujuan untuk memisahkan naskah program sumber yang masuk menjadi bagian leksikografis terkecil atau Token seperti konstanta, nama varibel, reserved word dan operator. Scanner biasanya berinteraksi dengan parser melalui salah satu dari 2 cara berikut. scanner dapat mengolah program sumber secara terpisah, sebagai satu fasa sebelum Parser mulai bekerja. Kemudian token disimpan dalam sebuah
Aturan Lexical atau Lexical Analysis (Scanner) Token hasil pekerjaan scanner biasanya disajikan dalam bentuk Bilangan Penyajian internal berupa bilangan bulat (integer) yang unik. Contoh : Nama variabel perkalian 8 1 operator Konstanta 2 pembagian 9 operator Label koma tanda baca 3 10
Contoh Lexical Analysis 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 → *
Syntax Analyzer (Parser) Bertugas memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh Lexical Analysis Pengelompokan token-token kedalam class syntax (bentuk sintaks), seperti prosedur, statement dan expression Grammar dipakai oleh syntax analyzer untuk menentukan struktur dari program sumber Proses pendeteksian (pengenalan token) disebut dengan parsing, maka syntax analyzer sering disebut dengan parser
Parsing atau 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
Metode Parsing Pada metode parsing ada tiga hal yang perlu diperhatikan, yaitu : waktu eksekusi penanganan kesalahan penanganan kode
- Slides: 20