kompilasi

14
1 KOMPILATOR (COMPILER) adalah : Sebuah program yang membaca suatu program yang ditulis dalam suatu bahasa sumber (source language) dan menterjemahkannya ke dalam suatu bahasa sasaran (target language).

Upload: aelan

Post on 22-Jan-2016

80 views

Category:

Documents


0 download

DESCRIPTION

KOMPILASI. KOMPILATOR (COMPILER) adalah :. Sebuah program yang membaca suatu program yang ditulis dalam suatu bahasa sumber (source language) dan menterjemahkannya ke dalam suatu bahasa sasaran (target language). Program Sumber. Kompilator. Bahasa sasasaran. Pesan-pesan kesalahan - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: KOMPILASI

11

KOMPILATOR (COMPILER) adalah :

Sebuah program yang membaca suatu program yang ditulis dalam suatu bahasa sumber (source language) dan menterjemahkannya ke dalam suatu bahasa sasaran (target language).

Page 2: KOMPILASI

22

Proses Kompilasi dapat digambarkan melalui Sebuah kotak hitam (black box) berikut :

Program Sumber Kompilator Bahasa sasasaran

Pesan-pesan kesalahan(error messages)

Page 3: KOMPILASI

33

Proses kompilasi dikelompokkan Proses kompilasi dikelompokkan menjadi :menjadi :

AnalisaAnalisa : program sumber dipecah-pecah dan : program sumber dipecah-pecah dan dibentuk menjadi bentuk antara dibentuk menjadi bentuk antara

((intermediate presentationintermediate presentation)) SintesaSintesa : membangun program sasaran yang : membangun program sasaran yang

diinginkan dari bentuk antaradiinginkan dari bentuk antara

Page 4: KOMPILASI

44

Fase-fase proses sebuah Fase-fase proses sebuah kompilasikompilasi : :

pengelola tabel simbol

penanganan kesalahan

penganalisa sintaks (parser)

penganalisa semantik

pembangkit kode antara

penganalisa leksikal (scanner)

pengoptimal kode

pembangkit kode

bahasa sasaran

Page 5: KOMPILASI

55

Hal-hal yang dilakukan oleh setiap fase Hal-hal yang dilakukan oleh setiap fase pada proses kompilasi terhadap pada proses kompilasi terhadap

program sumber :program sumber :

Penganalisa leksikal : :

membaca program sumber, karakter membaca program sumber, karakter demi demi karakter.karakter.

Sederetan karakter dikelompokkan Sederetan karakter dikelompokkan menjadi menjadi satu kesatuan, mengacu kepada satu kesatuan, mengacu kepada pola pola kesatuan kelompok karakterkesatuan kelompok karakter ( (tokentoken) ) yang yang ditentukan dalam ditentukan dalam bahasa bahasa sumbersumber. .

Page 6: KOMPILASI

66

Kelompok karakter yang membentuk Kelompok karakter yang membentuk sebuah sebuah token dinamakan token dinamakan lexemelexeme untuk untuk token token tersebut. tersebut.

Setiap taken yang dihasilkan disimpan Setiap taken yang dihasilkan disimpan di di dalam dalam tabel simboltabel simbol. .

Sederetan karakter yang tidak Sederetan karakter yang tidak mengikuti mengikuti pola token akan dilaporkan pola token akan dilaporkan sebagai sebagai token token tak dikenaltak dikenal ( (unidentified unidentified tokentoken).).

Penganalisa sintaks : :memeriksa kesesuaian pola deretan memeriksa kesesuaian pola deretan

token token dengan aturan sintaks yang dengan aturan sintaks yang ditentukan ditentukan dalam bahasa sumber.dalam bahasa sumber.

Page 7: KOMPILASI

77

Sederetan token yang tidak Sederetan token yang tidak mengikuti aturan mengikuti aturan sintaks akan sintaks akan dilaporkan sebagai dilaporkan sebagai kesalahan kesalahan sintakssintaks ((sintax errorsintax error).).

Secara logika deretan token yang Secara logika deretan token yang bersesuaian dengan sintaks tertentu akan bersesuaian dengan sintaks tertentu akan

dinyatakan sebagai dinyatakan sebagai pohon parsingpohon parsing ((parse parse treetree).).

Penganalisa semantikPenganalisa semantik : :

memeriksa token dan ekspresi dari memeriksa token dan ekspresi dari batasan-batasan- batasan yang ditetapkan.batasan yang ditetapkan.

Page 8: KOMPILASI

88

Batasan-batasan tersebut misalnya :Batasan-batasan tersebut misalnya :

- panjang maksimum token identifier - panjang maksimum token identifier adalah adalah 8 karakter 8 karakter ..

- panjang maksimum ekspresi - panjang maksimum ekspresi tunggal tunggal adalah 80 karakter. adalah 80 karakter.

- nilai bilangan bulat adalah -32768 - nilai bilangan bulat adalah -32768 s/d s/d 32767. 32767.

- operasi aritmatika harus melibatkan - operasi aritmatika harus melibatkan operan-operan yang bertipe operan-operan yang bertipe

sama.sama.

Page 9: KOMPILASI

99

Pembangkit kode antara : :

membangkitkan membangkitkan kode antarakode antara ((intermediate intermediate codecode) berdasarkan pohon ) berdasarkan pohon parsing.parsing.

Pohon parse selanjutnya Pohon parse selanjutnya diterjemahkan oleh diterjemahkan oleh suatu penerjemah yang suatu penerjemah yang dinamakan dinamakan penerjemah berdasarkan penerjemah berdasarkan sintaks (syntax-sintaks (syntax- directed translator).directed translator).

Hasil penerjemahan ini biasanya Hasil penerjemahan ini biasanya merupakan merupakan perintah tiga alamat (tree-perintah tiga alamat (tree-address code) address code) yang merupakan yang merupakan representasi program untuk representasi program untuk suatu mesin suatu mesin abstrak.abstrak.

Page 10: KOMPILASI

1010

Perintah tiga alamat bisa berbentuk :Perintah tiga alamat bisa berbentuk :

quadruples (op, arg1, arg2, result), quadruples (op, arg1, arg2, result), triples triples (op, arg1, arg2).(op, arg1, arg2).

Ekspresi dengan satu argumen Ekspresi dengan satu argumen dinyatakan dinyatakan dengan menetapkandengan menetapkan arg2 arg2 dengandengan – (strip, – (strip, dash)dash)

Pengoptimal kodePengoptimal kode : :

melakukan optimasi (penghematan melakukan optimasi (penghematan spacespace dan dan waktu komputasiwaktu komputasi), jika ), jika mungkin, mungkin, terhadap kode antara.terhadap kode antara.

Page 11: KOMPILASI

1111

Pembangkit kodePembangkit kode : :

membangkitkan kode dalam bahasa membangkitkan kode dalam bahasa target target tertentu (misalnya bahasa tertentu (misalnya bahasa mesin).mesin).

Page 12: KOMPILASI

1212

Contoh skema penerjemaham suatu ekspresi Contoh skema penerjemaham suatu ekspresi dalam bahasa sumber, yaitu : position := dalam bahasa sumber, yaitu : position := initial + rate * 60initial + 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

60pembangkit kode antara

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

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

MOVF id3. R2MULF #60.0, R2MOVF id2, R1ADDF R2, R1MOVF R1, id1

Page 13: KOMPILASI

1313

Keterangan:Keterangan:- id adalah token untuk id adalah token untuk identifieridentifier. Tiga . Tiga lexemelexeme

untuk token ini adalah position, initial, dan rate.untuk token ini adalah position, initial, dan rate.- Penganalisa semantik secara logika Penganalisa semantik secara logika

membangkitkan pohon parse.membangkitkan pohon parse.- Penganalisa semantik mendeteksi Penganalisa semantik mendeteksi mismatch mismatch

type. type. Perbaikan dilakukan dengan memanggil Perbaikan dilakukan dengan memanggil procedureprocedure inttoreal yang mengkonversi integer inttoreal yang mengkonversi integer ke real.ke real.

- Quadruples dari : Quadruples dari : temp2 := id3 * temp1temp2 := id3 * temp1 adalah adalah (*,id3,temp1,temp2),(*,id3,temp1,temp2), id := temp 3id := temp 3 adalah adalah (assign,temp3,-,id1), temp1:=inttoreal(60)(assign,temp3,-,id1), temp1:=inttoreal(60) adalah (intoreal,60,-,temp1).adalah (intoreal,60,-,temp1).

- Pembangkit kode dalam contoh ini menghasilkan Pembangkit kode dalam contoh ini menghasilkan kode dalam bahasa mesin.kode dalam bahasa mesin.

Page 14: KOMPILASI

1414

Latihan Soal Kompilasi :

1. 1. Program sumber dipecah-pecah dan dibentuk menjadi bentuk antara Program sumber dipecah-pecah dan dibentuk menjadi bentuk antara ((intermediate presentationintermediate presentation) :) :

A. scanner A. scanner B. parser B. parser C. analisa *C. analisa * D. sintesaD. sintesa

2.2. Membangun program sasaran yang diinginkan dari bentuk antara :Membangun program sasaran yang diinginkan dari bentuk antara :

A. scanner A. scanner B. parser B. parser C. analisa C. analisa D. sintesa *D. sintesa *

3.3. Memeriksa kesesuaian pola deretan token dengan aturan sintaks yang Memeriksa kesesuaian pola deretan token dengan aturan sintaks yang ditentukan dalam bahasa sumber : ditentukan dalam bahasa sumber :

A. Penganalisa sintaks *A. Penganalisa sintaks * C. Penganalisa SemantikC. Penganalisa Semantik

B. Penganalisa leksikalB. Penganalisa leksikal D. Penganalisa PragmatikD. Penganalisa Pragmatik

4.4. Memeriksa token dan ekspresi dari batasan-batasan yang ditetapkan :Memeriksa token dan ekspresi dari batasan-batasan yang ditetapkan :

A. Penganalisa sintaks A. Penganalisa sintaks C. Penganalisa Semantik *C. Penganalisa Semantik *

B. Penganalisa leksikalB. Penganalisa leksikal D. Penganalisa PragmatikD. Penganalisa Pragmatik

5.5. Secara logika deretan token yang bersesuaian dengan sintaks tertentu Secara logika deretan token yang bersesuaian dengan sintaks tertentu akan dinyatakan sebagai :akan dinyatakan sebagai :

A. sintax errorA. sintax error C. Identifier tokenC. Identifier token

B. Parse tree *B. Parse tree * D. intermediate tokenD. intermediate token