Automata Hingga Deterministik (AHD)

  

Automata Hingga Deterministik

(AHD) By Kustanto,S.T.,M.Eng.

Komponen sebuah Kompilator

  Program Subjek Penganalisis Leksikal

Program Objek

  (Scanner) Penganalisis Sintaks (Parser)

  

Penganalisis

Semantik

Pembentuk Kode

  Pengoptimal Kode TABEL

  ANALISIS SINTESIS Proses kompilasi dikelompokkan menjadi : Analisa : program sumber dibagi-bagi dan dibentuk menjadi bentuk antara ( intermediate presentation) Sintesa : membangun program sasaran yang diinginkan dari bentuk antara

Token

  Scanning Scanning termasuk ke dalam analisis lexical, yaitu

proses untuk mengidentifikasi satuan terkecil dari

Bahasa, yang disebut Token / Terminal / Daun

(identifier, keyword,label, operator aritmetika dan

assignment, operator relasional, tanda baca, dsb)

Aspek dalam Scanner :

   Bagaimana bentuk dan penyajian Token. Metode yang digunakan Grammar Regular dan Ekspresi Regular

   Pengenalan Token. Metode yang digunakan Automata Hingga, dengan penyajian menggunakan Diagram Transisi Scanning (cont.) Scanner berinteraksi dengan Parser, dengan cara : 

  Scanner mengolah Program Source secara terpisah sebagai satu fase, dimana token disimpan dalam sebuah tabel sebelum Parser bekerja

   Scanner berinteraksi denga Parser, dimana scanner dipanggil oleh parser bila token dalam program source diperlukan Automata Hingga (AH)

Automata Hinga (AH) / Finite state Automaton (FA) adalah suatu struktur abstrak yang didefinisikan, terdiri dari :

  1. Himpunan Hingga A berisi simbol Input

  2. Himpunan Hingga S berisi State (internal state)

  3. Himpunan Hingga Z berisi simbol output

  4. Sebuah fungsi f: S x Z  S, disebut fungsi next state

  5. Sebuah fungsi g: S x A Z, disebut fungsi output

AH berhubungan dengan Regular Grammar Jenis AH :

  1. AH Determinstik (AHD)

  2. AH Non Deterministik (AHN)

  3. AHN dengan transisi untai hampa

  

Automata Hingga Deterministik (AHD)

Automata Hinga Deterministik (AHD) didefinisikan dengan 5 tupel

  1. Himpunan Hingga internal state (S)

  2. Himpunan Hingga simbol input (V)

  3. Sebuah fungsi f: S x V  S ; merupakan fungsi next state

  4. State awal (q  S)

  5. Himpunan hingga state penerima  S AHD sering digambarkan dengan cara :

   Table Transisi State

   Transisi Digraph Automata Hingga Deterministik (AHD) (cont.)

  Contoh : Diketahui AHD dengan 2 simbol input dan 3 state, 1.

  V = { a,b}

  2. S = { q0, q1, q2)

  3. T = {q0, q1} state penerima 4. q0 sebagai state awal

  5. Fungsi next state didefinisikan f:(S,V)

  input f a b q0 q0 q1 q1 q0 q2 q2 q2 q2

  (cont.)

Automata Hingga Deterministik (AHD)

  b b a a q0 q2 q1 b a

  Periksalah string berikut : 1. aba (diterima) q0  q0  q1  q0

  2. aabbaa

q0  q0  q0  q1  q2  q2  q2 (ditolak, state penerima yang ditentukan adalah q0 dan q1, bukan q2) Automata Hingga Deterministik (AHD) (cont.)

Identifikasi Integer String Grammar : <integer> ::= <digit> | <integer><digit>

  Contoh :

  input state d  d

  START

  INTEGER -

  INTEGER

  INTEGER OUT OUT

  (Accept) Start Integer OUT

  delimeters

  d d

  (cont.) Automata Hingga Deterministik (AHD)

  Identifikasi Identifier String Contoh :

  &lt;identifier&gt; ::= &lt;letter&gt;|&lt;identifier&gt;&lt;letter&gt;|&lt;identifier&gt;&lt;digit&gt;

  &lt;letter&gt; &lt;letter&gt;

  Start

  Identifier &lt;digit&gt;

  &lt;digit&gt;

  Error Parsing Parsing adalah konsturksi atau pembentukan Pohon Sintaks untuk suatu kalimat (ekspresi)

  Bila terdapat lebih dari satu pohon sintaks untuk sebuah grammar maka dikatakan grammar tersebut Ambiguous.

  Dua cara melakukan validitas sintaks dengan parsing : 

  TOP DOWN Parsing : melakukan derivasi string dari NT 

  BOTTOM UP Parsing : melakukan reduksi simbol ke NT Parsing Top Down Jika  adalah input string, maka derivasi dari Top Down Parse dapat ditunjukkan sebagai berikut :

  

S …  …  …  Parse Tree untuk Top Down Parsing selalu dimulai dari sebelah kiri

  S

  1

  2 NT NT

  11 NT ……. 1n

  12 t NT

  3

  21

  (cont.) Parsing Top Down Contoh : Parsing Top Down untuk identifier x2 Derivasinya : &lt;identifier&gt;  &lt;identifier&gt;&lt;digit&gt; &lt;letter&gt;&lt;digit&gt;  x &lt;digit&gt;  x2

  a. &lt;identifier&gt; &lt;identifier&gt; c &lt;identifier&gt; d &lt;identifier&gt; e

  &lt;identifier&gt; &lt;digit&gt; &lt;identifier&gt; &lt;digit&gt; &lt;identifier&gt; &lt;digit&gt; b &lt;identifier&gt;

  &lt;identifier&gt; &lt;digit&gt;

  2 &lt;letter&gt;

  &lt;letter&gt; &lt;letter&gt; x x Parsing Top Down (cont.)

  Contoh : ekspresi a + b * c grammar : E ::= T + E | T T ::= V * E | V V ::= &lt;id&gt;

  Prediction Prediction Sentential Form E

  T+E T

  V

  V &lt;id&gt;

  E T

  T V*T

  V &lt;id&gt;

  T V

  V &lt;id&gt;

  T+E V+E &lt;id&gt;+E &lt;id&gt;+T &lt;id&gt;+V*T &lt;id&gt;+&lt;id&gt;*T &lt;id&gt;+&lt;id&gt;*V &lt;id&gt;+&lt;id&gt;*&lt;id&gt;

  E T + E

  V id T

  V * T id V id Parsing Bottom Up Parsing Bottom Up membangun pohon sintaks melalui urutan simbol yang direduksi, atau dimulai dengan sebuah string hingga mencapai simbol start Grammar Contoh : diketahui identifier x2, dengan parsing bottom up menjadi :

  &lt;identifier&gt; &lt;identifier&gt; &lt;identifier&gt;

  &lt;identifier&gt; &lt;letter&gt;

  &lt;letter&gt; &lt;letter&gt; &lt;digit&gt; &lt;digit&gt;

  &lt;letter&gt; x 2 x x x 2 x

  2

  2

  2

  x2 &lt;letter&gt;2 &lt;identifier&gt;2 &lt;identifier&gt;&lt;digit&gt; &lt;identifier&gt;

  d a b e c Relasi Preseden dan Pemakaiannya

Teknik parsing pada metode Bottom-Up dilakukan dengan

mencari berulang-ulang, handle (leftmost simple phrase) u dari bentuk sentensial saat itu dan mereduksinya menjadi suatu nonterminal U dnegan memakai reduksi U

   u

Jadi tujuan utamanya adalah mencari Handle dari sebuah

bentuk sentensial yaitu simple phrase terkiri (leftmost) dari

bentuk sentensial tersebut.

  

Masalah tersebut diselesaikan dengan Grammar Preseden Misal, R dan S berada dalam suatu grammar G. Beberapa bentuk sentensial dapat dibentuk dari simbol R dan G tersebut (…RG…..). Ada tiga kemungkinan yang timbul dalam handle yang dibuat dari R dan S.

  R adalah bagian dari suatu handle tapi S tidak (R  S)  dikatakan R &gt; S (R memiliki Preseden atas S).  R harus merupakan ekor dari beberapa produksi U  …R. 

  Karena handle berada di kiri S,maka S harus merupakan terminal Relasi Preseden dan Pemakaiannya (cont.)

  

U

R S….

  ….. ………..

  handle

  

R dan S keduanya adalah bagian dalam suatu handle (R  S)

 dikatakan R dan S memiliki Preseden yang sama, dan harus direduksi secara bersamaan waktu

   Harus ada suatu produksi U  …RS...

  Relasi Preseden dan Pemakaiannya (cont.)

  U ..….

  ….. … RS..

  handle …. ….

   dikatakan R &lt; S

   S merupakan kepala dari beberapa produksi U  S…..

  U …….

  …R S ……….. Relasi Preseden dan Pemakaiannya (cont.)

Contoh : Diketahui, Grammar dengan simbol Start Z dan produksi :

Z  bMb

  M  (L | a L  Ma) Berikut ini akan ditunjukkan bentuk sentensial, pohon sintaks,handel dari relasi yang dapat diturunkan dari produksi.

  Bentuk sentensial : bab

  Pohon Sintaks : Z

  Handel : a Relasi yang diberikan Pohon : b

   a b M b a

   b

  a

   b

  M b L

   L L

   ( (

  Handel : Ma) Relasi yang diberikan Pohon : b

  L M a )

  ( M b

  Pohon Sintaks : Z b

  Z b (

  Bentuk sentensial : b(Lb

   b

   L L

   ( (

  Handel : (L Relasi yang diberikan Pohon : b

  Relasi Preseden dan Pemakaiannya (cont.)

  Pohon Sintaks :

  • Bentuk sentensial : b(Ma)b

  End of Session Questions ?