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 :
Tags:        
                                
TEKNIK KOMPILASI


0 komentar