Senin, April 22, 2013

Pengantar Teknik Kompilasi : Analisa Leksikal


Analisis Leksikal (scanner) mengubah deretan karakter-karakter menjadi deretan token-token. Sebuah token adalah komponen dasar leksikal dari program. Token adalah level entitas yang paling rendah dalam diagram sintaks.

Contoh analisa leksikal pada program SPO dengan bahasa pemrograman Quick Basic >>>

REM Program SPO
10 CLS
14 PRINT " * TEBAK SUBJEK, PREDIKAT DAN OBJEK PADA SEBUAH KALIMAT * "
16 PRINT ""
18 PRINT "Anjas bermain gitar"
19 PRINT " "
20 INPUT "Subjek = ", SJK$
22 INPUT "Predikat = ", PDK$
24 INPUT "Objek = ", OBJ$
26 IF SJK$ = "Anjas" AND PDK$ = "bermain" AND OBJ$ = "gitar" THEN
28 PRINT "ANDA BENAR SEMUA"
30 ELSE PRINT "ANDA SALAH, COBA CEK LAGI !"
32 END IF

35 PRINT " "
40 INPUT "Mau coba lagi? tekan 1 untuk YA, tekan 2 untuk TIDAK : ", c

SELECT CASE c
CASE 1
GOTO 10
CASE 2
GOTO 60
END SELECT

60 CLS
61 PRINT " "
62 PRINT "Terima kasih telah mencoba !"

Output Program >>>

Jika mengisi dengan benar >>>


Jika mengisi dengan salah >>>


Jika tidak ingin mencoba lagi dan menekan angka 2 >>>


Analisa Leksikal :

Keyword (REM Program) ident (SPO)
Literal(10) keyword(CLS)
Literal(14) keyword(PRINT) literal(" * TEBAK SUBJEK, PREDIKAT DAN OBJEK PADA KALIMAT * ")
Literal(16) keyword(PRINT) literal(" ")
Literal(18) keyword(PRINT) literal("Anjas bermain gitar")
Literal(19) keyword(PRINT) literal(" ")
Literal(20) keyword(INPUT) literal("Subjek = ") punct(,) ident(SJK$)
Literal(22) keyword(INPUT) literal("Predikat = ") punct(,) ident(PDK$)
Literal(24) keyword(INPUT) literal("Objek = ") punct(,) ident(OBJ$)
literal(26) keyword(IF) ident(SJK$) operator(=) literal("Anjas") keyword(AND) ident(PDK$) operator(=) literal("bermain") keyword(AND) ident(OBJ$) operator(=) literal("gitar") keyword(THEN)
Literal(28) keyword(PRINT) literal("ANDA BENAR SEMUA")
Literal(30) keyword(ELSE PRINT) literal("ANDA SALAH, COBA CEK LAGI !")
Literal(32) keyword(END IF)

Literal(35) keyword(PRINT) literal(" ")
Literal(40) keyword(INPUT) literal("Mau coba lagi? tekan 1 untuk YA, tekan 2 untuk TIDAK : ") punct(,) ident(c)

Keyword(SELECT CASE) ident(c)
Keyword(CASE) literal(1)
Keyword(GOTO) literal(10)
Keyword(CASE) literal(2)
Keyword(GOTO) literal(60)
Keyword(END SELECT)

Literal(60) keyword(CLS)
Literal(61) keyword(PRINT) literal(" ")
Literal(62) keyword(PRINT) literal("Terima kasih telah mencoba !")

* Note:
Penjelasan tentang jenis token, yaitu :
·      identifiers (e.g. variable & function names, etc.)
·      keywords (like while, if, function, etc.)
·      operators (like +, -, *, ++, +=, etc.)
·      literals (constant values like 27.3, “Hello”, etc.)
·      punctuation (like ‘;’, ‘:’, ‘,’, etc.)

Hanifidiani, 13110122, 3KA08

Tidak ada komentar:

Posting Komentar