Teknik Kompilasi
description
Transcript of Teknik Kompilasi
SESSION 1 – INTRODUCTION TO COMPILER
Translator adalah sebuah program yang mengubah suatu bahasa ke bahasa lain.
Ada 3 jenis translator, yaitu:
- Compiler- Assembler- Interpreter
Compiler adalah sebuah program yang membaca dan menerjemahkan source language yang ditulis dalam bahasa tingkat tinggi menjadi bahasa tingkat rendah atau tingkat tinggi lainnya yang kita sebut sebagai target language.
Bahasa tingkat tinggi : PASCAL, C/C++, FORTRAN, COBOL, dll.
Bahasa tingkat rendah : Assembly, mesin
Secara konsep, deskripsi dasar dari compiler dapat digambarkan seperti ini :
Assembler adalah sebuah program yang mengubah source language yang ditulis dalam bahasa tingkat rendah menjadi bahasa tingkat rendah lain sebagai target language.
Interpreter adalah sebuah program yang mengubah source language yang ditulis dalam bahasa tingkat tinggi menjadi bahasa menengah (contoh : Notasi polish/postfix, triple, quadraple, dll) sebagai target language.
Klasifikasi Compiler
- Single pass- Multi pass- Load-and-go- Debugging- Optimizing
Cousins of Compiler
- PreprocessorUntuk memasukan skeletal program yang menjadi inout pada compiler, dan mengerjakan fungsi processing macro , file inclusion, rational preprocessor dan language extension.
- AssemblerMelakukan pengolahan pada output dari compiler yang menghasilkan binary code yang tidak memiliki memory address.
- Loader and link-editorMenggabungkan kode mesin relocatable dengan library atau file objek relocatable untuk mendapatkan absolute machine code.
Language Processing System
Library, relocatable Object files
absolute machine code
relocatable machine code
target assembly program
source program
skeletal Source program
Loader / Link-editor
Assembler
Preprocessor
Compiler
Fungsi Preprocessor
- Macro Processing : Ditentukan oleh programmer
- File Inclusion : Preprocessor akan menyertakan file header ke dalam program
- Rational Preprocessor : Preprocessor dapat meningkatkan kemampuan atau menambahkan fasilitas bahasa yang sudah lama.
- Language Extensions : Menggabungkan perintah yang ditulis dalam bahasa lain ke dalam program dalam bentuk buit-in-macros
Tahapan Kompilasi (Stages Compilation) / Tahapan pengolahan dalam compiler
Source program
symbol-table manager
Target program(Object code)
Error handler
syntax analyzer
intermediate code generator
code generator
code optimizer
semantic analyzer
lexical analyzer
• Phase analysis : – lexical analyzer– syntax analyzer– semantic analyzer.
• Phase synthesis :– intermediate code generator– code optimizer– code generator.
• Symbol table manager – Untuk membuat record dari identifier yang digunakan dalam source program
dan mengumpulkan atribut yang berhubungan dengan setiap identifier• Error Handler
– Bagian dari compiler yang menghandle dan melaporkan error yang ditemukan
Compiler Construction Tools
- Parser GeneratorTools yang menghasilkan Syntax Analyzer (Parser) dari input-based Context Free Grammar.
- Scanner GeneratorTools yang menghasilkan Lexical Analyzer (Scanner) dari spesifikasi yang berdasarkan ekspresi regular
- Syntax Directed Translation EngineTools yang dapat menghasilkan satu set rutinitas yang dapat ‘berjalan’ (run) dalam parse tree dan menghasilkan intermediate code.
- Automatic Code GeneratorTools untuk mengambil kumpulan aturan yang menentukan penerjemahan setiap operasi dari bahasa intermediate menjadi bahasa mesin dari mesin target.
- Data Flow EngineTools untuk mengumpulkan informasi tentang bagaimana nilai-nilai yang ditransmisikan dari satu bagian program ke program lain, untuk tujuan “data flow analysis” dalam fase code optimization.
SESSION 2 – AUTOMATA AND LANGUAGE THEORY
Automata adalah mesin atau perangkat komputasi abstrak yang dapat mengenali, menerima, atau menghasilkan sebuah kalimat dalam bahasa tertentu.
Language Theory adalah teori yang mendiskusikan tentang Formal Language, yaitu satu set kalimat, dimana semua kalimat tersebut ditulis dalam suatu bahasa yang dihasilkan oleh grammar. Disebut Formal Language karena grammar diciptakan mendahului pembentukan setiap kalimat. Selain itu, formal language dapat dihasilkan oleh dua atau lebih grammar yang berbeda.
Automata dapat digunakan sebagai model untuk :
- Software untuk merancang dan mengecek behavior dari sirkuit digital- Lexical Analyzer dari compiler yaitu komponen-komponen yang memecah teks input
menjadi unit logical seperti identifier, keyword dan tanda baca.- Software untuk scanning badan teks yang besar seperti kumpulan web pages untuk
menemukan kemunculan kata, frase atau pola lainnya.- Software untuk memverifikasi semua jenis yang memiliki jumlah distinct states yang
terbatas seperti protokol komunikasi dan protokol untuk keamanan pertukaran informasi
Backus Naur Form (BNF)
• < > : Language symbol for meta language (non terminal) (lowercase).
• : consist of
• | : alternative
• <sentence> : start symbol
• Language symbol : final symbol which is not symbol (terminal)
Contoh :
Terminal
Non terminal
Meta language
mousecatch
<verb> <noun>
blackcat
<adjective><noun>
<predicate><subject>
<sentence>
Konsep Central dari Teori Automata- Simbol : huruf, digit, spesial karakter, dll- Alfabet () : 1 = {a, b, ...z}, lower case alphabet - String : kumpulan simbol, cth : a10st- Length of String : jumlah simbol dalam string, |asd12| = 5- Language : satu set string, cth : L1 ={a, sd, asd}.
{} = language mengandung empty stringØ = empty set, atau language tidak mengandung satupun string Finite Language : example L1 = {a, ab, abb}Infinite Language : describe a language using a”set former”
{w | something about w}example L2 = {w | w is palindrome of å = {0, 1}}
Closure Language terdiri dari 2 bahasa, yaitu : * = Zero or more times (Kleene Closure) + = One or more times (Postive Closure) ? = muncul sekali atau tidak sama sekali + = atau . = dan | = alternatif () = operator pembatas
May write as Backus Naur Form (BNF)<Sentence> :: =<subject> <predicate><subject> ::= <noun> <adjective><noun> ::= cat<adjective> ::= black<predicate>::=<verb><noun><verb> ::=catch<noun>::= mouse
The derivative of a complete sentence :• <sentence> <subject> <predicate>
<noun> <adjective> <predicate>
cat <adjective> <predicate>
black cat <verb> <object/noun>
black cat catch <object/noun>
black cat catch a mouse
contoh :
– x* = | x | xx | xxx | ... = | x1 | x2 | x3 | ...
– 1* = { , 1, 11, 111, 1111, 11111, …}
– 1+ = { 1, 11, 111, 1111, 11111, …}
– (1100)* = { , 1100, 11001100, 110011001100,…}
– (00+11)* = { , 00, 11, 0000, 0011, 1100, 1111, 000000, 000011, 001100, …}
Regular Expression (RE) adalah ekspresi sederhana untuk bahasa atau language yang diterima oleh FA/NFA.
- : RE which shows as “Empty Set”.- : RE which shows as { }- For every a , a : RE shows as {a}
If r and s are RE for languageR and S, then :
r + s : RE for R Sr s : RE for RSr* : RE for R*
- Contoh RE : 00 : RE for {00} (0 + 1)* : RE for set of string, consisting of 0 and 1 (0 + 1)*00(0 + 1)* : includes 00, 10010, 010011, … (1 + 10)* : includes , 1, 11, 110, 111, … (01)*011 : includes 011, 0011, 1011, 10011, … (aaabbabb)* : includes , aa, ba, aabb,… (ab)(ab)(ab)(ab)* : includes aaa, abba,…
Characteristic of Regular Expression:Example : r, s and t are RE.
1. r + s = s + r2. (r+s) + t = r + (s+t)3. (rs) t = r (st)4. rs + rt = r (s+t)5. +r = r+ = r6. r = r =
7. r = r = r8. r + r = r9. 9. (r*)* = r*10. * = 11. * = 12. r? = + r (definition of operator ?)
13. (r*s*)* = (r+s)
SESSION 3 – DETERMINISTIC FINITE AUTOMATA (DFA) & NON-DETERMINISTIC FINITE AUTOMATA (NFA)
Formal Definition dari FINITE AUTOMATA :
- M = (Q, , , q0, F)- where :
Q : Set of state
: Alphabet input
: Q : Transition function
q0 Q : start / initial state
F Q : Set of final state
Contoh :
Tuples of DFA are:Set of State (Q) : q0, q1, q2, q3
Start state : q0
Final state (F) : q0 {Double circle}Alphabet input () : {0, 1}
State 0 1
q0
q2
q1
q1
q3
q0
q2
q0
q3
q3
q1
q2