«Yangi O‘zbekistonda islohotlarni amalga oshirishda zamonaviy axborot-kommunikatsiya texnologiyalaridan foydalanish» mavzusida Xalqaro ilmiy-amaliy konferentsiya Andijon 27-29 oktabr 2021 yil 279
Kompilyatorning asosiy maqsadi bitta tilda yozilgan kodni dastur ma'nosini
o'zgartirmasdan o'zgartirishdir.
Yuqori darajadagi dasturlash tilida yozilgan dasturni bajarganingizda, u ikki
qismga bo'linadi. Birinchi qismda berilgan dastur kompilyatsiya qilinadi va past
darajali dasturlash tiliga tarjima qilinadi. Ikkinchi qismda past darajali dasturlash tili
assambler orqali natijaviy dasturga(mashina tiliga) tarjima qilinadi.
1-rasm. Dasturining kompilyatsiya jarayoni Kompilyatsiya jarayoni turli bosqichlar ketma -ketligini o'z ichiga oladi. Har
bir bosqich berilgan dasturni bir ko’rinishda oladi va ishlov berib boshqa ko’rinishda
chiqaradi. Har bir bosqich o’zidan oldingi bosqichidan ma'lumot oladi.
Leksik tahlil bosqichi kompilyatsiya jarayonining birinchi bosqichi
hisoblanadi, ya’ni tashqi muhit bilan kompilyatorning boshqa qismlari o’rtasidagi
kompilyator bo’lagidir[3]. Faqatgina tashqi ko’rinishi bilan farqlanadigan ikkita
dastur leksik tahlil jarayonidan keyin bir xil ko’rinishga ega bo’ladilar.
Dasturda til alfavitidagi simvollarning ba’zi bir kombinatsiyalari alohida
ob’ekt sifatida qaraladi. Masalan, literal, identifikator, kalit so’z va h.k. Leksik
tahlilning asosiy vazifasi shu ob’ektlar haqidagi ma’lumotlarni (tokenlarni) sintaktik
tahlilga yetkazib berish.
Leksik tahlilchi boshqacha skaner deb ham ataladi. Oldin qayd qilib
o’tganimizdek, dasturning boshlang’ich kodi (matni) leksik tahlilchi uchun kirish
hisoblanib, uning (dasturning) tokenlar zanjiri (tokenlar oqimi, dastur matnining
leksik o’ralmasi) leksik tahlilchining natijasi hisoblanadi.
Leksik tahlilni kompilyatsiyada birinchi bo’lib bajariladigan bir butun jarayon
sifatida tasavvur qilish, uning kirishi va natijasini ham mos ravishda yalpi
boshlang’ich dastur (bd) matni va skaner(bd) funksiyasining natijasi – yalpi dastur
matniga mos keluvchi tokenlar zanjiri sifatida qarash va shunday amalga ham
oshirish mumkin[4]. Ammo sintaktik boshqariladigan translyatorda skanerning
(getNextToken) funksiyasi sintaktik tahlilchi boshqaruvi ostida faqatgina bir yoki
bir necha novbatdagi tokenlarni sintaktik tahlilchiga tayyorlab beradigan variantda
ishlaydi. O’z faoliyati davomida leksik tahlilchi simvollar jadvali bilan ham ishlaydi.
Simvollar jadvalidan berilgan simvol(dasturdagi identifikatorga mos leksema)ni
axtarish va u haqdagi ma’lumotni (uning xususiyatlarini) aniqlash, yangi simvolni
simvollar jadvaliga joylashtirish va jadvaldagi simvolni yangi xususiyatlar bilan
to’ldirish leksik tahlilning simvollar jadvali ustida bajaradigan asosiy operatsiyalari
hisoblanadi. Quyidagi rasmda sintaktik tahlil va leksik tahlil orasidagi aloqa
tasvirlangan.