ALGORITMA & PEMROGRAMAN 1C SINTAKSIS ALGORITMA & PEMROGRAMAN 1C
CONTEXT-FREE GRAMMARS Alfabet Simbol terminal. Huruf kecil (a, b, c) Simbol operator (+, -, x) Simbol tanda baca ( , dan ;) Bahasa Himpunan kalimat-kalimat. Simbol Non Terminal Huruf besar (A, B, C) Huruf S sebagai simbol awal
ATURAN PRODUKSI Contoh : T → a T menghasilkan a E menghasilkan T atau 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 : T → a T menghasilkan a E menghasilkan T atau E menghasilkan T + E E → T │ T + E
Grammar & Klasifikasi Chomsky Grammar G didefinisikan sebagai pasangan 4 tuple : VT, V N, S, dan Q dituliskan sebagai G(VT, VN, S, dan Q) VT : himpunan simbol-simbol terminal (atau himpunan token -token, atau alfabet) VN : himpunan simbol-simbol non terminal S ∈ VN : simbol awal (atau simbol start) Q : himpunan produksi
HIRARKI CHOMSKY
1. Grammar tipe ke-0 : Unrestricted Grammar (UG) α, β ∈ (VT | VN)*, |α|> 0 • Ciri : Tidak ada batasan pada aturan produksi • Contoh : Abc → De
2. Grammar tipe ke-1 : Context Sensitive Grammar (CSG) α, β ∈ (VT | VN)*, 0 < |α| ≤ |β| • Ciri : Panjang string ruas kiri harus < (lebih kecil) atau = (sama dengan) ruas kanan • Contoh : Ab → DeF CD → eF
3. Grammar tipe ke-2 : Context Free Grammar (CFG) α ∈ VN, β ∈ (VT|VN)* • Ciri : Ruas kiri haruslah tepat satu symbol variabel, yaitu simbol non terminal • Contoh : B → CDeFg D → BcDe
4. Grammar tipe ke-3 : Regular Grammar (RG) α ∈ VN, β ∈ {VT, VT VN} atau α ∈ VN, β ∈ {VT, VN VT} • Ciri : Ruas kiri hanya memiliki maksimal satu symbol non terminal • Contoh : A → e A → gH C → D
NOTASI BNF (BACKUS-NOUR FORM) 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 : E → T │ T + E │ T – E T → a Notasi BNF : E ::= <T> │ <T> + <E> │ <T> - <E> T ::= a
PARSING S a AS | a, A SbA | ba Penurunan kiri : S => aAS => aSbAS => aabAS => aaabbaS => aabbaa
S a AS | a, A SbA | ba Penurunan kanan : S => aAS => aAa => aSbAa => aSbbaa => aabbaa
Parse tree Top-Down Penelusuran dari root ke leaf atau dari simbol awal ke simbol terminal metode ini meliputi: Backtrack/backup : Brute Force No backtrack : Recursive Descent Parser Bottom-Up Metode ini melakukan penelusuran dari leaf ke root
Brute force S aAd | aB A b | c B ccd | ddc Misal ingin dilakukan parsing untuk string ‘accd’