Teknik Kompiler 6. oleh: antonius rachmat c, s.kom

dokumen-dokumen yang mirip
Parsing dapat dilakukan dengan cara : Penurunan terkiri (leftmost derivation) : simbol variable yang paling kiri diturunkan (tuntas) dahulu

21/11/2016. Pohon Sintaks. Syntax?? Proses Penurunan. Analisis Syntax (Parser) Metode Parsing ANALISIS SINTAKS TEKNIK KOMPILASI

Analisis Sintaksis (syntactic analyzer atau parser)

TEORI BAHASA DAN OTOMATA [TBO]

Parsing. A -> a as baa B -> b bs abb

POHON PENURUNAN Context Free Grammar

TEORI BAHASA DAN OTOMATA [TBO]

TEORI BAHASA DAN AUTOMATA

TEORI BAHASA DAN AUTOMATA

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

ALGORITMA PEMROGRAMAN 1C SINTAKS

Teori Komputasi 11/23/2016. Bab 6: Context-Free Grammar & Parsing. Context-Free Grammar. Context-Free Grammar

BAB VI METODE PARSING

DIKTAT TEORI BAHASA DAN OTOMATA

BAB III CFG DAN PARSING

Teknik Kompiler 7. oleh: antonius rachmat c, s.kom

Penghilangan Rekursif Kiri

BAB V CONTEXT FREE GRAMMAR DAN PUSH DOWN AUTOMATA

Grammar dan Tingkat Bahasa

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs

PENYEDERHANAAN Context Free Grammar

Komponen sebuah Kompilator

TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)

BAB II TINJAUAN PUSTAKA. Bahasa menurut kamus Websters adalah the body of words and methods of

3.1. Definisi Syntax Syntax suatu bahasa pemrograman adalah satu himpunan

TEORI BAHASA DAN OTOMATA [TBO]

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

IMPLEMENTASI PENGGUNAAN SISTEM APLIKASI WEB PDF PARSER UNTUK MENAMPILKAN INFORMASI ISI DOKUMEN

BAB II SINTAKS 2.1. SINTAKS

Memiliki kelemahan terlalu panjang jalannya padahal berujung pada S a, produksi D A juga menyebabkan kerumitan.

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

anggota alfabet dinamakan simbol terminal atau token.

BAB I PENDAHULUAN 1-1

BAB IV ANALISA SINTAKS

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

TEORI BAHASA DAN OTOMATA

MODUL MATA KULIAH TEORI BAHASA DAN OTOMATA DOSEN:

Teknik Kompiler 8. oleh: antonius rachmat c, s.kom

Lecture Notes Teori Bahasa dan Automata

KONSEP DAN IMPLEMENTASI PARSING DENGAN MENGGUNAKAN METODE BRUTE FORCE

TEORI BAHASA & OPERASI MATEMATIS (2)

Penyederhanaan Tata Bahasa Bebas Konteks. Kuliah Online : TBA [2012/2013]

Tujuan Penyederhanaan

Amir Hamzah AKPRIND PRESS 2009

Teori Himpunan. Matematika Dasar untuk Teori Bahasa Otomata. Operasi pada Himpunan. Himpunan Tanpa Elemen. Notasi. Powerset & Cartesian Product

Teknik Kompilasi. Notasi Bahasa

UNIVERSITAS GUNADARMA

Tata Bahasa Pemrograman

Teori Bahasa Formal dan Automata

Tata Bahasa Bebas Konteks

KONSEP GRAMMAR DAN BAHASA

TEKNIK KOMPILASI Konsep & Notasi Bahasa

BAB II TINJAUAN PUSTAKA. konsep, fakta, termasuk simbol simbol serta aturan agar mempunyai makna.

Tata Bahasa Kelas Tata Bahasa. Konsep Bahasa (1)

Pemodelan CNF Parser dengan Memanfaatkan Pohon Biner

MODUL 1: PENGANTAR TEORI BAHASA

TEORI BAHASA & OTOMATA (KONSEP & NOTASI BAHASA) PERTEMUAN IX Y A N I S U G I Y A N I

Tujuan perancangan bhs program

Pengantar Kecerdasan Buatan (AK045218) Bahasa Alami 1

Teori Bahasa dan Otomata 1

GRAMMAR AND LANGUAGE

TEORI BAHASA DAN OTOMATA

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

Dasar Teori Bahasa & Grammar

Aplikasi Rekursif dalam Analisis Sintaks Program

TEORI BAHASA DAN OTOMATA [TBO]

Sebuah bahasa dinyatakan regular jika terdapat finite state automata yang dapat menerimanya. Bahasa-bahasa yang diterima oleh suatu finite state

IF-UTAMA 1. Definisi. Grammar. Definisi

BENTUK NORMAL GREIBACH

Outline. IKI 40931: Topik Khusus: NLP Kuliah 7: Parsing CFG. Parsing. Contoh parsing. Ruli Manurung. 10 Maret (Bab Jurafsky & Martin)

Aplikasi Pengolah Bahasa Alami Untuk Operasi Boolean Antar Citra Agus Purwo Handoko 5)

Penentuan Pola Kalimat Bahasa Inggris Pada Simple Present Tense Menggunakan Metode Bottom Up Parsing

Penyederhanaan Tata Bahasa Bebas Konteks dalam Bentuk Normal Chomsky Menggunakan PHP

LANGUAGES AND TRANSLATOR

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

BAB VII POHON BINAR POHON

APLIKASI PROGRAM DINAMIS DALAM ALGORITMA COCKE- YOUNGER -KASAMI (CYK)

Bahasa adalah kumpulan kalimat. Kalimat adalah rangkaian kata. Kata adalah komponen terkecil kalimat yang tidak bisa dipisahkan lagi.

Language Is Cool. The Chomsky Hierarchy. Normal Forms. Chomsky Normal Form (CNF) & Greibach Normal Form (GNF) Teori Bahasa & Otomata - Danang Junaedi

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Fr*snd*mffi. Fakultns tlmu Komputer, l;nivrrsitfls. f&,# d *-B. ,, :..:.4 t:,{;. ${r= st :rir"l, r;t. .j"s*l!&,. '":*& \',?Srlrlfu. :1i-,=-+n 3r: lvqd

TEORI BAHASA DAN AUTOMATA

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

PERANCANGAN SISTEM PERBAIKAN ERROR KODE SUMBER PROGRAM OTOMATIS

PERANCANGAN DAN IMPLEMENTASI INTERPRETER BAHASA X PADA NOKIA 9210i

EKSPRESI REGULAR PADA SUATU DETERMINISTIC FINITE STATE AUTOMATA

MODUL XIII TEORI BAHASA DAN AUTOMATA

Definisi. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon

IF-UTAMA 1. Penurunan (Derivation) [2] Penurunan (Derivation) Contoh Penurunan [1] Parse Tree [1]

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

DEFINISI. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon 2

BAB 1 PENDAHULUAN 1.1. Latar Belakang Masalah

Pemanfaatan Pohon dalam Realisasi Algoritma Backtracking untuk Memecahkan N-Queens Problem

BAB I PENDAHULUAN. memiliki tata bahasa dan aturan yang lebih luas dan luwes, sehingga tidak

SATUAN ACARA PERKULIAHAN MATA KULIAH : TEORI BAHASA DAN AUTOMATA (TBA) KODE / SKS : KK / 3 SKS

TEORI BAHASA & AUTOMATA

SATUAN ACARA PERKULIAHAN STMIK UBUDIYAH INDONESIA SEMESTER GENAP TAHUN AKADEMIK 2013/2014

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

Transkripsi:

Teknik Kompiler 6 oleh: antonius rachmat c, s.kom

Analisis Sintaks (Parser) Analisis Sintaks bergantung pada bahasa pemrograman masing-masing. Karena masing-masing bahasa pemrograman memiliki bentuk sintaks yang berbeda-beda. Analisis Sintaks memiliki input berupa token yang berasal dari scanner dan source code. Analisis Sintaks (Parser) bertugas mengecek kebenaran sintaks dan menghasilkan & memproses pohon sintaks. Sintaks adalah aturan-aturan bahasa dalam suatu bahasa pemrograman tertentu.

Parser Sebuah Parser akan membentuk Pohon Sintaks (Parse Tree). Sebuah tree adalah suatu graph terhubung yang tidak sirkuler dan memiliki satu buah root (akar) dan dari situ memiliki lintasan ke setiap simpul (daun/leaf). Parse Tree berfungsi untuk menggambarkan bagaimana memperoleh suatu string dengan cara menurunkan simbol-simbol variabel menjadi simbol-simbol terminal, sampai tidak ada simbol yang belum tergantikan.

Tata Bahasa Bebas Konteks Untuk mengimplementasikan Parser diperlukan TBBK (Context Free Grammar) TBBK adalah sekumpulan simbol-simbol variabel (non-terminal), yang masing-masing merepresentasikan bahasa. Bahasa yang direpresentasikan dengan simbol-simbol non terminal tersebut diproses secara rekursif dengan suatu aturan-aturan yang disebut aturan produksi. Tata bahasa bebas konteks (tipe 2) memiliki elemen: Terminal : simbol dasar yang tidak dapat diturunkan lagi. Terminal disebut juga token. Non terminal : variabel sintaktik yang masih dapat diturunkan lagi.

TBBK (2) Contoh TBBK untuk pasangan kurung yang selalu berpasangan: S => R R => {} R => (R) R => RR Contoh TBBK untuk palindrom: S => R R => {} a b R => ara brb Contoh TBBK lain S => AB A => aa a B => bb b

S TBBK (3) a a S S Contoh TBBK: S => as S => bt T => a Maka misalkan untuk string aaba maka TBBK diatas dapat diturunkan menjadi : S > as S => aas S => aabt S => aaba Artinya string aaba cocok dan diterima oleh TBBK diatas. Misalkan untuk string aba dan terdapat aturan produksi sebagai berikut: S => as S S => abt S- > aba S a Pohon Sintaks : b T a b T a

Contoh contoh TBBK Contoh : S => as b S => bt T => a bs Untuk string abbaab : S => as S => abt S => abbs S => abbas S => abbaas S => abbaab Pohon Sintaks?

Contoh contoh TBBK (2) Contoh : S => AB A => aa a B => bb b Untuk string aabbb S => AB S => aab S => aab S => aabb S => aabbb S => aabbb Pohon Sintaks?

Contoh Parsing dalam Bhs Inggris S: Sentence SP: Subject Phrase VP: Verb Phrase NP: Noun Phrase V: Verb O: Object A: Article N: Noun

Parsing Inggris (2) Aturan Produksi: S => SP VP SP => A N A => a A => the N => monkey N => banana N => cat N => mouse N => tree VP => V O V => ate V => climb O => NP NP => A N

Parsing Inggris (3) Penurunan untuk the cat ate a mouse S => SP VP => A N VP => the N VP => the cat V O => the cat ate O => the cat ate NP => the cat ate A N => the cat ate a N => the cat ate a mouse Apakah berlaku untuk: the cat ate a banana, the monkey climbs a tree,the banana ate a cat?

Cara Penurunan Penurunan dapat dilakukan : Dengan penurunan terkiri : nonterminal terkiri yang disubstitusi. Dengan penurunan terkanan : nonterminal terkanan yang disubstitusi. Contoh 1: S => aas a A => SbA ba Untuk string aabbaa : Dengan penurunan terkiri : S => aas => asbas => aabas => aabbas => aabbaa. Bagaimana Parse Tree? Dengan penurunan kanan : S => aas => aaa => asbaa => asbbaa => aabbaa. Bagaimana Parse Tree?

Penurunan (2) Contoh 2 : Misal TBBK = E => E + E E * E (E) -E id String -(id + id) diterima karena : E => - E => - (E) => - (E+E) => - (id +E) => -(id + id) Exercise: Is id-id a sentence of TBBK? No Is id+id a sentence of TBBK? Yes

Penurunan (3) Contoh 3

Why TBBK for Parser? Mendukung tata bahasa yang bersifat rekursif Spesifikasi bahasa pemrograman menggunakan TBBK Contoh : (x + 2) * 3 Expr => expr op expr Expr => (expr) Expr => - expr Expr => id op => + op => - op =>* op => / op => ^ Setiap RE dapat dideskripsikan dengan TBBK Contoh: (a b)*abb A => aa ba abb

Why RE for Scanner? Scanner memiliki aturan tata bahasa yang sederhana RE menghasilkan notasi yang jelas dan mudah dimengerti untuk token Scanner tidak memerlukan suatu tata bahasa yang rekursif NB: dengan adanya scanner dan parser sangat memudahkan modularisasi dan mengurangi kebutuhan resource

TBBK dan Prioritas Contoh x + 2 * 3 S => S + S S => id + S * S S => id + id * id Parse Tree dari x + 2 * 3 S expr S expr expr op expr expr expr op expr x + expr op 3 expr op expr * 3 2 * Belum bisa mendeteksi prioritas x + 2

Mengubah NFA ke TBBK Untuk setiap state i dari NFA buat simbol non terminal Ai. Jika state i memiliki transisi ke state j pada simbol a,maka buat satu produksi Ai => aaj. Jika state i masuk ke state j dengan masukkan e maka buat Ai => Aj. Jika i state penerima dengan buat Ai => ε. Jika i state awal, buat Ai sebagai simbol awal dari TBBK

Contoh NFA ke TBBK A => ab A => ba B => aa B => {} A => ab => aaa => aaba => aabba => aabbab => aabba{} => aabba

Parsing Proses Parsing merupakan tahapan yang berfungsi untuk memeriksa urutan kemunculan token. Di dalam mengimplementasikan sebuah metode parsing perlu diperhatikan : Rentang waktu eksekusi Penanganan Kesalahan

Metode Parsing Top Down Metode ini menelusuri pohon, dari root menuju ke daun (leaf). Metode ini meliputi: Backtracking Mode : Metode Brute Force Non Backtracking Mode : Recursive Descent Parser dan Predictive Parser Top Down memparsing tree secara pre order. Contoh : S => cad A => ab a Untuk inputan cad Pohon Sintaks?

Metode Parsing (2) Bottom Up Metode ini menelusuri pohon dari daun menuju ke root. Biasanya mengurangi string/daun sampai pada akarnya. Contoh : S => aabe A => Abc b B => d Maka untuk string abbcde abbcde aabcde aade aabe S

Metode Parsing lainnya Metode Brutal Force Metode ini akan melakukan substitusi semua simbol non terminal yang ada. Jika terjadi salah parsing (atau tidak cocok), maka dapat dilakukan backtracking. Contoh : S => aad ab A => b c B => ccd ddc Misal ingin memparsing : accd. S => aad S => abd : gagal, maka dilakukan backtrack: S => acd : gagal, maka dilakukan backtrack: S => ab S => accd : berhasil!

Metode Parsing lainnya (2) Kelemahan Brutal Force : Mencoba semua aturan produksi sehingga akan menjadi lambat Sulit melakukan backtracking dan pemulihan kesalahan Memakan banyak memori karena perlu mencatat lokasi backtrack

TBBK Rekursif Kiri TBBK yang memiliki simbol non terminal di ruas kanan dari simbol non terminal yang ada di ruas kiri. Simbol non terminal itu terletak di ruas kanan terdepan. TBBK ini juga tidak memiliki kemungkinan aturan produksi lain yang berupa simbol terminal. Contoh : S => Sd A => Aad Menyebabkan pohon tumbuh ke kiri

Contoh Pohon S => aac A => Ab {} S a A c A b A b

Penghilangan Rekursif Kiri Pisahkan aturan produksi yang rekursif kiri dengan yang tidak. Yang rekursif kiri : A => Aa1 Aa2 Aa3 Yang tidak rekursif kiri, termasuk produksi epsilon: A => b1 b2 b3 Kita bisa tentukan a1, a2, a3, dan b1, b2, b3, Lakukan penggantian aturan produksi yang rekursif kiri menjadi: A => b1z b2z b3z Z => a1 a2 a3 Z => a1z a2z a3z Penggantian itu dilakukan untuk setiap aturan produksi dengan simbol di ruas kiri yang sama. Bisa muncul simbol variabel baru Z1, Z2, Z3 sesuai dengan banyaknya variabel yang menghasilkan produksi yang rekursif kiri. Hasil akhir berupa aturan produksi pengganti ditambah dengan aturan produksi semula yang tidak rekursif kiri

Penghilangan Rekursif Kiri (2) Contoh : S => Sab asc dd ff Sbd Aturan produksi yang rekursif kiri : S => Sab Sbd Kita simbolkan : a1 = ab dan a2 = bd Aturan produksi yang tidak rekursif kiri: S => asc dd ff Maka simbolkan b1 = asc, b2 = dd, dan b3 = ff Lalu lakukan penggantian rekursif kiri S => Sab Sbd menjadi: S => ascz1 ddz1 ffz1 Z1 => ab bd Z1 => abz1 bdz1 Hasil akhir: S => asc dd ff S => ascz1 ddz1 ffz1 Z1 => ab bd Z1 => abz1 bdz1

Contoh lain: S => Sab Sb ca A => Aa a bd Yang rekursif : S => Sab Sb dan A => Aa Yang tidak: S => ca dan A => a bd Pergantian: Untuk S => Sab Sb S => caz1 Z1 => ab b Z1 => abz1 bz1 Untuk A => Aa A => az2 bdz2 Z2 => a Z2 => az2 Hasil: S => ca A => a bd S => caz1 Z1 => ab b Z1 => abz1 bz1 A => az2 bdz2 Z2 => a Z2 => az2

Contoh lain: S => aa b cs A => Sd e #rekursif kiri Jadi: S => aa b cs A => aad bd csd e

TBBK Rekursif Kanan TBBK Rekursif Kanan: TBBK yang memiliki simbol non terminal di ruas kanan dari simbol non terminal yang ada di ruas kiri. Simbol non terminal itu terletak di ruas kanan terbelakang. TBBK ini juga tidak memiliki kemungkinan aturan produksi lain yang berupa simbol terminal. Contoh: S => ds B => adb Membuat pohon sintaks melebar ke kanan

NEXT Analisis Sintaks 2 Transformasi TBBK dan CYK