• Tidak ada hasil yang ditemukan

Pengenalan kompilasi dan chomsky1

N/A
N/A
Protected

Academic year: 2018

Membagikan "Pengenalan kompilasi dan chomsky1"

Copied!
24
0
0

Teks penuh

(1)

Pengenalan Kompilasi &

Klasifikasi Tatabahasa Formal

menurut Chomsky

By

Kustanto,S.T.,M.Eng

(2)

Pengenalan

Kompilasi pertemuan 2

Pendahuluan

Tujuan Pembelajaran :

1. Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler. 2. Mahasiswa memahami konsep pembuatan sebuah Compiler.

(3)

Pengenalan

Kompilasi pertemuan 3

1. Bahasa Pemrograman

Bahasa Pemrograman

Bahasa mesin

Bahasa Assembly

Bahasa Tingkat tinggi

(4)

Pengenalan

Kompilasi pertemuan 4

Bahasa mesin merupakan bentuk terendah dari bahasa komputer. Instruksi direpresentasikan dalam

kode numerik.

Bahasa Assembly merupakan bentuk simbolik dari bahasa mesin. Kode

misalnya ADD, MUL, dsb

Bahasa tingkat tinggi

(user oriented) lebih banyak memberikan fungsi

kontrol program, block, dan prosedur.

Bahasa problem oriented sering juga dimasukkan sebagai

bahasa tingkat tinggi, misalnya SQL, Myob, dsb.

(5)

Pengenalan

Kompilasi pertemuan 5

2. Translator

Translator melakukan pengubahan source code / source program kedalam target code / object code

Interpreter dan Compiler termasuk dalam kategori translator.

Translator

Interpreter

Compiler

 Tidak membangkitkan object code.

Source code dan data diproses bersamaan.

 Contoh: BASICA, SPSS, DBASE III.

Source Code adalah bahasa tingkat tinggi.

Object Code adalah bahasa mesin atau assembly.

Source code dan data diproses tidak bersamaan.

 Contoh: PASCAL, C.

Assembler

Source Code adalah bahasa Assembly

Object Code adalah bahasa mesin.

(6)

Pengenalan

Kompilasi pertemuan 6

Interpreter

Analisa Leksikal

Analisa Sintaks

Intermediate

Program Interpretasi

Pengelolaan Tabel Program

Sumber

Penanganan Kesalahan

(7)

Pengenalan

Kompilasi pertemuan 7

Assembler

Source Code adalah bahasa Assembler, Object Code adalah bahasa Mesin. Object Code dapat berupa file object (.OBJ), file .EXE, atau file .COM

Contoh : Turbo Assembler (dari IBM) dan Macro Assembler (dari Microsoft).

Source

Code Assembler Object Code

File Target Lingker

.ASM .OBJ .EXE / .COM

(8)

Pengenalan

Kompilasi pertemuan 8

Compiler

Compiler

Definisi : Kompilator (compiler) adalah sebuah program yang membaca suatu program yang ditulis Dalam suatu bahasa sumber (source language) dan menterjemahkannya kedalam suatu bahasa sasaran (target language).

Proses kompilasi dapat digambarkan melalui sebuah blok diagram sebagai berikut :

Program sumber Bahasa sasaran

Pesan-pesan kesalahan (error messages)

Proses Kompilasi dikelompokkan kedalam dua kelompok besar :

1. Analisa : Program sumber dipecah-pecah dan dibentuk menjadi bentuk antara (Intermediate Representation ).

(9)

Pengenalan

Kompilasi pertemuan 9

Penganalisa Leksikal (scanner) Penganalisa Sintaks (parser) Penganalisa Semantik Pembangkit Kode antara Pembentuk kode Pengoptimal kode Program Sumber Program

Sumber ProgramSasaran

Program Sasaran TABEL SIMBOL TABEL SIMBOL ANALISA SINTESA

(10)

10

Proses kompilasi dikelompokkan menjadi :

Analisa

: program sumber dipecah-pecah dan

dibentuk menjadi bentuk antara

(

intermediate presentation

)

Sintesa

: membangun program sasaran yang

(11)

11

Contoh skema penerjemaham suatu ekspresi dalam

bahasa sumber, yaitu : position := initial + rate * 60

penganalisa semantik

Pembangkit kode

pengoptimal kode

position := initial + rate * 60

penganalisa sintaks

(parser)

penganalisa leksikal (scanner)

Id1 : = id2 + id3 * 60

id3 + : =

id1

id2 *

60 + : = id1 id3 id2 * intoreal 60 pembangkit kode antara

temp1 := inttoreal(60) temp2 := id3 * temp1 temp3 := id2 + temp2

id1 := temp3

temp1 := id3 * 60.0 id1 := id2 + temp1

MOVF id3. R2 MULF #60.0, R2

(12)

12

Keterangan:

id adalah token untuk

identifier

. Tiga

lexeme

untuk token ini adalah

position, initial, dan rate.

Penganalisa semantik secara logika membangkitkan pohon parse.

Penganalisa semantik mendeteksi

mismatch type.

Perbaikan dilakukan

dengan memanggil

procedure

inttoreal yang mengkonversi integer ke

real.

Quadruples dari :

temp2 := id3 * temp1

adalah

(*,id3,temp1,temp2),

id := temp 3

adalah

(assign,temp3,-,id1), temp1:=inttoreal(60)

adalah

(intoreal,60,-,temp1).

Pembangkit kode dalam contoh ini menghasilkan kode dalam bahasa

(13)

Pengenalan

Kompilasi pertemuan 13

1. Program Sumber ditulis dalam bahasa sumber, misal Pascal, Assembler, dsb.

2. Program Sasaran dapat berupa bahasa pemrograman lain atau bahasa mesin pada suatu komputer.

3. Scanner : Memecah program sumber menjadi besaran leksik/token. 4. Parser : Memeriksa kebenaran dan urutan kemunculan token.

5. Penganalisa semantik : Melakukan analisa semantik, biasanya dalam realisasi akan digabungkan Dengan intermediate code generator (bagian yang berfungsi

membangkitkan kode antara).

6. Pembentuk Kode : Membangkitkan kode objek

7. Pengoptimal Kode : Memperkecil hasil dan mempercepat proses.

8. Tabel : Menyimpan semua informasi yang berhubungan dengan proses kompilasi.

(14)

Konsep dan notasi bahasa 14 Unrestricted Cotext Sensitive Kontext free regular

Hirarki

Chomsky

Type Grammar Kelas Bahasa Mesin Pengenal Bahasa

Unrestricted Grammar

(UG)/type-0 Unrestricted Mesin Turing (TM Turing Machine),

Context Sensitive Grammar

(CSG)/type-1 Context Sensitive Linear Bounded Automaton, LBA Context Free Gammar

(CFG)/type-2 Context Free Automata Pushdown (Automata), PDA Pushdown

Regular Grammar (RG)/type-3 Regular Automata Hingga (Finite Automata)

Mesin Pengenal bahasa

Kelas

Bahasa

Catatan :

(15)

CFG / Tata Bahasa Bebas Konteks

 Pada tata bahasa bebas konteks tidak terdapat pembatasan hasil produksinya.

Batasan ruas kiri adalah sebuah simbol variabel.

Contoh :

CFG : B → CDeFg D → BcDe

 Pada bhs regular, bagian yg belum terturunkan tsb selalu terjadi pd suatu ujung.

 Pada bhs bebas konteks/CFG bisa terdapat lebih banyak bagian yg belum

terturunkan itu, dan bisa terjadi dimana saja.

 Bhs bebas konteks menjadi dasar dlm pembentukan suatu parser / proses

(16)

 Tree : suatu graph terhubung tidak sirkuler, yg memiliki satu simpul

(node) / vertex disebut akar (root) dan situ memiliki lintasan setiap simpul.

 Pohon penurunan berguna untuk menggambarkan bagaimana

memperoleh suatu string (untai) dgn cara menurunkan simbol2 variabel mjd simbol2 terminal sampai tdk ada yg belum tergantikan.

Misal : Bhs bebas konteks S → AB

(17)

Digambar pohon penurunan utk untai : ‘aabbb’ S

A B

b A

a B

a b B

b

Simbol awal menjadi root.

Setiap kali penurunan dipilih

aturan produksi yg menuju ke solusi.

Bhs bebas konteks S → AB

(18)

Proses penurunan / parsing :

Penurunan terkiri / leftmost derivation :

simbol variabel paling kiri yg diperluas

terlebih dulu.

Penurunan terkanan / rightmost

(19)

CONTOH :

S → aAS | a A → SbA | ba

Untuk memperoleh untai :’aabbaa’

 Penurunan terkiri : S → aAS → aSbAS → aabAS → aabbaS → aabbaa

 Penurunan terkanan : S → aAS → aAa → aSbAa → aSbbaa → aabbaa

S

a A S

S b A a

(20)

Tugas :

S → aB | bA

A → a | aS | bAA B → b | bS | aBB

(21)

AMBIGUITAS

Terjadi bila terdapat lebih dari 1 pohon penurunan yg berbeda utk memperolah suatu untai.

Contoh :

S → A | B A → a B → a

Utk untai : ‘a’ terdapat 2 cara penurunan : S → A → a

(22)

S → SbS | ScS | a

Utk untai : ‘abaca’ terdapat 2 cara penurunan : S → SbS → abS → abScS → abacS → abaca S → ScS → SbScS → abScS → abacS → abaca

S

S b S

a S c S

a a

S

S c S

S b S

a a

(23)

Tugas :

S → aAd | aB A → b | c B → ccd | ddc

Utk memperoleh untai : ‘accd’

Buktikan bahwa tata bahasa bebas konteks berikut ambigu : S → aB | bA

A → a | aS | bAA B → b | bS | aBB

(24)

Selesai

Pengenalan Kompilasi pertemuan

ke 2 24

Referensi

Dokumen terkait

Kompilator adalah suatu program atau sekelompok program yang menerjemahkan kode dalam satu bahasa ke bahasa lainnya, pada umumnya adalah dari bahasa komputer tingkat tinggi

Salah satu compiler program yang umum digunakan sekarang ini adalah CodeVision AVR yang menggunakan bahasa pemrograman C.CodeVision AVR mempunyai suatu keunggulan dari compiler

Terlepas dari pengertiannya yang demikian relatif luas, istilah kompilator biasa digunakan untuk program komputer yang menerjemahkan program yang ditulis dalam bahasa

• Compiler/interpreter akan mentranslasi kode program dalam bahasa pemrograman tertentu menjadi bentuk yang dipahami oleh komputer..

Membaca adalah suatu cara untuk mendapatkan informasi dari sesuatu yang ditulis.. Membaca melibatkan pengenalan simbol yang menyusun sebuah

Assembler adalah program yang menerjemahkan program yang ditulis dalam bahasa assembly ke dalam bahasa mesin, yang dapat dieksekusi oleh komputer.. Setiap tipe

Pada tahap analisis, program yang ditulis dalam bahasa sumber dibagi dan dipecah ke dalam beberapa bagian, yang kemudian direpresentasikan kedalam suatu bentuk antara dari program

The translation process can be illustrated as follows: High level Input , Language 7 program Source program Compiler One - to - many Translation Machine Output , 7 Language