Bab II Sintaksis - Bab II SINTAKSIS

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



Bahasa : merupakan himpunan hingga ataupun tak hingga dari kalimat
atau kumpulan kalimat.

1



Tata Bahasa atau Grammar : sekumpulan dari himpunan variabelvariabel, symbol-symbol terminal, symbol non terminal, symbol awal
yang dibatasi oleh aturan-aturan produksi.



Tahun 1956 – 1959 Noam Chomsky melakukan penggolongan tingkatan

dalam bahasa, yaitu menjadi 4 class yang disebut dengan hirarki
Chomsky.



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, v = verb, o = object, A = article, s = subject phrase, N =
noun, vp = verb phrase, Np = noun phrase
S → SpVp
Sp → AN

Vp → Vo
o → Np

Np → AN

Kalimat : The cat ate a mouse
Sentence
Subject phrase

Verb phrase

Article


Noun

Verb

Object

The

cat

ate

Noun phrase
Article

Noun

A

mouse


Contoh tata bahasa sederhana :














BEGIN END
│ ;
:=















A│ B │..│Z
+│ - │=
^│ * │/


2















0 │ 1 │ .. │ 9

Contoh :
Begin
A := 1;
B := A + 2
End.

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 α → β, α menghasilkan atau
menurunkan β
α symbol-symbol untuk ruas kiri, β symbol-symbol untuk ruas kanan
Symbol-symbol dapat berupa terminal dan non terminal dimana non

terminal dapat diturunkan menjadi symbol yang lainnya

3




Umumnya symbol terminal disymbolkan dengan huruf kecil (a,b,c,
dsb), sedangkan untuk symbol non terminal disymbolkan dengan huruf
besar (A,B,C, dsb)
Contoh aturan produksi :
T → a, T menghasilkan a
E → T │ T + E, E menghasilkan T atau E menghasilkan T + E

Sebuah grammar didefinisikan dengan 4 tupel :
G = (VN, VT, S, Q) dimana
VT dan VN : himpunan symbol terminal dan symbol
S : suatu elemen tertentu dari VN, yang disebut
Q : subhimpunan hingga yang tidak kurang dari
secara umum sebuah elemen (α, β) dari Q ditulis
produksi.

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.
Context Free Grammar (CFG) sangat
penterjemahan bahasa pemrograman.

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,C}, {a,b}, S, Q), dengan Q adalah produksi
S → aCa
C → aCa
C → b
Derifasi untuk a3ba3 atau aaabaaa, 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

Contoh :
Aturan Produksi sebagai berikut :
Notasi BNF

:

E → T │ T + E │ T – E
T → a

E ::= │ + │ -
T ::= a

4

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

Penanganan
Kesalahan
Pembangkit Kode
antara

Pengoptimal Kode

Pembangkit Kode

Bahasa Sasaran
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 bagianbagian kecil.
Tugas-tugas Aturan Lexical atau Lexical Analysis secara detil adalah :
a. mengidentifikasi semua besaran yang membangun suatu bahasa
b. mentransformasikan ke token-token (symbol terminal dari teori bahasa
automata)
c. menentukan jenis dari token-token
d. menangani kesalahan
e. menangani tabel symbol
f. scanner di desain untuk mengenali keyword, operator, identifier
contoh :

5

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 dua, titik koma, white_space
White_space : pemisah yang diabaikan oleh program, seperti : enter,
spasi, ganti baris dan akhir file

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. Yang pertama, 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. Cara kedua
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 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, sedangkan konstanta dimasukkan ke
tabel konstanta dan suatu token yang tidak berkaitan dengan label
(seperti operator) maka lokasinya adalah 0 (nol).
Lexical Analysis, contoh :
Statement : Fahrenheit := 32 + celcius * 1.8
Maka akan diterjemahkan ke dalam token-token sebagai berikut :
Identifier
Operator
Integer
Operator penjumlahan
Identifier
Operator perkalian
Real / float









Fahrenheit
:=
32
+
celcius
*
1.8

6

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),
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
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.

konstruksi

atau

pembentukan

pohon

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 → aAS │ a
A → SbA │ ba

Penurunan kiri

Penurunan kanan

S

S

→ aAS

→ aAS

7






aSbAS
aabAS
aabbaS
aabbaa






aAa
aSbAa
aSbbaa
aabbaa

Metode Parsing
Pada metode parsing ada tiga hal yang perlu diperhatikan, yaitu :
1. waktu eksekusi
2. penanganan kesalahan
3. penanganan kode
Parsing digolongkan menjadi :
a. Top Down
Penelusuran dari root ke leaf atau dari symbol awal ke symbol
terminal
Metode ini meliputi :
1. 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, bila produksi yang digunakan tidak sesuai dengan symbol
input.
Contoh :
Grammar :

1.
2.
3.
4.
5.
6.

S
S
A
A
B
B








aAd
aB
b
c
ccd
ddc

S, A dan B adalah symbol non terminal dengan S adalah symbol start.
Sementara itu a, b, c dan d adalah symbol terminal
Latihan :
Membentuk pohon sintaks bagi untai accd dengan menggunakan metode Brute
Force.
S
S
S
tidak sesuai dengan untai
accd, maka diperlukan
Back Up untuk pilihan

8

a
(a)

A

d

a

A

d

produksi A yang lain

(b)
b
(c)

S
a

A

S
d

a

A

Sama seperti diatas hanya
Back Up untuk pilihan
produksi S karena
produksi A sudah tidak
ada pilihan

d

(d)
c
(e)
S
a

S
B

a

B

(f)
c

c

d

(g)
Namun teknik Parsing Top Down tidak selalu dapat bekerja pada setiap CFG.
Misalnya pada CFG yang mengandung variabel bersifat rekursif kiri
(mengandung minimal satu non terminal rekursif kiri), maka akan terjadi
loop yang tak hingga. Untuk menanganinya maka CFG tersebut harus
dihilangkan terlebih dahulu rekursif kirinya. (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
 Tidak pernah mengambil token secara mundur (back tracking)
 Beda dengan turing yang selalu maju dan mundur dalam melakukan
parsing
Parsing Bottom Up

9

Teknik Bottom Up adalah dengan memulai pada daun dan bergerak ke atas
menuju akar dimulai dengan diberikannya sebuah untai, kemudian kita
mencoba untuk mencapai symbol start Grammar.
Latihan 1 :
Diberikan sebuah grammar yang menyajikan operasi aritmatika sederhana
meliputi penambahan(+), pengurangan(-), perkalian(*), dan pembagian (/)
Symbol diartikan sebagai suatu nama variabel atau identifier :
VN = { C, T, F}, VT = (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, i – i / i, i * (i + i), 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, semantik salah

10

Dokumen yang terkait

EVALUASI TARIF ANGKUTAN ANTAR KOTA TRAYEK TERMINAL LEMPAKE / SAMARINDA - TERMINAL SANGATTA BERDASARKAN BIAYA OPERASIONAL KENDARAAN

4 108 15

STUDI PENGGUNAAN KOMBINASI FUROSEMID - SPIRONOLAKTON PADA PASIEN GAGAL JANTUNG (Penelitian di Rumah Sakit Umum Dr. Saiful Anwar Malang)

15 131 27

Pola Mikroba Penyebab Diare pada Balita (1 bulan - 5 tahun) dan Perbedaan Tingkat Kesembuhan Di RSU.Dr.Saiful Anwar Malang (Periode Januari - Desember 2007)

0 76 21

KONSTRUKSI BERITA MENJELANG PEMILU PRESIDEN TAHUN 2009 (Analisis Framing Pada Headline Koran Kompas Edisi 2 juni - 6 juli 2009)

1 104 3

IMPLEMENTASI MODEL COOPERATIVE LEARNING TIPE STAD (STUDENT TEAMS ACHIEVEMENT DIVISION) UNTUK MENINGKATKAN HASIL BELAJAR SISWA PADA POKOK BAHASAN MENGENAL UNSUR BANGUN DATAR KELAS II SDN LANGKAP 01 BANGSALSARI

1 60 18

Improving the VIII-B Students' listening comprehension ability through note taking and partial dictation techniques at SMPN 3 Jember in the 2006/2007 Academic Year -

0 63 87

Peningkatan keterampilan menyimak melalui penerapan metode bercerita pada siswa kelas II SDN Pamulang Permai Tangerang Selatan Tahun Pelajaran 2013/2014

20 223 100

Kerjasama Kemanan Antara Autralia - Indonesia Dalam Mengataasi Masalah Terorisme Melalui Jakarta Centre For Law Enforcement Cooperation (JCLEC)

1 25 5

TINJAUAN TENTANG ALASAN PERUBAHAN KEBIASAAN NYIRIH MENJADI MEROKOK DI KALANGAN IBU-IBU DI DUSUN TRIMO HARJO II KELURAHAN BUMI HARJO KECAMATAN BUAY BAHUGA KABUPATEN WAY KANAN

3 73 70

TEKNIK REAKSI KIMIA II

0 26 55