/
Syntax Analyzer (Parser) - Syntax Analyzer (Parser) -

Syntax Analyzer (Parser) - - PowerPoint Presentation

liane-varnes
liane-varnes . @liane-varnes
Follow
434 views
Uploaded On 2017-11-13

Syntax Analyzer (Parser) - - PPT Presentation

Dasar Sigit Widiyanto ST MMSi MSc Syntax Analyzer Pengelompokan tokentoken kedalam class syntax bentuk syntax seperti procedure statement dan expression Grammar ID: 605105

yang simbol grammar untuk simbol yang untuk grammar parser penurunan adalah sintaks token dengan dari pohon sebuah parsing syntax kiri kalimat string

Share:

Link:

Embed:

Download Presentation from below link

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.


Presentation Transcript

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

 012...

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 1A2 ...

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  Aab, A AcS d