7-mavzu. Sintaktik tahlil


Qiymat qaytarish asosidagi rekursiv kamayish usuli



Download 104,74 Kb.
bet7/8
Sana13.04.2022
Hajmi104,74 Kb.
#548237
1   2   3   4   5   6   7   8
Bog'liq
7-mavzu. Sintaktik tahlil

Qiymat qaytarish asosidagi rekursiv kamayish usuli. SHunday qilib, qiymat qaytarish asosidagi rekursiv kamayish usulini qo‘llash uchun grammatikani FIRST to‘plamlar kesishmaydigan shaklga aylantirish kerak. Bu murakkab va ko‘p vaqt talab qiladigan jarayondir. SHuning uchun, amaliyotda, tez-tez ishlatiladigan ibora bor, qiymat qaytarish asosidagi rekursiv kamayish hodisa deb ataladi.
Buning uchun leksik analizator an’anaviy usullarni to‘laligicha, scan va next ana’naviy usullar va nusxalash konstruktoriga ega bo‘lgan ob’ekt sifatida namoyon bo‘ladi. Keyin, noaniqlik yuzaga kelishi mumkin bo‘lgan barcha holatlarda, tahlil qilishni boshlashdan oldin leksik analizatorning hozirgi holatini aniqlaymiz (ya’ni, leksik analizatorning nusxasini boshlaymiz) va matnni tahlil qilishni davom ettirishga harakat qilamiz. Bu tahlil muvaffaqiyasiz bo‘lsa, leksik analizator holatini tiklaymiz va shunday qilib, keyingi grammatika variantni yordamida yana shu zanjirni tahlil qilishga harakat qilinadi va tugaguncha davom ettiriladi. Barcha tahlil imkoniyatlari muvaffaqiyasiz bo‘lsa, xatolar haqida xabar beramiz.
Bu tahlillovchini bu usul qiymat qaytarmaydigan rekursiv kamayish usuli ko‘ra potensiali sekin ekanligini ochiq-oydin ko‘riy mumkin, lekin evaziga uning asl shaklida grammatikada qolishi va dasturchi uchun harakat saqlab qolish uchun boshqarish osondir.
Xuddi shu sintaktik tahlil S – bemoll kompilyatorida sintaktik tahlil uchun joriy qilingan. Masalan, quyidagi fragmentda tahlil paytida konstruksiya ifoda operatori yoki izoh ekanligini aniqlovchi usul amalga oshiradi. Ikkala konstruksiya nuqta bilan ajratilgan va ehtimol kvadrat qavslarni o‘z ichiga olgan identifikatorlar ketma-ketligi bilan boshlanishi mumkin.

AST.Stmt stmt_or_decl ()
{
Lexer saved = new Lexer (lexer);
try {
AST.Type t = type_opt ();
if (lexer.Is (Token.Tag.Ident))
return decl_tail (saved.Curr.coor, t);
}
catch (ParseFailed) {
lexer = saved;
AST.Expr expr = this.expr ();
return new AST.Stmt.Expr (compiler,
saved.Curr.coor|lexer.req (Token.Tag.Semicolon).coor, expr);
}
}

try blokida uni tavsif deb hisoblab, konstruksiyani ajratishga harakat qilamiz. Bu muvaffaqiyasiz bo‘lsa, tahlillovchi istisno chaqiradi va keyin catch blokda tahlil boshlanadi va shu konstruksiya ifoda sifatida tahlil qilinadi.

Download 104,74 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish