Materi Kuliah Teknik Kompilasi

download Materi Kuliah Teknik Kompilasi

of 46

description

enjadi suatau keharusan bagi ... Makalah pada Mata Kuliah Pengelolaan Instalasi Komputer dengan begitu, para ...

Transcript of Materi Kuliah Teknik Kompilasi

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    1/46

    MATERI

    TEKNIK KOMPILASI

    NAMA : AKBAR NURDINNPM : 2011020210JURUSAN : TEHNIK INFORMATIKA

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    2/46

    T U J U A N Mengetahui Penerapan konsep ilmu komputer pada

    perilaku komputer yaitu algoritma, arsitektur

    komputer, stuktur data maupun penerapan teori bahasa

    dan automata

    Compiler adalah merupakan konstruksi inti dari ilmu

    komputer

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    3/46

    Materi Pendahuluan: arti dari Kompilasi

    Pengertian: Compiler dan interpreter Bahasa Pemrograman

    Pembuatan Compiler

    Konsep bahasa dan Notasi

    Hirarki Comsky

    Beberapa translator

    Struktur Compiler Aturan Produksi

    Diagram state

    Diagram Syntax

    Kualitas Compiler

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    4/46

    ARTI KATA TEKNIK KOMPILASI

    Teknik : Metode atau Cara

    Kompilasi : Proses mengabungkan serta menterjermahkan

    sesuatu (source program) menjadi bentuk lain

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    5/46

    Pengertian : Compiler & Interpreter

    Translator : Adalah suatu program dimana mengambil input

    sebuah program yang ditulis pada satu bahasaprogram (source language) ke bahasa lain (Theobject on target language)

    Jika source language adalah high level language,seperti cobol, pascal, fortran maka object languageadalah low-level language atau mesin language.Translator seperti ini disebut COMPILER

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    6/46

    Ada Beberapa Translator1. Assembler

    Source code adalah bahasa assembly, Object code

    adalah bahasa mesin

    2. Compiler

    Source code adalah bahasa tingkat tinggi, object code

    adalah bahasa mesin atau bahasa assembly. Source

    code dan data diproses berbeda

    *.asm Assembler Object code*.exe /*.com

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    7/46

    3. Interpreter

    Interpreter tidak menghasilkan bentuk object code, tetapi

    hasil translasinya hanya dalam bentuk internal, dimana

    program induk harus selalu ada-berbeda dengan compiler

    Source codeTranslator Hasil

    Data

    HasilSourcecode Execution

    DataCompiler

    Object Code

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    8/46

    Translator : Compiler & Interpreter

    OBJECTPROGRAMSourceProgram Compiler

    ERROR

    MESSAGES

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    9/46

    COMPILER vs INTERPRETER Compiler bisa menangkap berbagai kesalahan dalam 1 programkode sumber secara sekaligus. Kalau Interpreter cuma bisamenangkap beberapa kesalahan pada 1 baris kode sumber padasuatu saat

    Biasanya program yang dihasilkan compiler lebih cepat dariwaktu pelaksanaan program dengan interpreter.

    Kalau compiler menghasilkan kode antara (misal object code)dan harus digabungkan / dilink menjadi bentuk yang dapat

    dijalankan mesin / komputer (executable). Kalau Interpreterbiasanya tidak menghasilkan kode antara.

    Kalau hendak menjalankan program hasil kompilasi bisadilakukan tanpa kode sumber. Kalau interpreter butuh kodesumber.

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    10/46

    COMPILER vs INTERPRETER Kalau dengan kompiler, maka pembuatan kode yang bisa dijalankan

    mesin dilakukan dalam 2 tahap terpisah, yaitu parsing / pembuatankode objek dan linking / penggabungan kode objek dengan library.Kalau interpreter tidak ada proses terpisah.

    Kalau compiler membutuhkan linker untuk menggabungkan kodeobjek dengan berbagai macam library demi menghasilkan suatukode yang bisa dijalankan oleh mesin. Kalau interpreter tidak butuhlinker.

    Interpreter cocok untuk membuat / menguji coba modul / sub-routine / program-program kecil. Kalau compiler agak repot karenauntuk mengubah suatu modul / kode objek kecil, maka harus

    dilakukan proses linking / penggabungan kembali semua objekdengan library yang diperlukan.

    Pada kompiler bisa dilakukan optimisasi / peningkatan kwalitaskode yang bisa dijalankan. Ada yang dioptimasi supaya lebih cepat,ada yang supaya lebih kecil, ada yang dioptimasi untuk sistemdengan banyak processor. Kalau interpreter susah / tidak bisa

    dioptimasikan.

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    11/46

    Proses kompilasi dikelompokkan kedalam dua kelompok besar :

    1. analisa : program sumber dipecah-pecah dan dibentuk menjadibentuk antara (inter-mediaterepresentation)

    2. sintesa : membangun programsasaran yang diinginkan daribentuk antara

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    12/46

    Fase-fase proses sebuah kompilasi

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    13/46

    Penganalisa Leksikal membaca program sumber, karakter demi

    karakter. Sederetan (satu atau lebih) karakter

    dikelompokkan menjadi satu kesatuan mengacukepadapola kesatuan kelompok karakter (token)

    yang ditentukan dalambahasa sumber. Kelompokkarakter yang membentuk sebuah token

    dinamakan lexemeuntuk token tersebut. Setiaptoken yang dihasilkan disimpan di dalam tabelsimbol. Sederetan karakter yang tidak mengikutipola token akan dilaporkan sebagai token takdikenal (unidentified token)

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    14/46

    Penganalisa Sintaks

    memeriksa kesesuaianpola deretan tokendengan aturan sintaks yang ditentukan dalam

    bahasa sumber. Sederetan token yang tidakmengikuti aturan sintaks akan dilaporkansebagai kesalahan sintaks (sintax error). Secara

    logika deretan token yang bersesuaian dengansintaks tertentu akan dinyatakan sebagai pohonparsing (parse tree)

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    15/46

    Penganalisa Semantik memeriksa token dan ekspresi dari batasan-

    batasan yang ditetapkan. Batasan-batasan

    tersebut misalnya :a. panjang maksimum token identifier adalah 8

    karakter,b. panjang maksimum ekspresi tunggal adalah 80

    karakter,c. nilai bilangan bulat adalah -32768 s/d 32767,d. operasi aritmatika harus melibatkan operan-

    operan yang bertipe sama

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    16/46

    Pembangkit Kode Antara membangkitkan kode antara (intermediate code) berdasar-

    kan pohon parsing. Pohon parse selanjutnyaditerjemahkan oleh suatu penerjemah yang dinamakan

    penerjemah berdasarkan sintak (syntax-directedtranslator). Hasil penerjemahan ini biasanya merupakan

    perintah tiga alamat (three-address code) yangmerupakan representasi program untuk suatu mesinabstrak. Perintah tiga alamat bisa berbentuk quadruples(op, arg1, arg2, result), tripels (op, arg1, arg2). Ekspresidengan satu argumen dinyatakan dengan menetapkanarg2 dengan - (strip, dash)

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    17/46

    Pengoptimal kode

    melakukan optimasi (penghematan space danwaktu komputasi), jika mungkin, terhadap kode

    antara

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    18/46

    Pembangkit Kode Mesin

    membangkitkan kode dalam bahasa targettertentu (misalnya bahasa mesin)

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    19/46

    Contoh

    Kompilasi

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    20/46

    Pembuatan compilerBahasa mesin

    Sangat sukar dan sangat sedikit kemungkinannya untukmembuat compiler dengan bahasa ini, karena manusiasusah mempelajari bahasa mesin,

    Sangat tergantung pada mesin,

    Bahasa Mesin kemungkinan digunakan pada saatpembuatan Assembler

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    21/46

    Pembuatan compiler

    Assembly

    Hasil dari program mempunyai Ukuran yang relatif kecil

    Sulit dimengerti karena statement/perintahnya singkat-singkat, butuh usaha yang besar untuk membuat

    Fasilitas yang dimiliki terbatas

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    22/46

    Pembuatan compilerBahasa Tingkat Tinggi (high level language)

    Lebih mudah dipelajari

    Fasilitas yang dimiliki lebih baik (banyak)

    Memiliki ukuran yang relatif besar, misal membuat compilerpascal dengan menggunakan bahasa C

    Untuk mesin yang berbeda perlu dikembangkan tahapan-tahapan tambahan.

    Misal membuat compiler C pada Dos bedasarkan compiler Cpada unix

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    23/46

    Pembuatan compiler

    BootStrap

    Untuk membangun sesuatu yang besar,dibangun/dibuat dulu bagian intinya (niklausWirth - saat membuat pascal compiler)

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    24/46

    BootStrap

    PO dibuat dengan assembly,

    P1 dibuat dari P0, dan

    P2 dibuat dari P1, jadi compiler untuk

    bahasa P dapat dibuat tidak harus

    dengan menggunakan assembly secara

    keseluruhan

    Po

    P1

    P2

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    25/46

    Contoh dari source program ke dalamkode mesinSource code Assembly Language Machine language

    IF COUNT =10 Compare A to B Compare 3477 2883

    GOTO DONE If equal go to C If = go to 23883ELSE Go to D Go to 23343

    GOTO AGAIN

    ENDIF

    Actual machine code

    10010101001010001010100

    10101010010101001001010

    10100101010001010010010

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    26/46

    BAHASA SUMBER

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    27/46

    DEFINISIbahasa sumber

    Bahasa adalah kumpulan kalimat. Kalimat adalahrangkaian kata. Kata adalah unit terkecil komponenbahasa yang tidak bisa dipisah-pisahkan lagi.

    Kalimat-kalimat : Seekor kucing memakan seekor tikus.dan Budi menendang sebuah bola.adalah dua contohkalimat lengkap Bahasa Indonesia. A cat eats a mousedan Budi kick a ball. adalah dua contoh kalimat lengkapBahasa Inggeris. if a2 < 9.0 then b2 := a2+a3;dan for i:= start to finish do A[i] := B[i]*sin(i*pi/16.0). adalah

    dua contoh kalimat lengkap dalam Bahasa PemrogramanPascal.

    Dalam bahasa pemrograman kalimatlebih dikenalsebagai ekspresi sedangkan katasebagai token

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    28/46

    Bahasa Tingkat Tinggi (Pemrograman ) Bahasa yang lebih dikenal oleh manusia, maksudnya adalah

    statementyang digunakan menggunakan bahasa yang dipakai oleh

    manusia (inggris),

    Bahasa pemrograman didefinisikan dengan menentukan bentukprogramnya (sintak) dan arti programnya (semantik)

    Memberikan fasilitas yang lebih banyak, seperti struktur kontrol

    program yang terstruktur, blok-blok serta prosedur dan fungsi-

    fungsi

    Progam mudah untuk di koreksi (debug) Tidak tergantung pada salah satu mesin

    Kontrol struktur seperti : kondisi (if .. Then.. Else ), perulangan

    (For, while ), Struktur blok (begin.. End { .. } )

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    29/46

    Tingkatan Bahasa Pemrograman

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    30/46

    Sumber perancangan bahasa

    Konstruksi yang diturunkan dari bahasa alami,karena bahasa alami dapat digunakan sebagai

    panduan untuk perancangan sintaks Matematika, misal untuk perancangan operasi

    aritmatika

    Bahasa pemrograman yang sudah ada.

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    31/46

    Tujuan perancangan bhs program Komunikasi dengan manusia

    Pencegahan dan deteksi kesalahan

    Usability Efektifitas pemrograman

    Compilability (mengurangi

    kompleksitas,mis:penggunaan bracket) Efisiensi dengan meminimalisirketidakcocokan antara hardware denganbahasa

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    32/46

    Tujuan perancangan bhs program(2)

    Machine independent

    Simplicity :penyederhanaan komponenbahasa program

    Orthogonality : kumpulan primitive yangdikombinasikan dengan berbagai cara

    dalam membangun kontrol dan strukturdata dalam bahasa program

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    33/46

    Struktur Ekspresi

    Metode pengurutan evaluasi dalam ekspresi :

    Explicit Bracketing

    Operator binding

    Binding adalah asosiasi antara atribut danentity atau antara operasi dan simbol.

    Binding time adalah waktu yang dialokasikanuntuk menyatukan variable dengan nilainya.

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    34/46

    Struktur DataEmpat aspek dalam struktur data

    Deklarasi data

    Tipe data yang tersedia Alokasi storage

    Lingkup variabel

    34

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    35/46

    Struktur I/O Format free

    langsung ditampilkan sehingga mudah bagi

    user untuk memeriksa kebenaran program.Contoh pada VB.

    Formatted

    output ditampilkan secara terformat, seperti

    di C : printf(), delphi/VB : format()

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    36/46

    SKENARIO PERANCANGAN1. Tentukan apa yang diinginkan.

    2. Tentukan feature yang mungkin

    3. Tentukan desain dan sesuaikan dengan featurenya

    4. Tentukan rincian, parsing, dan error checking.

    5. Tuliskan user manual dan help.

    6. Evaluasilah, jika salah mulai lagi dari langkah 3.

    7. Jika sudah benar, optimisasilah dan uji segalakemungkinan.

    8. Cobakan kepada pengguna, tunggu reaksinya.

    9. Perbaiki bug dan mulai versi baru.

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    37/46

    KONSEP

    dan NOTASI BAHASA

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    38/46

    Konsep dan Notasi bahasa Teknik Kompilasi merupakan kelanjutan dari konsep-konsep yang

    telah kita pelajari dalam teori bahasa dan automata

    Thn 56-59 Noam chomsky melakukan penggolongan tingkatan dalam

    bahasa, yaitu menjadi 4 class

    Penggolongan tingkatan itu disebut dengan hirarki Comsky

    1959 Backus memperkenalkan notasi formal baru untuk syntax

    bahasa yang lebih spesifik

    Peter Nour (1960) merevisi metode dari syntax. Sekarang dikenal

    dengan BNF (backus Nour Form)

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    39/46

    Konsep dan Notasi bahasa Tata bahasa (grammar) adalah sekumpulan dari

    himpunan variabel-variabel, simbol-simbol terminal,

    simbol non-terminal, simbol awal yang dibatasi oleh

    aturan-aturan produksi

    Aturan produksi adalah pusat dari tata bahasa yang

    menspesifikasikan bagaimana suatu tata bahasa

    melakukan transformasi suatu string ke bentuk lainnya

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    40/46

    Konsep dan Notasi bahasa

    Syntax : suatu aturan yang memberitahu apakah

    sesuatu kalimat (string) adalah valid dalam

    program atau tidak

    Semantic : suatu aturan-aturan yang

    memberikan arti kepada program

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    41/46

    Penggolongan ChomskyBahasa Mesin Automata Aturan Produksi

    Konsep dan Notasi bahasa

    Tipe 3AtauRegular

    Finite state automata (FSA)meliputi; deterministicFinite Automata (DFA) &

    Non Deterministic Finite

    Automata (NFA)

    adalah simbol variabel

    maksimal memiliki sebuah

    simbol variabel yang bila ada

    terletak diposisi paling kanan

    Tipe 2AtauContex Free

    Push Down Automata adalah simbol variabel

    Tipe 1 Atau

    Contex Sensitive

    Linier Bounded Automata ||

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    42/46

    Keterangan menyatakan simbol simbol yang berada diruas kiri aturan produksi

    menyatakan simbol simbol yang berada diruas kanan aturan produksi

    Simbol-simbol terdiri dari simbol terminal dannon terminal/variabel (masih bisa diturunkan

    lagi) Simbol terminal biasanya dinyatakan denganhuruf kecil, sementara non terminal denganhuruf besar

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    43/46

    Aturan Produksi Tipe O / Unrestricted: Tidak Ada batasan pada aturan produksi

    AbcDe

    Tipe 1 / Context sensitive: Panjang string ruas kiri harus lebih kecil atau sama

    dengan ruas kanan

    AbDeFCDeF

    Tipe 2 / Context free grammar: Ruas kiri haruslah tepat satu simbol variable

    BCDeFg

    DBcDe

    Tipe 3 / Regular: Ruas kanan hanya memiliki maksimal 1 simbol non

    terminal dan diletakkan paling kanan sendiriAeAefgAefgHCD

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    44/46

    Aturan produksi yang tidak legal !!!

    Simbol Etidak boleh berada pada

    ruas kiri

    misal EAbd

    Aturan produksi yang ruas kirinyahanya memuat simbol terminal saja

    misal : abd atau abbd

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    45/46

    Struktur COMPILER

    Object code

  • 5/28/2018 Materi Kuliah Teknik Kompilasi

    46/46

    Keterangan Lexical Analyzer = scanner, Syntax Analyzer, dan Intermediate Code

    merupakan fungsi Analisis dalam compiler, yang bertugas

    mendekomposisi program sumber menjadi bagian-bagian kecil

    Code generation dan Code optimization adalah merupakan fungsi

    synthesis yang berfungsi melakukan pembangkitan / pembuatan dan

    optimasi program (object program)

    Scanner adalah mengelompok-an program asal/sumber menjadi token

    Parser (mengurai) bertugas memeriksa kebenaran dan urutan dari token-

    token yang terbentuk oleh scanner