Professional Documents
Culture Documents
04 IP Leksicka Analiza
04 IP Leksicka Analiza
Leksika analiza
Krunoslav Pulji
Leksika analiza
Prvi korak u radu jezinog procesora
Prvi korak analize
Leksiki analizator:
Prima niz znakova izvornog programa
Vraa niz leksikih jedinki
1.
Bjeline
Tabulatori
Znak novog reda (LF)
Znak vraanja na poetak reda (CR)
7. Pronalaenje pogreaka
Ako nije mogue leksiku jedinku svrstati u
jednu od klasa, leksiki analizator ispisuje
pogreku
Odreuje se mjesto pogreke u izvornom programu
Opisuje se pogreka
Klasa Vrijednost
Mnemonik
41
00 01
(Slovo, A)
42
00 02
(Slovo, B)
...
...
...
...
5A
00 1A
(Slovo, Z)
30
01 00
(Znamenka, 0)
31
01 01
(Znamenka, 1)
...
...
...
...
39
01 09
(Znamenka, 9)
2A
02 0A
(Operator, *)
2B
02 0B
(Operator, +)
...
...
...
...
Prilagodba
zapisa
znakova
Operatori
Zbrajanje, oduzimanje, mnoenje, dijeljenje
Specijalni znakovi
Npr. zagrade, zarez, toka
Identifikatori
Npr. imena varijabli, polja, potprograma
Konstante
Npr. cjelobrojne, znakovne, tekstualne
Leksika
jedinka
Klasa
jedinke
Kodni
znak
Mnemonik1
Kodni
znak
Mnemonik2
Pravilo
Reg.izr.
Specijal
) (28)
Z (5A)
KROS
Specijal
; (3B)
Z (5A)
KROS
Operator
+ (2B)
Z (5A)
KROS
Operator
= (3D)
Z (5A)
KROS
ako
Kljuna
a (61)
ako
Z (5A)
KROS
ako
onda
Kljuna
o (6F)
onda
Z (5A)
KROS
onda
inae
Kljuna
i (69)
inae
Z (5A)
KROS
inae
Cijena
Identifik
I (49)
IDN
I (49)
IDN
Koliina
Identifik
I (49)
IDN
I (49)
IDN
slovo
(slovo +
brojka)*
345
Konstant
B (42)
KON
B (42)
KON
23
Konstant
B (42)
KON
B (42)
KON
brojka
brojka*
LF
LF
LF
LF
1000 ;
TAB inace
TAB TAB Cijena = 1200;
TAB NovaCijena = Cijena;
}
( Kolicina
> 20 )
Mnemonik1
IzracunajCijenu()
{
ako (Kolicina > 20)
Cijena = 1000;
inace
Cijena = 1200;
NovaCijena = Cijena;
}
IzracunajCijenu ( ) CR LF { CR LF TAB ako
( Kolicina
> 20
...
49
28
29
7B
61
28
49
3E
42
29
Hex
>
ASC
IDN
ako
IDN
>
KON
Mn1
Tablica znakova
Mnemonik2
IzracunajCijenu()
{
ako (Kolicina > 20)
Cijena = 1000;
inace
Cijena = 1200;
NovaCijena = Cijena;
}
Leksika jedinka
Pomak
00
ako
01
onda
02
inace
...
...
20
>
21
...
...
40
41
42
43
44
...
...
60
IzracunajCijenu
61
Kolicina
...
...
75
20
( Kolicina
> 20
...
49 60
5A 41
5A 42
5A 43
5A 00
5A 41
49 61
Hex
ZA
ZB
ZC
Z null
ZA
Ia
ASC
KROS,{
KROS,ako
KROS,( IDN,Kol.
Mn2
Ureena lista
Linearna lista u kojoj su podaci sortirani
Pretraivanje binarno
Sloenost je O(log2 n)
Raspreno adresiranje
Poznato i kao Hash tablica
Podaci se spremaju u pretince tablice
Adresa pretinca se dobije kao vrijednost hash
funkcije koja leksikoj jedinki pridruuje
pretinac
Postoje zatvoreno i otvoreno hash-iranje
Literatura
Sinia Srblji: Jezini procesori 1 [JP1]
Sinia Srblji: Jezini procesori 2 [JP2]