Dokumen tersebut membahas tentang regular expressions dan bahasa formal. Terdapat tiga operator utama pada regular expressions yaitu union, concatenation, dan closure. Regular expressions dapat digunakan untuk mendefinisikan bahasa formal dengan menggunakan konstanta, variabel, dan operator tersebut secara rekursif. Prioritas operator pada regular expressions adalah closure, concatenation, dan union.
1. TEORI BAHASA DAN OTOMATA
RESUME
Regular Expressions and Languages
Oleh :
I.B. Rathu Eka Surya Wibawa (1308605045)
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS UDAYANA
2014
2. Regular Expressions
Regular Expressions dapat didefinisikan bahasa yang sama yang dapat dideskripsikan
beragam bentuk bahasa otomata, namun regular expressions menyediakan sesuatu yang tidak
dimiliki otomata, seperti cara deklaratif untuk menyatakan strings yang ingin kita terima.
Sehingga regular expressions berperan sebagai bahasa input untuk banyak sistem yang
memproses strings.
Terdapat operator – operator pada regular expressions yaitu sebagai berikut :
1. Union ( gabungan) dua bahasa L dan M. Dimana L dan M merupakan sebuah
himpunan string, biasanya union disimbolkan dengan ( ∪ ).
Contoh, jika 𝑳 = {001, 10, 111} dan 𝑴 = { ∈,001}, maka L ∪ M = {∈, 10, 001, 111 }.
2. Concatenation dari bahasa L dan M yang merupakan himpunan strings yang dapat
dibentuk dengan mengambil sembarang string dari L dan diikuti oleh sembarang dari
M yang nantinya akan membentuk rentetan. Contoh, jika L = { 001, 10, 111 } dan M
= { ∈, 001 }, maka L.M menjadi { 001, 10, 111, 001001, 10001, 111001 }. Tiga string
pertama dari L.M merupakan gabungan dari semua string dari L dengan ∈ pada M,
akan tetapi, string selanjutnya pada L.M merupakan gabungan dari semua string pada
L dengan 001 pada M.
3. Closure dari bahasa L yang dilambangkan dengan L* dan mewakili himpunan dari
string tersebut dapat di bentuk dengan mengambil angka acak string dari L. Dan
melakukan pengulangan.
Contoh : Contoh, jika L = { 0,1 } maka L* adalah semua string mengandung 0 dan 1.
Jika L = { 0,11 }, maka L* harus terdiri dari string 0, 1 dan 1 yang selalu
berpasangan. Seperti 001, 11110 dan ∈ bukan 01011 atau 101.
Membangun regular expressions
Untuk membangun rebular expressions diperlukan semua jenis aljabar dimulai dengan
beberapa ekspresi dasar, biasanya berupa konstanta atau variabel. Kemudian aljabar
memungkinkan mengijinkan kita untuk membangun lebih banyak ekspresi dengan
memasukkan himpunan baru pada operator baru pada eskpresi dasar tersebut, dan pada
ekspresi yang telah dibangun sebelumnya.
Aljabar regular expressions mengikuti pola tersebut, menggunakan konstanta dan
variabel yang menyatakan bahasa serta operator union, dot dan star.
3. Basis : basis terdiri dari tigabagian :
1. Konstanta ∈ dan ∅ merupakan ekspresi reguler, dimana {∈} dan {∅} berturut-turut
merupakan sebuah bahasa {∈} dan ∅. Maka, L(∈) = {∈} dan L(∅) = ∅.
2. Jika a merupakan simbol apapun, maka a merupakan ekspresi reguler. Ekspresi
tersebut merupakan bahasa {a}. Jadi, L(a) = {a}.
3. Variabel biasanya ditulis dengan huruf kapital dan miring seperti L, yang merupakan
variabel yang mewakili sembarang bahasa bahasa.
Induksi : Ada empat tahap dalam tahap induksi, satu untuk setiap tiga operator tersebut dan
satu untuk pengenalan tanda kurung.
1. Jika E dan F adalah regular expressions, maka E + F adalah regular expressions yang
merupakan bentuk union dari L(E) dan L(F). Jadi, L(E+F) = L(E) ∪ L(F).
2. Jika E dan F adalah regular expressions, maka EF adalah regular expressions yang
merupakan bentuk concatenation dari L(E) dan L(F). Jadi, L(EF) = L(E)L(F).
3. Jika E adalah regular expressions, maka E* adalah regular expressions yang
merupakan bentuk closure dari L(E). Jadi, L(E*) = (L(E))*.
4. Jika E adalah regular expressions, akan menjadi (E) dengan induk E juga merupakan
regular expressions yang membentuk bahasa yang sama dengan E. Bentuk formalnya
L((E)) = L(E).
Seperti pada aljabar pada umumnya, operator – operator regular expressions dianggap
memiliki prioritas yang “diutamakan”, yang artinya operator diasosiasikan dengan operand-
nya pada suatu urutan tertentu.
Contoh: x y + z, kita tentunya akan membentuknya menjadi ( x . y ) + z bukan x ( y + z )
karena x.y sudah dalam satu grup dan tidak dapat dipisah. Hal yang sama seperti kita
mengelompokkan proses aritmatika dari kiri, maka x - y – z ekuivalen dengan ( x – y ) – z
tidak dengan x – ( y – z ). Untuk regular expressions prioritas utama operatornya adalah
sebagai berikut :
1. Operator star memiliki prioritas yang harus didahulukan dalam pengerjaannya
sehingga hanya diterapkan pada sekuen paling kecil dari simbol pada kiri operator
tersebut yang sudah dibentuk regular expressions.
2. Lalu operator yang dikerjakan selanjutnya adalah operator concatenation atau “dot”.
Setelah melakukan pengelompokkan pada operator bintang dengan operand-nya,
4. berikutnya kita melakukan pengelompokkan pada operator concatenation dengan
operand nya.
3. Yang terakhir semua unions (operator +) dikelompokkan dengan operand masing-
masing.
Tentu saja kita sering tidak menginginkan mengelompokkan sebuah regular
expressions sesuai dengan yang di syaratkan oleh prioritas dari operator tersebut. Maka kita
bebas menggunakan kurung untuk mengelompokkan operand yang kita pilih.