TEORI BAHASA DAN AUTOMATA.pdf

Embed Size (px)

Citation preview

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    1/105

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    2/105

    i

    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 maz 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 e-mail

    [email protected].

    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

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    3/105

    ii

    Daftar Isi

    Kata Pengantar ............................................................................................. i

    Daftar Isi ........................................................................................................ ii

    Bab I : Pengantar .......................................................................................... 1

    1.1 Teori Pengantar ................................................................................ 1

    1.1.1 Teori Himpunan ...................................................................... 1

    1.1.2 Fungsi dan Relasi..................................................................... 4

    1.1.3 Teori Pembuktian..................................................................... 4

    1.1.4 Graph dan Tree ....................................................................... 5

    1.2 Kompilasi ......................................................................................... 7

    1.2.1 Bahasa Pemrograman .............................................................. 7

    1.2.2 Translator ................................................................................ 7

    1.2.3 Interpreter ................................................................................ 8

    1.2.4 Assembler ............................................................................... 8

    1.2.5 Compiler ................................................................................. 9

    Bab II : Konsep Bahasa Automata .............................................................. 13

    2.1 Konsep Bahasa dan Automata ......................................................... 13

    2.1.1 Teori Bahasa ........................................................................... 13

    2.1.2 Automata ................................................................................. 13

    2.1.3 String ....................................................................................... 14

    2.1.4 Operasi Dasar String ............................................................... 14

    2.1.5 Sifat-sifat Operasi String ......................................................... 16

    2.2 Grammar dan Bahasa ....................................................................... 17

    2.2.1 Definisi .................................................................................... 17

    2.2.2 Simbol ..................................................................................... 17

    2.2.3 Aturan Produksi ...................................................................... 18

    2.2.4 Grammar ................................................................................. 18

    2.2.5 Klasifikasi Chomsky ............................................................... 19

    2.2.6 Analisa Grammar .................................................................... 21

    Bab III : Finite State Automata (FSA) ........................................................ 24

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    4/105

    iii

    3.1 Definisi Formal ................................................................................ 24

    3.2 Fungsi Transisi ................................................................................. 25

    3.3 Jenis-jenis FSA ................................................................................ 25

    3.4 Deterministic finite automata (DFA) ............................................... 26

    3.5 Non deterministik finite automata (NFA) ........................................ 27

    3.6 Ekuivalen ......................................................................................... 29

    3.7 Indistinguishable .............................................................................. 29

    3.8 Distinguishable ................................................................................ 29

    3.9 Prosedur menentukan pasangan status indistinguishable ................ 30

    3.10 Prosedur Reduksi DFA .................................................................... 30

    Bab IV : Ekuivalensi NFA ke DFA ............................................................. 32

    4.1 Algoritma Ekivalensi NFA ke DFA ................................................ 32

    4.2 NFA dengan -move ........................................................................ 34

    4.3 Ekuivalensi NFA dengan -move ke NFA tanpa -move ................ 34

    4.4 Penggabungan FSA .......................................................................... 35

    Bab V : Ekspresi Reguler ............................................................................. 37

    5.1 Bahasa regular .................................................................................. 37

    5.2 Sifat Bahasa Reguler ........................................................................ 38

    5.3 Konversi ekspresi reguler ke FSA ................................................... 395.4 DFA dan Tatabahasa Reguler .......................................................... 39

    5.5 Penerapan ekspresi regular .............................................................. 41

    5.6 Pumping Lemma............................................................................... 41

    Bab VI : FSA dengan Output ...................................................................... 43

    6.1 Mesin Moore .................................................................................... 43

    6.2 Mesin Mealy .................................................................................... 44

    6.3 Ekuivalensi mesin Moore dengan mesin Mealy .............................. 45

    Bab VII : Bahasa Bebas Konteks ................................................................ 47

    7.1 Tata Bahasa Bebas Konteks ............................................................. 47

    7.2 Leftmost dan Rightmost Derivation ................................................. 48

    7.3 Pohon Urai ....................................................................................... 49

    7.4 Parsing dan Keanggotaan ................................................................. 49

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    5/105

    iv

    7.5 Ambiguitas pada Tatabahasa dan Bahasa ........................................ 50

    7.6 Pumping Lemma untuk bahasa bebas konteks ................................ 50

    7.7 Sifat - sifat tertutup bahasa bebas konteks ....................................... 51

    7.8 Substitusi .......................................................................................... 52

    7.9 Tatabahasa Bebas Konteks dan Bahasa Pemrograman .................... 52

    Bab VIII : Penyederhanaan Tata Bahasa Bebas Konteks ........................ 53

    8.1 Penghilangan Produksi Useless ....................................................... 53

    8.2 Penghilangan Produksi Unit ............................................................ 55

    8.3 Penghilangan Produksi .................................................................. 57

    8.4 Pengembangan praktek .................................................................... 58

    Bab IX : Bentuk Normal Chomsky ............................................................. 60

    9.1 Pengertian ........................................................................................ 60

    9.2 Aturan Produksi ............................................................................... 60

    9.3 Pembentukan CNF ........................................................................... 60

    9.4 Bagan Tahapan Pembentukan CNF ................................................. 61

    9.5 Algoritma CYK untuk Tata Bahasa Bebas Konteks ........................ 63

    Bab X : Penghilangan Rekursif Kiri ........................................................... 69

    10.1 Aturan Produksi Rekursif ................................................................ 69

    10.2 Pohon Penurunan ............................................................................. 69

    10.3 Tahapan Penghilangan Rekursif Kiri ............................................... 70

    Bab XI : Bentuk Normal Greibach ............................................................. 73

    11.1 Pengertian Bentuk Normal Greibach ............................................... 73

    11.2 Pembentukan GNF dengan Substitusi ............................................. 73

    Bab XII : Pushdown Automata (PDA) ........................................................ 77

    12.1 Pendahuluan ..................................................................................... 77

    12.2 Transisi ............................................................................................. 77

    12.3 Definisi Formal PDA ....................................................................... 78

    Bab XIII : Mesin Turing .............................................................................. 83

    13.1 Sejarah .............................................................................................. 83

    13.2 Mekanisme TM ................................................................................ 83

    13.3 Definisi Formal ................................................................................ 83

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    6/105

    v

    13.4 Ilustrasi TM sebagai sebuah mesin ............................................... 84

    13.5 Ilustrasi TM sebagai sebuah Graf berarah ....................................... 84

    Bab XIV : Aplikasi FSA dan CFG pada Pengembangan Kompilator ..... 87

    14.1 Scanner ............................................................................................. 87

    14.2 Parser ................................................................................................ 87

    14.3 Tool bantuan untuk konstruksi Scanner dan Parser.......................... 88

    14.4 Implementasi Scanner dan Parser .................................................... 90

    Daftar Pustaka .............................................................................................. 99

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    7/105

    1

    Bab I

    PENGANTAR

    1.1.Teori Pengantar1.1.1. 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}

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    8/105

    2

    Maka,

    A B dan C B, maka A = C

    C. Himpunan Kosong

    Himpunan kosong atau null() merupakan bagian dari semua himpunan.

    Contoh :

    Terdapat himpunan,

    A = {1, 2, 3}

    B = {1, 2, 3, 4}

    C = {1, 2, 3}

    Maka,

    A

    B

    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

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    9/105

    3

    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 =

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    10/105

    4

    1.1.2. 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 + 1

    1.1.3. Teori Pembuktian

    Pembuktian menggunakan prinsip induksi matematika.

    Langkah-langkah dalam melakukan pembuktian :

    o Tunjukkan hal itu berlaku untuk semua P0, disebut basis step.

    o Tunjukkan hal itu berlaku untuk Pn+1, disebut induction step.

    o Maka dapat ditarik kesimpulan hal tersebut berlaku untuk semua n

    Contoh Pembuktian

    S(n) = 1 + 2 + . + 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)

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    11/105

    5

    S(i) = 1 + 2 + . + i = i(i+1)/2 (anggap benar)

    Akan dibuktikan S(i+1) juga benar

    S(i+1) = (i+1)((i+1)+1)/2

    = 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

    1.1.4. 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

    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

    V2

    V1

    V3V4

    V5

    V6

    V7

    V8

    V9

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    12/105

    6

    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

    |E(G)| = 6/2 = 3

    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.

    v1 v2

    v3

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    13/105

    7

    1.2.Kompilasi

    1.2.1. Bahasa Pemrograman

    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.

    1.2.2. Translator

    Translator melakukan pengubahan source code/ kode program kedalam target

    code/ object code. Interpreter dan Compiler termasuk dalam kategori translator.

    BahasaPemrograman

    Bahasamesin

    Bahasa

    Assembly

    BahasaTingkat tinggi

    BahasaProblem Oriented

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    14/105

    8

    1.2.3. Interpreter

    1.2.4. Assembler

    SourceCode

    ObjectCode

    Assembl

    erFile

    TargetLingker

    .ASM .OBJ .EXE / .COM

    Proses Sebuah Kompilasi padaBahasa Assembler

    Translator

    Interpreter

    Compiler

    Tidak membangkitkan object code.

    Source code dan data diproses bersamaan.

    Contoh: BASICA, SPSS, DBASE III.

    Source Codeadalah bahasa tingkat tinggi.

    Object Code adalah bahasa mesin atau assembly.

    Source code dan data diproses tidak bersamaan.

    Contoh: PASCAL, C.

    Assembler

    Source Codeadalah bahasaAssembly

    Object Code adalah bahasa mesin.

    AnalisaLeksikal

    AnalisaSintaks

    IntermediateProgram

    Interpretasi

    PengelolaanTabel

    Program

    PenangananKesalahan

    HasilOperasi

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    15/105

    9

    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).

    1.2.5. Compiler

    Kompilator (compiler) adalah sebuah program yang membaca suatu program

    yang ditulis dalam suatu bahasa sumber (source language) dan menterjemah-

    kannya 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

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    16/105

    10

    B. Blok Diagram Compiler

    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).

    PenganalisaLeksikal

    (scanner)

    PenganalisaSintaks(parser)

    PenganalisaSemantik

    PembangkitKode antara

    Pembentukkode

    Pengoptimalkode

    ProgramSumber

    ProgramSasaran

    TABELSIMBOL

    ANALISA SINTESA

    Bagan pokok proses kompilasi

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    17/105

    11

    5. Penganalisa semantik : memeriksa token dan ekspresi dari batasan-

    batasan 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 -32768 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.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    18/105

    12

    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.

    Keterangan :

    o Pembentukan fileExecutableberdasar 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.

    Source

    Code 1

    SourceCode 2

    SourceCode n

    Object

    Code 1

    Object

    ObjectCode n

    Compiler 1

    Compiler 2

    Compiler n

    Lingker Executable

    Library ObjectCode

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    19/105

    13

    Bab II

    KONSEP BAHASA AUTOMATA

    2.1Konsep Bahasa dan Automata

    2.1.1 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.

    2.1.2 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.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    20/105

    14

    2.1.3 String

    2.1.3.1 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

    2.1.3.2 Panjang String

    Definisi 1: sebuah string dengan panjang n yang dibentuk dari himpunan A

    adalah barisan dari n simbol. Misalnya a1a2...an; aiA

    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 = abcbmaka w= 4

    2.1.3.3 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.

    2.1.4 Operasi Dasar String

    Diberikan dua string :x = abc, dany = 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)

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    21/105

    15

    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 wtersebut.

    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 simbol-

    simbol 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)

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    22/105

    16

    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|x2|x3|

    o Positive Closure :x+=x|xx|xxx| =x|x2|x3|

    2.1.5 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 lebihx,y, atau keduanya.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    23/105

    17

    2.2Grammar dan Bahasa

    2.2.1 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.

    Bahasaadalah himpunan kalimat-kalimat. Anggota bahasa bisa tak hingga kalimat.

    Kalimatadalah deretan hingga (string) yang tersusun atas simbol-simbol terminal.

    Sentensial adalah string yang tersusun atas simbol-simbol terminal atau simbol-

    simbol non terminal atau campuran keduanya.

    Kalimat adalah merupakan sentensial, sebaliknya belum tentu.

    Derivasiadalah proses pembentukan sebuah kalimat atau sentensial. Sebuah derivasi

    dilambangkan sebagai : .

    2.2.2 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 :

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    24/105

    18

    - 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 .

    2.2.3 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 TE T+E

    2.2.4 Grammar

    Grammar G didefinisikan sebagai pasangan 4 tuple : VT, VN, S, dan P.

    Dituliskan sebagai G(VT, VN, S, P), dimana :

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    25/105

    19

    - VT : himpunan simbol-simbol terminal (alfabet) kamus.

    - VN : himpunan simbol-simbol non terminal.

    - SVN : simbol awal (atau simbol start)

    - P : himpunan produksi.

    Contoh Grammar :

    1. G1: VT= {I, Love, Miss, You}, VN= {S,A,B,C},

    P = {S ABC, AI, BLove | Miss, CYou}

    S ABC

    IloveYou

    L(G1)={IloveYou, IMissYou}

    2. G2: VT= {a}, VN= {S}, P = {S aSa}

    S aS

    aaS

    aaa

    L(G2) ={ann 1}

    L(G2)={a, aa, aaa, aaaa,}

    2.2.5 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 cant be specified any type-(i+1) grammar.

    Klasifikasi Chomsky

    1. Grammar tipe ke-0 : Unrestricted Grammar(UG)

    Ciri : , (VTVN)*, > 0

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    26/105

    20

    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 : , (VTVN) *, 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 : VN, (VTVN)*

    Mesin automata : PDA

    Aturan Produksi : berupa sebuah simbol variable

    Contoh : B CDeFg, D BcDe

    4. Grammar tipe ke-3 :Regular Grammar(RG)

    Ciri : VN, {VT, VTVN} atau VN, {VT, VNVT}

    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

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    27/105

    21

    Mesin Pengenal Bahasa

    Kelas Bahasa Mesin Pengenal Bahasa

    Unrestricted Grammar (UG) Mesin Turing (Turing Machine), TM

    Context Sensitive Grammar (CSG) Linear Bounded Automaton, LBAContext Free Gammar(CFG) Pushdown Automata, PDA

    Regular Grammar, RG Finite State Automata, FSA

    Keterkaitan Bahasa

    2.2.6 Analisa Grammar

    A. Analisa Penentuan Type Grammar

    1. Grammar G1dengan P1= {S aB, B bB, B b}.

    Ruas kiri semua produksinya terdiri dari sebuah VN, maka G1

    kemungkinan tipe CFG atau RG. Selanjutnya karena semua ruas kanannya

    terdiri dari sebuah VTatau string VTVNmaka G1adalah RG (3).

    2. Grammar G2dengan P2= {S aAb, B aB}.

    Ruas kiri semua produksinya terdiri dari sebuah VN maka G2kemungkinan tipe CFG atau RG. Selanjutnya karena ruas kanannya

    mengandung string yang panjangnya lebih dari 2 (yaitu aAb) maka G2

    bukan RG, dengan kata lain G2adalah CFG (2).

    3. Grammar G3dengan P3= {S aA, S aB, aAb aBCb}.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    28/105

    22

    Ruas kirinya mengandung string yang panjangnya lebih dari 1 (yaitu aAb)

    maka G3kemungkinan tipe CSG atau UG. Selanjutnya karena semua ruas

    kirinya lebih pendek atau sama dengan ruas kananya maka G3adalah CSG

    (1).

    4. Grammar G4dengan P4= {S aAb, B aB}.

    Ruas kiri semua produksinya terdiri dari sebuah VNmaka G4 kemungkinan

    tipe CFG atau RG. Selanjutnya karena ruas kanannya mengandung string

    yang panjangnya lebih dari 2 (yaitu aAb) maka G4bukan RG, dengan kata

    lain G4adalah CFG (2).

    B. DerivasiKalimat dan Penentuan Bahasa

    Tentukan bahasa dari masing-masing gramar berikut :

    1. G1dengan P1= {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 : L1(G1) = {anbann 1}

    2. G2dg P2= {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) an-1S (1)

    anB (2)

    anbC (3)

    anbaC (4)

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    29/105

    23

    anbam-1C (4)

    anbam (5)

    Dari pola kedua kalimat disimpulkan : L2(G

    2)={anbamn 1, m1}

    C. MenentukanGrammar Sebuah Bahasa

    1. Tentukan sebuah gramar regular untuk bahasa L1= { ann 1}

    Jawab : P1 (L1) = {S aSa}

    2. Tentukan sebuah gramar bebas konteks untuk bahasa :

    L2: himpunan bilangan bulat non negatif ganjil

    Jawab :

    Langkah kunci : digit terakhir bilangan harus ganjil.

    Vt={0,1,2,..9}

    Vn ={S,G,J}

    P = {SHT|JT|J; TGT|JT|J; H2|4|6|8; G0|2|4|6|8;J1|3|5|7|9}

    P={SGS|JS|J; G0|2|4|6|8;J1|3|5|7|9}

    Buat dua buah himpunan bilangan terpisah : genap (G) dan ganjil (J)

    P2(L2) = {S JGSJS, G 02468, J 13579}

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    30/105

    24

    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 AutomataHinga (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

    statelainnya 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. BagianLexical Analyzer dari berbagai kompiler yang berfungsi membagi teks

    input menjadi logical unitseperti Keyword,Identifier, dan pungtuasi.

    3. Search enginemenscan web, dan menemukan kata,fraseatau 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, pencekparity.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    31/105

    25

    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 stateFSA akibat pembacaan sebuah simbol bersifat tak tentu.

    : Q 2Q

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    32/105

    26

    q1

    q2 q3

    1

    0 0

    1

    1

    0 0

    1

    start q0

    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.

    - 0011 : diterima.

    - 10010 : ditolak, karena banyaknya 0 ganjil.

    Diagram transisi-nya :

    DFA nya :

    Q = {q0, q1, q2, q3}

    = {0,1}

    S = q0

    F = {q0}

    Fungsi transisi () =

    - ( q0,011)= ( q2,11) =( q3,1)= q2 (Ditolak)

    - ( q0,1010)= ( q1,010) =( q3,10)=( q2,0)= q0 (Diterima)

    3. Variabel dalam bahasa pascal diawali oleh huruf (besar/kecil), dan diikuti

    dengan huruf atau angka. Diagram Transisinya sebagai berikut:

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    33/105

    27

    q0

    A..Z,a..zstart q0

    q0

    0..9

    A..Z,a..z,0..9

    A..Z,a..z,0..9

    4. AHD F(Q, , , S, F), dimana:

    Q = {q0, q1, q2}

    = {a, b}

    diberikan dalam tabel berikut :

    S = q0

    F = {q0, q1}

    Ilustrasi graf untuk AHD F adalah sebagai berikut:

    - Lambang stateawal adalah nodedengan anak panah.

    - Lambang stateawal adalah nodeganda.

    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

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    34/105

    28

    q2

    q0

    q1

    q4

    q3

    0,1

    0,1

    0

    0

    1

    1

    0,1

    Contoh NFA:

    1. NFA (Q, , , S, F). dimana :

    Q = {q0, q1, q2,q3, q4}

    = {a, b,c}

    diberikan dalam tabel berikut:

    S = q0

    F = {q4}

    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 = ({q0, q1, q2, q3, q4}, {0,1}, , q0, {q2, q4}}

    Diagram transisi:

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    35/105

    29

    Mengecek, apakah string 01001 diterima oleh mesin NFA di atas:

    3.6 Ekuivalen

    Definisi 2: Dua buah FSA disebut ekuivalen apabila kedua FSA tersebut menerima

    bahasa yang sama.

    Contoh : FSA yang menerima bahasa {an| n0 }

    3.7 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 *

    q0

    q0

    q0

    q0

    q0

    q0

    q3

    q3

    q3

    q1

    q1

    q4

    q4

    0 1 0 0 1

    0 1 100

    0

    1

    q4

    a

    a q4

    q4

    a

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    36/105

    30

    q0

    q1

    q2

    q3

    q4

    0

    10

    0 0

    1

    1

    1

    0,1

    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:

    - Hapus stateyang tidak tercapai (tidak ada)

    - Pasangan distinguishable(q0,q4), (q1,q4), (q2,q4), (q3,q4).

    - Pasangan sisanya (q0,q1), (q0,q2), (q0,q3), (q1,q2) (q1,q3) (q2,q3)

    - Catatan : jumlah pasangan seluruhnya :

    3.10 Prosedur Reduksi DFA

    1. Tentukan pasangan status indistinguishable.

    2. Gabungkan setiap group indistinguishablestateke dalam satu statedengan

    relasi pembentukan grup secara berantai : Jika p dan q indistingishabledan jika

    q dan r indistinguishablemaka p dan r indistinguishable, dan p,q serta r

    indistinguishablesemua berada dalam satu grup.

    3. Sesuaikan transisi dari dan ke state-stategabungan.

    10!3!2

    !5

    2

    5==

    C

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    37/105

    31

    Contoh :

    - pasangan status indistinguishable(q1,q2), (q1,q3) dan (q2,q3).

    - q1,q2,q3ketiganya dapat digabung dalam satu state q123

    - Menyesuaikan transisi, sehingga DFA menjadi

    q0

    q123

    q4

    0,1 1

    0 0,1

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    38/105

    32

    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 2Q

    b. Telusuri transisi statestateyang baru terbentuk, dari diagram transisi.

    c. Tentukan state awal : {q0}

    d. Tentukan stateakhir adalah stateyang elemennya mengandung stateakhir.

    e. Reduksi stateyang tak tercapai oleh stateawal.

    Contoh:

    1. Ubahlah NFA berikut menjadi DFA

    Diketahui M(Q, , , S, F), dimana:

    Q = {q0,q1}

    = {0,1}

    diberikan dalam tabel berikut :

    S = q0

    F = {q1}

    Diagram transisi-nya :

    State yang akan dibentuk :

    {}, {q0} {q1},{q0,q1}

    Telusuri state

    State awal : {q0}

    State akhir yang mengandung q1, yaitu {q1},{q0,q1}

    q0

    q1

    0,1

    0 1

    1

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    39/105

    33

    2. Ubahlah NFA berikut menjadi DFA

    Diketahui M(Q, , , S, F), dimana:

    Q = {q0,q1,q2}

    = {p,r }

    diberikan dalam tabel berikut :

    S = q0

    F = {q1}

    Diagram transisi-nya :

    State yang akan dibentuk :

    {}, {q0} {q1},{q2}, {q0,q1}, {q0,q2}, {q1,q2}, {q0,q1,q2}

    Telusuri state

    State awal : {q0}

    State akhir yang mengandung q1, yaitu {q1},{q1,q2}

    Reduksi {q0,q1} {q0,q2} {q0,q1,q2} sehingga FSA menjadi :

    {q0}

    0

    1

    1 0,1{q

    1}

    {q0

    ,q1

    }

    1 {}

    q0

    p r

    p,r

    p

    q2

    q1

    {q0} p p

    r

    r

    {q1,q

    2} {q

    1}

    {q2}{ }

    p,r

    p,r

    pr

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    40/105

    34

    q0

    q4

    q1

    b

    q2

    q3

    b

    b

    4.2 NFA dengan -move

    Def 1. -move adalah suatu transisi antara 2 status tanpa adanya input. Contoh

    transisi antara status q1ke q2

    Def 2. -closure adalah himpunan stateyang dapat dicapai dari suatu state tanpa

    adanya input. Contoh gambar :

    - -closure(q0) = [q0,q1,q3]

    - -closure(q1) = [q1,q3]

    - -closure(q3) = [q3]

    4.3 Ekuivalensi NFA dengan -moveke NFA tanpa -move

    Algoritma:

    a. Buat tabel transisi NFA dengan -move

    b. Tentukan -closuresetiap state

    c. Carilah fungsi transisi/ tabel transisi yang baru, rumus :

    (state,input) = -closure((-closure(state,input))

    d. Tentukan stateakhir ditambah dengan stateyang -closurenya menuju state

    akhir, rumusnya : F = F {q | (-closure(q) F }

    Contoh :

    Tabel transisi-nya

    q0

    q1

    q3

    q2

    a

    b

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    41/105

    35

    -closuredari FSA tersebut

    - -closure(q0) = [q0,q1]

    - -closure(q1) = [q1]

    - -closure(q2) = [q

    2]

    - -closure(q3) = [q3]

    Cari tabel transisi yang baru () :

    Hasilnya menjadi :

    4.4 Penggabungan FSA

    Bila diketahui L1adalah bahasa yang diterima oleh M1dan L2adalah bahasa yang

    diterima oleh M2maka :a. FSA M3yg dapat menerima L1+L2dibuat dengan cara

    - Tambahkan state awal untuk M3, hubungkan dengan state awal M1dan

    state awal M2menggunakan transisi

    - Tambahkan state akhir untuk M3, hubungkan dengan state-state akhir

    M1dan state-state akhir M2menggunakan transisi

    q0

    q2

    a

    b q3

    q1

    a

    b

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    42/105

    36

    b. FSA M4yg dapat menerima L1L2dibuat dengan cara

    - State awal M1menjadi state awal M4

    - State-state akhir M2menjadi state-state akhir M4

    - Hubungkan state-state akhir M1 dengan state awal M2 menggunakan

    transisi

    Contoh :

    - FSA M1dan M2

    - FSA M3

    - FSA M4

    qA1

    qA0

    0

    1 qB1

    qB0

    1

    1

    0

    qA0

    0

    1

    qB0

    1

    1

    0

    qS

    qA1

    qB1

    qF

    qA0

    0

    1 qA1

    qB1

    qB0

    1

    1

    0

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    43/105

    37

    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 : searchingstring pada file

    Hubungan RE dan NFA : Setiap RE ada satu NFA dengan -moveyang 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 RTrt 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 satusubstring 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.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    44/105

    38

    1. Tentukan bahasa reguler yang dibentuk oleh r = (aa)*

    Jawab:

    L(r) = L( (aa)* )

    = {, aa, aaaa, aaaaaa, ... }

    = { a2n | 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 L1dan L2 adalah bahasa reguler, maka L1L2, L1L2, L1L2, ~(L1) dan L1*

    adalah bahasa reguler juga

    b. Tertutup terhadap homomorphic image

    - Jika L1adalah bahasa reguler, maka homomorphic imageh(L1) adalah bahasa

    reguler juga.

    - Dimisalkan dan adalah alfabet, maka fungsi homomorphic dinyatakan

    dengan h : - Jika w = a1a2... an, maka h(w) = h(a1) h(a2) ... h(an)

    - Jika L adalah bahasa pada maka homomorphic image bahasa L adalah

    h(L)= { h(w) | wL}

    Contoh:

    Dimisalkan = {a,b} dan = {a,b,c} dan didefinisikan h(a) = ab dan h(b) =bbc

    homomorphic imagebahasa L = {aa,aba } adalah :

    Jawab: h(L)= { abab, abbbcab}

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    45/105

    39

    5.3 Konversi ekspresi reguler ke FSA

    Contoh : Tentukan FSA untuk ekspresi reguler r = 0(1 |23)*

    5.4 DFA dan Tatabahasa Reguler

    5.4.1 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.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    46/105

    40

    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, S1,S2}, S, P } dengan aturan produksi P

    adalah S S1ab, S1S1ab | S2, S2a

    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.

    5.4.2 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

    Tatabahasa linier untuk FSA tersebut yaitu

    G = ({a,b}, {S,S1,S2,S3}, S, P ) dengan aturan produksi P adalah :

    S S1, S1aS2, S1bS3, S3

    5.4.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}, {V0,V1}, V0, P ) dengan P:

    V0aV1

    q0

    q1

    q3

    q2

    a

    b

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    47/105

    41

    V1abV0| b

    Mesin FSA nya menjadi

    5.5 Penerapan ekspresi regular

    Digunakan untuk memerinci unit-unit leksikal sebuah bahasa pemrograman (token).

    Contoh:

    - ekspresi reguler bilangan real positif (0+1+...+9)(0+1+...+9)*.(0+1+...+9)

    (0+1+...+9)*

    - ekspresi reguler bilangan bulat (+ + - + ) (0+1+...+9)(0+1+...+9)*

    - 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 lebihdari 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

    Ambil string wL , dengan |w|n: w= 01011

    q0 0 q1 1 q2 0 q1 1 q3 1 q4

    V0

    a b

    a

    V1

    Vf

    b

    q0 0 1

    1

    q1 q4

    0

    q3 1

    q2

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    48/105

    42

    simpul q1 dikunjungi 2 kali. String diantara simbol q1 tersebut dapat

    dipompa keluar menjadi q0 0 q1 1 q3 1 q4

    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 ix

    L untuk semua i 0. dengan |v|1 dan |uv| n .

    Notasi matematisnya

    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 = {ai^2 | i1}

    {a1, a4,a9, a16, ...}

    {a , aaaa , aaaaaaaaa , aaaaaaaaaaaaaaaa, ... }Suatu string dalam L harus mempunyai panjang yang berupa nilai kuadrat

    (1,4,9,16, ..., n2, ...). Misal bahwa L adalah bahasa reguler.

    Perhatikan bahwa terdapat sebuah nilai n sedemikian sehingga an^2L,

    Menurut pumping lemma dapat kita tuliskan an^2= uvx, sedemikian hingga

    - 1 |v|n

    - (i) (uviw L)

    karena |v| 1 maka jelas bahwa |uvw|

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    49/105

    43

    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.1Mesin 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 : q0,q1,q2

    : [0,1]

    S : q0

    : [0,1,2]

    (q0) =0(q1) =1

    (q2) =2

    Prinsip:

    - jika i diikuti dengan 0, maka hasilnya 2i

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    50/105

    44

    1012=5 10102= 2*5 =10

    - jika i diikuti dengan 1, maka hasilnya 2i+1

    1012=5 10112= 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 :

    - Contoh :

    a. input 5 (1012) , state terakhir q

    2/2 , 5 mod 3 = 2

    b. input 10 (10102) ,state terakhir q1/1, 10 mod 3=1

    6.2Mesin 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)

    q0/0 1 0

    0

    q1/1

    1

    q2/2

    0 1

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    51/105

    45

    Jawab :

    M = (Q,,,S,,)

    Q : q0,q1,q2

    : [0,1]

    S : q0

    : [0,1,2]

    (q0,0) =T

    (q0,1) =T

    (q1,0) =Y

    (q1,1) =T

    (q2,0) =T

    (q2,1) =Y

    6.3Ekuivalensi mesin Moore dengan mesin Mealy

    6.3.1 Mesin Moore ke mesin Mealy

    Jml state = jml state sebelum * jml output

    6.3.2 Mesin Mealy ke mesin Moore

    - Menambah label output pada transisi

    - Menghapus label output pada state

    q0

    0/T

    1/T

    0/T

    q1

    1/T

    q2

    0/Y

    1/Y

    q0T 0 0q

    1T q

    2T

    1

    1

    q0Y

    0

    q1Y q

    2Y

    0

    1

    0 10 1

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    52/105

    46

    Contoh kasus 1:

    Tentukan FSA dari rangkaian sirkuit berikut ini. Asumsi bahwa terdapat

    waktu yang cukup untuk perambatan sinyal menuju kondisi yang stabil.

    Contoh kasus 2

    Kelereng dijatuhkan dari A atau B. Percabangan x1,x2dan x3menentukan

    saluran mana yang akan dilewati kelereng (kiri / kanan). Ketika percabangan

    dilewati, kelereng berikutnya akan melewati dengan saluran berbeda.

    Buatlah FSA nya

    q0

    1/1 0/2

    0/1

    q1

    1/0

    q2

    0/0 1/2

    input x

    F

    y2

    y1

    A B

    C D

    X1 X2

    X3

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    53/105

    47

    Bab VII

    Bahasa Bebas Konteks

    7.1Tata Bahasa Bebas Konteks

    Deskripsi bahasa alami

    kucing

    berlari

    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,... , anbn

    2. A 0A0

    A 1A1Aa

    Kalimat-kalimat yang dibangkitkan dari aturan produksi itu adalah a,01a10,

    1001a1001 , 110a011 aR

    3. S aSb | SS |

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    54/105

    48

    Bahasa yang dihasilkan oleh tatabahasa dengan aturan produksi di atas:

    L = {w (a + b)* |na(w) =nb(w) }

    7.2Leftmost dan Rightmost Derivation

    Suatu penguraian/ penurunan dikatakan leftmostderivation 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

    AaaA |

    BBb |

    - Menspesifikasikan bahasa

    L(G) = {a2nbm| n0 , m0}

    - 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

    AbBb

    BA |

    - 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

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    55/105

    49

    7.3Pohon urai

    Untuk menampilkan penguraian, dapat dilakukan dengan membentuk pohon urai

    (urutan penguraian tidak terlihat). Pohon urai untuk contoh sebelumnya :

    7.4Parsing 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 pertama1. 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

    S

    a

    bBb

    BA

    bBb

    A

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    56/105

    50

    7.5Ambiguitas 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 :

    7.6Pumping 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

    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

    bSa

    S

    bSa

    bSa

    S

    bSa

    S

    S

    ( )( )( )( )

    ( )( )

    =

    Lywxuvi

    vxnvwxuvwxyzyxwvu

    nzLz

    znL

    ii

    1,,,,

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    57/105

    51

    S uAy uwy

    S uAy uvAxy uvwxy

    S uAy uvAxy uvvAxxy uvvwxxy

    sehingga untuk setiap i 0 , uviwxiy L

    7.7Sifat - sifat tertutup bahasa bebas konteks

    1. Gabungan dua CFL merupakan CFL juga

    Jika diketahui dua buah CFG G1= (N1,T1,S1,P1) dan G2=(N2,T2,S2,P2) yang

    menghasilkan bahasa L1dan L2, maka CFG L1L2dapat 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 S1|S2yang digunakan untuk memilih salah satu

    simbol awal S1atau S2dari simbol awal baru S.

    G3= (N1N2{S},T1T2,S,P1P2{SS1|S2}}

    2. Penyambungan dua CFL merupakan CFL juga

    Jika diketahui dua buah CFG G1= (N1,T1,S1,P1) dan G2=(N2,T2,S2,P2) yang

    menghasilkan bahasa L1dan L2, maka bahasa L1L2dapat dibentuk oleh :

    G4= (N1N2{S},T1T2,S,P1P2{SS1S2}}

    3. Kleene Klosuredari CFL adalah CFL juga.

    Kleene Klosuredari tatabahasa G=(N,T,S1,P) adalah

    G5= (N {S} , T , S , P {S S1S | } )

    4. Bahasa bebas konteks tertutup terhadap substitusi

    Contoh:

    La= {0n1n| n 1 } dan Lb= { wwR| w (0+2)* }

    dihasilkan oleh tatabahasa Gadengan aturan produksi Sa0Sa1 | 01

    serta tatabahasa G2dengan aturan produksi Sb0Sb0 | 2Sb2 |

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    58/105

    52

    7.8Substitusi

    Didefinisikan tatabahasa G dengan aturan produksi S aSbS | bSaS |

    jika f adalah substitusi f(a)= La dan f(b) = Lb maka f(L) adalah bahasa yang

    dihasilkan oleh tatabahasa dengan aturan produksi

    S SaSSbS | SbSSaS |

    Sa0Sa1 | 01

    Sb0Sb0 | 2Sb2 |

    7.9Tatabahasa 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

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    59/105

    53

    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. SAB | a

    Aa

    Aturan produksi SAB 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 DA 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 uselesssudah hilang.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    60/105

    54

    Contoh :

    1. S aSa | Abd | Bde

    A Ada

    BBBB | 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

    BBBB | a

    2. SAa | B

    Aab | D

    Bb | E

    Cbb

    EaEa

    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:

    A D

    C bb

    E aEa

    B E

    Penyederhanaannya menjadi:

    SAa | B

    A ab

    B b

    3. S aAb | cEB

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    61/105

    55

    A dBE | eeC

    B ff

    C ae

    D h

    Analisa :

    - Aturan produksi ScEB, A dBE dapat dihilangkan (E tidak memiliki

    penurunan)

    - Aturan produksi D h, redundan

    Sisa aturan produksi

    SaAb

    AeeC

    B ff

    C ae

    Hasil penyederhanaan :

    SaAb

    AeeC

    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. SSb

    SC

    C D

    C ef

    Ddd

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    62/105

    56

    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. SA

    SAa

    AB

    B C

    B b

    C D

    C ab

    Db

    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

    S Aa

    A ab | b

    B ab

    B b

    C b

    C ab

    D b

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    63/105

    57

    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: Sbcd

    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. SAb | Cd

    Ad

    C

    Variabel yang nullable adalah variabel C. Karena penurunan C

    merupakan penurunan satu-satunya dari C, maka kita ganti S Cd menjadi

    Sd. Kemudian produksi C kita hapus.

    Setelah penyederhanaan menjadi:

    S Ab | d

    A d

    3. Contoh tata bahasa bebas konteks:

    S AaCD

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    64/105

    58

    A CD | AB

    B b |

    C d |

    D

    Variabel yang nullableadalah 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:

    SAA | C | bd

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    65/105

    59

    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.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    66/105

    60

    Bab IX

    Bentuk Normal Chomsky

    9.1Pengertian

    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 CNFdengan

    syarat tata bahasa bebas konteks tersebut :

    o Tidak memiliki produksi useless

    o Tidak memiliki produksi unit

    o Tidak memiliki produksi

    9.2Aturan 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.3Pembentukan 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 > 1.

    3. Lakukan penggantian aturan produksi yang ruas kanannya memuat > 2 simbol

    variabel.

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    67/105

    61

    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.4Bagan Tahapan Pembentukan CNF

    Contoh (kita anggap CFG sudah mengalami penyederhanaan )

    1. SbA | aB

    A bAA | aS | aB aBB | bS | b

    - Aturan produksi yang sudah dalam CNF:

    A a

    B b

    - Dilakukan penggantian aturan produksi yang belum CNF

    S bA => S P1A

    S aB => SP1B

    A bAA => S P1AA => A P1P3

    A aS => A P2S

    B aBB => B P2BB => B P2P4

    B bS => B P1S

    - Terbentuk aturan produksi dan simbol variabel baru:

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    68/105

    62

    P1b

    P2a

    P3AA

    P4BB

    - Hasil akhir aturan produksi dalam CNF:

    A a

    B b

    S P1A

    S P2B

    A P1P3

    A P2S

    B P2P4

    B P1S

    P1b

    P2a

    P3AA

    P4BB

    2. SaB | 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 => SP1B

    A bc => SP2P3

    B Ab => B A P2

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    69/105

    63

    C aB => C P1B

    - Terbentuk aturan produksi dan simbol variabel baru:

    P1a

    P2b

    P3c

    - Hasil akhir aturan produksi dalam CNF:

    S CA

    A a

    B BC

    C b

    S P1B

    S P2P3

    B A P2

    C P1B

    P1a

    P2b

    P3c

    9.5Algoritma CYK untuk Tata Bahasa Bebas Konteks

    Algoritma CYK merupakan algoritma parsingdan 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. Vi1:= {A| A a aturan produksi dimana simbol ke- i adalah a };

    3. for j:= 2 to n do

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    70/105

    64

    4. for i:= 1 to (n-j+1) do begin

    5. Vij:=;

    6. for k:=1 to (j 1) do

    7. Vij:= Vij ( A | ABC adalah suatu produksi, dimana B di Vik

    dan C di Vi+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 Vijdengan

    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 ) :

    SAB | BC

    ABA | a

    B CC | b

    C AB | a

    Periksalah apakah untai baaba termasuk kedalam bahasa tersebut !

    Pertama tama kita akan membuat tabel untuk Vij( Vkolom,baris ) sebagai berikut :

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    71/105

    65

    Tabel diatas kita gunakan untuk mempermudah kita dalam menyelesaikan persoalan,

    i akan menyatakan kolom,jakan menyatakan baris.

    Kita ketahui n= 5. Dari Algoritma langkah (1) dan (2) kita bisa mengisi baris pertama

    pada tabel, sebagai berikut:

    Untuk V11, kita periksa variabel yang bisa menurunkan b, dari B b kita isi

    V11= {B}

    Untuk V21, kita periksa variabel yang bisa menurunkan a, dari Aa dan C

    a kita isi V21={A,C}

    Untuk V31, kita periksa varibel yang bisa menurunkan a, dari A a dan C

    a kita isi V31={A,C}

    Untuk V41, kita periksa variabel yang bisa menurunkan b, dari B b kita isi

    V41={B}

    Untuk V51, kita periksa variabel yang bisa menurunkana, dari A a dan C

    A kita isi V51={A,C}

    Dari hasil tersebut kita bisa mengisi tabel :

    Selanjutnya kita akan mengisi baris ke-2 sampai nsebagai berikut :

    Pada baris ke -2 (k =1 )

    Untuk V12, periksa Vik- Vi+k, j-k, berarti V11-V21, yaitu B-A,C, variabel yang

    bisa menurunkan BA atau BC adalah S dan A, maka V12kita isi {S, A}

    Untuk V22, periksa Vik Vi+k, j-k, berarti V21-V31, yaitu A,C-A,C, variabel yang

    bisa menurunkan AA, AC, CA, atau CC adalah B maka V22kita isi {B}

    Untuk V32, periksa Vik-Vi+k, j-k, berarti V31-V41yaitu A, C-B, variabel yang

    bisa menurunkan AB atau CB adalah S dan C, maka V32kita isi {S, C}

    Untuk V42, periksa Vik-Vi+k, j-kberarti V41-V51, yaitu A,C-B, variabel yang bisa

    menurunkan AB atau CB adalah S dan C, maka V42kita isi {S,A}

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    72/105

    66

    Dari hasil tersebut kita bisa mengisi tabel:

    Pada baris ke 3 (k= 1 sampai 2):

    Untuk V13, periksa Vik-Vi+k, j-k, berarti V11-V22& V12-V31, yaitu B-B & S,A-

    A,C, variabel yang bisa menurunkan BB, SA,SC,AA, atau AC adalah tidak

    ada, maka V13 kita isi

    Untuk V23, periksa Vik-Vi+k, j-k, berarti V21-V32& V22-V41, yaitu A,C-S,C & B-B, variabel yang bisa menurunkan AS, AC, CS, CC, atau BB adalah B , maka

    V23 kita isi {B}

    Untuk V33, periksa Vik-Vi+k, j-k, berarti V31-V42& V32-V51, 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 V33kita isi {B}

    Dari hasil tersebut kita bisa mengisi tabel:

    Pada baris ke 4 ( k= 1 sampai 3):

    Untuk V14, periksa Vik-Vi+k, j-k, berarti V11-V23& V12-V32 & V13-V41, yaitu B-

    B & S,A-S,C & -B, variabel yang bisa menurunkan BB, SS, SC, AS AC

    adalah tidak ada, maka V14kita isi

    Untuk V24, periksa Vik-Vi+k, j-k, berarti V21-V33& V22-V42 & V23-V51, 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 V24kita isi {S,A,C}

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    73/105

    67

    Dari hasil tersebut kita bisa mengisi tabel:

    Pada baris ke 5 ( k= 1 sampai 4 )

    Untuk V15, periksa Vik-Vi+k, j-k, berarti V11-V24& V12-V33 & V13-V42& V14-

    V51yaitu 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 V15kita isi

    {S,A,C}

    Dari hasil tersbut kita bisa mengisi tabel:

    Perhatikan

    Syarat suatu untai dapat diturunkan dari simbol awal, V1nmemuat simbol

    awal.

    Terlihat pada tabel, simbol awal S termuat di V15, maka untai baaba dapat

    diturunkan oleh tata bahasa tersebut.

    Kita bisa mencoba-coba untuk membuat pohon penurunan dari untai baaba,

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    74/105

    68

    Pohon penurunan untuk untai baaba

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    75/105

    69

    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. = (VT)* atau kumpulan simbol variabel dan terminal.

    Contoh aturan produksi yang rekursif kanan:

    S dS

    B adB

    - Produksi dalam bentuk: A Amerupakan 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.

    10.2 Pohon Penurunan

    Bisa dilihat pohon penurunan pada gambar dari tata bahasa bebas konteks dengan

    aturan produksi:

    SaAc

    AAb |

    Pohon penurunan sebuah CFG yang rekursif kiri

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    76/105

    70

    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.

    10.3 Tahapan Penghilangan Rekursif Kiri

    1. Pisahkan aturan produksi yang rekursif kiri dan yang tidak,

    - Misal : aturan produksi rekursif kiri: A A1|A2|A3|....... An

    - Aturan produksi yang tidak rekursif kiri (termasuk produksi ):

    A 1| 2| 3| ........ 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:

    - A1Z | 2Z | .... mZ

    - Z 1| 2| 3| .... n

    - Z 1Z | 2Z | 3Z | .... nZ

    Penggantian diatas dilakukan untuk setiap aturan produksi dengan simbol ruas kiri

    yang sama. Bisa muncul simbol variabel baru Z1,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 :

    CFGmengandungaturanproduksi yangrekursif kiri

    Aturan produksiyang tidakrekursif kiri

    Aturan produksiyang rekursif kiri

    Lakukan penggantianmunculkan aturanproduksi baru dansimbol variabel baru

    CFG bebasdari aturanproduksi yangrekursif kiri

  • 7/24/2019 TEORI BAHASA DAN AUTOMATA.pdf

    77/105

    71

    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