Disusun oleh: Rina Dewi Indah Sari, S.Kom

Ukuran: px
Mulai penontonan dengan halaman:

Download "Disusun oleh: Rina Dewi Indah Sari, S.Kom"

Transkripsi

1 Disusun oleh: Rina Dewi Indah Sari, S.Kom

2 Kata Pengantar Teori bahasa dan automata merupakan salah satu mata kuliah yang wajib di jurusan-jurusan informatika maupun ilmu komputer. Salah satunya pada STMIK Asia Malang. Mata kuliah ini mempelajari tentang notasi-notasi bahasa yang digunakan dalam komputer. Bahasan dalam mata kuliah ini akan banyak diimplementasikan pada teknik kompilasi. Oleh sebab itu akan terasa manfaatnya pada saat anda mempelajari tentang kompilasi. Penulis mencoba menyajikan sesuatu dengan cara sesederhana mungkin dengan bahasa yang mudah diterima sehingga mengurangi kesulitan mahasiswa pada perkuliahan ini. Penulis mengharapkan pembaca bisa menangkap materi dan persoalan-persoalan yang diberikan. Diharapkan pembaca dapat menikmati permasalahan tanpa memandangnya sebagai sesuatu yang sulit. Sesuai dengan namanya, mata kuliah ini hanya memuat teori saja, tanpa memuat hal-hal praktis yang dapat diterapkan langsung dalam praktek. Penulis menyadari bahwa maíz banyak kekurangan di sini, baik kesalahan pengetikan maupun kekurangtepatan dalam penjelasan. Penulis dengan senang hati akan menerima saran dan kritik membangun dari pembaca, dapat disampaikan melalui Tidak lupa penulis mengucapkan terima kasih yang tak terhingga lepada ALLAH SWT atas segala berkahnya, Ibunda tercinta yang akhir-akhir ini sering missed, Suamiku tercinta yang kadang-kadang juga nyebelin, dan calon dede dalam perutku yang akan menjadi semangat sepanjang hidupku. Serta semua saudaraku, sahabatku serta rekan rekan kerja di ASIA Malang. Malang, Agustus 2008 Rina Dewi Indah Sari i

3 Daftar Isi Kata Pengantar... i Daftar Isi... ii Bab I : Pengantar Teori Pengantar Teori Himpunan Fungsi dan Relasi Teori Pembuktian Graph dan Tree Kompilasi Bahasa Pemrograman Translator Interpreter Assembler Compiler... 9 Bab II : Konsep Bahasa Automata Konsep Bahasa dan Automata Teori Bahasa Automata String Operasi Dasar String Sifat-sifat Operasi String Grammar dan Bahasa Definisi Simbol Aturan Produksi Grammar Klasifikasi Chomsky Analisa Grammar Bab III : Finite State Automata (FSA) ii

4 3.1 Definisi Formal Fungsi Transisi Jenis-jenis FSA Deterministic finite automata (DFA) Non deterministik finite automata (NFA) Ekuivalen Indistinguishable Distinguishable Prosedur menentukan pasangan status indistinguishable Prosedur Reduksi DFA Bab IV : Ekuivalensi NFA ke DFA Algoritma Ekivalensi NFA ke DFA NFA dengan ε-move Ekuivalensi NFA dengan ε-move ke NFA tanpa ε-move Penggabungan FSA Bab V : Ekspresi Reguler Bahasa regular Sifat Bahasa Reguler Konversi ekspresi reguler ke FSA DFA dan Tatabahasa Reguler Penerapan ekspresi regular Pumping Lemma Bab VI : FSA dengan Output Mesin Moore Mesin Mealy Ekuivalensi mesin Moore dengan mesin Mealy Bab VII : Bahasa Bebas Konteks Tata Bahasa Bebas Konteks Leftmost dan Rightmost Derivation Pohon Urai Parsing dan Keanggotaan iii

5 7.5 Ambiguitas pada Tatabahasa dan Bahasa Pumping Lemma untuk bahasa bebas konteks Sifat - sifat tertutup bahasa bebas konteks Substitusi Tatabahasa Bebas Konteks dan Bahasa Pemrograman Bab VIII : Penyederhanaan Tata Bahasa Bebas Konteks Penghilangan Produksi Useless Penghilangan Produksi Unit Penghilangan Produksi Pengembangan praktek Bab IX : Bentuk Normal Chomsky Pengertian Aturan Produksi Pembentukan CNF Bagan Tahapan Pembentukan CNF Algoritma CYK untuk Tata Bahasa Bebas Konteks Bab X : Penghilangan Rekursif Kiri Aturan Produksi Rekursif Pohon Penurunan Tahapan Penghilangan Rekursif Kiri Bab XI : Bentuk Normal Greibach Pengertian Bentuk Normal Greibach Pembentukan GNF dengan Substitusi Bab XII : Pushdown Automata (PDA) Pendahuluan Transisi Definisi Formal PDA Bab XIII : Mesin Turing Sejarah Mekanisme TM Definisi Formal iv

6 13.4 Ilustrasi TM sebagai sebuah mesin Ilustrasi TM sebagai sebuah Graf berarah Bab XIV : Aplikasi FSA dan CFG pada Pengembangan Kompilator Scanner Parser Tool bantuan untuk konstruksi Scanner dan Parser Implementasi Scanner dan Parser Daftar Pustaka v

7 Bab I PENGANTAR 1.1. Teori Pengantar Teori Himpunan Definisi sebuah himpunan adalah kumpulan obyek atau simbol yang memiliki sifat yang sama. Anggota himpunan disebut elemen Contoh: Terdapat sebuah himpunan X = {1, 2, 4}, maka 1 X 1 merupakan elemen dari himpunan X 3 X 3 bukan elemen dari himpunan X A. Himpunan Sama Himpunan dikatakan sama bila memuat elemen - elemen yang sama. Contoh : Terdapat beberapa himpunan, X = {1, 2, 4} Y = {4, 1, 2} Z = {1, 2, 3} Maka, X = Y X Z B. Himpunan Bagian (Subset) Himpunan bagian adalah jika semua elemen dari himpunan A adalah elemen dari himpunan B. Contoh : Terdapat beberapa himpunan, A = {1, 2, 3} B = {1, 2, 3, 4} C = {1, 2, 3} 1

8 Maka, A B dan C B, maka A = C C. Himpunan Kosong Himpunan kosong atau null (ø) merupakan bagian dari semua himpunan. Contoh : Terdapat himpunan, Maka, A = {1, 2, 3} Ø A B = {1, 2, 3, 4} Ø B C = {1, 2, 3} Ø C D. Operasi operasi himpunan 1. Gabungan (Union), dinyatakan dengan Misal, A = {1, 2, 3} B = {2, 4} Jika P = A B, maka P = {x x A atau x B} P = {1, 2, 3, 4} Bisa dianalogikan dengan penjumlahan A B = A B = A + B 2. Irisan (Intersection), dinyatakan dengan Misal, A = {1, 2, 3} B = {2, 4} C = {10, 11} Jika P = A B, maka P = {x x A dan x B} P = {2} A C = Ø, disebut saling lepas (disjoint) Bisa dianalogikan dengan perkalian A B = A B = A. B 2

9 3. Komplemen, adalah semua elemen yang tidak menjadi elemen himpunan tersebut. Semua himpunan yang dibahas diasumsikan merupakan bagian dari suatu himpunan semesta (Universal). Jadi komplemen A = A = U A Misal A = {1, 2, 3} B = {2, 4} C = {10, 11} Maka, A B = {1, 3} B C = Ø E. Beberapa ketentuan pada operasi himpunan o Ø A = A o Ø A = Ø o A B A B = A o A B A B = B o A A = A o A A = A o Komunikatif, A B = B A A B = B A o Assosiatif, A ( B C ) = (A B) C A ( B C ) = (A B) C o Distributif, A ( B C ) = (A B) ( A C) A ( B C ) = (A B) ( A C) o Hukum DeMorgan, A B = A B (A B) = A B o (A B) = A B o ( A) = A o Ø = U o U = Ø 3

10 Fungsi dan Relasi Suatu fungsi adalah sebuah relasi yang memenuhi suatu kriteria. Contoh: f : A B dan g : A B, maka f = g f(x) = g(x) untuk semua x di dalam A Beberapa ketentuan fungsi 1. f(ø) = Ø 2. f({x}) = {f(x)} untuk semua x A 3. X Y A f(x) f(y) 4. X Y B f-1(x) f-1(y) 5. X B dan Y B f-1(x-y) = f-1(x) - f-1(y) Kombinasi Fungsi dapat dikombinasikan dengan cara komposisi, dinotasikan dengan o Misal: f(x) = 2x + 1 g(x) = x2 Maka, g o f(x) = g(2x + 1) = (2x + 1)2 = 4x2 + 4x Teori Pembuktian Pembuktian menggunakan prinsip induksi matematika. Langkah-langkah dalam melakukan pembuktian : o Tunjukkan hal itu berlaku untuk semua P 0, disebut basis step. o Tunjukkan hal itu berlaku untuk P n+1, disebut induction step. o Maka dapat ditarik kesimpulan hal tersebut berlaku untuk semua n Contoh Pembuktian S(n) = n = n(n+1)/2, n bilangan bulat positif S(0) = 0(0+1)/2 = 0 (terbukti) S(1) = 1(1+1)/2 = 1 (terbukti) 4

11 S(i) = i = i(i+1)/2 (anggap benar) Akan dibuktikan S(i+1) juga benar S(i+1) = (i+1)((i+1)+1)/2 = i+(i+1) = i(i+1)/2 + (i+1) = (i+1)(i/2+1) = (i+1)(i+2)/2 = (i+1)((i+1)+1)/2 (terbukti) Jadi, S(n) benar Graph dan Tree Suatu graph adalah himpunan vertex (titik) yang tidak kosong dengan setiap sisi (edge) menghubungkan 2 buah titik. G = ( V, E ); V = vertex / titik E = edge / sisi V(G) = banyak titik pada graph G = E+1 E(G) = banyak sisi pada graph G = V-1 Contoh sebuah Graph V 9 V 8 V 1 V 2 V 7 V 6 V 3 V 4 Istilah-istilah dalam teori graph o Lup/ gelung, adalah sisi yang menghubungkan titik dengan titik itu sendiri. o Titik terminal, adalah titik yang berderajat 1 o Derajat, adalah banyaknya sisi dalam 1 titik o Titik terasing, adalah titik yang berderajat nol V 5 5

12 o Adjantcy/ berdekatan, adalah bila titik-titik terhubung langsung oleh suatu sisi. o Incident/ bersisian, adalah bila titik tidak terhubung langsung. o Lintasan/ Path, adalah urutan titik dan sisi dalam suatu graph terhubung. o Jalan/ Trail, adalah urutan titik dan sisi dalam graph yang tidak mengulang sisi. o Sikel, adalah path yang dimulai dan diakhiri pada titik yang sama. o Graph terhubung, adalah graph yang semua titiknya dihubungkan oleh sisi. o Graph sederhana, adalah graph yang tidak ada simpul/ lup. o Graph berarah/ directed graph, adalah graph yang sisinya mempunyai arah. o Graph tidak berarah/ undirected graph o Graph komplit, adalah graph yang semua titik-titiknya terhubung langsung (lema jabat tangan) - Jumlah sisi E(G) = degv(g)/2 - Derajat max = V-1 v E(G) = 6/2 = 3 1 v 2 Deg = 3-1 = 2 o Euler - Lintasan Euler, adalah lintasan yang melalui semua sisi tepat 1 kali dalam graph. - Sirkuit Euler, adalah lintasan Euler yang berangkat dan berakhir pada titik yang sama. o Hamilton - Lintasan hamilton, adalah lintasan yang melalui semua titik tepat 1 kali dalam graph. - Sirkuit hamilton, adalah lintasan hamilton yang berangkat dan berakhir pada titik yang sama. v 3 6

13 1.2. Kompilasi Bahasa Pemrograman Bahasa mesin Bahasa Assembly Bahasa Pemrograman Bahasa Tingkat tinggi Bahasa Problem Oriented 1. Bahasa mesin merupakan bentuk terendah dari bahasa komputer. Instruksi direpresentasikan dalam kode numerik. 2. Bahasa Assembly merupakan bentuk simbolik dari bahasa mesin. Kode misalnya ADD, MUL, dsb 3. Bahasa tingkat tinggi (user oriented) lebih banyak memberikan fungsi kontrol program, kalang, block, dan prosedur. 4. Bahasa problem oriented sering juga dimasukkan sebagai bahasa tingkat tinggi, misalnya SQL, Myob, dsb Translator Translator melakukan pengubahan source code/ kode program kedalam target code/ object code. Interpreter dan Compiler termasuk dalam kategori translator. 7

14 Interpreter Translator Compiler Tidak membangkitkan object code. Source code dan data diproses bersamaan. Contoh: BASICA, SPSS, DBASE III. Assembler Source Code adalah bahasa tingkat tinggi. Object Code adalah bahasa mesin atau assembly. Source code dan data diproses tidak bersamaan. Contoh: PASCAL, C. Source Code adalah bahasa Assembly Object Code adalah bahasa mesin Interpreter Penanganan Kesalahan Progra m Analisa Leksikal Analisa Sintaks Intermediate Program Interpretas i Hasil Operasi Pengelolaan Tabel Assembler Source Code Assembl er Object Code Lingke r File Target.ASM.OBJ.EXE /.COM Proses Sebuah Kompilasi pada Bahasa Assembler 8

15 Keterangan : Source Code adalah bahasa Assembler, Object Code adalah bahasa Mesin. Object Code dapat berupa file object (.OBJ), file.exe, atau file.com Contoh : Turbo Assembler (dari IBM) dan Macro Assembler (dari Microsoft) Compiler Kompilator (compiler) adalah sebuah program yang membaca suatu program yang ditulis dalam suatu bahasa sumber (source language) dan menterjemahkannya ke dalam suatu bahasa sasaran (target language). Proses kompilasi dapat digambarkan melalui sebuah kotak hitam (black box) berikut : A. Fase Compiler Proses kompilasi dikelompokkan ke dalam dua kelompok besar : 1. Analisis (front-end) : a. program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (inter-mediate representation) b. Language Independent 2. Sintesis (back-end) : a. membangun program sasaran yang diinginkan dari bentuk antara b. Language dependent 9

16 B. Blok Diagram Compiler Program Sumber Program Sasaran Penganalisa Leksikal (scanner) ANALISA Penganalisa Sintaks (parser) Penganalisa Semantik Pembangkit Kode antara Pembentuk kode SINTESA Pengoptimal kode TABEL SIMBOL Bagan pokok proses kompilasi Keterangan 1. Program Sumber : ditulis dalam bahasa sumber (Pascal, Assembler, dsb) 2. Program Sasaran : dapat berupa bahasa pemrograman lain atau bahasa mesin pada suatu komputer. 3. Penganalisa Leksikal : membaca program sumber, karakter demi karakter. Sederetan (satu atau lebih) karakter dikelompokkan menjadi satu kesatuan mengacu kepada pola kesatuan kelompok karakter (token) yang ditentukan dalam bahasa sumber. Kelompok karakter yang membentuk sebuah token dinamakan lexeme untuk token tersebut. Setiap token yang dihasilkan disimpan di dalam tabel simbol. Sederetan karakter yang tidak mengikuti pola token akan dilaporkan sebagai token tak dikenal (unidentified token). 4. Penganalisa sintaks : memeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan dalam bahasa sumber. Sederetan token yang tidak mengikuti aturan sintaks akan dilaporkan sebagai kesalahan sintaks (sintax error). Secara logika deretan token yang bersesuaian dengan sintaks tertentu akan dinyatakan sebagai pohon parsing (parse tree). 10

17 5. Penganalisa semantik : memeriksa token dan ekspresi dari batasanbatasan yang ditetapkan. Batasan-batasan tersebut misalnya : a. panjang maksimum token identifier adalah 8 karakter, b. panjang maksimum ekspresi tunggal adalah 80 karakter, c. nilai bilangan bulat adalah s/d 32767, d. operasi aritmatika harus melibatkan operan-operan yang bertipe sama. Melakukan analisa semantik, biasanya dalam realisasi akan digabungkan Dengan intermediate code generator (bagian yang berfungsi membangkitkan kode antara). 6. Pembangkit kode antara : membangkitkan kode antara (intermediate code) berdasar-kan pohon parsing. Pohon parse selanjutnya diterjemahkan oleh suatu penerjemah yang dinamakan penerjemah berdasarkan sintak (syntax-directed translator). Hasil penerjemahan ini biasanya merupakan perintah tiga alamat (three-address code) yang merupakan representasi program untuk suatu mesin abstrak. Perintah tiga alamat bisa berbentuk quadruples (op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresi dengan satu argumen dinyatakan dengan menetapkan arg2 dengan - (strip, dash) 7. Pembentuk Kode : membangkitkan kode objek dalam bahasa target tertentu (misalnya bahasa mesin). 8. Pengoptimal Kode : Melakukan optimasi (penghematan space dan waktu komputasi), jika mungkin, terhadap kode antara sehingga dapat memperkecil hasil dan mempercepat proses. 9. Tabel : Menyimpan semua informasi yang berhubungan dengan proses kompilasi. C. Pembuatan Compiler Pembuatan kompilator dapat dilakukan dengan: 1. Bahasa Mesin Tingkat kesulitannya tinggi, bahkan hampir mustahil dilakukan. 11

18 2. Bahasa Assembly Bahasa Assembly bisa dan biasa digunakan sebagai tahap awal pada proses pembuatan sebuah kompilator. 3. Bahasa Tingkat Tinggi lain pada mesin yang sama Proses pembuatan kopilator akan lebih mudah. 4. Bahasa tingkat tinggi yang sama pada mesin yang berbeda Misal, pembuatan kompilator C untuk DOS, berdasar C pada UNIX. 5. Bootstrap Pembuatan kompilator secara bertingkat. Library Object Code Source Code 1 Compiler 1 Object Code 1 Source Code 2 Compiler 2 Object Code 2 Lingker Executable Source Code n Compiler n Object Code n Keterangan : o Pembentukan file Executable berdasar dari beberapa Source Code. o Source Code dapat terdiri dari satu atau lebih behasa pemrograman. D. Penggunaan Compiler selain untuk programming o Mentranslasikan javadoc ke html. o Mendapatkan hasil dari SQL query (query optimization). o Printer parsing PostScript file. o Screen Scrapping. o Konversi LaTeX ke PDF. 12

19 Bab II KONSEP BAHASA AUTOMATA 2.1 Konsep Bahasa dan Automata Teori Bahasa Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan kompilator (compiler) dan pemroses naskah (text processor). Bahasa formal adalah kumpulan kalimat. Semua kalimat dalam sebuah bahasa dibangkitkan oleh sebuah tata bahasa (grammar) yang sama. Sebuah bahasa formal bisa dibangkitkan oleh dua atau lebih tata bahasa berbeda. Dikatakan bahasa formal karena grammar diciptakan mendahului pembangkitan setiap kalimatnya. Bahasa manusia bersifat sebaliknya; grammar diciptakan untuk meresmikan kata-kata yang hidup di masyarakat. Dalam pembicaraan selanjutnya bahasa formal akan disebut bahasa saja Automata Automata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept), atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu. Automata berkaitan dengan teori mesin abstrak, yaitu mesin sekuensial yang menerima input, dan mengeluarkan output, dalam bentuk diskrit. Contoh : o Mesin Jaja / vending machine o Kunci kombinasi o Parser/compiler Teori Otomata dan bahasa formal berkaitan dalam hal, yaitu: o Pembangkitan kalimat/ generation : menghasilkan semua kalimat dalam bahasa L berdasarkan aturan yang dimilikinya. o Pengenalan kalimat/ recognition : menentukan suatu string (kalimat) termasuk sebagai salah satu anggota himpunan L. 13

20 2.1.3 String Definisi Simbol adalah sebuah entitas abstrak. Sebuah huruf atau sebuah angka adalah contoh simbol. String adalah deretan terbatas (finite) simbol-simbol. Sebagai contoh, jika a, b, dan c adalah tiga buah simbol maka abcb adalah sebuah string yang dibangun dari ketiga simbol tersebut. Alfabet adalah hinpunan hingga (finite set) simbol-simbol Panjang String Definisi 1: sebuah string dengan panjang n yang dibentuk dari himpunan A adalah barisan dari n simbol. Misalnya a 1 a 2...a n ; a i A Jika w adalah sebuah string maka panjang string dinyatakan sebagai w dan didefinisikan sebagai cacahan (banyaknya) simbol yang menyusun string tersebut. Sebagai contoh, jika w = abcb maka w= String Hampa : Definisi 2 : String kosong/ String hampa (null string), dilambangkan dengan ε (atau ^) adalah untaian dengan panjang 0 dan tidak berisi apapun. String hampa adalah sebuah string dengan nol buah simbol. Maka panjang string hampa ε= 0. String hampa dapat dipandang sebagai simbol hampa karena keduanya tersusun dari nol buah simbol Operasi Dasar String Diberikan dua string : x = abc, dan y = 123 o Prefik string w adalah string yang dihasilkan dari string w dengan menghilangkan nol atau lebih simbol-simbol paling belakang dari string w tersebut. Contoh : abc, ab, a, dan adalah semua Prefix(x) 14

21 o ProperPrefix string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol-simbol paling belakang dari string w tersebut. Contoh : ab, a, dan adalah semua ProperPrefix(x) o Postfix (atau Sufix) string w adalah string yang dihasilkan dari string w dengan menghilangkan nol atau lebih simbol-simbol paling depan dari string w tersebut. Contoh : abc, bc, c, dan adalah semua Postfix(x) o ProperPostfix (atau PoperSufix) string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol-simbol paling depan dari string w tersebut. Contoh : bc, c, dan adalah semua ProperPostfix(x) o Head string w adalah simbol paling depan dari string w. Contoh : a adalah Head(x) o Tail string w adalah string yang dihasilkan dari string w dengan menghilangkan simbol paling depan dari string w tersebut. Contoh : bc adalah Tail(x) o Substring string w adalah string yang dihasilkan dari string w dengan menghilangkan nol atau lebih simbol-simbol paling depan dan/atau simbolsimbol paling belakang dari string w tersebut. Contoh : abc, ab, bc, a, b, c, dan adalah semua Substring(x) o ProperSubstring string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol-simbol paling depan dan/atau simbolsimbol paling belakang dari string w tersebut. Contoh : ab, bc, a, b, c, dan adalah semua Substring(x) o Subsequence string w adalah string yang dihasilkan dari string w dengan menghilangkan nol atau lebih simbol-simbol dari string w tersebut. Contoh : abc, ab, bc, ac, a, b, c, dan adalah semua Subsequence(x) o ProperSubsequence string w adalah string yang dihasilkan dari string w dengan menghilangkan satu atau lebih simbol-simbol dari string w tersebut. Contoh : ab, bc, ac, a, b, c, dan adalah semua Subsequence(x) 15

22 o Concatenation adalah penyambungan dua buah string. Operator concatenation adalah concate atau tanpa lambang apapun. Contoh : concate(xy) = xy = abc123 o Alternation adalah pilihan satu di antara dua buah string. Operator alternation adalah alternate atau. Contoh : alternate(xy) = x y = abc atau 123 o Kleene Closure : x* = x xx xxx = x x 2 x 3 o Positive Closure : x + = x xx xxx = x x 2 x Sifat-sifat Operasi String o Tidak selalu berlaku : x = Prefix(x)Postfix(x) o Selalu berlaku : x = Head(x)Tail(x) o Tidak selalu berlaku : Prefix(x) = Postfix(x) atau Prefix(x) Postfix(x) o Selalu berlaku : ProperPrefix(x) ProperPostfix(x) o Selalu berlaku : Head(x) Tail(x) o Setiap Prefix(x), ProperPrefix(x), Postfix(x), ProperPostfix(x), Head(x), dan Tail(x) adalah Substring(x), tetapi tidak sebaliknya o Setiap Substring(x) adalah Subsequence(x), tetapi tidak sebaliknya o Dua sifat aljabar concatenation : a. Operasi concatenation bersifat asosiatif : x(yz) = (xy)z b. Elemen identitas operasi concatenation adalah : x = x = x o Tiga sifat aljabar alternation : a. Operasi alternation bersifat komutatif : x y = y x b. Operasi alternation bersifat asosiatif : x (y z) = (x y) z c. Elemen identitas operasi alternation adalah dirinya sendiri : x x = x o Sifat distributif concatenation terhadap alternation : x (y z) = xy xz o Beberapa kesamaan : a. Kesamaan ke-1 : (x*)* = (x*) b. Kesamaan ke-2 : x + = x + = x* c. Kesamaan ke-3 : (x y)* = x y xx yy xy yx = semua string yang merupakan concatenation dari nol atau lebih x, y, atau keduanya. 16

23 2.2 Grammar dan Bahasa Definisi Tata Bahasa (grammar) bisa didefinisikan secara formal sebagai kumpulan dari himpunan-himpunan variabel, simbol-simbol terminal, simbol awal, yang dibatasi oleh aturan-aturan produksi. Bahasa adalah himpunan kalimat-kalimat. Anggota bahasa bisa tak hingga kalimat. Kalimat adalah deretan hingga (string) yang tersusun atas simbol-simbol terminal. Sentensial adalah string yang tersusun atas simbol-simbol terminal atau simbolsimbol non terminal atau campuran keduanya. Kalimat adalah merupakan sentensial, sebaliknya belum tentu. Derivasi adalah proses pembentukan sebuah kalimat atau sentensial. Sebuah derivasi dilambangkan sebagai : α β Simbol A. Simbol Terminal Pengertian terminal berasal dari kata terminate (berakhir), maksudnya derivasi berakhir jika sentensial yang dihasilkan adalah sebuah kalimat (yang tersusun atas simbol-simbol terminal itu). Simbol terminal adalah simbol yang tidak dapat diturunkan lagi. Simbol-simbol berikut adalah simbol terminal : - huruf kecil awal alfabet, misalnya : a, b, c - simbol operator, misalnya : +,, dan - simbol tanda baca, misalnya : (, ), dan ; - string yang tercetak tebal, misalnya : if, then, dan else. B. Simbol Non Terminal Pengertian non terminal berasal dari kata not terminate (belum/tidak berakhir), maksudnya derivasi belum/ tidak berakhir jika sentensial yang dihasilkan mengandung simbol non terminal. Simbol variabel /non terminal adalah simbol yang masih bisa diturunkan. Simbol-simbol berikut adalah simbol non terminal : 17

24 - huruf besar awal alfabet, misalnya : A, B, C - huruf S sebagai simbol awal - string yang tercetak miring, misalnya : - expr dan stmt Huruf besar akhir alfabet melambangkan simbol terminal atau non terminal, misalnya : X, Y, Z. Huruf kecil akhir alfabet melambangkan string yang tersusun atas simbol-simbol terminal, misalnya : x, y, z. Huruf yunani melambangkan string yang tersusun atas simbol-simbol terminal atau simbol-simbol non terminal atau campuran keduanya, misalnya : α, β, dan γ Aturan Produksi Aturan produksi men-spesifikasikan bagaimana suatu tatabahasa melakukan transformasi suatu string ke bentuk lainnya. Melalui aturan produksi didefinisikan suatu bahasa yang berhubungan dengan tata bahasa tersebut. Sebuah produksi dilambangkan sebagai α β (bisa dibaca menghasilkan ), artinya : dalam sebuah derivasi dapat dilakukan penggantian simbol α dengan simbol β. Simbol α dalam produksi berbentuk α β disebut ruas kiri produksi sedangkan simbol β disebut ruas kanan produksi. Contoh aturan produksi : T a, dibaca: T menghasilkan a E T T+E, dibaca: E menghasilkan T atau E menghasilkan T+E merupakan pemendekan dari aturan produksi : E T E T+E Grammar Grammar G didefinisikan sebagai pasangan 4 tuple : V T, V N, S, dan P. Dituliskan sebagai G(V T, V N, S, P), dimana : 18

25 - V T : himpunan simbol-simbol terminal (alfabet) kamus. - V N : himpunan simbol-simbol non terminal. - S V N : simbol awal (atau simbol start) - P : himpunan produksi. Contoh Grammar : 1. G 1 : V T = {I, Love, Miss, You}, V N = {S,A,B,C}, P = {S ABC, A I, B Love Miss, C You} S ABC IloveYou L(G 1 )={IloveYou, IMissYou} 2. G 2 : V T = {a}, V N = {S}, P = {S as a} S as aas aaa L(G 2 ) ={a n n 1} L(G 2 )={a, aa, aaa, aaaa, } Klasifikasi Chomsky Noam Chomsky melakukan penggolongan tingkatan bahasa berdasarkan aturan produksinya yang disebut dengan Hierarki Chomsky (1959). Berdasarkan komposisi bentuk ruas kiri dan ruas kanan produksinya (α β), Noam Chomsky mengklasifikasikan 4 tipe grammar. Tipe sebuah grammar (atau bahasa) ditentukan dengan aturan sebagai berikut : A language is said to be type-i (i = 0, 1, 2, 3) language if it can be specified by a type-i grammar but can t be specified any type-(i+1) grammar. Klasifikasi Chomsky 1. Grammar tipe ke-0 : Unrestricted Grammar (UG) Ciri : α, β (V T V N )*, α> 0 19

26 Mesin automata : Mesin Turing Aturan Produksi : tidak ada batasan Contoh : Bahasa manusia/bahasa alami, misalnya Abc De 2. Grammar tipe ke-1 : Context Sensitive Grammar (CSG) Ciri : α, β (V T V N ) *, 0 < α β Mesin automata : Linier Bounded Automata Aturan Produksi : Contoh : Ab DeF, CD ef, S * s = 1, = 0, ada perkecualian sehingga S dianggap memenuhi context sensitive grammar. 3. Grammar tipe ke-2 : Context Free Grammar (CFG) Ciri : α V N, β (V T V N )* Mesin automata : PDA Aturan Produksi : berupa sebuah simbol variable Contoh : B CDeFg, D BcDe 4. Grammar tipe ke-3 : Regular Grammar (RG) Ciri : α V N, β {V T, V T V N } atau α V N, β {V T, V N V T } Mesin automata : FSA meliputi DFA & NFA Aturan Produksi : - adalah sebuah simbol variable - maksimal memiliki sebuah symbol variabel yang bila ada terletak di posisi paling kanan Contoh : A e, A efg, A efgh, C D 20

27 Mesin Pengenal Bahasa Kelas Bahasa Unrestricted Grammar (UG) Context Sensitive Grammar (CSG) Context Free Gammar (CFG) Regular Grammar, RG Mesin Pengenal Bahasa Mesin Turing (Turing Machine), TM Linear Bounded Automaton, LBA Pushdown Automata, PDA Finite State Automata, FSA Keterkaitan Bahasa Analisa Grammar A. Analisa Penentuan Type Grammar 1. Grammar G 1 dengan P 1 = {S ab, B bb, B b}. Ruas kiri semua produksinya terdiri dari sebuah V N, maka G 1 kemungkinan tipe CFG atau RG. Selanjutnya karena semua ruas kanannya terdiri dari sebuah V T atau string V T V N maka G 1 adalah RG (3). 2. Grammar G 2 dengan P 2 = {S aab, B ab}. Ruas kiri semua produksinya terdiri dari sebuah V N maka G 2 kemungkinan tipe CFG atau RG. Selanjutnya karena ruas kanannya mengandung string yang panjangnya lebih dari 2 (yaitu aab) maka G 2 bukan RG, dengan kata lain G 2 adalah CFG (2). 3. Grammar G 3 dengan P 3 = {S aa, S ab, aab abcb}. 21

28 Ruas kirinya mengandung string yang panjangnya lebih dari 1 (yaitu aab) maka G 3 kemungkinan tipe CSG atau UG. Selanjutnya karena semua ruas kirinya lebih pendek atau sama dengan ruas kananya maka G 3 adalah CSG (1). 4. Grammar G 4 dengan P 4 = {S aab, B ab}. Ruas kiri semua produksinya terdiri dari sebuah V N maka G 4 kemungkinan tipe CFG atau RG. Selanjutnya karena ruas kanannya mengandung string yang panjangnya lebih dari 2 (yaitu aab) maka G 4 bukan RG, dengan kata lain G 4 adalah CFG (2). B. Derivasi Kalimat dan Penentuan Bahasa Tentukan bahasa dari masing-masing gramar berikut : 1. G 1 dengan P 1 = {1. S aaa, 2. A aaa, 3. A b}. Jawab : Derivasi kalimat terpendek : Derivasi kalimat umum : S aaa (1) S aaa (1) aba (3) aaaaa (2) anaan (2) anban (3) Dari pola kedua kalimat disimpulkan : L 1 (G 1 ) = {a n ba n n 1} 2. G 2 dg P 2 = {1. S as, 2. S ab, 3. B bc, 4. C ac, 5. C a}. Jawab : Derivasi kalimat terpendek : Derivasi kalimat umum : S ab (2) S as (1) abc (3) aba (5) a n-1 S (1) a n B (2) a n bc (3) a n bac (4) 22

29 a n ba m-1 C (4) a n ba m (5) Dari pola kedua kalimat disimpulkan : L 2 (G 2 )={a n ba m n 1, m 1} C. Menentukan Grammar Sebuah Bahasa 1. Tentukan sebuah gramar regular untuk bahasa L 1 = { a n n 1} Jawab : P1 (L 1 ) = {S as a} 2. Tentukan sebuah gramar bebas konteks untuk bahasa : L 2 : himpunan bilangan bulat non negatif ganjil Jawab : Langkah kunci : digit terakhir bilangan harus ganjil. V t ={0,1,2,..9} Vn ={S,G,J} P = {SHT JT J; TGT JT J; H ; G ;J } P={SGS JS J; G ;J } Buat dua buah himpunan bilangan terpisah : genap (G) dan ganjil (J) P 2 (L 2 ) = {S J GS JS, G , J } 23

30 Bab III FINITE STATE AUTOMATA Finite State Automata/ FSA adalah mesin yang dapat mengenali bahasa reguler tanpa menggunakan storage (memory). FSA tidak memiliki tempat penyimpanan (memory), tetapi hanya bisa mengingat state terkini saja. FSA disebut juga dengan Automata Hinga (AH). FSA/ AH sangat berhubungan dengan Regular Grammar. Dan merupakan kelas mesin dengan kemampuan-kemampuan yang paling terbatas. FSA memiliki state yang berhingga banyaknya dan dapat berpindah dari satu state ke state lainnya berdasar input dan fungsi transisi. Sejumlah status dapat didefinisikan pada mesin untuk mengingat beberapa hal secara terbatas. Manfaat nyata: 1. Software untuk mendesain dan mengecek perilaku sirkuit digital. Contoh: mesin ATM. 2. Bagian Lexical Analyzer dari berbagai kompiler yang berfungsi membagi teks input menjadi logical unit seperti Keyword, Identifier, dan pungtuasi. 3. Search engine menscan web, dan menemukan kata, frase atau pola yang tepat. 3.1 Definisi Formal Definisi 1: FSA didefinisikan sebagai pasangan 5 tupel : (Q,,, S, F). Q : himpunan hingga state : himpunan hingga simbol input (alfabet) : fungsi transisi, menggambarkan transisi state FSA akibat pembacaan simbol input. Fungsi transisi ini biasanya diberikan dalam bentuk tabel. S Q : state AWAL F Q : himpunan state AKHIR Mekanisme kerja FSA dapat diaplikasikan pada: elevator, text editor, analisa leksikal, pencek parity. 24

31 3.2 Fungsi Transisi Untuk q, r Q dan a, jika (q,a) = r terdefinisi, maka saat mesin berada dalam status q menerima masukan simbol a, mesin akan bertransisi ke status r. Dengan diagram status digambarkan dengan bulatan dan transisi dengan panah, sbb: Contoh : FSA untuk mengecek parity ganjil Q ={Gnp, Gjl} = {0,1} = S = Gnp F = {Gjl} Diagram Transisi untuk mengecek parity ganjil 3.3 Jenis jenis FSA Ada dua jenis FSA : 1. Deterministic finite automata (DFA). o Transisi state FSA akibat pembacaan sebuah simbol bersifat tertentu. : Q Q o Dari suatu state ada tepat satu state berikutnya untuk setiap simbol masukan yang diterima. 2. Non deterministik finite automata (NFA). o Transisi state FSA akibat pembacaan sebuah simbol bersifat tak tentu. : Q 2 Q 25

32 o Dari suatu state ada 0, 1 atau lebih state berikutnya untuk setiap simbol masukan yang diterima. 3.4 Deterministic finite automata (DFA) DFA disebut juga dengan Automata Hingga Deterministik (AHD). AHD sering digambarkan dengan dua cara : Table Transisi State Transisi Digraph Contoh DFA : 1. Pengujian parity ganjil. 2. Pengujian untuk menerima bit string dengan banyaknya 0 genap, serta banyaknya 1 genap : diterima : ditolak, karena banyaknya 0 ganjil. Diagram transisi-nya : 1 start q 0 1 q q 2 1 q 3 DFA nya : Q = {q 0, q 1, q 2, q 3 } = {0,1} 1 S = q 0 F = {q 0 } Fungsi transisi () = - δ( q 0,011)= δ( q 2,11) =δ( q 3,1)= q 2 (Ditolak) - δ( q 0,1010)= δ( q 1,010) =δ( q 3,10)=δ( q 2,0)= q 0 (Diterima) 3. Variabel dalam bahasa pascal diawali oleh huruf (besar/kecil), dan diikuti dengan huruf atau angka. Diagram Transisinya sebagai berikut: 26

33 A..Z,a..z,0..9 start q 0 A..Z,a..z q A..Z,a..z,0..9 q 0 4. AHD F(Q,,, S, F), dimana: Q = {q 0, q 1, q 2 } = {a, b} diberikan dalam tabel berikut : S = q 0 F = {q 0, q 1 } Ilustrasi graf untuk AHD F adalah sebagai berikut: - Lambang state awal adalah node dengan anak panah. - Lambang state awal adalah node ganda. Contoh kalimat yang diterima AHD: a, b, aa, ab, ba, aba, bab, abab, baba Contoh kalimat yang tidak diterima AHD: bb, abb, abba AHD ini menerima semua kalimat yang tersusun dari simbol a dan b yang tidak mengandung substring bb 3.5 Non deterministik finite automata (NFA) Disebut juga Automata Hingga Non Deterministik (AHN). Fungsi transisi dapat memiliki 0 atau lebih fungsi transisi. Sebuah kalimat di terima NFA jika : - Salah satu tracing-nya berakhir di state AKHIR, atau - Himpunan state setelah membaca string tersebut mengandung state AKHIR 27

34 Contoh NFA: 1. NFA (Q,,, S, F). dimana : Q = {q 0, q 1, q 2,q 3, q 4 } = {a, b,c} diberikan dalam tabel berikut: S = q 0 F = {q 4 } Diagram Transisinya: Kalimat yang diterima NFA di atas : aa, bb, cc, aaa, abb, bcc, cbb Kalimat yang tidak diterima NFA di atas : a, b, c, ab, ba, ac, bc 2. G = ({q 0, q 1, q 2, q 3, q 4 }, {0,1}, δ, q 0, {q 2, q 4 }} Diagram transisi: 0,1 0,1 0 q 3 0 q 4 q 0 1 0,1 q 1 1 q 2 28

35 Mengecek, apakah string diterima oleh mesin NFA di atas: q 0 0 q 0 1 q 0 0 q 0 0 q 0 1 q Ekuivalen Definisi 2: Dua buah FSA disebut ekuivalen apabila kedua FSA tersebut menerima bahasa yang sama. q 3 q 1 q 3 q 3 q 1 Contoh : FSA yang menerima bahasa {a n n 0 } 0 q 4 1 q 4 a a q 4 a q 4 q Indistinguishable Definisi 3: Dua buah state dari FSA disebut indistinguishable (tidak dapat dibedakan) apabila : - δ(q,w) F sedangkan δ(p,w) F dan - δ(q,w) F sedangkan δ(p,w) F untuk semua w Σ* 3.8 Distinguishable Definisi 4: Dua buah state dari FSA disebut distinguishable (dapat dibedakan) bila terdapat w Σ* sedemikian hingga: - δ(q,w) F sedangkan δ(p,w) F dan - δ(q,w) F sedangkan δ(p,w) F untuk semua w Σ* 29

36 3.9 Prosedur menentukan pasangan status indistinguishable 1. Hapus semua state yang tak dapat dicapai dari state awal. 2. Catat semua pasangan state (p,q) yang distinguishable, yaitu {(p,q) p F q F} 3. Untuk setiap pasangan (p,q) sisanya, 4. untuk setiap a Σ, tentukan δ(p,a) dan δ(q,a) Contoh: 0 q ,1 q 0 q 2 1 q q Hapus state yang tidak tercapai (tidak ada) - Pasangan distinguishable (q 0,q 4 ), (q 1,q 4 ), (q 2,q 4 ), (q 3,q 4 ). - Pasangan sisanya (q 0,q 1 ), (q 0,q 2 ), (q 0,q 3 ), (q 1,q 2 ) (q 1,q 3 ) (q 2,q 3 ) - Catatan : jumlah pasangan seluruhnya : 5 C = 2 5! 2!3! = Prosedur Reduksi DFA 1. Tentukan pasangan status indistinguishable. 2. Gabungkan setiap group indistinguishable state ke dalam satu state dengan relasi pembentukan grup secara berantai : Jika p dan q indistingishable dan jika q dan r indistinguishable maka p dan r indistinguishable, dan p,q serta r indistinguishable semua berada dalam satu grup. 3. Sesuaikan transisi dari dan ke state-state gabungan. 30

37 Contoh : - pasangan status indistinguishable (q 1,q 2 ), (q 1,q 3 ) dan (q 2,q 3 ). - q 1,q 2,q 3 ketiganya dapat digabung dalam satu state q Menyesuaikan transisi, sehingga DFA menjadi 0 0,1 q 0 0,1 q q 4 31

38 Bab IV Ekuivalensi NFA ke DFA 4.1 Algoritma Ekivalensi NFA ke DFA a. Buat semua state yang merupakan subset dari state semula. Jumlah state menjadi 2 Q b. Telusuri transisi state state yang baru terbentuk, dari diagram transisi. c. Tentukan state awal : {q 0 } d. Tentukan state akhir adalah state yang elemennya mengandung state akhir. e. Reduksi state yang tak tercapai oleh state awal. Contoh: 1. Ubahlah NFA berikut menjadi DFA Diketahui M(Q,,, S, F), dimana: Q = {q 0,q 1 } = {0,1} diberikan dalam tabel berikut : S = q0 F = {q1} Diagram transisi-nya : 0 q 0 0,1 q 1 1 State yang akan dibentuk : Telusuri state {}, {q 0 } {q 1 },{q 0,q 1 } 1 State awal : {q 0 } State akhir yang mengandung q 1, yaitu {q 1 },{q 0,q 1 } 32

39 0 {q 1 } 1 0,1 {q 0 } 1 {} 1 {q 0,q 1 } 2. Ubahlah NFA berikut menjadi DFA Diketahui M(Q,,, S, F), dimana: Q = {q 0,q 1,q 2 } = {p,r } diberikan dalam tabel berikut : S = q 0 F = {q 1 } Diagram transisi-nya : q 0 p r q 1 p,r q 2 State yang akan dibentuk : {}, {q 0 } {q 1 },{q 2 }, {q 0,q 1 }, {q 0,q 2 }, {q 1,q 2 }, {q 0,q 1,q 2 } Telusuri state p State awal : {q 0 } State akhir yang mengandung q 1, yaitu {q 1 },{q 1,q 2 } Reduksi {q 0,q 1 } {q 0,q 2 } {q 0,q 1,q 2 } sehingga FSA menjadi : r {q 0 } p {q 1,q 2 } p {q 1 } r p r p,r { } {q 2 } p,r 33

40 4.2 NFA dengan ε-move Def 1. ε-move adalah suatu transisi antara 2 status tanpa adanya input. Contoh transisi antara status q 1 ke q 2 q 0 ε q 1 ε q 2 b b ε q 3 b q 4 Def 2. ε-closure adalah himpunan state yang dapat dicapai dari suatu state tanpa adanya input. Contoh gambar : - ε-closure(q 0 ) = [q 0,q 1,q 3 ] - ε-closure(q 1 ) = [q 1,q 3 ] - ε-closure(q 3 ) = [q 3 ] 4.3 Ekuivalensi NFA dengan ε-move ke NFA tanpa ε-move Algoritma: a. Buat tabel transisi NFA dengan ε-move b. Tentukan ε-closure setiap state c. Carilah fungsi transisi/ tabel transisi yang baru, rumus : δ (state,input) = ε-closure(δ(ε-closure(state,input)) d. Tentukan state akhir ditambah dengan state yang ε-closure nya menuju state akhir, rumusnya : F = F {q (ε-closure(q) F } Contoh : q 0 ε q 1 a q 2 b q 3 Tabel transisi-nya 34

41 ε-closure dari FSA tersebut - ε-closure(q 0 ) = [q 0,q 1 ] - ε-closure(q 1 ) = [q 1 ] - ε-closure(q 2 ) = [q 2 ] - ε-closure(q 3 ) = [q 3 ] Cari tabel transisi yang baru (δ ) : Hasilnya menjadi : a a q 2 q 0 q 1 b b q Penggabungan FSA Bila diketahui L 1 adalah bahasa yang diterima oleh M 1 dan L 2 adalah bahasa yang diterima oleh M 2 maka : a. FSA M 3 yg dapat menerima L 1 +L 2 dibuat dengan cara - Tambahkan state awal untuk M 3, hubungkan dengan state awal M 1 dan state awal M 2 menggunakan transisi ε - Tambahkan state akhir untuk M 3, hubungkan dengan state-state akhir M 1 dan state-state akhir M 2 menggunakan transisi ε 35

42 b. FSA M 4 yg dapat menerima L 1 L 2 dibuat dengan cara - State awal M 1 menjadi state awal M 4 - State-state akhir M 2 menjadi state-state akhir M 4 - Hubungkan state-state akhir M 1 dengan state awal M 2 menggunakan transisi ε Contoh : - FSA M 1 dan M q A0 1 q A1 q B0 1 q B1 - FSA M q A0 1 q A1 ε ε q S ε q B0 1 q B1 1 ε q F - FSA M q A0 1 q A1 ε q B0 1 q B1 0 36

43 Bab V Ekspresi Reguler 5.1 Bahasa regular Bahasa disebut reguler jika terdapat FSA yang dapat menerimanya. Bahasa reguler dinyatakan secara sederhana dengan ekspresi reguler/regular expression (RE). Contoh penerapan : searching string pada file Hubungan RE dan NFA : Setiap RE ada satu NFA dengan ε-move yang ekuivalen. Konversi bentuk dari ekspresi regular menjadi bentuk DFA: RE -> NFA dengan ε Move -> DFA Definisi ekspresi reguler Jika Σ merupakan himpunan simbol, maka -, ε, dan a Σ adalah ekspresi reguler dasar - Jika r dan t masing masing merupakan ekspresi reguler maka komposisi berikut merupakan ekspresi reguler : Ekspresi Makna r+t himpunan string gabungan R T rt operasi penyambungan string thd himpunan r* Kleene closure dari R (r) r Contoh ekspresi reguler - (0+1)* : himpunan seluruh string yang dapat dibentuk dari simbol 0 dan 1 - (0+1)*00(0+1)* : himpunan string biner yang mengandung paling sedikit satu substring 00 - (0+1)*00 : himpunan string biner yang diakhiri dengan 00 Apabila r adalah RE, maka L(r) adalah bahasa reguler yang dibentuk menggunakan ekspressi reguler r. 37

44 1. Tentukan bahasa reguler yang dibentuk oleh r = (aa)* Jawab: L(r) = L( (aa)* ) = {ε, aa, aaaa, aaaaaa,... } = { a 2 n n 0 } menyatakan himpunan string a dengan jumlah genap 2. Tentukan ekspresi reguler pembentuk bahasa pada Σ = {0,1}, yaitu L(r) = { w Σ* w memiliki substring 00 } Jawab: r = (0+1)*00(0+1)* 5.2 Sifat Bahasa Reguler a. Tertutup terhadap operasi himpunan sederhana Jika L 1 dan L 2 adalah bahasa reguler, maka L 1 L 2, L 1 L 2, L 1 L 2, ~(L 1 ) dan L 1 * adalah bahasa reguler juga b. Tertutup terhadap homomorphic image - Jika L 1 adalah bahasa reguler, maka homomorphic image h(l 1 ) adalah bahasa reguler juga. - Dimisalkan Σ dan Γ adalah alfabet, maka fungsi homomorphic dinyatakan dengan h : Σ Γ - Jika w = a 1 a 2... a n, maka h(w) = h(a 1 ) h(a 2 )... h(a n ) - Jika L adalah bahasa pada Σ maka homomorphic image bahasa L adalah h(l)= { h(w) w L} Contoh: Dimisalkan Σ = {a,b} dan Γ = {a,b,c} dan didefinisikan h(a) = ab dan h(b) =bbc homomorphic image bahasa L = {aa,aba } adalah : Jawab: h(l)= { abab, abbbcab} 38

45 5.3 Konversi ekspresi reguler ke FSA Contoh : Tentukan FSA untuk ekspresi reguler r = 0(1 23)* 5.4 DFA dan Tatabahasa Reguler Tatabahasa Linier kiri dan linier kanan Suatu tatabahasa G(T,N,S,P) disebut linier kiri jika seluruh aturan produksinya berbentuk A xb dengan A, B N dan x T* Suatu tatabahasa G(T,N,S,P) disebut linier kanan jika seluruh aturan produksinya berbentuk A Bx dengan A, B N dan x T* Tatabahasa reguler bisa bersifat linier kiri atau linier kanan. 39

46 Contoh : - Tatabahasa G = { {a,b}, {S}, S, P } dengan aturan produksi P adalah S abs a adalah tatabahasa linier kanan /regular - Tatabahasa G = {{a,b}, {S, S 1,S 2 }, S, P } dengan aturan produksi P adalah S S 1 ab, S 1 S 1 ab S 2, S 2 a adalah tatabahasa linier kiri /reguler - Tatabahasa G = {{a,b}, {S, A, B}, S, P } dengan aturan produksi P adalah S A, A ab ε, B Ab, adalah bukan tatabahasa regular Konversi DFA ke tatabahasa linier Setiap DFA dapat diubah menjadi tatabahasa yang memiliki aturan produksi yang linier. Aturan pengubahan ini adalah sebagai berikut : - setiap transisi status δ(a,a)=b diubah menjadi aturan produksi A ab - setiap status akhir P diubah menjadi aturan produksi Pε Contoh FSA berikut q 0 ε q 1 a q 2 b q 3 Tatabahasa linier untuk FSA tersebut yaitu G = ({a,b}, {S,S 1,S 2,S 3 }, S, P ) dengan aturan produksi P adalah : S S 1, S 1 as 2, S 1 bs 3, S 3 ε Konversi tatabahasa linier ke DFA - setiap aturan produksi A ab diubah menjadi transisi status δ(a,a)=b - setiap aturan produksi A a diubah menjadi δ(a,a)=sf - untuk a T* dengan a >1 dapat dibuat state tambahan - setiap aturan produksi A B diubah menjadi δ(a,ε)=b Contoh: Tata bahasa G = ({a,b}, {V 0,V 1 }, V 0, P ) dengan P: V 0 av 1 40

47 V 1 abv 0 b Mesin FSA nya menjadi V 0 a b V 1 V f b a 5.5 Penerapan ekspresi regular Digunakan untuk memerinci unit-unit leksikal sebuah bahasa pemrograman (token). Contoh: - ekspresi reguler bilangan real positif ( )( )*.( ) ( )* - ekspresi reguler bilangan bulat ( λ) ( )( )* - Editor text 5.6 Pumping lemma Apabila suatu bahasa merupakan bahasa reguler maka akan dapat diterima oleh mesin DFA M=(Q,Σ,δ,q0,F), dgn sejumlah state n. Apabila string w dengan w n diinputkan dalam DFA, maka pasti ada simpul k dalam DFA yang dikunjungi lebih dari satu kali. Apabila string diantara simpul k yang sama tersebut dipompa, maka sisanya pasti masih diterima oleh DFA tersebut. Contoh : Bahasa yang menerima ekspresi reguler 0(10)*11 q 0 0 q 1 1 q 3 1 q q 2 Ambil string w L, dengan w n: w= q 0 0 q 1 1 q 2 0 q 1 1 q 3 1 q 4 41

48 simpul q 1 dikunjungi 2 kali. String diantara simbol q 1 tersebut dapat dipompa keluar menjadi q 0 0 q 1 1 q 3 1 q 4 string 011 tersebut masih dapat diterima oleh FSA. Secara formal, Misal L adalah sebuah bahasa reguler infinite, maka terdapat sebuah konstanta n dengan sifat bahwa jika w adalah sebuah string dalam L yang panjangnya lebih besar atau sama dengan n maka kita bisa menulis w = uvx sedemikian sehingga uv i x L untuk semua i 0. dengan v 1 dan uv n. Notasi matematisnya z L z n ( L)( n)( z) ( )( ( )( i u, v, w z = uvw uv n v 1 i uv w L ) Penjelasan, Untuk memperlihatkan bahwa suatu bahasa infinite tidak reguler, maka kita tunjukkan bahwa untuk nilai n yang cukup besar, sekurang-kurangnya satu untai yang panjangnya n atau lebih besar gagal untuk dapat dipompa Contoh : L = {a i^2 i 1} {a 1, a 4,a 9, a 16,...} {a, aaaa, aaaaaaaaa, aaaaaaaaaaaaaaaa,... } Suatu string dalam L harus mempunyai panjang yang berupa nilai kuadrat (1,4,9,16,..., n 2,...). Misal bahwa L adalah bahasa reguler. Perhatikan bahwa terdapat sebuah nilai n sedemikian sehingga a n^2 L, Menurut pumping lemma dapat kita tuliskan a n^2 = uvx, sedemikian hingga - 1 v n - ( i) (uv i w L) karena v 1 maka jelas bahwa uvw < uv2w < uv2w <... ambil i = 2 maka kita dapatkan n 2 = uvw < uv 2 w n 2 + n < (n+1) 2 Jelas bahwa n 2 < uv 2 w < (n+1) 2 Panjang uv 2 w bukan merupakan kuadrat sempurna, karena berada diantara 2 nilai kuadrat sempurna yang berurutan.berarti uv 2 w L Jadi disimpulkan bahwa L = {a i^2 i 1} bukan merupakan bahasa reguler. 42

49 Bab VI FSA dengan Output Konsep FSA dengan output FSA: merupakan accepter, dapat menerima atau tidak. FSA dengan output : transducer - Mesin Moore :output berasosiasi dengan state - Mesin Mealy :output berasosiasi dengan transisi 6.1 Mesin Moore M = (Q,Σ,δ,S,,λ) Q : himpunan state Σ : himpunan simbol input δ : fungsi transisi S : state awal S Q : himpunan output λ : fungsi output untuk setiap state Contoh: Mesin moore untuk memperoleh modulus 3 pada suatu bilangan biner: M = (Q,Σ,δ,S,,λ) Q : q 0,q 1,q 2 Σ : [0,1] S : q 0 : [0,1,2] λ(q 0 ) =0 λ(q 1 ) =1 λ(q 2 ) =2 Prinsip: - jika i diikuti dengan 0, maka hasilnya 2i 43

50 101 2 = = 2*5 =10 - jika i diikuti dengan 1, maka hasilnya 2i = = 2*5+1 =11 - jika i/3 mempunyai sisa p, maka untuk input berikutnya bernilai 0 maka 2i/3 mempunyai sisa 2p mod 3 a. untuk p=0 maka 2p mod 3 = 0 b. untuk p=1 maka 2p mod 3 = 2 c. untuk p=2 maka 2p mod 3 = 1 - jika i/3 mempunyai sisa p, maka untuk input berikutnya bernilai 1 maka (2i+1)/3 mempunyai sisa (2p+1) mod 3 a. untuk p=0 maka (2p+1) mod 3 = 1 b. untuk p=1 maka (2p+1) mod 3 = 0 c. untuk p=2 maka (2p+1) mod 3 = 2 - Sehingga didapat mesin FSA sbb : 0 1 q 0 /0 1 q 1 /1 0 q 2 / Contoh : a. input 5 (101 2 ), state terakhir q 2 /2, 5 mod 3 = 2 b. input 10 ( ),state terakhir q 1 /1, 10 mod 3=1 6.2 Mesin Mealy M = (Q,Σ,δ,S,,λ) Q : himpunan state Σ : himpunan simbol input δ : fungsi transisi S : state awal S Q : himpunan output λ : fungsi output untuk setiap transisi Contoh: Mesin Mealy untuk mendeteksi ekspresi reguler (0+1)*(00+11) 44

51 Jawab : M = (Q,Σ,δ,S,,λ) Q : q 0,q 1,q 2 Σ : [0,1] 0/Y S : q 0 : [0,1,2] λ(q 0,0) =T q 0 0/T 1/T q 1 0/T λ(q 0,1) =T 1/T λ(q 1,0) =Y q 2 λ(q 1,1) =T 1/Y λ(q 2,0) =T λ(q 2,1) =Y 6.3 Ekuivalensi mesin Moore dengan mesin Mealy Mesin Moore ke mesin Mealy Jml state = jml state sebelum * jml output 1 1 q 0 T 0 q 1 T 0 q 2 T q 0 Y 0 q 1 Y 1 q 2 Y Mesin Mealy ke mesin Moore - Menambah label output pada transisi - Menghapus label output pada state 45

52 0/0 1/2 q 0 1/1 0/2 q 1 q 2 1/0 0/1 Contoh kasus 1: Tentukan FSA dari rangkaian sirkuit berikut ini. Asumsi bahwa terdapat waktu yang cukup untuk perambatan sinyal menuju kondisi yang stabil. y1 F input x y2 Contoh kasus 2 Kelereng dijatuhkan dari A atau B. Percabangan x 1,x 2 dan x 3 menentukan saluran mana yang akan dilewati kelereng (kiri / kanan). Ketika percabangan dilewati, kelereng berikutnya akan melewati dengan saluran berbeda. Buatlah FSA nya A B X1 X2 X3 C D 46

53 Bab VII Bahasa Bebas Konteks 7.1 Tata Bahasa Bebas Konteks Deskripsi bahasa alami <kalimat> <subjek> <predikat> <subjek> <kata benda> <predikat> <kata kerja> <kata benda> kucing <kata kerja> berlari <kata kerja> menyapu Contoh kalimat yang dapat dihasilkan kucing berlari kucing menyapu (sintaks yes, semantik no) Dalam tatabahasa bebas konteks - Ruas kiri dari aturan produksi terdiri dari SATU simbol non terminal - Ruas kanan dapat berupa string yang dibentuk dari simbol terminal dan non terminal. Contoh 1. S asb ε Kalimat-kalimat yang dibangkitkan dari aturan produksi itu adalah ε,ab,aabb,aaabbb,..., a n b n 2. A 0A0 A 1A1 A a Kalimat-kalimat yang dibangkitkan dari aturan produksi itu adalah a,01a10, 1001a1001, 110a011 βaβ R 3. S asb SS ε 47

54 Bahasa yang dihasilkan oleh tatabahasa dengan aturan produksi di atas: L = {w (a + b)* na(w) =nb(w) } 7.2 Leftmost dan Rightmost Derivation Suatu penguraian/ penurunan dikatakan leftmost derivation bila setiap tahapan penurunan variabel / non terminal terkiri yang diuraikan. Apabila setiap tahapan penurunan variabel / non terminal paling kanan yang diuraikan disebut rightmost derivation. Contoh 1: - G = ({A,B,S}, {a,b},s,p} dengan aturan produksi P : S AB A aaa λ B Bb λ - Menspesifikasikan bahasa L(G) = {a 2n b m n 0, m 0} - Leftmost derivation untuk menghasilkan string aab S AB aaab aab aabb aab - Righmost derivation untuk menghasilkan string aab S AB ABb aaabb aaab aab Contoh 2: - G = ({A,B,S}, {a,b},s,p} dengan aturan produksi P : S aab A bbb B A λ - Leftmost derivation untuk menghasilkan string abbbb S aab abbbb ababb abbbbbb abbbbb abbbb - Righmost derivation untuk menghasilkan string aab S aab aa abbb abab abbbbb abbbb 48

55 7.3 Pohon urai Untuk menampilkan penguraian, dapat dilakukan dengan membentuk pohon urai (urutan penguraian tidak terlihat). Pohon urai untuk contoh sebelumnya : S a A B b B b A λ b B b λ 7.4 Parsing dan Keanggotaan Untuk menentukan apakah string w berada di L(G), dengan cara secara sistematis membangun semua kemungkinan penurunan, dan mencocokkan hasilnya apakah ada yang sama dengan string w. (disebut exhaustive search parsing) Contoh : Menentukan apakah string ab berada pada bahasa yang dibentuk oleh grammar dengan aturan produksi S SS asb bsa λ Untuk penguraian pertama 1. S SS 2. S asb 3. S bsa 4. S λ Penguraian nomor 3 dan 4 tidak perlu dilanjutkan. Penguraian 1 membentuk: Penguraian 2 membentuk: 1a. S SS SSS 2a. S asb assb 1b. S SS asbs 2b. S asb aasbb 1c. S SS bsas 2c. S asb absab 1d. S SS S 2d. S asb ab 49

56 7.5 Ambiguitas pada Tatabahasa dan Bahasa Tatabahasa bebas konteks G disebut ambigu jika terdapat beberapa w L(G) yang mempunyai paling sedikit dua buah pohon penurunan. Contoh pada tatabahasa dengan aturan produksi S SS asb λ string aabb mempunyai 2 pohon penurunan : S S a S b S S a S b λ a S b λ a S b λ 7.6 Pumping Lemma untuk bahasa bebas konteks Jika suatu rangkaian simbol /string yang cukup panjang yang merupakan sebuah bahasa bebas konteks, maka kita dapat menemukan dua substring yang jaraknya berdekatan yang jika dipompa, string baru yang diperoleh merupakan bahasa bebas konteks juga. Secara formal, lemma diatas dinyatakan dengan z L z n ( L)( n)( z) z = uvwxy vwx n vx 1 ( u, v, w, x, y ) ( )( i i ) i uv wx y L Syarat kedua lokasi berdekatan dinyatakan dengan kondisi vwx n Jika salah satu v atau x diambil sebagai string kosong, maka lemma diatas berubah menjadi lemma untuk bahasa regular. Contoh tatabahasa dengan aturan produksi: S uay A vax A w maka aturan derivasinya 50

57 S uay uwy S uay uvaxy uvwxy S uay uvaxy uvvaxxy uvvwxxy sehingga untuk setiap i 0, uv i wx i y L 7.7 Sifat - sifat tertutup bahasa bebas konteks 1. Gabungan dua CFL merupakan CFL juga Jika diketahui dua buah CFG G 1 = (N 1,T 1,S 1,P 1 ) dan G 2 =(N 2,T 2,S 2,P 2 ) yang menghasilkan bahasa L 1 dan L 2, maka CFG L 1 L 2 dapat dibentuk dengan cara : - Menggabungkan kedua himpunan dan menambahkan satu simbol variabel baru S. - Menggabungkan kedua himpunan simbol terminal. - Menggabungkan kedua himpunan aturan produksi dan menambahkan satu aturan produksi baru S S 1 S 2 yang digunakan untuk memilih salah satu simbol awal S 1 atau S 2 dari simbol awal baru S. G 3 = (N 1 N 2 {S},T 1 T 2,S,P 1 P 2 {S S 1 S 2 }} 2. Penyambungan dua CFL merupakan CFL juga Jika diketahui dua buah CFG G 1 = (N 1,T 1,S 1,P 1 ) dan G 2 =(N 2,T 2,S 2,P 2 ) yang menghasilkan bahasa L 1 dan L 2, maka bahasa L 1 L 2 dapat dibentuk oleh : G 4 = (N 1 N 2 {S},T 1 T 2,S,P 1 P 2 {S S 1 S 2 }} 3. Kleene Klosure dari CFL adalah CFL juga. Kleene Klosure dari tatabahasa G=(N,T,S 1,P) adalah G 5 = (N {S}, T, S, P {S S 1 S ε } ) 4. Bahasa bebas konteks tertutup terhadap substitusi Contoh: L a = {0 n 1 n n 1 } dan L b = { ww R w (0+2)* } dihasilkan oleh tatabahasa G a dengan aturan produksi S a 0S a 1 01 serta tatabahasa G 2 dengan aturan produksi S b 0S b 0 2S b 2 ε 51

58 7.8 Substitusi Didefinisikan tatabahasa G dengan aturan produksi S asbs bsas ε jika f adalah substitusi f(a)= L a dan f(b) = L b maka f(l) adalah bahasa yang dihasilkan oleh tatabahasa dengan aturan produksi S S a SS b S S b SS a S ε S a 0S a 1 01 S b 0S b 0 2S b 2 ε 7.9 Tatabahasa Bebas Konteks dan Bahasa Pemrograman Tatabahasa bebas konteks digunakan untuk mendefinisikan sintaks bahasa pemrograman menggunakan notasi BNF (Backus-Naur Form) - variabel / non terminal : <...> - terminal : tanpa tanda - diganti dengan ::= Contoh statemen if then else < if_statement> ::= if <expression> <then_clause> <else_clause> 52

59 Bab VIII Penyederhanaan Tata Bahasa Bebas Konteks Tujuan Melakukan pembatasan sehingga tidak menghasilkan pohon penurunan yang memiliki kerumitan yang tidak perlu atau aturan produksi yang tidak berarti. Contoh 1. S AB a Aa Aturan produksi S AB tidak berarti karena B tidak memiliki penurunan 2. SA AB BC CD D a A Memiliki kelemahan terlalu panjang jalannya padahal berujung pada S a, produksi D A juga menyebabkan kerumitan. Cara Penyederhanaan: 1. Penghilangan produksi useless (tidak berguna) 2. Penghilangan produksi unit 3. Penghilangan produksi 8.1 Penghilangan Produksi Useless Di sini produksi useless didefinisikan sebagai produksi yang memuat simbol variabel yang tidak memiliki penurunan yang akan menghasilkan terminal-terminal seluruhnya. Produksi yang tidak akan pernah dicapai dengan penurunan apapun dari simbol awal, sehingga produksi itu redundan (berlebih) Prinsipnya Setiap kali melakukan penyederhanaan diperiksa lagi aturan produksi yang tersisa, apakah semua produksi yang useless sudah hilang. 53

60 Contoh : 1. S asa Abd Bde A Ada B BBB a Maka, - Simbol variabel A tidak memiliki penurunan yang menuju terminal, sehingga bisa dihilangkan. - Konsekuensinya, aturan produksi S Abd tidak memiliki penurunan Penyederhanaan menjadi: SaSa Bde B BBB a 2. S Aa B Aab D B b E C bb E aea Maka, - Aturan produksi A D, simbol variabel D tidak memiliki penurunan. - Aturan produksi C bb, Penurunan dari simbol S, dengan jalan manapun tidak akan pernah mencapai C - Simbol variabel E tidak memiliki aturan produksi yang menuju terminal - Konsekuensi no (3) Aturan produksi B E, simbol variabel E tidak memiliki penurunan. Maka produksi yang useless: Penyederhanaannya menjadi: A D S Aa B C bb A ab E aea B b B E 3. S aab ceb 54

61 A dbe eec B ff C ae D h Analisa : - Aturan produksi S ceb, A dbe dapat dihilangkan (E tidak memiliki penurunan) - Aturan produksi D h, redundan Sisa aturan produksi S aab A eec B ff C ae Hasil penyederhanaan : S aab A eec C ae Analisis lagi B ff juga redundan, 8.2 Penghilangan Produksi Unit Produksi dimana ruas kiri dan kanan aturan produksi hanya berupa satu simbol variabel, misalkan: A B, C D. Keberadaannya membuat tata bahasa memiliki kerumitan yang tak perlu. Penyederhanaan dilakukan dengan melakukan penggantian aturan produksi unit. Contoh : 1. S Sb S C C D C ef D dd 55

62 Dilakukan penggantian berturutan mulai dari aturan produksi yang paling dekat menuju ke penurunan terminal-terminal ( => dibaca menjadi ): C D => C dd S C => S dd ef Sehingga aturan produksi setelah penyederhanaan: S Sb S dd ef C dd C ef C dd 2. S A S Aa A B B C B b C D C ab D b Penggantian yang dilakukan : C D => C b B C => B b ab, karena B b sudah ada, maka cukup dituliskan B ab A B => A ab b S A => ab b Sehingga aturan produksi setelah penyederhanaan: S ab b B b S Aa C b A ab b C ab B ab D b 56

63 8.3 Penghilangan Produksi Produksi adalah produksi dalam bentuk, atau bisa dianggap sebagai produksi kosong (empty). Penghilangan produksi dilakukan dengan melakukan penggantian produksi yang memuat variabel yang bisa menuju produksi, atau biasa disebut nullable. Prinsip penggantiannya bisa dilihat kasus berikut: S bcad A A nullable serta A satu-satunya produksi dari A, maka variabel A bisa ditiadakan, hasil penyederhanaan tata bahasa bebas konteks menjadi: S bcd Contoh: 1. Tetapi bila kasusnya: S bcad A bd A nullable, tapi A bukan satu-satunya produksi dari A, maka hasil penyederhanaan: S bcad bcd A bd 2. S Ab Cd A d C Variabel yang nullable adalah variabel C. Karena penurunan C merupakan penurunan satu-satunya dari C, maka kita ganti S Cd menjadi S d. Kemudian produksi C kita hapus. Setelah penyederhanaan menjadi: S Ab d A d 3. Contoh tata bahasa bebas konteks: S AaCD 57

64 A CD AB B b C d D Variabel yang nullable adalah variabel B, C, D. Kemudian dr A CD, maka variabel A juga nullable ( A ). Karena D hanya memilki penurunan D, maka kita sederhanakan dulu: S AaCD => S AaC A CD => A C D kita hapus Selanjutnya kita lihat variabel B dan C memiliki penurunan, meskipun bukan satu-satunya penurunan, maka dilakukan penggantian: A AB => A AB A B S AaC => S AaC ac Aa a B dan C kita hapus Setelah penyederhanaan: S AaC ac Aa a A C AB A B B b C 8.4 Pengembangan praktek Ketiga penyederhanaan tersebut dilakukan bersama pada suatu tata bahasa bebas konteks, yang nantinya menyiapkan tata bahasa bebas konteks tersebut untuk diubah kedalam suatu Bentuk Normal Chomsky (BNF) Urutan penghapusan aturan produksi : - Hilangkan produksi - Hilangkan produksi unit - Hilangkan produksi useless Contoh: S AA C bd 58

65 A Bb B AB d C de Jawab: - Hilangkan produksi, sehingga menjadi: S A AA C bd A Bb B B AB d C de - Selanjutnya penghilangan produksi unit menjadi: S Bb AA de bd A Bb B AB d C de Penghilangan produksi unit bisa menghasilkan produksi useless. - Terakhir dilakukan penghilangan produksi useless: S Bb AA de bd A Bb B AB d - Hasil akhir aturan produksi tdk lagi memiliki produksi, produksi unit, maupun produksi useless. 59

66 Bab IX Bentuk Normal Chomsky 9.1 Pengertian Bentuk normal Chomsky / Chomsky Normal Form (CNF) merupakan salah satu bentuk normal yang sangat berguna untuk tata bahasa bebas konteks (CFG). CNF dapat dibuat dari sebuah tata bahasa bebas konteks yang telah mengalami penyederhanaan yaitu penghilangan produksi, useless, unit, dan. Dengan kata lain, suatu tata bahasa bebas konteks dapat dibuat menjadi CNF dengan syarat tata bahasa bebas konteks tersebut : o Tidak memiliki produksi useless o Tidak memiliki produksi unit o Tidak memiliki produksi 9.2 Aturan produksi Aturan produksi dalam CNF ruas kanannya tepat berupa sebuah terminal atau dua variabel. Misalkan: o A BC o A b o B a o C BA d 9.3 Pembentukan CNF Langkah-langkah pembentukan CNF secara umum sbb: 1. Biarkan aturan produksi yang sudah dalam CNF. 2. Lakukan penggantian aturan produksi yang ruas kanannya memuat simbol terminal dan panjang ruas kanan > Lakukan penggantian aturan produksi yang ruas kanannya memuat > 2 simbol variabel. 60

67 4. Penggantian-penggantian tersebut bisa dilakukan berkali-kali sampai akhirnya semua aturan produksi dalam CNF. 5. Selama dilakukan penggantian, kemungkinan kita akan memperoleh aturan-aturan produksi baru, dan juga memunculkan simbol-simbol variabel baru. 9.4 Bagan Tahapan Pembentukan CNF Contoh (kita anggap CFG sudah mengalami penyederhanaan ) 1. S ba ab A baa as a B abb bs b - Aturan produksi yang sudah dalam CNF: A a B b - Dilakukan penggantian aturan produksi yang belum CNF S ba => S P 1 A S ab => S P 1 B A baa => S P 1 AA => A P 1 P 3 A as => A P 2 S B abb => B P 2 BB => B P 2 P 4 B bs => B P 1 S - Terbentuk aturan produksi dan simbol variabel baru: 61

68 P 1 b P 2 a P 3 AA P 4 BB - Hasil akhir aturan produksi dalam CNF : A a B b S P 1 A S P 2 B A P 1 P 3 A P 2 S B P 2 P 4 B P 1 S P 1 b P 2 a P 3 AA P 4 BB 2. S ab CA A a bc B BC Ab C ab b - Aturan produksi yang sudah dalam CNF : S CA A a B BC C b - Penggantian aturan produksi yang belum dalam CNF : S ab => S P 1 B A bc => S P 2 P 3 B Ab => B A P 2 62

69 C ab => C P 1 B - Terbentuk aturan produksi dan simbol variabel baru: P 1 a P 2 b P 3 c - Hasil akhir aturan produksi dalam CNF : S CA A a B BC C b S P 1 B S P 2 P 3 B A P 2 C P 1 B P 1 a P 2 b P 3 c 9.5 Algoritma CYK untuk Tata Bahasa Bebas Konteks Algoritma CYK merupakan algoritma parsing dan keanggotaan (membership) untuk tata bahasa bebas konteks. Algortima ini diciptakan oleh J. Cocke, DH. Younger, dan T. Kasami. Syarat untuk penggunaan algortima ini adalah tata bahasa harus berada dalam bentuk CNF. Obyektif dari algortima ini adalah untuk menunjukkan apakah suatu string dapat diperoleh dari suatu tata bahasa. Algoritma CYK sebagai berikut: begin 1. for i:= 1 to n do 2. V i1 := {A A a aturan produksi dimana simbol ke- i adalah a }; 3. for j:= 2 to n do 63

70 4. for i:= 1 to (n-j+1) do begin 5. V ij :=Ø; 6. for k:=1 to (j 1) do 7. V ij := V ij ( A A BC adalah suatu produksi, dimana B di V ik dan C di V i+k,j-k } end end Penjelasan n = panjang untai yang akan diperiksa, missal : untuk untai ada, n = ada = 3 i akan menyatakan kolom ke- j akan menyatakan baris ke- tahapan no (1) dan (2) untuk mengisi table baris pertama kolom 1 n no (3), interasi dari baris ke- 2 sampai n no (4), interasi untuk mengisi kolom 1 sampai ( n baris + 1) pada suatu baris. no (5) inisialisasi V ij dengan Ø no (6) dan no (7), interasi untuk memeriksa mana saja yang menjadi anggota V ij Contoh kasus terdapat tata bahasa bebas konteks (simbol awal S ) : S AB BC A BA a B CC b C AB a Periksalah apakah untai baaba termasuk kedalam bahasa tersebut! Pertama tama kita akan membuat tabel untuk V ij ( V kolom,baris ) sebagai berikut : 64

71 Tabel diatas kita gunakan untuk mempermudah kita dalam menyelesaikan persoalan, i akan menyatakan kolom, j akan menyatakan baris. Kita ketahui n = 5. Dari Algoritma langkah (1) dan (2) kita bisa mengisi baris pertama pada tabel, sebagai berikut: Untuk V 11, kita periksa variabel yang bisa menurunkan b, dari B b kita isi V 11 = {B} Untuk V 21, kita periksa variabel yang bisa menurunkan a, dari A a dan C a kita isi V 21 ={A,C} Untuk V 31, kita periksa varibel yang bisa menurunkan a, dari A a dan C a kita isi V 31 ={A,C} Untuk V 41, kita periksa variabel yang bisa menurunkan b, dari B b kita isi V 41 ={B} Untuk V 51, kita periksa variabel yang bisa menurunkan a, dari A a dan C A kita isi V 51 ={A,C} Dari hasil tersebut kita bisa mengisi tabel : Selanjutnya kita akan mengisi baris ke-2 sampai n sebagai berikut : Pada baris ke -2 ( k =1 ) Untuk V 12, periksa V ik - V i+k, j-k, berarti V 11 -V 21, yaitu B-A,C, variabel yang bisa menurunkan BA atau BC adalah S dan A, maka V 12 kita isi {S, A} Untuk V 22, periksa V ik V i+k, j-k, berarti V 21 -V 31, yaitu A,C-A,C, variabel yang bisa menurunkan AA, AC, CA, atau CC adalah B maka V 22 kita isi {B} Untuk V 32, periksa V ik -V i+k, j-k, berarti V 31 -V 41 yaitu A, C-B, variabel yang bisa menurunkan AB atau CB adalah S dan C, maka V 32 kita isi {S, C} Untuk V 42, periksa V ik -V i+k, j-k berarti V 41 -V 51, yaitu A,C-B, variabel yang bisa menurunkan AB atau CB adalah S dan C, maka V 42 kita isi {S,A} 65

72 Dari hasil tersebut kita bisa mengisi tabel: Pada baris ke 3 (k = 1 sampai 2): Untuk V 13, periksa V ik -V i+k, j-k, berarti V 11 -V 22 & V 12 -V 31, yaitu B-B & S,A- A,C, variabel yang bisa menurunkan BB, SA,SC,AA, atau AC adalah tidak ada, maka V 13 kita isi Untuk V 23, periksa V ik -V i+k, j-k, berarti V 21 -V 32 & V 22 -V 41, yaitu A,C-S,C & B- B, variabel yang bisa menurunkan AS, AC, CS, CC, atau BB adalah B, maka V 23 kita isi {B} Untuk V 33, periksa V ik -V i+k, j-k, berarti V 31 -V 42 & V 32 -V 51, yaitu A,C-S,A & S,C-A,C variabel yang bisa menurunkan AS, AA, CS, CA, SA, SC, CA, atau CC adalah B, maka V 33 kita isi {B} Dari hasil tersebut kita bisa mengisi tabel: Pada baris ke 4 ( k = 1 sampai 3): Untuk V 14, periksa V ik -V i+k, j-k, berarti V 11 -V 23 & V 12 -V 32 & V 13 -V 41, yaitu B- B & S,A-S,C & -B, variabel yang bisa menurunkan BB, SS, SC, AS AC adalah tidak ada, maka V 14 kita isi Untuk V 24, periksa V ik -V i+k, j-k, berarti V 21 -V 33 & V 22 -V 42 & V 23 -V 51, yaitu A,C-B & B-S,A & B-S,A & B-A,C, variabel yang bisa menurunkan AC, AB, BS, BA, BC adalah S, C, A, maka V 24 kita isi {S,A,C} 66

73 Dari hasil tersebut kita bisa mengisi tabel: Pada baris ke 5 ( k = 1 sampai 4 ) Untuk V 15, periksa V ik -V i+k, j-k, berarti V 11 -V 24 & V 12 -V 33 & V 13 -V 42 & V 14 - V 51 yaitu B-S,A,C & S,A-B & -S,A & -A,C, variabel yang bisa menurunkan BA, BC, SA, SC, SB, atau AB adalah A,S,C maka V 15 kita isi {S,A,C} Dari hasil tersbut kita bisa mengisi tabel: Perhatikan Syarat suatu untai dapat diturunkan dari simbol awal, V 1n memuat simbol awal. Terlihat pada tabel, simbol awal S termuat di V 15, maka untai baaba dapat diturunkan oleh tata bahasa tersebut. Kita bisa mencoba-coba untuk membuat pohon penurunan dari untai baaba, 67

74 Pohon penurunan untuk untai baaba 68

75 Bab X Penghilangan Rekursif Kiri 10.1 Aturan Produksi Rekursif Aturan Produksi yang rekursif memiliki ruas kanan (hasil produksi) yang memuat simbol variabel pada ruas kiri. - Sebuah aturan produksi dalam bentuk: A A merupakan aturan produksi yang rekursif kanan. = (V T)* atau kumpulan simbol variabel dan terminal. Contoh aturan produksi yang rekursif kanan: S ds B adb - Produksi dalam bentuk: A A merupakan aturan produksi yang rekursif kiri, Contohnya: S Sd B Bad Produksi yang rekursif kanan menyebabkan pohon penurunan tumbuh ke kanan, sebaliknya produksi yang rekursif kiri menyebabkan pohon penurunan tumbuh ke kiri Pohon Penurunan Bisa dilihat pohon penurunan pada gambar dari tata bahasa bebas konteks dengan aturan produksi: S aac A Ab Pohon penurunan sebuah CFG yang rekursif kiri 69

76 Dalam banyak penerapan tata bahasa, rekursif kiri tak diinginkan. Untuk menghindari penurunan yang bisa mengakibatkan loop kita perlu menghilangkan sifat rekursif kiri dari aturan produksi. Penghilangan rekursif kiri disini memungkinkan suatu tata bahasa bebas konteks nantinya diubah ke dalam bentuk normal Greibach Tahapan Penghilangan Rekursif Kiri 1. Pisahkan aturan produksi yang rekursif kiri dan yang tidak, - Misal : aturan produksi rekursif kiri: A A 1 A 2 A 3... A n - Aturan produksi yang tidak rekursif kiri (termasuk produksi ): A m 2. Dari situ kita bisa tentukan 1, 2,... n, dan 1, 2,... m dari setiap aturan produksi yang memiliki simbol ruas kiri yang sama 3. Lakukan penggantian aturan produksi yang rekursif kiri, menjadi sebagai berikut: - A 1 Z 2 Z... m Z - Z n - Z 1 Z 2 Z 3 Z... n Z Penggantian diatas dilakukan untuk setiap aturan produksi dengan simbol ruas kiri yang sama. Bisa muncul simbol variabel baru Z 1,Z 2 dan seterusnya, sesuai banyaknya variabel yang menghasilkan produksi yang rekursif kiri. 4. Hasil akhir berupa aturan produksi pengganti ditambah dengan aturan produksi semula yang tidak rekursif kiri. 5. Tahapan-tahapan tersebut bisa dilihat pada Gambar berikut : Aturan produksi yang tidak rekursif kiri CFG mengandung aturan produksi yang rekursif kiri Aturan produksi yang rekursif kiri Lakukan penggantian munculkan aturan produksi baru dan simbol variabel baru CFG bebas dari aturan produksi yang rekursif kiri 70

77 Contoh : 1. Tata bahasa bebas konteks: S Sab asc dd ff Sbd - Pertama-tama kita lakukan pemisahan aturan produksi Aturan produksi yang rekursif kiri: S Sab Sbd Dari situ kita tentukan untuk simbol ruas kiri S: 1 =ab, 2 =bd Aturan produksi yang tidak rekursif kiri: S asc dd ff Dari situ kita dapatkan untuk simbol ruas kiri S: 1 =asc, 2 =dd, 3 =ff - Kita lakukan penggantian aturan produksi yang rekursif kiri: Untuk yang memiliki simbol ruas kiri S: S Sab Sbd, digantikan oleh: S ascz 1 dd Z 1 ffz 1 Z 1 ab bd Z 1 abz 1 bd Z 1 - Hasil akhir setelah penghilangan rekursif kiri adalah: S asc dd ff S ascz 1 dd Z 1 ffz 1 Z 1 ab bd Z 1 abz 1 bd Z 1 * Pada kasus diatas S adalah satu-satunya simbol variabel yang menghasilkan produksi rekursif kiri. 2. Terdapat tata bahasa bebas konteks: S Sab Sb ca A Aa a bd - Pertama-tama kita lakukan pemisahan aturan produksi Aturan produksi yang rekursif kiri: S Sab Sb A Aa 71

78 Dari situ kita tentukan: Untuk simbol ruas kiri S: 1 = ab, 2 =b Untuk simbol ruas kiri A: 1 = a Aturan produksi yang tidak rekursif kiri: S ca A a bd Dari situ kita dapatkan Untuk simbol ruas kiri S: 1 = ca Untuk simbol ruas kiri A: 1 = a, 2 = bd - Kita lakukan penggantian aturan produksi yang rekursif kiri: Untuk yang memiliki simbol ruas kiri S: S Sab Sb, digantikan oleh: S caz 1 Z 1 ab b Z 1 abz 1 bz 1 Untuk yang memiliki simbol ruas kiri A : A Aa, digantikan oleh: A a Z 2 bdz 2 Z 2 a Z 2 a Z 2 - Hasil akhir setelah penghilangan rekursif kiri adalah: S ca Z 1 abz 1 bz 1 A a bd A a Z 2 bdz 2 S caz 1 Z 2 a Z 1 ab b Z 2 az 2 * Perhatikan bahwa penghilangan rekursif kiri memunculkan simbol variabel baru, dan aturan produksi baru yang rekursif kanan. 72

79 Bab XI Bentuk Normal Greibach 11.1 Pengertian Bentuk Normal Greibach Bentuk normal Greibach merupakan bentuk normal yang memiliki banyak konsekuensi teoritis dan prkatis. Dalam bentuk normal Greibach kita membatasi posisi munculnya terminal-terminal dan variabel-variabel. Suatu tata bahasa bebas konteks (CFG) dikatakan dalam bentuk normal Greibach/ Greibach Normal Form (GNF), jika setiap aturan produksinya ada dalam bentuk: A a a: simbol terminal (tunggal), a T : rangkaian simbol-simbol variabel (V*) Atau dengan kata lain, suatu tata bahasa bebas konteks dalam bentuk normal Greibach bila hasil produksinya (ruas kanan) diawali dengan satu simbol terminal, selanjutnya bisa diikuti oleh rangkaian simbol variabel. Contoh tata bahasa bebas konteks dalam bentuk bentuk normal Greibach: S a aab A ab B cs Untuk dapat diubah ke dalam bentuk normal Greibach, tata bahasa semula harus memenuhi syarat: Sudah dalam bentuk normal Chomsky Tidak bersifat rekursif kiri Tidak menghasilkan Terdapat dua cara pembentukan bentuk normal Greibach, yaitu melalui substitusi dan perkalian matriks Pembentukan GNF dengan Substitusi Secara umum langkah-langkah untuk mendapatkan bentuk normal Greibach: 1. Tentukan urutan simbol-simbol variabel yang ada dalam tata bahasa. Misalkan terdapat m variabel dengan urutan A 1,A 2,..,A m 73

80 2. Berdasarkan urutan simbol yang ditetapkan pada langkah (1) seluruh aturan produksi yang ruas kanannya diawali dengan simbol variabel dapat dituliskan dalam bentuk A h A i dimana h <> i (rekrusif kiri sudah dihilangkan), bisa berupa simbol variabel a. Jika h < i, aturan produksi ini sudah benar ( tidak perlu diubah) b. Jika h > i, aturan produksi belum benar. Lakukan substitusi berulangulang terhadap A i (ganti A i pada produksi ini dengan ruas kanan produksi dari variabel A i ) sehingga suatu saat diperoleh produksi dalam bentuk A h A p (dimana h p ) - Jika h = p, lakukan penghilangan rekursif kiri - Jika h < p, aturan produksi sudah benar 3. Jika terjadi penghilangan rekursif kiri pada tahap (2b), sejumlah simbol variabel baru yang muncul dari operasi ini dapat disisipkan pada urutan variabel semula dimana saja asalkan ditempatkan tidak sebelum A h (di kiri) 4. Setelah langkah (2) & (3) dikerjakan maka aturan-aturan produksi yang ruas kanannya dimulai simbol variabel sudah berada dalam urutan yang benar A x A y γ ( di mana x < y ) Produksi-produksi yang lain ada dalam bentuk: A x a γ ( a = simbol terminal ) B x γ (B 2 = simbol variabel baru yang akan muncul sebagai akibat dari operasi penghilangan rekursif kiri) 5. Bentuk normal Greibach diperoleh dengan cara melakukan substitusi mundur mulai dari variabel A m, lalu A m-1, A m-2,... Dengan cara ini aturan produksi dalam bentuk A x A y γ dapat diubah sehinga ruas kanannya dimulai dengan simbol terminal. 6. Produksi dalam bentuk B x γ juga dapat diubah dengan cara substitusi seperti pada langkah (5) Contoh 74

81 (tata bahasa bebas konteks sudah dalam bentuk normal Chomsky dan memenuhi syarat untuk diubah ke bentuk normal Greibach), simbol awal adalah S: S CA A a d B b C DD D AB Kita tentukan urutan simbol variabel, misalnya S, A, B, C, D (S<A<B<C<D). *Perhatikan urutan tersebut boleh anda tentukan sendiri, buatlah urutan sedemikian sehingga memudahkan untuk proses selanjutnya Kita periksa aturan produksi yang simbol pertama pada ruas kanan adalah simbol variabel, apakah sudah memenuhi ketentuan urutan variabel: S CA ( sudah memenuhi aturan karena S<C) C DD (sudah memenuhi karena C<D) D AB (tidak memenuhi, karena D>A) Yang belum memenuhi urutan yang telah kita tentukan adalah: D AB, karena ruas kiri > simbol pertama pada ruas kanan. Maka kita lakukan substitusi pada simbol variabel A, aturan produksi menjadi: D ab db Setelah semua aturan produksi sudah memenuhi ketentuan urutan variabel, kita lakukan substitusi mundur pada aturan produksi yang belum dalam bentuk normal Greibach ( => dibaca menjadi ): C DD => C abd dbd S CA => S abda dbda *Perhatikan substitusi mundur dimulai dari aturan produksi yang memiliki ruas kiri dengan urutan variabel paling akhir (kasus di atas:s<a<b<c<d, maka C lebih dulu disubstitusikan daripada S) Hasil akhir aturan produksi yang sudah dalam bentuk normal Greibach : 75

82 S abda dbda A a d B b C abd dbd D ab db *Perhatikan : setiap substitusi kita lakukan pada simbol variabel pertama pada ruas kanan ( pada aturan produksi yang belum bentuk normal Greibach tentunya ). Prinsipnya: Biarkan aturan produksi yang sudah dalam bentuk normal Greibach Tentukan pengurutan simbol variabel, berdasarkan kondisi aturan produksi yang ada buatlah urutan sedemikian sehingga memudahkan untuk proses selanjutnya. Mulailah terlebih dahulu dari seimbol awal. Lakukan perubahan pada aturan produksi yang belum memenuhi ketentuan urutan tersebut dan bila perlu selama proses itu bisa dilakukan substitusi dan penghilangan rekursif kiri Lakukan substitusi mundur sedemikian rupa sehingga semua aturan produksi akan diawali dengan tepat sebuah simbol terminal. Proses substitusi mundur dimulai dari aturan produksi dengan urutan paling akhir. Lakukan substitusi mundur juga pada aturan produksi baru yang muncul sebagai hasil penghilangan rekursif kiri. 76

83 Bab XII PUSHDOWN AUTOMATA (PDA) 12.1 Pendahuluan FA tidak mampu mengenali bahasa yang memiliki karakteristik x n y n. Hal ini dikarenakan FA tidak memiliki kemampuan untuk mengingat jumlah kemunculan x untuk digunakan pada saat memeriksa jumlah kemunculan y. Kita akan tambahkan kemampuan mengingat berbentuk stack pada mesin modifikasi FA sehingga dapat memecahkan permasalahan ini. Mesin ini dikenal dengan Pushdown Automata (PDA). PDA memiliki beberapa bagian yakni: a. Input stream b. Finite state c. Mekanisme kontrol yang memungkinkan berpindah dari state 1 ke state lain. d. Tepat 1 initial state e. Minimal 1 final state/ accepted state f. Stack yang berguna mengingat. g. Machine symbol. Machine symbol merupakan finite symbol yang dapat disimpan didalam stack. Mungkin semua alphabet, Mungkin beberapa alphabet, Dan mungkin beberapa symbol yang tidak dikenal oleh alphabet (contoh#) Transisi Dengan adanya pengingat, maka mesin harus dapat melakukan beberapa hal pada saat melakukan transisi: Membaca simbol input, Mem-pop simbol, Mem-push simbol, 77

84 Bertransisi ke state lain Definisi Formal PDA PDA adalah pasangan 7 tuple M = (Q, Σ, Γ, q, Z, δ, F), dimana : Q : himpunan hingga state, Σ : alfabet input, Γ : alfabet stack, q Q : state awal, Z Γ : simbol awal stack, F Q : himpunan state penerima, fungsi transisi δ : Q (Σ {ε}) Γ 2 Q Γ* (himpunan bagian dari Q Γ*) Untuk state q Q, simbol input a Σ, dan simbol stack X Γ, δ(q, a, X) = (p, α) berarti PDA bertransisi ke state p dan mengganti X pada stack dengan string α. Konfigurasi PDA pada suatu saat dinyatakan sebagai triple (q, x, α), dimana : - q Q : state pada saat tersebut, x Σ* : bagian string input yang belum dibaca, dan - α Γ* : string yang menyatakan isi stack dengan karakter terkiri menyatakan top of stack. Misalkan (p, ay, Xβ) adalah sebuah konfigurasi, dimana : a Σ, y Σ*, X Γ, dan β Γ*. Misalkan pula δ(p, a, X) = (q, γ) untuk q Q dan γ Γ*. Dapat kita tuliskan bahwa : (p, ay, Xβ) (q, y, βγ). Contoh (PDA Deterministik): PDA : M = (Q, Σ, Γ, q 0, Z 0, δ, F) pengenal palindrome L = {xcx x (a b)*}, dimana x adalah cermin(x), mempunyai tuple : Q = {q 0,q 1,q 2 }, F = {q 2 }, 78

85 Σ = {a, b, c}, Γ = {A, B, Z 0 }, dan fungsi transisi δ terdefinisi melalui tabel : Sebagai contoh, perhatikan bahwa fungsi transisi No. 1 dapat dinyatakan sebagai : δ(q, a, Z) = (q, az). Pada tabel transisi tersebut terlihat bahwa pada state q PDA akan melakukan PUSH jika mendapat input a atau b dan melakukan transisi state ke state q jika mendapat input c. Pada state q PDA akan melakukan POP. Berikut ini pengenalan dua string oleh PDA di atas : - abcba : (q 0, abcba, Z 0 ) (q 0, bcba, AZ 0 ) (1) (q 0, cba, BAZ 0 ) (4) (q 1, ba, BAZ 0 ) (9) (q 1, a, AZ 0 ) (11) (q 1, ε, Z 0 ) (10) (q 2, ε, Z 0 ) (12) (diterima) - acb : (q, acb, Z) (q, cb, AZ) (1) (q, b, AZ) (8), (crash ditolak) - ab : (q, ab, Z) (q, b, AZ) (1) (q, ε, BAZ) (4) (crash ditolak) Penerimaan dan penolakan 3 string di atas dapat dijelaskan sebagai berikut : 79

86 string abcba diterima karena tracing sampai di state penerima (q 2 ) dan string abcba selesai dibaca (string yang belum dibaca = ε) string acb ditolak karena konfigurasi akhir (q 1, b, a Z 0 ) sedangkan fungsi transisi δ(q 1, b, a) tidak terdefinsi string ab ditolak karena konfigurasi akhir (q 0, ε, baz 0 ) sedangkan fungsi transisi δ(q 0, ε, b) tidak terdefinsi Ilustrasi graf fungsi transisi PDA di atas ditunjukkan melalui gambar berikut : Notasi (p, ay, Xβ) (q, y, βγ) dapat diperluas menjadi : (p, x, α) (q, y, β)*, yang berarti konfigurasi (q, y, β) di transisi. capai melalui sejumlah (0 atau lebih) Ada dua cara penerimaan sebuah kalimat oleh PDA, yang masing-masing terlihat dari konfigurasi akhir, sebagaimana penjelasan berikut : Jika M = (Q, Σ, Γ, q 0, Z 0, δ, F) adalah PDA dan x Σ*, maka x diterima dengan state akhir (accepted by final state) oleh PDA M jika: (q 0, x, Z 0 ) * (q, ε, α) untuk α Γ * dan q A. x diterima dengan stack hampa (accepted by empty stack) oleh PDA M jika : (q0, x, Z0) * (q, ε, ε) untuk q Q. Contoh (PDA Non-Deterministik): 80

87 PDA M = (Q, Σ, Γ, q0, Z0, δ, F) pengenal palindrome L = {xx x (a b)*} mempunyai komponen tuple berikut : Q = {q 0,q 1,q 2 }, F = {q2}, Σ = {a, b}, Γ = {a, b, Z 0 }, dan fungsi transisi δ terdefinisi melalui tabel : Pada tabel transisi tersebut terlihat bahwa pada state q 0 PDA akan melakukan PUSH jika mendapat input a atau b dan melakukan transisi state ke state q 1 jika mendapat input ε. Pada state q 1 PDA akan melakukan POP. Kedua Contoh di atas menunjukkan bahwa PDA dapat dinyatakan sebagai mesin PUSH-POP. Berikut ini pengenalan string baab oleh PDA di atas : - (q 0, baab, Z 0 ) (q 0, aab, bz 0 ) (2 kiri) (q 0, ab, abz 0 ) (5 kiri) (q 1, ab, abz 0 ) (3 kanan) (q 1, b, bz 0 ) (11) (q 1, ε, Z 0 ) (10) (q 2, ε, Z 0 ) (12) (diterima) - (q 0, baab, Z 0 ) (q 1, baab, Z 0 ) (2 kanan) (crash ditolak) 81

88 - (q 0, baab, Z 0 ) (q 0, aab, bz 0 ) (2 kiri) (q 0, ab, abz 0 ) (q 0, b, aabz 0 ) (q 1, b, aabz 0 ) (5 kiri) (3 kiri) (4 kanan) (crash ditolak) - (q 0, baab, Z 0 ) (q 0, aab, bz 0 ) (2 kiri) (q 0, ab, abz 0 ) (5 kiri) (q 0, b, aabz 0 ) (3 kiri) (q 0, ε, baabz 0 ) (4 kiri) (q 1, ε, baabz 0 ) (9) (crash ditolak) q 0,aba,z = q 0,ba,az = q 1, a, az = q 1, ε, z =q 2, ε,ε 82

89 Bab XIII Mesin Turing 13.1 Sejarah Mesin Turing adalah model komputasi teoritis yang ditemukan oleh Alan Turing (1936), berfungsi sebagai model ideal untuk melakukan perhitungan matematis. Walaupun model ideal ini diperkenalkan sebelum komputer nyata dibangun, model ini tetap diterima kalangan ilmu komputer sebagai model komputer yang sesuai untuk menentukan apakah suatu fungsi dapat selesaikan oleh komputer atau tidak (menentukan computable function). Mesin Turing terkenal dengan ungkapan " Apapun yang bisa dilakukan oleh Mesin Turing pasti bisa dilakukan oleh komputer Mekanisme TM - Sebuah mesin turing terdiri atas barisan sel tersusun berupa pita yang dapat bergerak maju mundur, komponen aktif baca/ tulis pita yang memiliki status perhitungan serta dapat mengubah/ menulisi sel aktif yang ada di pita tadi, dan suatu kumpulan instruksi bagaimana komponen baca/ tulis ini harus melakukan modifikasi terhadap sel aktif pada pita, serta bagaimana menggerakkan pita tersebut. - Pada setiap langkah dalam komputasi, mesin ini akan dapat mengubah isi dari sel yang aktif, mengubah status dari komponen baca/ tulis, dan mengubah posisi pita kekiri atau kekanan Definisi Formal Sebuah Mesin Turing dinyatakan dalam 7 tupel M = (Q, Σ, S, δ, F, Γ, ), dimana : Q : himpunan hingga state, Σ : alfabet input, Γ : alfabet Pita, Σ Γ S Q : state awal, Γ : simbol pita kosong (blank) 83

90 F Q : himpunan state akhir/penerima, fungsi transisi δ : Q Γ (Q Γ (R,L)) δ(q 0,0) = (q 1,1,R) 13.4 Ilustrasi TM sebagai sebuah mesin 13.5 Ilustrasi TM sebagai sebuah graf berarah 1. Sebagaimana graf, TM terdiri dari beberapa node dan beberapa edge. Dari satu node mungkin terdapat satu atau lebih edge yang menuju node lainnya atau dirinya sendiri. 2. Sebuah node menyatakan sebuah stata (state). Dua stata penting adalah stata awal S (start) dan stata penerima H (halt). Sesaat sebelum proses pengenalan sebuah kalimat, TM berada pada stata S. Jika kalimat tersebut dikenali maka, setelah selesai membaca kalimat tersebut, TM akan akan berhenti pada stata H. 3. Sebiya edge mempunyai bobot yang dinotasikan sebagai triple : (a, b, d). a adalah karakter acuan bagi karakter dalam sel pita TM yang sedang dibaca head. Jika yang dibaca head adalah karakter a maka a akan di-overwrite dengan karakter b dan head akan berpindah satu sel ke arah d (kanan atau kiri). 4. Kondisi crash akan terjadi jika ditemui keadaan sebagai berikut : 84

91 Contoh Rancanglah sebuah mesin turing pengenal bahasa L = {a n b n n 0). Jawab : L tersebut terdiri dari 2 kelompok kalimat yaitu ε dan non-ε. Kelompok non-ε adalah : ab, aabb, aaabbb, dan seterusnya. Untuk dapat menerima kalimat ε TM harus mempunyai edge dari S ke H dengan bobot (ε,ε, R). TM menerima kalimatkalimat : ab, aabb, aaabbb, dan seterusnya, dengan algoritma sebagai berikut : 1. Mulai dari S, head membaca simbol a. 2. Head membaca simbol a. Tandai simbol a yang sudah dibaca tersebut, head bergerak ke kanan mencari simbol b pasangannya. 3. Head membaca simbol b. Tandai simbol b yang sudah dibaca tersebut, head bergerak ke kiri mencari simbol a baru yang belum dibaca/ditandai. 4. Ulangi langkah 2 dan Head sampai ke H hanya jika semua simbol a dan simbol b dalam kalimat anbn selesai dibaca. Algoritma di atas lebih diperinci lagi sebagai berikut : 1. Mulai dari S, head membaca simbol a. 2. Overwrite a tersebut dengan suatu simbol (misalkan A) untuk menandakan bahwa a tersebut sudah dibaca. Selanjutnya head harus bergerak ke kanan untuk mencari sebuah b sebagai pasangan a yang sudah dibaca tersebut. i. Jika yang ditemukan adalah simbol a maka a tersebut harus dilewati (tidak boleh dioverwrite), dengan kata lain a dioverwrite dengan a juga dan head bergerak ke kanan. ii. Jika TM pernah membaca simbol b ada kemungkinan ditemukan simbol B. Simbol B tersebut harus dilewati (tidak boleh dioverwrite), artinya B diover-write dengan B juga dan head bergerak ke kanan. 3. Head membaca simbol b, maka b tersebut harus dioverwrite dengan simbol lain (misalnya B) untuk menandakan bahwa b tersebut (sebagai pasangan dari a) telah dibaca, dan head bergerak ke kiri untuk mencari simbol A. 85

92 i. Jika ditemukan B maka B tersebut harus dilewati (tidak boleh dioverwrite), dengan kata lain B dioverwrite dengan B juga dan head bergerak ke kiri. ii. Jika ditemukan a maka a tersebut harus dilewati (tidak boleh dioverwrite), dengan kata lain a dioverwrite dengan a juga dan head bergerak ke kiri. 4. Head membaca simbol A, maka A tersebut harus dilewati (tidak boleh dioverwrite), dengan kata lain A dioverwrite dengan A juga dan head bergerak ke kanan. 5. Head membaca simbol a, ulangi langkah 2 dan (Setelah langkah 3) head membaca simbol A, maka A tersebut harus dilewati (tidak boleh dioverwrite), dengan kata lain A dioverwrite dengan A juga dan head bergerak ke kanan. 7. Head membaca simbol B, maka B tersebut harus dilewati (tidak boleh dioverwrite), dengan kata lain B dioverwrite dengan A juga dan head bergerak ke kanan. 8. Head membaca simbol ε, maka ε dioverwrite dengan ε dan head bergerak ke kanan menuju stata H. Skema graf Mesin Turing di atas adalah : 86

93 Bab XIV Aplikasi FSA dan CFG pada Pengembangan Kompilator 14.1 Scanner Tata bahasa bebas konteks dapat diaplikasikan pada penganalisis sintaksis dari suatu source code. Dimana simbol terminal maupun simbol variabelnya sudah bukan satu karakter, tetapi berupa besaran leksik sebagai simbol terminalnya dan besaran sintaks sebagai simbol variabelnya. Penganalisis leksikal biasa disebut dengan scanner. Scanner bekerja berdasarkan mesin FSA yang ada pada Bahasa Reguler. Untuk membantu mengkonstruksi scanner dapat digunakan Diagram Keadaan. Tugas Scanner Merunut karakter demi karakter. Mengenali besaran leksik. Mentransformasi menjadi sebuah token. Mengirimkan token. Membuang/mengabaikan blank dan komentar dalam program. Menangani kesalahan. Menangani tabel simbol Parser Penganalisis sintaktik disebut parser. Proses parsing merupakan tahapan analisis sintaksis yang berguna untuk memeriksa urutan kemunculan token. Recursif descent parser adalah salah satu cara untuk mengaplikasikan tata bahasa bebas konteks untuk melakukan analisis sintaksis suatu source code. Ciri ciri Recursif descent parser a. Ciri dari Recursif descent parser adalah secara rekursif menurunkan semua variabel dari awal sampai bertemu terminal dan tidak pernah mengambil 87

94 token secara mundur (no backtrack). Hal ini berbeda dengan mesin Turing yang dapat maju dan mundur dalam melakukan parsing. b. Ciri lain adalah sangat bergantung pada algoritma Scan dalam mengambil token Tool bantuan untuk konstruksi Scanner dan Parser a. Diagram Keadaan (State Transition Diagram) b. Notasi BNF (Backus Naur Form) c. Diagram Sintaks A. Diagram Keadaan Digunakan untuk mendapatkan token melalui analisis leksikal terhadap program sumber. Misalkan suatu bahasa memiliki himpunan simbol terminal (token) berikut: t_plus t_min t_id t_int Token t_id (identifier) bisa berupa nama atau keyword (kata kunci yang sudah didefinisikan oleh suatu bahasa). Misalkan terdapat statement: VAR jumlah : integer Maka VAR dan integer adalah keyword. jumlah adalah sebuah nama yang dideklarasikan sendiri oleh pemrogram. Token t_id harus diawali dengan karakter huruf (A Z, a z), dan bisa diikuti didit (0 9) atau huruf. Token t_int harus diawali dengan digit dan bisa diikuti dengan digit pula. Blank merupakan bagian program sumber yang diabaikan (dilewati) saja, misalnya spasi kosong. 88

95 Gambar Diagram Keadaan B. Notasi BNF (Backus Naur Form) Aturan-aturan produksi dapat dinyatakan dalam bentuk BNF. BNF telah banyak digunakan untuk melakukan definisi formal bahasa pemrograman. Beberapa simbol yang dipakai dalam notasi BNF sebagai berikut: ::= Identik dengan simbol pada aturan produksi Idem dengan simbol serupa pada aturan produksi <> Mengapit simbol variabel/ non terminal {} Pengulangan 0 sampai n kali Contoh - Aturan Produksi E T T + E T E, T - Notasi BNF E ::= <T> <T> + <E> <T> - <E>, T ::= 89

96 C. Diagram Sintaks Diagram Sintaks merupakan alat bantu dalam pembentukan parser/ analisis sintaksis. Notasi yang tedapat pada diagram sintaks: Empat persegi panjang melambangkan simbol variabel/ non terminal, Bulatan melambangkan simbol terminal. Contoh - Misalkan terdapat aturan produksi: T F*T F / T F - Diagram sintaksnya sbb: Biasanya diagram sintaks digunakan untuk memperoleh deskripsi dari suatu notasi BNF. Misalkan notasi BNF untuk block: <block> ::= t_begin <statement> { t_semicol <statement> } t_end Diagram sintaksnya sbb: 14.4 Implementasi Scanner dan Parser Contoh source code berikut ini: 90

97 Pada contoh diatas, besaran leksik (token)nya adalah simbol yang bernilai program, coba, var, A, integer, :, +, 2,., ;, :=, begin, end. Sedangkan besaran sintaksnya tidak kelihatan karena diterapkan dalam aturan produksinya. Rincian dari tata bahasa yang dipergunakan untuk penganalisis sintaksis adalah sebagai berikut: V = { <program>, <blok>, <statement>, <exp>, <simple_exp>, <factor>, <sign>, <arit_op> } T = { t_prog, t_begin, t_end, t_if, t_then, t_else, t_plus, t_min, t_mul, t_div, t_int, t_eq, t_lt, t_gt, t_ass, t_col, t_semicol, t_dot, t_id } S = <program> P = (ditulis dalam notasi BNF) <program> ::= t_prog t_id t_semicol <blok> t_dot <block> ::= t_begin <statement> { t_semicol <statement> } t_end <statement> ::= t_id t_ass <simple_exp> t_if <exp> t_then <statement> t_if <exp> t_then <statement> t_else <statement> <exp> ::= <simple_exp> t_eq <simple_exp> <simple_exp> t_lt <simple_exp> <simple_exp> t_gt <simple_exp> simple_exp> ::= <factor> { <arit_op> <factor> } <sign> <factor> { <arit_op> <factor> } <sign> ::= t_plus t_min <arit_op> ::= t_plus t_min t_mul t_div <factor> ::= t_int t_id Himpunan simbol terminal/ token yang diperoleh: <, >, =, <=, >=, <> Atau bisa dibaca sebagai token-token: t_l, t_g, t_e, t_le, t_ge, t_ne (G = greater, L = less, E = Equal, N = Not) 91

98 Untuk token lainnya bisa ditambahkan sendiri. Bahasa tersebut juga mendukung penulisan komentar yang di awali dengan { dan diakhiri }. Diagram Keadaan untuk memperoleh token: Scanner biasanya di implementasikan sebagai sebuah prosedur yang di panggil oleh Parser. Kita bisa membuat prosedur scan sederhana yang akan membaca input dan memberikan token hasilnya. Misalnya didefinisikan dulu Procedure GetChar yang berguna mengambil sebuah karakter dari file input.!"# $ Dimana, FileInput : text, Kar: character Ingat bahwa pada scanner kita akan maju satu per satu karakter untuk mendapatkan token. Selanjutnya kita buat Procedure Scan. Pada program yang akan kita buat di batasi delimiternya hanyalah spasi. Diasumsikan karakter pertama sudah dibaca sebelum Procedure Scan dipanggil. Procedure Scan yang dibuat belum memperhitungkan kemungkinan token yang tidak dikenali (error). % 92

99 &"'' ()*))+), - )". '/' )". '' *01$2 '34 *05$2 ) *012 '' *0$2 '34."'' *0$2 ) *02 '(' (+)**, "',4 (+*+*, $62(*., 7.)()*) **.!* *)**, $ 93

100 Aturan Produksi dalam notasi BNF diatas, dapat dibuat diagram sintaksnya untuk lebih mempermudah. a. Diagram Sintaks Program b. Diagram Sintaks Block c. Diagram Sintaks Statement d. Diagram Sintaks Exp 94

101 Pada diagram sintaks di atas, langsung digambarkan karakter token-nya, misal : - ; untuk t_semicol, -. untuk t_dot, - < untuk t_lt, - := untuk t_ass, - dan seterusnya. Implementasi Untuk mengimplementasikan aturan-aturan produksi memakai teknik Recursif- Descent dengan aturan sebagai berikut: Semua simbol variabel dijadikan prosedur/ fungsi. Jika ketemu simbol terminal pada aturan produksi, maka panggil prosedur Scan. Jika ketemu simbol variabel pada aturan produksi, maka panggil prosedurnya. Selanjutnya akan membuat prosedur Program, Block, Statement, dan Exp, berdasarkan notasi BNF di atas. Prosedur Program 95

BAB I TEORI BAHASA DAN AUTOMATA

BAB I TEORI BAHASA DAN AUTOMATA Bab 1 Teori Bahasa dan Automata 1 BAB I TEORI BAHASA DAN AUTOMATA TUJUAN PRAKTIKUM 1. Memahami Tentang Teori Bahasa 2. Memahami Automata dan Istilah Istilah yang terdapat dalam Automata 3. Mengerti Tentang

Lebih terperinci

Teknik Informatika PERTEMUAN 2. TEORI BAHASA & OTOMATA Imam Riadi, M.Kom Shofwatul Uyun, M.Kom. Teknik Informatika

Teknik Informatika PERTEMUAN 2. TEORI BAHASA & OTOMATA Imam Riadi, M.Kom Shofwatul Uyun, M.Kom. Teknik Informatika TEORI BAHASA FST UIN SUKA TEORI BAHASA (PENDAHULUAN) PERTEMUAN 2 Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan kompilator (compiler) dan pemroses naskah

Lebih terperinci

TEORI BAHASA DAN OTOMATA [TBO]

TEORI BAHASA DAN OTOMATA [TBO] TEORI BAHASA DAN OTOMATA [TBO] Otomata (Automata) Otomata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept), atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu. Beberapa

Lebih terperinci

Dasar Teori Bahasa & Grammar

Dasar Teori Bahasa & Grammar Dasar Teori Bahasa & Grammar Dasar Teori Bahasa Grammar & Bahasa Klasifikasi Noam Chomsky Teori Bahasa Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan

Lebih terperinci

MATERI PERTEMUAN KE-1

MATERI PERTEMUAN KE-1 TEORI BAHASA DAN OTOMATA MATERI PERTEMUAN KE-1 TEORI BAHASA Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan kompilator (compiler) dan pemroses naskah (text

Lebih terperinci

Teori Komputasi 10/15/2015. Bab 3: Konsep Bahasa dan Otomata. Teori Bahasa. Teori Bahasa. Agenda. Teori Bahasa Otomata Operasi Dasar String

Teori Komputasi 10/15/2015. Bab 3: Konsep Bahasa dan Otomata. Teori Bahasa. Teori Bahasa. Agenda. Teori Bahasa Otomata Operasi Dasar String Teori Komputasi Agenda. Teori Bahasa Bab 3: Konsep Bahasa dan Fakultas Teknologi dan Desain Program Studi Teknik 1-1 Informatika Konsep Bahasa dan 2 Teori Bahasa Teori bahasa membicarakan bahasa formal

Lebih terperinci

TEORI BAHASA DAN OTOMATA

TEORI BAHASA DAN OTOMATA TEORI BAHASA DAN OTOMATA MATERI KULIAH : Topik Substansi 1 Kontrakpembelajaran, Pendahuluan a. Ketentuan dalam Kuliah b. Pengertian Bahasa c. Pengertian Otomata 2 Pengertian Dasar dan Operasi pada string

Lebih terperinci

anggota alfabet dinamakan simbol terminal atau token.

anggota alfabet dinamakan simbol terminal atau token. GRAMMAR DAN BAHASA MATERI MINGGU KE-2 TATA BAHASA Dalam pembicaraan tata bahasa, anggota alfabet dinamakan simbol terminal atau token. Kalimat adalah deretan hingga simbo-lsimbol terminal. Bahasa adalah

Lebih terperinci

Pendahuluan. Tujuan Pembelajaran :

Pendahuluan. Tujuan Pembelajaran : Tujuan Pembelajaran : 1. Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler 2. Mahasiswa memahami konsep pembuatan sebuah Compiler 3. Mahasiswa mengetahui bagaimana sebuah bahasa

Lebih terperinci

Teori Bahasa dan Operasi Matematis.

Teori Bahasa dan Operasi Matematis. Teori Bahasa dan Operasi Matematis http://www.brigidaarie.com Terminologi Bahasa Manfaat bahasa adalah sebagai media komunikasi yang menggunakan sekumpulan simbol dan dikombinasikan menurut aturan sintaksis

Lebih terperinci

KONSEP GRAMMAR DAN BAHASA

KONSEP GRAMMAR DAN BAHASA KONSEP GRAMMAR DAN BAHASA Konsep Dasar 1. Dalam pembicaraan grammar, anggota alfabet dinamakan simbol terminal atau token. 2. Kalimat adalah deretan hingga simbol-simbol terminal. 3. Bahasa adalah himpunan

Lebih terperinci

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo TEKNIK KOMPILASI P 1/52 MATERI Teknik Kompilasi II 2/52 Pendahuluan Tujuan Pembelajaran : 1. Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler 2. Mahasiswa memahami konsep pembuatan

Lebih terperinci

GRAMMAR AND LANGUAGE

GRAMMAR AND LANGUAGE GRAMMAR AND LANGUAGE Konsep Dasar Anggota alfabet dinamakan simbol terminal. Kalimat adalah deretan hingga simbol-simbol terminal. Bahasa adalah himpunan kalimat-kalimat. Anggota bahasa bisa tak hingga

Lebih terperinci

Bahasa adalah kumpulan kalimat. Kalimat adalah rangkaian kata. Kata adalah komponen terkecil kalimat yang tidak bisa dipisahkan lagi.

Bahasa adalah kumpulan kalimat. Kalimat adalah rangkaian kata. Kata adalah komponen terkecil kalimat yang tidak bisa dipisahkan lagi. Konsep dan Notasi Bahasa Teori Bahasa Bahasa adalah kumpulan kalimat. Kalimat adalah rangkaian kata. Kata adalah komponen terkecil kalimat yang tidak bisa dipisahkan lagi. Contoh : Si Kucing kecil menendang

Lebih terperinci

metodenumerikblog.wordpress.com Retno Tri Vulandari, S.Si, M.Sc

metodenumerikblog.wordpress.com Retno Tri Vulandari, S.Si, M.Sc Retno Tri Vulandari, S.Si, M.Sc String Simbol KALIMAT Bahasa TEORI BAHASA Bahasa Formal Adalah suatu sistem yang terdiri atas sejumlah berhingga state yang menerima input dan mengeluarkan output dalam

Lebih terperinci

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1 1. PENDAHULUAN TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1 Arti Kata Teknik Kompilasi Teknik adalah suatu Metode atau Cara Kompilasi adalah suatu Proses mengabungkan serta

Lebih terperinci

Tata Bahasa Kelas Tata Bahasa. Konsep Bahasa (1)

Tata Bahasa Kelas Tata Bahasa. Konsep Bahasa (1) Tata Bahasa Kelas Tata Bahasa Risnawaty 2350376 Jurusan Teknik Informatika Institut Teknologi Bandung Page 1 Konsep Bahasa (1) String(kata) adalah suatu deretan berhingga dari simbol-simbol. Panjang string

Lebih terperinci

Grammar dan Tingkat Bahasa

Grammar dan Tingkat Bahasa CSG3D3 Teori Komputasi Grammar dan Tingkat Bahasa Agung Toto Wibowo Ahmad Suryan Yanti Rusmawati Mahmud Dwi Sulistiyo Kurniawan Nur Ramadhani Said Al Faraby Dede Rohidin KK Intelligence, Computing, and

Lebih terperinci

PENGANTAR TEKNIK KOMPILASI

PENGANTAR TEKNIK KOMPILASI PENGANTAR TEKNIK KOMPILASI Tujuan Konsep Teknik Kompilasi Tujuan Pembelajaran : 1.Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler 2.Mahasiswa memahami konsep pembuatan sebuah

Lebih terperinci

FINITE STATE MACHINE / AUTOMATA

FINITE STATE MACHINE / AUTOMATA FINITE STATE MACHINE / AUTOMATA BAHASA FORMAL Dapat dipandang sebagai entitas abstrak, yaitu sekumpulan string yang berisi simbol-simbol alphabet Dapat juga dipandang sebagai entitasentitas abstrak yang

Lebih terperinci

TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)

TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR) TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR) Oleh: Bagus Adhi Kusuma Teori Bahasa dan Otomata STIMIK AMIKOM Purwokerto Program Studi Teknik Informatika 2013/2014 CFG (Bahasa Bebas Konteks) sebuah tata

Lebih terperinci

Teori Bahasa dan Otomata 1

Teori Bahasa dan Otomata 1 Teori Bahasa dan Otomata 1 KATA PENGANTAR Teori Bahasa dam Otomata merupakan matakuliah wajib yang harus diambil oleh seluruh mahasiswa jurusan Teknik Indonesia di lingkungan Sekolah Tinggi Teknologi Indonesia.

Lebih terperinci

Fase-fase proses sebuah kompilasi

Fase-fase proses sebuah kompilasi Fase-fase proses sebuah kompilasi Penganalisa Leksikal membaca program sumber, karakter demi karakter. Sederetan (satu atau lebih) karakter dikelompokkan menjadi satu kesatuan mengacu kepada pola kesatuan

Lebih terperinci

TEKNIK KOMPILASI Bahasa Regular

TEKNIK KOMPILASI Bahasa Regular TEKNIK KOMPILASI Bahasa Regular Sekolah Manajemen Informatika dan Komputer (STMIK) Palangkaraya 2012 Tata bahasa reguler Sebuah bahasa dinyatakan regular jika terdapat Finite State Automata (FSA) yang

Lebih terperinci

TUGAS MAKALAH TEORI BAHASA & AUTOMATA

TUGAS MAKALAH TEORI BAHASA & AUTOMATA TUGAS MAKALAH TEORI BAHASA & AUTOMATA Anggota Kelompok : 1. Aedy Suciawan (50407040) 2. Afrista Reolny W (50407042) 3. Arnoldus Billy Jansen (50407161) 4. Endah Nurhayati (50407318) 5. Danang Panji P (50407227)

Lebih terperinci

Teori Bahasa & Otomata

Teori Bahasa & Otomata Teori Bahasa & Otomata Pendilkom/Ilkom Universitas Pendidikan Indonesia 1 Daftar Isi Bab 1 Pendahuluan Bab 2 Matematika Dasar Bab 3 Dasar-Dasar Teori Bahasa Bab 4 Representasi Bahasa Bab 5 Klasifikasi

Lebih terperinci

TEORI BAHASA DAN AUTOMATA

TEORI BAHASA DAN AUTOMATA MODUL I TEORI BAHASA DAN AUTOMATA Tujuan : Mahasiswa memahami pengertian dan kedudukan Teori Bahasa dan Otomata (TBO) pada ilmu komputer Definisi dan Pengertian Teori Bahasa dan Otomata Teori bahasa dan

Lebih terperinci

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu: SINTAKS Bahasa mesin adalah bentuk terendah komputer. Kita dapat berhubungan langsung dengan bagian-bagian yang ada di dalam komputer seperti bits, register. Bahasa mesin terdiri dari bit-bit 0 dan 1.

Lebih terperinci

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu: SINTAKS Bahasa mesin adalah bentuk terendah komputer. Kita dapat berhubungan langsung dengan bagian-bagian yang ada di dalam komputer seperti bits, register. Bahasa mesin terdiri dari bit-bit 0 dan 1.

Lebih terperinci

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS)

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS) RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS) Kode / Nama Mata Kuliah : A11. 54401/ Teori dan Bahasa Otomata Revisi 2 Satuan Kredit Semester : 3 SKS Tgl revisi : Februari 2014 Jml Jam kuliah dalam

Lebih terperinci

UNIVERSITAS GUNADARMA

UNIVERSITAS GUNADARMA UNIVERSITAS GUNADARMA SK No. 92 / Dikti / Kep /1996 Fakultas Ilmu Komputer, Teknologi Industri, Ekonomi,Teknik Sipil & Perencanaan, Psikologi, Sastra Program Diploma (D3) Manajemen Informatika, Teknik

Lebih terperinci

ALGORITMA PEMROGRAMAN 1C SINTAKS

ALGORITMA PEMROGRAMAN 1C SINTAKS ALGORITMA PEMROGRAMAN 1C SINTAKS Indah Wahyuni PENDAHULUAN Bahasa mesin adalah bentuk terendah komputer. Kita dapat berhubungan langsung dengan bagianbagian yang ada didalam komputer seperti bits, register.

Lebih terperinci

BAHASA REGULER 1. Ekspresi Regular

BAHASA REGULER 1. Ekspresi Regular BAHASA REGULER 1. Ekspresi Regular Bahasa regular adalah penyusun ekspresi regular (ER) Ekspresi regular terdiri dari kombinasi simbol-simbol atomik menggunakan 3 operator : concate, alternate, dan closure/repetisi.

Lebih terperinci

TEKNIK KOMPILASI. Alamat untuk tugas: Informasi: DADANG MULYANA. dadang mulyana 2013

TEKNIK KOMPILASI. Alamat  untuk tugas: Informasi: DADANG MULYANA. dadang mulyana 2013 TEKNIK KOMPILASI DADANG MULYANA Alamat email untuk tugas: dadangstmik@gmail.com Informasi: dadangmulyana@wordpress.com 1 Cara pengiriman tugas: Dalam subjek email tuliskan: Instansi_kelas_nama_matakuliah_jenistugas

Lebih terperinci

BAB I PENGENALAN TEKNIK KOMPILASI

BAB I PENGENALAN TEKNIK KOMPILASI BAB 1 PENGENALAN TEKNIK KOMPILASI 1 BAB I PENGENALAN TEKNIK KOMPILASI TUJUAN PRAKTIKUM 1) Memahami penggolongan Bahasa Pemrograman berdasarkan tingkat ketergantungannya dengan mesin. 2) Mengetahui dan

Lebih terperinci

TEKNIK KOMPILASI Konsep & Notasi Bahasa

TEKNIK KOMPILASI Konsep & Notasi Bahasa TEKNIK KOMPILASI Konsep & Notasi Bahasa Sekolah Manajemen Informatika dan Komputer (STMIK) Palangkaraya 2012 Konsep dan Notasi bahasa Teknik Kompilasi merupakan kelanjutan dari konsepkonsep yang telah

Lebih terperinci

SATUAN ACARA PERKULIAHAN MATA KULIAH : TEORI BAHASA DAN AUTOMATA (TBA) KODE / SKS : KK / 3 SKS

SATUAN ACARA PERKULIAHAN MATA KULIAH : TEORI BAHASA DAN AUTOMATA (TBA) KODE / SKS : KK / 3 SKS SATUAN ACARA PERKULIAHAN MATA KULIAH : TEORI BAHASA DAN AUTOMATA (TBA) KODE / SKS : KK-045325 / 3 SKS Mingu Pokok Bahasan 1. 1. Pendahuluan menjelaskan konsep dasar bahasa dan teori tentang string 1.1.

Lebih terperinci

PERTEMUAN II. Finite State Automata (FSA) Deterministic Finite Automata (DFA) Non Deterministic Finite Automata (NFA)

PERTEMUAN II. Finite State Automata (FSA) Deterministic Finite Automata (DFA) Non Deterministic Finite Automata (NFA) PERTEMUAN II Finite State Automata (FSA) Deterministic Finite Automata (DFA) Non Deterministic Finite Automata (NFA) dadang mulyana 1 INGA.INGAT MULAI MINGGU DEPAN KULIAH TBO DIMULAI JAM 13.00 MAAF UNTUK

Lebih terperinci

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktifitas Pembelajaran

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktifitas Pembelajaran SILABUS MATAKULIAH Revisi : 2 Tanggal Berlaku : Maret 2014 A. Identitas 1. Nama Matakuliah : A11. 54401/ Teori dan Bahasa Otomata 2. Program Studi : Teknik Informatika-S1 3. Fakultas : Ilmu Komputer 4.

Lebih terperinci

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs Teknik Kompiler 5 oleh: antonius rachmat c, s.kom, m.cs TATA BAHASA Tata bahasa / Grammar dalam OTOMATA adalah kumpulan dari himpunan variabel (non-terminal), simbol-simbol awal dan terminal yang dibatasi

Lebih terperinci

8 April 2015 Teori Bahasa dan Otomata

8 April 2015 Teori Bahasa dan Otomata EKSPRESI REGULAR MATERI MINGGU KE-4 EKSPRESI REGULAR Bahasa disebut reguler jika terdapat FSA yang dapat menerimanya. Bahasa reguler dinyatakan secara sederhana dengan ekspresi reguler/regular expression

Lebih terperinci

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular Hirarki Comsky Unrestricted Context Sensitive Context free Regular Contoh Tata Bahasa Sederhana BEGIN END ;

Lebih terperinci

TEORI BAHASA DAN OTOMATA

TEORI BAHASA DAN OTOMATA Copyright Adi S. Nugroho Page 1 1. MENGENAL OTOMATA 1.1. Definisi Otomata Otomata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept), atau membangkitkan (generate) sebuah kalimat

Lebih terperinci

TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI

TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI METODE PERKULIAHAN Materi Tugas Individu Tugas Kelompok KONTRAK BELAJAR Penilaian: UTS 20% UAS 30% Tugas besar 40% Tugas, kuis 10% Kehadiran (>=80%)

Lebih terperinci

EKSPRESI REGULAR PADA SUATU DETERMINISTIC FINITE STATE AUTOMATA

EKSPRESI REGULAR PADA SUATU DETERMINISTIC FINITE STATE AUTOMATA Jurnal Matematika Vol.6 No., November 26 [ 63-7 ] EKSPRESI REGULAR PADA SUATU DETERMINISTIC FINITE STATE AUTOMATA Jurusan Matematika, UNISBA, Jalan Tamansari No, Bandung,46, Indonesia dsuhaedi@eudoramail.com

Lebih terperinci

TEORI BAHASA DAN OTOMATA

TEORI BAHASA DAN OTOMATA MATERI KULIAH TEORI BAHASA DAN OTOMATA Oleh : Heru Cahya Rustamaji, S.Si, M.T JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS PEMBANGUNAN NASIONAL VETERAN YOGYAKARTA 2004 1 PERTEMUAN

Lebih terperinci

MODUL 17. BAHASA-BAHASA REKURSIF DAN RECURSIVELY ENUMERABLE

MODUL 17. BAHASA-BAHASA REKURSIF DAN RECURSIVELY ENUMERABLE MODUL 17. BAHASA-BAHASA REKURSIF DAN RECURSIVELY ENUMERABLE TM T r untuk suatu bahasa rekursif akan menjawab (recognize) atau setelah memproses string masukan. T r Dalam pembahasan sebelumnya kita mendapatkan

Lebih terperinci

TEKNIK KOMPILASI. Firrar Utdirartatmo

TEKNIK KOMPILASI. Firrar Utdirartatmo TEKNIK KOMPILASI TEKNIK KOMPILASI Firrar Utdirartatmo Kata Pengantar Penulis memberanikan diri untuk menyusun buku ini karena melihat kenyataan bahwa teknik kompilasi merupakan mata kuliah yang diajarkan

Lebih terperinci

TEORI BAHASA DAN OTOMATA [TBO]

TEORI BAHASA DAN OTOMATA [TBO] TEORI BAHASA DAN OTOMATA [TBO] Ekspresi Regular (1) Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya. Bahasa-bahasa yang diterima oleh suatu finite state automata

Lebih terperinci

BAB II SINTAKS 2.1. SINTAKS

BAB II SINTAKS 2.1. SINTAKS BAB II SINTAKS 2.1. SINTAKS merupakan kumpulan aturan yang mendefinisikan suatu bentuk bahasa. mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar. Kata

Lebih terperinci

MODUL TEORI BAHASA DAN AUTOMATA

MODUL TEORI BAHASA DAN AUTOMATA MODUL TEORI BAHASA DAN AUTOMATA DISUSUN OLEH : Rizqia Cahyaning tyas 997234A 35979 SEKOLAH TINGGI TEKNIK PLN TEKNIK INFORMATIKA JAKARTA 22 SATUAN ACARA PENGAJARAN (SAP) MATA KULIAH/ SEMSTER : Otomata dan

Lebih terperinci

Teori Komputasi 11/2/2016. Bab 5: Otomata (Automata) Hingga. Otomata (Automata) Hingga. Otomata (Automata) Hingga

Teori Komputasi 11/2/2016. Bab 5: Otomata (Automata) Hingga. Otomata (Automata) Hingga. Otomata (Automata) Hingga Teori Komputasi Fakultas Teknologi dan Desain Program Studi Teknik 1-1 Informatika Bab 5: Agenda. Deterministic Finite Automata DFA (Otomata Hingga Deterministik) Equivalen 2 DFA Finite State Machine FSA

Lebih terperinci

MODUL MATA KULIAH TEORI BAHASA DAN OTOMATA DOSEN:

MODUL MATA KULIAH TEORI BAHASA DAN OTOMATA DOSEN: MODUL MATA KULIAH TEORI BAHASA DAN OTOMATA DOSEN: Mira Kania S.,ST.,MT Utami Dewi W.,S.Kom IF I. PENDAHULUAN PENDAHULUAN Komputer digunakan sebagai alat bantu untuk menyelesaikan pekerjaan(task). Dua pertanyaan

Lebih terperinci

Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya. Bahasa-bahasa yang diterima oleh suatu finite state

Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya. Bahasa-bahasa yang diterima oleh suatu finite state EKSPRESI REGULAR Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya. Bahasa-bahasa yang diterima oleh suatu finite state automata bisa dinyatakan secara sederhana

Lebih terperinci

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan SATUAN ACARA PERKULIAHAN (SAP) Nama Mata Kuliah Kode Mata Kuliah Bobot Kredit Semester Penempatan Penanggung Jawab Mata Kuliah : Teori Bahasa Automata : TI 2A & TI 2B : 3 SKS : III : Fathiah, ST. M. Eng.

Lebih terperinci

Komponen sebuah Kompilator

Komponen sebuah Kompilator Komponen sebuah Kompilator Program Subjek Program Objek ANALISIS SINTESIS Penganalisis Leksikal (Scanner) Penganalisis Sintaks (Parser) Penganalisis Semantik Pembentuk Kode Pengoptimal Kode TABEL 1 Scanning

Lebih terperinci

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP) Mata Kuliah : Teori Bahasa dan Automa Bobot Mata Kuliah : 3 Sks GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP) Deskripsi Mata Kuliah : Micro processing dan Memory, Memory Addressing; Register, Struktur Program,

Lebih terperinci

TEORI BAHASA & AUTOMATA

TEORI BAHASA & AUTOMATA TEORI BAHASA & AUTOMATA Dosen: Dadang mulyana Alamat email untuk tugas: dadangstmik@gmail.com 1 Cara pengiriman tugas: Dalam subjek email tuliskan: Instansi_kelas_nama_matakuliah_jenistugas Contoh: Ahmad

Lebih terperinci

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa.

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa. SEMANTIK Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa. Semantic mendefinisikan arti dari program yang benar secara sintak dari bahasa tersebut. Semantic suatu bahasa membutuhkan

Lebih terperinci

NonDeterministic Finite Automata. B.Very Christioko, S.Kom

NonDeterministic Finite Automata. B.Very Christioko, S.Kom NonDeterministic Finite Automata Perbedaan DFA dan NFA DFA (Deterministic Finite Automata) FA di dalam menerima input mempunyai tepat satu busur keluar. NFA (Non Deterministic Finite Automata) FA di dalam

Lebih terperinci

PENDAHULUAN. Terdapat tiga topik utama di teori otomata yaitu:

PENDAHULUAN. Terdapat tiga topik utama di teori otomata yaitu: PENDAHULUAN Pengertian Komputer mengikuti sejumlah prosedur sistematis, atau algoritme, yang dapat diaplikasikan untuk serangkaian input (string) yang menyatakan integer dan menghasilkan jawaban setelah

Lebih terperinci

TEORI BAHASA & OTOMATA (KONSEP & NOTASI BAHASA) PERTEMUAN IX Y A N I S U G I Y A N I

TEORI BAHASA & OTOMATA (KONSEP & NOTASI BAHASA) PERTEMUAN IX Y A N I S U G I Y A N I TEORI BAHASA & OTOMATA (KONSEP & NOTASI BAHASA) PERTEMUAN IX Y A N I S U G I Y A N I Konsep dan Notasi bahasa Thn 56-59 Noam chomsky melakukan penggolongan tingkatan dalam bahasa, yaitu menjadi 4 class

Lebih terperinci

Teori Himpunan. Matematika Dasar untuk Teori Bahasa Otomata. Operasi pada Himpunan. Himpunan Tanpa Elemen. Notasi. Powerset & Cartesian Product

Teori Himpunan. Matematika Dasar untuk Teori Bahasa Otomata. Operasi pada Himpunan. Himpunan Tanpa Elemen. Notasi. Powerset & Cartesian Product Teori Himpunan Matematika Dasar untuk Teori Bahasa Otomata Teori Bahasa & Otomata Semester Ganjil 2009/2010 Himpunan adalah sekumpulan entitas tidak memiliki struktur sifatnya hanya keanggotaan Notasi

Lebih terperinci

BAB II TINJAUAN PUSTAKA. Bahasa menurut kamus Websters adalah the body of words and methods of

BAB II TINJAUAN PUSTAKA. Bahasa menurut kamus Websters adalah the body of words and methods of BAB II TINJAUAN PUSTAKA 2.1 Bahasa Alami dan Bahasa Formal Bahasa menurut kamus Websters adalah the body of words and methods of combining words used and understood by a considerable community, sedangkan

Lebih terperinci

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal Diagram Syntax Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis Menggunakan simbol persegi panjang untuk non terminal Lingkaran untuk simbol terminal Misalnya E T T+E T-E E T + - BNF:

Lebih terperinci

TEORI BAHASA DAN OTOMATA

TEORI BAHASA DAN OTOMATA TEORI BAHASA DAN OTOMATA Disusun Oleh : Hartono BAB I PENDAHULUAN Teori Bahasa Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan kompilator (compiler) dan

Lebih terperinci

TEORI BAHASA DAN OTOMATA [TBO]

TEORI BAHASA DAN OTOMATA [TBO] TEORI BAHASA DAN OTOMATA [TBO] Teori Bahasa Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan kompilator (compiler) danpemroses naskah (text processor).

Lebih terperinci

MODUL 1: PENGANTAR TEORI BAHASA

MODUL 1: PENGANTAR TEORI BAHASA MODUL 1: PENGANTAR TEORI BAHASA Pengantar Automata dan Bahasa Teori Pendukung Konsep Bahasa Slide 1 dari 38 PENGANTAR AUTOMATA DAN BAHASA Obyektif membahas model-model komputasi sebagai mesin abstraks

Lebih terperinci

Amir Hamzah AKPRIND PRESS 2009

Amir Hamzah AKPRIND PRESS 2009 1 TEORI BAHASA DAN OTOMATA Amir Hamzah AKPRIND PRESS 2009 1 TEORI BAHASA DAN OTOMATA Amir Hamzah JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI INSTITUT SAINS DAN TEKNOLOGI AKPRIND YOGYAKARTA AKPRIND

Lebih terperinci

Teori Bahasa dan Automata. Finite State Automata & Non Finite State Automata

Teori Bahasa dan Automata. Finite State Automata & Non Finite State Automata Teori Bahasa dan Automata Finite State Automata & Non Finite State Automata Finite State Automata Model matematika suatu sistem yang menerima input dan output diskrit Mesin automata dari bahasa Regular

Lebih terperinci

SEMANTIK. Int vector[10];

SEMANTIK. Int vector[10]; SEMANTIK Sintaks mendefinisikan suatu bentuk program yang benar dari suatu bahasa. Semantik mendefinisikan arti dari program yang benar secara sintaks dari bahasan tersebut. Sebagai contoh adalah deklarasi

Lebih terperinci

TEORI BAHASA DAN OTOMATA PENGANTAR

TEORI BAHASA DAN OTOMATA PENGANTAR TEORI BAHASA DAN OTOMATA PENGANTAR PERKULIAHAN Jumlah pertemuan minimal 13 kali dan maksimal 15 kali sudah termasuk dengan ujian tengah semester (UTS) PENILAIAN ABSEN 10% (Minimal kehadiran 80% dari jumlah

Lebih terperinci

SATUAN ACARA PERKULIAHAN (SAP)

SATUAN ACARA PERKULIAHAN (SAP) SATUAN ACARA PERKULIAHAN (SAP) Pertemuan / Minggu Nama Mata Kuliah : Teori Bahasa dan Automata Kode Mata Kuliah : TI 04 Bobot Kredit : 3 SKS Semester Penempatan : III Kedudukan Mata Kuliah : Mata Kuliah

Lebih terperinci

Mahasiswa memahami bahasa sebagai himpunan dan operasi 2 -nya, cara mendefinisikan bahasa, serta cara mengenali anggota 2 bahasa

Mahasiswa memahami bahasa sebagai himpunan dan operasi 2 -nya, cara mendefinisikan bahasa, serta cara mengenali anggota 2 bahasa Mahasiswa memahami bahasa sebagai himpunan dan operasi 2 -nya, cara mendefinisikan bahasa, serta cara mengenali anggota 2 bahasa JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS ISLAM

Lebih terperinci

Teknik Kompilasi. Notasi Bahasa

Teknik Kompilasi. Notasi Bahasa Teknik Kompilasi Notasi Bahasa TATA BAHASA Tata bahasa / Grammar dalam OTOMATA adalah kumpulan dari himpunan variabel (non-terminal), simbol-simbol awal dan terminal yang dibatasi oleh aturan-aturan produksi.

Lebih terperinci

IF-UTAMA 1. Definisi. Grammar. Definisi

IF-UTAMA 1. Definisi. Grammar. Definisi Definisi Grammar Bahasa adalah himpunan kata-kata atau kalimat yang telah disepakati, contoh : {makan, tidur, bermain, belajar} Bahasa Indonesia {shit, sheet, damn, kiss, smell} Bahasa Inggris {konichiwa,

Lebih terperinci

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah KOMPILASI Translator (penerjemah) adalah sebuah program yang menerjemahkan sebuah program sumber ( source program) menjadi program sasaran ( target program) Proses translasi suatu program dari bentuk syntax

Lebih terperinci

DIKTAT TEORI BAHASA DAN OTOMATA

DIKTAT TEORI BAHASA DAN OTOMATA DIKTAT TEORI BAHASA DAN OTOMATA DISUSUN OLEH Ir. Sudiadi, M.M.A.E. Ir. Rizani Teguh, M.T. Sekolah Tinggi Manajemen Informatika dan Komputer Global Informatika MDP 207 Hal KATA PENGANTAR Pertama-tama kami

Lebih terperinci

BAB I PENDAHULUAN 1-1

BAB I PENDAHULUAN 1-1 BAB I PENDAHULUAN 1.1 Pendahuluan Ilmu komputer memiliki dua komponen utama: pertama, model dan gagasan mendasar mengenai komputasi, kedua, teknik rekayasa untuk perancangan sistem komputasi, meliputi

Lebih terperinci

FTIK / PRODI TEKNIK INFORMATIKA

FTIK / PRODI TEKNIK INFORMATIKA Halaman : 1dari 12 LEMBAR PENGESAHAN DIBUAT OLEH MENYETUJUI Tim SOP dan JUKNIS Prodi IF Mira Kania Sabariah, S.T., M.T Ka Prodi TeknikInformatika Halaman : 2dari 12 DAFTAR ISI Lembar Pengesahan... 1 Daftar

Lebih terperinci

TEORI BAHASA & OPERASI MATEMATIS (2)

TEORI BAHASA & OPERASI MATEMATIS (2) PERTEMUAN III TEORI BAHASA & OPERASI MATEMATIS (2) Mahasiswa memahami bahasa sebagai himpunan dan operasi 2 -nya, cara mendefinisikan bahasa, serta cara mengenali anggota 2 bahasa JURUSAN TEKNIK INFORMATIKA

Lebih terperinci

BAB II TINJAUAN PUSTAKA. konsep, fakta, termasuk simbol simbol serta aturan agar mempunyai makna.

BAB II TINJAUAN PUSTAKA. konsep, fakta, termasuk simbol simbol serta aturan agar mempunyai makna. BAB II TINJAUAN PUSTAKA 2.1 Teori Bahasa dan Automata Bahasa merupakan suatu sistem yang meliputi pengekspresian gagasan, konsep, fakta, termasuk simbol simbol serta aturan agar mempunyai makna. Automata

Lebih terperinci

PENDAHULUAN Teori Bahasa

PENDAHULUAN Teori Bahasa PERTEMUAN I PENDAHULUAN Teori Bahasa Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan kompilator (compiler) dan pemroses naskah (text processor). Bahasa

Lebih terperinci

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI TEKNIK KOMPILASI Muhamad Nursalman Ilmu Komputer FPMIPA - UPI Daftar Isi Bab I Pendahuluan Bab II Analisis Leksikal Bab III Analisis Sintaktik Bab IV Syntax Directed Translation Bab V Intermediate Code

Lebih terperinci

Tujuan perancangan bhs program

Tujuan perancangan bhs program Tujuan perancangan bhs program Komunikasi dengan manusia Pencegahan dan deteksi kesalahan Usability Efektifitas pemrograman Compilability (mengurangi kompleksitas,mis:penggunaan bracket) Efisiensi dengan

Lebih terperinci

Finite State Machine dapat berupa suatu mesin yang tidak memiliki output. Finite State Machine yang tidak mengeluarkan output ini dikenal

Finite State Machine dapat berupa suatu mesin yang tidak memiliki output. Finite State Machine yang tidak mengeluarkan output ini dikenal FINITE STATE AUTOMATA (FSA) DAN FINITE STATE MACHINE (FSM) MATERI MINGGU KE-3 Finite State Automata (FSA) Finite State Machine dapat berupa suatu mesin yang tidak memiliki output. Finite State Machine

Lebih terperinci

Penerapan Graf Transisi dalam Mendefinisikan Bahasa Formal

Penerapan Graf Transisi dalam Mendefinisikan Bahasa Formal Penerapan Graf Transisi dalam Mendefinisikan Bahasa Formal Abdurrahman Dihya R./13509060 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha

Lebih terperinci

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I MATERI PERTEMUAN V & VI PENGENALAN KOMPILASI - BAHASA PEMROGRAMAN - TRANSLATOR - MODEL KOMPILATOR - ANALISIS LEKSIKAL

Lebih terperinci

BAB V CONTEXT FREE GRAMMAR DAN PUSH DOWN AUTOMATA

BAB V CONTEXT FREE GRAMMAR DAN PUSH DOWN AUTOMATA Bab V Context Free Grammar dan Push Down Automata 26 BAB V CONTEXT FREE GRAMMAR DAN PUSH DOWN AUTOMATA TUJUAN PRAKTIKUM 1. Memahami CFG dan PDA 2. Memahami Context Free Grammar 3. Memahami Push Down Automata

Lebih terperinci

Teori Bahasa dan Otomata

Teori Bahasa dan Otomata Teori Bahasa dan Otomata i iv Pengantar Teori Bahasa & Otomata TEORI BAHASA & OTOMATA Penulis: Adi Sulistyo Nugroho, S.Kom., M.M. Edisi Kedua Cetakan Pertama, 2013 Hak Cipta 2013 pada penulis, Hak Cipta

Lebih terperinci

Teori Komputasi 10/15/2015. Bab 1: Pendahuluan. Teori Komputasi dan Teknik Kompilasi. Teori Komputasi dan Teknik Kompilasi

Teori Komputasi 10/15/2015. Bab 1: Pendahuluan. Teori Komputasi dan Teknik Kompilasi. Teori Komputasi dan Teknik Kompilasi Teori Komputasi Agenda Teori Komputasi dan Teknik Kompilasi Translator Pembuatan Compiler Mutu Compiler Bab 1: Pendahuluan Fakultas Teknologi dan Desain Program Studi Teknik 1-1 Informatika Teori Komputasi

Lebih terperinci

Pendahuluan. Kuliah online : Tekkom [2013/VI]

Pendahuluan. Kuliah online : Tekkom [2013/VI] Pendahuluan Kuliah online : Tekkom [2013/VI] Sekilas tentang bahasa Dalam dunia sehari-hari, Bahasa digunakan sebagai alat untuk berkomunikasi, contohnya bahasa Indonesiae Sedangkan untuk berkomunikasi

Lebih terperinci

TEORI BAHASA DAN OTOMATA [TBO]

TEORI BAHASA DAN OTOMATA [TBO] TEORI BAHASA DAN OTOMATA [TBO] Tata Bahasa Bebas Konteks Bila pada tata bahasa regular terdapat pembatasan pada ruas kanan atau hasil produksinya, maka pada tata bahasa bebas konteks/ context free grammar,

Lebih terperinci

Tanggal Revisi : Tanggal : SATUAN ACARA PERKULIAHAN

Tanggal Revisi : Tanggal : SATUAN ACARA PERKULIAHAN Versi : Revisi : Tanggal Revisi : Tanggal : SATUAN ACARA PERKULIAHAN Fakultas/ Jurusan/ Program Studi : Teknologi Industri/ Teknik Informatika/ Teknik Informatika Kode Matakuliah : 52302031 Nama Matakuliah

Lebih terperinci

Overview. Pendahuluan. Pendahuluan. Pendahuluan. Pendahuluan. Pendahuluan

Overview. Pendahuluan. Pendahuluan. Pendahuluan. Pendahuluan. Pendahuluan Overview Pertemuan : I Dosen Pembina : Danang Junaedi Deskripsi Tujuan Instruksional Kaitan Materi Penilaian Grade Referensi Jurusan Teknik Informatika Universitas Widyatama Deskripsi Mata kuliah ini mempelajari

Lebih terperinci

Sumarni Adi TEKNIK INFORMATIKA STMIK AMIKOM YOGYAKARTA 2013

Sumarni Adi TEKNIK INFORMATIKA STMIK AMIKOM YOGYAKARTA 2013 Sumarni Adi TEKNIK INFORMATIKA STMIK AMIKOM YOGYAKARTA 2013 KONTRAK KULIAH 1. Presensi 15 menit diawal perkuliahan dan dilakukan sendiri (tidak Boleh Titip Presensi), setelahnya sistem akan ditutup 2.

Lebih terperinci

MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR. Dosen Pengampu: Utami Dewi Widianti,S.Kom

MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR. Dosen Pengampu: Utami Dewi Widianti,S.Kom MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR Dosen Pengampu: Utami Dewi Widianti,S.Kom (1) Program Sumber Deretan simbol berupa huruf, digit, atau simbol tertentu seperti +, -, dan, Program sumber memuat

Lebih terperinci

TEORI BAHASA DAN AUTOMATA

TEORI BAHASA DAN AUTOMATA MODUL X TEORI BAHASA DAN AUTOMATA Tujuan : Mahasiswa memahami tentang tata bahasa bebas konteks dan membangun pohon penurunan tata bahasa bebas konteks Materi : Pohon Derivatif Tata Bahasa Bebas Konteks

Lebih terperinci

Konsep dan Notasi Bahasa. Istiqomah, S.Kom

Konsep dan Notasi Bahasa. Istiqomah, S.Kom Konsep dan Notasi Bahasa Istiqomah, S.Kom Konsep dan Notasi Bahasa Hirarky Chomsky Diagram Keadaan Notasi BNF Diagram Sintaks (1) Hirarky Chomsky Tata Bahasa (grammar) bisa didefinisikan sebagai kumpulkan

Lebih terperinci

ALGORITMA PEMROGRAMAN 1C SEMANTIKS

ALGORITMA PEMROGRAMAN 1C SEMANTIKS ALGORITMA PEMROGRAMAN 1C SEMANTIKS Indah Wahyuni PENDAHULUAN Parser tidak mengetahui symbol-simbol. Untuk mengenali makna dari simbolsimbol tersebut maka compiler memanggil routin semantics. Membutuhkan

Lebih terperinci