Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Pengantar Teknik Kompilasi

Presentasi serupa


Presentasi berjudul: "Pengantar Teknik Kompilasi"— Transcript presentasi:

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,   (VTVN)* 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  SOSA , O  *+, A  012...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


Download ppt "Pengantar Teknik Kompilasi"

Presentasi serupa


Iklan oleh Google