TEKNIK KOMPILASI - · PDF fileTata bahasa reguler Sebuah bahasa dinyatakan regular jika...

22
Sekolah Manajemen Informatika dan Komputer (STMIK) Palangkaraya 2012 TEKNIK KOMPILASI Bahasa Regular

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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