Ifodalarning sintaktik tahlili - qurish mumkin. Lekin ko‘p hollarda tez ishlaydigan analizator qurish imkonini beradigan berilgan dasturlash tili asosida grammatika qurish mumkin.
- Sintaktik tahlillovchi kirish parametrlari - bu leksema va jadvallar ketma-ketligi, masalan, ichki tasvirlangan jadval, bu jadval sintaktik tahlillovchi uchun chiqish parametrlaridir.
- Sintaktik tahlillovchi chiqish parametrlari – jadvallar va tahlil daraxti hisoblanadi, masalan, kompilyatorning keyingi ko‘rishi uchun chiquvchi bo‘lib hisoblangan identifikatorlar jadvali va tiplar jadvali (masalan, tipli nazoratni amalga oshiruvchi ko‘rinish bo‘lishi mumkin).
Ifodalarning sintaktik tahlili - Leksik va sintaktik tahlil bosqichlarining alohida qarashlarga ajratilishi shart emas. Odatda bu fazalar bir xil ko‘rinishda bir-biri bilan o‘zaro ta’sirlashadi. Bunday ko‘rishning asosiy fazasi ajralish fazasi bo‘lib hisoblanadi va sintaktik analizator leksik analizatorga har safar boshqa terminal belgi kerak bo‘lganda murojaat qiladi.
- Sintaktik tahlillovchi sinflari. Juda ko‘p tahlillovchi algoritmlarni quyidagi ikki sinflarning biriga tegishlidir.
- top-down algoritmlari (past sathlarga yo‘naltirilgan);
- bottom-up algoritmlari (yuqori stahlarga yo‘naltirilgan);
- Past sathlarga yo‘naltirilgan analizatorlar chiqishni qurish uchun grammatika aksiomadan boshlab va terminal simvollar zanjiri bilan tugaydi.
Ifodalarning sintaktik tahlili - Past sathlarga yo‘naltirilgan analizatorlar chiqishni qurish uchun grammatika aksiomadan boshlab va terminal simvollar zanjiri bilan tugaydi. Analizatorlar quyidagi xususiyatlarga ega bo‘lgan LL grammatika bilan bog‘liq:
- u natija bermaydigan analizatorlarga ega bo‘lishi mumkin;
- birinchi L harfi - kiruvchi zanjirni chapdan o‘nga qarab o‘qilishini bildiradi (left-to-right scan);
- ikkinchi L harfi - zanjirning chap chiqishi qurilayotganini bildiradi (leftmost derivation).
- Past sathlarga yo‘naltirilgan analizatorlarni yaratish juda qulay bo‘lib hisoblanadi, ularni qo‘lda ham yaratish mumkin, masalan, rekursiv kamayish usuli bilan.
- Rekursiv kamayish usuli – bu eng oddiy va juda ko‘p foydalanilgan past sathlarga yo‘naltirilgan analizatorlarni qurish usuli (recursive descent method).
- Rekursiv kamayish usuli asosiy tamoyillarini o‘rganish uchun arifmetik ifodalarni bajarilish masalasini qaraymiz. Ularga binar amallari qo‘shish (+), ayrish (-), ko‘pytirish (*), butun bo‘lish (/) va qavslar amallari kirsin. Qo‘shish turidagi amallarga (+) va (-) - amallarini, ko‘paytirish turidagi amallarga esa (*) va (/) - amallari qilib belgilaymiz. Qavslar amali standarti tartibini o‘zgartirish uchun ishlatiladi. Vazifamiz ifoda qiymatini hisoblovchi dastur yozishdan iborat.
- Qaralayotgan ifodani quyidagi ko‘rinishda bo‘lsin
- T1 +T2 +…+Tn
- Bunda Ti - F1i *F2i *…*Fmi ko‘rinishidagi ifoda. SHuningdek, Fji – bu son yoki qavs ichidagi ifoda.
- Berilgan ifodani hisoblash jarayonini o‘ylab ko‘ramiz, bunda birinchi galda F11 hisoblanadi va F11 dan keyin qaysi amal turganini aniqlanadi. Agar bu ko‘paytirish amali bo‘lsa, chap operandini bilib, o‘ng operandini aniqlaymiz va amalni bajaramiz. SHunday qilib, ko‘paytirish amali uchun chap operandani aniqlaymiz. F1*F2*…*Fn amallar ketma ketligini hisoblab bo‘lgandan keyin, keyingi amal sifatida bo‘lish amalini kelsa, buni ham yuqoridagi jarayon bo‘yicha hisoblaymiz.
Do'stlaringiz bilan baham: |