Belgilar jadvali - bu kompilyator tomonidan qo'llaniladigan va qo'llab-quvvatlanadigan ma'lumotlar tuzilmasi bo'lib, barcha identifikatorlarning nomlari va ularning turlaridan iborat. Bu identifikatorlarni tezda topish orqali kompilyatorning muammosiz ishlashiga yordam beradi.
Manba dasturini tahlil qilish asosan uch bosqichga bo'linadi. Ular:
Chiziqli tahlil
- bu belgilar oqimi chapdan o'ngga o'qiladigan skanerlash bosqichini o'z ichiga oladi. Keyin u umumiy ma'noga ega bo'lgan turli tokenlarga birlashtiriladi.
Ierarxik tahlil
- Ushbu tahlil bosqichida, umumiy ma'noga asoslanib, tokenlar ierarxik ravishda ichki guruhlarga bo'linadi.
Semantik tahlil
- bu bosqich manba dastur komponentlari mazmunli yoki yo'qligini tekshirish uchun ishlatiladi.
Kompilyator ikkita modulga ega, ya'ni old va orqa tomon. Front-end leksik analizator, semantik analizator, sintaksis analizatori va oraliq kod generatorini tashkil qiladi. Qolganlari esa orqa uchini hosil qilish uchun yig'iladi.
Lexical Analyzer -
U skaner deb ham ataladi. U sof yuqori darajadagi tildagi kirish sifatida preprotsessorning chiqishini (fayllarni kiritish va makro kengaytirishni amalga oshiradi) oladi. U dastlabki dasturdagi belgilarni o‘qiydi va ularni leksemalarga (“birga boradigan” belgilar ketma-ketligi) guruhlaydi. Har bir leksema leksemaga mos keladi. Tokenlar leksik analizator tomonidan tushuniladigan muntazam iboralar orqali aniqlanadi. Shuningdek, u leksik xatolarni (masalan, noto'g'ri belgilar), sharhlar va bo'sh joyni olib tashlaydi.
Sintaksis analizatori - uni ba'zan parser deb ham atashadi. U tahlil qilish daraxtini yaratadi. U barcha tokenlarni birma-bir oladi va tahlil daraxtini yaratish uchun Kontekstsiz Grammatikadan foydalanadi.
Nega Grammatika?
Dasturlash qoidalari bir nechta ishlab chiqarishlarda to'liq ifodalanishi mumkin. Ushbu ishlab chiqarishlardan foydalanib, biz dasturning aslida nima ekanligini ko'rsatishimiz mumkin. Kirish kerakli formatda yoki yo'qligini tekshirish kerak.
Tahlil daraxti hosila daraxti deb ham ataladi. Tahlil daraxtlari odatda berilgan grammatikadagi noaniqlikni tekshirish uchun tuziladi. Derivatsiya daraxti bilan bog'liq ma'lum qoidalar mavjud.
Har qanday identifikator ifodadir
Har qanday sonni ifoda deb atash mumkin
Berilgan ifodada har qanday amalni bajarish har doim ifodaga olib keladi. Masalan, ikki ifodaning yig‘indisi ham ifodadir.
Tahlil daraxti sintaksis daraxtini hosil qilish uchun siqilishi mumkin
Sintaksis xatosi, agar kirish grammatikaga mos kelmasa, bu darajada aniqlanishi mumkin.
Do'stlaringiz bilan baham: |