Dasar Sigit Widiyanto ST MMSi MSc Syntax Analyzer Pengelompokan tokentoken kedalam class syntax bentuk syntax seperti procedure statement dan expression Grammar ID: 605105
Download Presentation The PPT/PDF document "Syntax Analyzer (Parser) -" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Syntax Analyzer (Parser) - Dasar
Sigit
Widiyanto
, ST.,
MMSi
., MScSlide2
Syntax AnalyzerPengelompokan token-token kedalam class syntax (bentuk syntax), seperti procedure, statement dan expressionGrammar : sekumpulan aturan-aturan
,
untuk
mendefinisikan
bahasa
sumber
Grammar
dipakai
oleh
syntax
analyser
untuk
menentukan
struktur
dari
program
sumber
Proses pen-
deteksian
-
nya
(
pengenalan
token)
disebut
dengan
parsingSlide3
Syntax AnalyzerMaka Syntax analyser sering disebut dengan parser.Pohon sintaks yang dihasilkan
digunakan
untuk
semantics
analyser
yang
bertugas
untuk
menentukan
‘
maksud
’
dari
program
sumber
.
Misalnya
operator
penjumlahan
maka
semantics
analyser
akan
mengambil
aksi
apa
yang
harus
dilakukanSlide4
Posisi Parser dalam KompilatorSlide5
Ketentuan dalam ParserDeretan token : dihasilkan oleh Penganalisa Leksikal (Scanner)Pohon parse : suatu pohon dimana akarnya (
root
)
adalah
simbol
awal
grammar
(
starting symbol
),
setiap
node
dalam
(
inner node
)
adalah
simbol
nonterminal,
dan
daunnya
(
leaf
)
dibaca
dari
kiri
ke
kanan
adalah
deretan
token
masukan
.
Pohon
parse
ini
dibentuk
berdasarkan
aturan
grammar yang
ditetapkan
untuk
parser
.
Kesalahan
sintaks
:
terjadi
jika
pola
deretan
token
tidak
memenuhi
ketentuan
pola
yang
telah
ditentukan
grammar
untuk
parser
.Slide6
Hal yang Penting!!!Scanner: Regular Grammar (RG) Parser: Grammar Context Free (CFG). Bagi RG (scanner) sebuah token (kecuali reserve word) adalah
sebuah
kalimat
dimana
setiap
karakter
pembentuk
token
tersebut
adalah
simbol
terminal
.
Sebaliknya
bagi
CFG (
parser
)
sebuah
token
adalah
sebuah
simbol
terminal
dimana
sederetan
tertentu
token
akan
membentuk
sebuah
kalimat
.Slide7
Hal yang Perlu diperhatikan dalam CFGPola umum CFG : A , A VN,
(
V
N
V
T
)*
Analisis
sintaks
:
P
enelusuran
sebuah
kalimat
(
sentensial
)
sampai
pada
simbol
awal
grammar.
Analisis
sintaks
dapat
dilakukan
melalui
derivasi
atau
parsing
.
Penelusuran
melalui
parsing
menghasilkan
pohon
sintaks
.Slide8
Syntax treePohon sintaks/ Pohon
penurunan
(syntax tree/ parse tree)
beguna
untuk
menggambarkan
bagaimana
memperoleh
suatu
string
dengan
cara
menurunkan
simbol-simbol
variable
menjadi
simbol-simbol
terminal.
Misalnya
:
S
AB
A
aA
| a
B
bB
| B
Penurunan
untuk
menhasilkan
string
aabbbSlide9
Parsing atau Proses PenurunanParsing dapat
dilakukan
dengan
cara
:
Penurunan
terkiri
(
leftmost derivation
) :
simbol
variable yang paling
kiri
diturunkan
(
tuntas
)
dahulu
Penurunan
terkanan
(
rightmost derivation
): variable yang paling
kanan
diturunkan
(
tuntas
)
dahulu
Misalkan
terdapat
ingin
dihasilkan
string
aabbaa
dari
Context
free language:
S
a AS | a,
A
SbA
|
baSlide10
Proses Penurunan (Derivasi)Penurunan kiri :
S =>
a
A
S
=>
a
SbA
S
=>
a
abA
S
=>
a
aabba
S
=> aabbaa
Penurunan
kanan
:
S =>
aA
S
=>
aA
a
=>
a
SbA
a
=>
a
Sbba
a
=>
aabbaaSlide11
Latihan ParsingDiketahui: S -> aB | bA A -> a |
aS
|
bAA
B -> b |
bS
|
aBB
Penurunan
untuk
string
aaabbab
b
b
a
Berikan
solusi
untuk
derivasi dan analisis
sintaksnya
.Slide12
SolusiMisalnya
:
S ->
aB
|
bA
A -> a |
aS
|
bAA
B -> b |
bS
|
aBB
Penurunan
untuk
string
aaabbab
b
ba
Dalam
hal
ini
perlu
untuk
melakukan
percobaan
pemilihan
aturan
produksi
yang
bisa
mendapatkan
solusi
.Slide13
Contoh Parsing Lanj.
Diketahui
grammar
G = {I
H
I H
IA, H
a
b
c
...
z, A
012...
9}
dengan
I
adalah
simbol
awal
.
Bagaimanakah
analisa
sintaks
untuk
kalimat
x23b
.Slide14
Solusi
Diketahui
grammar
G = {I
H
I H
IA, H
a
b
c
...
z, A
0
1
2
...
9}
dengan
I
adalah
simbol
awal
.
Bagaimanakah
analisa
sintaks
untuk
kalimat
x23b
.Slide15
Metode ParsingPerlu memperhatikan 3 hal:Waktu Eksekusi
Penanganan
Kesalahan
Penanganan
Kode
Parsing
digolongkan
menjadi
:
Top-Down
Penelusuran
dari
root
ke
leaf
atau dari simbol awal
ke
simbol
terminal
metode
ini
meliputi
:
Backtrack/backup : Brute Force
No backtrack : Recursive Descent
Parser
Bottom-Up
Metode
ini
melakukan
penelusuran
dari
leaf
ke
root
LR(k)
Presedence ParserSlide16
AmbiguitasSebuah kalimat adalah ambigu jika terdapat lebih dari satu pohon sintaks yang dapat dibentuk
oleh
kalimat
tersebut
.
Secara
gramatikal
kalimat
ambigu
dihasilkan
oleh
grammar
ambigu
yaitu grammar yang mengandung beberapa produksi dengan ruas kiri yang sama sedangkan dua atau lebih ruas kanan-nya
mempunyai
string
terkiri
(
prefix
) yang
sama
.
Contoh
:
S
if E then
S
if
E then S else S,
Dimana
S
:
statement
dan
E :
expression
, Slide17
Ambiguitas Lanj.Grammar ambigu dapat diperbaiki dengan metoda faktorisasi kiri (left factorization). Prefix dari produksi di atas
adalah
sentensial
if E then S
sehingga
faktorisasi
akan
menghasilkan
:
S
if E then S T, T
else S { : simbol hampa}Slide18
Contoh Lain Ambiguity
Diketahui
grammar G = {S
SOS
A , O
*
+,
A
0
1
2
...
9}
Kalimat
: 2*3+7
mempunyai
dua
pohon
sintaks
berikut
:Slide19
Rekursif Kiri (Left Recursion)Sebuah grammar dikatakan bersifat rekursi kiri jika untuk sebuah simbol nonterminal A terdapat derivasi
non
hampa
A
A
.
Produksi
berbentuk
A
A
disebut
produksi
yang
bersifat
immediate left recursion.Slide20
Rekursif Kiri (Left Recursion)Rekursi kiri dapat dieliminir dengan transformasi berikut :A A
transformasi
menjadi
A
R, R
R
Transformasi
ini
dapat
diperluas sehingga :A A 1A2 ...
A
n
1
2
...
n
bertransformasi
menjadi
:
A
1
R
2
R
...
n
R, R
1
R
2
R
..
n
R
Slide21
ContohDiketahui : E E + T T, T T * F F, F (E) Iyang jelas mengandung
immediate left recursion
untuk
simbol
E
dan
T
.
Transformasi
menghasilkan
:
E
TR
E
, RE +TRE , T FRT, R *FRT
,
F
(E)
ISlide22
TugasDiketahui : S Aab, A AcS d