Pengantar Teknik Kompilasi

Slides:



Advertisements
Presentasi serupa
Kuliah 03 – Pengenalan Analisa Sintak
Advertisements

KONSEP dan NOTASI BAHASA
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
Teori Bahasa dan Automata
CARA PENANGAN KESALAHAN
Pengantar Teknik Kompilasi
TEORI BAHASA & OTOMATA (KONSEP & NOTASI BAHASA)
Session 11 Parse Tree, Application of Parse Tree, and Ambiguity
Pohon Urai (parse) dan Derivasi
Pengantar Teknik Kompilasi
TEORI BAHASA DAN OTOMATA
POHON PENURUNAN.
Syntax Analyzer (Parser) - Dasar
KONSEP dan NOTASI BAHASA
Bahasa Pemrograman Tingkat Tinggi
Komponen sebuah Kompilator
Analisis Leksikal.
STRUKTUR COMPILLER.
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
CONTEXT FREE LANGUAGE Yang akan kita pelajari: Pohon Turunan
9. POHON PENURUNAN.
Pengurai Prediktif & Bottom Up Parsing (penguraian bawah atas)
Cara Penanganan Kesalahan
Pertemuan 8 CONTEXT FREE GRAMMAR (CFG)
Komponen sebuah Kompilator
MATERI PERKULIAHAN TEKNIK KOMPILASI
KONSEP GRAMMAR & HIRARKI CHOMSKY
Teori-Bahasa-dan-Otomata
Cara Penanganan Kesalahan
KONSEP dan NOTASI BAHASA
Analisis semantik, kode antara dan pembangkitan kode
Pengantar Teknik Kompilasi
By : Lisda Juliana Pangaribuan
Teori-Bahasa-dan-Otomata
Sheila Nurul Huda, S.Kom, M.Cs
Bahasa Context Free.
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
Semantics Analyser Contoh : A := ( A+B) * (C+D)
TATA BAHASA BEBAS KONTEKS
Analisis Sintaks (Parsing)
MATERI PERKULIAHAN TEKNIK KOMPILASI
MATERI PERKULIAHAN TEKNIK KOMPILASI
Pengantar Teknik Kompilasi
ALGORITMA & PEMROGRAMAN 1C
BAB VIII POHON PENURUNAN.
MATERI PERKULIAHAN TEKNIK KOMPILASI
Cara Penanganan Kesalahan
Pengantar Teknik Kompilasi
Pertemuan 10 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
Pengantar Teknik Kompilasi
TEORI BAHASA & AUTOMATA
Proses kompilasi COMPILATOR.
Konsep dan Notasi Bahasa
CARA PENANGAN KESALAHAN
Pengantar Teknik Kompilasi
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
Pengenalan Kompilasi & Klasifikasi Tatabahasa Formal menurut Chomsky
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
Analisis Sintaksis By: Kustanto, S.T., M.Eng.
KONSEP dan NOTASI BAHASA
Automata Hingga Deterministik (AHD)
Pengantar Teknik Kompilasi
Grammar dan Bahasa Automata
Semantics Analyser by Kustanto
CARA PENANGAN KESALAHAN
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
Pengantar Teknik Kompilasi
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
Transcript presentasi:

Pengantar Teknik Kompilasi Bahasa Context Free

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

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 }

Klasifikasi Chomsky Unrestricted Context Sensitive Regular Context free Regular

Klasifikasi Chomsky Tipe 2 Juga dikenal dengan Context Free Grammar   V,   (VTVN)* Ruas kiri haruslah tepat satu simbol variabel B  CDeFg D  BcDe

CFG Nested Structure

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

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

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

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

Derivasi & Pohon Sintaks list  list + digit list  list - digit list  digit digit  0 | 1 | 2 | … | 9 list  list + digit | list – digit | digit Apakan 9 - 5 + 2 termasuk list? 9 termasuk list, karena 9 adalah digit 9 - 5 termasuk list, karena 9 adalah list dan 5 adalah digit 9 - 5 + 2 termasuk list, karena 9 - 5 adalah list dan 2 adalah digit

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

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

Derivasi & Pohon Sintaks list list + digit list - digit 2 digit 5 9

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 1 + 1 + a

Derivasi & Pohon Sintaks Leftmost derivation S S + S 1 + S 1 + S + S 1 + 1 + S 1 + 1 + a

Derivasi & Pohon Sintaks Rightmost derivation S S + S S + a S + S + a S + 1 + a 1 + 1 + a

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

Ambiguous G = {S  SOSA , O  *+, A  012...9} 2 * 3 + 7 S S S O

Ambiguous

Ambiguous Umumnya 9+5+2 diartikan sebagai (9+5)+2 dan 9-5-2 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)

Ambiguous Ekspresi 2 * 3 + 7 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

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 | …

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

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