TUGAS TEKNIK KOMPILASI (ANALISIS LEKSIKAL)




Yo.. kit katumu lae ini kali bet mau bahas sadiki tentang analisis lekiskal, apa itu analisis leksikal ? menurut wikipedia, Anailisis leksikal adalah sebuah proses yang mendahului parsing sebuah rangkaian karakter. Ia menerima masukan serangkaian karakter (seperti dalam dokumen plain-text atau source code) dan menghasilkan deretan simbol yang masing-masing dinamakan token; proses parsing akan lebih mudah dilakukan bila inputnya sudah berupa token.
yo itu sadiki tentang analisis leksikal, sekarang bet kasi contoh dari analisis leksikal ee. .  yo disini bet ada program tentang presentasi perjodohan bebek yang bet su buat ini dia pu source code :
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package perjodohanbebek; /** * * @author JOO */ import java.util.Scanner; public class Perjodohanbebek { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Scaner owl=new Scanner(System.in); int tot1=0; int tot2=0; int joo; System.out.print("Nama Bebek 1 : "); String a = owl.next(); System.out.print("Nama Bebek 2 : "); String b = owl.next() System.out.println("\n"); for (int i = 0; i < a.lengh(); ++i){ char chr = a.charAt(i); int value = ch - 'a' + 1; total1 += value; } System.out.println("\n"); System.out.println("Total untuk "+a+" : "+tot1); for (int i = 0; i < b.length(); ++i){ char chr = b.charAt(i); int value = ch - 'a' + 1; total2 += value;} System.out.println("Total untuk "+b+" : "+tot2); System.out.println("\n"); if ( tot1>tot2 ){ joo=(100*tot2/tot1); System.out.println("Presentasi Perjodohan untuk " + a + " dan " + b + " :" + joo + "%"); if ( tot1<tot2 ){ joo=(100*tot1/tot2); System.out.println("Presentasi Perjodohan untuk " + a + " dan " + b + " :" + joo + "%");
}
}
}
}

itu dia pu source code, sekarang bet akan kelompokan dong dalam masing2 token (disini bet pu maksud mana yang identifier, keyword,literal, operator dan separator) tuh yang mana sa, oke !? tapi sebelumnya bet akan jelaskan arti dari setiap token yang ada :
1.      Identifier adalah token yang merepresentasikan nama. Dalam Java, identifier adalah nama yang diberikan untuk variable, class, atau method. Identifier boleh dimulai dengan huruf, underscore (_) atau tanda dollar ($). Identifier adalah case sensitive (membedakan huruf besar/ kecil) dan tidak ada batas maksimum.
2.    Keyword (kata kunci) adalah dentifier yang digunakan dalam Java untk suatu tujuan khusus. Daftar keyword Java sebagai berikut:
abstract, Boolean, Break, Byte, byvalue, Case, Catch, Char, Class, Const, continue, default, Do, double, else, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, In, Interface, Long, Native, New, Null, Package, private, protected, public, return, short, static, Super, Switch, synchronized, This, threadsafe, throwm Transient, True, Try, Void, while.
3.    Literal adalah Penulisan besaran untuk variabel adalah penting, literal Java terdiri dari angka, karakter, dan string. Angka terdiri dari bilangan bulat (integer), bilangan mengambang (floating point), dan boolean. Nilai boolean untuk true dan false direpresentasikan sebagai 1 dan 0.
4.     Operator menspesifikasikan evaluasi atau komputasi terhadap objek. Operan yang dioperasikan dapat berupa literal, variabel, atau nilai yang dikirim oleh metode atau fungsi.
5. Separator digunakan untuk menginformasikan ke komplator Java mengenai adanya pengelompokkan di kode program. Berikut daftar separator yang digunakan dalam Java:
Simbol Nama   Penggunaan
( )
Kurung Untuk menghimpun parameter dalam definisi dan pemanggilan method, juga digunakan untuk menyatakan tingkat pernyataan, menghimpun pernyataan, untuk pengaturan alur program, dan untuk menyatakan tipe cast (cast types)
{ }
Kurung Kurawal Untuk menghimpunnilai yang otomatis dimasukkan ke dalam array, digunakan juga untuk mendefinisikan blok program, untuk cakupan class, method, dan lokal.
[ ]
Kurung Kurawal Untuk menyatakan tipe array dan untuk membedakan nilai array.
;
Titik Koma Pemisah Pernyataan.
,
Koma Pemisah urutan identifier dalam deklarasi variabel.
.
Titik Untuk memisahkan nama paket dari sub-paket dan class dan untuk memisahkan variabel atau method dari variabel referensi.

Nah su tau to token pu arti sekarang mari ketong liat token apa sa yang ada di itu program perjodohan bebek ?
1. Identifier tuh ada :
   package perjodohanbebek;
public class Perjodohanbebek
tot1,tot2,a,b
   
2. Keyword tuh ada :
     import
int
char
string
if
for
value
new
length
scanner.in
   
3. Operator tuh ada :
+=
=
  <
>
4.Separator tuh ada :
   ;
()
{
}
.

oke, ternyata di itu source code ada code yang bet salah ketik, jadi bet akan lakukan analisis leksikal (dalam java akan di beritahukan pada line brapa letak kesalahannya).

     /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package perjodohanbebek;

/**
 *
 * @author JOO
 */
import java.util.Scanner;
public class Perjodohanbebek {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scaner owl=new Scanner(System.in);  //harusnya Scanner bukan Scaner
        int tot1=0;
        int tot2=0;
        int joo;
        System.out.print("Nama Bebek 1              : ");
        String a = owl.next();
        System.out.print("Nama Bebek 2              : ");
        String b = owl.next()  //tidak ada separator titik koma (;)
        System.out.println("\n");
        for (int i = 0; i < a.lengh(); ++i){ //kurang huruf “t” pada kata “length”
        char chr = a.charAt(i);
        int value = chr - 'a' + 1;  
        total1 += value; }
        System.out.println("\n");
        System.out.println("Total untuk "+a+"       : "+tot1);
        for (int i = 0; i < b.length(); ++i){
        char chr = b.charAt(i);
        int value = chr - 'a' + 1;  
        total2 += value;}
        System.out.println("Total untuk "+b+"       : "+tot2);
        System.out.println("\n");
       
        if ( tot1>tot2 ){
            joo=(100*tot2/tot1);
            System.out.println("Presentasi Perjodohan untuk " + a + " dan " + b + " :" + joo + "%"); //kurang separator “}” untuk menutup pernytaan “if” yang pertama
        if ( tot1<tot2 ){
            joo=(100*tot1/tot2);
            System.out.println("Presentasi Perjodohan untuk " + a + " dan " + b + " :" + joo + "%");
  }
 }
}
}//tanda kurung “}” yang berlebihan
               
     Setelah dianalisa dan di perbaiki maka source code akan menjadi seperti dibawah ini :
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package perjodohanbebek;

/**
 *
 * @author JOO
 */
import java.util.Scanner;
public class Perjodohanbebek {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner owl=new Scanner(System.in);
        int total1=0;
        int total2=0;
        int joo;
        System.out.print("Nama Bebek 1              : ");
        String a = owl.next();
        System.out.print("Nama Bebek 2              : ");
        String b = owl.next();
        System.out.println("\n");
        for (int i = 0; i < a.length(); ++i){
        char cha = a.charAt(i);
        int value = cha - 'a' + 1;  
        total1 += value; }
        System.out.println("\n");
        System.out.println("Total untuk "+a+"       : "+total1);
        for (int i = 0; i < b.length(); ++i){
        char chr = b.charAt(i);
        int value = chr - 'a' + 1;  
        total2 += value;}
        System.out.println("Total untuk "+b+"       : "+total2);
        System.out.println("\n");
       
        if ( total1>total2 ){
            joo=(100*total2/total1);
            System.out.println("Presentasi Perjodohan untuk " + a + " dan " + b + " :" + joo + "%");}
        if ( total1<total2 ){
            joo=(100*total1/total2);
            System.out.println("Presentasi Perjodohan untuk " + a + " dan " + b + " :" + joo + "%");}}}
            
Dan ini adalah hasil Outputnya :


oke sekian dulu dari beta, semoga bet pu tulisan ini kali bisa berguna bagi yang baca, sory kalo masih ada kesalahan karna bet ju bar belajar ... See you... *blinking* 

Share:

0 komentar