TEORI BAHASA & OTOMATA ( PENGENALAN KOMPILASI )

Post on 02-Jan-2016

170 views 8 download

description

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. - PowerPoint PPT Presentation

Transcript of TEORI BAHASA & OTOMATA ( PENGENALAN KOMPILASI )

TEORI BAHASA & OTOMATA

(PENGENALAN KOMPILASI)

PERTEMUAN V & VIY A N I S U G I Y A N I

MATERI PERTEMUAN V & VIPENGENALAN KOMPILASIPERTEMUAN V- BAHASA PEMROGRAMAN- TRANSLATOR- MODEL KOMPILATORPERTEMUAN VI- ANALISIS LEKSIKAL- ANALISIS SINTAKS

BAHASA PEMROGRAMAN

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

BAHASA PEMROGRAMANHirarki 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

Program Sumber (Source Program)

Translator Program Objek (Target Program)

Bahasa Rakitan Assembly Bahasa Mesin

Source Languages Objek Languages

TRANSLATORWaktu 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

Program Sumber

Program Objek

Hasil

Kompilator

Komputer pelaksana

Data

Waktu kompilasi

Waktu pelaksanaan

TRANSLATOR

Translator yang mentransformasikan suatu bahasa tingkat tinggi ke dalam bahasa mesin komputer atau ke bahasa rakitan adalah Kompilator / compileInterpreter

MODEL KOMPILATOR

Analisis

Program Sumber

Scanner Parser Semantik Pembentuk Kode

Pengoptimal Kode

Program Objek

Sintesis

Tabel

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 SINTAKSBerfungsi 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 SINTAKSDalam 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 SEMANTIKBerfungsi memberi arti dari

program sumberPenganalisis 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, T1)( + , C, D, T2)( * , T1, T2, T3)

dapat diartikan :( + , A, B, T1) Menambah A dengan B dan menempatkan hasilnya sementara sebagai

T1 ( + , C, D, T2) Menambah C dengan D dan menempatkan hasilnya sementara sebagai

T2 ( * , T1, T2, T3) Mengalikan T1 dengan

T2 dan menempatkan hasilnya di T3

Sebuah ekspresi Infix dapat dikonversikan ke bentuk intermediate yang disebut notasi polish. Sebuah ekspresi infix (A+B)*(C+D) dapat dikonversikan sehingga ekivalen dengan suffix-polish (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 akumulator-tunggal bahasa rakitan (single-accumulator assembly language) berikut :

LDA A Panggil (LOAD) isi A, masukkan ke dalam

akumulatorADD B Tambahkan (ADD) isi B

ke dalam AkumulatorSTO T1 Simpan (STORE) isi

akumulator ke dalam penyimpanan sementara T1

LDA C Panggil (LOAD) isi C, masukkan ke dalam

akumulatorADD D Tambahkan (ADD) isi D

ke dalam AkumulatorSTO T2 Simpan (STORE) isi

akumulator ke dalam penyimpanan sementara T2

LDA T1 Panggil (LOAD) isi T1, masukkan ke dlm

akumulatorMUL T2 Kalikan (MULTIPLY) isi T2

dengan isi akumulatorSTO T3 Simpan (STORE) isi

akumulator ke dlm penyimpan

sementara T3