Teknik Kompilasi

10
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.

description

Teknik Kompilasi

Transcript of Teknik Kompilasi

Page 1: 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

Page 2: Teknik Kompilasi

- 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

Page 3: Teknik Kompilasi

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

Page 4: Teknik Kompilasi

• 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.

Page 5: Teknik Kompilasi

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>

Page 6: Teknik Kompilasi

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

Page 7: Teknik Kompilasi

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 ?)

Page 8: Teknik Kompilasi

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

Page 9: Teknik Kompilasi