Pertemuan 6 Analisis Sintaksis pdf

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

Definisi Analisis Sintaks
 Pengelompokkan token-token ke dalam class syntax (bentuk sintaks),

seperti procedure, statement, dan expression.

 Grammar : sekumpulan aturan-aturan untuk mendefinisikan bahasa
sumber

 Grammar dipakai oleh analisis sintaksis untuk menentukan struktur dari
program sumber.

Definisi Analisis Sintaks
 Proses pendeteksian atau pemeriksaan urutan kemunculan token disebut

dengan istilah Parsing.

 Parsing adalah konstruksi atau pembentukan Pohon Sintaks untuk suatu
kalimat (ekspresi).


Pohon Sintaks
 Pohon Sintaks berguna untuk menggambarkan bagaimana memperoleh

suatu string (untai) dengan cara menurunkan simbol-simbol non-terminal
(variable) menjadi simbol terminal.

Contoh 1
 Misal terdapat sebuah kalimat
The cat sat on the mat

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

String yang dihasilkan adalah ‘aabbb’


Teknik Penurunan
 Proses penurunan/parsing bisa dilakukan dengan cara :

1. Penurunan terkiri (leftmost derivation), simbol variabel
terkiri yang diperluas lebih dulu.

2. Penurunan terkanan (rightmost derivation), simbol variabel
terkanan yang diperluas lebih dulu.

Contoh 3
Misal terdapat tata bahasa  Penurunan Kiri
bebas konteks :
S  aAS | a
A  SbA | ba

 Penurunan Kanan

S  aAS

S  aAS


» S  aSbAS

» S  aAa

» S  aabAS

» S  aSbAa

» S  aabbaS

» S  aSbbaa

» S  aabbaa

» S  aabbaa

Contoh 3 (lanjutan)
S
a


A

S
a

S

a

b

A

b

a

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

 Bottom Up

Metode ini melakukan penulusuran dari leaf/daun menuju ke root/puncak. (T-S)

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.

Parsing dengan Brute Force
 Misal :

S  aAd | aB
Ab|c

B  ccd | ddc
Lakukan parsing untuk
String ‘accd’

Parsing dengan Brute Force (Rekursif Kiri)
 Aturan produksi dalam bentuk :

AA

dengan  = (V  T)* atau kumpulan simbol variabel dan terminal
Contoh :


S  Sd

B  Bad

Parsing dengan Brute Force (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.

Contoh 4
 Terdapat grammar/tata bahasa G = {V, T, S, P}

V = {“E”, “T”, “F”}

Simbol non-terminal

T = {“i”, “*”, “/”, “+”, “-” }

Simbol terminal


S = “E”
String yang diinginkan adalah i*i
Tentukan aturan produksi yang bisa diterima.

Simbol awal

Contoh 4 (lanjutan)
 Aturan produksi (P) yang dicobakan



adalah :


F  i diterima

TF|T*F|T/F

F  i diterima, walaupun rekursif kiri


ET|T+E|T–E
TF|F*T|F/T

ET|E+T|E–T



EE+T|E–T|T

TF*T|F/T|F

F  i tidak diterima, karena rekursif kiri
menyebabkan looping.

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


Contoh 5
 Tata bahasa bebas konteks :

S  Sab | aSc | dd | ff | Sbd

Langkah Pengilangan rekursif kiri
1. Pisahkan
Rekursif kiri
Bukan Rekursif kiri

: S  Sab | Sbd

: S  aSc | dd | ff

=> 1 = ab, 2 = bd

=> 1 = aSc, 2 = dd, 3 = ff

Contoh 5 (Lanjutan)
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

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, maka harus

diubah dulu sehingga tidak rekursif kiri, Karena rekursif kiri akan
mengalami Loop yang terus-menerus

Parsing dengan Recursive Descent Parser
 Salah satu cara untuk mengaplikasikan bahasa bebas konteks untuk

melakukan analisa sintaksis suatu source code

 Pada tahap ini, simbol terminal maupun simbol non-terminal (variabel)
sudah bukan sebuah karakter, tetapi berupa besaran leksikal sebagai
simbol terminalnya dan besaran sintaks sebagai simbol non-terminal
(variabel).

Parsing dengan Recursive Descent Parser
 Ciri dari RDP yang menonjol secara rekursif menurunkan semua variabel

dari awal sampai bertemu terminal dan tidak pernah mengambil token
secara mundur.

 Ciri lain dari RDP adalah sangat bergantung pada algoritma scan dalam
mengambil token.

Contoh 6
 Apabila t_ASS (:=) diartikan oleh scanner sebagai t_COL (:) dan t_E (=),

maka parser tidak dapat mengenali bahwa itu sebenarnya adalah t_ASS,

 Untuk itu, apabila ingin menggunakan RDP, maka disarankan untuk
menggunakan scanner yang “dapat dipercaya”.

Contoh 7
 Sebuah grammar memiliki aturan produksi sebagai berikut :
::= t_PROG t_ID t_SEMICOL t_DOT



::= t_BEGIN {t_SEMICOL } t_END

::= t_ID t_ASS | t_IF t_THEN |
t_IF t_THEN t_ELSE


::= t_EQ | t_LT
| t_GT

Dan seterusnya….

Contoh 7 (lanjutan)

Contoh 7 (lanjutan)

Contoh 7 (lanjutan)

Latihan
 Lakukan parsing dengan metode brute force, untuk mendapatkan string

‘adssfd’ dari :

S  aAd | Ba | cd
A  b | c | Bf
B  aef | dss

Latihan
 Lakukan penghilangan rekursif kiri dari :

A  Abc | cd | Afg | Ai | d

Dokumen yang terkait

Analisis Komparasi Internet Financial Local Government Reporting Pada Website Resmi Kabupaten dan Kota di Jawa Timur The Comparison Analysis of Internet Financial Local Government Reporting on Official Website of Regency and City in East Java

19 819 7

Analisis komparatif rasio finansial ditinjau dari aturan depkop dengan standar akuntansi Indonesia pada laporan keuanagn tahun 1999 pusat koperasi pegawai

15 355 84

APRESIASI IBU RUMAH TANGGA TERHADAP TAYANGAN CERIWIS DI TRANS TV (Studi Pada Ibu Rumah Tangga RW 6 Kelurahan Lemah Putro Sidoarjo)

8 209 2

FREKWENSI PESAN PEMELIHARAAN KESEHATAN DALAM IKLAN LAYANAN MASYARAKAT Analisis Isi pada Empat Versi ILM Televisi Tanggap Flu Burung Milik Komnas FBPI

10 189 3

Analisis Sistem Pengendalian Mutu dan Perencanaan Penugasan Audit pada Kantor Akuntan Publik. (Suatu Studi Kasus pada Kantor Akuntan Publik Jamaludin, Aria, Sukimto dan Rekan)

136 695 18

FK-UMM Dalam Pertemuan Occupational Health di Philippines

0 56 1

Analisis Penyerapan Tenaga Kerja Pada Industri Kerajinan Tangan Di Desa Tutul Kecamatan Balung Kabupaten Jember.

7 76 65

Analisis Pertumbuhan Antar Sektor di Wilayah Kabupaten Magetan dan Sekitarnya Tahun 1996-2005

3 59 17

Analisis tentang saksi sebagai pertimbangan hakim dalam penjatuhan putusan dan tindak pidana pembunuhan berencana (Studi kasus Perkara No. 40/Pid/B/1988/PN.SAMPANG)

8 102 57

Analisis terhadap hapusnya hak usaha akibat terlantarnya lahan untuk ditetapkan menjadi obyek landreform (studi kasus di desa Mojomulyo kecamatan Puger Kabupaten Jember

1 88 63