P. 1
SINTAKSIS

SINTAKSIS

|Views: 24|Likes:
Published by Abeezar Ahmed
Sintaks untuk belajar algoritma
Sintaks untuk belajar algoritma

More info:

Categories:Types, Reviews
Published by: Abeezar Ahmed on May 10, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

12/21/2013

pdf

text

original

Bab II Sintaksis

Bahasa mesin adalah bentuk terendah pada komputer. Kita dapat berhubungan langsung dengan bagian-bagian yang ada didalam komputer seperti bit, register dan sangat primitif. Bahasa mesin tidak lebih dari urutan bitbit 0 dan 1. Bagaimana dengan orang yang tidak mengerti bahasa mesin? Bahasa mesin adalah jenis mesin komputer yang digunakan. Bagaimana jika jenis komputer mengalami perubahan? Oleh karena itu manusia berusaha menciptakan suatu bahasa yang dapat dimengerti baik oleh manusia maupun oleh komputer, yang disebut dengan bahasa tingkat tinggi. Dari bahasa tingkat tinggi ke bahasa mesin dibutuhkan sesuatu untuk menterjemahkan agar mesin (komputer) mengerti apa yang diinginkan oleh manusia, yaitu : 1. Interpreter 2. Compiler Contoh : Cobol, Pascal, Fortran, dll Untuk membuat penterjemah seperti compiler perlu dibuat standar atau tata bahasa atau aturan, seperti manusia berkomunikasi mempunyai tata bahasa agar lawan bicara dapat mengerti yang dibicarakan. Demikian juga untuk menterjemahkan kedalam bahasa mesin (komputer) harus dibuat suatu aturan agar komputer mengerti apa yang diinginkan oleh manusia melalui program yang dibuatnya. 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) Aturan Sintaksis / Syntax Analyzer (Parser)

Konsep dan Notasi Bahasa • Alfabet : himpunan hingga yang tidak kosong (hampa) dari symbol. Symbol anggota dari alfabet dinamakan huruf atau karakter atau token. Contoh : ∑1 = {a, b, c, .., z} ∑2 = {α, β, γ, δ} Contoh alfabet pada Basic : 26 huruf besar, 26 huruf kecil, 10 angka, dan symbol khusus seperti : ‘(‘, ‘)’, ‘.’, ‘+’ dsb

1

Tata Bahasa atau Grammar : sekumpulan dari himpunan variabelvariabel. symbol awal yang dibatasi oleh aturan-aturan produksi. Tahun 1959 Backus memperkenalkan notasi formal baru untuk sintaks bahasa yang lebih spesifik Peter Naur (1960) merevisi metode dikenal dengan BNF(Backus Nour Form) dari sintaks yang sekarang • • • Contoh : S = sentence. s = subject phrase.│= Noun mouse 2 . symbol-symbol terminal. v = verb. A = article.. o = object.• • Bahasa : merupakan himpunan hingga ataupun tak hingga dari kalimat atau kumpulan kalimat. <stat_list> <var> :=<expression> <term> │ <term><op1><expression> <factor> │<factor><op2><term> <var> │ <constant> A│ B │. Tahun 1956 – 1959 Noam Chomsky melakukan penggolongan tingkatan dalam bahasa. vp = verb phrase. N = noun.│Z +│ . Np = noun phrase S → SpVp Sp → AN Vp → Vo o → Np Np → AN Kalimat : The cat ate a mouse Sentence Subject phrase Article The Noun cat Verb ate Verb phrase Object Noun phrase Article A Contoh tata bahasa sederhana : <program> <Stat_list> <stat> <expression> <term> <factor> <var> <op1> → → → → → → → → BEGIN <stat_list> END <stat>│ <stat>. yaitu menjadi 4 class yang disebut dengan hirarki Chomsky. symbol non terminal.

Hirarki Chomsky Unrestricted Context Sensitive Context Free Regular 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 → DeF CD → eF Tipe 2 / Context Free Grammar : ruas kiri haruslah tepat satu symbol variabel. yaitu simbol non terminal B → CDeFg D → BcDe Tipe 3 / Regular : ruas kanan hanya memiliki maksimal satu symbol non terminal dan diletakkan paling kanan sendiri A → e A → efg A → efgH C → D • • Aturan Produksi • • Aturan produksi dnyatakan dalam bentuk α → β. B := A + 2 End.<op2> <constant> <real_number> <integer_part> <fraction> <digit> Contoh : Begin → → → → → → ^│ * │/ <real_number> │ <integer_part> <integer_part> │ <fraction> <digit> │ <integer_part> <digit> <digit> │ <digit> <fraction> 0 │ 1 │ .. β symbol-symbol untuk ruas kanan 3 . │ 9 A := 1. α menghasilkan atau menurunkan β α symbol-symbol untuk ruas kiri.

dengan Q adalah produksi S → aCa C → aCa C → b Derifasi untuk a3ba3 atau aaabaaa. penting didalam penggambaran dan Derifasi : proses pembentukan kalimat di grammar Grammar Context Free merupakan pembentuk bahasa Context Free Contoh : L (G3) = {Anban │ n > = 1} Dimana : G3 = ({S. non terminal symbol start relasi(VTυVN)*(VTυVN)* atau sebagai α → β dan disebut Dari 4 tingkatan bahasa maka kita akan membahas tentang Context Free Grammar.b. β) dari Q ditulis produksi. S. yang disebut Q : subhimpunan hingga yang tidak kurang dari secara umum sebuah elemen (α. dsb) Contoh aturan produksi : T → a.b}. Q). E menghasilkan T atau E menghasilkan T + E Sebuah grammar didefinisikan dengan 4 tupel : G = (VN. S. VT. sedangkan untuk symbol non terminal disymbolkan dengan huruf besar (A.C.• • • 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. adalah : S → aCa → aaCaa → aaaCaaa → aaabaaa Notasi BNF (Backus – Nour Form) Aturan produksi dapat dinyatakan dengan notasi BNF BNF menggunakan abstraksi untuk struktur sintaks ::= │ < > { } identik dengan symbol → sama dengan atau pengapit symbol non terminal pengulangan dari 0 sampai n kali E → T │ T + E │ T – E T → a Contoh : Aturan Produksi sebagai berikut : 4 . {a. dsb). T menghasilkan a E → T │ T + E. Q) dimana VT dan VN : himpunan symbol terminal dan symbol S : suatu elemen tertentu dari VN.B.C}.c. Context Free Grammar (CFG) sangat penterjemahan bahasa pemrograman.

menangani kesalahan e. identifier 5 . menangani tabel symbol f. mentransformasikan ke token-token (symbol terminal dari teori bahasa automata) c. Tugas-tugas Aturan Lexical atau Lexical Analysis secara detil adalah : a.Notasi BNF : E ::= <T> │ <T> + <E> │ <T> . scanner di desain untuk mengenali keyword. menentukan jenis dari token-token d. mengidentifikasi semua besaran yang membangun suatu bahasa b. bertugas sebelum proses syntax Analyzer dan Intermediate Code dilakukan dimana tugas Lexical Analysis ini mendekomposisi program sumber menjadi bagianbagian kecil. sering disebut dengan scanner. operator.<E> T ::= a Tanda untuk non terminal (<>) yang ruas kiri bersifat optional Fase-fase proses kompilasi adalah sebagai berikut : Program Sumber Penganalisa Leksikal (Scanner) Penganalisa Sintaks (Parser) Penganalisa Semantik Pengelola tabel simbol Pembangkit Kode antara Penanganan Kesalahan Pengoptimal Kode Pembangkit Kode Bahasa Sasaran Aturan Lexical atau Lexical Analysis (Scanner) Berhubungan dengan bahasa.

sedangkan konstanta dimasukkan ke tabel konstanta dan suatu token yang tidak berkaitan dengan label (seperti operator) maka lokasinya adalah 0 (nol). spasi. titik koma.8 Maka akan diterjemahkan ke dalam token-token sebagai berikut : Identifier Operator Integer Operator penjumlahan Identifier → → → → → Fahrenheit := 32 + celcius 6 . kurung tutup. *. Lexical Analysis. int float (pada C) Konstanta : besaran yang berupa bilangan bulat (integer). titik dua. reserved word dan operator. seperti kurung buka. seperti : enter. titik. dll Operator : operator aritmatika (+. -. end (pada Pascal) . bilangan pecahan(float / real). Kemudian token disimpan dalam sebuah file atau dalam sebuah file besar. /). else. nama varibel. string.contoh : Besaran Lexical : (tergantung program) • • • • • Identifier dapat berupa keyword seperti if. contoh : Statement : Fahrenheit := 32 + celcius * 1. Token hasil pekerjaan scanner biasanya disajikan dalam bentuk Bilangan Penyajian internal berupa bilangan bulat (integer) yang unik. Contoh : Nama variabel Konstanta Label Keyword Operator penambahan Operator penugasan Operator pengurangan 1 2 3 4 5 6 7 operator perkalian operator pembagian tanda baca koma tanda baca titik dua tanda baca titik koma dan lain-lain 8 9 10 11 12 Token tersebut disimpan dalam suatu tabel label serta nama variabel akan dimasukkan kedalam tabel identifier. white_space White_space : pemisah yang diabaikan oleh program. Cara kedua melibatkan antara Parser dan Scanner yang saling berinteraksi. Analisis leksikal mempunyai tujuan untuk memisahkan naskah program sumber yang masuk menjadi bagian leksikografis terkecil atau Token seperti konstanta. Yang pertama. ganti baris dan akhir file Program sumber merupakan input dari penganalis leksikal ala scanner. integer (Pascal). Boolean (true/false). operator logika(< = >) Delimiter : berguna bagi pemisah atau pembatas. scanner dipanggil oleh parser bila token berikut dalam program sumber diperlukan. Scanner biasanya berinteraksi dengan parser melalui salah satu dari 2 cara berikut. koma. sebagai satu fasa sebelum Parser mulai bekerja. scanner dapat mengolah program sumber secara terpisah. begin ..

Operator perkalian Real / float → * → 1. 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 konstruksi atau pembentukan pohon Contoh : ingin dihasilkan string aabbaa dari Context free language : S → aAS │ a A → SbA │ ba 7 . seperti prosedur.8 Statement : Jumlah A = A + B GOTO KERJA Buatlah tabel untuk penyajian Token : Token Jumlah : A = A + B GOTO KERJA Bilangan Penyajian Internal 3 11 1 6 1 5 1 4 1 Lokasi Keterangan 1 Label 0 Delimiter 2 Identifier 0 Assignment 2 Identifier 0 Operator Penjumlahan 3 Identifier 0 Reserved word 4 Identifier Syntax Analyzer (Parser) • • • • • Bertugas memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh Lexical Analysis Pengelompokan token-token kedalam class syntax (bentuk sintaks). 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 Pohon sintaks yang dihasikan digunakan untuk semantic analyzer yang bertugas untuk menentukan maksud dari program sumber. misalnya operator penjumlahan maka semantic analyzer akan mengambil aksi apa yang harus dilakukan Parsing atau Proses Penurunan Parsing dari sebuah kalimat adalah sintaks untuk kalimat tersebut.

bila produksi yang digunakan tidak sesuai dengan symbol input. Backtrack / back up : Brute Force • • • Memilih produksi mulai dari kiri Meng-expand 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. Sementara itu a. Contoh : Grammar : 1. penanganan kesalahan 3. 3. 2. 4. b. penanganan kode Parsing digolongkan menjadi : a. 6.Penurunan kiri S → → → → → aAS aSbAS aabAS aabbaS aabbaa Penurunan kanan S → → → → → aAS aAa aSbAa aSbbaa aabbaa Metode Parsing Pada metode parsing ada tiga hal yang perlu diperhatikan. yaitu : 1. S S A A B B → → → → → → aAd aB b c ccd ddc S. waktu eksekusi 2. c dan d adalah symbol terminal Latihan : 8 . Top Down Penelusuran dari root ke leaf atau dari symbol awal ke symbol terminal Metode ini meliputi : 1. A dan B adalah symbol non terminal dengan S adalah symbol start. 5.

maka diperlukan Back Up untuk pilihan a A d a A d produksi A yang lain (a) (b) b (c) S d a A c (e) S a (f) B a c S B c (g) Namun teknik Parsing Top Down tidak selalu dapat bekerja pada setiap CFG. (tidak dibahas) Contoh rekursif : S → Sab │ Sbd S → aAc A → Ab │ ∑ Parsing : Recursive Descent Parser Parsing dengan Recursive Descent Parser • Salah satu cara untuk mengaplikasikan bahasa context free • Symbol terminal maupun symbol variabelnya sudah bukan sebuah karakter • Besaran leksikal sebagai symbol terminalnya. besaran syntax sebagai symbol variabelnya / non terminalnya • Dengan cara penurunan secara rekursif untuk semua variabel dari awal sampai ketemu terminal d d Sama seperti diatas hanya Back Up untuk pilihan produksi S karena produksi A sudah tidak ada pilihan S a A (d) 9 . maka akan terjadi loop yang tak hingga. S S S tidak sesuai dengan untai accd.Membentuk pohon sintaks bagi untai accd dengan menggunakan metode Brute Force. Misalnya pada CFG yang mengandung variabel bersifat rekursif kiri (mengandung minimal satu non terminal rekursif kiri). Untuk menanganinya maka CFG tersebut harus dihilangkan terlebih dahulu rekursif kirinya.

i * (i + i). S = E Dengan produksi : F → i F → (E) T → T / F E → T T → T → F T * F E → E → E + T E – T Berikan derifasi untuk ekspresi sebagai berikut : i + i.• • Tidak pernah mengambil token secara mundur (back tracking) Beda dengan turing yang selalu maju dan mundur dalam melakukan parsing Parsing Bottom Up Teknik Bottom Up adalah dengan memulai pada daun dan bergerak ke atas menuju akar dimulai dengan diberikannya sebuah untai. *. Latihan 1 : Diberikan sebuah grammar yang menyajikan operasi aritmatika sederhana meliputi penambahan(+). kemudian kita mencoba untuk mencapai symbol start Grammar. perkalian(*). i – i / i. (. pengurangan(-).)}. i * i + i Latihan 2 : Buatlah pohon sintaks dari kalimat : • A monkey climbs a tree → gramatikal dan semantik benar • The banana ate a cat → gramatikal benar. -. T. dan pembagian (/) Symbol diartikan sebagai suatu nama variabel atau identifier : VN = { C. semantik salah 10 . VT = (i. /. +. F}.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->