Komponen sebuah Kompilator

Slides:



Advertisements
Presentasi serupa
Teori Bahasa dan Automata
Advertisements

Kuliah 03 – Pengenalan Analisa Sintak
KONSEP dan NOTASI BAHASA
Pengayaan Software/Hardware dan Pengantarmukaan
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
Penguraian Bawah-Atas (Bottom-up Parsing)
Pengantar Teknik Kompilasi
Penyederhanaan Bahasa Bebas Context
Procedures, Functions and Methods
Pohon Urai (parse) dan Derivasi
Teori Bahasa dan Otomata 2 sks
POHON PENURUNAN.
Syntax Analyzer (Parser) - Dasar
KONSEP dan NOTASI BAHASA
KOMPILASI KOMPILATOR (COMPILER) adalah :
Bahasa Pemrograman Tingkat Tinggi
Komponen sebuah Kompilator
Pertemuan 3 BAHASA REGULAR
Lexical Analyzer (Scanner)
Analisis Leksikal.
STRUKTUR COMPILLER.
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
9. POHON PENURUNAN.
Pengurai Prediktif & Bottom Up Parsing (penguraian bawah atas)
KONSEP GRAMMAR & HIRARKI CHOMSKY
Teori-Bahasa-dan-Otomata
MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR Dosen Pengampu:
FUNGSI UMUM BAGIAN KOMPILATOR Dosen Pengampu: Istiqomah, s.kom
Tipe Data By Serdiwansyah N. A..
KONSEP dan NOTASI BAHASA
ATURAN PRODUKSI TATA BAHASA REGULER
Pesan-pesan kesalahan
Pengantar Teknik Kompilasi
By : Lisda Juliana Pangaribuan
Analisis leksikal (Scanner)
Pengantar Teknik Kompilasi
Teori-Bahasa-dan-Otomata
GRAMMER ATAU TATA BAHASA
Bahasa Context Free.
MODEL KOMPILATOR FUNGSI UMUM BAGIAN KOMPILATOR Dosen Pengampu:
Pseudocode – Tipe Data, Variabel, dan Operator
Pengantar Teknik Kompilasi
TATA BAHASA BEBAS KONTEKS
Analisis Sintaks (Parsing)
ANALISIS LEKSIKAL (Scanner)
Pengantar Teknik Kompilasi
Analisis leksikal ( SCANNER )
ALGORITMA & PEMROGRAMAN 1C
Istiqomah, S.Kom [Teknik Kompilasi UNIKOM 2013]
Pengantar Teknik Kompilasi
Pertemuan 10 CONTEXT FREE GRAMMAR (CFG) Lanjutan..
Pengantar Teknik Kompilasi
TEORI BAHASA & AUTOMATA
Tipe data & Variabel 1. Aturan Leksikal. 2. Operator. 3. Statement
Proses kompilasi COMPILATOR.
Konsep dan Notasi Bahasa
Teori Bahasa dan Automata
Pengantar Teknik Kompilasi
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
Pengenalan Kompilasi & Klasifikasi Tatabahasa Formal menurut Chomsky
Pengantar Teknik Kompilasi
Ilustrasi Proses Kompilasi
Analisis Sintaksis By: Kustanto, S.T., M.Eng.
KONSEP dan NOTASI BAHASA
Automata Hingga Deterministik (AHD)
Pengantar Teknik Kompilasi
Grammar dan Bahasa Automata
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
Pengantar Teknik Kompilasi
CONTEXT-FREE GRAMMAR (CFG) DAN PARSING
Transcript presentasi:

Komponen sebuah Kompilator Program Subjek Penganalisis Leksikal (Scanner) Penganalisis Sintaks (Parser) Penganalisis Semantik Pembentuk Kode Pengoptimal Kode TABEL Program Objek ANALISIS SINTESIS

Scanning Scanning termasuk ke dalam analisis lexical, yaitu proses untuk mengidentifikasi satuan terkecil dari Bahasa, yang disebut Token / Terminal / Daun (identifier, keyword,label, operator aritmetika dan assignment, operator relasional, tanda baca, dsb) Aspek dalam Scanner : Bagaimana bentuk dan penyajian Token. Metode yang digunakan Grammar Regular dan Ekspresi Regular Pengenalan Token. Metode yang digunakan Automata Hingga, dengan penyajian menggunakan Diagram Transisi

Scanning (cont.) Scanner berinteraksi dengan Parser, dengan cara : Scanner mengolah Program Source secara terpisah sebagai satu fase, dimana token disimpan dalam sebuah tabel sebelum Parser bekerja Scanner berinteraksi dengan Parser, dimana scanner dipanggil oleh parser bila token dalam program source diperlukan

Automata Hingga (AH) Automata Hinga (AH) / Finite state Automaton (FA) adalah suatu struktur abstrak yang didefinisikan, terdiri dari : Himpunan Hingga A berisi simbol Input Himpunan Hingga S berisi State (internal state) Himpunan Hingga Z berisi simbol output Sebuah fungsi f: S x Z  S, disebut fungsi next state Sebuah fungsi g: S x A Z, disebut fungsi output AH berhubungan dengan Regular Grammar Jenis AH : AH Determinstik (AHD) AH Non Deterministik (AHN) AHN dengan transisi untai hampa

Automata Hingga Deterministik (AHD) Automata Hinga Deterministik (AHD) didefinisikan dengan 5 tupel Himpunan Hingga internal state (S) Himpunan Hingga simbol input (V) Sebuah fungsi f: S x V  S ; merupakan fungsi next state State awal (q0  S) Himpunan hingga state penerima  S AHD sering digambarkan dengan cara : Table Transisi State Transisi Digraph

Automata Hingga Deterministik (AHD) (cont.) Contoh : Diketahui AHD dengan 2 simbol input dan 3 state, V = { a,b} S = { q0, q1, q2) T = {q0, q1} state penerima q0 sebagai state awal Fungsi next state didefinisikan f:(S,V) input f a b q0 q1 q2

Automata Hingga Deterministik (AHD) (cont.) b b a q0 q1 q2 b a Periksalah string berikut : aba q0  q0  q1  q0 (diterima) 2. aabbaa q0  q0  q0  q1  q2  q2  q2 (ditolak, state penerima yang ditentukan adalah q0 dan q1, bukan q2)

Automata Hingga Deterministik (AHD) (cont.) Contoh : Identifikasi Integer String Grammar : <integer> ::= <digit> | <integer><digit> Start Integer OUT delimeters d input state d  d START INTEGER - OUT (Accept)

Automata Hingga Deterministik (AHD) (cont.) Contoh : Identifikasi Identifier String <identifier> ::= <letter>|<identifier><letter>|<identifier><digit> Start Identifier <letter> <digit> Error

Lexical Analysis (scanner) - berhubungan dengan bahasa Mengidentifikasikan semua besaran yang membuat suatu bahasa Mentransformasikan ke token-token Menentukan jenis dari token-token Menangani kesalahan Menangani tabel simbol Scanner, didesign untuk mengenali - keyword, operator, identifier Token : separates characters of the source language into group that logically belong together Misalnya : konstanta, nama variabel ataupun operator dan delimiter (atau sering disebut menjadi besaran lexical)

Lexical Analysis ( Besaran leksikal ) Identifier dapat berupa keyword atau nama kunci, seperti IF..ELSE, BEGIN..END (pada Pascal), INTEGER (pascal), INT, FLOAT (Bhs C) Konstanta : Besaran yang berupa bilangan bulat (integer), bilangan pecahan (float/Real), boolean (true/false), karakter, string dan sebagainya Operator; Operator arithmatika ( + - * / ), operator logika ( < = > ) Delimiter; Berguna sebagai pemisah/pembatas, seperti kurung-buka, kurung -tutup, titik, koma, titik-dua, titik-koma, white-space White Space: pemisah yang diabaikan oleh program, seperti enter, spasi, ganti baris, akhir file

Lexical Analysis - Contoh 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

Lexical Analysis - Contoh 2 Setiap bentuk dari token di representasi sebagai angka dalam bentuk internal, dan angkanya adalah unik Misalnya nilai 1 untuk variabel, 2 untuk konstanta, 3 untuk label dan 4 untuk operator, dst Contoh instruksi : Kondisi : IF A > B THEN C = D; Maka scanner akan mentransformasikan kedalam token-token, sbb:

Lexical Analysis - Contoh 2 Kondisi 3 : 26 IF 20 A 1 > 15 B 1 THEN 21 C 1 D 1 ; 27 Token-token ini sebagai inputan untuk syntax Analyser , token-token ini bisa berbentuk pasangan item. Dimana Item pertama menunjukkan alamat atau lokasi dari token pada tabel simbol. Item kedua adalah representasi internal dari token. Semua token direpresentasikan dengan informasi yang panjangnya tetap (konstan), suatu alamat (address atau pointer) dan sebuah integer (bilangan bulat)

Syntax Analyzer (Parsing) Pengelompokan token-token kedalam class syntax (bentuk syntax), seperti procedure, Statement dan expression Grammar : sekumpulan aturan-aturan, untuk mendefinisikan bahasa sumber Grammar dipakai oleh syntax analyser untuk menentukan struktur dari program sumber Proses pen-deteksian-nya (pengenalan token) disebut dengan parsing

Syntax Analyzer Maka Syntax analyser sering disebut dengan parser Pohon sintaks yang dihasilkan digunakan untuk semantics analyser yang bertugas untuk menentukan ‘maksud’ dari program sumber. Misalnya operator penjumlahan maka semantics analyser akan mengambil aksi apa yang harus dilakukan

Contoh Terdapat statement : ( A + B ) * ( C + D ) Akan menghasilkan bentuk sintaksis: <factor>, <term> & <expression>

Syntax tree Pohon sintaks/ Pohon penurunan (syntax tree/ parse tree) beguna untuk menggambarkan bagaimana memperoleh suatu string dengan cara menurunkan simbol-simbol variable menjadi simbol-simbol terminal. Misalnya: S  AB A  aA | a B  bB | B Penurunan untuk menhasilkan string aabbb

Parsing atau Proses Penurunan Parsing dapat dilakukan dengan cara : Penurunan terkiri (leftmost derivation) : simbol variable yang paling kiri diturunkan (tuntas) dahulu Penurunan terkanan (rightmost derivation): variable yang paling kanan diturunkan (tuntas) dahulu Misalkan terdapat ingin dihasilkan string aabbaa dari context free language: S  a AS | a, A  SbA | ba

Parsing atau Proses Penurunan Penurunan kiri : S => aAS => aSbAS => aabAS => aaabbaS => aabbaa Penurunan kanan : S => aAS => aAa => aSbAa => aSbbaa => aabbaa

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 Waktu Eksekusi Penanganan Kesalahan Penanganan Kode 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 Parsing adalah konsturksi atau pembentukan Pohon Sintaks untuk suatu kalimat (ekspresi) Bila terdapat lebih dari satu pohon sintaks untuk sebuah grammar maka dikatakan grammar tersebut Ambiguous. Dua cara melakukan validitas sintaks dengan parsing : TOP DOWN Parsing : melakukan derivasi string dari NT BOTTOM UP Parsing : melakukan reduksi simbol ke NT

Parsing Top Down Jika  adalah input string, maka derivasi dari Top Down Parse dapat ditunjukkan sebagai berikut : S …  …  …   Parse Tree untuk Top Down Parsing selalu dimulai dari sebelah kiri S NT11 NT12 NT1n ……. NT21 t 1 2 3

Parsing Top Down (cont.) Contoh : Parsing Top Down untuk identifier x2 Derivasinya : <identifier>  <identifier><digit> <letter><digit>  x <digit>  x2 a. <identifier> <identifier> <digit> <letter> c <identifier> <digit> <letter> x d <identifier> <digit> <letter> x 2 e <identifier> <digit> b

Parsing Top Down (cont.) Contoh : ekspresi a + b * c grammar : E ::= T + E | T T ::= V * E | V V ::= <id> Prediction Prediction Sentential Form ET+E TV V<id> ET TV*T V <id> T V T+E V+E <id>+E <id>+T <id>+V*T <id>+<id>*T <id>+<id>*V <id>+<id>*<id> E T + V id *

Parsing Bottom Up Parsing Bottom Up membangun pohon sintaks melalui urutan simbol yang direduksi, atau dimulai dengan sebuah string hingga mencapai simbol start Grammar Contoh : diketahui identifier x2, dengan parsing bottom up menjadi : x 2 <letter> <identifier> <digit> x 2 <letter> <identifier> x 2 <letter> <identifier> <digit> x 2 <letter> x 2  x2  <letter>2  <identifier>2  <identifier><digit>  <identifier> a b c d e

Relasi Preseden dan Pemakaiannya Teknik parsing pada metode Bottom-Up dilakukan dengan mencari berulang-ulang, handle (leftmost simple phrase) u dari bentuk sentensial saat itu dan mereduksinya menjadi suatu nonterminal U dnegan memakai reduksi U  u Jadi tujuan utamanya adalah mencari Handle dari sebuah bentuk sentensial yaitu simple phrase terkiri (leftmost) dari bentuk sentensial tersebut. Masalah tersebut diselesaikan dengan Grammar Preseden

Relasi Preseden dan Pemakaiannya (cont.) Misal, R dan S berada dalam suatu grammar G. Beberapa bentuk sentensial dapat dibentuk dari simbol R dan G tersebut (…RG…..). Ada tiga kemungkinan yang timbul dalam handle yang dibuat dari R dan S. R adalah bagian dari suatu handle tapi S tidak (R  S) dikatakan R > S (R memiliki Preseden atas S). R harus merupakan ekor dari beberapa produksi U  …R. Karena handle berada di kiri S,maka S harus merupakan terminal U R S…. ….. ……….. handle

Relasi Preseden dan Pemakaiannya (cont.) R dan S keduanya adalah bagian dalam suatu handle (R  S) dikatakan R dan S memiliki Preseden yang sama, dan harus direduksi secara bersamaan waktu Harus ada suatu produksi U  …RS... U ..…. ….. … RS.. handle …. S adalah bagian dari suatu handel, tetapi R tidak (S  R) dikatakan R < S S merupakan kepala dari beberapa produksi U  S….. U ……. …R S ……….. handle

Relasi Preseden dan Pemakaiannya (cont.) Contoh : Diketahui, Grammar dengan simbol Start Z dan produksi : Z  bMb M  (L | a L  Ma) Berikut ini akan ditunjukkan bentuk sentensial, phon sintaks,handel dari relasi yang dapat diturunkan dari produksi. Bentuk sentensial : bab Pohon Sintaks : Z b a M Handel : a Relasi yang diberikan Pohon : b  a a  b

Relasi Preseden dan Pemakaiannya (cont.) Bentuk sentensial : b(Lb Pohon Sintaks : Z b ( M L Handel : (L Relasi yang diberikan Pohon : b  ( (  L L  b Bentuk sentensial : b(Ma)b Pohon Sintaks : Z b ( M L a ) Handel : Ma) Relasi yang diberikan Pohon : b  ( (  L L  b