Blogger Tricks

TEKNIK KOMPILASI II (ANALIS LEKSIKAL)


pada postingan kali ini....... saya akan melakukan teknik kompilasi pada program java....
pada program ini saya akan menganalisa dan mengelompokan bersadarkan tokennya....

token yang dimaksud disini bukanlah token listrik...ataupun token yg di tembok heheheheh Tokeeeeek....












apakah anda tahu apa itu Token ?? ya betul...saya juga tidak tahu....search di google za eew....

kita simak dulu program perpustakaan sederhana berbasis text pada java ....
ini  source programnya :

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package programperpus;

/**
 *
 * @author Gothic
 */
import java.io.BufferedReader
import java.io.InputStreamReader;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Programperpus {
    private static DateFormat tanggal bulan, tahun;
private static Date dte;
private static String kode;
private static String pinjam;
private static String tkembali;
    /**

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
tanggal = new SimpleDateFormat("dd");
bulan = new SimpleDateFormat("MM");
tahun = new SimpleDateFormat("yyyy");
date = new Date();
     
 BufferedReader InputData = new BufferedReader (new InputStreamReader(System.in));
      
 DateFormat format= new SimpleDateFormat("dd-MM-yyyy");

 Scanner masuk = new Scanner (System.in);

 System.out.print("Kode Buku :");
try {
kode = InputData.readLine();
}
catch (IOException e){
System.out.println("error");
}
     
System.out.print("tanggal Peminjaman :");
try {
pinjam = InputData.readLine();
}
catch (IOException e){
System.out.println("error");
}
      
System.out.print("tanggal Pengembalian :");
try {
tkembali = InputData.readLine();
}
catch (IOException e){
System.out.println("error");
}

int tanggalpinjam = Integer.parseInt(pinjam.substring(0, 2));
int bulanpinjam= Integer.parseInt(pinjam.substring(3, 5));
int tahunpinjam = Integer.parseInt(pinjam.substring(6, 10));

int tanggalpHari = Integer.parseInt(tanggal.format(date));
int bulanpHari = Integer.parseInt(bulan.format(date));
int tahunpHari = Integer.parseInt(tahun.format(date));


int tanggalkembali = Integer.parseInt(tkembali.substring(0, 2));
int bulankembali= Integer.parseInt(tkembali.substring(3, 5));
int tahunkembali = Integer.parseInt(tkembali.substring(6, 10));


int tanggalh = Integer.parseInt(tanggal.format(date));
int bulanpH = Integer.parseInt(bulan.format(date));
int tahunpH = Integer.parseInt(tahun.format(date));
         
         System.out.println("-----------------------------");
         System.out.println("Kode Buku            :" +kode);
         System.out.println("Tanggal Peminjaman   :" +pinjam);
         System.out.println("Tanggal Pengembalian :" +tkembali);

         int denda=0;
int denda1;

int telat=tanggalkembali-tanggalpinjam;
if(telat>3){
    denda1=(telat-3)*1000;
System.out.print("Denda : "+"Rp."+denda1);
    System.out.print("/n");
}else{
    System.out.print("Denda : "+"Rp."+denda);
System.out.println("/n");
}
         }
         }  



nah program ini bila anda copy belum bener atau masih error....untuk itu baca sampai habis postingan ini ,,,,,, baru kalau mau copy tuw code biar jadi di netbeans :D

kita coba dulu untuk mengelompokan token-tokennya menurut program diatas  :

Identifier
 programperpus || tanggal ||bulan ||tahun ||date  ||dateformat ||masuk ||kode || pinjam ||tkembali
tanggalpinjam || bulanpinjam || tahunpinjam || tanggalphari || bulanphari || tahunphari || tanggalkembali || bulankembali || tahunkembali || tanggalph || bulanph || tahunph || denda || denda1 || telat




untuk token identifier bisa diganti dengan punya anda sendiri / karangan anda sendiri

Keyword
package || import || public class || private static || public static void || new || try || catch || int || if || else

untuk token keyword jangan diganti...itu default dari program  netbeansnya...atau dari program yang telah saya buat di atas :D....

Literal
 int denda=0 ||

boleh di ganti tipe datanya.... tapi ingat jangan sampai salah tipe data

Operator
 () || = || {} || + || - || * || >

beberapa operator bisa anda ganti tapi ingat hati2 dalam pergantian operator nnti programnya sembarang loch :)

Separator
. || , || " || ;



harus pakai yang separator itu biasa bersifat wajib :D










itu beberapa contoh dalam mengelompokan contoh program diatas menurut tokennya masing - masing :D....

na terus apa yang terjadi jika program tersebut error.... itu itu kita lakukan analisa menggunakan teknik leksikal dimna kita akan menganalisa dari paling atas,kiri,kanan lalu sampai ke paling bawah codenya.... ok disini saya akan berikan sedikit contoh program yang error...dan kenapa bisa error?? apa yang harus kita lakukan untuk memperbaiknya ??.. simak lanjutnya di bawah ini : D

saya buat tampilan errornya dalam bentuk gambar ea...kodenya kan sudah di atas...ini untuk bisa melihat error yang terjadi pada setiap baris di netbeans.




lochh... kok bisa yah errornya banyak ???...nah untuk itu kita lakukan teknik analis leksikan...ayoo kita cek dulu kesalahannya dimana...mulai dari paling atas yaahh....ayoo sama2 temukan kesalahannya dimana

naaah ketemu...ternyata errornya di sini :










ayoo perbaiki sehingga tidak ada lagi errornya :D
gimana jadi kan.....





nah itulah yang dinamakan analisa menggunakan teknik leksikal....sekalian kasih source buat kalian yang mungkin ada tugas2 kuliah yang hampir sama dengan source code yang saya share :D hehehe

ok sekian....tunggu postingan selanjutnya yah


0 komentar :

Posting Komentar