Teori Bahasa dan Automata
Teori Bahasa dan Automata BAHASA REGULAR & Ekspresi Regular By Kustanto
PENDAHULUAN
Bahasa regular adalah penyusun ekspresi reguler (ER)
Ekspresi reguler terdiri dari kombinasi simbol-simbol atomik menggunakan 3 operasi yaitu :
- – katenasi,
- – alternasi, dan
- – repetisi /closure
Pada kasus scanner, simbol-simbol atomik adalah karakter-karakter di dalam program sumber.
Dua buah ekspresi regular adalah ekuivalen jika keduanya menyatakan bahasa yang sama
Operasi Regular - alternasi
Alternasi membolehkan pilihan dari beberapa pilihan dan biasanya disajikan dengan operator ‘|’
- – E.g. <digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 » contoh yang menggunakan juga operator persamaan (equivalency)
Bentuk tulisan cepat tertentu juga biasanya digunakan dengan alternasi (khususnya ellips)
- – E.g. <letter> ::= a | b | … | z | A | B | … | Z » Can use the ellipses (“…”) when a sequence is well defined
Operasi Regular - repetisi
Terakhir, repetisi membolehkan ekspresi dari kontruksi yang diulang beberapa kali
Terdapat 2 operator yang digunakan yaitu superscript ‘+’ dan superscript ‘*’
- – E.g. <word> ::= <letter>+ » this implies a word consists of one or more
letters (* would imply zero or more letters and
a word must have at least one letter so we use
- )
- Ekspresi Regular
- Ekuivalensi
Non Deterministic Finite Automata ke
Deterministic Finite Automata
Ekspresi Regular – Introduction
Sebuah bahasa dinyatakan regular jika terdapat fnite state
automata yang dapat menerimanya
Bahasa-bahasa yang diterima oleh suatu fnite state automata bisa dinyatakan secara sederhana dengan ekspresi regular (regular expression) ER.
Memberikan suatu pola (pattern) atau template untuk string dari suatu bahasa
String yang menyusun suatu bahasa regular akan cocok (match) dengan pola bahasa itu
Penerapan ekspresi regular yang tampak misalnya string search pada suatu file, biasanya fasilitas ini ada pada text editor.
Ekspresi Regular – Introduction
Contoh : Suatu feld masukan hanya menerima input bilangan (0..9).
q 1 q q 2 0,1,2,…
9 0,1,…9 selain 0,1,2,
…9 selain 0,1,2, …9
FSA menerima bilangan integer tak bertanda Ekrspresi Regular yang dihasilkan adalah
(digit) (digit)* dengan digit 0..9
Ekspresi Regular – Introduction
ER juga dapat diaplikasikan untuk melakukan analisis leksikal dalam sebuah kompilator. Yaitu mengidentifikasikan unit-unit leksikal (token) yang dikenal dalam program.
Token-token pada suatu bahasa pemrograman kebanyakan tanpa kecuali dinyatakan sebagai sebuah ER .
Contoh: Suatu identifer baik huruf besar atau huruf kecil yang kemudian diikuti huruf atau digit, dengan tanpa pembatasan jumlah panjang bisa dinyatakan sebagai:
(huruf)(huruf+digit)* huruf atau huruf q q 1 digit
Notasi ER
- +’
’ , ‘.’ Terdapat 5 notasi dalam ER yaitu: ‘*’ , ‘ , ‘+’ , ‘
- *
(karakter asterisk), berarti bisa tidak muncul, bisa juga muncul berhingga kali (0-n)
- +
(pada posisi superscript/ diatas) berarti minimal muncul satu kali
(1-n)
- + atau berarti union
. (titik) berarti konkatensi, biasanya titik bisa dihilangkan,
misal ab bermakna seperti a.b
Notasi ER - Contoh
ER: ab*cc Contoh string: abcc, abbcc, abbbcc, abbbbcc, acc, (b bisa tidak muncul atau muncul sejumlah berhingga kali)
ER: 010* Contoh string : 01, 010, 0100, 01000 (jumlah 0 diujung bisa tidak muncul, bisa muncul berhingga kali)
ER: a*d Contoh string : d, ad, aad, aaad +
ER: a d Contoh string: ad, aad, aaad --- (a minimal muncul sekali)
Notasi ER -Contoh
ER: a* b* (ingat ‘’ berarti atau) Contoh string : a, b, aa, bb, aaa, bbb, aaaa, bbbb
ER: (a b) --- Contoh string: a, b
ER: (a b)* Contoh string : a, b, ab, ba, abb, bba, aaaa, bbbb (string yang memuat a atau b)
- ---- * perhatikan : notasi ‘ ’ kadang dituliskan juga sebagai
‘+’ ---
ER: 01*+0 Contoh string: 0, 01, 011, 0111, 01111, (string yang berawalan dengan 0, dan selanjutnya boleh diikuti deretan 1)
Konstruksi NFA Dari ER Yang Ditentukan
q 2 q q 1 b a
NFA untuk ER: ab
q 1 q q 2 a b
NFA untuk ER: a b
q q 1 0,
1
untuk ER: 0 (1
0)*
Ekuivalensi NFA ke DFA
Dari sebuah mesin Non-deterministic Finite Automata dapat dibuat mesin Deterministic Finite Automata-nya yang ekivalen (bersesuaian)
Ekivalen disini artinya mampu menerima bahasa yang sama
L(M1) = L(M2)
0,1 0,1 q q 1 q q 1
0,1
1 q 2
Ekuivalensi NFA ke DFA – Steps
Membuat tabel transisi
Mulai dari state awal
Ikuti transisinya untuk membentuk state-state baru
Untuk setiap state yang terbentuk diikuti lagi transisinya sampai ter’cover’ semua
Ekuivalensi NFA ke DFA – Contoh
q 1 q 0,1
1
1 Mesin otomata NFA
1 q q , q 1
q 1,
q 1 q , q 1
Buat Tabel Transisi
Ekuivalensi NFA ke DFA – Contoh
Mulai dari state awal (q )
q
- state q bila memperoleh input 0 menjadi state q , q
1
- state q
bila memperoleh input 1 menjadi state q
1,
q 0, q 1 q q 1
1 Hasil dari penelusuran q
Telusuri state berikutnya
- * Setiap state dituliskan sebagai himpunan state
Ekuivalensi NFA ke DFA – Contoh
Ikuti transisinya untuk membentuk state-state baru
- state q bila memperoleh input 0 menjadi state 1
- state q bila memperoleh input 1 menjadi state q , q 1 1state q , q bila memperoleh input 0 menjadi state q , 1
- state q , q bila memperoleh input 1 menjadi state q , q , 1 1
- * Setiap state dituliskan sebagai himpunan state
- * merupakan sebuah state
q , ini di peroleh dari (q ,0)= q , q di gabung dengan 1 1
(q ,0) = , maka hasilnya (q , q , 0) =q , q 1 1 1
ini di peroleh dari (q ,1)= q di gabung dengan (q ,1) = q , q , 1 1 1 maka hasilnya (q , q , 1) = q , q 1 1
Ekuivalensi NFA ke DFA – Contoh
1 0,1
dan q 0, q 1
Hasil setelah penelusuran q 1
q 1
1
q 0, q 1 q
atau ( ,1)=
Telusuri state
q 0, q 1 q
q 1
1
1 0,1
0,1
State menerima input 0 atau 1 menjadi state ,
Dari NFA, kita tahu bahwa himpunan state akhir adalah q
1 , maka pada DFA yg dihasilkan state-state akhir merupakan semua state yg mengandung q
1 .
F = {{q
1 }, {q 0, q
1 }} Ekuivalensi NFA ke DFA – Contoh
q
1
1 0,1
0,1 q 1
q 0, q 1
Mesin DFA yang ekivalen dengan NFA
Ekuivalensi NFA ke DFA – Contoh
Pembuktian : String ‘001’ Dari diagram NFA kita bisa lihat bahwa ∂(q ,001) dapat diterima oleh NFA tsb.
Untuk DFA kita lihat: ∂(q ,001) = ∂(q , q ,01)= ∂ (q , q ,1)= q , q
1
1
1 Karena state q , q termasuk state akhir, maka berarti
1 string tersebut diterima.
Bahasa Reguler & Ekspresi Reguler
End of Session