TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16

dokumen-dokumen yang mirip
Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

TEKNIK KOMPILASI Bahasa Regular

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

ALGORITMA PEMROGRAMAN 1C SINTAKS

STRUKTUR PROGRAM. Secara ringkas, struktur suatu program Pascal dapat terdiri dari : 1.Judul Program 2.Blog Program a.

BAB II ANALISA LEKSIKAL (SCANNER)

KONSEP DASAR BAHASA PASCAL

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1

Teori Algoritma TIPE DATA

Pengenalan Pascal. Sejarah Singkat Pascal

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-1

Dasar Komputer & Pemrogaman 2A

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs

SMA SANTO PAULUS PONTIANAK

Teknik Kompilasi. Notasi Bahasa

KONSEP DASAR BAHASA PASCAL

Dasar Komputer & Pemrograman 2A

Komentar Program. Komentar program dapat diletakkan dimanapun di dalam program. pembatas (* dan *).

Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

PERKEMBANGAN PASCAL. Pascal adalah bahasa tingkat tinggi ( high level language) yang orientasinya pada segala tujuan

STRUKTUR BAHASA PEMROGRAMAN

Teori Algoritma. Struktur Algoritma

Algoritma Pemrograman

STRUKTUR KONTROL. Struktur WHILE-DO Mempunyai struktur sebagai berikut : Bentuk Umum : WHILE condition Do statement Bentuk Proses (flow chart) :

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

AP2a (Pascal) Akuntansi Kelas 1 Semester 2. Hana Pertiwi S.T

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

MODUL 1. Struktur Bahasa PASCAL secara umum

Algoritma Pemrograman

Pengantar dalam Bahasa Pemrograman Turbo Pascal

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

.::BAB II.::MENGENAL PASCAL

KONSEP DASAR BAHASA PASCAL

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

Tipe Data dan Operator

Sesi/Perkuliahan ke: I

Kesalahan Program Penanganan Kesalahan Reaksi Compiler Pada kesalahan Error Recovery Error repair

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

Algoritma Pemrograman

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

& PEMROGRAMAN. Alex De Kweldju, S.Kom D3 Teknik Komputer Fakultas Teknik Universitas Negeri Papua

BAB VI CARA PENANGANAN KESALAHAN

Tabel 1. Jenis data integer Ukuran memori (dalam byte)

Perjalanan sebuah intruksi

JENIS-JENIS DATA DAN STATEMEN INPUT OUTPUT

Bab 1 Pengenalan Pascal 1 BAB I PENGENALAN PASCAL, TIPE-TIPE DATA PASCAL DAN STATEMEN DASAR PADA PASCAL TUJUAN PRAKTIKUM TEORI PENUNJANG

Aplikasi Rekursif dalam Analisis Sintaks Program

Indentifier, Keywords, Variable, Tipe Data dan Operator. Ramos Somya, S.Kom., M.Cs.

Fase-fase proses sebuah kompilasi

Dasar Komputer & Pemrograman 2A

Kesalahan Program dapat berupa

Struktur Data. PDE - Struktur Data 1

P A S C A L D A S A R

Struktur Data II. Bekerja Dengan Form.

MODUL II. OBJECK, PROPERTY, METHOD dan EVENT

Contoh soal Struktur Program Pascal (Seleksi tingkat propinsi TOKI 2004)

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

Konstruksi Dasar Algoritma

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Pengenalan Pascal/DevPascal

Modul 1 Pengantar Bahasa Pascal

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

BAB II SINTAKS 2.1. SINTAKS

Perulangan. Bentuk Proses. 1. Perulangan For positif contoh 1 : perulangan positif untuk satu statement :

[Type the company name] [Type the document title] [Type the document subtitle] Gilang Abdul Aziz [Pick the date]

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 1 & 2

TEKNIK KOMPILASI Konsep & Notasi Bahasa

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Pertemuan 3 ELEMEN-ELEMEN BAHASA PEMROGRAMAN. Berikut adalah element-element pada bahasa pemrograman:

PENDAHULUAN. Brigida Arie Minartiningtyas, M.Kom

PHP (HYPERTEXT PREPROCESSOR)

Sesi/Perkuliahan ke: II

BAB II DASAR TEORI. 2.1 Kompilator

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Struktur Program. Rinta Kridalukmana

Struktur Bahasa C dan C++

[1997] NUS: var x,y=byte; c. program xyz ; 1. Manakah identifier yang benar untuk menamakan nama program : a. prog-a b. prog_a c. prog+a d.

ALGORITMA (KOMPUTER) : ATURAN PENULISAN DAN STRUKTUR DASARNYA

Algoritma,Flowchart, Konsep

KONSEP DASAR BAHASA PASCAL. Pengertian SEJARAH SINGKAT BAHASA PASCAL STRUKTUR DAN KOMPONEN DASAR PROGRAM PASCAL.

OPERATOR-OPERATOR DALAM JAVA

Sub Pokok Bahasan. tugas 1 Pascal operator Assignment, Binary, Unary dan Bitwise

STRUKTUR DASAR ALGORITMA

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

Konsep dan Notasi Bahasa. Istiqomah, S.Kom

PENGANTAR ALGORITMA DAN PEMROGRAMAN

SUMBER BELAJAR PENUNJANG PLPG

Pemrograman Dasar Pascal

BAB 2. ANALISIS LEKSIKAL

Algoritma Pemrograman 2 B

Chapter 1 KONSEP DASAR C

Bab 2 DASAR-DASAR ALGORITMA

KOMPILASI. Assembler Bahasa Rakitan Bahasa Mesin Compiler (Kompilator) Bahasa Tingkat Tinggi Bahasa tingkat rendah

Transkripsi:

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16 4. ANALISIS LEKSIKAL Struktur Kompiler Analisis Leksikal Apa itu? Masukan bagi sebuah compiler/interpreter adalah program sumber yang strukturnya berupa deretan dari karakter-karakter o or rather unstructured Pemrosesan individual karakter yang ketidakefisiennya sangat tinggi o Imagine recognizing while as w h i l e Oleh karenanya, hal pertama yang kita perhatikan adalah bentuk kode sumbernya A Lexical Analyzer (scanner) mengubah deretan karakter-karakter menjadi deretan tokentoken o i.e. a scanner tokenizes the input Sebuah token (lexeme or syntactic unit) adalah komponen dasar leksikal dari program Analisis Leksikal Token Token adalah level entitas yang paling rendah dalam diagram sintaks Jenis-jenis token antara lain: o identifiers (e.g. variable & function names, etc.) o keywords (like while, if, function, etc.) o operators (like +, -, *, ++, +=, etc.) o literals (constant values like 27.3, Hello, etc.) o punctuation (like ;, :,,, etc.) Consider a simple program and its tokens: Fungsi Scanner o Melakukan pembacaan kode sumber dengan merunut karakter demi karakter o Mengenali besaran leksik o Mentransformasi menjadi sebuah token dan menentukan jenis tokennya o Mengirim token o Membuang blank dan komentar dalam program o Menangani kesalahan o Beberapa scanners memasukkan simbol ke dalam tabel simbol

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 17 Membaca Program Sumber

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 18 Scanning berdasarkan MSH (Mesin Stata Hingga = Finite State Automata (FSA)) Hampir sebagian besar teknik yang digunakan untuk membangun scanners menggunakan mesin stata hingga (MSHs) atau Finite State Automata (FSA) MSHs dapat dengan mudah digunakan untuk mengenali kontruksi bahasa (i.e. tokens) yang digambarkan dengan bahasa regular Membangun Scanner Bagaimana scanner berinteraksi dengan parser? parser akan menjadi bagian selanjutnya dari kompilasi Perhatikan gambar berikut: Aksi Scanner Karena scanner mengubah dari stata ke stata, maka harus dilakukan sesuatu dengan karakter-karakter tersebut untuk mengenali sesuai dengan pembentukan token yang akan dikembalikan pada tahap parser Dalam beberapa kasus, harus menambahkan character seperti terlihat pada pembentukan token dan memanfaatkannya (menjadikan karakter masukan berikutnya menjadi kelihatan) E.g. when scanning characters in an identifier Dalam kasus lainnya harus menjaga character dan mengembalikan dalam token lengkap Aksi kemungkinan lainnya adalah menghilangkan karakter agar lebih sederhana E.g. karakter pada komentar Besaran Leksik Besaran pembangun bahasa/leksik meliputi hal-hal sebagai berikut : 1. Identifier Identifier dapat berupa keywords atau nama. Keywords adalah kata kunci yang sudah didefinisikan oleh suatu bahasa seperti Begin, End, If, Else dalam Pascal. Nama dideklarasikan sendiri oleh pemakai seperti nama variabel. Contoh bila pada suatu program Pascal terdapat deklarasi: Var Nomor: Integer; Suhu: Real; Maka Nomor dan Suhu akan dikenali sebagai besaran leksik berupa nama variabel yang terdapat pada program tersebut. Sedangkan Var, Integer dan Real merupakan keyword

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 19 pada program tersebut. Nama bisa berupa nama program, procedure, var, type, constant. Keyword pada Pascal, misalnya : and, array, begin, case, const, div, do, downto, else, not, of, or, procedure, program, record, repeat, for, function, goto. 2. Nilai Konstanta Nilai konstanta adalah suatu konstanta yang terdapat pada program. Bisa berupa konstanta integer, real, boolean, character, string dan sebagainya. Misalkan saja dalam Pascal pada suatu program terdapat statement. N := R + 5 * 10 kata := kata1 + makan A := 0.333 selesai := True Maka 5, 10, makan, 0.333, True, termasuk besaran leksik berupa nilai konstan yang terdapat pada program sumber tersebut. 3. Operator dan Delimiter Operator, misalnya operator aritmatika (+, -, *, /), operator logika (<, =, >) 4. Delimiter Delimiter berguna sebagai pemisal/ pembatas, misalnya: ( ),. ; : (kurung buka/tutup, koma, titik, titik koma, titik dua), white-space (pemisah yang diabaikan di program seperti spase, karakter enter, ganti baris, akhir file. Contoh 1: Misalkan terdapat sebuat source program: Program coba; Var A : integer; Begin A := A + 2; End. Pada contoh di atas, besaran leksik (token) nya adalah simbol yang bernilai Program, Coba, Var, A, Integer, ;, :, +,., 2, :=, Begin, End. Contoh 2 : Ada urutan karakter yang disebut dengan statement Fahrenheit := 32 + celcius * 1,8 Maka akan diterjemahkan ke dalam token-token di bawah ini: identifier fahrenheit operator := integer 32 operator + identifier celcius operator perkalian * real / float 1,8 Setiap bentuk dari token direpresentasi sebagai angka dalam bentuk internal, dan angkanya adalah unik. Misalnya nilai 1 untuk variabel, 2 untuk konstanta, 3 untuk label, 4 untuk operator, dst.

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 20 Contoh : Kondisi : If A > B then C = D; Maka Scanner akan mentransformasikan ke dalam token-token sbb: kondisi3 : 26 If 20 A 1 > 15 B 1 then 21 C 1 D 1 ; 27 Token-token ini sebagai inputan untuk syntax analyser, token-token ini bisa berbentuk pasangan item. Dimana item pertama menunjukkan alamat atau lokasi dari token pada tabel simbol. Item kedua adalah representasi internal dari token. Semua token direpresentasikan dengan informasi yang panjangnya tetap (konstan), suatu alamat (address atau pointer) dan sebuah integer (bilangan bulat). Misalkan sebuah bahasa memiliki himpunan simbol terminal/token : <, >, =, <=, >=, <> Atau bisa dibaca sebagai token-token : t_l, t_g, t_e, t_le, t_ge, t_ne (G=greater, L=Less, E=Equal, N=Not). Bahasa tersebut juga mendukung penulisan komentar yang diawali dengan { dan diakhiri dengan }. Kita lihat Diagram Keadaan untuk kumpulan token di atas pada gambar berikut : Start < = t_l t_le = t_e > t_ne > = t_g t_ge { } komentar apa saja selain }

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 21 Tabel State T(stata,karakter) dari Diagram State di atas : Stata Karakter < > = { } apa saja Start t_l t_g t_e komentar x x t_l x t_ne t_le x x x t_le x x x x x x t_e x x x x x x t_ne x x x x x x t_g x x t_ge x x x t_ge x x x x x x Komentar x x x x Start komentar Formula tabel tersebut adalah : j, jika ada transisi berlabel a dari i ke j T(i,a)= x, jika tidak ada transisi berlabel a dari i Jika T(i,a) = x, maka ada 2 kemungkinan : Jika stata i merupakan stata akhir berarti pada stata i telah ditemukan sebuah token. Jika stata i bukan stata akhir berarti pada stata i telah terdeteksi token tidak dikenal. Dalam Pascal, komentar tidak diperlukan lagi pada proses selanjutnya, karena itu komentar tidak dimasukkan sebagai token. Setiap scanner menemukan awal komentar, scanner hanya mengambil simbol yang didapat tanpa disimpan ke dalam token. Setelah ditemukan akhir dari komentar, state dikembalikan ke state awal (serupa dengan white space) Scanner biasanya diimplementasikan sebagai sebuah prosedur yang dipanggil oleh Parser. Contoh Prosedur scan sederhana yang akan membaca sebuah file input dan memberikan token hasilnya dapat dilihat pada : Procedure GetChar; Begin Read(FileInput, Kar); dimana : FileInput : text, Kar: character

Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 22 Procedure Scan Begin While Kar= do {selama ketemu spasi maju terus} Repeat Case Kar Of < : begin Case Kar Of = : begin token:=t_le; exit; > : begin token:=t_ne; exit; else begin token:=t_l; exit; = : begin token:=t_e; exit; > : begin If Kar = = then begin token:=t_ge; exit; end else begin token:=t_g; exit; { : begin Repeat {maju sampai ketemu penutup komentar} Until Kar = } {lanjutkan maju, tanpa memperoleh token} EOF:exit; {akhir file} Until False; {sampai ketemu sebuah token atau akhir file } End;