Anglash chizmasi.
Tilning kiruvchi zanjirlarini anglash uchun foydalanilayotgan chekli determinirlangan
avtomatning grafi 3 rasmda keltirilgan.
Leksik taxlilchini normal ish xolatida boshlangich va oxirgi xolati mos keladi (rasmda
"q" xolat). Xatolik kiruvchi zanjir xolatida avtomat ERROR xatolik xolatiga tushadi. Bu xolda
avtomat ishi tuxtatiladi.
Bundan tashkari, avtomat uchun tipik bulib ID (uzgaruvchi) va CONSTANT
(konstanta) xolati xisoblanadi. Avtomatning kolgan xolatlari kompilyator uchun mumkin
bulgan kiruvchi til leksemalari bilan aniklanadilar.
Xar bir oxirgi "q" xolatga utish joriy kiruvchi zanjirning oxiri xakida ma’lumot beradi.
Bu xolatda anglangan zanjirni taxlili va avtomatni navbatdagi kiruvchi belgilar zanjiri uchun
kaytaishlatilishi amalga oshiriladi. Kiruvchi belgilar zanjirining ba’zi bir belgilarining takroriy
kayta ishlanishi mumkin. Bu avtomatni oxirgi xolatga olib keluvchi belgi keyingi belgilar
zanjirining boshlanishi xisoblangan xolda zarurdir.
Natijalar
Leksik taxlilning dasturiy realizatsiyasi LexFSM va LexAnalyser modullari
kurinishida keltirilgan. LexFSM – belgilarning kiruvchi zanjirini anglovchi avtomat ishini aks
ettiradi. LexAnalyser kiruvchi fayl matnini uni belgilarini LexFSM modulni suroviga kura
junatish uchun tayyorlaydi. U kiruvchi matnni probel belgilari va keraksiz belgilarini tashlab
yuboradi (tabulyatsiya belgilari, karetkani kaytishi va x.k.). LexFSM oxirgi xolatlardan biriga
utgan xolda, u boshkaruvni LexAnalyser modulga uzatadi. U uz navbatida ish natijalarini
ekranga chikaradi va xato uchragan kator xakidagi xatoliklarni bildiradi. Bundan tashkari, agar
LexFSM "q" oxirgi xolatga utsa va shunday kilib kiruvchi belgilar zanjirini anglasa, u olingan
leksemani u xakidagi ma’lumot bilan birga LexAnalyser ga uzatadi, u esa uni uz leksemalari
ruyxatiga kushib kuyadi. Faylni kayta ishlash tugashi bilan LexAnalyser modul leksemalar
21
ruyxatini LexTab grafik moduliga yuboradi, u esa natijaviy leksemalar ruyxatini jadvallar
kurinishida aks ettiradi.
Xuddi shunday modullardan xar biri uz xarakatlari ketma-ketligi xakidagi ma’lumotni
berib turadi, bu esa uz navbatida taxlilchi ishini kuzatib turish imkonini beradi. Bu ma’lumotlar
xam LexTab grafik modul yordamida ekranda aks etadi.
Matnli faylni kayta ishlash misolini karaymiz:
program
begin
begine:q1;
a:q5;
repeat
if a>3 then a:q3
else i:q0
endif
until iq0
end;
end.
Leksik taxlilchining ish natijalari kiskacha 1 jadvalda keltirilgan.
1 jadval
Leksema
Leksemalar turi
Identifikatorlar jadvalidagi
identifikator rakami
Program
'program' kalit suzi
Begin
'begin' kalit suzi
Begine
Uzgaruvchi
1
:q
Uzlashtirish operatori
':q'
5
Konstanta
;
Ajratuvchi
A
Uzgaruvchi
2
:q
Uzlashtirish operatori
':q'
5
Konstanta
;
Ajratuvchi
Repeat
'repeat' kalit suzi
If
'if' kalit suzi
A
Uzgaruvchi
2
>
Amal belgisi '>'
3
Konstanta
Then
'then' kalit suzi
A
Uzgaruvchi
2
:q
Uzlashtirish operatori
':q'
3
Konstanta
Do'stlaringiz bilan baham: |