Anda di halaman 1dari 9

MAKALAH TEKNIK KOMPILASI PROGRAM SCANNER DELIMITER DENGAN BAHASA JAVA

ANGGOTA KELOMPOK: 1. Bisri Nursa Fadillah 2. Nimas Ayu Mailani 3. Fadly Robby 1111091000064 1111091000053 1111091000048

JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SYARIF HIDAYATULLAH JAKAKARTA

KATA PENGANTAR Puji syukur kami panjatkan ke hadirat Allah SWT atas berkah dan rahmat-Nya kami dapat menyelesaikan makalah sebagai bentuk laporan dari pembuatan program sederhana yang mengimplementasikan scanner sebagai salah satu proses yang terdapat dalam rangkaian tahap teknik kompilator. Makalah ini kami buat untuk pemenuhan tugas tengah semester matakuliah Teknik Kompilasi. Kami sebagai penulis menyadari sedikit keberhasilan ini tidak akan terwujud tanpa keterlibatan semua pihak. Karena itulah kami ucapkan terima kasih yang tulus kepada pihak-pihak terkait yang telah membantu kami dalam penyelesaian makalah ini. Penulis menyadari bahwa penyusunan makalah ini masih jauh dari kesempurnaan. Maka dengan segala kerendahan hati, kami mengharapkan kritik dan saran yang bersifat membangun bagi perbaikan penulisan makalah ini. Jakarta, 12 Juni 2013 Penulis

BAB I PENDAHULUAN 1.1. Latar Belakang Bahasa merupakan kumpulan dari kalimat dimana kalimat itu sendiri adalah rangkaian dari

unit terkecil komponen bahasa yang tidak dapat dipisah lagi (kata). Dalam bahasa pemrograman kalimat lebih dikenal sebagai ekspresi sedangkan kata sebagai token. Suatu ekspresi sangat berarti dalam penulisan kode pemrograman. Jika terdapat satu kesalahan walaupun kecil, dapat mengakbatkan error saat program dijalankan. Karena itulah kami mebuat program scanner ini untuk sedikit menggambarkan fungsi dari scanner itu sendiri dalam teknik kompilasi. Teknik kompilasi merupakan teknik dalam melakukan pembacaan suatu program yang ditulis dalam bahasa sumber yang kemudian diterjemahkan ke dalam bahasa lain yang disebut bahasa sasaran. Dalam melakukan proses penerjemahan pastinya akan dilaporkan jika terdapat keanehan-keanehan ataupun kesalahan yang ditemukan. Proses penerjemahan ini disebut kompilasi (compiling). Teknik kompilasi memiliki beberapa tahapan seperti scanner, parser, analisa semantik, pembangkit kode antara, pengoptimal kode dan pembangkit kode. Tahapan ini harus dilalui sebelum mencapai bahasa yang dituju dalam kompilasi program yang diinginkan. Scanner dalam teknik kompilasi berfungsi untuk memecah program sumber menjadi besaran leksikalnya. Kegiatan yang terjadi dalam tahapan ini adalah menangani kesalahan yang ditemukan, membuang blank, mengenali besaran leksikal dan kegiatan lainnya. Pada program ini digunakan delimiter sebagai pemisah atau pembatas dalam suatu teks. Fungsi ini sangat diperlukan pada tahap awal kompilasi. Kami membuat program scanner dengan menggunakan bahasa pemrograman java. Bahasa pemrograman ini merupakan salah satu bahasa yang paling banyak digunakan dalam pembuatan program-program aplikasi. 1.2. Tujuan Maksud dan tujuan dari pembuatan makalah ini adalah: 1.2.1. Pemenuhan tugas matakuliah Teknik Kompilasi. 1.2.2. Mengetahui cara kerja atau algoritma dari scanner. Rumusan Masalah Rumusan masalah dalam makalah ini adalah: 1.3.1. Apa yang dimasud dengan scanner? 1.3.2. Bagaimana implementasi scanner dalam program?

1.3.

BAB II PEMBAHASAN 2.1. PENGERTIAN JAVA Java adalah salah satu bahasa pemrograman berorientasi objek. Bahasa pemrograman ini termasuk ke dalam bahasa pemrograman tingkat tinggi yang tersusun dari bagian-bagian yang disebut kelas. Kelas-kelas itu sendiri terdiri atas metode-metode yang melakukan pekerjaan dan

mengembalikan informasi setelah melakukan tugasnya. Java dirancang agar mudah dipelajari dan digunakan secara efektif. Java 2 adalah generasi kedua dari java platform. Java berdiri diatas sebuah mesin interpreter yaitu Java Virtual Machine (JVM) yang bertugas untuk membaca bytecode dalam file.class dari suatu program sebagai representasi langsung dari program yang berisi bahasa mesin. Untuk menjalankan bytecode dibutuhkan Java Runtime Environment (JRE) yang memungkinkan pemakai untuk menjalankan program Java. JRE berisi JVM dan library Java yang dibutuhkan. 2.2. PENGERTIAN SCANNER Analisis leksikal atau analisis linier atau dapat juga disebut sebagai pembacaan sekilas (scanner) merupakan pembacaan aliran karakter dari kiri ke kanan dan dikelompokkan dalam token yaitu barisan dari karakter yang dalam suatu kesatuan memiliki suatu arti tersendiri. Scanner melakukan pemeriksaan karakter per karakter pada teks masukan, memecah sumber program menjadi bagian-bagian yang disebut token. Analisis leksikal mengerjakan pengelompokan urutan-urutan karakter ke dalam komponen pokok seperti identifier, delimeter, simbol-simbol operator, angka, keyword, noise word, blank, komentar dan lain sebagainya yang menghasilkan suatu token leksikal yang akan digunakan pada analisis sintatik (parser). Analisis leksikal merupakan komponen kompilasi independen yang berkomunikasi dengan parser melalui interface yang terdefinisi dengan bagus dan sederhana sehingga pemeliharaan analisis leksikal tidak berdampak pada pengubahan kompilator secara keseluruhan. Agar dapat memperoleh fitur ini, maka interface tidak boleh berubah. Kebanyakan kode yang menyusun analisis leksikal sama untuk seluruh kompilator tidak peduli bahasa pemrograman yang digunakan. Pada analisis leksikal yang dituntung tabel (tabel driven lexical analyzer), maka satusatunya yang berubah adalah tabel itu sendiri. Kadang diperlukan interaksi analisis leksikal dan analisis sintatik yang lebih kompleks. Sehingga analisis leksikal harus dapat menganggap string sebagai token bertipe, bukan identifier. Untuk itulah perlu komunikasi yang lebih tinggi yang biasanya dilakukan suatu struktur data digunakan bersama seperti tabel simbol. Analisis sintatik dapat memasukkan string ke tabel simbol, mengidentifikasi sebagai Type atau typedef, sehingga analisis leksikal dapat memeriksa tabel simbol untuk menentukan apakah lexeme adalah tipe token atau identifier. Program scanner ini menggunakan delimeter sebagai pemecah program sumber. Dimana pengertian delimiter itu sendiri adalah urutan satu karakter atau lebih yang dipakai untuk

membatasi atau memisahkan data yang disajikan dalam plain text. Salah satu contoh dari delimiter adalah tanda koma, titik koma atau titik dua. 2.3. PROGRAM SCANNER DALAM JAVA 2.3.1. Source Code Program Dibawah ini merupakan source code program java yang mengimplementasikan analisis leksikal (scanner) dengan menggunakan delimiter.
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.StringTokenizer; public class ReadFile { //metodh utama dalam kelas java untuk running public static void main(String[] args) { BufferedReader br = null; try { String line; // membuka file .csv br = new BufferedReader( new FileReader( "C://Users/EVI/Desktop/adt-bundle-windows-x86-20130219/Tekom/token.csv")); // ketika membaca file dan file tidak sama dengan kosong while ((line = br.readLine()) != null) { System.out.println(line); // menampilkan isi dari file // pembatas dari sebuah baris dalam file StringTokenizer stringTokenizer = new StringTokenizer(line, "|");

// membaca elemen dalam sebuah baris dalam file while (stringTokenizer.hasMoreElements()) { Integer id = Integer.parseInt(stringTokenizer.nextElement() .toString()); Double price = Double.parseDouble(stringTokenizer .nextElement().toString()); String username = stringTokenizer.nextElement().toString(); // nilai variabel di tampung StringBuilder sb = new StringBuilder(); sb.append("\nId : " + id); sb.append("\nPrice : " + price); sb.append("\nUsername : " + username); sb.append("\n*******************\n"); // output nilai variabel System.out.println(sb.toString()); } } // file telah selesai dibaca dan ditampilkan System.out.println("Done"); } // jika file tidak ada catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) br.close(); } catch (IOException ex) { ex.printStackTrace(); } } // proses melakukan pengcopyan file InputStream inStream = null; OutputStream outStream = null;

try { File afile = new File( "C://Users/EVI/Desktop/adt-bundle-windows-x86-20130219/Tekom/token.csv");// data // file // yang // akan // dicopy File bfile = new File( "C://Users/EVI/Desktop/adt-bundle-windows-x86-20130219/Tekom/token2.csv");// data // file // hasil // copy inStream = new FileInputStream(afile); // membuka file dengan // paramater variabel nama // file outStream = new FileOutputStream(bfile); // menampilkan file dengan // parameter variabel // nama file byte[] buffer = new byte[1024]; int length; // copy the file content in bytes while ((length = inStream.read(buffer)) > 0) { outStream.write(buffer, 0, length); } inStream.close();// menutup file outStream.close();// menutup file hasil copy System.out.println("File is copied successful!"); } catch (IOException e) { e.printStackTrace(); }

} }

2.3.2.

Penjelasan Source Code Cara kerja dari algoritma ini adalah : 1. Fungsi membaca file token.csv dari direktori computer. 2. Jika terdapat file, maka fungsi akan memberikan pembatas dari setiap baris. 3. Lalu elemen yang terdapat dalam tiap baris dibaca dan nilai variabelnya ditampung. 4. Program akan menampilkan output nilai dari variabel dan men-copy-nya ke dalam file berformat .csv yang baru. 5. Setelah pembacaan atau scanning pada file .csv yang lama telah selesai, maka file tersebut ditutup sebelum membuat file .csv yang baru. 6. Program akan membuka file dan menampilkan sesuai dengan parameter variabel nama file.

BAB III KESIMPULAN DAN SARAN 3.1. KESIMPULAN Scanner (Analisis Leksikal), adalah sebuah komponen yang berfungsi untuk mengkonversi atau menerjemahkan kumpulan karakter menjadi besaran token yang dapat dimengerti kompilator. Dalam program ini, sekumpulan karakter akan di ubah menjadi besaran huruf dan symbol. Sebagai contoh, kita mempunyai sekumpulan karakter berikut : Rika bermain boneka.. Dari kumpulan karakter ini, kita mendapatkan 11 buah token, antara lain token R satu buah, a tiga buah, b dua buah, e dua buah, I dua buah, k dua buah, m satu buah, n dua buah, o satu buah, r satu buah, dan spasi dua buah. Secara garis besar, token yang dihasilkan scanner dapat dibagi menjadi beberapa bagian: 1. Keyword: sekumpulan token yang sudah disediakan oleh kompilator.

2. Identifier: token yang berfungsi menjadi tanda pengenal (variable) di dalam program. 3. Operator: sekumpulan token yang digunakan dalam proses membentuk sebuah ekspresi (aritmatika, konkatenasi, operasi logika). 4. Delimiter: token pemisah antara token satu dan token yang lain. 5. White space character: karakter spasi yang memisahkan token satu dan yang lain. 6. Konstanta: berfungsi sebagai nilai dari variable.

3.2. SARAN Pada dasarnya, kita dapat dengan mudah membuat sebuah scanner dengan cara membuat fugnsi yang membandingkan setiap karakter dengan kata kunci yang ada, tetapi cara ini sangatlah lambat, sehingga untuk memepermudah kita dalam membuat scanner, kita dapat menggunakan sebuah mesin automata (Finite State Machine) dalan mengenali setiap kata kunci dari sekumpulan karakter. Dalam hal ini ada sebuah program yang dikeluarkan GNU yang diberi nama Flex yang akan mempermudah kerja kita dalam membuat Finite State Machine untuk sebuah scanner.

DAFTAR PUSTAKA http://why-kurnia.blogspot.com/2011/02/teknik-kompilasi-merupakan-teknik-dalam.html http://fraternity88.blogspot.com/2010/09/teknik-kompilasi.html Habibi, Moh. UNIKOM. Makalah Pemrograman Java. 2009 http://didiindra.wordpress.com/tag/pengertian-java/ http://rionoadi.blogspot.com/ 22.08 WIB 22.32 WIB 13.57 WIB 13.57 WIB

Anda mungkin juga menyukai