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

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

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

TEORI BAHASA DAN OTOMATA [TBO]

Analisis Sintaksis (syntactic analyzer atau parser)

BAB VI METODE PARSING

BAB III CFG DAN PARSING

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

TEORI BAHASA DAN AUTOMATA

ALGORITMA PEMROGRAMAN 1C SINTAKS

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

Bab III Semantik. Konsep Semantik Bahasa Pemrograman (Semantik Analisis)

Kesalahan Program Penanganan Kesalahan Reaksi Compiler Pada kesalahan Error Recovery Error repair

Kesalahan Program dapat berupa

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.

Aplikasi Rekursif dalam Analisis Sintaks Program

Konsep dan Notasi Bahasa. Istiqomah, S.Kom

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

SEMANTIK. Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa.

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

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

Komponen sebuah Kompilator

TEKNIK KOMPILASI Konsep & Notasi Bahasa

BAB IV ANALISA SINTAKS

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

SEMANTIK. Int vector[10];

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

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

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

UNIVERSITAS GUNADARMA

Penghilangan Rekursif Kiri

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

ALGORITMA PEMROGRAMAN 1C SEMANTIKS

Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

SATUAN ACARA PERKULIAHAN (SAP)

PENYEDERHANAAN Context Free Grammar

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK

TEORI BAHASA DAN OTOMATA [TBO]

POHON PENURUNAN Context Free Grammar

BAB V CONTEXT FREE GRAMMAR DAN PUSH DOWN AUTOMATA

Perjalanan sebuah intruksi

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

TEORI BAHASA DAN OTOMATA [TBO]

TEKNIK KOMPILASI. Firrar Utdirartatmo

TEORI BAHASA & OPERASI MATEMATIS (2)

BAB II DASAR TEORI. 2.1 Kompilator

3.1. Definisi Syntax Syntax suatu bahasa pemrograman adalah satu himpunan

BAB II SINTAKS 2.1. SINTAKS

anggota alfabet dinamakan simbol terminal atau token.

Tujuan perancangan bhs program

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

TEORI BAHASA DAN AUTOMATA

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

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

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

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

DIKTAT TEORI BAHASA DAN OTOMATA

Grammar dan Tingkat Bahasa

TEORI BAHASA DAN AUTOMATA

BAB VI CARA PENANGANAN KESALAHAN

Tata Bahasa Kelas Tata Bahasa. Konsep Bahasa (1)

ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

PERANCANGAN SISTEM PERBAIKAN ERROR KODE SUMBER PROGRAM OTOMATIS

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

RENCANA PEMBELAJARAN SEMESTER

Pemodelan CNF Parser dengan Memanfaatkan Pohon Biner

SATUAN ACARA PERKULIAHAN (SAP) MATA KULIAH PENGANTAR TEKNIK KOMPILASI

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

TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)

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

Fase-fase proses sebuah kompilasi

TEKNIK KOMPILASI. Muhamad Nursalman Ilmu Komputer FPMIPA - UPI

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

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

TEKNIK KOMPILASI (TEKKOM) ISTIQOMAH, S.KOM /SEMESTER VI

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

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

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

PERANCANGAN DAN IMPLEMENTASI INTERPRETER BAHASA X PADA NOKIA 9210i

Pendahuluan. Tujuan Pembelajaran :

BAB V ANALISA SEMANTIK

RENCANA PEMBELAJARAN SEMESTER (Kelas Teori)

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

Teori Bahasa & Otomata

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

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

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I

Tata Bahasa Pemrograman

PENGANTAR TEKNIK KOMPILASI

Penyederhanaan Tata Bahasa Bebas Konteks dalam Bentuk Normal Chomsky Menggunakan PHP

Teknik Kompilasi. Notasi Bahasa

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

BAB I PENDAHULUAN 1.1 Latar Belakang

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

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

BAB I PENGENALAN TEKNIK KOMPILASI

Tujuan Penyederhanaan

KONSEP GRAMMAR DAN BAHASA

BAB 1 PENDAHULUAN 1.1. Latar Belakang Masalah

Transkripsi:

Parsing Misalnya: S -> ab ba A -> a as baa B -> b bs abb Penurunan untuk string aaabbabba Dalam hal ini perlu untuk melakukan percobaan pemilihan aturan produksi yang bisa mendapatkan solusi

Metode Parsing Perlu memperhatikan 3 hal: Waktu Eksekusi Penanganan Kesalahan Penanganan Kode Parsing digolongkan menjadi: Top-Down Penelusuran dari root ke leaf atau dari simbol awal ke simbol terminal metode ini meliputi: Backtrack/backup : Brute Force No backtrack : Recursive Descent Parser Bottom-Up Metode ini melakukan penelusuran dari leaf ke root

Parsing: Brute force Memilih aturan produksi mulai dari kiri Meng-expand simbol non terminal sampai pada simbol terminal Bila terjadi kesalahan (string tidak sesuai) maka dilakukan backtrack Algoritma ini membuat pohon parsing secara top-down, yaitu dengan cara mencoba segala kemungkinan untuk setiap simbol non-terminal Contoh suatu language dengan aturan produksi sebagai berikut S aad ab A b c B ccd ddc Misal ingin dilakukan parsing untuk string accd

Parsing: Brute force (i) S (ii) S (iii) S a A d a A d b Terjadi kegagalan (iii), dilakukan back track (iv) S (v) S (vi) S a A d a B a B c c c d Terjadi kegagalan lagi (iv), dilakukan back-track

Parsing: Brute force Kelemahan dari metode-metode brute-force Mencoba untuk semua aturan produksi yang ada sehingga menjadi lambat (waktu eksekusi) Mengalami kesukaran untuk melakukan pembetulan kesalahan Memakan banyak memakan memori, dikarenakan membuat backup lokasi backtrack Grammar yang memiliki Rekursif Kiri tidak bisa diperiksa, sehingga harus diubah dulu sehingga tidak rekursif kiri, Karena rekursif kiri akan mengalami Loop yang terus-menerus

Brute force : Contoh Terdapat grammar/tata bahasa G = (V,T,P,S), dimana V= ( E, T, F ) Simbol NonTerminal (variable) T= ( i, *, /, +, - ) Simbol Terminal S= E Simbol Awal / Start simbol String yang diinginkan adalah i * i aturan produksi (P) yang dicobakan adalah 1. E T T + E T - E T F F * T F / T F i accept (diterima)

Brute force : Contoh 2. E T E+T E-T T F T* F T / F F i accept (diterima) Meskipun ada rekursif kiri, tetapi tidak diletakkan sebagai aturan yang paling kiri 3. E E+T E-T T T T* F T / F F F i Rekursif kiri, program akan mengalami loop

Brute force : Aturan produksi Aturan Produksi yang rekursif memiliki ruas kanan (hasil produksi) yang memuat simbol variabel pada ruas kiri Sebuah produksi dalam bentuk A A merupakan produksi rekursif kanan terminal = berupa kumpulan simbol variabel dan contoh: S d S B ad B bentuk produksi yang rekursif kiri A A merupakan produksi rekursif Kiri contoh: S S d B B ad

Aturan produksi : Brute force Produksi yang rekursif kanan akan menyebabkan penurunan tumbuh kekanan, Sedangkan produksi yang rekursif kiri akan menyebabkan penurunan tumbuh ke kiri. Contoh: Context free Grammar dengan aturan produksi sebagai berikut:

Aturan produksi : Brute force Dalam Banyak penerapan tata-bahasa, rekursif kiri tidak diinginkan, Untuk menghindari penurunan kiri yang looping, perlu dihilangkan sifat rekursif, dengan langkah-langkah sebagai berikut: Pisahkan Aturan produksi yang rekursif kiri dan yang tidak; misalnya Aturan produksi yang rekursif kiri A A 1 A 2... A n Aturan produksi yang tidak rekursif kiri A 1 2... n

Aturan produksi : Brute force lakukan per-ganti-an aturan produksi yang rekursif kiri, sebagai berikut: 1. A 1 Z 2 Z... n Z 2 Z 1 2... n 3 Z 1 Z 2 Z... n Z

Aturan produksi : Brute force Pergantian dilakukan untuk setiap aturan produksi dengan simbol ruas kiri yang sama, bisa muncul variabel Z1, Z2 dst, sesuai dengan variabel yang menghasilkan rekurisif kiri Contoh: Tata Bahasa Context free S Sab asc dd ff Sbd Pisahkan aturan produksi yang rekursif kiri S Sab Sbd Ruas Kiri untuk S: 1=ab, 2=bd Aturan Produksi yang tidak rekursif kiri S asc dd ff dari situ didapat untuk Ruas Kiri untuk S: 1 = asc, 2 = dd, 3= ff

Aturan produksi : Brute force Langkah berikutnya adalah penggantian yang rekursif kiri S Sab Sbd, dapat digantikan dengan 1. S ascz1 ddz1 ffz1 2. Z1 ab bd 3. Z1 abz1 bdz1 Hasil akhir yang didapat setelah menghilangkan rekursif kiri adalah sebagai Berikut: S asc dd ff S ascz1 ddz1 ffz1 Z1 ab bd Z1 abz1 bdz1

Aturan produksi : Brute force Kalau pun tidak mungkin menghilangkan rekursif kiri dalam penyusunan aturan produksi maka produksi rekursif kiri diletakkan pada bagian belakang atau terkanan, hal ini untuk menghindari looping pada awal proses parsing Metode ini jarang digunakan, karena semua kemungkinan harus ditelusuri, sehingga butuh waktu yang cukup lama serta memerlukan memori yang besar untuk penyimpanan stack (backup lokasi backtrack) Metode ini digunakan untuk aturan produksi yang memiliki alternatif yang sedikit

Parsing: Recursive Descent Parser Parsing dengan Recursive Descent Parser Salah satu cara untuk meng-aplikasikan bahasa context free Simbol terminal maupun simbol variabelnya sudah bukan sebuah karakter Besaran leksikal sebagai simbol terminalnya, besaran syntax sebagai simbol variablenya /non terminalnya Dengan cara penurunan secara recursif untuk semua variabel dari awal sampai ketemu terminal Tidak pernah mengambil token secara mumdur (back tracking) Beda dengan turing yang selalu maju dan mundur dalam melakukan parsing

Aturan Produksi memakai Recursif Descent : Semua simbol variabel dijadikan prosedur/fungsi Jika ketemu simbol terminal pada aturan produksi, maka panggil prosedurnya Penelusuran bersifat top down mengikuti sintaks sesuai pola pada diagram sintaks Fungsi/prosedur ditulis untuk setiap non terminal dari suatu produksi. Setiap fungsi/prosedur akan melemparkan nilai benar atau salah bergantung pada apakah fungsi tersebut mengenali substring yang diterima sebagai ekspansi dari non terminal.

Contoh : Grammar dengan BNF : <program> ::= t_prog t_id t_semicol <block> t_dot <block> ::= t_begin <statement> {t_semicol <statement>} t_end <statement> ::= t_id t_ass <simple exp> <statement> t_if <exp> t_then <statement> t_if <exp> t_then <statement> t_else <exp> ::= <simple_exp> t_eq <simple exp> Dst. <simple_exp> t_lt <simple_exp> <simple_exp> t_gt <simple_exp>

Penggalan program untuk grammar tsb

Semantics Analyser Proses ini merupakan proses kelanjutan dari proses kompilasi sebelumnya, yaitu analisa leksikal (scanning) dan analisa sintaks (parsing) Bagian terakhir dari tahapan analisis adalah analisis semantik Memanfaatkan pohon sintaks yang dihasilkan dari parsing Proses analisa sintak dan analisa semantik merupakan dua proses yang sangat erat kaitannya, dan sulit untuk dipisahkan

Semantics Analyser Contoh : A := ( A+B) * (C+D) Parser hanya akan mengenali simbol-simbol :=, +, dan *, parser tidak mengetahui makna dari simbol-simbol tersebut Untuk mengenali makna dari simbol-simbol tersebut, Compiler memanggil routin semantics

Semantics Analyser Untuk mengetahui makna, maka routin ini akan memeriksa: Apakah variabel yang ada telah didefinisikan sebelumnya Apakah variabel-variabel tersebut tipenya sama Apakah operand yang akan dioperasikan tersebut ada nilainya, dan seterusnya Menggunakan tabel simbol Pemeriksaan bisa dilakukan pada tabel identifier, tabel display, dan tabel block

Semantics Analyser Pengecekan yang dilakukan dapat berupa: Memeriksa penggunaan nama-nama (keberlakuannya) Duplikasi Apakah sebuah nama terjadi pendefinisian lebih dari dua kali. Pengecekan dilakukan pada bagian pengelolaan block Terdefinisi Apakah nama yang dipakai pada program sudah terdefinisi atau belum. Pengecekan dilakukan pada semua tempat kecuali block Memeriksa tipe Melakukan pemeriksaan terhadap kesesuaian tipe dalam statement - statement yang ada, Misalnya bila terdapat suatu operasi, diperiksa tipe operand nya