Grammar Sintaks

14
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 Grammar Backus-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> ½ <T> + <E> ½ <T> - <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 : ::= , * , + , │, < , > , { , } , [ , ] Simbol Arti ::= 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 : <assignment <identifier> <expr> Page 1 of 14 =

description

teknik bahasa dan otomata

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