Ekspresi reguler, tata bahasa reguler, dan automata terbatas hanyalah tiga formalisme berbeda untuk hal yang sama. Ada algoritma untuk mengkonversi dari salah satu dari yang lain ke yang lain.
Alasan dasar bahwa kita memiliki ketiganya adalah bahwa mereka diciptakan secara independen, dengan set pertama kesetaraan (ada beberapa formalisme juga) dibuktikan oleh Kleene (hasil ini, atau bagian daripadanya disebut Kleene's Theorem).
Jadi dalam konteks itu, tergantung pada putaran mana Anda ingin menjalankan model, mereka semua mengenali atau menghasilkan string dari bahasa biasa, dan secara matematis, dalam hal itu, tidak ada perbedaan.
Tentu saja kadang-kadang satu model lebih mudah digunakan daripada yang lain untuk tugas tertentu, karena rincian formalisme. Selain itu cara mereka bekerja di kepala manusia sering sedikit berbeda, automata terbatas "merasa" seperti komputer, ekspresi reguler "merasa" seperti Anda membangun string dari substring yang lebih kecil dan tata bahasa reguler "merasa" seperti tata bahasa yang lebih tradisional derivasi atau klasifikasi suatu kalimat dalam suatu bahasa (tidak mengejutkan ketika Anda melihat sejarahnya).
Jadi untuk membandingkan keduanya, mari kita definisikan:
Ekspresi Reguler
Jadi ekspresi reguler didefinisikan secara rekursif sebagai berikut:
- ∅
- ε
- aa∈Σ
- AB
Bersamaan dengan beberapa semantik (yaitu bagaimana kita menafsirkan operator untuk mendapatkan string), kita mendapatkan cara menghasilkan string dari bahasa reguler.
Tata Bahasa Reguler
(N,Σ,P,S∈N)NΣSPΣ∗P
Tata Bahasa Linier Kanan
BCaε
- B→a
- B→aC
- B→ε
Tata Bahasa Linier Kiri
B→Ca
Hal-hal untuk Direnungkan
Jadi melihat definisi ini dan bermain dengannya, kita dapat melihat bahwa ekspresi reguler terlihat seperti aturan yang cocok, atau cara berurusan dengan string sedikit demi sedikit.
S
Namun ini benar-benar melakukan hal mendasar yang sama, dan bagaimana Anda melihat metafora fungsi mereka benar-benar terserah Anda.