Anda di halaman 1dari 21

Analisa Sintaks dan

Tata Bahasa
Sulistyo Puspitodjati

Kelas_Nama

1
Kuis Pengingat 4. Token dari bahasa
Subject:Pretest-2_Kelas_Nama_NPM pemrograman tingkat tinggi
Kirim ke: lismuslim3@gmail.com
a. dapat b. tidak dapat
1. Tahap pertama pada pass
dirumuskan dengan ekspresi
pertama dari compiler adalah
a. Analisa leksikal b. scanning
reguler
2. Proses analisa leksikal adlah 5. Perhatkan definisi reguler
proses berikut:
a. Mengenal kata dari untaian simbol digit  [0-9]
b. Membuat rumusan definisi reguler Integer  0 |(- | +)? ([1-9]digit*))
3. Input dari scanner generator Berdasarkan definisi reguler
adalah tersebut maka token integer
a. Definisi reguler dari token yang berikut yang valid adalah
akan digunakan dala bahasa sumber a. 25
b. Token-token (untai simbol yang b. +25
membentuk token)
c. -252525
d. -0
2
e. 0
Kuis Pengingat
5. Perhatkan definisi reguler berikut:
digit  [0-9]
Integer  0 |(- | +)? ([1-9]digit*))
Berdasarkan definisi reguler tersebut maka token
integer berikut yang valid adalah
a. 25
b. +25
c. - 252525
d. -0
e. 0

3
Compiler Front- and Back-end
Source program (character stream) Abstract syntax tree or
other intermediate form
Scanner
Machine-
(lexical analysis)
Independent Code
Tokens
Improvement
Front end

Back end
synthesis
analysis

Parser Modified intermediate form


(syntax analysis)
Target Code
Parse tree
Generation
Semantic Analysis Assembly or object code
and Intermediate
Machine-Specific
Code Generation
Code Improvement
Abstract syntax tree or
Modified assembly or object code
other intermediate form 4
Parsing
 scanner mengenal kata/words/token
 parser mengenal syntactic units  kedudukan
sintaks dalam kalimat

 Proses parser:
 Check dan mem-verifikasi syntax berdasarkan aturan
sintaksnya
 melaporkan error
 Menyiapkan IR (intermediate representation/kode antara)

 Automation?
 Yes. The process can be automated

5
Parsing
 Check dan mem-verifikasi syntax berdasarkan aturan
sintaksnya
 Apakah ekspresi regular cukup untuk mendeskripsikan
syntax?
 Contoh 1: Ekspresi Infix
 Contoh 2: Nested parentheses (kurung bersarang)
 Pakai Context-Free Grammars (CFG) untuk
menspesifikasikan context-free syntax.
 Suatu CFG mendeskripsikan bagaimana kalimat (sentence) dari
suatu bahasa dibentuk.
 Example:
EvilLaugh  mwa EvilCackle
EvilCackle  ha EvilCackle
EvilCackle  ha!

 Use this grammar to generate the sentence mwa ha ha ha!


6
Context Free Grammar

7
Derivasi dari suatu tata bahasa

Contoh derivasi untuk tata bahasa: R ={ S (S) , SSS, S }

Sentence/
derivation sentential form/ kalimat
Bentuk sentesial
Contoh menggunakan leftmost derivation, setiap langkah memilih
non-terminal terkiri yang diderivasi dalam setiap bentuk sentensial

, :: = 8
Derivasi dan Pohon parse

9
Derivasi dan Pohon parse
Contoh tata bahasa: R ={ S (S) , SSS, S }

10
Contoh tata bahasa: R ={ S (S) , SSS, S }

Cek untai "(( )((( ))))“, valid?

 S  (S)  (SS)  (S(S))  (S((S)))  (S(((S)))) rm


 (S((())))  ((S)((())))  (()((())))

 S  (S)  (SS)  ((S)S)  (()S)  (()(S))  (() lm


((S)))  (()(((S))))  (()((())))

11
Pohon Parsing
Contoh tata bahasa: R ={ S (S) , SSS, S }

Cek untai "(( )((( ))))“, valid?


S
rm lm
( S )
 S  (S)  (SS)  (S(S))  (S((S)))
S S  (S(((S))))  (S((())))  ((S)((())))
 (()((())))
) ( S )
( S
 S  (S)  (SS)  ((S)S)  (()S) 
)
 ( S (()(S))  (()((S)))  (()(((S))))  (()
((())))
( S )

12


Contoh: grammar ekspresi aritmatik
Pohon parsing untuk
kalimat id + id - number
<goal>

<expr>

<expr> <term>
<op>

<expr> <op> <term>


number
-
<term> id
+

Dalam parsing, himpunan id


terminal = token 13
Problems in parsing

S
S

if E then S if E then S else S

if E then S else S if E then S

14
Problems in parsing
 Consider S  if E then S else S | if E then S | Ot
 What is the parse tree for

if E then if E then S else Ot


 There are two possible parse trees! This problem is called
ambiguity
S
S

if E then S if E then S else S

if E then S
Ot

 A CFG is ambiguous if one or more terminal strings have


multiple leftmost derivations from the start symbol.
15
Ambiguity
 There is no general algorithm to tell whether a CFG is
ambiguous or not.
 There is no standard procedure for eliminating
ambiguity.
 Some languages are inherently ambiguous.
 In those cases, any grammar we come up with will be
ambiguous.

16
Ambiguity
 In general, we try to eliminate ambiguity by rewriting
the grammar.
 Example:
 EE+E | EE | id becomes:

EE+T | T
TTF | F
F id

Cek apakah id + id * id valid? Tunjukkan dengan


pohon parsing
Apakah tata bahasa tersebut ambigu? Jelaskan
17
EE+E | EE | id
id + id * id

E E

E E E E
+ *

E * E E + E
i id
d

i i
d d id
id

18
Ambiguity
 In general, we try to eliminate ambiguity by rewriting
the grammar.
 Example:
 S if E then S else S | if E then S | other becomes:

S  EwithElse | EnoElse
EwithElse  if E then EwithElse else EwithElse | other
EnoElse  if E then S
| if E then EwithElse else EnoElse

19
UTS_Proses 1
lismuslim3@gmail.com
lex, yacc

20
= Bahasa “1LP”

21

Anda mungkin juga menyukai