P2 Tekom
P2 Tekom
02 / 1 - 15
LEXICAL ANALYSIS
PERANAN LEXICAL ANALYZER
(Scanner)
Membaca source program (input
stream), mengenali, mengidentifikasi
lexeme (word) kemudian
menghasilkan rangkaian token sebagai
output.
token
source
program
Scanner
parser
get next
token
Symbol
Table
Teknik Kompilasi
02 / 2 - 15
Teknik Kompilasi
02 / 3 - 15
Teknik Kompilasi
02 / 4 - 15
Contoh Lexeme
Contoh Pattern
const_sym
const, define
const pi:=3.14,
#define pi 3.14
if (expr) then [else]
if_sym
Loop_sym
if
for, while..do,
Repeat .. until
Do while(expr)
relation
<,<=,=,<>,>,>=
.lt. .le. .eq. .ne. .gt. .ge.
id
pi, count, d2
num
3.14, 0, 6.0E10
literal
Hallo
init :=num
while(expr) do stmt
< or <= or =S
or <> or > or >=
Letter diikuti oleh
letters atau digits
Sembarang
konstanta angka
Sembarang
karakter diantara
dan kecuali
Teknik Kompilasi
02 / 5 - 15
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
Token-token yang akan dihasilkan :
< id, pointer to symbol table untuk E >
< assign_op, := >
< id, pointer to symbol table untuk M >
< mult_op, * >
< id, pointer to symbol table untuk C >
< exp_op, ** >
< num, integer value 2 >
Teknik Kompilasi
02 / 6 - 15
INPUT BUFFERING
Fungsi : menyimpan hasil scanning
untuk menemukan token.
Untuk menemukan 2 token digunakan 2
pointer :
Pointer forward :
menunjuk akhir token
Pointer lexeme_beginning :
menunjuk awal token
E = M * C * * 2 eof
Forward chaining
lexeme-ending
lexeme-beginning
backward chaining
Teknik Kompilasi
02 / 7 - 15
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 menyimpan informasi tentang komponen
(token) suatu source program.
Informasi yang dimaksud :
- Lexeme (word)
- Bentuk identifier
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi
02 / 8 - 15
Teknik Kompilasi
02 / 9 - 15
Teknik Kompilasi
02 / 10 - 15
SPESIFIKASI TOKEN
STRING DAN LANGUAGES
Alphabet class adalah suatu himpunan
terbatas dari simbol-simbol.
String adalah rangkaian simbol-simbol
dari alpabetik
Panjang string S ditulis dengan |S|
adalah banyaknya simbol dalam string s
misalnya : S=abc maka |S| = 3
Empty string ditulis dengan dengan
panjang string nol (0)
Empty set ditulis dengan atau {}
Concatenation adalah menggabung 2
buah atau lebih string.
Contoh : x=dog dan y=house maka
concatenation x dan y adalah doghouse
Himpunan {0,1} adalah binary alphabet
Bahan Ajar Matakuliah oleh SINAR SINURAT
Teknik Kompilasi
02 / 11 - 15
EKSPONENSIASI STRING
s0 =
s1 = s untuk i > 0, maka
s2 = ss si = si-1s
s3 = sss
sehingga : Ln = Ln-1 L dan L0 = {}
Teknik Kompilasi
02 / 12 - 15
L* = Li
i=0
Teknik Kompilasi
02 / 13 - 15
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*
Teknik Kompilasi
r*
r+
02 / 14 - 15
= r +|
= rr*
Teknik Kompilasi
...........
...........
dn rn
02 / 15 - 15
simbol-simbol dalam
{d1,d2,...dI-1}
Contoh :
1. regular definition untuk identifier :
letter A|B|...|Z|a|b|...|z
digit 0|1|...|9
id
letter(leter|digit)*
digits optional_fraction
optional_exponent