Anda di halaman 1dari 21

Kumpulan Materi Kuliah

http://hendroagungs.blogspot.co.id/
EKSPRESI REGULAR

Otomata dan Teori Bahasa Formal


Penerapan Ekspresi Regular (1)
• Sebuah bahasa dinyatakan regular jika
terdapat finite state automata (FSA) yang
dapat menerimanya.
• Ekspresi regular biasanya disebut ER,
memungkinkan mendefinisikan bahasa-
bahasa
Penerapan Ekspresi Regular (2)
• Ekspresi regular memberikan suatu pola
atau template untuk untai/string dari suatu
bahasa.
• Untai yang menyusun suatu bahasa regular
akan cocok dengan pola bahasa itu.
• Contoh penerapannya adalah pembatasan
data masukan yang diperkenankan,
misalnya suatu field masukan hanya
menerima input bilangan (0..9)
FSA menerima bilangan integer tak bertanda

0,1...9
• Dari Gambar tadi :
• Dalam bahasa Indonesia bisa dikatakan bahwa
otomata menerima masukan simbol input
antara 0 sampai 9
• Ekspresi Regular ( ER ) = (digit)(digit)*
• Dalam suatu kompilator, Ekspresi regular
bisa diaplikasikan untuk melakukan analisis
leksikal, yaitu mengidentifikasikan unit-unit
leksikal yg dikenal dalam program. Unit
leksikal ini biasa disebut token.
Contoh :
• Tuliskan Ekspresi Regular untuk suatu
identifier ( Pengenal), huruf besar atau huruf
kecil yang kemudian diikuti huruf atau digit
dengan tanpa pembatasan jumlah panjang.
(huruf) (huruf + digit)*
Bentuk otomata FSA dari Ekspresi Regular diatas adalah :

• Akan mengenali bila huruf berupa A..Z, a..z


dan digit berupa 0...9
• Cek Untai, diterima atau ditolak :
abqZ012, Ghi56Jk72, 7h5sd, 342dFsd
• Bila pada bahasa FORTRAN dibatasi
panjang identifier maksimal 6, maka
ekspresi regular untuk identifier pada
FORTRAN bisa dinyatakan sebagai
(huruf) (huruf+digit)⁵

• Dalam implementasinya, suatu finite state


automata akan diterjemahkan menjadi kode
dalam sebuah bahasa pemrograman.
Notasi Ekspresi Regular
• (*) 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/atau.
• (.) titik, berarti konkatenasi. Biasanya titik bisa
dihilangkan. Misalnya: ab bermakna sama seperti a.b.
Urutan prioritas operator dalam
ekspresi regular:
1. Operator star (*)
2. Operator dot (concatenation)(.)
Concatenation bersifat asosiatif sehingga 012 dapat
dikelompokkan (01)2.
3. Operator (+) atau (υ)/ (union) yang bersifat asosiatif.
Contoh, ekspresi 01*+1 dikelompokkan menjadi (0(1*))+1.
Contoh Ekspresi Regular
Contoh ekspresi regular, disingkat ER
adalah sebagai berikut
• ER: ab*cc
contoh string dibangkitkan : abcc, abbcc,
abbbcc, abbbbcc, acc
(b bisa tidak muncul atau muncul berkali-
kali).
• ER: 010*
contoh string yang didapatkan: 01, 010, 0100, 01000
(jumlah 0 diujung bisa tidak muncul, bisa muncul berkali-
kali)
• ER: a*d
contoh string yg didapatkan: d, ad, aad, aaad.
• ER: aᶧd
contoh string yg didapatkan: ad, aad, aaad
(a minimal muncul sekali)
• ER: a*ᴗb* (‘ᴗ’ berarti atau)
contoh string yg didapatkan: a, b, aa, bb, aaa, bbb, aaaa,
bbbb.
• ER ; (a ᴗ b)*
contoh string yang didapat : a, b, ab, ba, abb, bba, aaaa,
bbbb (untai yang memuat a atau b)
• ER: (aᴗb)
contoh string yg didapat: a,b.
• ER: 01* + 0
contoh string yang didapatkan: 0, 01, 011,
0111, 01111.
(string yg berawalan dengan 0, dan
selanjutnya boleh diikuti deretan 1)
Hubungan ER dengan FSA
• Untuk setiap ekspresi regular ada satu Non-
deterministic Finit Automata dengan transisi
ɛ (NFA ɛ-move) yg ekuivalen.
• Untuk setiap Deterministic Finite Automata
ada satu ekspresi regular dari bahasa yg
diterima oleh Deterministic Finite Automata
(DFA).
Artinya :
• Kita bisa membuat NFA Ԑ-move dari sebuah
Ekspresi Regular
• Dan dari NFA Ԑ-Move dapat diubah menjadi
NFA.
• Dari NFA diubah menjadi DFA
ER -> NFA Ԑ-move -> NFA -> DFA
Hubungan antara NFA, DFA dan
Ekspresi Regular
• Terdapat langkah-langkah secara formal
untuk menemukan ekspresi regular dari suatu
finite state automata, tetapi kita bisa juga
menentukan ekspresi regularnya dengan
mengamati perilaku dari otomata tersebut

Anda mungkin juga menyukai