TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika...
Transcript of TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika...
![Page 1: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/1.jpg)
Sekolah Manajemen Informatika dan Komputer (STMIK) Palangkaraya
2012
TEKNIK KOMPILASI
Bahasa Regular
![Page 2: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/2.jpg)
Tata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State
Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi atau
mendefinisikan bahasa-bahasa Ekspresi reguler memberikan suatu pola (pattern) atau
template untuk string dari suatu bahasa. Untai yang menyusun suatu bahasa regular akan cocok
(match) dengan pola bahasa itu.
![Page 3: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/3.jpg)
Ekspresi Regular Dalam suatu kompilator, ekspresi regular bisa diaplikasikan
untuk melakukan analisis leksikal yang dikenal dalam program (token).
Token-token dalam sautu bahasa pemrograman dinyatakan sebagai ekspresi regular.
![Page 4: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/4.jpg)
Notasi Ekspresi Regular
* Karakter asterik Bisa tidak munculBisa muncul berhingga kali (0-n)
+ Pada posisi superscirpt (di atas)
Minimal muncul satu kali (1-n)
+ atauᴜ
Union Gabungan untai/string
. Titik Konkatenasi, biasanya tanda titik bisa dihilangkan
![Page 5: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/5.jpg)
Operasi dalam Bahasa Regular Dalam analisis lexical, operasi yang paling penting adalah
union, concatenation, dan closure
Union : penggunaannya sama dengan himpunan. Concatenation : pembentukan string dengan mengambil
sebuah string dari bahasa pertama dan bahasa kedua, dalam semua kemungkinan yang ada.
![Page 6: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/6.jpg)
Operasi dalam Bahasa Regular (Kleene) closure dari bahasa L, dilambangkan dengan L*,
himpunan string dengan hasil gabungan 0 atau lebih L. L0 merupakan "concatenation L sebanyak 0 kali,"
didefinisikan menjadi {ε} , dan secara induktif, Li adalah Li - 1 L.
Positive closure, dilambangkan L+, sama dengan Kleeneclosure, tapi tanpa L0 . ε tidak ada dalam L+ kecuali berada dalam L itu sendiri
![Page 7: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/7.jpg)
Finite State Automata (FSA) model matematika yang dapat menerima input dan
mengeluarkan output Analisis leksikal lebih mudah diimplementasikan pada FSA. Memiliki state yang berhingga banyaknya dan dapat
berpindah dari satu state ke state lainnya berdasar input danfungsi transisi
Tidak memiliki tempat penyimpanan/memory, hanya bisamengingat state terkini
Mekanisme kerja dapat diaplikasikan pada : elevator, text editor, analisa leksikal, pencek parity.
![Page 8: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/8.jpg)
Finite State Automata (FSA) Finite State Automata dinyatakan oleh 5 tuple M=(Q , Σ , δ , S , F )
Q = himpunan stateΣ = himpunan simbol inputδ = fungsi transisi δ : Q × ΣS = state awal / initial state , S ∈ QF = state akhir, F ⊆ Q
![Page 9: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/9.jpg)
Jenis FSA Deterministic Finite Automata (DFA) dari suatu state ada tepat satu state berikutnya untuk setiap
simbol masukan yang diterima Non-deterministic Finite Automata (NFA) dari suatu state ada 0, 1 atau lebih state berikutnya untuk
setiap simbol masukan yang diterima
![Page 10: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/10.jpg)
Finite State Diagram (FSD) Menggambarkan kerja FSA, disebut juga dengan State-
Transition Diagram Lingkaran menyatakan state, Lingkaran bergaris tunggal = state sementara Lingkaran bergaris ganda = state akhir Lingkaran diberi label sesuai dengan nama state
Anak panah menyatakan transisi. Label di anak panah menyatakan simbol input (yg membuat
transisi dari satu state ke state lain)
![Page 11: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/11.jpg)
Finite State Automata (FSA) Contoh pencek parity ganjil
Misal input : 1101 Genap 1 Ganjil 1 Genap 0 Genap 1 Ganjil diterima mesin
Misal input : 1100 Genap 1 Ganjil 1 Genap 0 Genap 0 Genap ditolak mesin
![Page 12: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/12.jpg)
Dari contoh tersebut :Q = {Genap, Ganjil}
Σ = {0,1}S = GenapF = {Ganjil }Tabel transisinya :
Fungsi transisinya :δ(Genap,0) = Genapδ(Genap,1) = Ganjilδ(Ganjil,0) = Ganjilδ(Ganjil,1) = Genap
![Page 13: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/13.jpg)
Tata bahasa reguler & hubungannyasebagai scanner (penganalisis leksikal) Dalam suatu kompilator, ekspresi reguler bisa diaplikasikan
untuk melakukan analisis leksikal. Source code dipindai dan mengidentifikasi unit-unit leksikal
yang dikenal dalam program. Unit leksikal tersebut dinamakan token. Token-token pada bahasa pemrograman dinyatakan sebagai
ekspresi reguler dan menghasilkan Deterministic Finite Automata (DFA) yg mengenali token mana yg munculberikutnya pada input.
![Page 14: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/14.jpg)
Tata bahasa reguler & hubungannyasebagai scanner (penganalisis leksikal)
Contoh : token identifier : terdiri dari huruf (kecil maupun kapital), bisa diikuti
huruf atau digit, tanpa batas panjang dapat dinyatakan :(huruf)(huruf+digit)*
Huruf berupa A..Z atau a..z Digit berupa 0..9
FSA akan diterjemahkan menjadi kode dlm sebuah bahasa pemrograman
q1q0huruf
huruf atau digit
FSA mengenali identifier
![Page 15: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/15.jpg)
Tata bahasa reguler & hubungannyasebagai scanner (penganalisis leksikal) Contoh : Otomata untuk mengenali keyword then. Otomata memerlukan 5 state, masing-masing melambangkan posisi-
posisi berbeda pada kata then. Posisi-posisi ini berkorespondensi dgn prefiks kata, mulai dari string
kosong (empty string) di mana tidak ada satu kata yg muncul, sampaisatu kata penuh tampil.
State awal berkoresponden dgn string kosong. Setiap state mengalami transisi pada huruf berikutnya dari kata then,
berkoresponden dgn prefiks berikutnya.
th the thenstart t h e n
t
FSA untuk mengenali keyword then
![Page 16: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/16.jpg)
S
ID
INT
PLUS
MINUS
+
-
huruf
Digit
Huruf, Digit
DigitBlank
Contoh : suatu tata bahasa memiliki himpunan simbolterminal/token berikut (ID, PLUS, MINUS, dan INT)token ID untuk karakter huruf a-z, 0-9, token INT untuk digit, token PLUS untuk Penjumlahan dan token MINUS untuk Pengurangan
![Page 17: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/17.jpg)
Contoh FSA untuk token relop dan komentar Misalkan sebuah bahasa memiliki himpunan simbol terminal
token :‘<’, ‘>’, ‘=’, ‘<=’, ‘>=’, <>Atau bisa dibaca sebagai token :t_L, t_G, t_E, t_LE, t_GE, t_NE(G = greater, L = less, E = equal, N= not)Komentar diawali ’{’ dan diakhiri “}”Setiap scanner menemukan awal komentar atau ‘{’ scanner hanya
mengambil simbol yg didapat tanpa menyimpan ke dalamtoken.
Setelah ditemukan akhir komentar atau ‘}’, state di kembalikan kestate awal.
![Page 18: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/18.jpg)
Contoh FSA untuk token operator relasi dan komentar
Diagram state untuk himpunan simbol tersebut :
STARTt_LEt_L
t_NE
t_GE
t_E
t_G
komentar
< =
=
>
> =
{
}
apa sajaselain }
![Page 19: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/19.jpg)
Scanner diimplementasikan sebagai sebuah prosedur yang dipanggil oleh parser.
Contoh prosedur scan sederhana untuk membaca file input dan memberikan token hasilnya.
Misal didefinisikan dulu Procedure GetChar yang bergunamengambil sebuah karakter dari input.
Dimana
procedure GetChar
beginread(FileInput, Kar);
end;
FileInput : text;Kar : char;
![Page 20: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/20.jpg)
![Page 21: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/21.jpg)
Latihan Lengkapilah potongan coding program tersebut, untuk
mengenali (scanning) token operator-operator logika. Compilator yang digunakan bebas.
![Page 22: TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang dapat menerimanya. Ekspresi reguler memungkinkan menspesifikasi](https://reader030.fdocument.pub/reader030/viewer/2022020710/5a7cde0a7f8b9a66798d2b06/html5/thumbnails/22.jpg)
Latihan Tentukan Q , Σ, S , F, tabel transisi dan fungsi transisi pada
FSA untuk token operator relasi dan komentar pada slide sebelumnya!
Buatlah diagram state untuk sebuah bahasa yang memiliki kompulan token-token sebagai berikut.
Lakukanlah identifikasi operator relasi pada bahasa C, buatlah diagram state (FSA)-nya!
+ - / * ** <
<= > >= = <> integer
identifier