1 of 50

TEKNIK KOMPILASI

1/52

2 of 50

Pendahuluan

  • Tujuan Pembelajaran :
  • Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler
  • Mahasiswa memahami konsep pembuatan sebuah Compiler
  • Mahasiswa mengetahui bagaimana sebuah bahasa pemrograman dapat diterjemahkan oleh mesin.

​

  • Metari Pembelajaran
  • Analisa Leksikal sebagai tahap awal kompilasi
  • Analisa Sintaks, bentuk-bentuk derivasi serta implementasi parsing.
  • Analisa Semantik dan tahapan Sintesa.
  • Penanganan kesalahan kompilasi dan fungsi tabel informasi.

2/52

3 of 50

3/52

Bahasa Assembly merupakan bentuk simbolik dari bahasa mesin. Kode misalnya ADD, MUL, dsb

Bahasa tingkat tinggi (user oriented) lebih banyak memberikan fungsi kontrol program, kalang, block, dan prosedur.

Bahasa problem oriented sering juga dimasukkan sebagai

bahasa tingkat tinggi, misalnya SQL, Myob, dsb.

Bahasa Pemrograman

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

Bahasa Pemrograman

4 of 50

Translator

4/52

Translator melakukan pengubahan source code / source program ke dalam target code / object code

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

​

Assembler

  • Source Code adalah bahasa Assembly
  • Object Code adalah bahasa mesin
  • Contoh, Turbo Assembler

5 of 50

5/52

Jenis Translator: COMPILER

6 of 50

6/52

Jenis Translator: Interpreter

7 of 50

7/52

Jenis Translator: ASSEMBLER

8 of 50

Tahapan Translator

8/52

Analisa Leksikal

Analisa Sintaks

Intermediate Code

​

Generate Code

Pengelolaan Tabel

Program Sumber

Penanganan Kesalahan

Program Target

9 of 50

Assembler

9/52

Proses Sebuah Kompilasi pada Bahasa 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

Object Code

​

​

Assembler

​

File Target

​

​

​

Lingker

.ASM

.OBJ

.EXE / .COM

10 of 50

10/52

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 )
  2. Sintesa : Membangun program sasaran yang diinginkan dari bentuk antara

11 of 50

11/52

Penganalisa Leksikal (scanner)

Penganalisa Sintaks (parser)

Penganalisa

Semantik Pembangkit Kode antara

Pembentuk kode

Pengoptimal kode

Program

Sumber

Program Sumber

Program

Sasaran

Program Sasaran

TABEL

SIMBOL

TABEL SIMBOL

ANALISA

SINTESA

Bagan pokok proses kompilasi

Blok Diagram

12 of 50

Keterangan

12/52

  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 Simbol : Menyimpan semua informasi yang berhubungan dengan proses kompilasi

13 of 50

13/52

Source Code 1

Source Code 2

Source Code n

Object Code 1

Object Code 2

Object Code n

​

Compiler 1

​

​

Compiler 2

​

​

Compiler n

​

Lingker

Executable

Library Object Code

  • Pembentukan file Executable berdasar dari beberapa Source Code
  • Source Code dapat terdiri dari satu atau lebih behasa pemrograman.

14 of 50

Pembuatan Compiler

14/52

Pembuatan kompilator dapat dilakukan dengan :

​

  1. Bahasa Tingkat Tinggi lain pada ,mesin yang sama Proses pembuatan kopilator akan lebih mudah

​

2. Bahasa tingkat tinggi yang sama pada mesin yang berbeda

Misal, pembuatan kompilator C untuk DOS, berdasar C pada UNIX

3. Bootstrap

Pembuatan kompilator secara bertingkat.

​

4. Bahasa Assembly

Bahasa Assembly bisa dan biasa digunakan sebagai tahap awal pada proses pembuatan sebuah kompilator

5. Bahasa Mesin

Tingkat kesulitannya tinggi, bahkan hampir mustahil dilakukan

​

15 of 50

15/52

16 of 50

16/52

17 of 50

Lexical Analysis

17/52

18 of 50

Lexical Analysis

18/52

19 of 50

Lexical Analysis

19/52

20 of 50

Lexical Analysis

20/52

21 of 50

Lexical Analysis

21/52

22 of 50

22/52

23 of 50

Lexical Analysis

23/52

24 of 50

Syntax Analysis

24/52

25 of 50

Tugas dari Syntax Analizer adalah:

25/52

26 of 50

Statement: (A+B)*(C+D)

26/52

27 of 50

Syntax Tree

27/52

28 of 50

28/52

Penurunan untuk menghasilkan

string aabbb

29 of 50

29/52

30 of 50

Parsing atau Proses Penurunan

30/52

31 of 50

31/52

32 of 50

Metode Parsing

32/52

33 of 50

Parsing digolongkan menjadi :

33/52

34 of 50

Parsing: BRUTE FORCE

34/52

35 of 50

Parsing: BRUTE FORCE

35/52

36 of 50

36/52

37 of 50

Kelemahan metode BRUTE FORCE

37/52

38 of 50

38/52

39 of 50

39/52

40 of 50

40/52

41 of 50

41/52

42 of 50

42/52

43 of 50

43/52

44 of 50

44/52

45 of 50

45/52

46 of 50

46/52

47 of 50

47/52

48 of 50

48/52

49 of 50

Parsing: RECURSIVE DESCENT PARSER

49/52

50 of 50

50/52