Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehHandoko Sugiarto Telah diubah "6 tahun yang lalu
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 A1 | A2 | A3 | …. | An 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
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.