LEXICAL ANALYSIS
PERANAN LEXICAL ANALYZER
(Scanner)
Membaca source program (input
stream), mengenali, mengidentifikasi
lexeme (word) kemudian meng-
hasilkan rangkaian token sebagai
output.
token
source Scanner parser
program
get next
token
Symbol
Table
ATRIBUT-ATRIBUT TOKEN
Informasi tentang token (biasanya
single atribut)
Dibutuhkan pointer untuk load/ store
dalam simbol table entry
Lexeme sebuah identifier dan line
number akan tersimpan dalam simbol
table entry
dituliskan : <token,attribut,value>
Contoh : E := M * C ** 2
INPUT BUFFERING
E = M * C * * 2 eof
Forward chaining
lexeme-ending
lexeme-beginning
backward chaining
STRATEGI ERROR-RECOVERY
1. Menghapus suatu karakter yang
tidak sesuai hingga ditemukan suatu
token yang sesuai
2. Menyisipkan sebuah karakter yang
hilang.
3. Mengganti suatu karakter yang salah
dengan karakter yang benar.
4. Menukarkan dua karakter yang
berdampingan.
SYMBOL TABLE
Symbol table adalah suatu struktur
data yang digunakan untuk menyim-
pan informasi tentang komponen
(token) suatu source program.
Informasi yang dimaksud :
- Lexeme (word)
- Bentuk identifier
SPESIFIKASI TOKEN
EKSPONENSIASI STRING
s0 = ε
s1 = s untuk i > 0, maka
s2 = ss si = si-1s
s3 = sss
sehingga : Ln = Ln-1 L dan L0 = {}
SIFAT-SIFAT R.E.
r|s = s|r
r|(s|t) = (r|s)|t
(rs)t = r(st)
r(s|t) = rs|rt
r = r = r
r* = (r|)*
r** = r*
r* = r +|
r+ = rr*
........... {d1,d2,...dI-1}
dn rn
Contoh :
1. regular definition untuk identifier :
letter A|B|...|Z|a|b|...|z
digit 0|1|...|9
id letter(leter|digit)*