Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Istiqomah, S.Kom [Teknik Kompilasi UNIKOM 2013]

Presentasi serupa


Presentasi berjudul: "Istiqomah, S.Kom [Teknik Kompilasi UNIKOM 2013]"— Transcript presentasi:

1 Istiqomah, S.Kom [Teknik Kompilasi UNIKOM 2013]
Analisis Sintaksis Istiqomah, S.Kom [Teknik Kompilasi UNIKOM 2013]

2 Analisis Sintaks (Parsing)
Parsing merupakan tahapan yang berguna untuk memeriksa urutan kemunculan token. Parsing adalah konstruksi atau pembentukan Pohon Sintaks untuk suatu kalimat (ekspresi). Pohon Sintaks menggambarkan bagaimana memperoleh suatu string dengan cara menurunkan simbol non-terminal (variable) menjadi simbol terminal.

3 Contoh 1 Misal terdapat aturan tata bahasa bebas konteks dengan aturan produksi : S  AB A  aA | a B  bB | b

4 Metode Parsing Top Down
Metode ini melakukan penelusuran dari root/puncak menuju leaf/daun (S - T). Meliputi : Backtrack/backup (Brute Force) & No Backtrack (Recursive Descent Factor) Bottom Up Metode ini melakukan penulusuran dari leaf/daun menuju ke root/puncak. (T-S)

5 Parsing dengan Brute Force
Metode ini memilih aturan produksi dari paling kiri Kemudian melakukan expand semua non terminal pada aturan produksi sampai yang tertinggal adalah simbol terminal. Bila terjadi kesalahan (string tidak sesuai) maka akan dilakukan backtrack. Algoritma ini membangun pohon parsing yang top down, yaitu mencoba segala kemungkinan yang ada secara satu persatu.

6 Contoh 2 Misal : S  aAd | aB A  b | c B  ccd | ddc
Lakukan parsing untuk String ‘accd’

7 Contoh 3 Terdapat grammar/tata bahasa G = {V, T, S, P}
V = {“E”, “T”, “F”} Simbol non-terminal T = {“i”, “*”, “/”, “+”, “-” } Simbol terminal S = “E” Simbol awal String yang diinginkan adalah i*i Tentukan aturan produksi yang bisa diterima.

8 Contoh 3 (lanjutan) Aturan produksi (P) yang dicobakan adalah :
E  T | T + E | T – E T  F | F * T | F / T F  i diterima E  T | E + T | E – T T  F | T * F | T / F F  i diterima, walaupun rekursif kiri E  E + T | E – T | T T  F * T | F / T | F F  i tidak diterima, karena rekursif kiri menyebabkan looping.

9 Aturan Produksi Rekursif
Aturan produksi yang memiliki ruas kanan (hasil produksi) yang memuat simbol variabel pada ruas kiri. Ada 2 macam : 1. Rekursif kanan 2. Rekursif kiri

10 Rekursif Kanan Aturan produksi dalam bentuk : A  A
dengan  = (V  T)* atau kumpulan simbol variabel dan terminal Contoh : S  dS B  adB

11 Rekursif Kiri Aturan produksi dalam bentuk : A  A 
dengan  = (V  T)* atau kumpulan simbol variabel dan terminal Contoh : S  Sd B  Bad

12 Rekursif Kiri Dalam banyak penerapan tata bahasa, rekursif kiri tak dinginkan Untuk menghindari penurunan yang bisa mengakibatkan looping, perlu dihilangkan sifat rekursif kiri dari aturan produksi.

13 Penghilangan Rekursif Kiri
Pisahkan aturan produksi yang rekursif kiri dan tidak, misal : Rekursif kiri : A  A1 | A2 | A3 | …. | An Bukan Rekursif kiri : A  1 | 2 | 3 | …. | m Lalu tentukan 1 , 2 …. n dan 1 , 2 …. m dari setiap aturan produksi yang memiliki symbol ruas kiri yang sama. Lakukan penggantian aturan produksi yang rekursif kiri. 1. A  1Z | 2Z | …. | mZ 2. Z  1 | 2 | …. | n 3. Z  1Z | 2Z | …. | nZ Hasil akhir berupa aturan produksi ditambah dengan aturan produksi semula yang tidak rekursif kiri.

14 Contoh 4 Tata bahasa bebas konteks : S  Sab | aSc | dd | ff | Sbd
Langkah Pengilangan rekursif kiri 1. Pisahkan Rekursif kiri : S  Sab | Sbd => 1 = ab, 2 = bd Bukan Rekursif kiri : S  aSc | dd | ff => 1 = aSc, 2 = dd, 3 = ff

15 Contoh 4 (lanjutan) S  aScZ | ddZ | ffZ Z  ab | bd Z  abZ | bdZ
2. Lakukan pergantian S  aScZ | ddZ | ffZ Z  ab | bd Z  abZ | bdZ 3. Hasil akhir yang didapat S  aSc | dd | ff S  aScZ | ddZ | ffZ Z  ab | bd Z  abZ | bdZ

16 Kelemahan Metode Brute Force
Mencoba untuk semua aturan produksi yang ada sehingga menjadi lambat (rentang waktu eksekusi tidak jelas) Mengalami kesukaran untuk melakukan pembetulan kesalahan Memakan banyak memori, karena perlu mencatat (backup) lokasi backtrack Grammar yang memiliki Rekursif Kiri tidak bisa diperiksa, sehingga harus diubah dulu sehingga tidak rekursif kiri, Karena rekursif kiri akan mengalami Loop yang terus-menerus

17 Latihan Lakukan parsing dengan metode brute force, untuk mendapatkan string ‘adssfd’ dari : S  aAd | Ba | cd A  b | c | Bf B  aef | dss

18 Latihan Lakukan penghilangan rekursif kiri dari :
A  Abc | cd | Afg | Ai | d

19


Download ppt "Istiqomah, S.Kom [Teknik Kompilasi UNIKOM 2013]"

Presentasi serupa


Iklan oleh Google