Pengenalan Kompilasi Klasifikasi Tatabahasa Formal menurut Chomsky n
Pengenalan Kompilasi & Klasifikasi Tatabahasa Formal menurut Chomsky n n By Kustanto, S. T. , M. Eng 6/9/2021 Pengenalan Kompilasi pertemuan ke 2 1
Pendahuluan Tujuan Pembelajaran : 1. Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler. 2. Mahasiswa memahami konsep pembuatan sebuah Compiler. 3. Mahasiswa mengetahui bagaimana sebuah bahasa pemrograman dapat diterjemahkan oleh mesin. engenalan Kompilasi pertemuan ke 2 2
1. Bahasa Pemrograman engenalan Kompilasi pertemuan ke 2 Bahasa mesin Bahasa Assembly Bahasa Pemrograman Bahasa Tingkat tinggi Bahasa Problem Oriented 3
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 Assembly merupakan bentuk simbolik dari bahasa mesin. Kode misalnya ADD, MUL, dsb engenalan Kompilasi pertemuan ke 2 Bahasa problem oriented sering juga dimasukkan sebagai bahasa tingkat tinggi, misalnya SQL, Myob, dsb. 4
2. Translator melakukan pengubahan source code / source program kedalam target code / object code Interpreter dan Compiler termasuk dalam kategori translator. Interpreter Translator engenalan Kompilasi pertemuan ke 2 § Tidak membangkitkan object code. § Source code dan data diproses bersamaan. § Contoh: BASICA, SPSS, DBASE III. Compiler Assembler § Source Code adalah bahasa tingkat tinggi. § Source Code adalah bahasa Assembly § Object Code adalah bahasa mesin atau assembly. § Object Code adalah bahasa mesin. § Source code dan data diproses tidak bersamaan. § Contoh: Turbo Assembler. § Contoh: PASCAL, C. 5
Interpreter Penanganan Kesalahan Program Sumber engenalan Kompilasi pertemuan ke 2 Analisa Leksikal Analisa Sintaks Intermediate Program Interpretasi Hasil Operasi Pengelolaan Tabel 6
Assembler Source Code. ASM Assembler Object Code Lingker . OBJ File Target. 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). engenalan Kompilasi pertemuan ke 2 7
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 : Program sumber Compiler 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. engenalan Kompilasi pertemuan ke 2 8
Blok Diagram Program Sumber Program Sasaran ANALISA Penganalisa Leksikal (scanner) engenalan Kompilasi pertemuan ke 2 Penganalisa Sintaks (parser) Penganalisa Semantik Pembangkit Kode antara SINTESA Pembentuk kode Pengoptimal kode TABEL SIMBOL Bagan pokok proses kompilasi 9
Proses kompilasi dikelompokkan menjadi : n n Analisa : program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (intermediate presentation) Sintesa : membangun program sasaran yang diinginkan dari bentuk antara 10
Contoh skema penerjemaham suatu ekspresi dalam bahasa sumber, yaitu : position : = initial + rate * 60 pengoptimal kode penganalisa semantik penganalisa leksikal (scanner) : = Id 1 : = id 2 + id 3 * 60 id 1 id 3 : = pembangkit kode antara + id 1 * id 2 penganalisa sintaks (parser) * id 2 id 3 60 temp 1 : = id 3 * 60. 0 id 1 : = id 2 + temp 1 : = inttoreal(60) temp 2 : = id 3 * temp 1 temp 3 : = id 2 + temp 2 id 1 : = temp 3 intoreal Pembangkit kode 60 MOVF id 3. R 2 MULF #60. 0, R 2 MOVF id 2, R 1 ADDF R 2, R 1 MOVF R 1, id 1 11
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 : temp 2 : = id 3 * temp 1 adalah (*, id 3, temp 1, temp 2), id : = temp 3 adalah (assign, temp 3, -, id 1), temp 1: =inttoreal(60) adalah (intoreal, 60, -, temp 1). Pembangkit kode dalam contoh ini menghasilkan kode dalam bahasa mesin. 12
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. engenalan Kompilasi pertemuan ke 2 13
Hirarki Chomsky Unrestricted 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 Context Free -2 Automata Pushdown (Pushdown Automata), PDA Regular Grammar (RG)/type-3 Automata Hingga (Finite Automata) Regular Catatan : Pengenal bahasa adalah satu kemampuan mesin turing. LBA adalah variasi dari Mesin Turing Nondeterministik. Konsep dan notasi bahasa 14
CFG / Tata Bahasa Bebas Konteks q Pada tata bahasa bebas konteks tidak terdapat pembatasan hasil produksinya. Batasan ruas kiri adalah sebuah simbol variabel. Contoh : CFG : B → CDe. Fg D → Bc. De q q q 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.
q q 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 simbol 2 variabel mjd simbol 2 terminal sampai tdk ada yg belum tergantikan. Misal : Bhs bebas konteks S → AB A → a. A | a B → b. B | b
Digambar pohon penurunan utk untai : ‘aabbb’ S üSimbol awal menjadi root. üSetiap kali penurunan dipilih A B aturan produksi yg menuju ke solusi. a A a b B b Bhs bebas konteks S → AB A → a. A | a B → b. B | b
Proses penurunan / parsing : q q Penurunan terkiri / leftmost derivation : simbol variabel paling kiri yg diperluas terlebih dulu. Penurunan terkanan / rightmost derivation : simbol variabel terkanan yg diperluas dulu.
CONTOH : S → a. AS | a A → Sb. A | ba Untuk memperoleh untai : ’aabbaa’ v Penurunan terkiri : S → a. AS → a. Sb. AS → aabbaa v Penurunan terkanan : S → a. Aa → a. Sbbaa → aabbaa S A S a b A b a a
Tugas : S → a. B | b. A A → a | a. S | b. AA B → b | b. S | a. BB 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 → Sb. S | Sc. S | a Utk untai : ‘abaca’ terdapat 2 cara penurunan : S → Sb. S → ab. Sc. S → abaca S → Sc. S → Sb. Sc. S → abaca S S a S b S S c a S a S c b S a
Tugas : S → a. Ad | a. B A→b|c B → ccd | ddc Utk memperoleh untai : ‘accd’ Buktikan bahwa tata bahasa bebas konteks berikut ambigu : S → a. B | b. A A → a | a. S | b. AA B → b | b. S | a. BB Untuk memperoleh untai : ‘aabbab’
n Selesai 6/9/2021 Pengenalan Kompilasi pertemuan ke 2 24
- Slides: 24