Pengenalan Kompilasi & Klasifikasi Tatabahasa Formal menurut Chomsky

Slides:



Advertisements
Presentasi serupa
Teori Bahasa dan Automata
Advertisements

KONSEP dan NOTASI BAHASA
Pengayaan Software/Hardware dan Pengantarmukaan
Teori Bahasa dan Automata
Teknik Kompilasi Febuari 2013.
Pengantar Teknik Kompilasi
Penyederhanaan Bahasa Bebas Context
Pengantar Teknik Kompilasi
TEKNIK KOMPILASI.
Teori Bahasa dan Otomata 2 sks
Syntax Analyzer (Parser) - Dasar
KONSEP dan NOTASI BAHASA
KOMPILASI KOMPILATOR (COMPILER) adalah :
Bahasa Pemrograman Tingkat Tinggi
Komponen sebuah Kompilator
Yenni astuti, S.T., M.Eng Teori Bahasa Yenni astuti, S.T., M.Eng
Analisis Leksikal.
STRUKTUR COMPILLER.
Pengantar Teknik Kompilasi
9. POHON PENURUNAN.
Komponen sebuah Kompilator
Pertemuan 1 & 2 Pendahuluan
KONSEP GRAMMAR & HIRARKI CHOMSKY
Pengantar Teknik Kompilasi
TEKNIK KOMPILASI.
Teori-Bahasa-dan-Otomata
2. Review Teori Bahasa Formal dan Otomata
PENGANTAR TEKNIK KOMPILASI
Teknik Kompilasi “Translator”
KONSEP dan NOTASI BAHASA
Analisis semantik, kode antara dan pembangkitan kode
Pesan-pesan kesalahan
By : Lisda Juliana Pangaribuan
Pengantar Teknik Kompilasi
Teori-Bahasa-dan-Otomata
GRAMMER ATAU TATA BAHASA
Bahasa Context Free.
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
TATA BAHASA BEBAS KONTEKS
MATERI PERKULIAHAN TEKNIK KOMPILASI
MATERI PERKULIAHAN TEKNIK KOMPILASI
Pengantar Teknik Kompilasi
ALGORITMA & PEMROGRAMAN 1C
Analisa Semantik, Kode Antara,
BAB VIII POHON PENURUNAN.
MATERI PERKULIAHAN TEKNIK KOMPILASI
Teknik Kompilasi “Translator”
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
TEORI BAHASA & AUTOMATA
TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI)
Proses kompilasi COMPILATOR.
Konsep dan Notasi Bahasa
Lecturer Note II Turbo Pascal & Pemrograman
Pengantar Teknik Kompilasi
TEKNIK KOMPILASI PERTEMUAN II.
Teknik Kompilasi Abdul Wahid, ST, M.Kom
Pengantar Teknik Kompilasi
Pengantar Teknik Kompilasi
Ilustrasi Proses Kompilasi
Analisis Sintaksis By: Kustanto, S.T., M.Eng.
Pengantar Teknik Kompilasi
Automata Hingga Deterministik (AHD)
Pengantar Teknik Kompilasi
Grammar dan Bahasa Automata
Semantics Analyser by Kustanto
Chomsky Normal Form (CNF) / Bentuk Normal Chomsky (BNC)
Pengantar Teknik Kompilasi
Chomsky Normal Form (CNF) / Bentuk Normal Chomsky (BNC)
Transcript presentasi:

Pengenalan Kompilasi & Klasifikasi Tatabahasa Formal menurut Chomsky By Kustanto,S.T.,M.Eng 11/6/2018 Pengenalan Kompilasi pertemuan ke 2

Pengenalan Kompilasi pertemuan ke 2 Pendahuluan Tujuan Pembelajaran : Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler. Mahasiswa memahami konsep pembuatan sebuah Compiler. Mahasiswa mengetahui bagaimana sebuah bahasa pemrograman dapat diterjemahkan oleh mesin. Pengenalan Kompilasi pertemuan ke 2

Pengenalan Kompilasi pertemuan ke 2 1. Bahasa Pemrograman Bahasa mesin Bahasa Assembly Bahasa Pemrograman Bahasa Tingkat tinggi Bahasa Problem Oriented Pengenalan Kompilasi pertemuan ke 2

Bahasa tingkat tinggi (user oriented) lebih banyak memberikan fungsi kontrol program, block, dan prosedur. Bahasa mesin merupakan bentuk terendah dari bahasa komputer. Instruksi direpresentasikan dalam kode numerik. Program Language Bahasa problem oriented sering juga dimasukkan sebagai bahasa tingkat tinggi, misalnya SQL, Myob, dsb. Bahasa Assembly merupakan bentuk simbolik dari bahasa mesin. Kode misalnya ADD, MUL, dsb Pengenalan Kompilasi pertemuan ke 2

Pengenalan Kompilasi pertemuan ke 2 2. Translator Translator melakukan pengubahan source code / source program kedalam target code / object code Interpreter dan Compiler termasuk dalam kategori translator. Interpreter Translator Tidak membangkitkan object code. Source code dan data diproses bersamaan. Contoh: BASICA, SPSS, DBASE III. Assembler Compiler Source Code adalah bahasa tingkat tinggi. Object Code adalah bahasa mesin atau assembly. Source code dan data diproses tidak bersamaan. Contoh: PASCAL, C. Source Code adalah bahasa Assembly Object Code adalah bahasa mesin. Contoh: Turbo Assembler. Pengenalan Kompilasi pertemuan ke 2

Pengenalan Kompilasi pertemuan ke 2 Interpreter Penanganan Kesalahan Program Sumber Analisa Leksikal Analisa Sintaks Intermediate Program Interpretasi Hasil Operasi Pengelolaan Tabel Pengenalan Kompilasi pertemuan ke 2

Assembler Source Code Assembler Object Code Lingker File Target .ASM .EXE / .COM Proses Sebuah Kompilasi pada Bahasa Assembler Source Code adalah bahasa Assembler, Object Code adalah bahasa Mesin. Object Code dapat berupa file object (.OBJ), file .EXE, atau file .COM Contoh : Turbo Assembler (dari IBM) dan Macro Assembler (dari Microsoft). Pengenalan Kompilasi pertemuan ke 2

Compiler Definisi : Kompilator (compiler) adalah sebuah program yang membaca suatu program yang ditulis Dalam suatu bahasa sumber (source language) dan menterjemahkannya kedalam suatu bahasa sasaran (target language). Proses kompilasi dapat digambarkan melalui sebuah blok diagram sebagai berikut : Compiler Program sumber Bahasa sasaran Pesan-pesan kesalahan (error messages) Proses Kompilasi dikelompokkan kedalam dua kelompok besar : 1. Analisa : Program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (Intermediate Representation ). 2. Sintesa : Membangun program sasaran yang diinginkan dari bentuk antara. Pengenalan Kompilasi pertemuan ke 2

Bagan pokok proses kompilasi Blok Diagram Program Sumber Program Sasaran ANALISA SINTESA Penganalisa Semantik Pembangkit Kode antara Penganalisa Leksikal (scanner) Penganalisa Sintaks (parser) Pembentuk kode Pengoptimal kode TABEL SIMBOL Bagan pokok proses kompilasi Pengenalan Kompilasi pertemuan ke 2

Proses kompilasi dikelompokkan menjadi : Analisa : program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate presentation) Sintesa : membangun program sasaran yang diinginkan dari bentuk antara

position := initial + rate * 60 Contoh skema penerjemaham suatu ekspresi dalam bahasa sumber, yaitu : position := initial + rate * 60 penganalisa semantik Pembangkit kode pengoptimal kode position := initial + rate * 60 penganalisa sintaks (parser) penganalisa leksikal (scanner) Id1 : = id2 + id3 * 60 id3 + : = id1 id2 * 60 intoreal pembangkit kode antara temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2 id1 := temp3 temp1 := id3 * 60.0 id1 := id2 + temp1 MOVF id3. R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1

Keterangan: id adalah token untuk identifier. Tiga lexeme untuk token ini adalah position, initial, dan rate. Penganalisa semantik secara logika membangkitkan pohon parse. Penganalisa semantik mendeteksi mismatch type. Perbaikan dilakukan dengan memanggil procedure inttoreal yang mengkonversi integer ke real. Quadruples dari : temp2 := id3 * temp1 adalah (*,id3,temp1,temp2), id := temp 3 adalah (assign,temp3,-,id1), temp1:=inttoreal(60) adalah (intoreal,60,-,temp1). Pembangkit kode dalam contoh ini menghasilkan kode dalam bahasa mesin.

Pengenalan Kompilasi pertemuan ke 2 Keterangan 1. Program Sumber ditulis dalam bahasa sumber, misal Pascal, Assembler, dsb. 2. Program Sasaran dapat berupa bahasa pemrograman lain atau bahasa mesin pada suatu komputer. 3. Scanner : Memecah program sumber menjadi besaran leksik/token. 4. Parser : Memeriksa kebenaran dan urutan kemunculan token. 5. Penganalisa semantik : Melakukan analisa semantik, biasanya dalam realisasi akan digabungkan Dengan intermediate code generator (bagian yang berfungsi membangkitkan kode antara). 6. Pembentuk Kode : Membangkitkan kode objek 7. Pengoptimal Kode : Memperkecil hasil dan mempercepat proses. 8. Tabel : Menyimpan semua informasi yang berhubungan dengan proses kompilasi. Pengenalan Kompilasi pertemuan ke 2

Kelas Bahasa Hirarki Chomsky Type Grammar Kelas Bahasa Unrestricted Kelas Bahasa Cotext Sensitive Kontext free regular Mesin Pengenal bahasa Type Grammar Kelas Bahasa Mesin Pengenal Bahasa Unrestricted Grammar (UG)/type-0 Unrestricted Mesin Turing (Turing Machine), TM Context Sensitive Grammar (CSG)/type-1 Context Sensitive Linear Bounded Automaton, LBA Context Free Gammar (CFG)/type-2 Context Free Automata Pushdown (Pushdown Automata), PDA Regular Grammar (RG)/type-3 Regular Automata Hingga (Finite Automata) Catatan : Pengenal bahasa adalah salah satu kemampuan mesin turing. LBA adalah variasi dari Mesin Turing Nondeterministik. Konsep dan notasi bahasa

CFG / Tata Bahasa Bebas Konteks Pada tata bahasa bebas konteks tidak terdapat pembatasan hasil produksinya. Batasan ruas kiri adalah sebuah simbol variabel. Contoh : CFG : B → CDeFg D → BcDe Pada bhs regular, bagian yg belum terturunkan tsb selalu terjadi pd suatu ujung. Pada bhs bebas konteks/CFG bisa terdapat lebih banyak bagian yg belum terturunkan itu, dan bisa terjadi dimana saja. Bhs bebas konteks menjadi dasar dlm pembentukan suatu parser / proses analisis sintaksis.

Tree : suatu graph terhubung tidak sirkuler, yg memiliki satu simpul (node) / vertex disebut akar (root) dan situ memiliki lintasan setiap simpul. Pohon penurunan berguna untuk menggambarkan bagaimana memperoleh suatu string (untai) dgn cara menurunkan simbol2 variabel mjd simbol2 terminal sampai tdk ada yg belum tergantikan. Misal : Bhs bebas konteks S → AB A → aA | a B → bB | b

Digambar pohon penurunan utk untai : ‘aabbb’ S Simbol awal menjadi root. Setiap kali penurunan dipilih aturan produksi yg menuju ke solusi. A B b a A B Bhs bebas konteks S → AB A → aA | a B → bB | b a b B b

Proses penurunan / parsing : Penurunan terkiri / leftmost derivation : simbol variabel paling kiri yg diperluas terlebih dulu. Penurunan terkanan / rightmost derivation : simbol variabel terkanan yg diperluas dulu.

CONTOH : S → aAS | a A → SbA | ba Untuk memperoleh untai :’aabbaa’ Penurunan terkiri : S → aAS → aSbAS → aabAS → aabbaS → aabbaa Penurunan terkanan : S → aAS → aAa → aSbAa → aSbbaa → aabbaa S S a A S b A a a b a

S → aB | bA A → a | aS | bAA B → b | bS | aBB Utk untai ‘aaabbabbba’ Tugas : S → aB | bA A → a | aS | bAA B → b | bS | aBB Utk untai ‘aaabbabbba’

AMBIGUITAS Terjadi bila terdapat lebih dari 1 pohon penurunan yg berbeda utk memperolah suatu untai. Contoh : S → A | B A → a B → a Utk untai : ‘a’ terdapat 2 cara penurunan : S → A → a S → B → a

S → SbS | ScS | a Utk untai : ‘abaca’ terdapat 2 cara penurunan : S → SbS → abS → abScS → abacS → abaca S → ScS → SbScS → abScS → abacS → abaca S S S b S S c S a S S c S b S a a a a a

Tugas : S → aAd | aB A → b | c B → ccd | ddc Utk memperoleh untai : ‘accd’ Buktikan bahwa tata bahasa bebas konteks berikut ambigu : S → aB | bA A → a | aS | bAA B → b | bS | aBB Untuk memperoleh untai : ‘aabbab’

Pengenalan Kompilasi pertemuan ke 2 Selesai 11/6/2018 Pengenalan Kompilasi pertemuan ke 2