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