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

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

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

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

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

Analisis Sintaksis (syntactic analyzer atau parser)

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

TEKNIK KOMPILASI Konsep & Notasi Bahasa

ALGORITMA PEMROGRAMAN 1C SINTAKS

Konsep dan Notasi Bahasa. Istiqomah, S.Kom

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

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

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

TEORI BAHASA DAN OTOMATA [TBO]

BAB VI METODE PARSING

TEORI BAHASA DAN OTOMATA [TBO]

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

BAB III CFG DAN PARSING

POHON PENURUNAN Context Free Grammar

Aplikasi Rekursif dalam Analisis Sintaks Program

Komponen sebuah Kompilator

TEORI BAHASA & OPERASI MATEMATIS (2)

BAB IV ANALISA SINTAKS

TEORI BAHASA DAN AUTOMATA

Tata Bahasa Kelas Tata Bahasa. Konsep Bahasa (1)

BAB II SINTAKS 2.1. SINTAKS

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

Teknik Kompilasi. Notasi Bahasa

TEKNIK KOMPILASI Bahasa Regular

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

Kesalahan Program dapat berupa

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

TEORI BAHASA DAN AUTOMATA

UNIVERSITAS GUNADARMA

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

BAB II DASAR TEORI. 2.1 Kompilator

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

Tujuan perancangan bhs program

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

BAB V CONTEXT FREE GRAMMAR DAN PUSH DOWN AUTOMATA

Pemodelan CNF Parser dengan Memanfaatkan Pohon Biner

Teori Bahasa Formal dan Automata

Tata Bahasa Pemrograman

Grammar dan Tingkat Bahasa

anggota alfabet dinamakan simbol terminal atau token.

PENYEDERHANAAN Context Free Grammar

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

BAB VI CARA PENANGANAN KESALAHAN

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

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

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

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

TEORI BAHASA DAN OTOMATA [TBO]

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

TEORI BAHASA DAN AUTOMATA

TEORI BAHASA DAN OTOMATA [TBO]

Perjalanan sebuah intruksi

3.1. Definisi Syntax Syntax suatu bahasa pemrograman adalah satu himpunan

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

PENGANTAR OTOMATA DAN KOMPILASI

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

TEKNIK KOMPILASI. Firrar Utdirartatmo

TATA BAHASA BEBAS KONTEKS (CONTEXT FREE GRAMMAR)

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

SEMANTIK. Int vector[10];

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

Pohon (Tree) Contoh :

Penghilangan Rekursif Kiri

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

SATUAN ACARA PERKULIAHAN (SAP) MATA KULIAH PENGANTAR TEKNIK KOMPILASI

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

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Teori Bahasa dan Otomata 1

Teori Bahasa & Otomata

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

PERANCANGAN SISTEM PERBAIKAN ERROR KODE SUMBER PROGRAM OTOMATIS

SATUAN ACARA PERKULIAHAN (SAP) Semester Penempatan

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

disebut ternary operator. Di dalam suatu operasi dapat terdapat banyak operator. Urutan eksekusi dari operatoroperator

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

DIKTAT TEORI BAHASA DAN OTOMATA

BAB III ANALISIS DAN PERANCANGAN

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

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

SATUAN ACARA PERKULIAHAN (SAP)

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

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

Bab 2. Dasar-Dasar Pemrograman C

Teori Komputasi 10/15/2015. Bab 1: Pendahuluan. Teori Komputasi dan Teknik Kompilasi. Teori Komputasi dan Teknik Kompilasi

BAB 1 PENDAHULUAN 1.1 Latar Belakang Masalah

BAB II ANALISA LEKSIKAL (SCANNER)

Pemrograman Algoritma Dan Struktur Data

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

MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR. Dosen Pengampu: Utami Dewi Widianti,S.Kom

UNIVERSITAS BINA NUSANTARA. Program Ganda Teknik Informatika Matematika Skripsi Sarjana Program Ganda Semester Genap 2003/2004

RENCANA PEMBELAJARAN SEMESTER (Kelas Teori)

ALGORITMA PEMROGRAMAN 1C SEMANTIKS

Fase-fase proses sebuah kompilasi

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

Transkripsi:

Pohon Sintaks TEKNIK KOMPILASI ANALISIS SINTAKS SHINTA P. SARI Jurusan Informatika Fasilkom Universitas Indo Global Mandiri Berupa pohon penurunan yang menggambarkan bagaimana memperoleh suatu string dengan cara menurunkan symbolsymbol variable menjadi symbol-symbol terminal. Eg : Aturan produksi Bahasa bebas konteks S AB A aa a B bb b Syntax?? himpunan peraturan yang menjelaskan bagaimana simbol peraturan yang menjelaskan bagaimana simbol-simbol bahasa dapat dirangkai bersama untuk membentuk pernyataan (statement) yang berarti. Aturan formal yang mengatur bagaimana seseorang menulis instruksi yang valid dalam pada suatu bahasa Proses Penurunan Left Most Derivation (Terkiri) Simbol variable terletak disebelah kiri yang diperluas terlebih dahulu Right Most Derivation (Terkanan) Simbol variable terletak disebelah kanan yang diperluas terlebih dahulu Eg : Aturan produksi S aas a A SbA ba Analisis Syntax (Parser) Input berupa token dari scanner memeriksa kebenaran sintaks dan menghasilkan serta memproses pohon sintaks Sintaks Bahasa pemrograman dinotasikan dengan Tata Bahasa bebas konteks ( Context Free Grammar) Parse membentuk pohon sintaks (Parse Tree), menggambarkan bagaimana memperoleh suatu string dengan cara menurunkan simbol-simbol variabel menjadi simbol-simbol terminal, sampai tidak ada simbol yang belum tergantikan. Metode Parsing Proses parsing akan melakukan pemerikasaan urutan kemunculan token yang memperhatikan : Rentang waktu ekseskusi Penanganan Kesalahan Penanganan Kode Kategori metode parsing: Top Down Bottom Up 1

Top Down Parsing Kelemahan Brute Force : Top Down memparsing pohon secara pre order Penelusuran dimulai dari root hingga ke leaf pohon sintaks (dari symbol awal hingga terminal) Backtracking : Brute Force No Backtracking : Recursive Descent Parser Mencoba semua aturan produksi sehingga akan menjadi lambat Sulit melakukan backtracking dan pemulihan kesalahan Memakan banyak memori karena perlu mencatat lokasi backtrack Tata Bahasa rekursif kiri tidak dapat ditelusuri, harus diubah dulu A A, dimana = ( V U T)* Bottom Up Parsing Menelusuri rightmost derivation secara terbalik menelusuri pohon dari daun menuju ke root. Biasanya mengurangi string/daun sampai pada akarnya Reduction Only, Shift reduce Parsing Latihan: 1. Buatlah pohon penurunan unutk memeriksa apakah string aaabbabbba dapat diproduksi dari aturan produksi berikut ini! S ab ba A a as baa B b bs abb 2. Gambarlah diagram transisis dari aturan produksi di atas! Brute Force Parsing 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 Contoh Kompilasi Misal ingin memparsing : accd S aad S abd : gagal, maka dilakukan backtrack S acd : gagal, maka dilakukan backtrack S ab S accd : berhasil! 2

Contoh mesin FSA Diagram Syntax statement Ekspresi ; ekspresi Term Ekspresi + Term Notasi BNF (Backus-Nour Form) Contoh FSA : Suatu tata bahasa memiliki himpunan simbol terminal/token berikut (ID, PLUS, MINUS, dan INT) token ID untuk karakter huruf a-z, 0-9, token INT untuk digit, token PLUS untuk Penjumlahan dan token MINUS untuk Pengurangan Aturan Produksi bisa dinyatakan dengan notasi BNF BNF menggunakan abstraksi untuk struktur syntax ::= sama identik dengan simbol sama dengan atau < > pengapit simbol non terminal { } Pengulangan dari 0 sampai n kali PLUS + S huruf ID Huruf, Digit Misalkan aturan produksi sbb: E T T+E T-E T a MINUS - Blank Digit INT Digit Notasi BNFnya adalah E ::= <T> <T> + <E> <T> - <E> T ::= a Diagram Syntax Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis BNF: <Block> ::= BEGIN <statement> { SEMICOL <statement>} END Menggunakan simbol persegi panjang untuk non terminal Lingkaran untuk simbol terminal BEGIN Statement END Misalnya E T T+E T-E E T + - ; 3

Contoh Tata Bahasa Sederhana : Syntax Analyzer, Contoh : Terdapat statement : ( A + B ) * ( C + D ) Akan menghasilkan bentuk sintaksis: <factor>, <term> & <expression> Lexical Analysis - Contoh Contoh 1: ada urutan karakter yang disebut dengan statement fahrenheit := 32 + celcius * 1.8, Maka akan diterjemahkan kedalam token-token seperti dibawah ini identifier fahrenheit operator := integer 32 operator penjumlahan + Identifier celcius operator perkalian * real / float 1.8 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 Syntax Analyzer : Pohon Sintaks Parsing: Brute force (i) S (ii) S (iii) S Ekspresi Ekspresi Term a A d a A d b Terjadi kegagalan (iii), dilakukan back track (iv) S (v) S (vi) S Term Faktor Number Ekspresi a A d a B a B c c c d Terjadi kegagalan lagi (iv), dilakukan back-track 4

Parsing: Brute force Brute force : Aturan produksi 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 Aturan Produksi yang rekursif memiliki ruas kanan (hasil produksi) yang memuat simbol variabel pada ruas kiri Sebuah produksi dalam bentuk A A contoh: S d S B ad B merupakan produksi rekursif kanan = berupa kumpulan simbol variabel dan terminal bentuk produksi yang rekursif kiri A A contoh: S S d B B ad merupakan produksi rekursif Kiri 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 diinginkanadalah 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) 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: Brute force : Contoh 2. E T E+T E-T T F T* F T / F F i Dalam Banyak penerapan tata-bahasa, rekursif kiri tidak diinginkan, Untuk menghindari penurunan kiri yang looping, perlu dihilangkan sifat rekursif, dengan langkah-langkah sebagai berikut: 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 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 5

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 lakukan per-ganti-an aturan produksi yang rekursif kiri, sebagai berikut: 1. A 1 Z 2 Z... n Z 2 Z 1 2... n 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) 3 Z 1 Z 2 Z... n Z Metode ini digunakan untuk aturan produksi yang memiliki alternatif yang sedikit 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 dengan Recursive Descent Parser Parsing: Descent Parser Salah satu cara untuk meng-aplikasikan bahasa context free Contoh: Tata Bahasa Context free Simbol terminal maupun simbol variabelnya sudah bukan sebuah karakter 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 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 Langkah berikutnya adalah penggantian yang rekursif kiri S Sab Sbd, dapat digantikan dengan Aturan Produksi memakai Recursif Descent : 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 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. 6

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> t_if <exp> t_then <statement> t_if <exp> t_then <statement> t_else <statement> <exp> ::= <simple_exp> t_eq <simple exp> <simple_exp> t_lt <simple_exp> <simple_exp> t_gt <simple_exp> Dst. Penggalan program untuk grammar tsb 7