OTOMATA DAN TEORI BAHASA FORMAL SEMESTER PENDEK 2015/2016 OTOMATA DAN TEORI BAHASA FORMAL Betha Nurina Sari,M.Kom
PERTEMUAN 1 PENDAHULUAN “Komponen Tata Bahasa Formal” String, panjang string, alfabet,bahasa Simbol terminal, non terminal, produksi, derivasi
Otomata dan teori bahasa → sebuah model, model dari suatu sistem Teori bahasa ? → mempelajari kaidah (aturan) pembentukan sebuah bahasa pemrograman → setelah mengetahui kaidahnya, maka dapat memakai bahasa pemrograman tersebut
Konsep Bahasa (1) String (kata) : suatu deretan berhingga dari simbol-simbol. Panjang string : jumlah simbol yg membentuk string tersebut. Alfabet : himpunan berhingga dari simbol- simbol. String kosong dinyatakan dengan Ɛ , didefinisikan panjangnya = 0, atau |Ɛ | = 0.
Konsep Bahasa (2) Sebuah bahasa adalah himpunan string-string dari simbol-simbol untuk suatu alphabet. Bahasa kosong adalah bahasa yang tidak terdiri dari string-string yang dinotasikan seperti kita menotasikan himpunan kosong Ø Bahasa kosong berbeda dengan bahasa yang terdiri dari string kosong { Ɛ }
Konsep Bahasa (3) Bahasa Alami : Bahasa Indonesia, bahasa Inggris, dll. Otomata : Pemodelan hardware dari komputer. Bahasa Formal : suatu abstraksi terdiri dari himpunan simbol dan aturan dimana simbol-simbol tersebut dikombinasikan ke dalam entitas yang disebut kalimat.
Otomata (1) Otomata : suatu sistem yang terdiri atas sejumlah berhingga state, dimana state menyatakan informasi mengenai input yang lalu, dapat pula dianggap sebagai memori mesin. Input pada mesin otomata dianggap sebagai bahasa yang harus dikenali oleh mesin. Mesin otomata membuat keputusan yang mengindikasikan apakah input itu diterima atau tidak.
Otomata (2) Pada gambar disamping, bila mesin mendapat string input berikut: ada: diterima adu: diterima add: ditolak Sebuah string input diterima apabila mencapai state akhir / final state yg digambarkan dengan lingkaran ganda.
Tata Bahasa : Aturan yang disebutkan pada proses pengenalan dan pembangkitan kalimat. Secara formal, tata bahasa terdiri dari 4 komponen : 1. Himpunan berhingga, tidak kosong dari simbol-simbol non terminal T1 2. Himpunan berhingga, dari simbol-simbol non-terminal N 3. Simbol awal S ∈ N, yang merupakan salah satu anggota dari himpunan simbol nonterminal. 4. Himpunan berhingga aturan produksi P yang setiap elemennya dituliskan dalam bentuk : α → β dimana α dan β adalah string yang dibentuk dari himpunan T ∪ N dan α harus berisi paling sedikit satu simbol non-terminal.
Tata Bahasa Keempat komponen tersebut sering dituliskan : G = (T,N,S,P) Bahasa yang dihasilkan oleh G ditulis sebagai L(G), yaitu himpunan string yang didapat Diturunkan dari simbol awal S dengan menerapkan aturan-aturan produksi yang terdapat pada P
Aturan produksi Aturan produksi adalah bagaimana suatu tata bahasa melakukan transformasi suatu string ke bentuk lainnya. Melalui aturan produksi tersebut didefinisikan suatu bahasa yang berhubungan dengan tata bahasa tsb. Aturan produksi dinyatakan dalam bentuk “α→ß” (dibaca: α menghasilkan ß, atau α menurunkan ß) dimana : α menyatakan simbol-simbol pada ruas kiri aturan produksi (sebelah kiri tanda ‘→’) ß menyatakan simbol-simbol pada ruas kanan aturan produksi, sebelah kanan tanda ‘→’ (hasil produksi).
Aturan produksi Aturan produksi α→β yang diterapkan pada suatu string w =aαc mengganti kemunculan. α menjadi β, sehingga string tersebut berubah menjadi w = aβc, sehingga dapat dituliskan aαc ⇒ aβc (aαc memproduksi aβc). Produksi tersebut dapat diterapkan berkali-kali w1 ⇒ w2 ⇒ w3 ⇒ ... ⇒ wn atau dapat dituliskan w1 ⇒* wn jika minimal harus ada 1 aturan produksi yang diterapkan : w1 ⇒+ wn
Simbol Terminal dan Non Terminal Simbol yang terdapat dalam ruas dan berupa simbol terminal dan Non terminal/variabel. Simbol terminal: tidak bisa diturunkan lagi (dinyatakan dengan huruf kecil). Misal: ‘a’, ‘b’, ‘c’. Simbol non-terminal/variabel: masih bisa diturunkan (dinyatakan dalam huruf besar). Misal: ‘A’, ‘B’, ‘C’.
Contoh aturan produksi T → a (T menghasilkan a). E → T | T+E (E menghasilkan T atau E menghasilkan T+E). Simbol ‘|’ menyatakan ‘atau’, biasa digunakan untuk mempersingkat penulisan aturan produksi yang mempunyai ruas kiri yang sama.
CONTOH Tatabahasa G = {{S} , {a,b}, S , P } dengan aturan produksi P adalah S → aSb | ε maka dapat dihasilkan suatu string : S ⇒ aSb ⇒ aaSbb ⇒aabb sehingga dapat dituliskan S ⇒* aabb Bahasa yang dihasilkan dari tatabahasa tersebut : L(G) = { ε , ab, aabb , aaabbb , aaaabbbb, ... } atau dapat pula dituliskan L(G) = {anbn | n ≥ 0 }
CONTOH Tatabahasa G = {{S,A} , {a,b}, S , P } dengan aturan produksi P adalah S → Ab| aAb | ε maka dapat dihasilkan suatu string S ⇒ Ab ⇒b S ⇒ Ab ⇒ aAbb ⇒ abb S ⇒ Ab ⇒ aAbb ⇒ aaAbbb ⇒ aaAbbb Bahasa yang dihasilkan dari tata bahasa tersebut : L(G) = { b , abb, aabbb , aaabbbb , aaaabbbbb,... } atau dapat pula dituliskan L(G) = {anbn+1 | n ≥ 0 }
LATIHAN 1.Tatabahasa G = {{S} , {0,1}, S , P } dengan aturan produksi P adalah S → 0S1 | ε Tuliskan string yang dihasilkan ! 2. Tatabahasa G = {{S,A} , {0,1}, S , P } dengan aturan produksi P adalah S → A1| 0A1 | ε