Teori Bahasa dan Automata
BAHASA REGULAR & Ekspresi Regular
By
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
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
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
•
Ekspresi Regular
•
Ekuivalensi
Non Deterministic Finite Automata ke
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.
Contoh : Suatu feld masukan hanya menerima input bilangan
(0..9).
Ekspresi Regular – Introduction
q1 q0 q2 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)*
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)*
Ekspresi Regular – Introduction
q1
Terdapat 5 notasi dalam ER yaitu: ‘*’ , ‘+’ , ‘+’ , ‘’ , ‘.’
*
(karakter asterisk), berarti bisa tidak muncul, bisa juga munculberhingga 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
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)
ER: a*b* (ingat ‘’ berarti atau)
Contoh string : a, b, aa, bb, aaa, bbb, aaaa, bbbb
ER: (ab) --- Contoh string: a, b ER: (ab)*
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
q2 q0 a q1 b
Konstruksi NFA Dari ER Yang
Ditentukan
NFA untuk ER: ab
q1 q0
q2 a
b
NFA untuk ER: a b
q0 q1
0, 1
0
untuk ER: 0
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)
Ekuivalensi NFA ke DFA
q2 q1 q0
0
1
0,1
0,1 q0 q1
0
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
q1 q0
0,1
1 0
1
Mesin otomata NFA
0 1
q0 q0, q1
q1,
q1 q0,
q1
Mulai dari
state
awal (
q
0)
Ekuivalensi NFA ke DFA – Contoh
q0
•
state
q
0
bila memperoleh
input
0 menjadi
state
q
0, q
1
•
state
q
0
bila memperoleh
input
1 menjadi
state
q
1,
q0, q1 q0
q1
0 1
Hasil dari penelusuran q0
Ikuti transisinya untuk membentuk
state-state
baru
Ekuivalensi NFA ke DFA – Contoh
• state q1 bila memperoleh input 0 menjadi state
• state q1 bila memperoleh input 1 menjadi state q0, q1
• state q0, q1 bila memperoleh input 0 menjadi state q0,
q1, ini di peroleh dari (q0,0)= q0, q1 di gabung dengan
(q1,0) =, maka hasilnya (q0, q1, 0) =q0, q1
• state q0, q1 bila memperoleh input 1 menjadi state q0, q1,
ini di peroleh dari (q0,1)= q1 di gabung dengan (q1,1) = q0, q1,
Hasil setelah penelusuran
q1 dan q0, q1
Ekuivalensi NFA ke DFA – Contoh
* merupakan sebuah state
q0, q1 q0
q1
0 1 0 1 0,1
State menerima input 0 atau 1 menjadi state ,
atau (,1)=
Telusuri
state
q0, q1 q0
q1
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
q0
0 1
0
1
0,1
0,1
q1
Pembuktian : String ‘001’
Dari diagram NFA kita bisa lihat bahwa ∂(q
0,001) dapat
diterima oleh NFA tsb.
Untuk DFA kita lihat:
∂(q
0,001) = ∂(
q
0, q
1
,01)= ∂ (
q
0, q
1
,1)=
q
0, q
1
Karena
state
q
0, q
1
termasuk
stat
e akhir, maka berarti
strin
g tersebut diterima.
End of Session