BAB 2. ANALISIS LEKSIKAL

dokumen-dokumen yang mirip
TEKNIK KOMPILASI Bahasa Regular

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

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

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

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

TEORI BAHASA DAN OTOMATA [TBO]

Teknik Kompilasi. Notasi Bahasa

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

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

BAB II ANALISA LEKSIKAL (SCANNER)

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

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

Ekspresi Reguler Definisi. Notasi Ekspresi Regular. Contoh Ekspresi Reguler [2]

EKSPRESI REGULAR PADA SUATU DETERMINISTIC FINITE STATE AUTOMATA

Grammar dan Tingkat Bahasa

TEKNIK KOMPILASI Konsep & Notasi Bahasa

PENDAHULUAN. Terdapat tiga topik utama di teori otomata yaitu:

Komponen sebuah Kompilator

3.1. Definisi Syntax Syntax suatu bahasa pemrograman adalah satu himpunan

TEORI BAHASA DAN AUTOMATA

TEORI BAHASA DAN AUTOMATA

BAB II SINTAKS 2.1. SINTAKS

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

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

TEORI BAHASA DAN AUTOMATA

Teori Bahasa & Otomata

Sumarni Adi TEKNIK INFORMATIKA STMIK AMIKOM YOGYAKARTA 2013

BAB I PENDAHULUAN 1-1

BAB I PENGENALAN TEKNIK KOMPILASI

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

ALGORITMA PEMROGRAMAN 1C SINTAKS

21/11/2016. Pohon Sintaks. Syntax?? Proses Penurunan. Analisis Syntax (Parser) Metode Parsing ANALISIS SINTAKS TEKNIK KOMPILASI

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

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

BAB II DASAR TEORI. 2.1 Kompilator

UNIVERSITAS GUNADARMA

Tata Bahasa Pemrograman

SEMANTIK. Int vector[10];

Aplikasi Rekursif dalam Analisis Sintaks Program

BAB I TEORI BAHASA DAN AUTOMATA

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

IF-UTAMA 1. Definisi. Grammar. Definisi

BAB VI CARA PENANGANAN KESALAHAN

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

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK

PERANCANGAN SISTEM PERBAIKAN ERROR KODE SUMBER PROGRAM OTOMATIS

anggota alfabet dinamakan simbol terminal atau token.

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

Konsep dan Notasi Bahasa. Istiqomah, S.Kom

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

TEORI BAHASA DAN OTOMATA [TBO]

Bab III Semantik. Konsep Semantik Bahasa Pemrograman (Semantik Analisis)

Pendahuluan [6] FINITE STATE AUTOMATA. Hubungan RE & FSA [5] Finite State Diagram [6] 4/27/2011 IF-UTAMA 1

Tujuan perancangan bhs program

Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

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

FINITE STATE AUTOMATA

Teori Bahasa Formal dan Automata

BAB 1 PENDAHULUAN. sederhana adalah kelas bahasa reguler (regular languages). Bahasa reguler dapat dengan

RENCANA PROGRAM KEGIATAN PERKULIAHAN SEMESTER (RPKPS)

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

Teori Bahasa Formal dan Automata

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

KONSEP DASAR BAHASA PASCAL

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Tata Bahasa Kelas Tata Bahasa. Konsep Bahasa (1)

Teori Bahasa dan Otomata

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI

BAB 3 ANALISIS DAN PERANCANGAN PROGRAM. dirancang dan selanjutnya dapat diketahui gambaran dan kemampuan sistem secara

Deterministic Finite Automata

BAB IV ANALISA SINTAKS

1, 2, 3

Operasi FA dan Regular Expression

FTIK / PRODI TEKNIK INFORMATIKA

Teknik Kompiler 6. oleh: antonius rachmat c, s.kom

KONSEP GRAMMAR DAN BAHASA

FINITE STATE MACHINE / AUTOMATA

Teori Bahasa dan Operasi Matematis.

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

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

TEORI BAHASA DAN OTOMATA PENGANTAR

ALGORITMA PEMROGRAMAN 1C SEMANTIKS

Teori Bahasa dan Otomata 1

Pendahuluan. Push Down Atomata. Perbedaan FA dan PDA [7] 4/25/2012 IF-UTAMA 1. Grammar-machine equivalence [3] Latar belakang munculnya konsep PDA

Non-deterministic Finite Automata Dengan -Move

MODUL 4: Nondeterministic Finite Automata

Dasar Teori Bahasa & Grammar

RENCANA PEMBELAJARAN SEMESTER

Struktur Data. PDE - Struktur Data 1

TEORI BAHASA DAN OTOMATA [TBO]

Fase-fase proses sebuah kompilasi

Penerapan Graf Transisi dalam Mendefinisikan Bahasa Formal

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Praktikum 2 Data File pada AWK

Analisis Sintaksis (syntactic analyzer atau parser)

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.

SATUAN ACARA PERKULIAHAN STMIK UBUDIYAH INDONESIA SEMESTER GENAP TAHUN AKADEMIK 2013/2014

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

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

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom

Transkripsi:

ANALISIS LEKSIKAL 2.1 BAB 2. ANALISIS LEKSIKAL PERAN PENGANALISIS LEKSIKAL INPUT BUFFERING SPESIFIKASI TOKEN PENGENALAN TOKEN SATU BAHASA UNTUK PENENTUAN (SPECIFYING) PENGANALISIS LEKSIKAL FINITE AUTOMATA DARI EKSPRESI REGULAR KE NFA RANCANGAN PEMBENTUK PENGANALISIS LEKSIKAL PENGOPTIMASIAN POLA BERDASARKAN-DFA 2.2 1

PERAN PENGANALISIS LEKSIKAL source program Lexical Analyzer token get next token Parser parse tree Symbol Table 2.3 SOURCE TEXT LEXER PARSER Characters Tokens 2.4 2

PERAN PENGANALISIS LEKSIKAL PERAN PENGANALISIS LEKSIKAL ADALAH: Membaca karakter input & menghasilkan token Menghilangkan komentar dan ruang kosong Menghubungkan antara pesan kesalahan yang diperoleh kompilator dengan program sumber Mengenali identifier dan keyword Identifier = variables, arrays, function, etc., token Keyword = fixed characters: begin, end, if, etc. 2.5 ALASAN PEMISAHAN PHASE ANALISIS Phase Analysis dipisah menjadi dua, yaitu: Lexical Analyzer dan Syntax Analyzer dengan alasan: Penyederhanaan rancangan Efisiensi kompilator lebih baik Portabilitas kompilator meningkat 2.6 3

TOKEN, LEXEME dan PATTERN Lexeme Pattern Token Suatu rangkaian karakter kt pada program sumber yang cocok atau sesuai dengan pola (pattern) untuk membentuk satu token. Peraturan yang menjelaskan set lexeme yang dapat merepresentasikan satu token tertentu dalam program sumber. Satu set string input Merupakan rangkaian karakter kt yang dalam satu kesatuan memiliki arti tersendiri, dapat berupa: kata kunci (key word), operator, identifier constant, rangkaian huruf (literal string); yang dijelaskan oleh satu peraturan. Harus cocok (match) dengan setiap string yang ada dalam set tersebut. simbol baca (function symbol) misalnya: tanda kurung, koma, titik koma, dan sebagainya. 2.7 TOKEN, LEXEME dan PATTERN TOKEN SAMPLE LEXEMES INFORMAL DESCRIPTION OF PATTERN const const const if if if relation <, <=, =, <>, >, >= < or <= or = or <> or > or = id pi, count, D2 letter followed by letters and digits num 3.1416, 0, 6.02E23 any numeric constant literal "core dumped" any character between " and " except " 2.8 4

ATTRIBUTE UNTUK TOKEN Bila terdapat lebih dari satu pattern yang sesuai dengan satu lexeme, lexical analyzer harus melengkapi informasi tambahan tentang lexeme mana yang dimaksud atau yang sesuai dengan phase berikutnya dari kompiltor. Token biasanya hanya mempunyai satu atribut yaitu POINTER yang disimpan dalam tabel simbol. 2.9 ATTRIBUTE UTK TOKEN CONTOH: Pattern num cocok untuk string 0 dan 1, sedangkan code generator harus tahu string mana yang dimaksud, misalnya <num,1> E = M *C**2 akan ditulis berpasangan sbb: <id, pointer ke entri tabel simbol utk E> <assign_op,> <id, pointer ke entri tabel simbol utk M> <mult_op,> <id, pointer ke entri tabel simbol utk C> <exp_op,> <num, integer value 2> 2.10 5

KESALAHAN LEKSIKAL Hanya sedikit kesalahan leksikal (lexical errors) yang dapat dilihat di phase lexical analyzer karena phase ini mempunyai pandangan yang sempit pada program sumber Misal; fi(a = = f(x)) dalam bahasa C, maka lexical analyzer tidak dapat menjelaskan apa fi tersebut betul sebagai identifier atau salah eja yang seharusnya adalah if 2.11 KESALAHAN LEKSIKAL (Cont d) KEMUNGKINAN PEMULIHAN KESALAHAN Menghapus karakter yang berlebihan Memasukkan karakter yang diduga hilang Menganti karakter yang diduga salah dengan yang benar Menukar letak dari dua karakter yang berdekatan 2.12 6

INPUT BUFFERING Tiga pendekatan umum untuk mengimplementasikan suatu Penganalysis Leksikal (Lexical Analyzer). 1. Gunakan pembentuk lexical-analyzer analyzer seperti kompilator Lex untuk menghasilkan penganalisis leksikal dari satu spesifikasi berdasarkan ekspresi reguler. 2. Menulis lexical analyzer dengan satu sistem bahasa pemrograman konvensional, menggunakan fasilitas I/O untuk membaca input. 3. Menulis lexical analyzer dengan bahasa assembly dan secara ekplisit mengatur pembacaan input. 2.13 INPUT BUFFERING (Cont d) BUFFER PAIRS Satu buffer dibagi menjadi dua bagian Jumlah karakter tiap bagian = 1024 (2 10 ) atau 4096 (4 X 2 10 ) yang merupakan N N karakter tersebut dibaca sekaligus untuk ditempatkan di tiap setengah buffer-nya 2.14 7

SENTINEL INPUT BUFFERING (Cont d) The sentinel is a special character that cannot be part of the source program, and a natural choice is eof. 2.15 SPESIFIKASI TOKEN STRINGS & LANGUAGE: String adalah satu rangkaian simbol dari alphabet (finite sequence of symbols). Kalimat dan kata sering disebut string Panjang string: S S ; Contoh: banana: S =6, String kosong =, sehingga S =0, Language adalah setiap set dari string pada suatu alphabet yang tetap (set of strings) 2.16 8

OPERASI PADA BAHASA Terdapat beberapa operasi penting yang dapat diterapkan pada bahasa (languages). Khusus untuk lexical analysis: union, concatenation (rangkaian), closure (pengakhiran/penutupan), exponentiation operator. Misal; L sebagai himpunan {A,B, Z,a,b, z} dan D sebagai himpunan {0,1,2, 9} 1. L D = himpunan huruf dan angka. 2. LD = himpunan string terdiri dari satu huruf diikuti oleh satu angka. 3. L 4 = himpunan string 4 huruf. 4. L* = himpunan string huruf-huruf termasuk string. 5. L(L D)* = himpunan semua string huruf dan angka yang dimulai dengan huruf. 6. D + = himpunan semua string angka (satu atau lebih). 2.17 OPERASI PADA BAHASA (Cont d) OPERASI DEFINISI Union (gabungan) L dan M L M = {s s di L atau M} ditulis L M Sambungan L dan M ditulis LM Penutup Kleene L ditulis L* Penutup Positif L ditulis L + LM = {st s di L dan t di M} L* = L i L* = penyambungan i=0 nol atau lebih L L + = L i L + = penyambungan i=1 satu atau lebih L 2.18 9

EKSPRESI BERATURAN Identifier = satu set string dari huruf-huruf dan angka-angka yang dimulai dengan huruf atau satu huruf diikuti 0 atau huruf-huruf atau angka (digit). Suatu ekspresi beraturan (regular expression = RE) dibentuk berdasarkan ekspresi beraturan lain yang lebih sederhana. Contoh notasi RE: letter(letter digit)*. Garis tegak berarti atau, tanda kurung digunakan untuk mengelompokkan ekspresi bagian, dan tanda * artinya adalah nol atau lebih kali dari ekspresi yang diberi kurung. Satu bahasa yang ditunjukkan oleh satu ekspresi beraturan disebut REGULAR SET. 2.19 EKSPRESI BERATURAN (Cont d) Regular definitions adalah satu urutan dari bentuk : d 1 r 1 d 2 r 2... d n d = nama r n r = regular expression 2.20 10

EKSPRESI BERATURAN (Cont d) Non-Regular Sets (himpunan tidak beraturan). Ada bahasa yang tidak dapat dijelaskan dengan regular expression. Ekspresi beraturan tidak dapat digunakan untuk menyatakan bentuk yang seimbang atau terulang. Misalnya himpunan dari semua rangkaian tanda kurung yang seimbang tidak dapat dinyatakan oleh suatu ekspresi beraturan, tetapi dapat dinyatakan dalam suatu tata bahasa bebas konteks (Context Free Grammar (CFG)). Rangkaian yang berulang tidak dapat dinyatakan oleh ekspresi beraturan. Contoh: {wcw w adalah rangkaian dari a dan b} tidak dapat dinyatakan sebagai suatu ekspresi beraturan, dan juga tidak dapat dinyatakan dengan tata bahasa bebas konteks. 2.21 CONTOH: EKSPRESI BERATURAN (Cont d) Misal: = {a,b} RE: a b; yaitu himpunan {a,b} RE: (a b) (a b); yaitu himpunan {aa,ab,ba,bb} atau untuk RE: aa ab ba bb RE: a*; yaitu himpunan string ε atau beberapa a, yaitu himpunan {ε, a, aa, aaa, } RE: (a b)*; yaitu himpunan semua string yang terdiri dari ε atau a atau b. Sama dengan RE: (a*b*)* RE: a a*b; yaitu himpunan a atau {ε, a, aa, aaa, } diikuti oleh b. a* 2.22 11

PENGENALAN TOKEN Misal: penggalan tata bahasa sebagai berikut: stmt if exp then stmt if exp then stmt else stmt exp term relop term term term id num 2.23 PENGENALAN TOKEN (Cont d) Terminal-terminal tersebut diatas yaitu: if, then, else, relop, id dan num membentuk himpunan rangkaian (string) yang diberikan oleh definisi beraturan sebagai berikut: if if then then else else relop < <= = <> > >= id letter(letter digit)* num digit + (.digit + )?(E(+ -)?digit + )? Lexical analyzer akan mengenali keywords if, then, else serta lexeme yang dinyatakan oleh relop, id dan num. Keywords adalah kata-kata reserved yang tidak dapat digunakan sebagai identifier (id). 2.24 12

MENGHILANGKAN WHITE SPACE Lexical analyzer akan menghilangkan white space (i.e., blanks, tabs, new lines) dengan menggunakan regular definition sebagai berikut: delim blank newline tab ws delim Sehingga apabila menemukan pola yang cocok dengan ws, maka lexical analyzer tidak akan memberikan token kepada parser tetapi akan melanjutkan mencari character lain setelah white space tersebut. 2.25 TRANSITION DIAGRAM (TD) Sebagai langkah antara di dalam membentuk lexical analyzer, dibuatlah satu transition diagram. TD atau diagram peralihan adalah stylized flowchart (bagan alir) yang dibentuk sebagai langkah antara dalam pembentukan token pada lexical analyzer. TD tersebut menggambarkan aksi yang dilakukan bila Lexical Analyzer dipanggil oleh pengurai utk memperoleh token berikutnya (get next token). 2.26 13

TRANSITION DIAGRAM (Cont d) Catatan: : state : edge (sisi) : accepting state : pointer tanda dapat mundur * 2.27 TRANSITION DIAGRAM (TD) Contoh: TD utk pattern > atau >= Pembacaan dimulai dari state 0, membaca karakter berikutnya yaitu > utk menuju ke state 6. Bila yg dibaca benar > maka lanjut, bila bukan maka akan gagal mengenali pattern > atau >=. Dari state 6 karakter yg akan dibaca adalah = utk menuju ke state 7. Bila yg dibaca benar = maka berhasil mengenali pola >= bila bukan = maka akan menuju ke state 8. 2.28 14

A LANGUAGE for SPECIFYING LEXICAL ANALYZERS (1) Ada piranti (tool) khusus yang lazim digunakan utk menentukan lexical analyzers yaitu Lex Compiler dengan inputnya Lex Language. Penggunaannya sebagai berikut: Lihat Fig. 3.17 a.out adalah object program yg merupakan lexical analyzer yang dapat merobah rangkaian input menjadi token Lex specifications. Program lex terdiri dari 3 bagian : 1. Deklarasi (Declarations) 2. Aturan Translasi (Translation Rules) 3. Prosedur Tambahan (Auxiliary Procedures) 2.29 A LANGUAGE for SPECIFYING LEXICAL ANALYZERS (2) 2.30 15

A LANGUAGE for SPECIFYING LEXICAL ANALYZERS (3) %{ %} /* definitions of manifest constants LT, LE, EQ, NE, GT, GE, IF, THEN, ELSE, ID, NUMBER, RELOP */ /* regular definitions */ delim [ \t\n] ws {delim}+ letter [A-Za-z] digit [0-9] id {letter}({letter} {digit})* number {digit}+(\.{digit}+)?(e[+\-]?{digit}+)? %% 2.31 A LANGUAGE for SPECIFYING LEXICAL ANALYZERS (4) {ws} {/* no action and no return */} if {return(if);} then {return(then);} else {return(else);} {id} {yylval = install_id(); return(id);} {number} {yylval = instali_num(); return(number);} "<" {yylval = LT; return(relop);} "<=" {yylval = LE; return(relop);} "=" {yylval = EQ; return(relop);} "<>" {yylval = NE; return(relop);} ">" {yylval = GT; return(relop);} ">=" {yylval = GE; return(relop);} %% 2.32 16

A LANGUAGE for SPECIFYING LEXICAL ANALYZERS (5) install_id() { /* procedure to install the lexeme, whose first character is pointed to by yytext and whose length is yyleng, into the symbol table and return a pointer thereto */ } install_num() { /* similar procedure to install a lexeme that is a number */ } Fig. 3.18. Lex program for the tokens of Fig. 3.10. 2.33 A LANGUAGE for SPECIFYING LEXICAL ANALYZERS (6) 2.34 17

FINITE AUTOMATA (1) Recognizer suatu bahasa; program yang mengambil string x sebagai input dan menjawab yes bila x adalah kalimat dari bahasa tersebut, dan menjawab no bila sebaliknya. Regular expression di compile menjadi recognizer dengan membentuk diagram peralihan disebut finite automata (otomata berhingga). Finite Automata; dua macam : 1. DETERMINISTIC Finite Automata (DFA) 2. Non-DETERMINISTIC Finite Automata (NFA) 2.35 FINITE AUTOMATA (2) Persamaan DFA & NFA Dapat mengenali pola ekspresi beraturan dengan tepat. Perbedaan DFA Menghasilkan pengenal lebih cepat. Ukuran DFA lebih besar untuk hal yg sama. NFA Menghasilkan pengenal lebih lambat. Ukuran NFA lebih kecil untuk hal yang sama. 2.36 18

NON-DETERMINISTIC FINITE AUTOMATA (NFA) NFA= model matematika yg terdiri dari: 1. Satu set state S. 2. St Satu set symbol blinput tσ Σ (lhbt (alphabet simbol blinput). 3. Fungsi transisi move yang memetakan pasangan state-simbol ke dalam himpunan state. 4. Satu state S 0 yg dinyatakan sebagai state awal (start/initial state). 5. Satu set state F yg dinyatakan sebagai state penerima/ akhir (accepting/final l state). t ) NFA dapat direpresentasikan dalam bentuk bagan sebagai suatu grafik yang berlabel disebut Transition Graph, dengan node sebagai state dan sisi berlabel menyatakan fungsi transisi. 2.37 NON-DETERMINISTIC FINITE AUTOMATA (Cont d) Transition graph untuk mengenali bahasa (a b)*abb Catatan: set state = {0,1,2,3} state awal = state 0 set simbol input = {a,b} state penerima = state 3 2.38 19

NON-DETERMINISTIC FINITE AUTOMATA (Cont d) NFA Memungkinkan terjadi lebih dari satu transisi (simbol) yang keluar dari satu state untuk input yang sama Dapat dijelaskan dengan Graph Representation yang implementasinya dengan menggunakan Tabel Peralihan (Transition table). Row = State Column = input symbol (boleh ) Contoh: Fig 3.19 Fig 3.20 2.39 NON-DETERMINISTIC FINITE AUTOMATA (Cont d) 2.40 20

NON-DETERMINISTIC FINITE AUTOMATA (Cont d) 2.41 NON-DETERMINISTIC FINITE AUTOMATA (Cont d) Transition table for the finite automaton aa* bb* NFA: aa* bb* State Input Symbols a b 0 {1,3} - - 1 - {2} - 2 - {2} - 3 - - {4} 4 - - {4} 2.42 21

DETERMINISTIC FINITE AUTOMATA (DFA) DFA adalah kasus khusus NFA yang : 1. Tidak ada state dengan transisi ε; yaitu transisi input ε & 2. Untuk setiap state s dan simbol input a hanya ada paling banyak satu sisi berlabel a yang meninggalkan state s. Bila menggunakan transition table untuk merepresentasikan fungsi transisi DFA, setiap entry pada transition table adalah single input. DFA untuk mengenali bahasa (a b)*abb, yang inputnya (string) dibaca ababb mengikuti urutan state 0,1,2,1,2,3 sbb: Fig 3.23 2.43 DETERMINISTIC FINITE AUTOMATA (Cont d) 2.44 22