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

         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

      • state q , q  bila memperoleh input 1 menjadi state q , q  ,
      • 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

        • * Setiap state dituliskan sebagai himpunan state

        Ekuivalensi NFA ke DFA – Contoh

          1 0,1

           dan q 0, q 1

          

          Hasil setelah penelusuran q 1

           q 1

          1 

        • * merupakan sebuah state

           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