TEORI BAHASA OTOMATA PENGENALAN KOMPILASI PERTEMUAN V VI

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN V & VI Y A N I S U G I Y A N I

MATERI PERTEMUAN V & VI PENGENALAN KOMPILASI PERTEMUAN V - BAHASA PEMROGRAMAN - TRANSLATOR - MODEL KOMPILATOR PERTEMUAN VI - ANALISIS LEKSIKAL - ANALISIS SINTAKS

BAHASA PEMROGRAMAN �Berfungsi untuk melayani, sebagai suatu alat komunikasi antara kita dengan masalah yang akan kita selesaikan.

BAHASA PEMROGRAMAN Hirarki atau tingkatan dari bahasa pemrograman berdasarkan pada peningkatan kebebasan mesin adalah sebagai berikut : �Bahasa mesin (machine – level languages) �Bahasa rakitan (Assembly languages) �Bahasa tingkat tinggi atau bahasa user oriented (higher level languages atau user oriented languages) �Bahasa berorientasi masalah (problem – oriented languages)

TRANSLATOR

TRANSLATOR �Waktu yang digunakan untuk mengkonversikan suatu program sumber ke program objek disebut waktu kompilasi (compile time) �Program objek dijalankan dalam waktu yang disebut waktu pelaksanaan atau run time

TRANSLATOR Waktu kompilasi Waktu pelaksanaan

TRANSLATOR Translator yang mentransformasikan suatu bahasa tingkat tinggi ke dalam bahasa mesin komputer atau ke bahasa rakitan adalah �Kompilator / compile �Interpreter

MODEL KOMPILATOR

SCANNER / ANALISIS LEKSIKAL �Memisahkan naskah program sumber yang masuk, menjadi bagian leksikografis terkecil atau token, misal : konstanta, nama variabel, kata kunci dan operator.

PARSER / ANALISIS SINTAKS �Berfungsi menerima program sumber (dalam bentuk barisan token) dari penganalisis leksikal dan selanjutnya penganalisis sintaks ini akan menentukan struktur secara keseluruhan dari program sumber. �Proses terakhir ini analog dengan menentukan struktur dari suatu kalimat dalam bahasa inggris.

PARSER / ANALISIS SINTAKS �Dalam analisis sintaks kita memandang kelompok token sebagai kelas sintaks yang lebih besar seperti ekspresi, statemen dan prosedur �Penganalisis sintaks akan menganalisis pohon sintaks atau sejenisnya �Simpul daun merupakan token dan setiap simpul yang bukan daun mewakili suatu tipe kelas sintaks yang dikenal sebagai simbol non terminal atau variabel

ANALISIS SEMANTIK �Berfungsi memberi arti dari program sumber �Penganalisis semantik harus menentukan aksi apa yang dilakukan oleh operator aritmatika ketika parser mengenali sebuah operator, parser memanggil rutin semantik – routine yang akan menggolongkan aksi yang akan dikerjakan

Contoh : Ekspresi : (A+B) * (C+D) Bentuk intermediate dari kode sumber berbentuk kuadrupel seperti ( + , A, B, T 1) ( + , C, D, T 2) ( * , T 1, T 2, T 3)

dapat diartikan : ( + , A, B, T 1) Menambah A dengan B dan menempatkan hasilnya sementara sebagai T 1 ( + , C, D, T 2) Menambah C dengan D dan menempatkan hasilnya sementara sebagai T 2 ( * , T 1, T 2, T 3) Mengalikan T 1 dengan T 2 dan

�Sebuah ekspresi Infix dapat dikonversikan ke bentuk intermediate yang disebut notasi polish. Sebuah ekspresi infix (A+B)*(C+D) dapat dikonversikan sehingga ekivalen dengan suffixpolish (postfix-polish) AB+CD+*.

�Output dari penganalisis semantik dikirim ke pembentuk kode (code generator). Pada saat itu bentuk intermediate program sumber, biasanya diterjemahkan ke dalam bahasa rakitan (assembly language) ataupun ke dalam bahasa mesin (machine language)

Contoh : Bentuk kuadrupel diatas, dapat menghasilkan barisan alamat-tunggal (sinle address), intruksi akumulatortunggal bahasa rakitan (singleaccumulator assembly language) berikut :

LDA A Panggil (LOAD) isi A, masukkan ke dalam akumulator ADD B Tambahkan (ADD) isi B ke dalam Akumulator STO T 1 Simpan (STORE) isi akumulator ke dalam penyimpanan sementara T 1

LDA C Panggil (LOAD) isi C, masukkan ke dalam akumulator ADD D Tambahkan (ADD) isi D ke dalam Akumulator STO T 2 Simpan (STORE) isi akumulator ke dalam penyimpanan sementara T 2

LDA T 1 Panggil (LOAD) isi T 1, masukkan ke dlm akumulator MUL T 2 Kalikan (MULTIPLY) isi T 2 dengan isi akumulator STO T 3 Simpan (STORE) isi akumulator ke dlm penyimpan sementara T 3
- Slides: 21