Anda di halaman 1dari 16

GRAMMAR

• bahasa pemrograman, merupakan suatu kumpulan aturan


(production) yang menentukan urutan-urutan karakter
• Sekumpulan dari himpunan variabel-variabel, simbol
terminal, simbol nonterminal, simbol awal yang dibatasi o/
aturan-aturan produksi.

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 | (atau) digunakan u/ alternatif terpisah.

C/ : aturan produksi : E ® T ½T + E ½T - E
T®a
Notasi BNF : E ::= <T> ½ <T> + <E> ½ <T> - <E>
T ::= a

EBNF GRAMMAR

Akronim dari Extended Backus-Naus Form


Merupakan : suatu metalanguage : bahasa yang digunakan
untuk mendeskripsikan bahasa lain.
Notasi Matematis, dgn symbol2nya 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
GRAMMAR /SINTAKS Page 1 of 16
nonterminal
{…} Elemen yang ada didalamnya merupakan
terminal

Terminal merupakan kata dari bahasa yang didefinisikan


(berarti sudah tidak bisa diturunkan lagi).
C/: 0, 1, 2, 3, 4…, 9 atau a, b, c,....z
Non Terminal msh mungkin diturunkan lg

Context Free Grammars digunakan untuk menggambarkan


sebagian besar struktur bahasa
Ekspresi Reguler digunakan untuk menggambarkan unit
leksikal (token)
Atribut Tata bahasa /Atribute Grammar digunakan untuk
menggambarkan konteks sensitif bagian dari bahasa.

Token/ huruf /karakter. Adalah symbol anggota dari


alfabet
c/ : S1 = {a, b, c, .., z} S2 = {a, b, d, g}

Alfabet pada basic terdiri dari :


26 huruf besar, 26 huruf kecil, 10 angka, dan symbol
khusus : ’(’, ’ )’, ’.’, ’+’ dsb

Kategori-kategori gramatikal adalah: S, NP, VP, A, N, V.


Kata-kata adalah :
a, the, cat, mouse, ball, boy, girl, ran, bounced, caught

Kategori yang paling umum adalah S, kalimat.


Contoh :
S = Sentence V = Verb O = Object A = Article

GRAMMAR /SINTAKS Page 2 of 16


C/ : The cat caught the mouse

dengan aturan Tata Bahasa / Grammar Adalah:

S → NP VP NP → N NP →A N
VP → V VP → V NP
V → ran | bounced | caught
A → a | the
N → cat | mouse | ball | boy | girl

dapat dihasilkan sebagai berikut:

S → NP VP
→ A N VP
→ the N VP
→ the cat VP
→ the cat V NP
→ the cat caught NP
→ the cat caught A N
→ the cat caught the N
→ the cat caught the mouse

Kadang-kadang derivasi adalah lebih mudah dibaca jika


ditampilkan dalam bentuk pohon derivasi.

NP VP

A N V NP

the cat caught A N

The mouse

GRAMMAR /SINTAKS Page 3 of 16


Aturan Produksi
dinyatakan dlm bentuk £ → β,

Simbol2 u/ ruas kiri simbol2 u/ ruas kanan

Simbol-simbol berupa :
- terminal
tidak bisa diturunkan lg, disimbolkan dgn huruf kecil
(a,b,c,..,etc)

- non terminal
diturunkan menjadi simbol-simbol lainnya, disimbolkan
dgn huruf besar (A,B,C,..,etc).

Contoh aturan produksi :


T → a, T menghasilkan a
E → T │T + E, E menghasilkan T atau
E menghasilkan T + E

CONTEXT FREE GRAMMAR

Grammar didefinisikan dgn 4 tupel : G = (VN, VT, S, Q)

Derivasi : proses pembentukan kalimat dlm grammar

CONTOH : G₃= ( {S,C}, {a,b}, S, Q ) dengan Q adalah


produksi :
S ® aCa
C ® aCa
C ® b

Derifasi untuk a³ba³ atau aaabaaa, adalah :


S ® aCa
® aaCaa
® aaaCaaa
® aaabaaa

GRAMMAR /SINTAKS Page 4 of 16


SOAL 1.

G=({<id>, <letter> ,<digit>}, { a,b,c,...z,0,1,2,...9}, <id>,Q)


Dengan aturan produksi
<id>::=<letter>│<id> <letter> │<id> <digit>
<letter> ::= a│b│c│...z
<digit> ::= 0│1│2│...9

Buat derivasi untuk kalimat b33. Dengan leftmost dan


rightmost dan buat tree nya.

SOAL 2.

Begin
A:=1 ;
B:=A+2
END

Dengan aturan produksi :

<program> → BEGIN <stat-list> END


<stat-list> → <stat>│ <stat > ; <stat-list>
<stat> → <var> := <expression>
<expression> → <term>│<term><op1><exp>
<term> →<factor> │<factor><op2><term>
<factor> → <var>│<constant>
<var> → A│B│…│Z
<op1> → +│-│=
<op2> → ^│*│/
<constant> → <real-number>│<integer-part>
<real-number> → <integer-part> <fraction>
<integer-part> → <digit>│<int-part> digit>
<fraction> → <digit>│<digit><fraction>
<digit> → 0│1│...│9

GRAMMAR /SINTAKS Page 5 of 16


C/ 3 : A := 2 + ( A * B + C)

Dengan aturan produksi :


<stat> → <var> := <expression>
<exp> → <term>│<term><opt> <exp> │<deli> <exp>
<deli>
<term> → <factor> │<factor> <opt> <term>
<factor> → <var>│<constant>
<var> → A│B│…│Z
<opt> → +│-│=│^│*│/
<deli> → ( │ )│<deli> <opt> <term>
<constant> → <real-number>│<integer-part>
<real-number> → <integer-part> <fraction>
<integer-part> → <digit>│<integer-part> <digit>
<fraction> → <digit>│<digit> <fraction>
<digit> → 0│1│...│9

GRAMMAR /SINTAKS Page 6 of 16


Sintax kalimat suatu bahasa

KALIMAT

SUBJEK PREDIKA
T
Objek
Kt-Kerja
Kt-keadaan Kt-
Kt-
Sandang Benda
Kt- Menendang Kt-
Benda Kecil Keadaan
Bola
Kucing Besar
Si

<kalimat>, <subjek>, <predikat>, <objek>, <kata sandang>,


<kata benda>, <kata keadaan>, <kata kerja> disebut : Kelas
Sintaks atau variable atau Nonterminal

Si, kucing, kecil, menendang, bola, besar disebut terminal


atau token.

Pada Pohon sintaks


Variable disajikan sebagai Simpul bukan daun (bentuk elips)
Terminal disajikan sebagai simpul daun (bentuk persegi
panjang)

Dari contoh diatas dapat dituliskan derivasinya :


<kalimat> → <subjek> <predikat>
<subjek> → <kata sandang> <kata benda> <kata keadaan>
< objek> → <kata benda> <kata keadaan>
<kata sandang> → Si
<kata benda> → kucing│bola
<kata keadaan> → kecil│besar
<kata kerja> → memandang
<predikat> → <kata kerja> <objek>

GRAMMAR /SINTAKS Page 7 of 16


BENTUK UMUM BACKUS-NAUR (BNF):
<identifier> ::= <letter> <identifier> <letter>│<identifier>
<digit> ::= 0│1│2│3│…│9
<letter> ::= a│b│c│…│y│z
<digit> ::= 0│1│2│…│8│9

PARSING

Parsing / Proses Penurunan dari sebuah kalimat adalah :


konstruksi atau pembentukan pohon sintaks untuk kalimat
tersebut.

Dapat dilakukan dengan 2 cara penurunan :


 Penurunan terkiri (leftmost derivation)
 Penurunan terkanan (rightmost derivation)
C/ : ingin dihasilkan string aabbaa
dari context free language, dengan aturan produksi :

S ® aAS ½ a
A ® SbA ½ ba

Penurunan kiri penurunan kanan

S ® aAS S ® aAS
® ®
® ®
® ®
® ®

PARSING digolongkan menjadi :


-TOP DOWN PARSING
• Penelusuran dari root ke leaf atau dari simbol awal ke
simbol terminal atau konstruksi pohon dimulai dr akar
dilanjutkan, turun ke bawah menuju daun

GRAMMAR /SINTAKS Page 8 of 16


PARSE TREE UNRECOGNIZED INPUT

S the cat caught the mouse

NP VP the cat caught the mouse

D N the cat caught the mouse

the cat caught the mouse


cat
caught the mouse

V NP
caught the mouse

caught the mouse


D N
the mouse

the mouse mouse

-BOTTOM UP PARSING
Penelusuran dari leaf ke root atau dari simbol terminal ke
simbol awal atau konstruksi dimulai dari daun, bergerak ke
atas menuju akar

PARSE TREE UNRECOGNIZED INPUT

the cat caught the mouse

D cat caught the mouse

cat cat caught the mouse

N caught the mouse

NP caught the mouse

caught the mouse

V the mouse

the mouse

D mouse
mouse

N
NP
VP
S

Back Up :
pengulangan suatu produksi dgn alternatif produksi yg lain,
bila produksi yg digunakan tidak sesuai dgn simbol input.

Metode meliputi : Backtrack / back up : Brute force


• Memilih produksi mulai dr yang kiri, kemudian Mengexpand
symbol non terminal sampai pd symbol terminal

GRAMMAR /SINTAKS Page 9 of 16


• Bila terjadi kesalahan (string tidak sesuai) mk dilakukan
backtrack
• Algoritma ini membuat pohon parsing secara top down,
yaitu dgn cara mencoba segala kemungkinan u/ setiap non
terminal.

C/: S ® aAb ½aB


A ® b½c u/ untai addc
B ® ccd½ddc

S S S S

a A b a A b a B a B

b c c c d d d c

(backtrack 1) (backtrack 2) (backtrack 3)

C/ : Pohon sintaks untuk identifier X2 (Top Down Parsing)

<identifier> <identifier> <identifier>

<identifier> <digit> <identifier> <digit>

<letter>
(a) (b) (c)

<identifier> <identifier><digit> <letter><digit>

<identifier> <identifier>

<identifier> <digit> <identifier> <digit>

<letter> <letter>

x x 2
(d) (e)
x <digit> x2
GRAMMAR /SINTAKS Page 10 of 16
C/ : Parsing x2 secara Bottom up

<identifier>

<letter> <letter>

x 2 x 2 x 2

(a) (b) (c)


X2 <letter> 2 <identifier> 2

Derivasi dari identifier x2 adalah :

<identifier> → <identifier> <digit>


→ <letter> <digit>
→ x <digit>
→ x 2

GRAMMAR /SINTAKS Page 11 of 16


SINTAKS

Sintaks dari bahasa pemrograman adalah menjelaskan


struktur program dan tata letak tampilan.

Sintaksis,
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 scanner.
Tugas-tugasnya :
mengidentifikasi semua token yang membangun suatu
bahasa
mentransformasikan ke token-token (simbol terminal
dari teori bahasa automata)
menentukan jenis dari token-token
menangani kesalahan, tabel simbol
di design untuk mengenali keyword, operator, identifier
 menganalisis dan mendekomposisi program sumber
menjadi bagian-bagian kecil.

Contoh : Besaran leksikal : (tergantung program)

 Identifier 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

GRAMMAR /SINTAKS Page 12 of 16


 Operator : operator aritmatika +, -, *, / dan
operator logika < = >

 Delimiter : pemisah atau pembatas. Spt ( ) , . : ; dan


white space yaitu pemisah yang diabaikan oleh
program, seperti : enter, spasi, ganti baris, dan
akhir file

Program sumber merupakan input dari penganalisa leksikal


atau scanner.

Tujuan Analisis leksikal :


untuk memisahkan naskah program sumber yang masuk
menjadi bagian terkecil/token seperti : konstanta, nama
variabel, reserved word, dan operator.

token hasil pekerjaan scanner biasanya disajikan dalam


bentuk bilangan. Penyajian internal berupa bilangan bulat
(integer) yang unik.

Contoh :
Nama variabel 1 Operator perkalian 8
Konstanta 2 Operator pembagian 9
Label 3 Tanda baca koma 10
Keyword 4 Tanda baca titik dua 11
Operator penambahan 5 Tanda baca titik koma 12
Operator penugasan 6 Dan lain-lain
Operator pengurangan 7

Token tersebut disimpan dalam suatu tabel Label


Nama variabel akan dimasukkan kedalam tabel identifier,
Konstanta dimasukkan ke tabel konstanta
Token yang tidak berkaitan dengan label (seperti operator)
maka lokasinya adalah 0 (nol).

Contoh 1 : fahrenheit := 32 + celcius * 1.8

GRAMMAR /SINTAKS Page 13 of 16


Maka akan diterjemahkan ke dalam token-token sebagai
berikut :

Fahrenheit ® Identifier1
:= ® Operator
32 ® Integer
®
+ Operator penjumlahan
®
Celcius ® Identifier2
* ® Operator perkalian
1.8 Real/float

Contoh 2 :
Statement : Jumlah : A = A + B
GOTO KERJA

Buatlah table untuk penyajian token :

Token Bil. Penyajian Lokasi keterangan


internal
Jumlah 3 1 Label
: 11 0 Delimiter
A 1 2 Identifier1
= 6 0 Assignment
A 1 2 Identifier1
+ 5 0 Op. Penjumlahan
B 1 3 Identifier2
GOTO 4 0 Reserved word
KERJA 1 4 Identifier3

Contoh :
Nama variabel/Id 1 Operator perkalian 8
Konstanta 2 Operator pembagian 9
Label 3 Tanda koma 10
Keyword/reserved 4 Tanda titik dua (deli) 11
word
Operator penambahan 5 Tanda titik koma 12
Operator 6 Dan lain-lain
GRAMMAR /SINTAKS Page 14 of 16
penugasan/assigment
Operator pengurangan 7

x=y+x
token besaran lokasi
x id1 1
= op 0
Y id2 2
+ op 0
X id1 1

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.

HIRARKI CHOMSKY

Unrestricted
C
Context Sensitive
Context Free
Regular

Keterangan :
o Tipe 0 / Unrestricted :
tidak ada batasan pada aturan produksi Abc ® De

o Tipe 1 / Context Sensitive :


panjang string ruas kiri harus < (lebih kecil) atau = (sama
dengan) ruas kanan
Ab ® DeF CD ® eF

GRAMMAR /SINTAKS Page 15 of 16


o Tipe 2 / Context Free :
ruas kiri haruslah tepat satu symbol variable, yaitu
symbol non terminal
B ® CDeFg D ® BcDe

o 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

GRAMMAR /SINTAKS Page 16 of 16

Anda mungkin juga menyukai