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 bit-
bit 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
1
Bahasa : merupakan himpunan hingga ataupun tak hingga dari kalimat
atau kumpulan kalimat.
Tata Bahasa atau Grammar : sekumpulan dari himpunan variabel-
variabel, symbol-symbol terminal, symbol non terminal, symbol awal
yang dibatasi oleh aturan-aturan produksi.
Contoh :
S → SpVp Vp → Vo Np → AN
Sp → AN o → Np
Sentence
Article Noun
A mouse
<var> → A│ B │..│Z
<op1> → +│ - │=
2
<op2> → ^│ * │/
<constant> → <real_number> │ <integer_part>
<real_number> → <integer_part> │ <fraction>
<integer_part> → <digit> │ <integer_part> <digit>
<fraction> → <digit> │ <digit> <fraction>
<digit> → 0 │ 1 │ .. │ 9
Contoh :
Begin
A := 1;
B := A + 2
End.
Hirarki Chomsky
Keterangan Gambar :
Aturan Produksi
3
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,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
Dari 4 tingkatan bahasa maka kita akan membahas tentang Context Free
Grammar.
Contoh :
Aturan Produksi sebagai berikut : E → T │ T + E │ T – E
T → a
4
Notasi BNF : E ::= <T> │ <T> + <E> │ <T> - <E>
T ::= a
Tanda untuk non terminal (<>) yang ruas kiri bersifat optional
Program Sumber
Penganalisa Leksikal
(Scanner)
Penganalisa Sintaks
(Parser)
Penganalisa Semantik
Pengelola tabel Penanganan
simbol Kesalahan
Pembangkit Kode
antara
Pengoptimal Kode
Pembangkit Kode
Bahasa Sasaran
5
contoh :
Contoh :
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).
Identifier → Fahrenheit
Operator → :=
Integer → 32
Operator penjumlahan → +
Identifier → celcius
6
Operator perkalian → *
Real / float → 1.8
Statement : Jumlah A = A + B
GOTO KERJA
7
Penurunan kiri Penurunan kanan
S → aAS S → aAS
→ aSbAS → aAa
→ aabAS → aSbAa
→ aabbaS → aSbbaa
→ aabbaa → aabbaa
Metode Parsing
Pada metode parsing ada tiga hal yang perlu diperhatikan, yaitu :
1. waktu eksekusi
2. penanganan kesalahan
3. penanganan kode
a. Top Down
Penelusuran dari root ke leaf atau dari symbol awal ke symbol
terminal
Metode ini meliputi :
Contoh :
Grammar : 1. S → aAd
2. S → aB
3. A → b
4. A → c
5. B → ccd
6. B → ddc
8
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
a A d a A d produksi A yang lain
(a) (b)
b
(c)
S S
Sama seperti diatas hanya
Back Up untuk pilihan
a A d a A d produksi S karena
produksi A sudah tidak
(d) ada pilihan
c
(e)
S S
a 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 │ ∑
9
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
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 :
Dengan produksi :
F → i T → T / F T → F E → E + T
F → (E) E → T T → T * F E → E – T
i + i, i – i / i, i * (i + i), i * i + i
Latihan 2 :
10