Grammar Sintaks
-
Upload
ferrylianto -
Category
Documents
-
view
72 -
download
2
description
Transcript of Grammar Sintaks
BAB II
GRAMMAR
Adalah : bahasa pemrograman, merupakan suatu kumpulan aturan (production) yang menentukan urutan-urutan karakter (lexical token).
Formal Grammar :
Grammar biasa yang ditentukan degan menggunakan notasi yang ketat.
2 kelas grammar yang berguna untuk teknologi compiler :
EBNF Grammar
Regular GrammarBackus-Naur Form (BNF ) :
adalah notasi untuk menggambarkan produksi dari tata bahasa bebas konteks. BNF menggunakan simbol < > :: = | Variabel diapit antara < dan >.
Simbol ( diganti dengan ::=
Simbol | digunakan untuk alternatif terpisah. Terminal yang diwakili oleh sendiri atau ditulis dalam tipe yang berbeda dari simbol dari BNF tersebut. C/ : aturan produksi : E ( T (T + E (T - E Notasi BNF : E ::= ( + ( -
T ( a
T ::= a
EBNF GRAMMAR
Akronim dari Extended Backus-Naus Form
Merupakan : suatu metalanguage : bahasa yang digunakan untuk mendeskripsikan bahasa lain.
Notasinya Matematis, dengan symbol-symbol yang disebut : metasymbol
Simbolnya adalah : ::= , * , + , , < , > , { , } , [ , ]SimbolArti
::=Didefinisikan sebagai
*Nol atau lebih permunculan elemen yang terdahulu
+Satu atau lebih permunculan elemen yang terdahulu
Pilihan (atau)
< >Elemen yang ada didalamnya merupakan nonterminal
{ }Elemen yang ada didalamnya merupakan terminal
Suatu bahasa yang dideskripsikan dalam EBNF merupakan suatu kumpulan aturan.
Nonterminal dlm konteks ini berarti entitas bahasa yang dapat didefinisikan dengan EBNF yang lain (berarti masih bias diturunkan lagi). C/: < digit >
Terminal merupakan kata dari bahasa yang didefinisikan (berarti sudah tidak bias diturunkan lagi). C/: 0, 1, 2, 3, 4, 9
Contoh nyata sebuah persamaan A = B + 1, yang dengan menggunakan EBNF grammar akan dianalisa menjadi :
NP VP
NP -> N
NP -> D NVP -> V
VP -> V NP
V -> ran | bounced | caught
D - > a| the
N -> cat | mouse | ball | boy | girl
Kategori yang paling umum adalah S, kalimat.
Contoh :
S = Sentence
V = Verb
O = Object
A = Article
Sp = subject phrase N = Noun Vp = verb phrase
Np = noun phrase.
S ( SpVP Sp( AN Vp ( VO O ( Np Np ( AN
Menggunakan tata bahasa kalimat The cat caught the mouse dapat dihasilkan sebagai berikut:
S ==> NP VP
==> D N VP
==> the N VP
==> the cat VP
==> the cat V NP
==> the cat caught NP
==> the cat caught D N
==> the cat caught the N
==> the cat caught the mouseKadang-kadang derivasi adalah lebih mudah dibaca jika ditampilkan dalam bentuk pohon derivasi.
S
NP VP
D N V NP
the cat caught D N
The mouse
Aturan Produksi
Aturan produksi dinyatakan dlm bentuk , menurunkan
simbol-simbol u/ ruas kiri, simbol-simbol u/ ruas kanan
Simbol-simbol bisa berupa terminal dan non terminal, dimana nonterminal bisa diturunkan menjadi simbol-simbol lainnya
Umumnya simbol terminal disimbolkan dengan huruf kecil (a,b,c,..,etc), simbol nonterminal disimbolkan dengan huruf besar kecil (A,B,C,..,etc).
Contoh aturan produksi :
T a, T menghasilkan a
E TT + E, E menghasilkan T atau E , menghasilkan T + E
CONTEXT FREE GRAMMAR
Sebuah grammar didefinisikan dengan 4 tupel : G = (VN, VT, S, Q) , dimana :
VN dan VT: himpunan symbol non terminal dan simbol terminal
S
: suatu elemen tertentu dari VN, yang disebut symbol Start
Q
: subhimpunan hingga yang tidak kurang dari relasi (VN U VT) * (VN U VT) atau
secara umum sebuah elemen ((, () dari Q ditulis sebagai ( ( ( dan disebut produksi
Context free grammar (CFG) sangat penting didalam penggambaran dan penterjmahan bahasa pemrogaman.
Derifasi : proses pembentukan kalimat dalam grammar
Contoh : L (G) = {Aba (n >=1}
Dimana G= ( {S,C}, {a,b}, S, Q ) dengan Q adalah produksi : S ( aCa C ( aCa C ( b
Derifasi untuk abaatau aaabaaa, adalah :S ( aCa
( aaCaa
( aaaCaaa
( aaabaaa
C/ : tata bahasa sederhana
BEGIN END
:=
ABZ
+-=
^*/
01...9
C/ : Begin
A:=1;
B:=A+2
END
Simbol terminal nama untuk kelas objek.
Sebuah perbedaan tambahan antara perbedaan sintaks appeThe konkret dan abstrak kunci dalam penggunaan tata bahasa konkret dan abstrak yang terbaik diilustrasikan dengan membandingkan derivasi dan pohon abstrak sintaks pohon untuk ekspresi id + (id * id). Pohon derivasi untuk tata bahasa beton hanya apa yang kita harapkan
E
E + E
id ( E )
E * E
id id
Oleh karena itu menusia berusaha menciptakan suatu bahasa yang dapat dimengerti baik oleh manusia maupun komputer, yang disebut dengan bahasa tingkat tinggi. Dari bahasa tingkat inggike 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 menterjemahkan ke dalam bahasa mesin harus dibuat suatu aturan agar komputer mengerti apa yang diinginkan oleh manusia melalui program yang dibuatnya.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 dgn 2 kumpulan aturan yaitu :1. aturan leksikal / lexical analysis (scanner)
Berhubungan dengan bahasa, sering disebut dengan scanner. Tugas-tugasnya adalah sebelum proses sintaks analyzer, dan intermediate code dilakukan , yaitu :
mengidentifikasi semua token yang membangun suatu bahasa
mentransformasikan ke token-token (simbol terminal dari teori bahasa automata)
menentukan jenis dari token-token
menangani kesalahan
menangani tabel simbol
scanner, di design untuk mengenali keyword, operator, identifier menganalisis dan mendekomposisi program sumber menjadi bagian-bagian kecil. menspesifikasikan kumpulan karakter yang terdapat dalam alphabet dari bahasa dan cara supaya karakter- karakter tersebut dikombinasikan ke dalam kata kata yang valid dan dapat diterima.Contoh :
Besaran leksikal : (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 : enter, spasi, ganti baris, dan akhir fileProgram sumber merupakan input dari penganalisa leksikal atau scanner. Analisis leksikal mempunyai tujuan untuk memisahkan naskah program sumber yang masuk menjadi bagian leksikografis terkecil atau token seperti : konstanta, nama variabel, reserved word, dan operator.
Scanner biasanya berinteraksi dengan parser melalui salah satu dari 2 cara berikut :
1. scanner dapat mengolah program sumber secara terpisah, sebagai satu fasa sebelum parser mulai bekerja, kemudian token disimpan dalam sebuah file atau dalam sebuah file besar.
2. melibatkan antara parser dan scanner yang saling berinteraksi, scanner dipanggil oleh parser bila token berikut dalam program sumber diperlukan
token hasil pekerjaan scanner biasanya disajikan dalam bentuk bilangan. Penyajian internal berupa bilangan bulat (integer) yang unik.
Contoh :
Nama variabel1Operator perkalian8
Konstanta2Operator pembagian9
Label3Tanda baca koma10
Keyword4Tanda baca titik dua11
Operator penambahan5Tanda baca titik koma12
Operator penugasan6Dan lain-lain
Operator pengurangan7
Token tersebut disimpan dalam suatu tabel label serta nama variabel akan dimasukkan kedaam tabel identifier, sedangkan konstanta dimasukkan ke tabel konstanta dan suatu token yang tidak berkaitan dengan label (seperti operator) maka lokasinya adalah 0 (nol).
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( *
Real/float( 1.8
Statement : Jumlah A = A + B
GOTO KERJA
Buatlah table untuk penyajian token :
TokenBil. Penyajian internalLokasiketerangan
Jumlah31Label
:110Delimiter
A12Identifier
=60Assignment
A12Identifier
+50Opr. Penjumlahan
B13Identifier
GOTO40Reserved word
KERJA14Identifier
2. aturan sintaksis / syntactic analyzer (parser)berfungsi menyediakan bentuk-bentuk notasi untuk komunikasi antara programmer dan pemroses bahasa pemrograman sehingga dapat mempermudah pembuatan suatu program.
Suatu bahasa pemrograman juga dibangun berdasarkan elemen-elemen syntactic, yang dapat membentuk suatu statement-statement dalam bahasa pemrograman.
Bertugas memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh lexical analysis Pengelompokkan token-token ke dalam classs syntax, seperti : procedure, statement, expression Grammar dipakai oleh syntax analyzer untuk menentukan struktur dari program sumber. Proses pendeteksiannya (pengenalan token) disebut dengan Parsing, maka syntax analyzer disebut Parser. Pohon sintax yang dihasilkan digunakan untuk semantics anlyzer yang bertugas untuk menentukan maksud dari program sumber. Misal operator penjumlahan maka semantics analyzer mengambil aksi apa yang dilakukan.
c/ : pada pascal tidak memperhatikan huruf besar dan kecil, pada bahasa C dan ADA memperhatikan dan membedakan hal tsb
Konsep dan Notasi Bahasa
Alfabet : himpunan hingga yang tidak kosong (hampa) dari symbol.
Symbol anggota dari alfabet dinamakan huruf atau karakter atau Token.c/ : (1 = {a, b, c, .., z}(2 = {(, (, (, (} alfabet pada basic : 26 huruf besar, 26 huruf kecil, 10 angka, dan symbol khusus : (, ), . , + dsb
Tata bahasa/Grammar : sekumpulandari himpunan variabel-variabel, symbol-symbol terminal, symbol non
terminal, symbol awal yangg dibatasi oleh aturan-aturan produksi. Tahun 1956-1959 Noam Chomsky melakukan penggolongan tingkatan dalam bahasa, yaitu menjadi 4 class yang disebut Hirarki Chomsky.
Tahun 1959 Backus memperkenalkan notasi formal baru untuk sintaks bahasa yang lebih spesifik.
Peter Naur (1960) merevisi metode dari sintaks, yang sekarang dikenal dengan BNF (Backus Naur Form) Contoh :
S = Sentence, V = Verb, O = Object, A = Article, Sp = subject phrase, N = Noun,
Vp = verb phrase, Np = noun phrase.
S ( SpVPVp ( VONp ( ANSp( AN
O ( Np
Kalimat : The cat ate the mouse Sentence
Subject phrase
Verb phrase
Article Noun
Verb
Object
The cat
ate Noun phrase
Article Noun
a
mouseHIRARKI CHOMSKY
Keterangan : 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 : ruas kiri haruslah tepat satu symbol variable, yaitu symbol 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 ( efgHC ( DFase-fase proses kompilasi adalah sebagai berikut :
Program Sumber
Bahasa sasaran
Unrestricted
C
Context Sensitive
Context Free
Regular
Penganalisa leksikal (scanner)
Penganalisa sintaks (parser)
Penganalisa semantik
Pembangkit kode antara
Pengoptimal kode
Pembangkit kode
Pengelola table
simbol
Penanganan kesalahan
=
+
A
1
B
KALIMAT
Besar
Objek
Kucing
Si
Menendang
Kecil
Kt-Keadaan
Kt-Benda
Kt-Kerja
Kt-keadaan
Kt-Benda
Kt-Sandang
SUBJEK
PREDIKAT
Bola
::=
::= abcyz
::= 01289
Page 10 of 10