Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Pengantar Teknik Kompilasi
Bahasa Context Free
2
Grammar Grammar atau tatabahasa digunakan untuk menentukan sintaksis dari sebuah bahasa Umumnya menggambarkan struktur hirarki dalam susunan bahasa pemrograman if (expression) statement else statement stmt if ( expr ) stmt else stmt
3
Grammar Lexical error, diantaranya salah eja identifier, keyword, atau operator, juga kurang simbol “ untuk teks yang dimaksudkan sebagai string Syntatic error, diantaranya simbol ; yang salah lokasi atau kekurangan/kelebihan simbol (, ), {, atau }
4
Klasifikasi Chomsky Unrestricted Context Sensitive Regular
Context free Regular
5
Klasifikasi Chomsky Tipe 2 Juga dikenal dengan Context Free Grammar
V, (VTVN)* Ruas kiri haruslah tepat satu simbol variabel B CDeFg D BcDe
6
CFG Nested Structure
7
CFG Bahasa Regular memiliki batasan bahwa nested structure tidak dapat diekspresikan Mesin stata hingga tidak mampu mengenali kalimat dari bahasa context free A a A c | b
8
Struktur Kompiler Program Sumber Program Sasaran TABEL SIMBOL ANALISA
SINTESA Penganalisa Semantik Pembangkit Kode antara Penganalisa Leksikal (scanner) Penganalisa Sintaks (parser) Pembentuk kode Pengoptimal kode TABEL SIMBOL
9
Derivasi & Pohon Sintaks
Analisis sintaks adalah penelusuran sebuah kalimat (atau sentensial) sampai pada simbol awal grammar Analisis sintaks dapat dilakukan melalui derivasi atau parsing Penelusuran melalui parsing menghasilkan pohon sintaks
10
Derivasi & Pohon Sintaks
Sebuah grammar melakukan derivasi untai dimulai dari simbol awal dan secara berulang mengganti simbol non-terminal Untai terminal yang dapat diturunkan dari simbol awal membentuk bahasa yang didefinisikan oleh grammar
11
Derivasi & Pohon Sintaks
list list + digit list list - digit list digit digit 0 | 1 | 2 | … | 9 list list + digit | list – digit | digit Apakan termasuk list? 9 termasuk list, karena 9 adalah digit 9 - 5 termasuk list, karena 9 adalah list dan 5 adalah digit termasuk list, karena adalah list dan 2 adalah digit
12
Derivasi & Pohon Sintaks
Parsing adalah mengambil sebuah untai terminal dan mencari cara menurunkannya dari simbol awal Apabila tidak dapat dilakukan derivasi dari simbol awal maka dilaporkan sebagai syntax error Proses parsing dilakukan dengan membentuk pohon sintaks
13
Derivasi & Pohon Sintaks
Sebuah pohon terdiri atas satu atau lebih node Tepat satu node merupakan root dan berada paling atas (tidak memiliki parent) Node tanpa children disebut leaf, sedangkan yang memiliki satu atau lebih children disebut interior node Root diberi label simbol awal Setiap leaf diberi label terminal atau Setiap interior node diberi label nonterminal
14
Derivasi & Pohon Sintaks
list list + digit list - digit 2 digit 5 9
15
Derivasi & Pohon Sintaks
Strategi penulisan saat melakukan derivasi secara umum dibagi 2: Leftmost derivation Rightmost derivation S S + S S 1 | a Untai yang dibentuk a
16
Derivasi & Pohon Sintaks
Leftmost derivation S S + S 1 + S 1 + S + S S a
17
Derivasi & Pohon Sintaks
Rightmost derivation S S + S S + a S + S + a S a a
18
Ambiguous Sebuah kalimat yang mempunyai lebih dari satu pohon sintaks disebut kalimat ambigu (ambiguous) Grammar yang menghasilkan paling sedikit sebuah kalimat ambigu disebut grammar ambigu
19
Ambiguous G = {S SOSA , O *+, A 012...9} 2 * 3 + 7 S S S O
20
Ambiguous
21
Ambiguous Umumnya diartikan sebagai (9+5)+2 dan diartikan (9-5)-2 Dalam kebanyakan bahasa pemrograman, empat operator aritmatika (penjumlahan, pengurangan, perkalian, pembagian) termasuk left-associative Beberapa operator misalkan eksponensial atau operator assignment termasuk right- associative a=b=c diartikan sebagai a=(b=c)
22
Ambiguous Ekspresi 2 * dapat diinterpretasikan sebagai (2*3)+7 atau 2*(3+7) karena operator + dan * memiliki aturan asosiatif yang sama Aturan mengenai operator precedence dibutuhkan apabila ada lebih dari satu operator dengan jenis yang sama Pada aritmatika umum, perkalian dan pembagian memiliki prioritas yang lebih tinggi (higher precedence) dibanding penjumlahan dan pengurangan
23
Ambiguous Dangling-else problem
Pada banyak bahasa pemrograman, else, pada statement if-then-else, merupakan optional Dua bentuk yang valid adalah if-then dan if- then-else statement if condition then statement | if condition then statement else statement | …
24
Ambiguous if a then if b then s else s2 dapat diartikan sebagai:
if a then begin if b then s end else s2; atau if a then begin if b then s else s2 end Tergantung else diasosiasikan dengan if pertama atau kedua
25
Ambiguous Masalah ini diatasi dengan berbagai pendekatan sehingga menjadi unambiguous Beberapa grammar dimodifikasi dengan menggunakan statement endif atau dengan membuat else sebagai suatu keharusan Cara lain dengan membuat else diasosiasikan dengan if yang terdekat
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.